From 58c583f584eaec68243d9097a3c34375589e8b8d Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 16 Oct 2020 12:57:15 +0300 Subject: [PATCH] LibC: Add libc.so We now compile everything with -static flag so libc.a would be use --- CMakeLists.txt | 12 ++++++++++++ Demos/DynamicObject/CMakeLists.txt | 2 +- Demos/DynamicObject/SampleLib/CMakeLists.txt | 2 +- Libraries/LibC/CMakeLists.txt | 7 +++++-- Libraries/LibC/crt0_shared.cpp | 4 +++- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index af0a4e8b57..f17a7eb0d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,6 +135,16 @@ function(serenity_libc target_name fs_name) serenity_generated_sources(${target_name}) endfunction() +function(serenity_libc_shared target_name fs_name) + serenity_install_headers("") + serenity_install_sources("Libraries/LibC") + add_library(${target_name} SHARED ${SOURCES}) + install(TARGETS ${target_name} DESTINATION usr/lib) + set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name}) + target_link_directories(LibC PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) + serenity_generated_sources(${target_name}) +endfunction() + function(serenity_bin target_name) add_executable(${target_name} ${SOURCES}) install(TARGETS ${target_name} RUNTIME DESTINATION bin) @@ -210,6 +220,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -g1 -fno-exceptions -fno-rtti -Wno-a set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffile-prefix-map=${CMAKE_SOURCE_DIR}=.") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG -DSANITIZE_PTRS") +set(CMAKE_CXX_FLAGS_WITHOUT_STATIC ${CMAKE_CXX_FLAGS}) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") add_link_options(--sysroot ${CMAKE_BINARY_DIR}/Root) include_directories(Libraries/LibC) diff --git a/Demos/DynamicObject/CMakeLists.txt b/Demos/DynamicObject/CMakeLists.txt index 9ac8b607b8..d32736e984 100644 --- a/Demos/DynamicObject/CMakeLists.txt +++ b/Demos/DynamicObject/CMakeLists.txt @@ -3,7 +3,7 @@ set(SOURCES ../../Libraries/LibC/crt0_shared.cpp ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostartfiles -pie -fpic") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_WITHOUT_STATIC} -nostartfiles -pie -fpic") serenity_bin(DynamicObjectDemo) target_link_libraries(DynamicObjectDemo SampleLib LibCShared) diff --git a/Demos/DynamicObject/SampleLib/CMakeLists.txt b/Demos/DynamicObject/SampleLib/CMakeLists.txt index 0233405a7e..b02dbe8196 100644 --- a/Demos/DynamicObject/SampleLib/CMakeLists.txt +++ b/Demos/DynamicObject/SampleLib/CMakeLists.txt @@ -3,7 +3,7 @@ set(SOURCES lib.cpp ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib -fpic") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_WIHTOUT_STATIC} -nostdlib -fpic") add_library(SampleLib SHARED ${SOURCES}) target_link_libraries(SampleLib LibCShared) diff --git a/Libraries/LibC/CMakeLists.txt b/Libraries/LibC/CMakeLists.txt index f382587fb8..bcf1222659 100644 --- a/Libraries/LibC/CMakeLists.txt +++ b/Libraries/LibC/CMakeLists.txt @@ -70,5 +70,8 @@ serenity_libc(LibC c) target_link_libraries(LibC crt0) add_dependencies(LibC LibM) -add_library(LibCShared SHARED ${SOURCES}) -install(TARGETS LibCShared DESTINATION usr/lib) +set(SOURCES ${SOURCES} "crt0_shared.cpp") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib") +serenity_libc_shared(LibCShared c) +#add_library(LibCShared SHARED ${SOURCES}) +#install(TARGETS LibCShared DESTINATION usr/lib) diff --git a/Libraries/LibC/crt0_shared.cpp b/Libraries/LibC/crt0_shared.cpp index f38e607d83..c016e24556 100644 --- a/Libraries/LibC/crt0_shared.cpp +++ b/Libraries/LibC/crt0_shared.cpp @@ -22,9 +22,11 @@ int _start(int argc, char** argv, char** env) __environ_is_malloced = false; __libc_init(); - _init(); + // _init(); int status = main(argc, argv, environ); return status; } } + +void* __dso_handle = nullptr;