contrib/gdb-add-index.sh: chmod u+w

Message ID 20170106183710.GA2457@host1.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil Jan. 6, 2017, 6:37 p.m. UTC
  Hi,

in Fedora 24 it still worked, in Fedora 25 it does not - *-debuginfo.rpm
no longer have the .gdb_index accelerating section now.

It happens because:
objcopy: unable to copy file 'foo.debug'; reason: Permission denied

*.debug files in Fedora were always 444 but the time gdb-add-index is run is
still before the *.debug split and in Fedora 24 the files were -rwxr-xr-x
that time while in Fedora 25 they are apparently no longer w.

OK for check-in?


Jan
gdb/ChangeLog
2017-01-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* contrib/gdb-add-index.sh: Use chmod u+w for $file.
  

Comments

Jan Kratochvil Jan. 6, 2017, 7:33 p.m. UTC | #1
On Fri, 06 Jan 2017 19:37:10 +0100, Jan Kratochvil wrote:
> in Fedora 24 it still worked, in Fedora 25 it does not - *-debuginfo.rpm
> no longer have the .gdb_index accelerating section now.
> 
> It happens because:
> objcopy: unable to copy file 'foo.debug'; reason: Permission denied
> 
> *.debug files in Fedora were always 444 but the time gdb-add-index is run is
> still before the *.debug split and in Fedora 24 the files were -rwxr-xr-x
> that time while in Fedora 25 they are apparently no longer w.

The problem was in Fedora /usr/lib/rpm/find-debuginfo.sh script regression.

This GDB contrib/ patch is not required to make Fedora working.

Although I find it as a good improvement anyway so keeping it here submitted.


Jan
  
Pedro Alves Jan. 19, 2017, 3:46 p.m. UTC | #2
On 01/06/2017 07:33 PM, Jan Kratochvil wrote:
> On Fri, 06 Jan 2017 19:37:10 +0100, Jan Kratochvil wrote:
>> in Fedora 24 it still worked, in Fedora 25 it does not - *-debuginfo.rpm
>> no longer have the .gdb_index accelerating section now.
>>
>> It happens because:
>> objcopy: unable to copy file 'foo.debug'; reason: Permission denied
>>
>> *.debug files in Fedora were always 444 but the time gdb-add-index is run is
>> still before the *.debug split and in Fedora 24 the files were -rwxr-xr-x
>> that time while in Fedora 25 they are apparently no longer w.
> 
> The problem was in Fedora /usr/lib/rpm/find-debuginfo.sh script regression.
> 
> This GDB contrib/ patch is not required to make Fedora working.
> 
> Although I find it as a good improvement anyway so keeping it here submitted.

Not sure I agree; looks like a hack to me.  :-/
Since it's not needed, it seems better to me to keep the code simpler.

Thanks,
Pedro Alves
  

Patch

diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
index 0cd4ce3..5a190a0 100755
--- a/gdb/contrib/gdb-add-index.sh
+++ b/gdb/contrib/gdb-add-index.sh
@@ -38,10 +38,11 @@  fi
 dir="${file%/*}"
 test "$dir" = "$file" && dir="."
 index="${file}.gdb-index"
+mode="${file}.mode"
 
-rm -f $index
+rm -f $index $mode
 # Ensure intermediate index file is removed when we exit.
-trap "rm -f $index" 0
+trap "rm -f $index $mode" 0
 
 $GDB --batch -nx -iex 'set auto-load no' \
     -ex "file $file" -ex "save gdb-index $dir" || {
@@ -58,8 +59,13 @@  $GDB --batch -nx -iex 'set auto-load no' \
 status=0
 
 if test -f "$index"; then
+    touch "$mode"
+    chmod --reference="$file" "$mode"
+    # objcopy: unable to copy file 'foo.debug'; reason: Permission denied
+    chmod u+w "$file"
     $OBJCOPY --add-section .gdb_index="$index" \
 	--set-section-flags .gdb_index=readonly "$file" "$file"
+    chmod --reference="$mode" "$file"
     status=$?
 else
     echo "$myname: No index was created for $file" 1>&2