From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12260 invoked by alias); 8 Jul 2010 15:56:38 -0000 Mailing-List: contact archer-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: List-Id: Received: (qmail 12250 invoked by uid 22791); 8 Jul 2010 15:56:38 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,TW_JC,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org From: Tom Tromey To: Roland McGrath Cc: Panu Matilainen , Project Archer Subject: Re: find-debuginfo.sh change for gdb index References: <20100629232147.C019548255@magilla.sf.frob.com> <20100630181436.518364C33C@magilla.sf.frob.com> <20100630204424.3DCE34C33C@magilla.sf.frob.com> <20100630221406.254AC4C33E@magilla.sf.frob.com> <20100706191407.535874824F@magilla.sf.frob.com> Date: Thu, 08 Jul 2010 15:56:00 -0000 In-Reply-To: <20100706191407.535874824F@magilla.sf.frob.com> (Roland McGrath's message of "Tue, 6 Jul 2010 12:14:07 -0700 (PDT)") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2010-q3/txt/msg00016.txt.bz2 Roland> So one approach would be to replace the debugedit invocation Roland> with the use of another shell script. Here is a patch to just do the work directly in find-debuginfo.sh. This seemed simpler to me, but if you and Panu want a new script, I will do that. It would perhaps have been cleaner to make the gdb command simply rewrite the objfile directly. However, this turns out to be relatively hairy with BFD. So again, for simplicity I just stuck with invoking objcopy directly. I also verified that objcopy will preserve hard links. Tom --- find-debuginfo.sh.orig 2010-06-29 16:19:42.000000000 -0600 +++ find-debuginfo.sh 2010-07-08 09:36:03.000000000 -0600 @@ -96,6 +96,15 @@ chmod 444 "$1" || exit } +# Create a .gdb-index file for $1. +make_gdb_index() +{ + local f="$1" + local d="${f%/*}" + # We don't care if gdb gives an error. + gdb --batch-silent -ex "file $f" -ex "maintenance save-gdb-index $d" > /dev/null 2>&1 +} + # Make a relative symlink to $1 called $3$2 shopt -s extglob link_relative() @@ -207,6 +216,12 @@ $strict && exit 2 fi + make_gdb_index "$f" + if [ -f "${f}.gdb-index" ]; then + objcopy --add-section .gdb_index="${f}.gdb-index" --set-section-flags .gdb_index=readonly "$f" "$f" + rm -f "${f}.gdb-index" + fi + # A binary already copied into /usr/lib/debug doesn't get stripped, # just has its file names collected and adjusted. case "$dn" in