Fix false FAIL on gdb.base/stap-probe.exp, due to ICF optimization
authorSergio Durigan Junior <sergiodj@redhat.com>
Sun, 11 Sep 2016 20:53:09 +0000 (16:53 -0400)
committerSergio Durigan Junior <sergiodj@redhat.com>
Mon, 12 Sep 2016 04:19:22 +0000 (00:19 -0400)
GCC 6's ICF optimization pass is making the declaration of 'm1' and
'm2', on gdb.base/stap-probe.c, to be unified.  However, this leads to
only one instance of the probe 'two' being created, which causes a
failure on the testsuite (which expects a multi-location breakpoint to
be inserted on the probe).

This patch fixes this failure by declaring a dummy variable on 'm1',
and using it as an argument to m1's version of probe 'two'.  Since we
do not care about the contents of the functions nor about the
arguments of each probe 'two', this is OK.

gdb/testsuite/ChangeLog:
2016-09-11  Sergio Durigan Junior  <sergiodj@redhat.com>
    Jan Kratochvil  <jan.kratochvil@redhat.com>

* gdb.base/stap-probe.c (m1): New variable 'dummy', necessary to
make m1's definition to be different from m2's.  Use 'dummy' as an
argument for probe 'two'.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/stap-probe.c

index 1ed9a21d3a1d82e0b7f73903a4155f7a1ed7f0f7..c63ea72e5f9696f90275d0b80d775547127142b0 100644 (file)
@@ -1,3 +1,10 @@
+2016-09-11  Sergio Durigan Junior  <sergiodj@redhat.com>
+           Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * gdb.base/stap-probe.c (m1): New variable 'dummy', necessary to
+       make m1's definition to be different from m2's.  Use 'dummy' as an
+       argument for probe 'two'.
+
 2016-09-10  Jon Beniston  <jon@beniston.com>
 
        * lib/mi-support.exp (mi_gdb_target_load): Use target_sim_options
index b728548779336ae8d59919fc356e48a94893e4ba..5a77435df817672a07e68a18ae034d9f7585e67c 100644 (file)
@@ -53,8 +53,13 @@ struct funcs
 static void
 m1 (void)
 {
+  /* m1 and m2 are equivalent, but because of some compiler
+     optimizations we have to make each of them unique.  This is why
+     we have this dummy variable here.  */
+  volatile int dummy = 0;
+
   if (TEST2)
-    STAP_PROBE (test, two);
+    STAP_PROBE1 (test, two, dummy);
 }
 
 static void