[PATCH] libdwfl: test dwflsyms on ET_EXEC with minisymtab

Mark Wielaard mjw at redhat.com
Wed Mar 12 11:29:03 UTC 2014


On Tue, 2014-03-11 at 18:29 -0700, Josh Stone wrote:
> This adds testfilebaxmin, an ET_EXEC binary with .gnu_debugdata that
> doesn't match the load address of the main file.  A previous bug made
> this trigger a kernel heuristic that forces the module to act like
> ET_DYN, which makes things like dwfl_module_relocate_address report
> relative addresses rather than proper absolute addresses.
> 
> For example, before the fix dwflsyms would print:
> 
>     deregister_tm_clones (0) 0x400430, rel: 0x430 (.text)
> 
> Now it properly prints:
> 
>     deregister_tm_clones (0) 0x400430, rel: 0x400430 (.text)
> 
> These new test additions confirm that it's fixed.
> 
> Signed-off-by: Josh Stone <jistone at redhat.com>
>
> +2014-03-11  Josh Stone  <jistone at redhat.com>
> +
> +	* testfilebaxmin.bz2: New testfile.
> +	* Makefile.am (EXTRA_DIST): Add testfilebaxmin.bz2.
> +	* run-readelf-s.sh: Test testfilebaxmin.
> +	* run-dwflsyms.sh: Likewise.

Thanks for this. Looks good to me.

> +# Make sure that find_aux_sym doesn't corrupt relocations, avoiding a kernel
> +# heuristic that forces ET_EXEC->ET_DYN.  NB: ld.gold doesn't seem to produce
> +# the mismatched load addrs between the main file and the mini_debuginfo, so
> +# this is forcing ld.bfd.
> +#
> +# gcc -g -o bax foo.c bar.c -fuse-ld=bfd
> +# eu-strip --remove-comment -f bax.debug bax
> +# nm -D bax --format=posix --defined-only | awk '{ print $1 }' | sort > dynsyms
> +# nm bax.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }'

Note for future. To help ppc64 ELFv1 abi (which uses function
descriptors), this can also be expressed as:

# nm "$debuginfo" --format=sysv --defined-only | awk -F \| '{ if ($4 ~ "FUNC") print $1 }' | sort > funcsyms

There is no difference in this case, it only matters for arches that use
function descriptors, which aren't easily spotted in the posix format.

Cheers,

Mark



More information about the elfutils-devel mailing list