xref: /DragonStub/gnuefi/elf_mips64el_efi.lds (revision 4c6962457f4ce3f4c18774ce6accd8d20ee29f22)
1OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips", "elf64-tradlittlemips")
2OUTPUT_ARCH(mips)
3ENTRY(_start)
4SECTIONS
5{
6  .text 0x0 : {
7    _text = .;
8    *(.text.head)
9    *(.text)
10    *(.text.*)
11    *(.gnu.linkonce.t.*)
12    *(.srodata)
13    *(.rodata*)
14    . = ALIGN(16);
15  }
16  _etext = .;
17  _text_size = . - _text;
18  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
19  .dynamic  : { *(.dynamic) }
20  . = ALIGN(4096);
21  .data :
22  {
23   _data = .;
24   *(.sdata)
25   *(.data)
26   *(.data1)
27   *(.data.*)
28   *(.got.plt)
29   HIDDEN (_gp = ALIGN (16) + 0x7ff0);
30   *(.got)
31
32   /*
33    * Note that these aren't the using the GNU "CONSTRUCTOR" output section
34    * command, so they don't start with a size.  Because of p2align and the
35    * end/END definitions, and the fact that they're mergeable, they can also
36    * have NULLs which aren't guaranteed to be at the end.
37    */
38   . = ALIGN(16);
39   __init_array_start = .;
40   *(SORT(.init_array.*))
41   *(.init_array)
42   __init_array_end = .;
43  . = ALIGN(16);
44   __CTOR_LIST__ = .;
45   *(SORT(.ctors.*))
46   *(.ctors)
47   __CTOR_END__ = .;
48  . = ALIGN(16);
49   __DTOR_LIST__ = .;
50   *(SORT(.dtors.*))
51   *(.dtors)
52   __DTOR_END__ = .;
53   . = ALIGN(16);
54   __fini_array_start = .;
55   *(SORT(.fini_array.*))
56   *(.fini_array)
57   __fini_array_end = .;
58
59   /* the EFI loader doesn't seem to like a .bss section, so we stick
60      it all into .data: */
61   . = ALIGN(16);
62   _bss = .;
63   *(.sbss)
64   *(.scommon)
65   *(.dynbss)
66   *(.bss*)
67   *(COMMON)
68   . = ALIGN(16);
69   _bss_end = .;
70  }
71
72  . = ALIGN(4096);
73  .rel :
74  {
75    *(.rel.text*)
76    *(.rel.data*)
77    *(.rel.got)
78    *(.rel.dyn)
79    *(.rel.stab)
80    *(.rel.init_array*)
81    *(.rel.fini_array*)
82    *(.rel.ctors*)
83    *(.rel.dtors*)
84  }
85  . = ALIGN(4096);
86  .rel.plt : { *(.rel.plt) }
87  _edata = .;
88  _data_size = . - _etext;
89
90  . = ALIGN(4096);
91  .dynsym   : { *(.dynsym) }
92  . = ALIGN(4096);
93  .dynstr   : { *(.dynstr) }
94  . = ALIGN(4096);
95  .note.gnu.build-id : { *(.note.gnu.build-id) }
96  . = DATA_SEGMENT_END (.);
97  /DISCARD/ :
98  {
99    *(.rel.reloc)
100    *(.eh_frame)
101    *(.MIPS.abiflags)
102    *(.note.GNU-stack)
103  }
104  .comment 0 : { *(.comment) }
105}
106