aboutsummaryrefslogtreecommitdiffstats
path: root/longbow/src/python/site-packages/longbow/SymbolTable.py
diff options
context:
space:
mode:
Diffstat (limited to 'longbow/src/python/site-packages/longbow/SymbolTable.py')
-rwxr-xr-xlongbow/src/python/site-packages/longbow/SymbolTable.py87
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)