Enhance layoutrom.py to work around a binutils quirk.
authorKevin O'Connor <kevin@koconnor.net>
Fri, 24 Dec 2010 15:23:10 +0000 (10:23 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Fri, 24 Dec 2010 15:23:10 +0000 (10:23 -0500)
Some binutils (report of 2.20.1) don't create dummy symbols for each
section - work around that.

tools/layoutrom.py

index 4109b168509541c3a5bb9db0f75c7af72df1f991..d2ba6742c92cfff524b90580173cb86181cd9daa 100755 (executable)
@@ -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