Skip to content

Commit

Permalink
allow to build arm flat binaries
Browse files Browse the repository at this point in the history
Add patchset from ptxdist which is required to produce working
ARM flat binaries. Tested with busybox on Kinetis K70.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
  • Loading branch information
wbx-github authored and gregungerer committed Mar 19, 2016
1 parent 177ec27 commit 8a3e744
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
11 changes: 10 additions & 1 deletion elf2flt.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
17 changes: 14 additions & 3 deletions elf2flt.ld.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 = . ;
Expand Down

0 comments on commit 8a3e744

Please sign in to comment.