From dab60309ddf456795b591aa0b83fbb178f1e6fdf Mon Sep 17 00:00:00 2001 From: Tue Ly Date: Fri, 18 Jul 2025 05:19:42 +0000 Subject: [PATCH 1/2] [libc] Fix tests' linking flags accidentally modified by #147931. --- libc/cmake/modules/LLVMLibCTestRules.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake index e210992c5111a..e128b4500fc2a 100644 --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -571,6 +571,8 @@ function(add_integration_test test_name) target_compile_options(${fq_build_target_name} PRIVATE ${compile_options} ${INTEGRATION_TEST_COMPILE_OPTIONS}) + set(link_libraries "") + if(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU) target_link_options(${fq_build_target_name} PRIVATE ${LIBC_COMPILE_OPTIONS_DEFAULT} ${INTEGRATION_TEST_COMPILE_OPTIONS} @@ -599,17 +601,19 @@ function(add_integration_test test_name) set(link_options -nolibc -nostartfiles - -static + -nostdlib ${LIBC_LINK_OPTIONS_DEFAULT} ${LIBC_TEST_LINK_OPTIONS_DEFAULT} ) target_link_options(${fq_build_target_name} PRIVATE ${link_options}) + list(APPEND link_libraries ${LIBGCC_S_LOCATION}) endif() target_link_libraries( ${fq_build_target_name} ${fq_target_name}.__libc__ libc.startup.${LIBC_TARGET_OS}.crt1 libc.test.IntegrationTest.test + ${link_libraries} ) add_dependencies(${fq_build_target_name} libc.test.IntegrationTest.test @@ -807,7 +811,7 @@ function(add_libc_hermetic test_name) set(link_options -nolibc -nostartfiles - -static + -nostdlib ${LIBC_LINK_OPTIONS_DEFAULT} ${LIBC_TEST_LINK_OPTIONS_DEFAULT} ) From b22f00c15f7164bff67d3cbdf6ab5fb838e163b4 Mon Sep 17 00:00:00 2001 From: Tue Ly Date: Fri, 18 Jul 2025 13:55:02 +0000 Subject: [PATCH 2/2] Move libgcc_s to be linked after __libc__, and make linking order of integration tests the same as hermetic test. --- libc/cmake/modules/LLVMLibCTestRules.cmake | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake index e128b4500fc2a..3fb62788c1168 100644 --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -571,7 +571,7 @@ function(add_integration_test test_name) target_compile_options(${fq_build_target_name} PRIVATE ${compile_options} ${INTEGRATION_TEST_COMPILE_OPTIONS}) - set(link_libraries "") + set(compiler_runtime "") if(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU) target_link_options(${fq_build_target_name} PRIVATE @@ -606,14 +606,14 @@ function(add_integration_test test_name) ${LIBC_TEST_LINK_OPTIONS_DEFAULT} ) target_link_options(${fq_build_target_name} PRIVATE ${link_options}) - list(APPEND link_libraries ${LIBGCC_S_LOCATION}) + list(APPEND compiler_runtime ${LIBGCC_S_LOCATION}) endif() target_link_libraries( ${fq_build_target_name} - ${fq_target_name}.__libc__ libc.startup.${LIBC_TARGET_OS}.crt1 libc.test.IntegrationTest.test - ${link_libraries} + ${fq_target_name}.__libc__ + ${compiler_runtime} ) add_dependencies(${fq_build_target_name} libc.test.IntegrationTest.test @@ -774,6 +774,7 @@ function(add_libc_hermetic test_name) ${HERMETIC_TEST_COMPILE_OPTIONS}) set(link_libraries "") + set(compiler_runtime "") foreach(lib IN LISTS HERMETIC_TEST_LINK_LIBRARIES) if(TARGET ${lib}.hermetic) list(APPEND link_libraries ${lib}.hermetic) @@ -816,7 +817,7 @@ function(add_libc_hermetic test_name) ${LIBC_TEST_LINK_OPTIONS_DEFAULT} ) target_link_options(${fq_build_target_name} PRIVATE ${link_options}) - list(APPEND link_libraries ${LIBGCC_S_LOCATION}) + list(APPEND compiler_runtime ${LIBGCC_S_LOCATION}) endif() target_link_libraries( ${fq_build_target_name} @@ -824,7 +825,9 @@ function(add_libc_hermetic test_name) libc.startup.${LIBC_TARGET_OS}.crt1 ${link_libraries} LibcHermeticTestSupport.hermetic - ${fq_target_name}.__libc__) + ${fq_target_name}.__libc__ + ${compiler_runtime} + ) add_dependencies(${fq_build_target_name} LibcTest.hermetic libc.test.UnitTest.ErrnoSetterMatcher