1/* $FreeBSD$ */
2OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv")
3OUTPUT_ARCH(riscv64)
4ENTRY(_start)
5SECTIONS
6{
7  /* Read-only sections, merged into text segment: */
8  . = 0;
9  ImageBase = .;
10  .text		: {
11    *(.peheader)
12    *(.text .stub .text.* .gnu.linkonce.t.*)
13    /* .gnu.warning sections are handled specially by elf32.em. */
14    *(.gnu.warning)
15    *(.plt)
16  } =0x9090
17  . = ALIGN(16);
18  .data		: {
19    *(.rodata .rodata.* .gnu.linkonce.r.*)
20    *(.rodata1)
21    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
22    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
23    *(.opd)
24    *(.data .data.* .gnu.linkonce.d.*)
25    *(.data1)
26    *(.plabel)
27
28    . = ALIGN(16);
29    __bss_start = .;
30    *(.sbss .sbss.* .gnu.linkonce.sb.*)
31    *(.scommon)
32    *(.dynbss)
33    *(.bss *.bss.*)
34    *(COMMON)
35    . = ALIGN(16);
36    __bss_end = .;
37  }
38  . = ALIGN(16);
39  set_Xcommand_set	: {
40    __start_set_Xcommand_set = .;
41    *(set_Xcommand_set)
42    __stop_set_Xcommand_set = .;
43  }
44  set_Xficl_compile_set	: {
45    __start_set_Xficl_compile_set = .;
46    *(set_Xficl_compile_set)
47    __stop_set_Xficl_compile_set = .;
48  }
49  . = ALIGN(16);
50  .sdata	: {
51    /*
52     * u-boot expects the gp register to be untouched by the EFI payload, so we
53     * can't enable this yet.
54     */
55    /* __global_pointer$ = . + 0x800; */
56    *(.got.plt .got)
57    *(.sdata .sdata.* .gnu.linkonce.s.*)
58    *(dynsbss)
59    *(.scommon)
60  }
61  . = ALIGN(16);
62  .dynamic	: { *(.dynamic) }
63  . = ALIGN(16);
64  .rela.dyn	: {
65    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
66    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
67    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
68    *(.rela.got)
69    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
70    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
71    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
72    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
73    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
74    *(.rela.plt)
75    *(.relset_*)
76    *(.rela.dyn .rela.dyn.*)
77  }
78  . = ALIGN(16);
79  .reloc	: { *(.reloc) }
80  . = ALIGN(16);
81  .dynsym	: { *(.dynsym) }
82  _edata = .;
83
84  /* Unused sections */
85  .interp	: { *(.interp) }
86  .dynstr	: { *(.dynstr) }
87  .hash		: { *(.hash) }
88}
89