Re: [PATCH v2] allow to build arm flat binaries
Greg Ungerer <[email protected]> Sat, 19 Mar 2016 13:53:49 +1000
| Newsgroups | gmane.linux.uclinux.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Waldemar, On 14/03/16 15:01, Waldemar Brodkorb wrote: > Add patchset from ptxdist which is required to produce working > ARM flat binaries. Tested with busybox on Kinetis K70. > > Signed-off-by: Waldemar Brodkorb <[email protected]> Thanks. Applied to the github elf2flt repository (with Thomas' Tested-by). Regards Greg > v1 -> v2: > - segfault problem fixed, r_mem pointer should be initialized > - v1 was successfully tested by Thomas Petazzoni with buildroot > generated image for STM32F429 > > --- > elf2flt.c | 11 ++++++++++- > elf2flt.ld.in | 17 ++++++++++++++--- > 2 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/elf2flt.c b/elf2flt.c > index fcd797c..7d0e639 100644 > --- a/elf2flt.c > +++ b/elf2flt.c > @@ -56,6 +56,8 @@ const char *elf2flt_progname; > > #if defined(TARGET_h8300) > #include <elf/h8.h> /* TARGET_* ELF support for the BFD library */ > +#elif defined(TARGET_arm) > +#include <elf/arm.h> > #elif defined(__CYGWIN__) || defined(__MINGW32__) || defined(TARGET_nios) || defined(TARGET_nios2) > #include "cygwin-elf.h" /* Cygwin uses a local copy */ > #elif defined(TARGET_xtensa) > @@ -451,7 +453,7 @@ dump_symbols(symbols, number_of_symbols); > qsort (relpp, relcount, sizeof *relpp, compare_relocs); > #endif > for (p = relpp; (relcount && (*p != NULL)); p++, relcount--) { > - unsigned char *r_mem; > + unsigned char *r_mem = NULL; > int relocation_needed = 0; > > #ifdef TARGET_microblaze > @@ -646,16 +648,23 @@ dump_symbols(symbols, number_of_symbols); > default: > goto good_32bit_resolved_reloc; > #elif defined(TARGET_arm) > + case R_ARM_TARGET1: > + case R_ARM_TARGET2: > case R_ARM_ABS32: > relocation_needed = 1; > break; > case R_ARM_REL32: > + case R_ARM_JUMP24: > + case R_ARM_CALL: > case R_ARM_THM_PC11: > case R_ARM_THM_PC22: > + case R_ARM_THM_JUMP24: > case R_ARM_PC24: > case R_ARM_PLT32: > case R_ARM_GOTPC: > case R_ARM_GOT32: > + case R_ARM_PREL31: > + case R_ARM_NONE: > relocation_needed = 0; > break; > default: > diff --git a/elf2flt.ld.in b/elf2flt.ld.in > index bfda0ef..ec1fe6f 100644 > --- a/elf2flt.ld.in > +++ b/elf2flt.ld.in > @@ -35,6 +35,8 @@ W_RODAT *(.rodata1) > W_RODAT *(.rodata.*) > W_RODAT *(.gnu.linkonce.r*) > > + /* .ARM.extab name sections containing exception unwinding information */ > + *(.ARM.extab* .gnu.linkonce.armextab.*) > /* This is special code area at the end of the normal > text section. It contains a small lookup table at > the start followed by the code pointed to by entries > @@ -43,11 +45,20 @@ W_RODAT *(.gnu.linkonce.r*) > PROVIDE(@SYMBOL_PREFIX@__ctbp = .); > *(.call_table_data) > *(.call_table_text) > - > - . = ALIGN(0x20) ; > - @SYMBOL_PREFIX@_etext = . ; > } > flatmem :text > > + /* .ARM.exidx name sections containing index entries for section unwinding */ > + /* .ARM.exidx is sorted, so has to go in its own output section. */ > + @SYMBOL_PREFIX@__exidx_start = .; > + .ARM.exidx : > + { > + *(.ARM.exidx* .gnu.linkonce.armexidx.*) > + } > flatmem > + @SYMBOL_PREFIX@__exidx_end = .; > + > + . = ALIGN(0x20) ; > + @SYMBOL_PREFIX@_etext = . ; > + > .data : { > . = ALIGN(0x4) ; > @SYMBOL_PREFIX@_sdata = . ; > _______________________________________________ uClinux-dev mailing list [email protected] http://mailman.uclinux.org/mailman/listinfo/uclinux-dev This message was resent by [email protected] To unsubscribe see: http://mailman.uclinux.org/mailman/options/uclinux-dev