Using wild match init_array* to include global array init ctor Before: 10 .ctors 00000040 ffff0000001e6b80 00000000401e6b80 DATA 11 .dtors 00000000 ffff0000001e6bc0 00000000401e6bc0 DATA 12 .got 00000060 ffff0000001e6bc0 00000000401e6bc0 DATA 13 .init_array.1 00000470 ffff0000001e6c20 00000000401e6c20 14 .fini_array.1 00000470 ffff0000001e7090 00000000401e7090 15 .dummy_post_data 00000000 ffff0000001e7500 00000000401e7500 DATA 16 .bss 00009460 ffff0000001e8000 00000000401e8000 BSS After: 10 .ctors 000004b0 ffff0000001e6b80 00000000401e6b80 DATA 11 .dtors 00000470 ffff0000001e7030 00000000401e7030 12 .got 00000060 ffff0000001e74a0 00000000401e74a0 DATA 13 .dummy_post_data 00000000 ffff0000001e7500 00000000401e7500 DATA 14 .bss 00009460 ffff0000001e8000 00000000401e8000 BSS Signed-off-by: Lei Wen <leiwen@asrmicro.com>
101 lines
2.9 KiB
Plaintext
101 lines
2.9 KiB
Plaintext
/*
|
|
* Copyright (c) 2009 Corey Tabaka
|
|
* Copyright (c) 2013 Travis Geiselbrecht
|
|
* Copyright (c) 2015 Intel Corporation
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files
|
|
* (the "Software"), to deal in the Software without restriction,
|
|
* including without limitation the rights to use, copy, modify, merge,
|
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
|
* and to permit persons to whom the Software is furnished to do so,
|
|
* subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be
|
|
* included in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
ENTRY(_start)
|
|
SECTIONS
|
|
{
|
|
. = %KERNEL_BASE% + %KERNEL_LOAD_OFFSET%;
|
|
|
|
.text : AT(%MEMBASE% + %KERNEL_LOAD_OFFSET%) {
|
|
__code_start = .;
|
|
KEEP(*(.text.boot))
|
|
*(.text* .sram.text)
|
|
*(.gnu.linkonce.t.*)
|
|
__code_end = .;
|
|
} =0x9090
|
|
|
|
.rodata : ALIGN(4096) {
|
|
__rodata_start = .;
|
|
*(.rodata*)
|
|
*(.gnu.linkonce.r.*)
|
|
. = ALIGN(4);
|
|
}
|
|
|
|
/*
|
|
* extra linker scripts tend to insert sections just after .rodata,
|
|
* so we want to make sure this symbol comes after anything inserted above,
|
|
* but not aligned to the next section necessarily.
|
|
*/
|
|
.dummy_post_rodata : {
|
|
__rodata_end = .;
|
|
}
|
|
|
|
.data : ALIGN(4096) {
|
|
__data_start = .;
|
|
*(.data .data.* .gnu.linkonce.d.*)
|
|
}
|
|
|
|
.ctors : ALIGN(4) {
|
|
__ctor_list = .;
|
|
KEEP(*(.ctors .init_array*))
|
|
__ctor_end = .;
|
|
}
|
|
.dtors : ALIGN(4) {
|
|
__dtor_list = .;
|
|
KEEP(*(.dtors .fini_array*))
|
|
__dtor_end = .;
|
|
}
|
|
|
|
.stab : { *(.stab) }
|
|
.stabst : { *(.stabstr) }
|
|
|
|
/*
|
|
* extra linker scripts tend to insert sections just after .data,
|
|
* so we want to make sure this symbol comes after anything inserted above,
|
|
* but not aligned to the next section necessarily.
|
|
*/
|
|
.dummy_post_data : {
|
|
__data_end = .;
|
|
}
|
|
|
|
.bss : {
|
|
__bss_start = .;
|
|
*(.bss*)
|
|
*(.gnu.linkonce.b.*)
|
|
*(COMMON)
|
|
. = ALIGN(4);
|
|
__bss_end = .;
|
|
}
|
|
|
|
|
|
_end = .;
|
|
|
|
/* put a symbol arbitrarily 4MB past the end of the kernel */
|
|
/* used by the heap and other early boot time allocators */
|
|
_end_of_ram = . + (4*1024*1024);
|
|
|
|
/DISCARD/ : { *(.comment .note .eh_frame) }
|
|
}
|