Changeset ff4c4f5 in mainline for tools/genmap.py


Ignore:
Timestamp:
2005-09-05T11:59:09Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c0b45fa
Parents:
342616d
Message:

Symtab now contains variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/genmap.py

    r342616d rff4c4f5  
    99
    1010
    11 objline = re.compile(r'([0-9a-f]+)\s+[lg]\s+F\s+\.text\s+[0-9a-f]+\s+(.*)$')
     11funcline = re.compile(r'([0-9a-f]+)\s+[lg]\s+F\s+\.text\s+([0-9a-f]+)\s+(.*)$')
     12bssline = re.compile(r'([0-9a-f]+)\s+[lg]\s+[a-zA-Z]\s+\.bss\s+([0-9a-f]+)\s+(.*)$')
     13dataline = re.compile(r'([0-9a-f]+)\s+[lg]\s+[a-zA-Z]\s+\.data\s+([0-9a-f]+)\s+(.*)$')
    1214fileexp = re.compile(r'([^\s]+):\s+file format')
    1315def read_obdump(inp):
    14     result = {}
     16    funcs = {}
     17    data = {}
     18    bss ={}
    1519    fname = ''
    1620    for line in inp:
    1721        line = line.strip()
    18         res = objline.match(line)
     22        res = funcline.match(line)
    1923        if res:
    20             result.setdefault(fname,[]).append((int(res.group(1),16),
    21                                                  res.group(2)))
     24            funcs.setdefault(fname,[]).append((int(res.group(1),16),
     25                                               res.group(3)))
     26            continue
     27        res = bssline.match(line)
     28        if res:
     29            start = int(res.group(1),16)
     30            end = int(res.group(2),16)
     31            if end:
     32                bss.setdefault(fname,[]).append((start,res.group(3)))
     33        res = dataline.match(line)
     34        if res:
     35            start = int(res.group(1),16)
     36            end = int(res.group(2),16)
     37            if end:
     38                data.setdefault(fname,[]).append((start,res.group(3)))
    2239        res = fileexp.match(line)
    2340        if res:
    2441            fname = res.group(1)
    2542            continue
    26    
    27     return result
    2843
    29 startfile = re.compile(r'\.text\s+(0x[0-9a-f]+)\s+0x[0-9a-f]+\s+(.*)$')
     44    return {
     45        'text' : funcs,
     46        'bss' : bss,
     47        'data' : data
     48        }
     49
     50startfile = re.compile(r'\.(text|bss|data)\s+(0x[0-9a-f]+)\s+0x[0-9a-f]+\s+(.*)$')
    3051def generate(kmapf, obmapf, out):
    31     obdump = read_obdump(obmapf)
     52    obdump = read_obdump(obmapf)   
    3253
    3354    def sorter(x,y):
     
    3758        line = line.strip()
    3859        res = startfile.match(line)
    39         if res and obdump.has_key(res.group(2)):
    40             offset = int(res.group(1),16)
    41             fname = res.group(2)
    42             symbols = obdump[fname]
     60
     61        if res and obdump[res.group(1)].has_key(res.group(3)):
     62            offset = int(res.group(2),16)
     63            fname = res.group(3)
     64            symbols = obdump[res.group(1)][fname]
    4365            symbols.sort(sorter)
    44             for addr,symbol in symbols:
     66            for addr,symbol in symbols:               
    4567                value = fname + ':' + symbol
    4668                data = struct.pack(symtabfmt,addr+offset,value[:MAXSTRING])
Note: See TracChangeset for help on using the changeset viewer.