symbian-qemu-0.9.1-12/python-2.6.1/Modules/makexp_aix
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #!/bin/sh
       
     2 #
       
     3 # ===========================================================================
       
     4 # FILE:         makexp_aix
       
     5 # TYPE:         standalone executable
       
     6 # SYSTEM:	AIX 3.2.5 and AIX 4
       
     7 #
       
     8 # DESCRIPTION:  This script creates an export list of ALL global symbols
       
     9 #               from a list of object or archive files.
       
    10 #
       
    11 # USAGE:        makexp_aix <OutputFile> "<FirstLine>" <InputFile> ...
       
    12 #
       
    13 #               where:
       
    14 #                      <OutputFile> is the target export list filename.
       
    15 #                      <FirstLine> is the path/file string to be appended
       
    16 #                         after the "#!" symbols in the first line of the
       
    17 #                         export file. Passing "" means deferred resolution.
       
    18 #                      <InputFile> is an object (.o) or an archive file (.a).
       
    19 #
       
    20 # HISTORY:
       
    21 #		3-Apr-1998  -- remove C++ entries of the form Class::method
       
    22 #		Vladimir Marangozov
       
    23 #
       
    24 #               1-Jul-1996  -- added header information
       
    25 #               Vladimir Marangozov
       
    26 #
       
    27 #               28-Jun-1996 -- initial code
       
    28 #               Vladimir Marangozov           (Vladimir.Marangozov@imag.fr)
       
    29 # ==========================================================================
       
    30 
       
    31 # Variables
       
    32 expFileName=$1
       
    33 toAppendStr=$2
       
    34 shift; shift;
       
    35 inputFiles=$*
       
    36 automsg="Generated automatically by makexp_aix"
       
    37 notemsg="NOTE: lists _all_ global symbols defined in the above file(s)."
       
    38 curwdir=`pwd`
       
    39 
       
    40 # Create the export file and setup the header info
       
    41 echo "#!"$toAppendStr > $expFileName
       
    42 echo "*" >> $expFileName
       
    43 echo "* $automsg  (`date -u`)" >> $expFileName
       
    44 echo "*" >> $expFileName
       
    45 echo "* Base Directory: $curwdir" >> $expFileName
       
    46 echo "* Input File(s) : $inputFiles" >> $expFileName
       
    47 echo "*" >> $expFileName
       
    48 echo "* $notemsg" >> $expFileName
       
    49 echo "*" >> $expFileName
       
    50 
       
    51 # Extract the symbol list using 'nm' which produces quite
       
    52 # different output under AIX 4 than under AIX 3.2.5.
       
    53 # The following handles both versions by using a common flagset.
       
    54 # Here are some hidden tricks:
       
    55 # 1. Use /usr/ccs/bin/nm. Relevant to AIX 3.2.5 which has
       
    56 #    another version under /usr/ucb/bin/nm.
       
    57 # 2. Use the -B flag to have a standard BSD representation
       
    58 #    of the symbol list on both AIX 3.2.5 and AIX 4. The "-B"
       
    59 #    flag is missing in the AIX 3.2.5 online usage help of 'nm'.
       
    60 # 3. Use the -x flag to have a hex representation of the symbol
       
    61 #    values. This fills the leading whitespaces on AIX 4,
       
    62 #    thus simplifying the sed statement.
       
    63 # 4. Eliminate all entries except those with either "B", "D"
       
    64 #    or "T" key letters. We are interested only in the global
       
    65 #    (extern) BSS, DATA and TEXT symbols. With the same statement
       
    66 #    we eliminate object member lines relevant to AIX 4.
       
    67 # 5. Eliminate entries containing a dot. We can have a dot only
       
    68 #    as a symbol prefix, but such symbols are undefined externs.
       
    69 # 6. Eliminate everything including the key letter, so that we're
       
    70 #    left with just the symbol name.
       
    71 # 7. Eliminate all entries containing two colons, like Class::method
       
    72 #
       
    73 
       
    74 # Use -X32_64 if it appears to be implemented in this version of 'nm'.
       
    75 NM=/usr/ccs/bin/nm
       
    76 xopt=-X32_64
       
    77 $NM -e $xopt $1 >/dev/null 2>&1 || xopt=""
       
    78 
       
    79 $NM -Bex $xopt $inputFiles					\
       
    80 | sed -e '/ [^BDT] /d' -e '/\./d' -e 's/.* [BDT] //' -e '/::/d'	\
       
    81 | sort | uniq >> $expFileName