Cygwin: drop dllfixdbg script
On second thought, we don't actually need this script. Express the entire action as sufficiently simple Makefile rule. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
44d8704179
commit
c3efc81658
|
@ -639,8 +639,30 @@ $(PRE_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\
|
||||||
$(newlib_build)/libc/libc.a \
|
$(newlib_build)/libc/libc.a \
|
||||||
-lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map
|
-lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map
|
||||||
|
|
||||||
$(DBG_DLL_NAME) $(NEW_DLL_NAME): dllfixdbg $(PRE_DLL_NAME)
|
# create cygwin1.dbg file
|
||||||
$(AM_V_GEN)$(srcdir)/dllfixdbg $(OBJDUMP) $(OBJCOPY) $(PRE_DLL_NAME) $(DBG_DLL_NAME) $(NEW_DLL_NAME) $(V)
|
$(DBG_DLL_NAME): $(PRE_DLL_NAME)
|
||||||
|
$(AM_V_GEN)$(OBJCOPY) -R .gnu_debuglink_overlay \
|
||||||
|
--add-gnu-debuglink=/dev/null \
|
||||||
|
--only-keep-debug \
|
||||||
|
$(PRE_DLL_NAME) \
|
||||||
|
$(DBG_DLL_NAME)
|
||||||
|
|
||||||
|
# create stripped, temporary DLL, append .gnu_debuglink section, move
|
||||||
|
# .gnu_debuglink section in place of .gnu_debuglink_overlay placeholder
|
||||||
|
# section and store result in new-cygwin1.dll
|
||||||
|
$(NEW_DLL_NAME): $(PRE_DLL_NAME) $(DBG_DLL_NAME)
|
||||||
|
$(AM_V_GEN)TMP_DLL_NAME=$$( mktemp --suffix=.dll ) && \
|
||||||
|
$(OBJCOPY) -g \
|
||||||
|
--keep-section=.gnu_debuglink_overlay \
|
||||||
|
--add-gnu-debuglink=$(DBG_DLL_NAME) \
|
||||||
|
$(PRE_DLL_NAME) $${TMP_DLL_NAME} && \
|
||||||
|
vma=$$( objdump --headers $${TMP_DLL_NAME} | \
|
||||||
|
awk '/.gnu_debuglink_overlay/{print $$4;}' ) && \
|
||||||
|
$(OBJCOPY) -R .gnu_debuglink_overlay \
|
||||||
|
--change-section-address .gnu_debuglink=0x$${vma} \
|
||||||
|
--set-section-flag .gnu_debuglink=contents,readonly,debug,noload \
|
||||||
|
$${TMP_DLL_NAME} $(NEW_DLL_NAME) && \
|
||||||
|
rm $${TMP_DLL_NAME}
|
||||||
|
|
||||||
# cygwin import library
|
# cygwin import library
|
||||||
toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
|
toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
|
||||||
|
|
|
@ -1,80 +0,0 @@
|
||||||
#!/usr/bin/perl
|
|
||||||
#
|
|
||||||
# This file is part of Cygwin.
|
|
||||||
#
|
|
||||||
# This software is a copyrighted work licensed under the terms of the
|
|
||||||
# Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|
||||||
# details.
|
|
||||||
#
|
|
||||||
use integer;
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
sub xit {
|
|
||||||
my ( $execit, $cmdline, $verbose ) = @_;
|
|
||||||
print "+ ", join (' ', @$cmdline), "\n" if ($verbose);
|
|
||||||
if ($execit) {
|
|
||||||
exec @{$cmdline} or die "$0: couldn't exec @{$cmdline}[0] - $!\n";
|
|
||||||
} else {
|
|
||||||
system @{$cmdline} and die "$0: couldn't exec @{$cmdline}[0] - $!\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
my $objdump = shift; # path to objdump
|
|
||||||
my $objcopy = shift; # path to objcopy
|
|
||||||
my $pre_dll = shift; # name of input DLL, usually cygwin0.dll
|
|
||||||
my $dbg_dll = shift; # name of debug section file, usually cygwin1.dbg
|
|
||||||
my $new_dll = shift; # name of stripped DLL, usually new-cygwin1.dll
|
|
||||||
my $verbose = shift; # verbose flag, taken from Makefile's $(V)
|
|
||||||
|
|
||||||
# Create cygwin1.dbg file
|
|
||||||
my @create_dbgfile = ( $objcopy,
|
|
||||||
'-R',
|
|
||||||
'.gnu_debuglink_overlay',
|
|
||||||
'--add-gnu-debuglink=/dev/null',
|
|
||||||
'--only-keep-debug',
|
|
||||||
$pre_dll,
|
|
||||||
$dbg_dll );
|
|
||||||
&xit (0, \@create_dbgfile, $verbose);
|
|
||||||
# Create stripped new-cygwin1.dll
|
|
||||||
# The .gnu_debuglink section gets appended
|
|
||||||
my @create_stripped_dll = ( $objcopy,
|
|
||||||
'-g',
|
|
||||||
'--keep-section=.gnu_debuglink_overlay',
|
|
||||||
'--add-gnu-debuglink=' . $dbg_dll,
|
|
||||||
$pre_dll,
|
|
||||||
$new_dll );
|
|
||||||
&xit (0, \@create_stripped_dll, $verbose);
|
|
||||||
# Fixup .gnu_debuglink section
|
|
||||||
my @fixup_debuglink = ( $objcopy );
|
|
||||||
open (OBJDUMP, '-|', "$objdump --headers $new_dll");
|
|
||||||
my $overlay_vma;
|
|
||||||
while (<OBJDUMP>) {
|
|
||||||
# Fetch line and split
|
|
||||||
my ($idx, $name, $size, $vma, $lma, $fileoff, $algn)
|
|
||||||
= /^\s*(\d+)\s+(\.\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*$/;
|
|
||||||
# skip section flag lines
|
|
||||||
next if !defined ($idx);
|
|
||||||
# If we see a .gnu_debuglink_overlay section, use its section vma
|
|
||||||
# as vma of the .gnu_debuglink section.
|
|
||||||
if ($name eq '.gnu_debuglink_overlay') {
|
|
||||||
$overlay_vma = $vma;
|
|
||||||
# remove .gnu_debuglink_overlay section
|
|
||||||
push (@fixup_debuglink,
|
|
||||||
'-R',
|
|
||||||
'.gnu_debuglink_overlay');
|
|
||||||
# move .gnu_debuglink to .gnu_debuglink_overlay section slot
|
|
||||||
push (@fixup_debuglink,
|
|
||||||
'--change-section-address',
|
|
||||||
'.gnu_debuglink=0x' . $overlay_vma);
|
|
||||||
# fix up section flags
|
|
||||||
push (@fixup_debuglink,
|
|
||||||
'--set-section-flag',
|
|
||||||
'.gnu_debuglink=contents,readonly,debug,noload');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close OBJDUMP;
|
|
||||||
# If we didn't find a .gnu_debuglink_overlay section, bail out
|
|
||||||
defined ($overlay_vma) or die "$0: no .gnu_debuglink_overlay section!\n";
|
|
||||||
|
|
||||||
push (@fixup_debuglink, $new_dll);
|
|
||||||
&xit (1, \@fixup_debuglink, $verbose);
|
|
Loading…
Reference in New Issue