File: //bin/rpmelfsym
#!/bin/sh -ef
export LC_ALL=C
rpmelfsym()
{
rpmfile "$1" >files
awk -F'\t' '$NF~/\<ELF .*(dynamically linked|shared object)/{printf"./%s\0",$1}' files >elfs0
[ -s elfs0 ] || return 0
rpmpeek -n "$1" xargs -r0 nm -Do <elfs0 >nm.out
awk '{OFS="\t";sub("^./","",$1);sub(":[0-9a-fA-F]*$","",$1);print}' nm.out
}
# rpmdevtools change: don't use cmdcache
. rpmargs -c rpmelfsym "$@"
: <<'__EOF__'
=head1 NAME
rpmelfsym - list symbols from object files in RPM packages
=head1 SYNOPSIS
B<rpmelfsym> [B<-h>] [B<-a>] [B<-p>] [I<FILE>...] [I<DIR>...]
=head1 DESCRIPTION
B<rpmelfsym> produces three-column output: file name, symbol type,
and symbol name, as determined by nm(1). Only dynamically linked
executable files and shared libraries are processed, and only dynamic
symbols are listed.
When processing a directory, an additional column is prepended to the
output, which is typically RPM file basename.
=head1 OPTIONS
=over
=item B<-a>
Process all Sisyphus packages.
=item B<-p>
When processing a directory, list package names, not file names;
furthermore, enable special treatment of packages with the same name;
that is, process only the one with the latest version.
=item B<-h>
Display this help and exit.
=back
=head1 AUTHOR
Written by Alexey Tourbin <at@altlinux.org>.
=head1 COPYING
Copyright (c) 2005 Alexey Tourbin, ALT Linux Team.
This is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
=head1 SEE ALSO
rpmfile(1),
rpmpeek(1),
nm(1)
=cut
__EOF__