Clean up linker script
This patch does the following: - Add .text.* to the .text section in the output - Add an assertion that the trampoline does not overflow a page - Add the .rodata section - Make .sdata and .sdata.* (which is for small data) be absorbed into the .data section, because we don't need to distinguish between them; this prevents .sdata from appearing in the output - Make the analogous change for .srodata and .sbss - Make all the data sections 16-byte aligned This patch also updates the .editorconfig for *.ld files.
This commit is contained in:
parent
2821d43cc9
commit
f2ab0eb644
|
@ -14,6 +14,9 @@ indent_size = 2
|
||||||
[*.S]
|
[*.S]
|
||||||
indent_size = 8
|
indent_size = 8
|
||||||
|
|
||||||
|
[*.ld]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
[Makefile]
|
[Makefile]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 8
|
indent_size = 8
|
||||||
|
|
|
@ -8,25 +8,37 @@ SECTIONS
|
||||||
* where qemu's -kernel jumps.
|
* where qemu's -kernel jumps.
|
||||||
*/
|
*/
|
||||||
. = 0x80000000;
|
. = 0x80000000;
|
||||||
.text :
|
|
||||||
{
|
.text : {
|
||||||
*(.text)
|
*(.text .text.*)
|
||||||
. = ALIGN(0x1000);
|
. = ALIGN(0x1000);
|
||||||
|
_trampoline = .;
|
||||||
*(trampsec)
|
*(trampsec)
|
||||||
|
. = ALIGN(0x1000);
|
||||||
|
ASSERT(. - _trampoline == 0x1000, "error: trampoline larger than one page");
|
||||||
|
PROVIDE(etext = .);
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
.rodata : {
|
||||||
PROVIDE(etext = .);
|
. = ALIGN(16);
|
||||||
|
*(.srodata .srodata.*) /* do not need to distinguish this from .rodata */
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.rodata .rodata.*)
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* make sure end is after data and bss.
|
|
||||||
*/
|
|
||||||
.data : {
|
.data : {
|
||||||
*(.data)
|
. = ALIGN(16);
|
||||||
|
*(.sdata .sdata.*) /* do not need to distinguish this from .data */
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.data .data.*)
|
||||||
}
|
}
|
||||||
|
|
||||||
.bss : {
|
.bss : {
|
||||||
*(.bss)
|
. = ALIGN(16);
|
||||||
*(.sbss*)
|
*(.sbss .sbss.*) /* do not need to distinguish this from .bss */
|
||||||
PROVIDE(end = .);
|
. = ALIGN(16);
|
||||||
|
*(.bss .bss.*)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PROVIDE(end = .);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue