Index: tools/genmap.py
===================================================================
--- tools/genmap.py	(revision ae9624e37a2173ed74af117513e1012d6450bb20)
+++ tools/genmap.py	(revision c0b45fa002ea4e833eba5897c34d7a0eb5699c1e)
@@ -9,25 +9,46 @@
 
 
-objline = re.compile(r'([0-9a-f]+)\s+[lg]\s+F\s+\.text\s+[0-9a-f]+\s+(.*)$')
+funcline = re.compile(r'([0-9a-f]+)\s+[lg]\s+F\s+\.text\s+([0-9a-f]+)\s+(.*)$')
+bssline = re.compile(r'([0-9a-f]+)\s+[lg]\s+[a-zA-Z]\s+\.bss\s+([0-9a-f]+)\s+(.*)$')
+dataline = re.compile(r'([0-9a-f]+)\s+[lg]\s+[a-zA-Z]\s+\.data\s+([0-9a-f]+)\s+(.*)$')
 fileexp = re.compile(r'([^\s]+):\s+file format')
 def read_obdump(inp):
-    result = {}
+    funcs = {}
+    data = {}
+    bss ={}
     fname = ''
     for line in inp:
         line = line.strip()
-        res = objline.match(line)
+        res = funcline.match(line)
         if res:
-            result.setdefault(fname,[]).append((int(res.group(1),16),
-                                                 res.group(2)))
+            funcs.setdefault(fname,[]).append((int(res.group(1),16),
+                                               res.group(3)))
+            continue
+        res = bssline.match(line)
+        if res:
+            start = int(res.group(1),16)
+            end = int(res.group(2),16)
+            if end:
+                bss.setdefault(fname,[]).append((start,res.group(3)))
+        res = dataline.match(line)
+        if res:
+            start = int(res.group(1),16)
+            end = int(res.group(2),16)
+            if end:
+                data.setdefault(fname,[]).append((start,res.group(3)))
         res = fileexp.match(line)
         if res:
             fname = res.group(1)
             continue
-    
-    return result
 
-startfile = re.compile(r'\.text\s+(0x[0-9a-f]+)\s+0x[0-9a-f]+\s+(.*)$')
+    return {
+        'text' : funcs,
+        'bss' : bss,
+        'data' : data
+        }
+
+startfile = re.compile(r'\.(text|bss|data)\s+(0x[0-9a-f]+)\s+0x[0-9a-f]+\s+(.*)$')
 def generate(kmapf, obmapf, out):
-    obdump = read_obdump(obmapf)
+    obdump = read_obdump(obmapf)    
 
     def sorter(x,y):
@@ -37,10 +58,11 @@
         line = line.strip()
         res = startfile.match(line)
-        if res and obdump.has_key(res.group(2)):
-            offset = int(res.group(1),16)
-            fname = res.group(2)
-            symbols = obdump[fname]
+
+        if res and obdump[res.group(1)].has_key(res.group(3)):
+            offset = int(res.group(2),16)
+            fname = res.group(3)
+            symbols = obdump[res.group(1)][fname]
             symbols.sort(sorter)
-            for addr,symbol in symbols:
+            for addr,symbol in symbols:                
                 value = fname + ':' + symbol
                 data = struct.pack(symtabfmt,addr+offset,value[:MAXSTRING])
