diff options
Diffstat (limited to 'unix/ldAix')
-rwxr-xr-x | unix/ldAix | 38 |
1 files changed, 10 insertions, 28 deletions
@@ -10,7 +10,7 @@ # symbols exported by those files, and then invokes "ldCmd" to # perform the real link. # -# RCS: @(#) $Id: ldAix,v 1.4 2002/09/27 01:28:26 hobbs Exp $ +# RCS: @(#) $Id: ldAix,v 1.4.18.1 2010/08/12 00:11:23 hobbs Exp $ # Extract from the arguments the names of all of the object files. @@ -29,41 +29,23 @@ outputFile=`echo $args | sed -e 's/.*-o \([^ ]*\).*/\1/'` # Create the export file from all of the object files, using nm followed # by sed editing. Here are some tricky aspects of this: # -# 1. Nm produces different output under AIX 4.1 than under AIX 3.2.5; -# the following statements handle both versions. -# 2. Use the -g switch to nm instead of -e under 4.1 (this shows just -# externals, not statics; -g isn't available under 3.2.5, though). -# 3. Use the -X32_64 switch to nm on AIX-4+ to handle 32 or 64bit compiles. -# 4. Eliminate lines that end in ":": these are the names of object -# files (relevant in 4.1 only). -# 5. Eliminate entries with the "U" key letter; these are undefined -# symbols (relevant in 4.1 only). -# 6. Eliminate lines that contain the string "0|extern" preceded by space; -# in 3.2.5, these are undefined symbols (address 0). -# 7. Eliminate lines containing the "unamex" symbol. In 3.2.5, these -# are also undefined symbols. -# 8. If a line starts with ".", delete the leading ".", since this will -# just cause confusion later. -# 9. Eliminate everything after the first field in a line, so that we're -# left with just the symbol name. +# - Use the -X32_64 switch to nm to handle 32 or 64bit compiles. +# - Eliminate lines that end in ":": these are the names of object files +# - Eliminate entries with the "U" key letter; these are undefined symbols +# - If a line starts with ".", delete the leading ".", since this will just +# cause confusion later +# - Eliminate everything after the first field in a line, so that we're +# left with just the symbol name -nmopts="-g -C" -osver=`uname -v` -if test $osver -eq 3; then - nmopts="-e" -fi -if test $osver -gt 3; then - nmopts="$nmopts -X32_64" -fi +nmopts="-g -C -h -X32_64" rm -f lib.exp echo "#! $outputFile" >lib.exp -/usr/ccs/bin/nm $nmopts -h $ofiles | sed -e '/:$/d' -e '/ U /d' -e '/[ ]0|extern/d' -e '/unamex/d' -e 's/^\.//' -e 's/[ |].*//' | sort | uniq >>lib.exp +/usr/ccs/bin/nm $nmopts $ofiles | sed -e '/:$/d' -e '/ U /d' -e 's/^\.//' -e 's/[ |].*//' | sort | uniq >>lib.exp # If we're linking a .a file, then link all the objects together into a # single file "shr.o" and then put that into the archive. Otherwise link # the object files directly into the .a file. -outputFile=`echo $args | sed -e 's/.*-o \([^ ]*\).*/\1/'` noDotA=`echo $outputFile | sed -e '/\.a$/d'` echo "noDotA=\"$noDotA\"" if test "$noDotA" = "" ; then |