#!/bin/sh# Copyright (C) 2002, 2003 Free Software Foundation, Inc.## This file is part of the GNU ISO C++ Library. This library 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, or (at your option)# any later version.## This library is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License along# with this library; see the file COPYING. If not, write to the Free# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,# USA.## As a special exception, you may use this file as part of a free software# library without restriction. Specifically, if other files instantiate# templates or use macros or inline functions from this file, or you compile# this file and link it with other files to produce an executable, this# file does not by itself cause the resulting executable to be covered by# the GNU General Public License. This exception does not however# invalidate any other reasons why the executable file might be covered by# the GNU General Public License.if test ${#} -lt 2 || test $1 = '--help'; thenecho "Usage: extract_symvers shared_lib output_file" 1>&2exit 1filib=$1output=$2# GNU binutils, somewhere after version 2.11.2, requires -W/--wide to avoid# default line truncation. -W is not supported and truncation did not occur# by default before that point.readelf="readelf --symbols"if readelf --help | grep -- --wide > /dev/null; thenreadelf="$readelf --wide"fi# This avoids weird sorting problems later.LC_ALL=Cexport LC_ALLLANG=Cexport LANGtmp=extract.$$${readelf} ${lib} | sed '/\.dynsym/,/^$/p;d' | egrep -v ' (LOCAL|UND) ' |\awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")printf "%s:%s\n", $4, $8;else if ($4 == "OBJECT")printf "%s:%s:%s\n", $4, $3, $8;}' | sort | uniq > $tmp 2>&1# else printf "Huh? What is %s?\n", $8;# I think we'll be doing some more with this file, but for now, dump.mv $tmp $outputexit 0