xref: /freebsd/stand/efi/loader/arch/amd64/amd64.ldscript (revision d024bc7ff5e80537438b4556810782e9a8257b44)
1*5b3b9a58SWarner LoshOUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
2*5b3b9a58SWarner LoshOUTPUT_ARCH(i386:x86-64)
3*5b3b9a58SWarner LoshENTRY(_start)
4*5b3b9a58SWarner LoshSECTIONS
5*5b3b9a58SWarner Losh{
6*5b3b9a58SWarner Losh  /* Read-only sections, merged into text segment: */
7*5b3b9a58SWarner Losh  . = 0;
8*5b3b9a58SWarner Losh  ImageBase = .;
9*5b3b9a58SWarner Losh  .hash : { *(.hash) }  /* this MUST come first! */
10*5b3b9a58SWarner Losh  . = ALIGN(4096);
11*5b3b9a58SWarner Losh  .eh_frame :
12*5b3b9a58SWarner Losh  {
13*5b3b9a58SWarner Losh    *(.eh_frame)
14*5b3b9a58SWarner Losh  }
15*5b3b9a58SWarner Losh  . = ALIGN(4096);
16*5b3b9a58SWarner Losh  .text		: {
17*5b3b9a58SWarner Losh    *(.text .stub .text.* .gnu.linkonce.t.*)
18*5b3b9a58SWarner Losh    /* .gnu.warning sections are handled specially by elf32.em. */
19*5b3b9a58SWarner Losh    *(.gnu.warning)
20*5b3b9a58SWarner Losh    *(.plt)
21*5b3b9a58SWarner Losh  } =0xCCCCCCCC
22*5b3b9a58SWarner Losh  . = ALIGN(4096);
23*5b3b9a58SWarner Losh  .data		: {
24*5b3b9a58SWarner Losh    *(.rodata .rodata.* .gnu.linkonce.r.*)
25*5b3b9a58SWarner Losh    *(.rodata1)
26*5b3b9a58SWarner Losh    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
27*5b3b9a58SWarner Losh    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
28*5b3b9a58SWarner Losh    *(.opd)
29*5b3b9a58SWarner Losh    *(.data .data.* .gnu.linkonce.d.*)
30*5b3b9a58SWarner Losh    *(.data1)
31*5b3b9a58SWarner Losh    *(.plabel)
32*5b3b9a58SWarner Losh    *(.dynbss)
33*5b3b9a58SWarner Losh    *(.bss .bss.* .gnu.linkonce.b.*)
34*5b3b9a58SWarner Losh    *(COMMON)
35*5b3b9a58SWarner Losh  }
36*5b3b9a58SWarner Losh  . = ALIGN(4096);
37*5b3b9a58SWarner Losh  __gp = .;
38*5b3b9a58SWarner Losh  .sdata	: {
39*5b3b9a58SWarner Losh    *(.got.plt .got)
40*5b3b9a58SWarner Losh    *(.sdata .sdata.* .gnu.linkonce.s.*)
41*5b3b9a58SWarner Losh    *(dynsbss)
42*5b3b9a58SWarner Losh    *(.sbss .sbss.* .gnu.linkonce.sb.*)
43*5b3b9a58SWarner Losh    *(.scommon)
44*5b3b9a58SWarner Losh  }
45*5b3b9a58SWarner Losh  . = ALIGN(4096);
46*5b3b9a58SWarner Losh  .dynamic	: { *(.dynamic) }
47*5b3b9a58SWarner Losh  . = ALIGN(4096);
48*5b3b9a58SWarner Losh  .rela.dyn	: {
49*5b3b9a58SWarner Losh    *(.rela.data*)
50*5b3b9a58SWarner Losh    *(.rela.got)
51*5b3b9a58SWarner Losh    *(.rela.stab)
52*5b3b9a58SWarner Losh    *(.relaset_*)
53*5b3b9a58SWarner Losh  }
54*5b3b9a58SWarner Losh  . = ALIGN(4096);
55*5b3b9a58SWarner Losh  .reloc	: { *(.reloc) }
56*5b3b9a58SWarner Losh  . = ALIGN(4096);
57*5b3b9a58SWarner Losh  .dynsym	: { *(.dynsym) }
58*5b3b9a58SWarner Losh  . = ALIGN(4096);
59*5b3b9a58SWarner Losh  .dynstr	: { *(.dynstr) }
60*5b3b9a58SWarner Losh}
61