testsuite, mi: avoid a clang bug in 'user-selected-context-sync.exp'
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 29 Mar 2021 14:00:41 +0000 (16:00 +0200)
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 29 Mar 2021 14:52:03 +0000 (16:52 +0200)
commitaa33ea68330ae5f34013a47b8b7b019a0d1e38e7
tree4efde8e8a817bb2730166d7a3f07a798ed077878
parent25b48839b37e81e854cfdef9bc8592a4195a5e32
testsuite, mi: avoid a clang bug in 'user-selected-context-sync.exp'

This test causes several timeouts for Clang, taking too long time to
finish.  The reason is, for an infinite loop of the form

   while(1); /* suppose this is line 30.  */

Clang generates code that looks like

   0x00000000004004d4 <+4>:     jmp    0x4004d9 <loop+9>
   0x00000000004004d9 <+9>:     jmp    0x4004d9 <loop+9>

So, the real loop is the instruction at address 0x4004d9.  But a
breakpoint that's defined at the loop line (assume line 30 in this
case) is inserted at address 0x4004d4.

  (gdb) break 30
  Breakpoint 1 at 0x4004d4: file test.c, line 30.

Therefore, continuing a thread that was spinning on the loop does not hit
the breakpoint.  The bug is reported at

  https://bugs.llvm.org/show_bug.cgi?id=49614

Tweak the infinite loop to spin on a variable to avoid this bug.  The
test is unrelated to the bug.

gdb/testsuite/ChangeLog:
2021-03-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdb.mi/user-selected-context-sync.exp: Spin on a variable in
the infinite loop to avoid a Clang bug.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/user-selected-context-sync.c