<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56550>56550</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang Generates DWARF Info That Valgrind Can't Read
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          gavinhoward
      </td>
    </tr>
</table>

<pre>
    I ran the following:

```
$ git clone https://github.com/gavinhoward/bc.git
$ cd bc
$ # -g enables debug info.
$ # -O0 sets the optimization level.
$ # -v enables a Valgrind build.
$ CC=clang ./configure -g -O0 -v
$ make
$ printf 'halt\n' | \
    valgrind --error-exitcode=100 --leak-check=full --show-leak-kinds=all \
    --errors-for-leak-kinds=all --num-callers=500 --child-silent-after-fork=yes \
    bin/bc tests/bc/scripts/screen.bc
```

I get the following output:

```
==26137== Memcheck, a memory error detector
==26137== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==26137== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
==26137== Command: bin/bc tests/bc/decimal.txt
==26137==
### unhandled dwarf2 abbrev form code 0x25
### unhandled dwarf2 abbrev form code 0x25
### unhandled dwarf2 abbrev form code 0x25
### unhandled dwarf2 abbrev form code 0x25
### unhandled dwarf2 abbrev form code 0x25
### unhandled dwarf2 abbrev form code 0x25
==26137== Valgrind: debuginfo reader: ensure_valid failed:
==26137== Valgrind:   during call to ML_(img_get)
==26137== Valgrind:   request for range [4771378, +4) exceeds
==26137== Valgrind:   valid image size of 646808 for image:
==26137== Valgrind:   "<snip>/bin/bc"
==26137==
==26137== Valgrind: debuginfo reader: Possibly corrupted debuginfo file.
==26137== Valgrind: I can't recover.  Giving up.  Sorry.
==26137==
```

This is with Clang 14.0.6 and Valgrind 3.19.0.

I have confirmed that GCC 11.3.0 works. This is why I believe this is a Clang issue, not a Valgrind issue. I could be wrong, though.

I have also confirmed that `-ggdb` does *not* work with Clang.

The `uname -a` for the system:

```
Linux <hostname> 5.15.52-gentoo-x86_64 #1 SMP PREEMPT Sun Jul 10 21:15:48 MDT 2022 x86_64 <cpu>
```

This Gentoo system is up-to-date.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztVsly4zYQ_Rrq0kUWF1HLQYcZyuNyyk5cY88kNxdIgiRikFAAULbm6_MAWfI29jj3qFgU1tfb626Wqt6tzkizgWzHqVFSqjsxtEH2KYjXQXx4z-KHZz9Np9QKS5VUA6fO2o1xF9IveLDejWVUqd5N2FYMnbpjusasrCLsPkJUNZXV4zRIMwpb4gMrJTdU83JsSQyNil6c-SMmw63xGquNFb34waxQA0m-5fLl6e0RkdF3JlstBsgdhayfnCyKIFtXkg0tRdC0UkMj2lFzp5CTF24fz_bslj_ONsCzDUTNOyZtkBcDhhTMC8J4f4zw2x4khyHXWumQ3wtbqZpDbhJDQCg5uw2rjle3WGpGKbFm4Lv9xi3uwslrhvVnwA94JmwA-upoGA5jH1YYcu3Wci-q6mB9aITkgw1ZY7l2t53cHdz0DL4Ug48cWW6s8UO8TKXFxk8x4nyIjnF8QRT_PqOW2-f8IjXazWh_QbNsjSedJdl8P6QL3u89lBaIZs97pXfk7QddLK-s0m9dLdRmp0XbWYRqUQTpktI4TsM0TlOPhtCc_v6NTi_PEb_aLZU7-m2UAqlxxR2DCUawI71eCfhmnF0HhoVZlCyj2OOei_L7yV9B9pk01-NAd0gRCjt4Q1N1VMsx_W3l-x5IcNcbAal5JXooZ-_tGxgHxmb7h8ahA6LkNdUwrkmJlaXmW6dUT46YFN-n-f-3fnLrVXgOQXfx8WXLxRLBZjXXbo0PBrXkBjVA1NQw5F39yPx30YjqUTteuRQmq-ji_Ab8FX17g5wCiz8Govk_I-jiGYda33Ik-efpfI7zC0f1IP08dSnB7yvOUTw-BLo3B7QDnBE_UIsbmk1ni3jh5fiND5sZIA2zwgxiE2QnjtUPNHfr7xL6PwfjUhkjSrlDWLUeN9bF_HisQWzezPCnyGeIiKv0FsiV2nIdEZ2KrQvVuMH4CuC7t5DeqZXXnTCEx9eIwjekZBrF0cxXkmP_2leX6HmV7diWk29duodVtmOWTouCkiTKUIruUOJNREcJ3Q5WlFwKdE0c3q-yB6HCmJE7agzKPm2cfj1y5qtRoo9yutMK3ws4aTs1tt3PdGLSqJeKwe6wbesS_1Qr13bST5CFt1f0iQOi5_7h7uo4sB7NmbnbjmyuuZidsbx_v6Wci2G8JzCtU8Y6DLCN8ijJozwNW7RDpcL7xexm5j8eErq6uKTLrycnF5fXdIXSjYZASUxpAjFJjtd0QRfra3JthA4Xs6LajI7GvwjzqZf3oLdz_rgJrQprZnk0qVdZvcyWbGKFlXy1jwpucI1tQ-s_P339QmeOs9fOnccAFQ-0_ArCT0YtV-98nkm5PfyFG63-RgPF1IfYdZZ8lufxpFvFsyafxryZz-tyntdxkybTJXImn1VVvpyyiWSgkVmhpiBdB353YE8a5OuJWDnnxPMkT2bZMo2jZr5geVotl0kyi_NmGgC7R1GMnB6R0u1Er7xKSEqDTSnQ6B43GdK3HTj34oDPRhBPr558ak68-JVX_19FPTQa">