| Index: openssl/ms/segrenam.pl
|
| ===================================================================
|
| --- openssl/ms/segrenam.pl (revision 105093)
|
| +++ openssl/ms/segrenam.pl (working copy)
|
| @@ -1,65 +0,0 @@
|
| -#!/usr/bin/env perl
|
| -
|
| -my $quiet = 1;
|
| -
|
| -unpack("L",pack("N",1))!=1 || die "only little-endian hosts are supported";
|
| -
|
| -# first argument can specify custom suffix...
|
| -$suffix=(@ARGV[0]=~/^\$/) ? shift(@ARGV) : "\$m";
|
| -#################################################################
|
| -# rename segments in COFF modules according to %map table below #
|
| -%map=( ".text" => "fipstx$suffix", #
|
| - ".text\$"=> "fipstx$suffix", #
|
| - ".rdata"=> "fipsrd$suffix", #
|
| - ".data" => "fipsda$suffix" ); #
|
| -#################################################################
|
| -
|
| -# collect file list
|
| -foreach (@ARGV) {
|
| - if (/\*/) { push(@files,glob($_)); }
|
| - else { push(@files,$_); }
|
| -}
|
| -
|
| -use Fcntl;
|
| -use Fcntl ":seek";
|
| -
|
| -foreach (@files) {
|
| - $file=$_;
|
| - print "processing $file\n" unless $quiet;
|
| -
|
| - sysopen(FD,$file,O_RDWR|O_BINARY) || die "sysopen($file): $!";
|
| -
|
| - # read IMAGE_DOS_HEADER
|
| - sysread(FD,$mz,64)==64 || die "$file is too short";
|
| - @dos_header=unpack("a2C58I",$mz);
|
| - if (@dos_header[0] eq "MZ") {
|
| - $e_lfanew=pop(@dos_header);
|
| - sysseek(FD,$e_lfanew,SEEK_SET) || die "$file is too short";
|
| - sysread(FD,$Magic,4)==4 || die "$file is too short";
|
| - unpack("I",$Magic)==0x4550 || die "$file is not COFF image";
|
| - } elsif ($file =~ /\.obj$/i) {
|
| - # .obj files have no IMAGE_DOS_HEADER
|
| - sysseek(FD,0,SEEK_SET) || die "unable to rewind $file";
|
| - } else { next; }
|
| -
|
| - # read IMAGE_FILE_HEADER
|
| - sysread(FD,$coff,20)==20 || die "$file is too short";
|
| - ($Machine,$NumberOfSections,$TimeDateStamp,
|
| - $PointerToSymbolTable,$NumberOfSysmbols,
|
| - $SizeOfOptionalHeader,$Characteristics)=unpack("SSIIISS",$coff);
|
| -
|
| - # skip over IMAGE_OPTIONAL_HEADER
|
| - sysseek(FD,$SizeOfOptionalHeader,SEEK_CUR) || die "$file is too short";
|
| -
|
| - # traverse IMAGE_SECTION_HEADER table
|
| - for($i=0;$i<$NumberOfSections;$i++) {
|
| - sysread(FD,$SectionHeader,40)==40 || die "$file is too short";
|
| - ($Name,@opaque)=unpack("Z8C*",$SectionHeader);
|
| - if ($map{$Name}) {
|
| - sysseek(FD,-40,SEEK_CUR) || die "unable to rewind $file";
|
| - syswrite(FD,pack("a8C*",$map{$Name},@opaque))==40 || die "syswrite failed: $!";
|
| - printf " %-8s -> %.8s\n",$Name,$map{$Name} unless $quiet;
|
| - }
|
| - }
|
| - close(FD);
|
| -}
|
|
|