https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114720

            Bug ID: 114720
           Summary: gcc.misc-tests/gcov-22.c loops
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: gcov-profile
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ro at gcc dot gnu.org
  Target Milestone: ---
            Target: sparc*-sun-solaris2.11, sparc64-unknown-linux-gnu

The new gcc.misc-tests/gcov-22.c test loops on Solaris/SPARC (32 and 64-bit)
and
Linux/sparc64:

WARNING: gcc.misc-tests/gcov-22.c execution test program timed out.
+FAIL: gcc.misc-tests/gcov-22.c execution test
+FAIL: gcc.misc-tests/gcov-22.c gcov: 0 failures in line counts, 0 in branch
percentages, 32 in condition/decision, 0 in return percentages, 0 in
intermediate format
[...]

truss -u reveals the test loops in longjmp like this:

/1@1:   -> libc:longjmp(0x25450, 0x1, 0xffbfe9e8, 0x12b04)
/1@1:   <- libc:longjmp() = 1
/1@1:   -> libc:longjmp(0x25450, 0x1, 0xffbfe9e8, 0x12b04)
/1@1:   <- libc:longjmp() = 1
[...]

I'm astonished the test works anywere, actually.  AFAICS, the issue is this:

  setdest
  -> setjmp returns 0
     setdest returns 2
  -> jump
  -> longjmp make setdest return 1
  -> jump
  -> longjmp ...

continuing ad infinitum.

Reply via email to