On 04/14/2016 05:07 PM, Pedro Alves wrote:
On 04/14/2016 01:28 PM, Yury Gribov wrote:
Thanks, this sounds as a general problem with visibility enabling. Is
there some (relatively straightforward) way to find all used symbols?
I'm afraid there'll be more than just _rl_*...
I don't know of one, other than a mass rebuild (which is something
that I have never done myself).
A cheap proxy may be to look under /usr/bin /usr/lib etc. for
binaries with DTNEEDED readline, and then compare all of readline's
extern symbols with the binary binaries' set of extern symbols,
check for overlap in symbols that are not prefixed "rl_".
Good idea, here are results for my Ubuntu 14 (I simply look for any
symbol intersections):
# Find all imported symbols in rootfs
for f in $(find /bin /sbin /usr/bin /usr/sbin /usr/lib* /lib*); do if
file $f | grep -q ELF; then readelf -sDW $f | awk '/UND/{print $9}'; fi
; done > all_undefs.lst
sort -u all_undefs.lst > all_undefs_sorted.lst
# Find symbols exported by original readline
readelf -sDW ~/install/readline/lib/libhistory.so | awk '!/UND/{print
$9}' > rl_orig.lst
readelf -sDW ~/install/readline/lib/libreadline.so | awk '!/UND/{print
$9}' >> rl_orig.lst
sort -u rl_orig.lst > rl_orig_sorted.lst
# Find symbols exported by new readline
readelf -sDW ~/install/readline-patched/lib/libhistory.so | awk
'!/UND/{print $9}' > rl_new.lst
readelf -sDW ~/install/readline-patched/lib/libreadline.so | awk
'!/UND/{print $9}' >> rl_new.lst
sort -u rl_new.lst > rl_new_sorted.lst
# Symbols from old readline which may be used somewhere
$ comm -12 all_undefs_sorted.lst rl_orig_sorted.lst
_rl_qsort_string_compare
xmalloc
# Symbols from new readline which may be used somewhere
$ comm -12 all_undefs_sorted.lst rl_new_sorted.lst
_rl_qsort_string_compare
Whoever needs xmalloc should not link to libreadline :)
-Y
_______________________________________________
Bug-readline mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-readline