Author: maskray Date: Wed May 29 18:55:43 2019 New Revision: 362050 URL: http://llvm.org/viewvc/llvm-project?rev=362050&view=rev Log: [Driver] -static-pie: add -z text
This matches gcc -static-pie. The intention is to prevent dynamic relocations in read-only segments. In ld.bfd and gold, -z notext is the default. If text relocations are needed: * -z notext: allow and emit DF_TEXTREL. DF_TEXTREL is not emitted if there is no text relocation. * -z text: error In lld, -z text is the default (this change is a no-op). * -z text: error on text relocations * -z notext: allow text relocations, and emit DF_TEXTREL no matter whether text relocations exist. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D62606 Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp cfe/trunk/test/Driver/linux-ld.c Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=362050&r1=362049&r2=362050&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Wed May 29 18:55:43 2019 @@ -382,6 +382,8 @@ void tools::gnutools::Linker::ConstructJ CmdArgs.push_back("-static"); CmdArgs.push_back("-pie"); CmdArgs.push_back("--no-dynamic-linker"); + CmdArgs.push_back("-z"); + CmdArgs.push_back("text"); } if (ToolChain.isNoExecStackDefault()) { Modified: cfe/trunk/test/Driver/linux-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=362050&r1=362049&r2=362050&view=diff ============================================================================== --- cfe/trunk/test/Driver/linux-ld.c (original) +++ cfe/trunk/test/Driver/linux-ld.c Wed May 29 18:55:43 2019 @@ -190,6 +190,8 @@ // CHECK-CLANG-LD-STATIC-PIE: "-static" // CHECK-CLANG-LD-STATIC-PIE: "-pie" // CHECK-CLANG-LD-STATIC-PIE: "--no-dynamic-linker" +// CHECK-CLANG-LD-STATIC-PIE: "-z" +// CHECK-CLANG-LD-STATIC-PIE: "text" // CHECK-CLANG-LD-STATIC-PIE: "-m" "elf_x86_64" // CHECK-CLANG-LD-STATIC-PIE: "{{.*}}rcrt1.o" // CHECK-CLANG-LD-STATIC-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group" @@ -203,6 +205,8 @@ // CHECK-CLANG-LD-STATIC-PIE-PIE: "-static" // CHECK-CLANG-LD-STATIC-PIE-PIE: "-pie" // CHECK-CLANG-LD-STATIC-PIE-PIE: "--no-dynamic-linker" +// CHECK-CLANG-LD-STATIC-PIE-PIE: "-z" +// CHECK-CLANG-LD-STATIC-PIE-PIE: "text" // CHECK-CLANG-LD-STATIC-PIE-PIE: "-m" "elf_x86_64" // CHECK-CLANG-LD-STATIC-PIE-PIE: "{{.*}}rcrt1.o" // CHECK-CLANG-LD-STATIC-PIE-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group" @@ -216,6 +220,8 @@ // CHECK-CLANG-LD-STATIC-PIE-STATIC: "-static" // CHECK-CLANG-LD-STATIC-PIE-STATIC: "-pie" // CHECK-CLANG-LD-STATIC-PIE-STATIC: "--no-dynamic-linker" +// CHECK-CLANG-LD-STATIC-PIE-STATIC: "-z" +// CHECK-CLANG-LD-STATIC-PIE-STATIC: "text" // CHECK-CLANG-LD-STATIC-PIE-STATIC: "-m" "elf_x86_64" // CHECK-CLANG-LD-STATIC-PIE-STATIC: "{{.*}}rcrt1.o" // CHECK-CLANG-LD-STATIC-PIE-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits