| OLD | NEW | 
|   1 #!/bin/bash |   1 #!/bin/bash | 
|   2  |   2  | 
|   3 # Copyright (c) 2009 The Chromium Authors. All rights reserved. |   3 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 
|   4 # Use of this source code is governed by a BSD-style license that can be |   4 # Use of this source code is governed by a BSD-style license that can be | 
|   5 # found in the LICENSE file. |   5 # found in the LICENSE file. | 
|   6  |   6  | 
|   7 # Verifies that no global text symbols are present in a Mach-O file |   7 # Verifies that no global text symbols are present in a Mach-O file | 
|   8 # (MACH_O_FILE) at an address higher than the address of a specific symbol |   8 # (MACH_O_FILE) at an address higher than the address of a specific symbol | 
|   9 # (LAST_SYMBOL).  If LAST_SYMBOL is not found in MACH_O_FILE or if symbols |   9 # (LAST_SYMBOL).  If LAST_SYMBOL is not found in MACH_O_FILE or if symbols | 
|  10 # are present with addresses higher than LAST_SYMBOL's address, an error |  10 # are present with addresses higher than LAST_SYMBOL's address, an error | 
|  11 # message is printed to stderr, and the script will exit nonzero. |  11 # message is printed to stderr, and the script will exit nonzero. | 
|  12 # |  12 # | 
|  13 # This script can be used to verify that all of the global text symbols in |  13 # This script can be used to verify that all of the global text symbols in | 
|  14 # a Mach-O file are accounted for in an order file. |  14 # a Mach-O file are accounted for in an order file. | 
|  15 # |  15 # | 
|  16 # Also check that the file does not depend on either of libstdc++ or libc++. |  16 # Also check that the file does not depend on either of libstdc++ or libc++. | 
|  17  |  17  | 
|  18 if [ ${#} -ne 2 ] ; then |  18 if [ ${#} -ne 2 ] ; then | 
|  19   echo "usage: ${0} LAST_SYMBOL MACH_O_FILE" >& 2 |  19   echo "usage: ${0} LAST_SYMBOL MACH_O_FILE" >& 2 | 
|  20   exit 1 |  20   exit 1 | 
|  21 fi |  21 fi | 
|  22  |  22  | 
|  23 LAST_SYMBOL=${1} |  23 LAST_SYMBOL=${1} | 
|  24 MACH_O_FILE=${2} |  24 MACH_O_FILE=${2} | 
|  25  |  25  | 
|  26 SYMBOLS=$(nm -fgjn -s __TEXT __text "${MACH_O_FILE}") |  26 SYMBOLS=$(nm -gjn "${MACH_O_FILE}" -s __TEXT __text) | 
|  27 if [ ${?} -ne 0 ] || [ -z "${SYMBOLS}" ] ; then |  27 if [ ${?} -ne 0 ] || [ -z "${SYMBOLS}" ] ; then | 
|  28   echo "${0}: no symbols in ${MACH_O_FILE}" >& 2 |  28   echo "${0}: no symbols in ${MACH_O_FILE}" >& 2 | 
|  29   exit 1 |  29   exit 1 | 
|  30 fi |  30 fi | 
|  31  |  31  | 
|  32 LAST_SYMBOLS=$(grep -A 100 -Fx "${LAST_SYMBOL}" <<< "${SYMBOLS}") |  32 LAST_SYMBOLS=$(grep -A 100 -Fx "${LAST_SYMBOL}" <<< "${SYMBOLS}") | 
|  33 if [ ${?} -ne 0 ] || [ -z "${LAST_SYMBOLS}" ] ; then |  33 if [ ${?} -ne 0 ] || [ -z "${LAST_SYMBOLS}" ] ; then | 
|  34   echo "${0}: symbol ${LAST_SYMBOL} not found in ${MACH_O_FILE}" >& 2 |  34   echo "${0}: symbol ${LAST_SYMBOL} not found in ${MACH_O_FILE}" >& 2 | 
|  35   exit 1 |  35   exit 1 | 
|  36 fi |  36 fi | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  50 if grep -Fq libstdc++ <<< ${LIBS} ; then |  50 if grep -Fq libstdc++ <<< ${LIBS} ; then | 
|  51   echo "${0}: ${MACH_O_FILE} depends on libstdc++" >& 2 |  51   echo "${0}: ${MACH_O_FILE} depends on libstdc++" >& 2 | 
|  52   exit 1 |  52   exit 1 | 
|  53 fi |  53 fi | 
|  54 if grep -Fq libc++ <<< ${LIBS} ; then |  54 if grep -Fq libc++ <<< ${LIBS} ; then | 
|  55   echo "${0}: ${MACH_O_FILE} depends on libc++" >& 2 |  55   echo "${0}: ${MACH_O_FILE} depends on libc++" >& 2 | 
|  56   exit 1 |  56   exit 1 | 
|  57 fi |  57 fi | 
|  58  |  58  | 
|  59 exit 0 |  59 exit 0 | 
| OLD | NEW |