1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#!/usr/bin/env python
#
# link_map_test: this file is part of the elfix package
# Copyright (C) 2011 Anthony G. Basile
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import sys
from link_map import LinkMap
def main():
# Run as root to be able to real all files
uid = os.getuid()
if uid != 0:
print('RUN AS ROOT: cannot read all flags')
sys.exit(0)
link_map = LinkMap()
( object_linkings, object_reverse_linkings, library2soname, soname2library ) = link_map.get_maps()
layout = "{0:<30} => {1:<30}"
#Print out all ELF objects and the NEEDED sonames and full library paths
for abi in object_linkings:
for elf in object_linkings[abi]:
sonames = object_linkings[abi][elf]
print('%s: %s' % (abi,elf))
for soname in sorted(object_linkings[abi][elf]):
try:
print('\t%s' % layout.format(soname, soname2library[(soname,abi)]))
except KeyError:
print('\t%s' % layout.format(soname, '***' ))
print('')
# Print out all ELF objects and the NEEDED sonames and full library paths
for abi in object_linkings:
for soname in object_reverse_linkings[abi]:
try:
print('%s: %s' % (abi, layout.format(soname, soname2library[(soname,abi)])))
except KeyError:
print('%s: %s' % (abi, layout.format(soname, '***' )))
for elf in sorted(object_reverse_linkings[abi][soname]):
print('\t%s' % elf)
print('')
if __name__ == '__main__':
main()
|