# Handle various things related to ELF images
#
-from __future__ import print_function
-
from collections import namedtuple, OrderedDict
-import command
import io
import os
import re
import struct
import tempfile
-import tools
-import tout
+from patman import command
+from patman import tools
+from patman import tout
ELF_TOOLS = True
try:
key: Name of symbol
value: Hex value of symbol
"""
- stdout = command.Output('objdump', '-t', fname, raise_on_error=False)
+ stdout = tools.Run('objdump', '-t', fname)
lines = stdout.splitlines()
if patterns:
re_syms = re.compile('|'.join(patterns))
parts = rest[7:].split()
section, size = parts[:2]
if len(parts) > 2:
- name = parts[2]
+ name = parts[2] if parts[2] != '.hidden' else parts[3]
syms[name] = Symbol(section, int(value, 16), int(size,16),
flags[1] == 'w')
(msg, sym.size))
# Look up the symbol in our entry tables.
- value = section.LookupSymbol(name, sym.weak, msg)
- if value is not None:
- value += base.address
- else:
+ value = section.LookupSymbol(name, sym.weak, msg, base.address)
+ if value is None:
value = -1
pack_string = pack_string.lower()
value_bytes = struct.pack(pack_string, value)
.empty : {
*(.empty)
} :empty
+ /DISCARD/ : {
+ *(.note.gnu.property)
+ }
.note : {
*(.comment)
} :note