NetBSD/sys/arch/powerpc/conf/kern.ldscript
uebayasi ce93b3da57 Don't mention stab and DWARF sections, because these (poorly mtaintained)
lists only help to make them harder to read.

If those sections are found in inputs, they simply appear in outputs as
orphaned sections, sorted by section types and attributes.
2015-08-24 08:13:07 +00:00

100 lines
2.8 KiB
Plaintext

/* $NetBSD: kern.ldscript,v 1.9 2015/08/24 08:13:07 uebayasi Exp $ */
/* ldscript for NetBSD/powerpc kernels and LKMs, based on elf32ppc.x */
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
"elf32-powerpc")
OUTPUT_ARCH(powerpc:common)
ENTRY(_start)
/* Do we need any of these?
__DYNAMIC = 0; */
_DYNAMIC_LINK = 0;
SECTIONS
{
/* Read-only sections, merged into text segment. Assumes the
kernel Makefile sets the start address via -Ttext. */
.text :
{
_ftext = . ;
PROVIDE_HIDDEN (__eprol = .);
*(.text)
*(.text.unlikely .text.*_unlikely)
*(.text.exit .text.exit.*)
*(.text.startup .text.startup.*)
*(.text.hot .text.hot.*)
*(.text.* .gnu.linkonce.t.*)
__stub_start = .;
*(.stub)
__stub_end = .;
__stub_pmap_start = .;
*(.stub.pmap)
__stub_pmap_end = .;
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
*(.glink)
} =0
_etext = .;
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) }
.sdata2 :
{
PROVIDE (_SDA2_BASE_ = 32768);
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
}
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
/*.jcr : { KEEP (*(.jcr)) } */ /* XXX??? */
.reginfo : { *(.reginfo) }
/* . = . + 0x1000; */
.data :
{
_fdata = . ;
*(.data .data.* .gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
}
.data1 : { *(.data1) }
. = ALIGN(32); /* COHERENCY UNIT */
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
. = ALIGN(32); /* COHERENCY UNIT */
.data.read_mostly : { *(.data.read_mostly) }
. = ALIGN(32); /* COHERENCY UNIT */
_gp = ALIGN(16) + 0x7ff0;
.lit8 : { *(.lit8) }
.lit4 : { *(.lit4) }
.sdata :
{
PROVIDE (_SDA_BASE_ = 32768);
*(.sdata .sdata.* .gnu.linkonce.s.*)
}
_edata = .; PROVIDE (edata = .);
. = .;
__bss_start = .;
_fbss = .;
.sbss :
{
PROVIDE (__sbss_start = .); PROVIDE (___sbss_start = .);
*(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*)
*(.scommon)
PROVIDE (__sbss_end = .); PROVIDE (___sbss_end = .);
}
.bss :
{
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections.
FIXME: Why do we need it? When there is no .bss section, we don't
pad the .data section. */
. = ALIGN(. != 0 ? 32 / 8 : 1);
}
. = ALIGN(32 / 8);
. = ALIGN(32 / 8);
__end = .;
_end = .; PROVIDE (end = .);
/* . = DATA_SEGMENT_END (.); */
}