mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-14 07:11:32 +00:00
First version
This commit is contained in:
parent
fda36a0c1a
commit
ac01cf4997
34
src/util/sortobjdump.pl
Executable file
34
src/util/sortobjdump.pl
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
# Sort the symbol table portion of the output of objdump -ht by
|
||||
# section, then by symbol value. Used to enhance the linker maps
|
||||
# produced by "make bin/%.map" by also showing the values of all
|
||||
# non-global symbols.
|
||||
|
||||
my %section_idx = ( "*ABS*" => "." );
|
||||
my %lines;
|
||||
while ( <> ) {
|
||||
if ( /^\s+(\d+)\s+([\.\*]\S+)\s+[0-9a-fA-F]+\s+[0-9a-fA-F]/ ) {
|
||||
# It's a header line containing a section definition; extract the
|
||||
# section index and store it. Also print the header line.
|
||||
print;
|
||||
( my $index, my $section ) = ( $1, $2 );
|
||||
$section_idx{$section} = sprintf ( "%02d", $index );
|
||||
} elsif ( /^([0-9a-fA-F]+)\s.*?\s([\.\*]\S+)\s/ ) {
|
||||
# It's a symbol line - store it in the hash, indexed by
|
||||
# "<section index>.<value>"
|
||||
( my $value, my $section ) = ( $1, $2 );
|
||||
die "Unrecognised section \"$section\"\n"
|
||||
unless exists $section_idx{$section};
|
||||
my $section_idx = $section_idx{$section};
|
||||
$lines{${section_idx}.":".${value}} = $_;
|
||||
} else {
|
||||
# It's a generic header line: just print it.
|
||||
print;
|
||||
}
|
||||
}
|
||||
|
||||
print $lines{$_} foreach sort keys %lines;
|
Loading…
Reference in New Issue
Block a user