73 lines
1.8 KiB
Plaintext
73 lines
1.8 KiB
Plaintext
#undef sparc
|
|
|
|
/*
|
|
* Kernel linker script for NetBSD/sparc. This script is based on
|
|
* elf32_sparc.xn, but puts _etext after all of the read-only sections.
|
|
*/
|
|
|
|
OUTPUT_FORMAT("elf32-sparc", "elf32-sparc",
|
|
"elf32-sparc")
|
|
OUTPUT_ARCH(sparc)
|
|
ENTRY(_start)
|
|
/* Do we need any of these for elf?
|
|
__DYNAMIC = 0; */
|
|
SECTIONS
|
|
{
|
|
/* Read-only sections, merged into text segment: */
|
|
. = 0x10000 + SIZEOF_HEADERS;
|
|
.text :
|
|
{
|
|
*(.text)
|
|
*(.text.*)
|
|
*(.stub)
|
|
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
*(.gnu.warning)
|
|
*(.gnu.linkonce.t*)
|
|
} =0
|
|
.rodata : { *(.rodata) *(.gnu.linkonce.r*) }
|
|
.rodata1 : { *(.rodata1) }
|
|
_etext = .;
|
|
PROVIDE (etext = .);
|
|
/* Adjust the address for the data segment. We push the data segment
|
|
up to the next 4MB boundary so that we can map the text with large
|
|
pages. */
|
|
. = ALIGN(0x400000);
|
|
kernel_data_start = .;
|
|
.data :
|
|
{
|
|
*(.data)
|
|
*(.gnu.linkonce.d*)
|
|
CONSTRUCTORS
|
|
}
|
|
.data1 : { *(.data1) }
|
|
. = ALIGN(64); /* COHERENCY_UNIT */
|
|
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
|
|
. = ALIGN(64); /* COHERENCY_UNIT */
|
|
.data.read_mostly : { *(.data.read_mostly) }
|
|
. = ALIGN(64); /* COHERENCY_UNIT */
|
|
.plt : { *(.plt) }
|
|
.got : { *(.got.plt) *(.got) }
|
|
.dynamic : { *(.dynamic) }
|
|
/* We want the small data sections together, so single-instruction offsets
|
|
can access them all, and initialized data all before uninitialized, so
|
|
we can shorten the on-disk segment size. */
|
|
.sdata : { *(.sdata) }
|
|
_edata = .;
|
|
PROVIDE (edata = .);
|
|
__bss_start = .;
|
|
.sbss : { *(.sbss) *(.scommon) }
|
|
.bss :
|
|
{
|
|
*(.dynbss)
|
|
*(.bss)
|
|
*(COMMON)
|
|
}
|
|
. = ALIGN(32 / 8);
|
|
_end = . ;
|
|
PROVIDE (end = .);
|
|
.note.netbsd.ident :
|
|
{
|
|
KEEP(*(.note.netbsd.ident));
|
|
}
|
|
}
|