<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62209>62209</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
lld: pointer remains blank in custom section
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
erenon
</td>
</tr>
</table>
<pre>
My application stores a pointer to a string in a custom ELF section. lld leaves the pointer 0, while other linkers set it correctly.
Minimal repro:
```cpp
#include <cstdint>
#include <cstdio>
int main() {
__attribute__((section(".custom"), used, retain))
static constexpr const char* x[] = {
__FILE__
};
const std::uint64_t id = std::uint64_t(&x);
printf("%lu\n", id);
}
```
combined with:
```make
app: app.cpp
$(CXX) $< -o $@ -fuse-ld=$(LD)
test: app
readelf -x .custom $<
```
Test cases:
```shell
$ CXX=$(which clang++) LD=bfd make test -B # ok
$ CXX=$(which clang++) LD=gold make test -B # ok
$ CXX=$(which clang++) LD=lld make test -B # BROKEN
$ CXX=$(which g++) LD=bfd make test -B # ok
$ CXX=$(which g++) LD=gold make test -B # ok
$ CXX=$(which g++) LD=lld make test -B # BROKEN
```
Example good output:
```
$ readelf -x .custom app
Hex dump of section '.custom':
0x00002020 44070000 00000000 D.......
```
Example bad output:
```
$ readelf -x .custom app
Hex dump of section '.custom':
0x000039e8 00000000 00000000 ........
```
Versions:
```
$ clang++ -v
Ubuntu clang version 14.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
$ ld.lld -v
Ubuntu LLD 14.0.0 (compatible with GNU linkers)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVl-Po7YX_TTOyxXIGELgIQ-ZMOxv9ctupbZb7Vtk8E1wx9jINjPZb18ZmGT2z2zb1UpFyBjf6-NzfXxtc-fkWSNuyfqOrKsVH31n7BYtaqNXjRGftu8-AR8GJVvupdHgvLHogMNgpPZowRvg4LyV-gxSA4d2dN70cH-owWEbOsWglACF_BEd-A6vfSlhe3jqpEIwvkMLSuoHtA4cepAeWmMttl59igmtCN29k1r2XIHFwRqS7ubWpczp_LbDsLSwVOpWjQKBpPvWeSG1J-n9q1ZzM06l1B56LjVhBWElkM3dSyvA8ci9t7IZPR6Pk1OxRDz9sHieCsIYYWUIdXQowtein2DL8C5gznMvW2iNdh4vg51r0HbcEraDy6wQkLS6EQEIJOq3h_vjcWkhm4qkV_OM4bwIk5XuRql9nh09SDEBfWWYeOeXQOsGMlip_WkOibC1Gsl6r6f6HqR46RsG_1yM-bc1fSM1CniSvntNt54_4NzEh4Gku7Ds4puYtCQsI6zYf_w4icEyku4hMlMtoxCdRoeREiStZsdDdZ3dufTo_IJ7xbTIBaoTRBdY1FqQvxnH7xgU4Q7da0G4DpV6XmAZBLLPfJ462XbQKq7PhN1NbwmHiqRVcxIQoofAEKK7ICthKZiHf4t0NupLqB8DUl_hLJzufv3l__fvvwf3c6L7KZH9WFSfaz6X9xfeDwrhbIwAM_ph9K8tgRuhbyyuF2svlP_DC4ixH8CcnjdLIGxz3Tg210EA6IVSShllFLKMbsIP0OWBKp6ffxBCw__bCNISixvxayX--wj-QOuk0a8m3433iyUN0SPMz2z-0Izaj7MHPM6IkGQxjWmUjJMxWbKd2zNOO8alyI95Fg1tpKQeL9FZj4tLF2YIeiNQBcfBOHmZTW-181wpFJW0wURYPTpLWN1IPXvUZtQCWq6FFNwjvNnvQc69prP2q16sjmPCaiUbwupz2xJWL8xutFidLPR_Q4WtR_GzcfdXwv2ovAy90h3E4RDIaJ9nX4z-PaebYErEITmjx89EOhyqRRogrGhNP3AvG4XTOQJv3n94vjDcdvrntbAS21SUaclXuE3yIilYluXJqtuu6fpUrpss42VRFGuWp2WyyXhacJZjXiQruWWUpTRLiiRlmyyJc3HiScrStsw3p4TnJKPYc6lipR772NjzSjo34jZnjJYrxRtUbrpQMabxCSZjOC7X1cpuQ5-oGc-OZFRJ590NxUuvcKvCEba7XpFsGEo7aBTXD-GCtaThkmur0apt5_0wJQWrg4DSd2MTtyH76gC-fKLBmj-x9YTVEyVHWD1R_isAAP__5RTPkg">