From 76b83c623e83c8c25b1f1c126b569ea8192926ed Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 13 Jun 2016 18:36:01 +0200 Subject: [PATCH] Revert "Remove unneeded gcc_except_table section" (#180) --- blog/post/2016-01-01-remap-the-kernel.md | 5 +++++ src/arch/x86_64/linker.ld | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/blog/post/2016-01-01-remap-the-kernel.md b/blog/post/2016-01-01-remap-the-kernel.md index 93b7316f..4bca80cf 100644 --- a/blog/post/2016-01-01-remap-the-kernel.md +++ b/blog/post/2016-01-01-remap-the-kernel.md @@ -683,6 +683,11 @@ SECTIONS { *(.data.rel.ro.local*) *(.data.rel.ro .data.rel.ro.*) . = ALIGN(4K); } + + .gcc_except_table : ALIGN(4K) { + *(.gcc_except_table) + . = ALIGN(4K); + } } ``` Instead of page aligning the `.multiboot_header` section, we merge it into the `.rodata` section. That way, we don't waste a whole page for the few bytes of the Multiboot header. We could merge it into any section, but `.rodata` fits best because it has the same flags (neither writable nor executable). The Multiboot header still needs to be at the beginning of the file, so `.rodata` must be our first section now. diff --git a/src/arch/x86_64/linker.ld b/src/arch/x86_64/linker.ld index ac3014b7..ff773527 100644 --- a/src/arch/x86_64/linker.ld +++ b/src/arch/x86_64/linker.ld @@ -44,4 +44,9 @@ SECTIONS { *(.data.rel.ro.local*) *(.data.rel.ro .data.rel.ro.*) . = ALIGN(4K); } + + .gcc_except_table : ALIGN(4K) { + *(.gcc_except_table) + . = ALIGN(4K); + } }