diff --git a/lib/Driver/UnixToolChains.cpp b/lib/Driver/UnixToolChains.cpp index 389afb821dd61..d2f198f075c60 100644 --- a/lib/Driver/UnixToolChains.cpp +++ b/lib/Driver/UnixToolChains.cpp @@ -184,17 +184,6 @@ toolchains::GenericUnix::constructInvocation(const DynamicLinkJobAction &job, #else Arguments.push_back(context.Args.MakeArgString("-fuse-ld=" + Linker)); #endif - // Starting with lld 13, Swift stopped working with the lld --gc-sections - // implementation for ELF, unless -z nostart-stop-gc is also passed to lld: - // - // https://reviews.llvm.org/D96914 - if (Linker == "lld" || (Linker.length() > 5 && - Linker.substr(Linker.length() - 6) == "ld.lld")) { - Arguments.push_back("-Xlinker"); - Arguments.push_back("-z"); - Arguments.push_back("-Xlinker"); - Arguments.push_back("nostart-stop-gc"); - } } // Configure the toolchain. diff --git a/stdlib/public/runtime/SwiftRT-ELF-WASM.cpp b/stdlib/public/runtime/SwiftRT-ELF-WASM.cpp index e68103a6a6750..cdb431a966b61 100644 --- a/stdlib/public/runtime/SwiftRT-ELF-WASM.cpp +++ b/stdlib/public/runtime/SwiftRT-ELF-WASM.cpp @@ -28,7 +28,7 @@ static constexpr const void *__dso_handle = nullptr; // by the linker. Otherwise, we may end up with undefined symbol references as // the linker table section was never constructed. #if defined(__ELF__) -# define DECLARE_EMPTY_METADATA_SECTION(name) __asm__("\t.section " #name ",\"a\"\n"); +# define DECLARE_EMPTY_METADATA_SECTION(name) __asm__("\t.section " #name ",\"aR\"\n"); #elif defined(__wasm__) # define DECLARE_EMPTY_METADATA_SECTION(name) __asm__("\t.section " #name ",\"\",@\n"); #endif diff --git a/test/Driver/link-time-opt.swift b/test/Driver/link-time-opt.swift index 10d6fc8ca1b45..b0684b2425a9d 100644 --- a/test/Driver/link-time-opt.swift +++ b/test/Driver/link-time-opt.swift @@ -16,7 +16,6 @@ // CHECK-SIMPLE-THIN-linux-gnu: clang // CHECK-SIMPLE-THIN-linux-gnu-DAG: -flto=thin // CHECK-SIMPLE-THIN-linux-gnu-DAG: -fuse-ld=lld -// CHECK-SIMPLE-THIN-linux-gnu-DAG: -Xlinker -z -Xlinker nostart-stop-gc // CHECK-SIMPLE-THIN-linux-gnu-DAG: [[BITCODEFILE]] // CHECK-SIMPLE-THIN-linux-gnu-NOT: swift-autolink-extract @@ -38,7 +37,6 @@ // CHECK-SIMPLE-FULL-linux-gnu: clang // CHECK-SIMPLE-FULL-linux-gnu-DAG: -flto=full // CHECK-SIMPLE-FULL-linux-gnu-DAG: -fuse-ld=lld -// CHECK-SIMPLE-FULL-linux-gnu-DAG: -Xlinker -z -Xlinker nostart-stop-gc // CHECK-SIMPLE-FULL-linux-gnu-DAG: [[BITCODEFILE]] // CHECK-SIMPLE-FULL-linux-gnu-NOT: swift-autolink-extract