summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2010-12-24 10:23:10 -0500
committerKevin O'Connor <kevin@koconnor.net>2010-12-24 10:23:10 -0500
commit67863beb71e67433b38a20ba408e490ae173f324 (patch)
tree77d752009403009da74c417db66af889090b6249
parent4c90a20f86a09ffdcecd9685f11f3fe2674b8b77 (diff)
Enhance layoutrom.py to work around a binutils quirk.
Some binutils (report of 2.20.1) don't create dummy symbols for each section - work around that.
-rwxr-xr-xtools/layoutrom.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/layoutrom.py b/tools/layoutrom.py
index 4109b16..d2ba674 100755
--- a/tools/layoutrom.py
+++ b/tools/layoutrom.py
@@ -532,7 +532,16 @@ def parseObjDump(file, fileid):
reloc.offset = int(off, 16)
reloc.type = type
reloc.symbolname = symbolname
- reloc.symbol = symbols[symbolname]
+ reloc.symbol = symbols.get(symbolname)
+ if reloc.symbol is None:
+ # Some binutils (2.20.1) give section name instead
+ # of a symbol - create a dummy symbol.
+ reloc.symbol = symbol = Symbol()
+ symbol.size = 0
+ symbol.offset = 0
+ symbol.name = symbolname
+ symbol.section = sectionmap.get(symbolname)
+ symbols[symbolname] = symbol
relocsection.relocs.append(reloc)
except ValueError:
pass