From 752ce742c6d0914c6bca258c54f5474da5b2767f Mon Sep 17 00:00:00 2001 From: François Revol Date: Fri, 27 Jun 2008 23:04:41 +0000 Subject: [PATCH] This should get binutils working for ARM for the adventuruous ones. git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@26148 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- binutils/bfd/config.bfd | 2 +- binutils/gas/configure.tgt | 1 + binutils/ld/configure.tgt | 7 ++++--- binutils/ld/emulparams/armelf_haiku.sh | 24 ++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/binutils/bfd/config.bfd b/binutils/bfd/config.bfd index bd1a4d4..61ef08b 100644 --- a/binutils/bfd/config.bfd +++ b/binutils/bfd/config.bfd @@ -252,7 +252,7 @@ ;; arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \ arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \ - arm*-*-eabi* ) + arm*-*-eabi* | arm*-*-haiku*) targ_defvec=bfd_elf32_littlearm_vec targ_selvecs=bfd_elf32_bigarm_vec ;; diff --git a/binutils/gas/configure.tgt b/binutils/gas/configure.tgt index 2585839..de91285 100644 --- a/binutils/gas/configure.tgt +++ b/binutils/gas/configure.tgt @@ -117,6 +117,7 @@ arm-wince-pe | arm-*-wince) fmt=coff em=wince-pe ;; arm-*-pe | thumb-*-pe) fmt=coff em=pe ;; arm-*-riscix*) fmt=aout em=riscix ;; + arm-*-haiku*) fmt=elf em=haiku ;; avr-*-*) fmt=elf bfd_gas=yes ;; bfin-*-*) fmt=elf bfd_gas=yes ;; diff --git a/binutils/ld/configure.tgt b/binutils/ld/configure.tgt index b114b70..a8dd18f 100644 --- a/binutils/ld/configure.tgt +++ b/binutils/ld/configure.tgt @@ -67,6 +67,7 @@ arm*-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; arm-*-vxworks) targ_emul=armelf_vxworks ;; arm*-*-conix*) targ_emul=armelf ;; +arm*-*-haiku*) targ_emul=armelf_haiku; targ_extra_emuls=armelf ;; thumb-*-linux-* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; strongarm-*-coff) targ_emul=armcoff ;; strongarm-*-elf) targ_emul=armelf ;; @@ -335,10 +336,10 @@ targ_extra_emuls="m68kelfnbsd m68k4knbsd" ;; m68*-*-psos*) targ_emul=m68kpsos ;; m68*-*-rtemscoff*) targ_emul=m68kcoff ;; -m68*-*-rtems*) targ_emul=m68kelf - ;; +m68*-*-rtems*) targ_emul=m68kelf ;; m68*-*-haiku*) targ_emul=m68kelf - targ_extra_emuls=m68kcoff ;; + targ_extra_emuls=m68kcoff + ;; m8*-*-*) targ_emul=m88kbcs ;; maxq-*-coff) targ_emul=maxqcoff diff --git a/binutils/ld/emulparams/armelf_haiku.sh b/binutils/ld/emulparams/armelf_haiku.sh new file mode 100644 index 0000000..39b7f65 100644 --- /dev/null +++ b/binutils/ld/emulparams/armelf_haiku.sh @@ -1,0 +1,24 @@ +ARCH=arm +SCRIPT_NAME=elf +OUTPUT_FORMAT="elf32-littlearm" +BIG_OUTPUT_FORMAT="elf32-bigarm" +LITTLE_OUTPUT_FORMAT="elf32-littlearm" +MAXPAGESIZE=0x8000 +COMMONPAGESIZE=0x1000 +TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=armelf +GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes + +DATA_START_SYMBOLS='__data_start = . ;'; +OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' +OTHER_BSS_SYMBOLS='__bss_start__ = .;' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' +OTHER_END_SYMBOLS='__end__ = . ;' +OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }' + +TEXT_START_ADDR=0x00008000 +TARGET2_TYPE=got-rel + +# ARM does not support .s* sections. +NO_SMALL_DATA=yes -- gitore 0.2.2