3 ms·
Position Independant Executable (PIE) files are detected as shared libraries because they use the same old identifier as position independent shared libraries.
by jzwinck 7y ago
Position Independant Executable (PIE) files are detected as shared libraries because they use the same old identifier as position independent shared libraries. The ELF folks could have added a new type but did not, leading to some confusion like this: https://bugs.launchpad.net/ubuntu/+source/shared-mime-info/+bug/1639531 https://bugs.launchpad.net/ubuntu/+source/shared-mime-info/+...
PIE is a security feature, which is why it has proliferated on newer systems. See https://access.redhat.com/blogs/766093/posts/1975793 https://access.redhat.com/blogs/766093/posts/1975793
- usr1106 7y agoHere is an example to try and see yourself: $ cat show-addr.c #include <stdio.h> int main(int argc, char **argv) { printf("main() is at %p\n", main); } $ gcc -o show-addr show-addr.c $ file show-addr show-addr: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=60c8b61a7040adccc90934bc79e24342eecae15a, not stripped $ ./show-addr main() is at 0x400526 $ ./show-addr main() is at 0x400526 $ gcc -pie -fPIC -o show-addr.pie show-addr.c $ file show-addr.pie show-addr.pie: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=73ae8065a65aad4b829567b7ce3464fb5d1e3fc3, not stripped $ ./show-addr.pie main() is at 0x55c722ae1750 $ ./show-addr.pie main() is at 0x5649bf97b750 $ (edit: incomplete copy-paste fixed)