[PATCH] D17092: [X86] Add -mseparate-stack-seg
mlemay-intel updated this revision to Diff 87453. mlemay-intel added a comment. Removed the portions that are specific to 32-bit segmentation. I plan to resubmit those later as a separate patch. https://reviews.llvm.org/D17092 Files: include/clang/Driver/Options.td Index: include/clang/Driver/Options.td === --- include/clang/Driver/Options.td +++ include/clang/Driver/Options.td @@ -1605,6 +1605,7 @@ def mno_xsaves : Flag<["-"], "mno-xsaves">, Group; def mno_mwaitx : Flag<["-"], "mno-mwaitx">, Group; def mno_pku : Flag<["-"], "mno-pku">, Group; +def mno_separate_stack_seg : Flag<["-"], "mno-separate-stack-seg">, Group; def munaligned_access : Flag<["-"], "munaligned-access">, Group, HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">; @@ -1785,6 +1786,7 @@ def mprfchw : Flag<["-"], "mprfchw">, Group; def mrdseed : Flag<["-"], "mrdseed">, Group; def mpku : Flag<["-"], "mpku">, Group; +def mseparate_stack_seg : Flag<["-"], "mseparate-stack-seg">, Group; def madx : Flag<["-"], "madx">, Group; def msha : Flag<["-"], "msha">, Group; def mcx16 : Flag<["-"], "mcx16">, Group; Index: include/clang/Driver/Options.td === --- include/clang/Driver/Options.td +++ include/clang/Driver/Options.td @@ -1605,6 +1605,7 @@ def mno_xsaves : Flag<["-"], "mno-xsaves">, Group; def mno_mwaitx : Flag<["-"], "mno-mwaitx">, Group; def mno_pku : Flag<["-"], "mno-pku">, Group; +def mno_separate_stack_seg : Flag<["-"], "mno-separate-stack-seg">, Group; def munaligned_access : Flag<["-"], "munaligned-access">, Group, HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">; @@ -1785,6 +1786,7 @@ def mprfchw : Flag<["-"], "mprfchw">, Group; def mrdseed : Flag<["-"], "mrdseed">, Group; def mpku : Flag<["-"], "mpku">, Group; +def mseparate_stack_seg : Flag<["-"], "mseparate-stack-seg">, Group; def madx : Flag<["-"], "madx">, Group; def msha : Flag<["-"], "msha">, Group; def mcx16 : Flag<["-"], "mcx16">, Group; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29655: [X86] Link safestacksepseg runtime
mlemay-intel updated this revision to Diff 87932. mlemay-intel added a comment. Only link safestacksepseg, not safestack. I changed the build configuration for safestacksepseg to also include the files in safestack. https://reviews.llvm.org/D29655 Files: lib/Driver/Tools.cpp Index: lib/Driver/Tools.cpp === --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3319,8 +3319,12 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("ubsan_standalone_cxx"); } - if (SanArgs.needsSafeStackRt()) -StaticRuntimes.push_back("safestack"); + if (SanArgs.needsSafeStackRt()) { +if (Args.hasFlag(options::OPT_mseparate_stack_seg, options::OPT_mno_separate_stack_seg, false)) + StaticRuntimes.push_back("safestacksepseg"); +else + StaticRuntimes.push_back("safestack"); + } if (SanArgs.needsCfiRt()) StaticRuntimes.push_back("cfi"); if (SanArgs.needsCfiDiagRt()) { Index: lib/Driver/Tools.cpp === --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3319,8 +3319,12 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("ubsan_standalone_cxx"); } - if (SanArgs.needsSafeStackRt()) -StaticRuntimes.push_back("safestack"); + if (SanArgs.needsSafeStackRt()) { +if (Args.hasFlag(options::OPT_mseparate_stack_seg, options::OPT_mno_separate_stack_seg, false)) + StaticRuntimes.push_back("safestacksepseg"); +else + StaticRuntimes.push_back("safestack"); + } if (SanArgs.needsCfiRt()) StaticRuntimes.push_back("cfi"); if (SanArgs.needsCfiDiagRt()) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29655: [X86] Link safestacksepseg runtime
mlemay-intel updated this revision to Diff 87959. mlemay-intel added a comment. Added test. https://reviews.llvm.org/D29655 Files: lib/Driver/Tools.cpp test/Driver/sanitizer-ld.c Index: test/Driver/sanitizer-ld.c === --- test/Driver/sanitizer-ld.c +++ test/Driver/sanitizer-ld.c @@ -420,6 +420,17 @@ // CHECK-SAFESTACK-LINUX: "-lpthread" // CHECK-SAFESTACK-LINUX: "-ldl" +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=safe-stack \ +// RUN: -mseparate-stack-seg --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-SAFESTACKMPX-LINUX %s +// +// CHECK-SAFESTACKMPX-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" +// CHECK-SAFESTACKMPX-LINUX-NOT: "-lc" +// CHECK-SAFESTACKMPX-LINUX: libclang_rt.safestacksepseg-x86_64.a" +// CHECK-SAFESTACKMPX-LINUX: "-lpthread" +// CHECK-SAFESTACKMPX-LINUX: "-ldl" + // RUN: %clang -fsanitize=cfi -fsanitize-stats %s -### -o %t.o 2>&1 \ // RUN: -target x86_64-unknown-linux -fuse-ld=ld \ // RUN: --sysroot=%S/Inputs/basic_linux_tree \ Index: lib/Driver/Tools.cpp === --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3319,8 +3319,12 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("ubsan_standalone_cxx"); } - if (SanArgs.needsSafeStackRt()) -StaticRuntimes.push_back("safestack"); + if (SanArgs.needsSafeStackRt()) { +if (Args.hasFlag(options::OPT_mseparate_stack_seg, options::OPT_mno_separate_stack_seg, false)) + StaticRuntimes.push_back("safestacksepseg"); +else + StaticRuntimes.push_back("safestack"); + } if (SanArgs.needsCfiRt()) StaticRuntimes.push_back("cfi"); if (SanArgs.needsCfiDiagRt()) { Index: test/Driver/sanitizer-ld.c === --- test/Driver/sanitizer-ld.c +++ test/Driver/sanitizer-ld.c @@ -420,6 +420,17 @@ // CHECK-SAFESTACK-LINUX: "-lpthread" // CHECK-SAFESTACK-LINUX: "-ldl" +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=safe-stack \ +// RUN: -mseparate-stack-seg --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-SAFESTACKMPX-LINUX %s +// +// CHECK-SAFESTACKMPX-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" +// CHECK-SAFESTACKMPX-LINUX-NOT: "-lc" +// CHECK-SAFESTACKMPX-LINUX: libclang_rt.safestacksepseg-x86_64.a" +// CHECK-SAFESTACKMPX-LINUX: "-lpthread" +// CHECK-SAFESTACKMPX-LINUX: "-ldl" + // RUN: %clang -fsanitize=cfi -fsanitize-stats %s -### -o %t.o 2>&1 \ // RUN: -target x86_64-unknown-linux -fuse-ld=ld \ // RUN: --sysroot=%S/Inputs/basic_linux_tree \ Index: lib/Driver/Tools.cpp === --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3319,8 +3319,12 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("ubsan_standalone_cxx"); } - if (SanArgs.needsSafeStackRt()) -StaticRuntimes.push_back("safestack"); + if (SanArgs.needsSafeStackRt()) { +if (Args.hasFlag(options::OPT_mseparate_stack_seg, options::OPT_mno_separate_stack_seg, false)) + StaticRuntimes.push_back("safestacksepseg"); +else + StaticRuntimes.push_back("safestack"); + } if (SanArgs.needsCfiRt()) StaticRuntimes.push_back("cfi"); if (SanArgs.needsCfiDiagRt()) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits