From 2314b107e4be3c2498594b51e184dc04732b8b0c Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Sat, 30 Nov 2019 14:10:17 +0100 Subject: [PATCH] [0.4.13][NTOSKRNL] Restore section layout to fix BSOD regression CORE-14683 This version (after .rsrc) works different than the proper version I used for 0.4.12 (after .reloc). Inserting after .rsrc as actually not correct, but Thomas believes it can be used as a temporary trick to avoid random memory corruption upon relocations of the kernel, caused by ROSBE-154. I follow his advice, although when judging from practical tests only: as long as we limit this script to NTOSKRNL like I do for releases there have no negative consequences been observed in real life yet even with the proper version of 0.4.12. Up to now those problems have only been observed when used for drivers MODULE TYPE sdk/cmake/gcc.cmake as well, like it was tried for a moment in master 0.4.13-dev-609-g c4d8e2a6e9660c1f0d0d24877219baca443bbce0 Using for drivers immediately did lead to BSODs like CORE-16183 and therefore was mitigated in master by total disabling of the scripts for both, kernel and drivers in 0.4.13-dev-621-g 36e9a6f8ddc70018b55b0cad0b13128b1cbb60c2 To allow installing DVDWritenow without BSOD, we need the script at least for ntoskrnl! Master remains affected by the BSOD until Thomas allows to commit there as well. --- ntoskrnl/CMakeLists.txt | 3 +-- sdk/cmake/init-section.lds | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ntoskrnl/CMakeLists.txt b/ntoskrnl/CMakeLists.txt index 7f301afef9b..5f2ac879316 100644 --- a/ntoskrnl/CMakeLists.txt +++ b/ntoskrnl/CMakeLists.txt @@ -38,8 +38,7 @@ else() else() set_image_base(ntoskrnl 0x80800000) endif() - #Disabled due to LD bug: ROSBE-154 - #add_linker_script(ntoskrnl ${REACTOS_SOURCE_DIR}/sdk/cmake/init-section.lds) + add_linker_script(ntoskrnl ${REACTOS_SOURCE_DIR}/sdk/cmake/init-section.lds) endif() target_link_libraries(ntoskrnl cportlib csq ${PSEH_LIB} cmlib ntlsalib rtl ${ROSSYM_LIB} libcntpr wdmguid ioevent) diff --git a/sdk/cmake/init-section.lds b/sdk/cmake/init-section.lds index 2b815150105..7cf5a2b2431 100644 --- a/sdk/cmake/init-section.lds +++ b/sdk/cmake/init-section.lds @@ -8,4 +8,4 @@ SECTIONS __init_end__ = . ; } } -INSERT AFTER .reloc; +INSERT AFTER .rsrc;