mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-31 22:10:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| # This script takes rpm package files, finds *.so.N files in them,
 | |
| # and runs objdump --dynamic-syms on them.  The arguments are rpm file
 | |
| # names.  For each rpm, it creates an output file with the name
 | |
| # "NAME-VERSION-RELEASE.ARCH.dynsym", the variable parts being extracted
 | |
| # from the rpm's headers (not its file name).  Each file contains the
 | |
| # collected objdump output for all the *.so.N files in the corresponding rpm.
 | |
| # This can be processed with abilist.awk or sent to someone who will do that.
 | |
| # This does not do a lot of error-checking, so you should always watch stderr
 | |
| # and sanity-check the resulting output files.
 | |
| 
 | |
| RPM=${RPM:-rpm}
 | |
| RPM2CPIO=${RPM2CPIO:-rpm2cpio}
 | |
| CPIO=${CPIO:-cpio}
 | |
| OBJDUMP=${OBJDUMP:-objdump}
 | |
| 
 | |
| unpackdir=/tmp/rpm2dynsym$$
 | |
| trap 'rm -rf $unpackdir' 0 1 2 15
 | |
| 
 | |
| for rpm; do
 | |
|   name=`$RPM -qp $rpm --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n'`
 | |
|   mkdir $unpackdir || exit
 | |
|   $RPM2CPIO "$rpm" | {
 | |
|     cd $unpackdir
 | |
|     $CPIO -i -d --no-absolute-filenames -uv '*.so.*' '*.so' 2>&1 |
 | |
|     while read file b; do
 | |
|       test x"$b" = x || break
 | |
|       case "$file" in
 | |
|       *.so.[0-9]*) $OBJDUMP --dynamic-syms $file ;;
 | |
|       esac
 | |
|     done
 | |
|   } > $name.dynsym
 | |
|   echo wrote $name.dynsym for $rpm
 | |
|   rm -rf $unpackdir
 | |
| done
 |