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

    <tr>
        <th>Summary</th>
        <td>
            llvm-objdump disassemly does not correctly decode data references in PIC code?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            tools:llvm-objdump,
            new issue
      </td>
    </tr>

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

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

<pre>
    Reproducer:

test.c:
```
int foo = 0;
int get_foo() { return foo; }
void set_foo(int val) { foo = val; }
```

compile and dump:
```
$ clang -fPIC -shared -o libtest.so test.c
$ llvm-objdump -d  libtest.so
...
0000000000001100 <get_foo>:
 1100: 55                            pushq   %rbp
    1101: 48 89 e5 movq    %rsp, %rbp
    1104: 48 8b 05 dd 2e 00 00          movq 0x2edd(%rip), %rax      # 0x3fe8 <__gmon_start__+0x3fe8>
    110b: 8b 00 movl    (%rax), %eax
    110d: 5d popq    %rbp
    110e: c3                            retq
    110f: 90                            nop

0000000000001110 <set_foo>:
    1110: 55                            pushq   %rbp
    1111: 48 89 e5 movq    %rsp, %rbp
    1114: 89 7d fc                      movl %edi, -0x4(%rbp)
    1117: 8b 4d fc                      movl    -0x4(%rbp), %ecx
    111a: 48 8b 05 c7 2e 00 00          movq    0x2ec7(%rip), %rax # 0x3fe8 <__gmon_start__+0x3fe8>
    1121: 89 08 movl    %ecx, (%rax)
    1123: 5d                            popq    %rbp
 1124: c3                            retq
```

Note that this says `__gmon_start__+0x3fe8` at the place where it references the `foo` variable.

GNU objdump gets this right and says:
```
...
   1104: 48 8b 05 dd 2e 00 00    mov    0x2edd(%rip),%rax        # 3fe8 <foo@@Base-0x3c>
...
   111a:       48 8b 05 c7 2e 00 00    mov 0x2ec7(%rip),%rax        # 3fe8 <foo@@Base-0x3c>
...
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVU2P4ygQ_TXkUkqEwZ8HH5LuzWoPO1qttOcIQzlm5BgPkEx6f_0K7KTdk-nemUGWokDVe1S9p0I4p48DYk2yHcmeV-LsO2PrP4X_F3erxqiX-m8crVFniZbwLaHh8-j8Rs5_czp_dKsHD60xQPgzUMJ389YR_aE1hrCSsApIsQOL_myHEEv4DkjxTOj2YrQCdw8NiRfR3zJusGHrnrLkJnQrzWnUPYIYFKjzaXy8IGEpyF4MR1i3f_3xBGvXCYsK1gZ63cSynIG5vCm87y-ntWk-B0BYK1gEErrdbDaEbuliJQmlQPjTrWj-23QNCAeEbyHL4IM1nl33BQAIy2wzhjyAkJqE1LSEsgLM4GQuIShGuZGwp4f49BbfAM1AKWAIlIbvviIIvTJUKkqTWT0SVt3QxHUKI4wDvfIWy1DW4XA8meHgvLD-cCBsNx2FMu_cTeAOxDRw9BNIOWG-EqC4vqao2BkFoxnvhS3LwXAu-Ueds-i_vCa0IaGiHyUMZpx881a-JMrnvpUvwia_rmDykwomUcGygkJBK79PFbsbWql0QFjTazo3uolK3rGKWZH0f7AAHkFmteSrWol4Yy5ZvGcugOgvWbzjr5-2FkvmptByYa14uYi6MNk9hc_W-kiyB9clCUt_2HLfjKFPxiP4TnjwnXbgxIsDktP3ysspxFCEsRcS4WuHFkF7sNiixUGii6ckp8GQOYWLsFo0PW4mvt8__QO3AXVE7yZaq4-dj6MwXOBxFE6T6weGxclcbkI-DIrlnJgmxU3McNWUkpTuhMM1vXI56bignWw0rffMFMi_a6FfZb63YKVqripeiRXWSZHRssh4Va66WlZNwbKmZGlSYZUrnuS8aYRsc9oymaYrXTPKMpqzLCmTnJcbibxlTUkLXgjK25SkFE9C95vwdmyMPa60c2eskzQrsmLViwZ7F19cxrwxfVBn-cwQxmKFbMCvEFPDTva8snUMa85HR1Laa-fdK4fXvsf6zXOltBPO4al_AWXQwWA8SGMtSh-2UBqFoIQXS6_pAcLTGM4I36_Otq8778doIbYnbH_Uvjs3G2lOhO0D3_yzHq35jNITto-XdoTt55IvNfsvAAD__3OXNjY">