https://sourceware.org/bugzilla/show_bug.cgi?id=32768
Bug ID: 32768 Summary: tst-gmon failure on x86_64 Product: binutils Version: 2.45 (HEAD) Status: NEW Severity: normal Priority: P2 Component: gprof Assignee: unassigned at sourceware dot org Reporter: amodra at gmail dot com Target Milestone: --- I'm seeing the new gprof test copied from glibc fail on x86_64-linux, depending on compiler and CFLAGS. I haven't fully investigated, but I think the problem is that glibc mcount for x86_64 assumes that functions are at least 16 bytes apart (_gmonparam.log_hashfraction = 4 when running tst-gmon under gdb). The test fails with --- expected +++ actual @@ -1,3 +1,3 @@ -f1 2000 +f1 1000 f2 1000 f3 1 FAIL Running gprof without -C for more detail index % time self children called name 1000 f1 [1] 0.00 0.00 1000/1000 f3 [3] [1] 0.0 0.00 0.00 1000+1000 f1 [1] 1000 f1 [1] ----------------------------------------------- 0.00 0.00 1000/1000 f3 [3] [2] 0.0 0.00 0.00 1000 f2 [2] ----------------------------------------------- 0.00 0.00 1/1 main [9] [3] 0.0 0.00 0.00 1 f3 [3] 0.00 0.00 1000/1000 f1 [1] 0.00 0.00 1000/1000 f2 [2] So gprof thinks f1 makes 1000 self-calls, and it doesn't see the call from f2 to f1. Disassembly of f1 and f2 shows the expected calls are there, it's just that gprof miscategorises the f2->f1 call as f1->f1. 0000000000401196 <f1>: 401196: 55 push %rbp 401197: 48 89 e5 mov %rsp,%rbp 40119a: e8 b1 fe ff ff call 401050 <mcount@plt> 40119f: 5d pop %rbp 4011a0: c3 ret 00000000004011a1 <f2>: 4011a1: 55 push %rbp 4011a2: 48 89 e5 mov %rsp,%rbp 4011a5: e8 a6 fe ff ff call 401050 <mcount@plt> 4011aa: e8 e7 ff ff ff call 401196 <f1> 4011af: 5d pop %rbp 4011b0: c3 ret With any other address mod 16 (same code) I see the test pass, and a proper call graph. index % time self children called name 0.00 0.00 1000/2000 f2 [2] 0.00 0.00 1000/2000 f3 [3] [1] 0.0 0.00 0.00 2000 f1 [1] ----------------------------------------------- 0.00 0.00 1000/1000 f3 [3] [2] 0.0 0.00 0.00 1000 f2 [2] 0.00 0.00 1000/2000 f1 [1] ----------------------------------------------- 0.00 0.00 1/1 main [9] [3] 0.0 0.00 0.00 1 f3 [3] 0.00 0.00 1000/1000 f2 [2] 0.00 0.00 1000/2000 f1 [1] -- You are receiving this mail because: You are on the CC list for the bug.