[PATCH 2/2] Build gdb.base/gnu-ifunc.exp with lazy binding
Luis Machado
luis.machado@linaro.org
Mon Jan 25 14:20:56 GMT 2021
The 2/2 info is bogus and should be ignored. I had another patch on the
stack.
On 1/25/21 11:19 AM, Luis Machado wrote:
> The test expects the ifunc resolver to run lazily, at a later stage.
>
> Depending on the distro and toolchain configuration, this is not the
> case. Some configurations use non-lazy binding and thus the ifunc resolver
> resolves all the ifunc references very early in the process startup, before
> main.
>
> Ubuntu is one such case. It has switched its toolchains to pass -Wl,z,now by
> default, since 16.04. This wasn't a problem before 20.04 (at least for
> aarch64) because the toolchains did not support ifunc's.
>
> Forcing lazy binding makes the test run as expected, as opposed to the 80 or
> so failures it showed before the change.
>
> Tested on aarch64-linux/x86_64-linux Ubuntu 20.04.
>
> gdb/testsuite:
>
> YYYY-MM-DD Luis Machado <luis.machado@linaro.org>
>
> * gdb.base/gnu-ifunc.exp (build): Pass -Wl,z,lazy.
> ---
> gdb/testsuite/gdb.base/gnu-ifunc.exp | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/gdb/testsuite/gdb.base/gnu-ifunc.exp b/gdb/testsuite/gdb.base/gnu-ifunc.exp
> index d6064d3c4ac..4ec529130ce 100644
> --- a/gdb/testsuite/gdb.base/gnu-ifunc.exp
> +++ b/gdb/testsuite/gdb.base/gnu-ifunc.exp
> @@ -64,6 +64,10 @@ proc build {resolver_attr resolver_debug final_debug} {
> set lib_opts {}
> set final_opts {}
>
> + # Force lazy binding so we don't resolve everything at process startup.
> + lappend exec_opts "additional_flags=-Wl,-z,lazy"
> + lappend lib_opts "additional_flags=-Wl,-z,lazy"
> +
> if {$resolver_attr} {
> lappend lib_opts "additional_flags=-DIFUNC_RESOLVER_ATTR"
> }
>
More information about the Gdb-patches
mailing list