This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch 07/15] PIE: PIEs +x mode - PR binutils/10802 workaround
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 9 Nov 2009 21:59:12 +0100
- Subject: [patch 07/15] PIE: PIEs +x mode - PR binutils/10802 workaround
Hi,
PIE testcase depends on that gdb_gnu_strip_debug-processed files are still
executable even for the PIE binaries. They were not.
It is a bug already fixed in CVS HEAD of binutils but the system building GDB
CVS HEAD may have older binutils installed so it is being workarounded.
Thanks,
Jan
gdb/testsuite/
Workaround PR binutils/10802.
* lib/gdb.exp (gdb_gnu_strip_debug): Preserve the file attributes
(twice).
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -2780,6 +2780,11 @@ proc gdb_gnu_strip_debug { dest args } {
return 1
}
+ # Workaround PR binutils/10802:
+ # Preserve the 'x' bit also for PIEs (Position Independent Executables).
+ set perm [file attributes ${dest} -permissions]
+ file attributes ${stripped_file} -permissions $perm
+
# Get rid of everything but the debug info, and store result in debug_file
# This will be in the .debug subdirectory, see above.
set result [catch "exec $strip_to_file_program --only-keep-debug ${dest} -o ${debug_file}" output]
@@ -2816,7 +2821,12 @@ proc gdb_gnu_strip_debug { dest args } {
return 1
}
- return 0
+ # Workaround PR binutils/10802:
+ # Preserve the 'x' bit also for PIEs (Position Independent Executables).
+ set perm [file attributes ${stripped_file} -permissions]
+ file attributes ${dest} -permissions $perm
+
+ return 0
}
# Test the output of GDB_COMMAND matches the pattern obtained