kern.ldscript revision 1.10
1/*	$NetBSD: kern.ldscript,v 1.10 2015/08/20 08:25:33 uebayasi Exp $	*/
2
3OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
4	      "elf64-x86-64")
5OUTPUT_ARCH(i386:x86-64)
6ENTRY(_start)
7SECTIONS
8{
9  /* Read-only sections, merged into text segment: */
10  .text :
11  AT (ADDR(.text) & 0x0fffffff)
12  {
13    *(.text)
14    *(.text.*)
15    *(.stub)
16  } =0
17  _etext = . ;
18  PROVIDE (etext = .) ;
19
20  .rodata :
21  AT (LOADADDR(.text) + (ADDR(.rodata) - ADDR(.text)))
22  {
23    *(.rodata)
24    *(.rodata.*)
25  }
26
27  /* Adjust the address for the data segment.  We want to adjust up to
28     the same address within the page on the next page up.  */
29  . = ALIGN(0x100000) + (. & (0x100000 - 1));
30  __data_start = . ;
31  .data :
32  AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
33  {
34    *(.data)
35  }
36
37  . = ALIGN(64);	/* COHERENCY_UNIT */
38  .data.cacheline_aligned :
39  AT (LOADADDR(.text) + (ADDR(.data.cacheline_aligned) - ADDR(.text)))
40  {
41    *(.data.cacheline_aligned)
42  }
43  . = ALIGN(64);	/* COHERENCY_UNIT */
44  .data.read_mostly :
45  AT (LOADADDR(.text) + (ADDR(.data.read_mostly) - ADDR(.text)))
46  {
47    *(.data.read_mostly)
48  }
49  . = ALIGN(64);	/* COHERENCY_UNIT */
50
51  _edata = . ;
52  PROVIDE (edata = .) ;
53  __bss_start = . ;
54  .bss :
55  AT (LOADADDR(.text) + (ADDR(.bss) - ADDR(.text)))
56  {
57    *(.bss)
58    *(.bss.*)
59    *(COMMON)
60    . = ALIGN(64 / 8);
61  }
62  . = ALIGN(64 / 8);
63  _end = . ;
64  PROVIDE (end = .) ;
65  .note.netbsd.ident :
66  {
67    KEEP(*(.note.netbsd.ident));
68  }
69}
70