From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/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;
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;