From Adrien Destugues <pulkomandy@xxxxxxxxx>:
Adrien Destugues has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/2199 ;)
Change subject: Split bss and data segments in EFI loader.
......................................................................
Split bss and data segments in EFI loader.
We don't need the bss to be stored in the executable, have it separate
and clear it during startup.
---
M src/system/boot/platform/efi/start.cpp
M src/system/ldscripts/x86_64/boot_loader_efi.ld
2 files changed, 15 insertions(+), 6 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/99/2199/1
diff --git a/src/system/boot/platform/efi/start.cpp
b/src/system/boot/platform/efi/start.cpp
index dc48a55..8733186 100644
--- a/src/system/boot/platform/efi/start.cpp
+++ b/src/system/boot/platform/efi/start.cpp
@@ -32,6 +32,8 @@
extern void (*__ctor_list)(void);
extern void (*__ctor_end)(void);
+extern char __bss_start;
+extern char __bss_end;
const efi_system_table *kSystemTable;
@@ -256,6 +258,7 @@
stage2_args args;
memset(&args, 0, sizeof(stage2_args));
+ memset(&__bss_start, 0, &__bss_end - &__bss_start);
kImage = image;
kSystemTable = systemTable;
diff --git a/src/system/ldscripts/x86_64/boot_loader_efi.ld
b/src/system/ldscripts/x86_64/boot_loader_efi.ld
index 88f4b25..d3cee3d 100644
--- a/src/system/ldscripts/x86_64/boot_loader_efi.ld
+++ b/src/system/ldscripts/x86_64/boot_loader_efi.ld
@@ -41,19 +41,25 @@
*(.got)
*(.data*)
*(.sdata)
- /* the EFI loader doesn't seem to like a .bss section, so we stick
- it all into .data: */
+ }
+ .note.gnu.build-id : { *(.note.gnu.build-id) }
+
+ _edata = .;
+ _data_size = . - _etext;
+
+ .bss:
+ {
+ __bss_start = . ;
*(.sbss)
*(.scommon)
*(.dynbss)
*(.bss)
*(COMMON)
*(.rel.local)
- }
- .note.gnu.build-id : { *(.note.gnu.build-id) }
- _edata = .;
- _data_size = . - _etext;
+ __bss_end = . ;
+ }
+
. = ALIGN(4096);
.dynamic : { *(.dynamic) }
. = ALIGN(4096);
--
To view, visit https://review.haiku-os.org/c/haiku/+/2199
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I0f2f113b250e1cc1d29563977b022053aee81002
Gerrit-Change-Number: 2199
Gerrit-PatchSet: 1
Gerrit-Owner: Adrien Destugues <pulkomandy@xxxxxxxxx>
Gerrit-MessageType: newchange