public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Resurrect gdb-add-index as a contrib script
@ 2013-11-03 22:52 Samuel Bronson
  2013-11-04  2:05 ` Samuel Bronson
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Samuel Bronson @ 2013-11-03 22:52 UTC (permalink / raw)
  To: gdb-patches; +Cc: Samuel Bronson

This includes some changes made in Fedora's gdb packaging[1], and some
slight layout changes to make it look nicer in 80 columns.

[1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d

I'm including a log of relevant previous activity.

(I would just include committishes, but I'm not quite confident that
history won't be rewritten again, invalidating the hashes, plus there
are no relevant tags so the first two parts of git-describe(1) output
wouldn't be any help either.)

commit 97924a976b7d6e1669cf22c5fdf292a53bae6bd0
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Nov 16 17:38:40 2010 +0000

    	* gdb-add-index.sh: Really remove.

 gdb/ChangeLog        |  4 ++++
 gdb/gdb-add-index.sh | 29 -----------------------------
 2 files changed, 4 insertions(+), 29 deletions(-)

commit c29c521f43a1f470355cc76391bb10ec2b73284a
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Aug 10 18:35:53 2010 +0000

    gdb
    	Revert gdb-add-index addition:
    	* Makefile.in (install-only): Don't install gdb-add-index.
    	* gdb-add-index.sh: Remove.
    gdb/doc
    	Revert gdb-add-index addition:
    	* gdb.texinfo (Index Files): Don't document gdb-add-index.

 gdb/ChangeLog       |  6 ++++++
 gdb/Makefile.in     | 11 +----------
 gdb/doc/ChangeLog   |  5 +++++
 gdb/doc/gdb.texinfo | 10 ----------
 4 files changed, 12 insertions(+), 20 deletions(-)

commit c2bbed2a5ab3c5c5950ef192f9be610a11aaa367
Author: Tom Tromey <tromey@redhat.com>
Date:   Fri Jul 30 20:46:34 2010 +0000

    gdb
    	* Makefile.in (install-only): Install gdb-add-index.
    	* gdb-add-index.sh: New file.
    gdb/doc
    	* gdb.texinfo (Index Files): Mention gdb-add-index.

 gdb/ChangeLog        |  5 +++++
 gdb/Makefile.in      | 11 ++++++++++-
 gdb/doc/ChangeLog    |  4 ++++
 gdb/doc/gdb.texinfo  |  9 +++++++++
 gdb/gdb-add-index.sh | 29 +++++++++++++++++++++++++++++
 5 files changed, 57 insertions(+), 1 deletion(-)
---
 gdb/ChangeLog                |  5 +++++
 gdb/contrib/gdb-add-index.sh | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100755 gdb/contrib/gdb-add-index.sh

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2d6a751..8ec9f37 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-03  Samuel Bronson  <naesten@gmail.com>
+
+	Bring back gdb-add-index as a contrib script.
+	* contrib/gdb-add-index.sh: New file.
+
 2013-11-01  Tiago Stürmer Daitx  <tdaitx@linux.vnet.ibm.com>
 
 	* breakpoint.c (create_longjmp_master_breakpoint): Allow libc
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
new file mode 100755
index 0000000..7375fb9
--- /dev/null
+++ b/gdb/contrib/gdb-add-index.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+file="$1"
+dir="${file%/*}"
+
+# We don't care if gdb gives an error.
+gdb -nx -iex 'set auto-load no' --batch-silent \
+    -ex "file $file" \
+    -ex "save gdb-index $dir"
+
+if test -f "${file}.gdb-index"; then
+    objcopy --add-section .gdb_index="${file}.gdb-index" \
+	--set-section-flags .gdb_index=readonly "$file" "$file"
+    rm -f "${file}.gdb-index"
+fi
+
+exit 0
-- 
1.8.4.rc3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] Resurrect gdb-add-index as a contrib script
  2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
@ 2013-11-04  2:05 ` Samuel Bronson
  2013-11-04 21:17   ` Samuel Bronson
  2013-11-07 20:10 ` Jan Kratochvil
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Samuel Bronson @ 2013-11-04  2:05 UTC (permalink / raw)
  To: gdb-patches

Hmm, I notice I (and Jan before me) forgot to update the copyright date.

It also occurs to me that people might want to use fragments of this
in their build systems, so it might be better to use the simple
permissive license from
<http://www.gnu.org/prep/maintain/maintain.html#License-Notices-for-Other-Files>;
would that be okay?

It looks like Doug's changes from
<https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html> rectify
this, so maybe I'll start again with that and then add in Jan's
changes from Fedora ...

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] Resurrect gdb-add-index as a contrib script
  2013-11-04  2:05 ` Samuel Bronson
@ 2013-11-04 21:17   ` Samuel Bronson
  0 siblings, 0 replies; 14+ messages in thread
From: Samuel Bronson @ 2013-11-04 21:17 UTC (permalink / raw)
  To: gdb-patches

On Sun, Nov 3, 2013 at 9:04 PM, Samuel Bronson <naesten@gmail.com> wrote:

Oops. My last email was supposed to say something about "gdb-add-index
foo" not working when foo had no / in it. This is the problem which
the "this" in the next part was meant to refer to.

> It looks like Doug's changes from
> <https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html> rectify
> this, so maybe I'll start again with that and then add in Jan's
> changes from Fedora ...

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] Resurrect gdb-add-index as a contrib script
  2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
  2013-11-04  2:05 ` Samuel Bronson
@ 2013-11-07 20:10 ` Jan Kratochvil
  2013-11-07 21:54   ` Tom Tromey
  2013-11-09  6:23 ` [PATCH v2] " Samuel Bronson
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Jan Kratochvil @ 2013-11-07 20:10 UTC (permalink / raw)
  To: Samuel Bronson; +Cc: gdb-patches, Tom Tromey

On Sun, 03 Nov 2013 23:52:17 +0100, Samuel Bronson wrote:
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,8 @@
> +2013-11-03  Samuel Bronson  <naesten@gmail.com>

Here should be listed also primarily Tom, not sure if you imported some Doug's
changes and also myself.


> --- /dev/null
> +++ b/gdb/contrib/gdb-add-index.sh
> @@ -0,0 +1,33 @@
> +#! /bin/sh
> +
> +# Add a .gdb_index section to a file.
> +
> +# Copyright (C) 2010 Free Software Foundation, Inc.

2010-2013

> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +file="$1"
> +dir="${file%/*}"

You could fix the execution with no / in $1.


> +
> +# We don't care if gdb gives an error.
> +gdb -nx -iex 'set auto-load no' --batch-silent \
> +    -ex "file $file" \
> +    -ex "save gdb-index $dir"
> +
> +if test -f "${file}.gdb-index"; then
> +    objcopy --add-section .gdb_index="${file}.gdb-index" \
> +	--set-section-flags .gdb_index=readonly "$file" "$file"
> +    rm -f "${file}.gdb-index"
> +fi
> +
> +exit 0
> -- 
> 1.8.4.rc3

On Mon, 04 Nov 2013 03:04:48 +0100, Samuel Bronson wrote:
> It also occurs to me that people might want to use fragments of this
> in their build systems, so it might be better to use the simple
> permissive license from
> <http://www.gnu.org/prep/maintain/maintain.html#License-Notices-for-Other-Files>;
> would that be okay?

I do not see a reason to make such exception although it is Tom's script so it
is more up to him.  I find such a possible request can be considered if it
ever appears.


On Mon, 04 Nov 2013 20:33:20 +0100, Samuel Bronson wrote:
> Oops. My last email was supposed to say something about "gdb-add-index
> foo" not working when foo had no / in it. This is the problem which
> the "this" in the next part was meant to refer to.

I did not find too clear from the archives why Tom has removed the script.
I found only
	Re: [patch] gdb-add-index tweaks
	https://sourceware.org/ml/gdb-patches/2010-09/msg00133.html

so IIUC the script still was far from perfect so it was not acceptable for FSF
GDB distribution.  So the newly existing gdb/contrib/ directory seems as an
appropriate place for the script to me.


Thanks,
Jan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] Resurrect gdb-add-index as a contrib script
  2013-11-07 20:10 ` Jan Kratochvil
@ 2013-11-07 21:54   ` Tom Tromey
  0 siblings, 0 replies; 14+ messages in thread
From: Tom Tromey @ 2013-11-07 21:54 UTC (permalink / raw)
  To: Jan Kratochvil; +Cc: Samuel Bronson, gdb-patches

>>>>> "Jan" == Jan Kratochvil <jan.kratochvil@redhat.com> writes:

>> It also occurs to me that people might want to use fragments of this
>> in their build systems, so it might be better to use the simple
>> permissive license from
>> <http://www.gnu.org/prep/maintain/maintain.html#License-Notices-for-Other-Files>;
>> would that be okay?

Jan> I do not see a reason to make such exception although it is Tom's
Jan> script so it is more up to him.  I find such a possible request can
Jan> be considered if it ever appears.

It's fine by me.

Jan> On Mon, 04 Nov 2013 20:33:20 +0100, Samuel Bronson wrote:
>> Oops. My last email was supposed to say something about "gdb-add-index
>> foo" not working when foo had no / in it. This is the problem which
>> the "this" in the next part was meant to refer to.

Jan> I did not find too clear from the archives why Tom has removed the script.
Jan> I found only
Jan> 	Re: [patch] gdb-add-index tweaks
Jan> 	https://sourceware.org/ml/gdb-patches/2010-09/msg00133.html

There's a thread in an earlier month.
Doug had objections to it that I could not address in a timely way.
I don't recall if contrib existed at the time; I agree this is an ok
solution.

Tom

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v2] Resurrect gdb-add-index as a contrib script
  2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
  2013-11-04  2:05 ` Samuel Bronson
  2013-11-07 20:10 ` Jan Kratochvil
@ 2013-11-09  6:23 ` Samuel Bronson
  2013-11-09 18:41 ` [PATCH v3] " Samuel Bronson
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Samuel Bronson @ 2013-11-09  6:23 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Jan Kratochvil, Doug Evans, Samuel Bronson

This includes some changes made in Fedora's gdb packaging[1], some
slight layout changes to make it look nicer in 80 columns, and a line
from Doug's patch[2] to deal with file arguments with no "/".  I'm
still thinking about whether to include the rest of Doug's
gdb-add-index changes: they'd make the script harder to read, but more
robust.

(I've also recast it under the license from (info "(maintain)License
Notices for Other Files") so people aren't scared to use snippets in
their Makefiles or whatever.)

[1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d
[2]: https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html

I'm including a log of relevant previous activity.

(I would just include committishes, but I'm not quite confident that
history won't be rewritten again, invalidating the hashes, plus there
are no relevant tags so the first two parts of git-describe(1) output
wouldn't be any help either.)

commit 97924a976b7d6e1669cf22c5fdf292a53bae6bd0
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Nov 16 17:38:40 2010 +0000

    	* gdb-add-index.sh: Really remove.

 gdb/ChangeLog        |  4 ++++
 gdb/gdb-add-index.sh | 29 -----------------------------
 2 files changed, 4 insertions(+), 29 deletions(-)

commit c29c521f43a1f470355cc76391bb10ec2b73284a
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Aug 10 18:35:53 2010 +0000

    gdb
    	Revert gdb-add-index addition:
    	* Makefile.in (install-only): Don't install gdb-add-index.
    	* gdb-add-index.sh: Remove.
    gdb/doc
    	Revert gdb-add-index addition:
    	* gdb.texinfo (Index Files): Don't document gdb-add-index.

 gdb/ChangeLog       |  6 ++++++
 gdb/Makefile.in     | 11 +----------
 gdb/doc/ChangeLog   |  5 +++++
 gdb/doc/gdb.texinfo | 10 ----------
 4 files changed, 12 insertions(+), 20 deletions(-)

commit c2bbed2a5ab3c5c5950ef192f9be610a11aaa367
Author: Tom Tromey <tromey@redhat.com>
Date:   Fri Jul 30 20:46:34 2010 +0000

    gdb
    	* Makefile.in (install-only): Install gdb-add-index.
    	* gdb-add-index.sh: New file.
    gdb/doc
    	* gdb.texinfo (Index Files): Mention gdb-add-index.

 gdb/ChangeLog        |  5 +++++
 gdb/Makefile.in      | 11 ++++++++++-
 gdb/doc/ChangeLog    |  4 ++++
 gdb/doc/gdb.texinfo  |  9 +++++++++
 gdb/gdb-add-index.sh | 29 +++++++++++++++++++++++++++++
 5 files changed, 57 insertions(+), 1 deletion(-)
---
 gdb/ChangeLog                |  8 ++++++++
 gdb/contrib/gdb-add-index.sh | 27 +++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)
 create mode 100755 gdb/contrib/gdb-add-index.sh

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 79abe3d..def36a3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-08  Tom Tromey  <tromey@redhat.com>
+	    Jan Kratochvil <jan.kratochvil@redhat.com>
+	    Doug Evans <dje@google.com>
+	    Samuel Bronson  <naesten@gmail.com>
+
+	Bring back gdb-add-index as a contrib script.
+	* contrib/gdb-add-index.sh: New file.
+
 2013-11-08  Doug Evans  <dje@google.com>
 
 	* dwarf2read.c (dwarf2_read_debug): Change to unsigned int.
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
new file mode 100755
index 0000000..81b7377
--- /dev/null
+++ b/gdb/contrib/gdb-add-index.sh
@@ -0,0 +1,27 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without any warranty.
+
+file="$1"
+dir="${file%/*}"
+test "$dir" = "$file" && dir="."
+
+# We don't care if gdb gives an error.
+gdb -nx -iex 'set auto-load no' --batch-silent \
+    -ex "file $file" \
+    -ex "save gdb-index $dir"
+
+if test -f "${file}.gdb-index"; then
+    objcopy --add-section .gdb_index="${file}.gdb-index" \
+	--set-section-flags .gdb_index=readonly "$file" "$file"
+    rm -f "${file}.gdb-index"
+fi
+
+exit 0
-- 
1.8.4.rc3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3] Resurrect gdb-add-index as a contrib script
  2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
                   ` (2 preceding siblings ...)
  2013-11-09  6:23 ` [PATCH v2] " Samuel Bronson
@ 2013-11-09 18:41 ` Samuel Bronson
  2013-11-11 19:46   ` Doug Evans
  2013-11-15  3:31 ` [PATCH v4] " Samuel Bronson
  2013-11-15 22:00 ` [PATCH v5] " Samuel Bronson
  5 siblings, 1 reply; 14+ messages in thread
From: Samuel Bronson @ 2013-11-09 18:41 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Jan Kratochvil, Doug Evans

This includes some changes made in Fedora's gdb packaging[1], and
Doug's robustness patch[2] from before it was dropped (with some
slight corrections).

[1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d
[2]: https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html

I'm including a log of relevant previous activity.

(I would just include committishes, but I'm not quite confident that
history won't be rewritten again, invalidating the hashes, plus there
are no relevant tags so the first two parts of git-describe(1) output
wouldn't be any help either.)

commit 97924a976b7d6e1669cf22c5fdf292a53bae6bd0
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Nov 16 17:38:40 2010 +0000

    	* gdb-add-index.sh: Really remove.

 gdb/ChangeLog        |  4 ++++
 gdb/gdb-add-index.sh | 29 -----------------------------
 2 files changed, 4 insertions(+), 29 deletions(-)

commit c29c521f43a1f470355cc76391bb10ec2b73284a
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Aug 10 18:35:53 2010 +0000

    gdb
    	Revert gdb-add-index addition:
    	* Makefile.in (install-only): Don't install gdb-add-index.
    	* gdb-add-index.sh: Remove.
    gdb/doc
    	Revert gdb-add-index addition:
    	* gdb.texinfo (Index Files): Don't document gdb-add-index.

 gdb/ChangeLog       |  6 ++++++
 gdb/Makefile.in     | 11 +----------
 gdb/doc/ChangeLog   |  5 +++++
 gdb/doc/gdb.texinfo | 10 ----------
 4 files changed, 12 insertions(+), 20 deletions(-)

commit c2bbed2a5ab3c5c5950ef192f9be610a11aaa367
Author: Tom Tromey <tromey@redhat.com>
Date:   Fri Jul 30 20:46:34 2010 +0000

    gdb
    	* Makefile.in (install-only): Install gdb-add-index.
    	* gdb-add-index.sh: New file.
    gdb/doc
    	* gdb.texinfo (Index Files): Mention gdb-add-index.

 gdb/ChangeLog        |  5 +++++
 gdb/Makefile.in      | 11 ++++++++++-
 gdb/doc/ChangeLog    |  4 ++++
 gdb/doc/gdb.texinfo  |  9 +++++++++
 gdb/gdb-add-index.sh | 29 +++++++++++++++++++++++++++++
 5 files changed, 57 insertions(+), 1 deletion(-)
---
 gdb/ChangeLog                |  8 ++++++
 gdb/contrib/gdb-add-index.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100755 gdb/contrib/gdb-add-index.sh

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 79abe3d..def36a3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-08  Tom Tromey  <tromey@redhat.com>
+	    Jan Kratochvil <jan.kratochvil@redhat.com>
+	    Doug Evans <dje@google.com>
+	    Samuel Bronson  <naesten@gmail.com>
+
+	Bring back gdb-add-index as a contrib script.
+	* contrib/gdb-add-index.sh: New file.
+
 2013-11-08  Doug Evans  <dje@google.com>
 
 	* dwarf2read.c (dwarf2_read_debug): Change to unsigned int.
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
new file mode 100755
index 0000000..437e8c4
--- /dev/null
+++ b/gdb/contrib/gdb-add-index.sh
@@ -0,0 +1,61 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This program assumes gdb and objcopy are in $PATH.
+
+myname="${0##*/}"
+
+if test $# != 1; then
+    echo "usage: $myname FILE" 1>&2
+    exit 1
+fi
+
+file="$1"
+
+if test ! -r "$file"; then
+    echo "$myname: unable to access: $file" 1>&2
+    exit 1
+fi
+
+dir="${file%/*}"
+test "$dir" = "$file" && dir="."
+index="${file}.gdb-index"
+
+# Ensure intermediate index file is removed when we exit.
+trap "rm -f $index" 0
+
+gdb --batch-silent -nx -iex 'set auto-load no' \
+    -ex "file $file" -ex "save gdb-index $dir" || {
+    # Just in case.
+    status=$?
+    echo "$myname: gdb error generating index" 1>&2
+    exit $status
+}
+
+# In some situations gdb can exit without creating an index.  This is
+# not an error.
+# E.g., if $file is stripped.  This behaviour is akin to stripping an
+# already stripped binary, it's a no-op.
+
+if test -f "$index"; then
+    objcopy --add-section .gdb_index="$index" \
+	--set-section-flags .gdb_index=readonly "$file" "$file"
+    status=$?
+fi
+
+exit $status
-- 
1.8.4.rc3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3] Resurrect gdb-add-index as a contrib script
  2013-11-09 18:41 ` [PATCH v3] " Samuel Bronson
@ 2013-11-11 19:46   ` Doug Evans
  0 siblings, 0 replies; 14+ messages in thread
From: Doug Evans @ 2013-11-11 19:46 UTC (permalink / raw)
  To: Samuel Bronson; +Cc: gdb-patches, Tom Tromey, Jan Kratochvil

On Sun, Nov 3, 2013 at 1:57 PM, Samuel Bronson <naesten@gmail.com> wrote:
> This includes some changes made in Fedora's gdb packaging[1], and
> Doug's robustness patch[2] from before it was dropped (with some
> slight corrections).
>
> [1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d
> [2]: https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html
>
> I'm including a log of relevant previous activity.
>
> (I would just include committishes, but I'm not quite confident that
> history won't be rewritten again, invalidating the hashes, plus there
> are no relevant tags so the first two parts of git-describe(1) output
> wouldn't be any help either.)
>
> [...]
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 79abe3d..def36a3 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,11 @@
> +2013-11-08  Tom Tromey  <tromey@redhat.com>
> +           Jan Kratochvil <jan.kratochvil@redhat.com>
> +           Doug Evans <dje@google.com>
> +           Samuel Bronson  <naesten@gmail.com>
> +
> +       Bring back gdb-add-index as a contrib script.
> +       * contrib/gdb-add-index.sh: New file.
> +
>  2013-11-08  Doug Evans  <dje@google.com>

I think this deserves a NEWS entry.

>         * dwarf2read.c (dwarf2_read_debug): Change to unsigned int.
> diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
> new file mode 100755
> index 0000000..437e8c4
> --- /dev/null
> +++ b/gdb/contrib/gdb-add-index.sh
> @@ -0,0 +1,61 @@
> +#! /bin/sh
> +
> +# Add a .gdb_index section to a file.
> +
> +# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +# This program assumes gdb and objcopy are in $PATH.

In my local copy I added the ability to specify which gdb to use,
useful when using a test gdb.
I never needed to specify objcopy, but for consistency's sake ...

GDB=${GDB:=gdb}
OBJCOPY=${OBJCOPY:=objcopy}

or some such?

> +
> +myname="${0##*/}"
> +
> +if test $# != 1; then
> +    echo "usage: $myname FILE" 1>&2
> +    exit 1
> +fi
> +
> +file="$1"
> +
> +if test ! -r "$file"; then
> +    echo "$myname: unable to access: $file" 1>&2
> +    exit 1
> +fi
> +
> +dir="${file%/*}"
> +test "$dir" = "$file" && dir="."
> +index="${file}.gdb-index"
> +
> +# Ensure intermediate index file is removed when we exit.
> +trap "rm -f $index" 0
> +
> +gdb --batch-silent -nx -iex 'set auto-load no' \
> +    -ex "file $file" -ex "save gdb-index $dir" || {
> +    # Just in case.
> +    status=$?
> +    echo "$myname: gdb error generating index" 1>&2
> +    exit $status
> +}
> +
> +# In some situations gdb can exit without creating an index.  This is
> +# not an error.
> +# E.g., if $file is stripped.  This behaviour is akin to stripping an
> +# already stripped binary, it's a no-op.

status=0

> +
> +if test -f "$index"; then
> +    objcopy --add-section .gdb_index="$index" \
> +       --set-section-flags .gdb_index=readonly "$file" "$file"
> +    status=$?

Another thing I added is a message here that no index was generated,
rather than a "silent failure".
[Not always a "failure", but helpful to know regardless.]

else
    echo "No index generated.  This is not necessarily a bug."
    echo "[E.g., Was $file built in debug mode?]"

I don't have a strong opinion on adding this, but I have found it useful.

> +fi
> +
> +exit $status

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v4] Resurrect gdb-add-index as a contrib script
  2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
                   ` (3 preceding siblings ...)
  2013-11-09 18:41 ` [PATCH v3] " Samuel Bronson
@ 2013-11-15  3:31 ` Samuel Bronson
  2013-11-15 10:50   ` Doug Evans
  2013-11-15 15:27   ` Jan Kratochvil
  2013-11-15 22:00 ` [PATCH v5] " Samuel Bronson
  5 siblings, 2 replies; 14+ messages in thread
From: Samuel Bronson @ 2013-11-15  3:31 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Jan Kratochvil, Doug Evans

This includes changes made in Fedora's gdb packaging[1], Doug's
robustness patch[2] from before gdb-add-index was dropped, some
corrections, and some more changes Doug accumulated in the
meantime[3].

[1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d
[2]: https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html
[3]: https://sourceware.org/ml/gdb-patches/2013-11/msg00297.html

It would be a good idea to mention the existance of this script
in (info "(gdb) Index Files"), but I'm boycotting invariant
sections/cover texts because non-free docs are a PITA, so somebody
else would need to do that.

Summary of previous activity:

97924a9 Actual removal
c29c521 Attempted removal (accidentally left gdb-add-index.sh in place)
c2bbed2 Addition
---
 gdb/ChangeLog                |  9 ++++++
 gdb/NEWS                     |  3 ++
 gdb/contrib/gdb-add-index.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 80 insertions(+)
 create mode 100755 gdb/contrib/gdb-add-index.sh

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index de15879..4ca4b8f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2013-11-14  Tom Tromey  <tromey@redhat.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+	    Doug Evans  <dje@google.com>
+	    Samuel Bronson  <naesten@gmail.com>
+
+	Bring back gdb-add-index as a contrib script.
+	* contrib/gdb-add-index.sh: New file.
+	* NEWS: Note the addition.
+
 2013-11-14  Pedro Alves  <palves@redhat.com>
 
 	* infrun.c (handle_signal_stop): Move STOP_QUIETLY,
diff --git a/gdb/NEWS b/gdb/NEWS
index 3be0073..dd83baa 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -32,6 +32,9 @@
   Before, the former would print "<optimized out>", and the latter
   "*value not available*".
 
+* New script contrib/gdb-add-index.sh for adding .gdb_index sections
+  to binaries.
+
 * Python scripting
 
   ** Frame filters and frame decorators have been added.
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
new file mode 100755
index 0000000..145073a
--- /dev/null
+++ b/gdb/contrib/gdb-add-index.sh
@@ -0,0 +1,68 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This program assumes gdb and objcopy are in $PATH.
+# If not, or you want others, pass the following in the environment
+GDB=${GDB:=gdb}
+OBJCOPY=${OBJCOPY:=objcopy}
+
+myname="${0##*/}"
+
+if test $# != 1; then
+    echo "usage: $myname FILE" 1>&2
+    exit 1
+fi
+
+file="$1"
+
+if test ! -r "$file"; then
+    echo "$myname: unable to access: $file" 1>&2
+    exit 1
+fi
+
+dir="${file%/*}"
+test "$dir" = "$file" && dir="."
+index="${file}.gdb-index"
+
+# Ensure intermediate index file is removed when we exit.
+trap "rm -f $index" 0
+
+$GDB --batch -nx -iex 'set auto-load no' \
+    -ex "file $file" -ex "save gdb-index $dir" || {
+    # Just in case.
+    status=$?
+    echo "$myname: gdb error generating index" 1>&2
+    exit $status
+}
+
+# In some situations gdb can exit without creating an index.  This is
+# not an error.
+# E.g., if $file is stripped.  This behaviour is akin to stripping an
+# already stripped binary, it's a no-op.
+status=0
+
+if test -f "$index"; then
+    $OBJCOPY --add-section .gdb_index="$index" \
+	--set-section-flags .gdb_index=readonly "$file" "$file"
+    status=$?
+else
+    echo "$myname: No index was created." 1>&2
+    echo "[Was there anything to index? Was there already an index?]" 1>&2
+fi
+
+exit $status
-- 
1.8.4.rc3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4] Resurrect gdb-add-index as a contrib script
  2013-11-15  3:31 ` [PATCH v4] " Samuel Bronson
@ 2013-11-15 10:50   ` Doug Evans
  2013-11-15 15:27   ` Jan Kratochvil
  1 sibling, 0 replies; 14+ messages in thread
From: Doug Evans @ 2013-11-15 10:50 UTC (permalink / raw)
  To: Samuel Bronson; +Cc: gdb-patches, Tom Tromey, Jan Kratochvil

On Sun, Nov 3, 2013 at 1:57 PM, Samuel Bronson <naesten@gmail.com> wrote:
> This includes changes made in Fedora's gdb packaging[1], Doug's
> robustness patch[2] from before gdb-add-index was dropped, some
> corrections, and some more changes Doug accumulated in the
> meantime[3].
>
> [1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d
> [2]: https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html
> [3]: https://sourceware.org/ml/gdb-patches/2013-11/msg00297.html
>
> It would be a good idea to mention the existance of this script
> in (info "(gdb) Index Files"), but I'm boycotting invariant
> sections/cover texts because non-free docs are a PITA, so somebody
> else would need to do that.
>
> Summary of previous activity:
>
> 97924a9 Actual removal
> c29c521 Attempted removal (accidentally left gdb-add-index.sh in place)
> c2bbed2 Addition
> ---
>  gdb/ChangeLog                |  9 ++++++
>  gdb/NEWS                     |  3 ++
>  gdb/contrib/gdb-add-index.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 80 insertions(+)
>  create mode 100755 gdb/contrib/gdb-add-index.sh
>
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index de15879..4ca4b8f 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,12 @@
> +2013-11-14  Tom Tromey  <tromey@redhat.com>
> +           Jan Kratochvil  <jan.kratochvil@redhat.com>
> +           Doug Evans  <dje@google.com>
> +           Samuel Bronson  <naesten@gmail.com>
> +
> +       Bring back gdb-add-index as a contrib script.
> +       * contrib/gdb-add-index.sh: New file.
> +       * NEWS: Note the addition.
> +
>  2013-11-14  Pedro Alves  <palves@redhat.com>
>
>         * infrun.c (handle_signal_stop): Move STOP_QUIETLY,
> diff --git a/gdb/NEWS b/gdb/NEWS
> index 3be0073..dd83baa 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -32,6 +32,9 @@
>    Before, the former would print "<optimized out>", and the latter
>    "*value not available*".
>
> +* New script contrib/gdb-add-index.sh for adding .gdb_index sections
> +  to binaries.
> +
>  * Python scripting
>
>    ** Frame filters and frame decorators have been added.
> diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
> new file mode 100755
> index 0000000..145073a
> --- /dev/null
> +++ b/gdb/contrib/gdb-add-index.sh
> @@ -0,0 +1,68 @@
> +#! /bin/sh
> +
> +# Add a .gdb_index section to a file.
> +
> +# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +# This program assumes gdb and objcopy are in $PATH.
> +# If not, or you want others, pass the following in the environment
> +GDB=${GDB:=gdb}
> +OBJCOPY=${OBJCOPY:=objcopy}
> +
> +myname="${0##*/}"
> +
> +if test $# != 1; then
> +    echo "usage: $myname FILE" 1>&2
> +    exit 1
> +fi
> +
> +file="$1"
> +
> +if test ! -r "$file"; then
> +    echo "$myname: unable to access: $file" 1>&2
> +    exit 1
> +fi
> +
> +dir="${file%/*}"
> +test "$dir" = "$file" && dir="."
> +index="${file}.gdb-index"
> +
> +# Ensure intermediate index file is removed when we exit.
> +trap "rm -f $index" 0
> +
> +$GDB --batch -nx -iex 'set auto-load no' \
> +    -ex "file $file" -ex "save gdb-index $dir" || {
> +    # Just in case.
> +    status=$?
> +    echo "$myname: gdb error generating index" 1>&2
> +    exit $status
> +}
> +
> +# In some situations gdb can exit without creating an index.  This is
> +# not an error.
> +# E.g., if $file is stripped.  This behaviour is akin to stripping an
> +# already stripped binary, it's a no-op.
> +status=0
> +
> +if test -f "$index"; then
> +    $OBJCOPY --add-section .gdb_index="$index" \
> +       --set-section-flags .gdb_index=readonly "$file" "$file"
> +    status=$?
> +else
> +    echo "$myname: No index was created." 1>&2
> +    echo "[Was there anything to index? Was there already an index?]" 1>&2
> +fi
> +
> +exit $status

Hi.
The patch is ok with me.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4] Resurrect gdb-add-index as a contrib script
  2013-11-15  3:31 ` [PATCH v4] " Samuel Bronson
  2013-11-15 10:50   ` Doug Evans
@ 2013-11-15 15:27   ` Jan Kratochvil
  2013-11-15 16:38     ` Eli Zaretskii
  1 sibling, 1 reply; 14+ messages in thread
From: Jan Kratochvil @ 2013-11-15 15:27 UTC (permalink / raw)
  To: Samuel Bronson; +Cc: gdb-patches, Tom Tromey, Doug Evans, Eli Zaretskii

On Sun, 03 Nov 2013 22:57:59 +0100, Samuel Bronson wrote:
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -32,6 +32,9 @@
>    Before, the former would print "<optimized out>", and the latter
>    "*value not available*".
>  
> +* New script contrib/gdb-add-index.sh for adding .gdb_index sections
> +  to binaries.
> +
>  * Python scripting
>  
>    ** Frame filters and frame decorators have been added.

Eli usually reviews the NEWS part.


> diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
> new file mode 100755
> index 0000000..145073a
> --- /dev/null
> +++ b/gdb/contrib/gdb-add-index.sh
> @@ -0,0 +1,68 @@
> +#! /bin/sh
> +
> +# Add a .gdb_index section to a file.
> +
> +# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +# This program assumes gdb and objcopy are in $PATH.
> +# If not, or you want others, pass the following in the environment
> +GDB=${GDB:=gdb}
> +OBJCOPY=${OBJCOPY:=objcopy}
> +
> +myname="${0##*/}"
> +
> +if test $# != 1; then
> +    echo "usage: $myname FILE" 1>&2
> +    exit 1
> +fi
> +
> +file="$1"
> +
> +if test ! -r "$file"; then
> +    echo "$myname: unable to access: $file" 1>&2
> +    exit 1
> +fi
> +
> +dir="${file%/*}"
> +test "$dir" = "$file" && dir="."
> +index="${file}.gdb-index"

You should test here $index does not exist; or just rm -f it.
Such existing file may confuse this script.

> +
> +# Ensure intermediate index file is removed when we exit.
> +trap "rm -f $index" 0
> +
> +$GDB --batch -nx -iex 'set auto-load no' \
> +    -ex "file $file" -ex "save gdb-index $dir" || {
> +    # Just in case.
> +    status=$?
> +    echo "$myname: gdb error generating index" 1>&2

You could say also $file here.
For example during rpmbuild gdb-add-index is run but the script does not have
'set -x' so gdb-add-index's errors appear between other messages.


> +    exit $status
> +}
> +
> +# In some situations gdb can exit without creating an index.  This is
> +# not an error.
> +# E.g., if $file is stripped.  This behaviour is akin to stripping an
> +# already stripped binary, it's a no-op.
> +status=0
> +
> +if test -f "$index"; then
> +    $OBJCOPY --add-section .gdb_index="$index" \
> +	--set-section-flags .gdb_index=readonly "$file" "$file"
> +    status=$?
> +else
> +    echo "$myname: No index was created." 1>&2

You could say also $file here.

> +    echo "[Was there anything to index? Was there already an index?]" 1>&2

       echo "$myname: [Was there anything to index? Was there already an index?]" 1>&2

> +fi
> +
> +exit $status
> -- 
> 1.8.4.rc3


OK with these changes from me.


Thanks,
Jan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4] Resurrect gdb-add-index as a contrib script
  2013-11-15 15:27   ` Jan Kratochvil
@ 2013-11-15 16:38     ` Eli Zaretskii
  0 siblings, 0 replies; 14+ messages in thread
From: Eli Zaretskii @ 2013-11-15 16:38 UTC (permalink / raw)
  To: Jan Kratochvil; +Cc: naesten, gdb-patches, tromey, dje

> Date: Fri, 15 Nov 2013 15:54:21 +0100
> From: Jan Kratochvil <jan.kratochvil@redhat.com>
> Cc: gdb-patches@sourceware.org, Tom Tromey <tromey@redhat.com>,
>         Doug Evans <dje@google.com>, Eli Zaretskii <eliz@gnu.org>
> 
> On Sun, 03 Nov 2013 22:57:59 +0100, Samuel Bronson wrote:
> > --- a/gdb/NEWS
> > +++ b/gdb/NEWS
> > @@ -32,6 +32,9 @@
> >    Before, the former would print "<optimized out>", and the latter
> >    "*value not available*".
> >  
> > +* New script contrib/gdb-add-index.sh for adding .gdb_index sections
> > +  to binaries.
> > +
> >  * Python scripting
> >  
> >    ** Frame filters and frame decorators have been added.
> 
> Eli usually reviews the NEWS part.

Oops, sorry for missing that.  This part is OK.

Thanks.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v5] Resurrect gdb-add-index as a contrib script
  2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
                   ` (4 preceding siblings ...)
  2013-11-15  3:31 ` [PATCH v4] " Samuel Bronson
@ 2013-11-15 22:00 ` Samuel Bronson
  2013-11-16 12:12   ` Jan Kratochvil
  5 siblings, 1 reply; 14+ messages in thread
From: Samuel Bronson @ 2013-11-15 22:00 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Jan Kratochvil, Doug Evans

This includes changes made in Fedora's gdb packaging[1], Doug's
robustness patch[2] from before gdb-add-index was dropped, some
corrections, and some more changes Doug accumulated in the
meantime[3].

[1]: http://pkgs.fedoraproject.org/cgit/gdb.git/log/gdb-gdb-add-index-script.patch?id=fe74423b0812bae6d7bb027584e401a2ac37d24d
[2]: https://sourceware.org/ml/gdb-patches/2010-09/msg00130.html
[3]: https://sourceware.org/ml/gdb-patches/2013-11/msg00297.html

It would be a good idea to mention the existance of this script
in (info "(gdb) Index Files"), but I'm boycotting invariant
sections/cover texts because non-free docs are a PITA, so somebody
else would need to do that.

Summary of previous activity:

97924a9 Actual removal
c29c521 Attempted removal (accidentally left gdb-add-index.sh in place)
c2bbed2 Addition
---
 gdb/ChangeLog                |  9 ++++++
 gdb/NEWS                     |  3 ++
 gdb/contrib/gdb-add-index.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 81 insertions(+)
 create mode 100755 gdb/contrib/gdb-add-index.sh

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index de15879..a93fac8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2013-11-15  Tom Tromey  <tromey@redhat.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+	    Doug Evans  <dje@google.com>
+	    Samuel Bronson  <naesten@gmail.com>
+
+	Bring back gdb-add-index as a contrib script.
+	* contrib/gdb-add-index.sh: New file.
+	* NEWS: Note the addition.
+
 2013-11-14  Pedro Alves  <palves@redhat.com>
 
 	* infrun.c (handle_signal_stop): Move STOP_QUIETLY,
diff --git a/gdb/NEWS b/gdb/NEWS
index 3be0073..dd83baa 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -32,6 +32,9 @@
   Before, the former would print "<optimized out>", and the latter
   "*value not available*".
 
+* New script contrib/gdb-add-index.sh for adding .gdb_index sections
+  to binaries.
+
 * Python scripting
 
   ** Frame filters and frame decorators have been added.
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
new file mode 100755
index 0000000..3ef09de
--- /dev/null
+++ b/gdb/contrib/gdb-add-index.sh
@@ -0,0 +1,69 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010, 2012-2013 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This program assumes gdb and objcopy are in $PATH.
+# If not, or you want others, pass the following in the environment
+GDB=${GDB:=gdb}
+OBJCOPY=${OBJCOPY:=objcopy}
+
+myname="${0##*/}"
+
+if test $# != 1; then
+    echo "usage: $myname FILE" 1>&2
+    exit 1
+fi
+
+file="$1"
+
+if test ! -r "$file"; then
+    echo "$myname: unable to access: $file" 1>&2
+    exit 1
+fi
+
+dir="${file%/*}"
+test "$dir" = "$file" && dir="."
+index="${file}.gdb-index"
+
+rm -f $index
+# Ensure intermediate index file is removed when we exit.
+trap "rm -f $index" 0
+
+$GDB --batch -nx -iex 'set auto-load no' \
+    -ex "file $file" -ex "save gdb-index $dir" || {
+    # Just in case.
+    status=$?
+    echo "$myname: gdb error generating index for $file" 1>&2
+    exit $status
+}
+
+# In some situations gdb can exit without creating an index.  This is
+# not an error.
+# E.g., if $file is stripped.  This behaviour is akin to stripping an
+# already stripped binary, it's a no-op.
+status=0
+
+if test -f "$index"; then
+    $OBJCOPY --add-section .gdb_index="$index" \
+	--set-section-flags .gdb_index=readonly "$file" "$file"
+    status=$?
+else
+    echo "$myname: No index was created for $file" 1>&2
+    echo "$myname: [Was there no debuginfo? Was there already an index?]" 1>&2
+fi
+
+exit $status
-- 
1.8.4.rc3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5] Resurrect gdb-add-index as a contrib script
  2013-11-15 22:00 ` [PATCH v5] " Samuel Bronson
@ 2013-11-16 12:12   ` Jan Kratochvil
  0 siblings, 0 replies; 14+ messages in thread
From: Jan Kratochvil @ 2013-11-16 12:12 UTC (permalink / raw)
  To: Samuel Bronson; +Cc: gdb-patches, Tom Tromey, Doug Evans

On Fri, 15 Nov 2013 22:09:33 +0100, Samuel Bronson wrote:
> +2013-11-15  Tom Tromey  <tromey@redhat.com>
> +	    Jan Kratochvil  <jan.kratochvil@redhat.com>
> +	    Doug Evans  <dje@google.com>
> +	    Samuel Bronson  <naesten@gmail.com>
> +
> +	Bring back gdb-add-index as a contrib script.
> +	* contrib/gdb-add-index.sh: New file.
> +	* NEWS: Note the addition.

Yes, I am fine with the patch now.


Thanks,
Jan

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2013-11-16  5:46 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-03 22:52 [PATCH] Resurrect gdb-add-index as a contrib script Samuel Bronson
2013-11-04  2:05 ` Samuel Bronson
2013-11-04 21:17   ` Samuel Bronson
2013-11-07 20:10 ` Jan Kratochvil
2013-11-07 21:54   ` Tom Tromey
2013-11-09  6:23 ` [PATCH v2] " Samuel Bronson
2013-11-09 18:41 ` [PATCH v3] " Samuel Bronson
2013-11-11 19:46   ` Doug Evans
2013-11-15  3:31 ` [PATCH v4] " Samuel Bronson
2013-11-15 10:50   ` Doug Evans
2013-11-15 15:27   ` Jan Kratochvil
2013-11-15 16:38     ` Eli Zaretskii
2013-11-15 22:00 ` [PATCH v5] " Samuel Bronson
2013-11-16 12:12   ` Jan Kratochvil

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).