aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware/rombios/makesym.perl
blob: df604e2ae4caacc3295c5e82b5e91e3f24c5a673 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/perl
#
# $Id: makesym.perl,v 1.1 2002/11/24 22:45:40 bdenney Exp $
#
# Read output file from as86 (e.g. rombios.txt) and write out a symbol 
# table suitable for the Bochs debugger.
#

$WHERE_BEFORE_SYM_TABLE = 0;
$WHERE_IN_SYM_TABLE = 1;
$WHERE_AFTER_SYM_TABLE = 2;

$where = $WHERE_BEFORE_SYM_TABLE;
while (<STDIN>) {
  chop;
  if ($where == WHERE_BEFORE_SYM_TABLE && /^Symbols:/) {
    $where = $WHERE_IN_SYM_TABLE;
  } elsif ($where == $WHERE_IN_SYM_TABLE && /^$/) {
    $where = $WHERE_AFTER_SYM_TABLE;
  }
  if ($where == $WHERE_IN_SYM_TABLE) {
    @F = split (/\s+/);
    ($name[0], $junk, $addr[0], $junk, $name[1], $junk, $addr[1]) = @F;
    foreach $col (0,1) {
      next if length $addr[$col] < 1;
      $addr[$col] =~ tr/A-Z/a-z/;
      $addr[$col] = "000f" . $addr[$col];
      print "$addr[$col] $name[$col]\n";
    }
  }
}