[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