This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Use dlsym to check if libdl is needed for plugin


On Wed, Oct 18, 2017 at 5:25 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> 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.
>
> OK for master?
>
> H.J.
> ---
> bfd/
>
>         PR gas/22318
>         * configure: Regenerated.
>
> binutils/
>
>         PR gas/22318
>         * configure: Regenerated.
>
> config/
>
>         * plugins.m4 (AC_PLUGINS): Use dlsym to check if libdl is needed.
>
> gas/
>
>         PR gas/22318
>         * configure: Regenerated.
>
> gprof/
>
>         PR gas/22318
>         * configure: Regenerated.
>
> ld/
>
>         PR gas/22318
>         * configure: Regenerated.


> diff --git a/config/plugins.m4 b/config/plugins.m4
> index 513c690e1b..c6acebc1ca 100644
> --- a/config/plugins.m4
> +++ b/config/plugins.m4
> @@ -16,6 +16,6 @@ AC_DEFUN([AC_PLUGINS],
>      [plugins=$maybe_plugins]
>    )
>    if test "$plugins" = "yes"; then
> -    AC_SEARCH_LIBS([dlopen], [dl])
> +    AC_SEARCH_LIBS([dlsym], [dl])
>    fi
>  ])

If there are no objections, I will check into binutils master branch this week.



-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]