public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Cygwin: drop dllfixdbg script
@ 2022-02-05 9:48 Corinna Vinschen
0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2022-02-05 9:48 UTC (permalink / raw)
To: cygwin-cvs
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=c3efc81658bf0423edf6f6e07824f745c08e9ec7
commit c3efc81658bf0423edf6f6e07824f745c08e9ec7
Author: Corinna Vinschen <corinna@vinschen.de>
Date: Sat Feb 5 10:41:35 2022 +0100
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>
Diff:
---
winsup/cygwin/Makefile.am | 26 +++++++++++++--
winsup/cygwin/dllfixdbg | 80 -----------------------------------------------
2 files changed, 24 insertions(+), 82 deletions(-)
diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am
index ff177454a..ad38fb220 100644
--- a/winsup/cygwin/Makefile.am
+++ b/winsup/cygwin/Makefile.am
@@ -639,8 +639,30 @@ $(PRE_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\
$(newlib_build)/libc/libc.a \
-lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map
-$(DBG_DLL_NAME) $(NEW_DLL_NAME): dllfixdbg $(PRE_DLL_NAME)
- $(AM_V_GEN)$(srcdir)/dllfixdbg $(OBJDUMP) $(OBJCOPY) $(PRE_DLL_NAME) $(DBG_DLL_NAME) $(NEW_DLL_NAME) $(V)
+# create cygwin1.dbg file
+$(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
toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
diff --git a/winsup/cygwin/dllfixdbg b/winsup/cygwin/dllfixdbg
deleted file mode 100755
index 669ea92dd..000000000
--- a/winsup/cygwin/dllfixdbg
+++ /dev/null
@@ -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);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-02-05 9:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-05 9:48 [newlib-cygwin] Cygwin: drop dllfixdbg script Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).