[PATCH] D17092: [X86] Add -mseparate-stack-seg

2017-02-07 Thread Michael LeMay via Phabricator via cfe-commits
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

2017-02-09 Thread Michael LeMay via Phabricator via cfe-commits
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

2017-02-09 Thread Michael LeMay via Phabricator via cfe-commits
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