forked from OSchip/llvm-project
[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 llvm-svn: 362050
This commit is contained in:
parent
a05fda68bc
commit
0666f9c4e4
|
@ -382,6 +382,8 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
CmdArgs.push_back("-static");
|
CmdArgs.push_back("-static");
|
||||||
CmdArgs.push_back("-pie");
|
CmdArgs.push_back("-pie");
|
||||||
CmdArgs.push_back("--no-dynamic-linker");
|
CmdArgs.push_back("--no-dynamic-linker");
|
||||||
|
CmdArgs.push_back("-z");
|
||||||
|
CmdArgs.push_back("text");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ToolChain.isNoExecStackDefault()) {
|
if (ToolChain.isNoExecStackDefault()) {
|
||||||
|
|
|
@ -190,6 +190,8 @@
|
||||||
// CHECK-CLANG-LD-STATIC-PIE: "-static"
|
// CHECK-CLANG-LD-STATIC-PIE: "-static"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE: "-pie"
|
// CHECK-CLANG-LD-STATIC-PIE: "-pie"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE: "--no-dynamic-linker"
|
// 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: "-m" "elf_x86_64"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE: "{{.*}}rcrt1.o"
|
// CHECK-CLANG-LD-STATIC-PIE: "{{.*}}rcrt1.o"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
|
// 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: "-static"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-PIE: "-pie"
|
// CHECK-CLANG-LD-STATIC-PIE-PIE: "-pie"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-PIE: "--no-dynamic-linker"
|
// 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: "-m" "elf_x86_64"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-PIE: "{{.*}}rcrt1.o"
|
// CHECK-CLANG-LD-STATIC-PIE-PIE: "{{.*}}rcrt1.o"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-PIE: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
|
// 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: "-static"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "-pie"
|
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "-pie"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "--no-dynamic-linker"
|
// 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: "-m" "elf_x86_64"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "{{.*}}rcrt1.o"
|
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "{{.*}}rcrt1.o"
|
||||||
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
|
// CHECK-CLANG-LD-STATIC-PIE-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
|
||||||
|
|
Loading…
Reference in New Issue