Kernel: Move prekernel linker.ld into Arch subdirectories

This moves Kernel/Prekernel/linker.ld unchanged to
Kernel/Prekernel/Arch/aarch64 and Kernel/Prekernel/Arch/x86.
The aarch64 will change in a future commit.

No behavior change.
This commit is contained in:
Nico Weber 2021-09-26 20:16:46 -04:00 committed by Linus Groh
parent 5bb2e6597a
commit cbdf4b575d
Notes: sideshowbarker 2024-07-18 03:25:03 +09:00
3 changed files with 54 additions and 2 deletions

View File

@ -0,0 +1,47 @@
ENTRY(start)
PHDRS
{
boot_text PT_LOAD ;
text PT_LOAD ;
data PT_LOAD ;
bss PT_LOAD ;
}
SECTIONS
{
. = 0x00100000;
start_of_prekernel_image = .;
.boot_text ALIGN(4K) : AT (ADDR(.boot_text))
{
KEEP(*(.multiboot))
} :boot_text
.text ALIGN(4K) : AT (ADDR(.text))
{
start_of_prekernel_text = .;
*(.text*)
} :text
.rodata ALIGN(4K) : AT (ADDR(.rodata))
{
*(.rodata*)
} :data
.data ALIGN(4K) : AT (ADDR(.data))
{
*(.data*)
} :data
.bss ALIGN(4K) (NOLOAD) : AT (ADDR(.bss))
{
*(COMMON)
*(.bss)
*(.stack)
*(.page_tables)
} :bss
end_of_prekernel_image = .;
}

View File

@ -44,8 +44,13 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
add_executable(${PREKERNEL_TARGET} ${SOURCES})
target_compile_options(${PREKERNEL_TARGET} PRIVATE -no-pie -fno-pic -fno-threadsafe-statics)
target_link_options(${PREKERNEL_TARGET} PRIVATE LINKER:-T ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld -nostdlib LINKER:--no-pie)
set_target_properties(${PREKERNEL_TARGET} PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
if ("${SERENITY_ARCH}" STREQUAL "aarch64")
set(PREKERNEL_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/Arch/aarch64/linker.ld")
else()
set(PREKERNEL_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/linker.ld")
endif()
target_link_options(${PREKERNEL_TARGET} PRIVATE LINKER:-T ${PREKERNEL_LINKER_SCRIPT} -nostdlib LINKER:--no-pie)
set_target_properties(${PREKERNEL_TARGET} PROPERTIES LINK_DEPENDS ${PREKERNEL_LINKER_SCRIPT})
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_libraries(${PREKERNEL_TARGET} PRIVATE gcc)