re PR bootstrap/63888 (bootstrap failed when configured with -with-build-config=boots...
authorJakub Jelinek <jakub@redhat.com>
Mon, 23 Feb 2015 21:01:57 +0000 (22:01 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 23 Feb 2015 21:01:57 +0000 (22:01 +0100)
PR bootstrap/63888
* asan/asan_globals.cc (RegisterGlobal): Disable detect_odr_violation
support until it is rewritten upstream.

* c-c++-common/asan/pr63888.c: New test.

From-SVN: r220919

gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/asan/pr63888.c [new file with mode: 0644]
libsanitizer/ChangeLog
libsanitizer/asan/asan_globals.cc

index 4c894b6f564e9a96ef3db1899c399534a5ec660f..2c1b9170adf1aa416bbd86a2e46fab7ac5da1613 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR bootstrap/63888
+       * c-c++-common/asan/pr63888.c: New test.
+
 2015-02-23  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR target/65163
diff --git a/gcc/testsuite/c-c++-common/asan/pr63888.c b/gcc/testsuite/c-c++-common/asan/pr63888.c
new file mode 100644 (file)
index 0000000..a88c860
--- /dev/null
@@ -0,0 +1,34 @@
+/* PR bootstrap/63888 */
+/* { dg-do run } */
+
+__attribute__((noinline, noclone)) int
+foo (int x)
+{
+  int v = 0;
+  switch (x)
+    {
+    case 11: v = 67; break;
+    case 12: v = 68; break;
+    case 13: v = 69; break;
+    }
+  return v;
+}
+
+__attribute__((noinline, noclone)) int
+bar (int x)
+{
+  int v = 0;
+  switch (x)
+    {
+    case 18: v = 67; break;
+    case 19: v = 68; break;
+    case 20: v = 69; break;
+    }
+  return v;
+}
+
+int
+main ()
+{
+  return foo (11) - 67 + bar (19) - 68;
+}
index 083fd775aac83629e965fb7527f3c2d87f81912b..b106907fa4671ef1ddecd043fb5d06a1876c25ef 100644 (file)
@@ -1,3 +1,9 @@
+2015-02-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR bootstrap/63888
+       * asan/asan_globals.cc (RegisterGlobal): Disable detect_odr_violation
+       support until it is rewritten upstream.
+
 2015-01-26  Matthias Klose  <doko@ubuntu.com>
 
        * configure.ac: Move AM_ENABLE_MULTILIB before AC_PROG_CC.
index ee2ecdcc95751c38b037d9ab83eec6c5f5745076..4bb88cfa001f9a02d1685f6bbbc69a407d36b15d 100644 (file)
@@ -148,7 +148,9 @@ static void RegisterGlobal(const Global *g) {
   CHECK(AddrIsInMem(g->beg));
   CHECK(AddrIsAlignedByGranularity(g->beg));
   CHECK(AddrIsAlignedByGranularity(g->size_with_redzone));
-  if (flags()->detect_odr_violation) {
+  // This "ODR violation" detection is fundamentally incompatible with
+  // how GCC registers globals.  Disable as useless until rewritten upstream.
+  if (0 && flags()->detect_odr_violation) {
     // Try detecting ODR (One Definition Rule) violation, i.e. the situation
     // where two globals with the same name are defined in different modules.
     if (__asan_region_is_poisoned(g->beg, g->size_with_redzone)) {