<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">