diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/emulparams/elf32bmipn32-defs.sh | 71 | ||||
-rwxr-xr-x | ld/emulparams/elf32bmipn32.sh | 77 | ||||
-rw-r--r-- | ld/emulparams/elf32btsmipn32.sh | 3 | ||||
-rwxr-xr-x | ld/emulparams/elf64bmip.sh | 4 | ||||
-rw-r--r-- | ld/emulparams/elf64btsmip.sh | 2 |
6 files changed, 91 insertions, 74 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index eb6cf0a..be11502 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2002-09-17 Stan Cox <scox@redhat.com> + + * emulparams/elf32bmipn32-defs.sh: New file. + * emulparams/elf32bmipn32.sh: Use elf32bmipn32-defs.sh. + * emulparams/elf32btsmipn32.sh: Likewise. + * emulparams/elf64bmip.sh: Likewise. + * emulparams/elf64btsmip.sh: Likewise. + 2002-09-16 Bruno Haible <bruno@clisp.org> * emulparams/elf_i386_fbsd.sh: Set OUTPUT_FORMAT to diff --git a/ld/emulparams/elf32bmipn32-defs.sh b/ld/emulparams/elf32bmipn32-defs.sh new file mode 100644 index 0000000..6933dbf --- /dev/null +++ b/ld/emulparams/elf32bmipn32-defs.sh @@ -0,0 +1,71 @@ +# If you change this file, please also look at files which source this one: +# elf64bmip.sh elf64btsmip.sh elf32btsmipn32.sh elf32bmipn32.sh + +# This is an ELF platform. +SCRIPT_NAME=elf + +# Handle both big- and little-ended 32-bit MIPS objects. +ARCH=mips +OUTPUT_FORMAT="elf32-bigmips" +BIG_OUTPUT_FORMAT="elf32-bigmips" +LITTLE_OUTPUT_FORMAT="elf32-littlemips" + +TEMPLATE_NAME=elf32 + +TEXT_START_ADDR=0x10000000 +MAXPAGESIZE=0x100000 +ENTRY=__start + +# GOT-related settings. +OTHER_GOT_SYMBOLS=' + _gp = ALIGN(16) + 0x7ff0; +' +OTHER_SDATA_SECTIONS=" + .lit8 ${RELOCATING-0} : { *(.lit8) } + .lit4 ${RELOCATING-0} : { *(.lit4) } + .srdata ${RELOCATING-0} : { *(.srdata) } +" + +# Magic symbols. +TEXT_START_SYMBOLS='_ftext = . ;' +DATA_START_SYMBOLS='_fdata = . ;' +OTHER_BSS_SYMBOLS='_fbss = .;' +# IRIX6 defines these symbols. 0x34 is the size of the ELF header. +EXECUTABLE_SYMBOLS=" + __dso_displacement = 0; + __elf_header = ${TEXT_START_ADDR}; + __program_header_table = ${TEXT_START_ADDR} + 0x34; +" + +# There are often dynamic relocations against the .rodata section. +# Setting DT_TEXTREL in the .dynamic section does not convince the +# IRIX6 linker to permit relocations against the text segment. +# Following the IRIX linker, we simply put .rodata in the data +# segment. +WRITABLE_RODATA= + +OTHER_SECTIONS=" + .MIPS.events.text ${RELOCATING-0} : + { + *(.MIPS.events.text${RELOCATING+ .MIPS.events.gnu.linkonce.t*}) + } + .MIPS.content.text ${RELOCATING-0} : + { + *(.MIPS.content.text${RELOCATING+ .MIPS.content.gnu.linkonce.t*}) + } + .MIPS.events.data ${RELOCATING-0} : + { + *(.MIPS.events.data${RELOCATING+ .MIPS.events.gnu.linkonce.d*}) + } + .MIPS.content.data ${RELOCATING-0} : + { + *(.MIPS.content.data${RELOCATING+ .MIPS.content.gnu.linkonce.d*}) + } + .MIPS.events.rodata ${RELOCATING-0} : + { + *(.MIPS.events.rodata${RELOCATING+ .MIPS.events.gnu.linkonce.r*}) + } + .MIPS.content.rodata ${RELOCATING-0} : + { + *(.MIPS.content.rodata${RELOCATING+ .MIPS.content.gnu.linkonce.r*}) + }" diff --git a/ld/emulparams/elf32bmipn32.sh b/ld/emulparams/elf32bmipn32.sh index d8994d8..a862530 100755 --- a/ld/emulparams/elf32bmipn32.sh +++ b/ld/emulparams/elf32bmipn32.sh @@ -1,71 +1,6 @@ -# If you change this file, please also look at files which source this one: -# elf64bmip.sh elf64btsmip.sh elf32btsmipn32.sh - -# This is an ELF platform. -SCRIPT_NAME=elf - -# Handle both big- and little-ended 32-bit MIPS objects. -ARCH=mips -OUTPUT_FORMAT="elf32-bigmips" -BIG_OUTPUT_FORMAT="elf32-bigmips" -LITTLE_OUTPUT_FORMAT="elf32-littlemips" - -TEMPLATE_NAME=elf32 - -TEXT_START_ADDR=0x10000000 -MAXPAGESIZE=0x100000 -ENTRY=__start - -# GOT-related settings. -OTHER_GOT_SYMBOLS=' - _gp = ALIGN(16) + 0x7ff0; -' -OTHER_SDATA_SECTIONS=" - .lit8 ${RELOCATING-0} : { *(.lit8) } - .lit4 ${RELOCATING-0} : { *(.lit4) } - .srdata ${RELOCATING-0} : { *(.srdata) } -" - -# Magic symbols. -TEXT_START_SYMBOLS='_ftext = . ;' -DATA_START_SYMBOLS='_fdata = . ;' -OTHER_BSS_SYMBOLS='_fbss = .;' -# IRIX6 defines these symbols. 0x34 is the size of the ELF header. -EXECUTABLE_SYMBOLS=" - __dso_displacement = 0; - __elf_header = ${TEXT_START_ADDR}; - __program_header_table = ${TEXT_START_ADDR} + 0x34; -" - -# There are often dynamic relocations against the .rodata section. -# Setting DT_TEXTREL in the .dynamic section does not convince the -# IRIX6 linker to permit relocations against the text segment. -# Following the IRIX linker, we simply put .rodata in the data -# segment. -WRITABLE_RODATA= - -OTHER_SECTIONS=" - .MIPS.events.text ${RELOCATING-0} : - { - *(.MIPS.events.text${RELOCATING+ .MIPS.events.gnu.linkonce.t*}) - } - .MIPS.content.text ${RELOCATING-0} : - { - *(.MIPS.content.text${RELOCATING+ .MIPS.content.gnu.linkonce.t*}) - } - .MIPS.events.data ${RELOCATING-0} : - { - *(.MIPS.events.data${RELOCATING+ .MIPS.events.gnu.linkonce.d*}) - } - .MIPS.content.data ${RELOCATING-0} : - { - *(.MIPS.content.data${RELOCATING+ .MIPS.content.gnu.linkonce.d*}) - } - .MIPS.events.rodata ${RELOCATING-0} : - { - *(.MIPS.events.rodata${RELOCATING+ .MIPS.events.gnu.linkonce.r*}) - } - .MIPS.content.rodata ${RELOCATING-0} : - { - *(.MIPS.content.rodata${RELOCATING+ .MIPS.content.gnu.linkonce.r*}) - }" +. ${srcdir}/emulparams/elf32bmipn32-defs.sh +OUTPUT_FORMAT="elf32-nbigmips" +BIG_OUTPUT_FORMAT="elf32-nbigmips" +LITTLE_OUTPUT_FORMAT="elf32-nlittlemips" +GENERATE_SHLIB_SCRIPT=yes +SHLIB_TEXT_START_ADDR=0x5ffe0000 diff --git a/ld/emulparams/elf32btsmipn32.sh b/ld/emulparams/elf32btsmipn32.sh index 38b27f5..1f6931e 100644 --- a/ld/emulparams/elf32btsmipn32.sh +++ b/ld/emulparams/elf32btsmipn32.sh @@ -1,13 +1,14 @@ # If you change this file, please also look at files which source this one: # elf32ltsmipn32.sh -. ${srcdir}/emulparams/elf32bmipn32.sh +. ${srcdir}/emulparams/elf32bmipn32-defs.sh OUTPUT_FORMAT="elf32-ntradbigmips" BIG_OUTPUT_FORMAT="elf32-ntradbigmips" LITTLE_OUTPUT_FORMAT="elf32-ntradlittlemips" unset EXECUTABLE_SYMBOLS unset WRITABLE_RODATA +unset SHLIB_TEXT_START_ADDR # Magic sections. OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' diff --git a/ld/emulparams/elf64bmip.sh b/ld/emulparams/elf64bmip.sh index 990fcb6..bed7d93 100755 --- a/ld/emulparams/elf64bmip.sh +++ b/ld/emulparams/elf64bmip.sh @@ -1,8 +1,10 @@ -. ${srcdir}/emulparams/elf32bmipn32.sh +. ${srcdir}/emulparams/elf32bmipn32-defs.sh OUTPUT_FORMAT="elf64-bigmips" BIG_OUTPUT_FORMAT="elf64-bigmips" LITTLE_OUTPUT_FORMAT="elf64-littlemips" ELFSIZE=64 +GENERATE_SHLIB_SCRIPT=yes +LIB_PATH=/usr/lib64 # IRIX6 defines these symbols. 0x40 is the size of the ELF header. EXECUTABLE_SYMBOLS=" diff --git a/ld/emulparams/elf64btsmip.sh b/ld/emulparams/elf64btsmip.sh index dc39406..c33fda4 100644 --- a/ld/emulparams/elf64btsmip.sh +++ b/ld/emulparams/elf64btsmip.sh @@ -1,7 +1,7 @@ # If you change this file, please also look at files which source this one: # elf64ltsmip.sh -. ${srcdir}/emulparams/elf32bmipn32.sh +. ${srcdir}/emulparams/elf32bmipn32-defs.sh OUTPUT_FORMAT="elf64-tradbigmips" BIG_OUTPUT_FORMAT="elf64-tradbigmips" LITTLE_OUTPUT_FORMAT="elf64-tradlittlemips" |