When -fsanitize=address is used in CFLAGS to build binutils, I got ../bfd/.libs/libbfd.a(plugin.o): undefined reference to symbol 'dlsym@@GLIBC_2.16' config/plugins.m4 has if test "$plugins" = "yes"; then AC_SEARCH_LIBS([dlopen], [dl]) fi plugins use dlsym, but libasan.so only intercepts dlopen, not dlsym: [hjl@gnu-tools-1 binutils-x32-text]$ nm -D /lib64/libasan.so.4| grep " dl" 0000000000038580 W dlclose U dl_iterate_phdr 000000000004dc50 W dlopen U dlsym U dlvsym [hjl@gnu-tools-1 binutils-x32-text]$ Testing dlopen for libdl leads to false negative when -fsanitize=address is used.
Created attachment 10539 [details] Proposed patch Hi H.J. Adding a check for dlsym to config/plugins.m4 appears to work, but you will need to submit this bug report to the gcc project since they control the contents of the config/ directory. Cheers Nick
(In reply to Nick Clifton from comment #1) > Created attachment 10539 [details] > Proposed patch > > Hi H.J. > > Adding a check for dlsym to config/plugins.m4 appears to work, but you > will need to submit this bug report to the gcc project since they control > the contents of the config/ directory. Done.
Give that there is no response from GCC maintainer for more than 5 months, should we check in my patch?
Hi H.J. > Give that there is no response from GCC maintainer for more than 5 > months, should we check in my patch? Give them a prod first and see if that works. If not, ping me and I will talk to some of the maintainers myself. (I would *really* to avoid having binutils specific patches to the config files). Cheers Nick
The master branch has been updated by H.J. Lu <hjl@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=552d4da4178cc5e8d567ee150462a28d51f08fc0 commit 552d4da4178cc5e8d567ee150462a28d51f08fc0 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Apr 5 15:22:13 2018 -0700 config: Sync with GCC Sync with GCC 2018-04-05 H.J. Lu <hongjiu.lu@intel.com> PR gas/22318 * plugins.m4 (AC_PLUGINS): Use dlsym to check if libdl is needed. 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com> PR target/84148 * cet.m4: Check if target support multi-byte NOPS (SSE).
The master branch has been updated by H.J. Lu <hjl@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3cba8b6c93ab8c573ba4678255df11486de61c54 commit 3cba8b6c93ab8c573ba4678255df11486de61c54 Author: H.J. Lu <hjl.tools@gmail.com> Date: Thu Apr 5 15:31:41 2018 -0700 Use dlsym to check if libdl is needed for plugin config/plugins.m4 has if test "$plugins" = "yes"; then AC_SEARCH_LIBS([dlopen], [dl]) fi Plugin uses dlsym, but libasan.so only intercepts dlopen, not dlsym: [hjl@gnu-tools-1 binutils-text]$ nm -D /lib64/libasan.so.4| grep " dl" 0000000000038580 W dlclose U dl_iterate_phdr 000000000004dc50 W dlopen U dlsym U dlvsym [hjl@gnu-tools-1 binutils-text]$ Testing dlopen for libdl leads to false negative when -fsanitize=address is used. It results in link failure: ../bfd/.libs/libbfd.a(plugin.o): undefined reference to symbol 'dlsym@@GLIBC_2.16' dlsym should be used to check if libdl is needed for plugin. bfd/ PR gas/22318 * configure: Regenerated. binutils/ PR gas/22318 * configure: Regenerated. gas/ PR gas/22318 * configure: Regenerated. gprof/ PR gas/22318 * configure: Regenerated. ld/ PR gas/22318 * configure: Regenerated.
Fixed for 2.31.