xref: /freebsd/stand/efi/loader/arch/arm/arm.ldscript (revision d024bc7ff5e80537438b4556810782e9a8257b44)
1*5b3b9a58SWarner LoshOUTPUT_ARCH(arm)
2*5b3b9a58SWarner LoshENTRY(_start)
3*5b3b9a58SWarner LoshSECTIONS
4*5b3b9a58SWarner Losh{
5*5b3b9a58SWarner Losh  /* Read-only sections, merged into text segment: */
6*5b3b9a58SWarner Losh  . = 0;
7*5b3b9a58SWarner Losh  ImageBase = .;
8*5b3b9a58SWarner Losh  .text		: {
9*5b3b9a58SWarner Losh    *(.peheader)
10*5b3b9a58SWarner Losh    *(.text .stub .text.* .gnu.linkonce.t.*)
11*5b3b9a58SWarner Losh    /* .gnu.warning sections are handled specially by elf32.em. */
12*5b3b9a58SWarner Losh    *(.gnu.warning)
13*5b3b9a58SWarner Losh    *(.gnu.linkonce.t*)
14*5b3b9a58SWarner Losh  } =0
15*5b3b9a58SWarner Losh  _etext = .;
16*5b3b9a58SWarner Losh  PROVIDE (etext = .);
17*5b3b9a58SWarner Losh  . = ALIGN(16);
18*5b3b9a58SWarner Losh  .data    :
19*5b3b9a58SWarner Losh  {
20*5b3b9a58SWarner Losh    *(.data .data.*)
21*5b3b9a58SWarner Losh    *(.gnu.linkonce.d*)
22*5b3b9a58SWarner Losh    *(.rodata)
23*5b3b9a58SWarner Losh    *(.rodata.*)
24*5b3b9a58SWarner Losh    CONSTRUCTORS
25*5b3b9a58SWarner Losh
26*5b3b9a58SWarner Losh    . = ALIGN(4);
27*5b3b9a58SWarner Losh    PROVIDE (__bss_start = .);
28*5b3b9a58SWarner Losh    *(.sbss)
29*5b3b9a58SWarner Losh    *(.scommon)
30*5b3b9a58SWarner Losh    *(.dynsbss)
31*5b3b9a58SWarner Losh    *(.dynbss)
32*5b3b9a58SWarner Losh    *(.bss)
33*5b3b9a58SWarner Losh    *(COMMON)
34*5b3b9a58SWarner Losh    . = ALIGN(4);
35*5b3b9a58SWarner Losh    PROVIDE (__bss_end = .);
36*5b3b9a58SWarner Losh  }
37*5b3b9a58SWarner Losh  .dynamic	: { *(.dynamic) }
38*5b3b9a58SWarner Losh  /* We want the small data sections together, so single-instruction offsets
39*5b3b9a58SWarner Losh     can access them all, and initialized data all before uninitialized, so
40*5b3b9a58SWarner Losh     we can shorten the on-disk segment size.  */
41*5b3b9a58SWarner Losh  .sdata     : {
42*5b3b9a58SWarner Losh    *(.got.plt .got)
43*5b3b9a58SWarner Losh    *(.sdata*.sdata.* .gnu.linkonce.s.*)
44*5b3b9a58SWarner Losh  }
45*5b3b9a58SWarner Losh  __gp = .;
46*5b3b9a58SWarner Losh  .plt   : { *(.plt) }
47*5b3b9a58SWarner Losh  .reloc	: { *(.reloc) }
48*5b3b9a58SWarner Losh  .dynsym	: { *(.dynsym) }
49*5b3b9a58SWarner Losh  .dynstr	: { *(.dynstr) }
50*5b3b9a58SWarner Losh  .rel.dyn	: {
51*5b3b9a58SWarner Losh    *(.rel.*)
52*5b3b9a58SWarner Losh    *(.relset_*)
53*5b3b9a58SWarner Losh  }
54*5b3b9a58SWarner Losh  _edata = .;
55*5b3b9a58SWarner Losh  .hash		: { *(.hash) }
56*5b3b9a58SWarner Losh}
57