xref: /freebsd/stand/efi/loader/arch/riscv/riscv.ldscript (revision d024bc7ff5e80537438b4556810782e9a8257b44)
1*5b3b9a58SWarner LoshOUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv")
2*5b3b9a58SWarner LoshOUTPUT_ARCH(riscv64)
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  .text		: {
10*5b3b9a58SWarner Losh    *(.peheader)
11*5b3b9a58SWarner Losh    *(.text .stub .text.* .gnu.linkonce.t.*)
12*5b3b9a58SWarner Losh    /* .gnu.warning sections are handled specially by elf32.em. */
13*5b3b9a58SWarner Losh    *(.gnu.warning)
14*5b3b9a58SWarner Losh    *(.plt)
15*5b3b9a58SWarner Losh  } =0x9090
16*5b3b9a58SWarner Losh  . = ALIGN(16);
17*5b3b9a58SWarner Losh  .data		: {
18*5b3b9a58SWarner Losh    *(.rodata .rodata.* .gnu.linkonce.r.*)
19*5b3b9a58SWarner Losh    *(.rodata1)
20*5b3b9a58SWarner Losh    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
21*5b3b9a58SWarner Losh    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
22*5b3b9a58SWarner Losh    *(.opd)
23*5b3b9a58SWarner Losh    *(.data .data.* .gnu.linkonce.d.*)
24*5b3b9a58SWarner Losh    *(.data1)
25*5b3b9a58SWarner Losh    *(.plabel)
26*5b3b9a58SWarner Losh
27*5b3b9a58SWarner Losh    . = ALIGN(16);
28*5b3b9a58SWarner Losh    __bss_start = .;
29*5b3b9a58SWarner Losh    *(.sbss .sbss.* .gnu.linkonce.sb.*)
30*5b3b9a58SWarner Losh    *(.scommon)
31*5b3b9a58SWarner Losh    *(.dynbss)
32*5b3b9a58SWarner Losh    *(.bss *.bss.*)
33*5b3b9a58SWarner Losh    *(COMMON)
34*5b3b9a58SWarner Losh    . = ALIGN(16);
35*5b3b9a58SWarner Losh    __bss_end = .;
36*5b3b9a58SWarner Losh  }
37*5b3b9a58SWarner Losh  . = ALIGN(16);
38*5b3b9a58SWarner Losh  .sdata	: {
39*5b3b9a58SWarner Losh    /*
40*5b3b9a58SWarner Losh     * u-boot expects the gp register to be untouched by the EFI payload, so we
41*5b3b9a58SWarner Losh     * can't enable this yet.
42*5b3b9a58SWarner Losh     */
43*5b3b9a58SWarner Losh    /* __global_pointer$ = . + 0x800; */
44*5b3b9a58SWarner Losh    *(.got.plt .got)
45*5b3b9a58SWarner Losh    *(.sdata .sdata.* .gnu.linkonce.s.*)
46*5b3b9a58SWarner Losh    *(dynsbss)
47*5b3b9a58SWarner Losh    *(.scommon)
48*5b3b9a58SWarner Losh  }
49*5b3b9a58SWarner Losh  . = ALIGN(16);
50*5b3b9a58SWarner Losh  .dynamic	: { *(.dynamic) }
51*5b3b9a58SWarner Losh  . = ALIGN(16);
52*5b3b9a58SWarner Losh  .rela.dyn	: {
53*5b3b9a58SWarner Losh    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
54*5b3b9a58SWarner Losh    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
55*5b3b9a58SWarner Losh    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
56*5b3b9a58SWarner Losh    *(.rela.got)
57*5b3b9a58SWarner Losh    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
58*5b3b9a58SWarner Losh    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
59*5b3b9a58SWarner Losh    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
60*5b3b9a58SWarner Losh    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
61*5b3b9a58SWarner Losh    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
62*5b3b9a58SWarner Losh    *(.rela.plt)
63*5b3b9a58SWarner Losh    *(.relset_*)
64*5b3b9a58SWarner Losh    *(.rela.dyn .rela.dyn.*)
65*5b3b9a58SWarner Losh  }
66*5b3b9a58SWarner Losh  . = ALIGN(16);
67*5b3b9a58SWarner Losh  .reloc	: { *(.reloc) }
68*5b3b9a58SWarner Losh  . = ALIGN(16);
69*5b3b9a58SWarner Losh  .dynsym	: { *(.dynsym) }
70*5b3b9a58SWarner Losh  _edata = .;
71*5b3b9a58SWarner Losh
72*5b3b9a58SWarner Losh  /* Unused sections */
73*5b3b9a58SWarner Losh  .interp	: { *(.interp) }
74*5b3b9a58SWarner Losh  .dynstr	: { *(.dynstr) }
75*5b3b9a58SWarner Losh  .hash		: { *(.hash) }
76*5b3b9a58SWarner Losh}
77