summaryrefslogtreecommitdiffstats
path: root/scripts/t/Dpkg_Shlibs/spacesyms-o-map.pl
blob: 5081de48ae1395cdf368b98aaa346fabd6fabc52 (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
#!/usr/bin/perl
#
# spacesyms-o-map.pl INPUT OUTPUT
#
# Copy the object file INPUT to OUTPUT, redefining any symbol in INPUT that
# contains "SPACE" in its name to contain "SPA CE" instead.

use strict;
use warnings;

my ($input, $output) = @ARGV;
my @cmds = ('objcopy');

open my $nm, '-|', 'nm', $input or die "cannot run nm: $!";
while (<$nm>) {
    next if not m/SPACE/;
    chomp;
    my $x = (split / /, $_, 3)[2];
    my $y = $x =~ s/SPACE/SPA CE/r;
    push @cmds, "--redefine-sym=$x=$y";
}
close $nm;

push @cmds, $input, $output;
exec { $cmds[0] } @cmds;