Make libstdc++'s abi_check more robust against readelf output format. libstdc++-abi/abi_check in the libstdc++-v3 testsuite relies on a fixed number of space separated fields in readelf output. However, the field count for readelf output can vary where the library contains OS or processor specific bindings, or other unknown bindings.
This patch replaces the strings that readelf outputs for such bindings with alternative strings that use underscores in place of space. It preserves the count of fields for such cases, and allows the awk statement that follows to find the desired field correctly with $n. OK for trunk? libstdc++-v3/ChangeLog: 2011-05-20 Simon Baldwin <sim...@google.com> * scripts/extract_symvers.in: Handle processor/OS specific or unknown symbol binding strings from readelf. Index: libstdc++-v3/scripts/extract_symvers.in =================================================================== --- libstdc++-v3/scripts/extract_symvers.in (revision 173951) +++ libstdc++-v3/scripts/extract_symvers.in (working copy) @@ -52,6 +52,9 @@ SunOS) ${readelf} ${lib} |\ sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\ egrep -v ' (LOCAL|UND) ' |\ + sed -e 's/ <processor specific>: / <processor_specific>:_/g' |\ + sed -e 's/ <OS specific>: / <OS_specific>:_/g' |\ + sed -e 's/ <unknown>: / <unknown>:_/g' |\ awk '{ if ($4 == "FUNC" || $4 == "NOTYPE") printf "%s:%s\n", $4, $8; else if ($4 == "OBJECT" || $4 == "TLS")