Fix false FAIL on gdb.base/stap-probe.exp, due to ICF optimization

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'.
This commit is contained in:
Sergio Durigan Junior 2016-09-11 16:53:09 -04:00
parent 12ec45de8f
commit 2c29df25b7
2 changed files with 13 additions and 1 deletions

View 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

View 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