|
Revision b536209dfb7bd50c37061735fe10d2c19a97d26d, 1.3 KB
(checked in by H. Peter Anvin <hpa@…>, 4 years ago)
|
|
Move files out of root into core, dos, and utils
Move source files out of the root directory; the root is a mess and
has become virtually unmaintainable. The Syslinux core now lives in
core/; the Linux and generic utilities has moved into utils/, and
copybs.com has moved into dos/; it had to go somewhere, and it seemed
as good a place as any.
|
-
Property mode set to
100755
|
| Line | |
|---|
| 1 | #!/usr/bin/perl |
|---|
| 2 | # |
|---|
| 3 | # Take a NASM list and map file and make the offsets in the list file |
|---|
| 4 | # absolute. This makes debugging a lot easier. |
|---|
| 5 | # |
|---|
| 6 | # Usage: |
|---|
| 7 | # |
|---|
| 8 | # lstadjust.pl listfile mapfile outfile |
|---|
| 9 | # |
|---|
| 10 | |
|---|
| 11 | ($listfile, $mapfile, $outfile) = @ARGV; |
|---|
| 12 | |
|---|
| 13 | open(LST, "< $listfile\0") |
|---|
| 14 | or die "$0: cannot open: $listfile: $!\n"; |
|---|
| 15 | open(MAP, "< $mapfile\0") |
|---|
| 16 | or die "$0: cannot open: $mapfile: $!\n"; |
|---|
| 17 | open(OUT, "> $outfile\0") |
|---|
| 18 | or die "$0: cannot create: $outfile: $!\n"; |
|---|
| 19 | |
|---|
| 20 | %vstart = (); |
|---|
| 21 | |
|---|
| 22 | while (defined($line = <MAP>)) { |
|---|
| 23 | if ($line =~ /^\s*([0-9]+)\s+(\S+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+2\*\*([0-9]+)/i) { |
|---|
| 24 | $vstart{$2} = hex $4; |
|---|
| 25 | } |
|---|
| 26 | } |
|---|
| 27 | close(MAP); |
|---|
| 28 | |
|---|
| 29 | $offset = 0; |
|---|
| 30 | @ostack = (); |
|---|
| 31 | |
|---|
| 32 | while (defined($line = <LST>)) { |
|---|
| 33 | chomp $line; |
|---|
| 34 | |
|---|
| 35 | $source = substr($line, 40); |
|---|
| 36 | if ($source =~ /^([^;]*);/) { |
|---|
| 37 | $source = $1; |
|---|
| 38 | } |
|---|
| 39 | |
|---|
| 40 | ($label, $op, $arg, $tail) = split(/\s+/, $source); |
|---|
| 41 | if ($op =~ /^(|\[)section$/i) { |
|---|
| 42 | $offset = $vstart{$arg}; |
|---|
| 43 | } elsif ($op =~ /^(absolute|\[absolute)$/i) { |
|---|
| 44 | $offset = 0; |
|---|
| 45 | } elsif ($op =~ /^struc$/i) { |
|---|
| 46 | push(@ostack, $offset); |
|---|
| 47 | $offset = 0; |
|---|
| 48 | } elsif ($op =~ /^endstruc$/i) { |
|---|
| 49 | $offset = pop(@ostack); |
|---|
| 50 | } |
|---|
| 51 | |
|---|
| 52 | if ($line =~ /^(\s*[0-9]+ )([0-9A-F]{8})(\s.*)$/) { |
|---|
| 53 | $line = sprintf("%s%08X%s", $1, (hex $2)+$offset, $3); |
|---|
| 54 | } |
|---|
| 55 | |
|---|
| 56 | print OUT $line, "\n"; |
|---|
| 57 | } |
|---|