Displaying 3 results from an estimated 3 matches for "dt_ver".
2020 Nov 12
1
Targeting old glibc
...symbol versioning with llvm-objcopy:
>
> * llvm-objcopy -R .gnu.version -R .gnu.version_r in.so out.so
> * However, llvm-objcopy zeroes out the section content so at runtime glibc ld.so will error
> "unsupported version 0 of Verneed record".
> Thus we need to drop the DT_VERNEED tag as well.
> To achieve this, we can rewrite the DT_VERNEED tag to DT_NULL (0), terminating
> the dynamic table, effectively deleting all DT_VER* tags. DT_RELACOUNT is also
> deleted. Fortunately its absence does not affect correctness.
> This requires binary patching...
2020 Nov 11
2
Targeting old glibc
It did partially fix the issue but there is still one problem:
llvm-objdump -sx gives:
Version References:
required from libpthread.so.0:
0x09691a75 0x00 05 GLIBC_2.2.5
0x09691972 0x00 09 GLIBC_2.3.2
0x09691973 0x00 07 GLIBC_2.3.3
0x06969192 0x00 12 GLIBC_2.12
required from libdl.so.2:
0x09691a75 0x00 21 GLIBC_2.2.5
required from libuuid.so.1:
0x09da27b0 0x00 19
2020 Nov 11
0
Targeting old glibc
...ue
If you want to drop symbol versioning with llvm-objcopy:
* llvm-objcopy -R .gnu.version -R .gnu.version_r in.so out.so
* However, llvm-objcopy zeroes out the section content so at runtime glibc ld.so will error
"unsupported version 0 of Verneed record".
Thus we need to drop the DT_VERNEED tag as well.
To achieve this, we can rewrite the DT_VERNEED tag to DT_NULL (0), terminating
the dynamic table, effectively deleting all DT_VER* tags. DT_RELACOUNT is also
deleted. Fortunately its absence does not affect correctness.
This requires binary patching
...
0x0000000...