Commit | Line | Data |
---|---|---|
465bc359 AM |
1 | # If you change this file, please also look at files which source this one: |
2 | # elf32b4300.sh elf32bsmip.sh elf32btsmip.sh elf32ebmip.sh elf32lmip.sh | |
54530ea4 | 3 | # elf32ebmipvxworks.sh elf32elmipvxworks.sh |
465bc359 | 4 | |
252b5132 RH |
5 | SCRIPT_NAME=elf |
6 | OUTPUT_FORMAT="elf32-bigmips" | |
7 | BIG_OUTPUT_FORMAT="elf32-bigmips" | |
8 | LITTLE_OUTPUT_FORMAT="elf32-littlemips" | |
9 | TEXT_START_ADDR=0x0400000 | |
465bc359 | 10 | test -n "${EMBEDDED}" || DATA_ADDR=0x10000000 |
24718e3b L |
11 | MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" |
12 | COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" | |
252b5132 | 13 | SHLIB_TEXT_START_ADDR=0x5ffe0000 |
161f49a3 | 14 | TEXT_DYNAMIC= |
5a8e7be2 AM |
15 | INITIAL_READONLY_SECTIONS= |
16 | if test -z "${CREATE_SHLIB}"; then | |
17 | INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" | |
18 | fi | |
19 | INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS} | |
351cdf24 MF |
20 | .MIPS.abiflags ${RELOCATING-0} : { *(.MIPS.abiflags) } |
21 | .reginfo ${RELOCATING-0} : { *(.reginfo) } | |
465bc359 | 22 | " |
252b5132 | 23 | OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' |
5427f821 RS |
24 | # Unlike most targets, the MIPS backend puts all dynamic relocations |
25 | # in a single dynobj section, which it also calls ".rel.dyn". It does | |
26 | # this so that it can easily sort all dynamic relocations before the | |
27 | # output section has been populated. | |
28 | OTHER_GOT_RELOC_SECTIONS=" | |
29 | .rel.dyn ${RELOCATING-0} : { *(.rel.dyn) } | |
30 | " | |
4e25343c | 31 | # If the output has a GOT section, there must be exactly 0x7ff0 bytes |
fd161d86 AM |
32 | # between .got and _gp. |
33 | OTHER_GOT_SYMBOLS='HIDDEN (_gp = ALIGN (16) + 0x7ff0);' | |
34 | ||
861fb55a DJ |
35 | # .got.plt is only used for the PLT psABI extension. It should not be |
36 | # included in the .sdata block with .got, as there is no need to access | |
37 | # the section from _gp. Note that the traditional: | |
38 | # | |
39 | # . = . | |
40 | # _gp = ALIGN (16) + 0x7ff0; | |
41 | # .got : { *(.got.plt) *(.got) } | |
42 | # | |
43 | # would set _gp to the wrong value; _gp - 0x7ff0 must point to the start | |
44 | # of *(.got). | |
45 | GOT=".got ${RELOCATING-0} : { *(.got) }" | |
46 | unset OTHER_READWRITE_SECTIONS | |
47 | unset OTHER_RELRO_SECTIONS | |
48 | if test -n "$RELRO_NOW"; then | |
49 | OTHER_RELRO_SECTIONS=".got.plt ${RELOCATING-0} : { *(.got.plt) }" | |
50 | else | |
51 | OTHER_READWRITE_SECTIONS=".got.plt ${RELOCATING-0} : { *(.got.plt) }" | |
52 | fi | |
53 | ||
465bc359 AM |
54 | OTHER_SDATA_SECTIONS=" |
55 | .lit8 ${RELOCATING-0} : { *(.lit8) } | |
56 | .lit4 ${RELOCATING-0} : { *(.lit4) } | |
57 | " | |
fd161d86 AM |
58 | TEXT_START_SYMBOLS="${CREATE_SHLIB+PROVIDE (}_ftext = .${CREATE_SHLIB+)};" |
59 | DATA_START_SYMBOLS="${CREATE_SHLIB+PROVIDE (}_fdata = .${CREATE_SHLIB+)};" | |
60 | OTHER_BSS_SYMBOLS="${CREATE_SHLIB+PROVIDE (}_fbss = .${CREATE_SHLIB+)};" | |
252b5132 RH |
61 | OTHER_SECTIONS=' |
62 | .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } | |
63 | .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } | |
c0a512e2 JM |
64 | .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) } |
65 | .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) } | |
66 | .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) } | |
67 | .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) } | |
68 | .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) } | |
69 | .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) } | |
70 | .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) } | |
71 | .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) } | |
252b5132 RH |
72 | ' |
73 | ARCH=mips | |
74 | MACHINE= | |
75 | TEMPLATE_NAME=elf32 | |
73934d31 | 76 | EXTRA_EM_FILE=mipself |
252b5132 | 77 | GENERATE_SHLIB_SCRIPT=yes |
35eb9fb6 | 78 | GENERATE_PIE_SCRIPT=yes |