#!/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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# 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'; then
  echo "Usage:  extract_symvers  shared_lib output_file" 1>&2
  exit 1
fi

lib=$1
output=$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; then
    readelf="$readelf --wide"
fi

# This avoids weird sorting problems later.
LC_ALL=C
export LC_ALL
LANG=C
export LANG

tmp=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 $output

exit 0
