aboutsummaryrefslogtreecommitdiff
path: root/defs
diff options
context:
space:
mode:
authorTianhao Wang <shrik3@mailbox.org>2024-04-18 03:03:27 +0200
committerTianhao Wang <shrik3@mailbox.org>2024-06-11 15:16:34 +0200
commit35d1a6ef41fa716503925226837cf0f0b8894a90 (patch)
treea07d9d3073e802af03922c9d4732ad2f988cf6cb /defs
parent4c7dec80c02db70d9592bbe91f00145c0eb7a40e (diff)
linker: "optimize" section arrangements
1. throw vectors in a custom ".reserved" section 2. throw idt in a NOLOAD ".reserved_0" section: save some binary size (like .bss) since we don't care for its initial value. 3. squash all ".data.*" sections from rust into ".data"
Diffstat (limited to 'defs')
-rw-r--r--defs/x86_64-linker.ld18
1 files changed, 16 insertions, 2 deletions
diff --git a/defs/x86_64-linker.ld b/defs/x86_64-linker.ld
index aee69aa..3d54187 100644
--- a/defs/x86_64-linker.ld
+++ b/defs/x86_64-linker.ld
@@ -12,12 +12,26 @@ SECTIONS
.data :
{
- *(".data.idt")
- *(".data.vectors")
*(".data")
+ *(".data.*")
*(".data$")
}
+ .reserved : {
+ *(".reserved")
+ *(".reserved.*")
+ }
+
+ /*
+ * basically the same as BSS, but I want some flexibility and I don't care
+ * for zeroing because it's explicitly overwritten anyways. I KNOW WHAT I'M
+ * DOING! An example is the idt.
+ */
+ .reserved_0 (NOLOAD) : {
+ *(".reserved_0")
+ *(".reserved_0.*")
+ }
+
.rodata :
{
*(".rodata")