Add parsing for indirect functions
Summary: Currently `folly::symbolizer`'s `getDefinitionByAddress` and `getSymbolByName` only parses `STT_OBJECT` and `STT_FUNC`. There are some standar library functions that uses the GNU indirect function feature that would have been missed: ==== For libpthread-2.23.so: ====== Symbol system Addr 119d0 Size 8 is a STT_GNU_IFUNC ====== Symbol siglongjmp Addr 10700 Size 8 is a STT_GNU_IFUNC ====== Symbol longjmp Addr 10700 Size 8 is a STT_GNU_IFUNC ====== Symbol __vfork Addr 10af0 Size 8 is a STT_GNU_IFUNC ====== Symbol vfork Addr 10af0 Size 8 is a STT_GNU_IFUNC ====== Symbol system_ifunc Addr 119d0 Size 8 is a STT_GNU_IFUNC ====== Symbol longjmp_ifunc Addr 10700 Size 8 is a STT_GNU_IFUNC ====== Symbol vfork_ifunc Addr 10af0 Size 8 is a STT_GNU_IFUNC ====== Symbol siglongjmp_ifunc Addr 10700 Size 8 is a STT_GNU_IFUNC ====== Symbol __vfork_ifunc Addr 10af0 Size 8 is a STT_GNU_IFUNC ====== Symbol __vfork@GLIBC_2.2.5 Addr 10af0 Size 8 is a STT_GNU_IFUNC ====== Symbol siglongjmp@GLIBC_2.2.5 Addr 10700 Size 8 is a STT_GNU_IFUNC ====== Symbol vfork@GLIBC_2.2.5 Addr 10af0 Size 8 is a STT_GNU_IFUNC ====== Symbol system@GLIBC_2.2.5 Addr 119d0 Size 8 is a STT_GNU_IFUNC ====== Symbol longjmp@GLIBC_2.2.5 Addr 10700 Size 8 is a STT_GNU_IFUNC ==== For libc-2.23.so: ====== Symbol __gettimeofday Addr c05e0 Size a8 is a STT_GNU_IFUNC ====== Symbol strcpy Addr 8e150 Size 35 is a STT_GNU_IFUNC ====== Symbol wmemcmp Addr afb50 Size 37 is a STT_GNU_IFUNC ====== Symbol strncmp Addr 8eb30 Size 41 is a STT_GNU_IFUNC ====== Symbol stpncpy Addr 929f0 Size 35 is a STT_GNU_IFUNC ====== Symbol __mempcpy_chk Addr 11cec0 Size 68 is a STT_GNU_IFUNC ====== Symbol strncpy Addr 903d0 Size 35 is a STT_GNU_IFUNC ====== Symbol time Addr c0500 Size a8 is a STT_GNU_IFUNC ====== Symbol strpbrk Addr 90700 Size 22 is a STT_GNU_IFUNC ====== Symbol strspn Addr 90a80 Size 22 is a STT_GNU_IFUNC ====== Symbol __stpncpy Addr 929f0 Size 35 is a STT_GNU_IFUNC ====== Symbol __strcasecmp Addr 92a80 Size 54 is a STT_GNU_IFUNC ====== Symbol memset Addr 92230 Size 41 is a STT_GNU_IFUNC ====== Symbol strstr Addr 916b0 Size 21 is a STT_GNU_IFUNC ====== Symbol strcspn Addr 8e270 Size 22 is a STT_GNU_IFUNC ====== Symbol memcmp Addr 91c40 Size 37 is a STT_GNU_IFUNC ====== Symbol mempcpy Addr 923b0 Size 68 is a STT_GNU_IFUNC And 80 more... This Diff adds parsing for `STT_GNU_IFUNC` symbols as well Reviewed By: yfeldblum Differential Revision: D6282727 fbshipit-source-id: 71b7c44831e4ddfdccf1e794cb86e049e14227bc
Showing
Please register or sign in to comment