diff options
Diffstat (limited to 'longbow/src/python/site-packages/longbow/SymbolTable.py')
-rwxr-xr-x | longbow/src/python/site-packages/longbow/SymbolTable.py | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/longbow/src/python/site-packages/longbow/SymbolTable.py b/longbow/src/python/site-packages/longbow/SymbolTable.py deleted file mode 100755 index 20a909d7..00000000 --- a/longbow/src/python/site-packages/longbow/SymbolTable.py +++ /dev/null @@ -1,87 +0,0 @@ -#! /usr/bin/env python -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# -import os -import subprocess -import re -import sys -import pprint - -def parseLocation(location): - token = location.split("[") - objectFileName = location - - if len(token) > 1: - libraryName = token[0] - objectFileName = token[1].split("]")[0] - else: - libraryName = None - - objectFileName = objectFileName.split(":")[0] - return (libraryName, objectFileName) - -def parseDarwinOutput(lines, accumulator = { }): - - for line in lines: - token = line.split(" ") - fullName = token[0] - - libraryName, objectFileName = parseLocation(token[0]) - name = token[1] - type = token[2] - if fullName in accumulator: - if type == "U": - accumulator[fullName]["undefined"].append({ "name" : name }) - elif type == "T": - accumulator[fullName]["defined"].append({ "name" : name }) - elif type == "D": - accumulator[fullName]["globalData"].append({ "name" : name }) - else: - accumulator[fullName] = { "fullName" : fullName, "libraryName" : libraryName, "objectFileName" : objectFileName, "defined" : [], "undefined" : [], "globalData" : [] } - - return accumulator - -def getDarwinSymbolTable(objectFileName, accumulator = { }): - command = [ "/usr/bin/nm", "-PAog", objectFileName ] - - output = subprocess.check_output(command) - lines = output.splitlines() - return parseDarwinOutput(lines, accumulator) - - -def getSymbolTable(objectFileName, accumulator = { }): - ''' - { - fullName : { "defined" : list of dictionaries, - "undefined": list of dictionaries, - "globalData" : list of dictionaries, - "libraryName" : string - "objectFileName : string - }, - } - ''' - return getDarwinSymbolTable(objectFileName, accumulator) - - -if __name__ == '__main__': - - table = dict() - for f in sys.argv: - table = getSymbolTable(f, table) - - pp = pprint.PrettyPrinter(indent=4, width=132) - - pp.pprint(table) |