public inbox for cygwin-cvs@sourceware.org help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org> To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: drop dllfixdbg script Date: Sat, 5 Feb 2022 09:48:23 +0000 (GMT) [thread overview] Message-ID: <20220205094823.489703858D28@sourceware.org> (raw) 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);
reply other threads:[~2022-02-05 9:48 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220205094823.489703858D28@sourceware.org \ --to=corinna@sourceware.org \ --cc=cygwin-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).