- Fix resolving of variables at locations lists in prelinked libs (BZ
466901), bugreported by Michal Babej.
- Never terminate `bt full' on a problem of variable resolving (for BZ
    466901).
			
			
This commit is contained in:
		
							parent
							
								
									bb9a89cb8a
								
							
						
					
					
						commit
						74f680bfbd
					
				
							
								
								
									
										484
									
								
								gdb-6.8-bz466901-backtrace-full-prelinked.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										484
									
								
								gdb-6.8-bz466901-backtrace-full-prelinked.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,484 @@ | |||||||
|  | Fix resolving of variables at locations lists in prelinked libs (BZ 466901). | ||||||
|  | 
 | ||||||
|  | --- ./gdb/dwarf2loc.c-orig	2008-11-06 22:17:45.000000000 +0100
 | ||||||
|  | +++ ./gdb/dwarf2loc.c	2008-11-06 22:18:01.000000000 +0100
 | ||||||
|  | @@ -57,9 +57,12 @@ find_location_expression (struct dwarf2_
 | ||||||
|  |    int length; | ||||||
|  |    unsigned int addr_size = gdbarch_addr_bit (current_gdbarch) / TARGET_CHAR_BIT; | ||||||
|  |    CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1)); | ||||||
|  | +  struct objfile *objfile = (baton->objfile->separate_debug_objfile
 | ||||||
|  | +                             ? baton->objfile->separate_debug_objfile
 | ||||||
|  | +			     : baton->objfile);
 | ||||||
|  |    /* Adjust base_address for relocatable objects.  */ | ||||||
|  | -  CORE_ADDR base_offset = ANOFFSET (baton->objfile->section_offsets,
 | ||||||
|  | -				    SECT_OFF_TEXT (baton->objfile));
 | ||||||
|  | +  CORE_ADDR base_offset = ANOFFSET (objfile->section_offsets,
 | ||||||
|  | +				    SECT_OFF_TEXT (objfile));
 | ||||||
|  |    CORE_ADDR base_address = baton->base_address + base_offset; | ||||||
|  |   | ||||||
|  |    loc_ptr = baton->data; | ||||||
|  | --- /dev/null	2008-11-06 15:02:28.406299691 +0100
 | ||||||
|  | +++ gdb-6.8/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp	2008-11-06 23:11:02.000000000 +0100
 | ||||||
|  | @@ -0,0 +1,102 @@
 | ||||||
|  | +# Copyright 2006 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 2 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, write to the Free Software
 | ||||||
|  | +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 | ||||||
|  | +
 | ||||||
|  | +# Minimal DWARF-2 unit test
 | ||||||
|  | +
 | ||||||
|  | +# This test can only be run on i386/x86_64 targets which support DWARF-2.
 | ||||||
|  | +# For now pick a sampling of likely targets.
 | ||||||
|  | +if {(![istarget *-*-linux*]
 | ||||||
|  | +     && ![istarget *-*-gnu*]
 | ||||||
|  | +     && ![istarget *-*-elf*]
 | ||||||
|  | +     && ![istarget *-*-openbsd*])
 | ||||||
|  | +    || (![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"])} {
 | ||||||
|  | +    return 0  
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +set testfile "dw2-loclist-prelinked"
 | ||||||
|  | +set srcfuncfile ${testfile}-func.S
 | ||||||
|  | +set binsharedfuncfile ${objdir}/${subdir}/${testfile}.so
 | ||||||
|  | +set srcmainfile ${testfile}-main.c
 | ||||||
|  | +set binfile ${objdir}/${subdir}/${testfile}
 | ||||||
|  | +
 | ||||||
|  | +remote_exec build "rm -f ${binfile}"
 | ||||||
|  | +
 | ||||||
|  | +# get the value of gcc_compiled
 | ||||||
|  | +if [get_compiler_info ${binfile}] {
 | ||||||
|  | +    return -1
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +# This test can only be run on gcc as we use additional_flags=FIXME
 | ||||||
|  | +if {$gcc_compiled == 0} {
 | ||||||
|  | +    return 0
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +if  { [gdb_compile_shlib "${srcdir}/${subdir}/${srcfuncfile}" "${binsharedfuncfile}" {debug additional_flags=-m32}] != "" } {
 | ||||||
|  | +    untested "Couldn't compile test library"
 | ||||||
|  | +    return -1
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +# The new separate debug info file will be stored in the .debug subdirectory.
 | ||||||
|  | +
 | ||||||
|  | +if [gdb_gnu_strip_debug ${binsharedfuncfile}] {
 | ||||||
|  | +    # check that you have a recent version of strip and objcopy installed
 | ||||||
|  | +    unsupported "cannot produce separate debug info files"
 | ||||||
|  | +    return -1
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +if {[catch "system \"/usr/sbin/prelink -qNR --no-exec-shield ${binsharedfuncfile}\""] != 0} {
 | ||||||
|  | +    # Maybe we don't have prelink.
 | ||||||
|  | +    return -1
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +if  { [gdb_compile "${srcdir}/${subdir}/${srcmainfile}" \
 | ||||||
|  | +		   "${binfile}" executable [list debug additional_flags=-m32 shlib=${binsharedfuncfile}]] != "" } {
 | ||||||
|  | +    return -1
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +gdb_exit
 | ||||||
|  | +gdb_start
 | ||||||
|  | +gdb_reinitialize_dir $srcdir/$subdir
 | ||||||
|  | +gdb_load ${binfile}
 | ||||||
|  | +
 | ||||||
|  | +gdb_run_cmd
 | ||||||
|  | +
 | ||||||
|  | +gdb_test "" "Program received signal SIGABRT, Aborted..*" "Enter abort()"
 | ||||||
|  | +
 | ||||||
|  | +# Incorrect:
 | ||||||
|  | +# #0  0x00110430 in __kernel_vsyscall ()
 | ||||||
|  | +# No symbol table info available.
 | ||||||
|  | +# #1  0x003d44c0 in raise () from /lib/libc.so.6
 | ||||||
|  | +# No symbol table info available.
 | ||||||
|  | +# #2  0x003d5e88 in abort () from /lib/libc.so.6
 | ||||||
|  | +# No symbol table info available.
 | ||||||
|  | +# #3  0x44f10437 in func () at dw2-loclist-prelinked.c:8
 | ||||||
|  | +# 	i = Could not find the frame base for "func".
 | ||||||
|  | +
 | ||||||
|  | +# Correct:
 | ||||||
|  | +# #0  0x00110430 in __kernel_vsyscall ()
 | ||||||
|  | +# No symbol table info available.
 | ||||||
|  | +# #1  0x003d44c0 in raise () from /lib/libc.so.6
 | ||||||
|  | +# No symbol table info available.
 | ||||||
|  | +# #2  0x003d5e88 in abort () from /lib/libc.so.6
 | ||||||
|  | +# No symbol table info available.
 | ||||||
|  | +# #3  0x4ae36437 in func () at dw2-loclist-prelinked.c:8
 | ||||||
|  | +# 	i = 3827288
 | ||||||
|  | +# #4  0x0804851a in main () at ../../../gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c:24
 | ||||||
|  | +# No locals.
 | ||||||
|  | +
 | ||||||
|  | +# `abort' can get expressed as `*__GI_abort'.
 | ||||||
|  | +gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\ti = -?\[0-9\].*in main \\(.*" "Backtrace after abort()"
 | ||||||
|  | --- /dev/null	2008-11-06 15:02:28.406299691 +0100
 | ||||||
|  | +++ gdb-6.8/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c	2008-11-06 22:59:05.000000000 +0100
 | ||||||
|  | @@ -0,0 +1,26 @@
 | ||||||
|  | +/* This testcase is part of GDB, the GNU debugger.
 | ||||||
|  | +
 | ||||||
|  | +   Copyright 2008 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/>.  */
 | ||||||
|  | +
 | ||||||
|  | +/* dw2-loclist-prelinked-func.S */
 | ||||||
|  | +extern void func (void);
 | ||||||
|  | +
 | ||||||
|  | +int
 | ||||||
|  | +main (void)
 | ||||||
|  | +{
 | ||||||
|  | +  func ();
 | ||||||
|  | +  return 0;
 | ||||||
|  | +}
 | ||||||
|  | --- /dev/null	2008-11-06 15:02:28.406299691 +0100
 | ||||||
|  | +++ gdb-6.8/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-func.S	2008-11-06 22:49:50.000000000 +0100
 | ||||||
|  | @@ -0,0 +1,328 @@
 | ||||||
|  | +/* This testcase is part of GDB, the GNU debugger.
 | ||||||
|  | +
 | ||||||
|  | +   Copyright 2008 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/>.  */
 | ||||||
|  | +
 | ||||||
|  | +/*
 | ||||||
|  | +#include <stdlib.h>
 | ||||||
|  | +
 | ||||||
|  | +void
 | ||||||
|  | +func (void)
 | ||||||
|  | +{
 | ||||||
|  | +  int i;
 | ||||||
|  | +
 | ||||||
|  | +  abort ();
 | ||||||
|  | +}
 | ||||||
|  | +*/
 | ||||||
|  | +	.file	"dw2-loclist-prelinked.c"
 | ||||||
|  | +	.section	.debug_abbrev,"",@progbits
 | ||||||
|  | +.Ldebug_abbrev0:
 | ||||||
|  | +	.section	.debug_info,"",@progbits
 | ||||||
|  | +.Ldebug_info0:
 | ||||||
|  | +	.section	.debug_line,"",@progbits
 | ||||||
|  | +.Ldebug_line0:
 | ||||||
|  | +	.text
 | ||||||
|  | +.Ltext0:
 | ||||||
|  | +.globl func
 | ||||||
|  | +	.type	func, @function
 | ||||||
|  | +func:
 | ||||||
|  | +.LFB2:
 | ||||||
|  | +	.file 1 "dw2-loclist-prelinked.c"
 | ||||||
|  | +	.loc 1 5 0
 | ||||||
|  | +	pushl	%ebp
 | ||||||
|  | +.LCFI0:
 | ||||||
|  | +	movl	%esp, %ebp
 | ||||||
|  | +.LCFI1:
 | ||||||
|  | +	subl	$24, %esp
 | ||||||
|  | +.LCFI2:
 | ||||||
|  | +	.loc 1 8 0
 | ||||||
|  | +	call	abort
 | ||||||
|  | +.LFE2:
 | ||||||
|  | +	.size	func, .-func
 | ||||||
|  | +	.section	.debug_frame,"",@progbits
 | ||||||
|  | +.Lframe0:
 | ||||||
|  | +	.long	.LECIE0-.LSCIE0
 | ||||||
|  | +.LSCIE0:
 | ||||||
|  | +	.long	0xffffffff
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.string	""
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.sleb128 -4
 | ||||||
|  | +	.byte	0x8
 | ||||||
|  | +	.byte	0xc
 | ||||||
|  | +	.uleb128 0x4
 | ||||||
|  | +	.uleb128 0x4
 | ||||||
|  | +	.byte	0x88
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.align 4
 | ||||||
|  | +.LECIE0:
 | ||||||
|  | +.LSFDE0:
 | ||||||
|  | +	.long	.LEFDE0-.LASFDE0
 | ||||||
|  | +.LASFDE0:
 | ||||||
|  | +	.long	.Lframe0
 | ||||||
|  | +	.long	.LFB2
 | ||||||
|  | +	.long	.LFE2-.LFB2
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.long	.LCFI0-.LFB2
 | ||||||
|  | +	.byte	0xe
 | ||||||
|  | +	.uleb128 0x8
 | ||||||
|  | +	.byte	0x85
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.long	.LCFI1-.LCFI0
 | ||||||
|  | +	.byte	0xd
 | ||||||
|  | +	.uleb128 0x5
 | ||||||
|  | +	.align 4
 | ||||||
|  | +.LEFDE0:
 | ||||||
|  | +	.text
 | ||||||
|  | +.Letext0:
 | ||||||
|  | +	.section	.debug_loc,"",@progbits
 | ||||||
|  | +.Ldebug_loc0:
 | ||||||
|  | +.LLST0:
 | ||||||
|  | +	.long	.LFB2-.Ltext0
 | ||||||
|  | +	.long	.LCFI0-.Ltext0
 | ||||||
|  | +	.value	0x2
 | ||||||
|  | +	.byte	0x74
 | ||||||
|  | +	.sleb128 4
 | ||||||
|  | +	.long	.LCFI0-.Ltext0
 | ||||||
|  | +	.long	.LCFI1-.Ltext0
 | ||||||
|  | +	.value	0x2
 | ||||||
|  | +	.byte	0x74
 | ||||||
|  | +	.sleb128 8
 | ||||||
|  | +	.long	.LCFI1-.Ltext0
 | ||||||
|  | +	.long	.LFE2-.Ltext0
 | ||||||
|  | +	.value	0x2
 | ||||||
|  | +	.byte	0x75
 | ||||||
|  | +	.sleb128 8
 | ||||||
|  | +	.long	0x0
 | ||||||
|  | +	.long	0x0
 | ||||||
|  | +	.section	.debug_info
 | ||||||
|  | +	.long	0x94
 | ||||||
|  | +	.value	0x2
 | ||||||
|  | +	.long	.Ldebug_abbrev0
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.long	.LASF10
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.long	.LASF11
 | ||||||
|  | +	.long	.LASF12
 | ||||||
|  | +	.long	.Ltext0
 | ||||||
|  | +	.long	.Letext0
 | ||||||
|  | +	.long	.Ldebug_line0
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.byte	0x7
 | ||||||
|  | +	.long	.LASF0
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.byte	0x5
 | ||||||
|  | +	.string	"int"
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.byte	0x5
 | ||||||
|  | +	.long	.LASF1
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.byte	0x8
 | ||||||
|  | +	.long	.LASF2
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x2
 | ||||||
|  | +	.byte	0x7
 | ||||||
|  | +	.long	.LASF3
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.byte	0x7
 | ||||||
|  | +	.long	.LASF4
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.byte	0x6
 | ||||||
|  | +	.long	.LASF5
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x2
 | ||||||
|  | +	.byte	0x5
 | ||||||
|  | +	.long	.LASF6
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x8
 | ||||||
|  | +	.byte	0x5
 | ||||||
|  | +	.long	.LASF7
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x8
 | ||||||
|  | +	.byte	0x7
 | ||||||
|  | +	.long	.LASF8
 | ||||||
|  | +	.uleb128 0x4
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.byte	0x7
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.byte	0x6
 | ||||||
|  | +	.long	.LASF9
 | ||||||
|  | +	.uleb128 0x5
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.long	.LASF13
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.byte	0x5
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.long	.LFB2
 | ||||||
|  | +	.long	.LFE2
 | ||||||
|  | +	.long	.LLST0
 | ||||||
|  | +	.uleb128 0x6
 | ||||||
|  | +	.string	"i"
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.byte	0x6
 | ||||||
|  | +	.long	0x2c
 | ||||||
|  | +	.byte	0x2
 | ||||||
|  | +	.byte	0x91
 | ||||||
|  | +	.sleb128 -12
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.section	.debug_abbrev
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.uleb128 0x11
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.uleb128 0x25
 | ||||||
|  | +	.uleb128 0xe
 | ||||||
|  | +	.uleb128 0x13
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.uleb128 0xe
 | ||||||
|  | +	.uleb128 0x1b
 | ||||||
|  | +	.uleb128 0xe
 | ||||||
|  | +	.uleb128 0x11
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.uleb128 0x12
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.uleb128 0x10
 | ||||||
|  | +	.uleb128 0x6
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.uleb128 0x24
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3e
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.uleb128 0xe
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.uleb128 0x24
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3e
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.uleb128 0x8
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0x4
 | ||||||
|  | +	.uleb128 0x24
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3e
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0x5
 | ||||||
|  | +	.uleb128 0x2e
 | ||||||
|  | +	.byte	0x1
 | ||||||
|  | +	.uleb128 0x3f
 | ||||||
|  | +	.uleb128 0xc
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.uleb128 0xe
 | ||||||
|  | +	.uleb128 0x3a
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3b
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x27
 | ||||||
|  | +	.uleb128 0xc
 | ||||||
|  | +	.uleb128 0x11
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.uleb128 0x12
 | ||||||
|  | +	.uleb128 0x1
 | ||||||
|  | +	.uleb128 0x40
 | ||||||
|  | +	.uleb128 0x6
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0x6
 | ||||||
|  | +	.uleb128 0x34
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.uleb128 0x3
 | ||||||
|  | +	.uleb128 0x8
 | ||||||
|  | +	.uleb128 0x3a
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x3b
 | ||||||
|  | +	.uleb128 0xb
 | ||||||
|  | +	.uleb128 0x49
 | ||||||
|  | +	.uleb128 0x13
 | ||||||
|  | +	.uleb128 0x2
 | ||||||
|  | +	.uleb128 0xa
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.section	.debug_pubnames,"",@progbits
 | ||||||
|  | +	.long	0x17
 | ||||||
|  | +	.value	0x2
 | ||||||
|  | +	.long	.Ldebug_info0
 | ||||||
|  | +	.long	0x98
 | ||||||
|  | +	.long	0x75
 | ||||||
|  | +	.string	"func"
 | ||||||
|  | +	.long	0x0
 | ||||||
|  | +	.section	.debug_aranges,"",@progbits
 | ||||||
|  | +	.long	0x1c
 | ||||||
|  | +	.value	0x2
 | ||||||
|  | +	.long	.Ldebug_info0
 | ||||||
|  | +	.byte	0x4
 | ||||||
|  | +	.byte	0x0
 | ||||||
|  | +	.value	0x0
 | ||||||
|  | +	.value	0x0
 | ||||||
|  | +	.long	.Ltext0
 | ||||||
|  | +	.long	.Letext0-.Ltext0
 | ||||||
|  | +	.long	0x0
 | ||||||
|  | +	.long	0x0
 | ||||||
|  | +	.section	.debug_str,"MS",@progbits,1
 | ||||||
|  | +.LASF7:
 | ||||||
|  | +	.string	"long long int"
 | ||||||
|  | +.LASF0:
 | ||||||
|  | +	.string	"unsigned int"
 | ||||||
|  | +.LASF11:
 | ||||||
|  | +	.string	"dw2-loclist-prelinked.c"
 | ||||||
|  | +.LASF12:
 | ||||||
|  | +	.string	"gdb-6.8/gdb/testsuite/gdb.dwarf2"
 | ||||||
|  | +.LASF4:
 | ||||||
|  | +	.string	"long unsigned int"
 | ||||||
|  | +.LASF8:
 | ||||||
|  | +	.string	"long long unsigned int"
 | ||||||
|  | +.LASF2:
 | ||||||
|  | +	.string	"unsigned char"
 | ||||||
|  | +.LASF9:
 | ||||||
|  | +	.string	"char"
 | ||||||
|  | +.LASF1:
 | ||||||
|  | +	.string	"long int"
 | ||||||
|  | +.LASF3:
 | ||||||
|  | +	.string	"short unsigned int"
 | ||||||
|  | +.LASF5:
 | ||||||
|  | +	.string	"signed char"
 | ||||||
|  | +.LASF10:
 | ||||||
|  | +	.string	"GNU C 4.3.2 20081007 (Red Hat 4.3.2-6)"
 | ||||||
|  | +.LASF13:
 | ||||||
|  | +	.string	"func"
 | ||||||
|  | +.LASF6:
 | ||||||
|  | +	.string	"short int"
 | ||||||
|  | +	.ident	"GCC: (GNU) 4.3.2 20081007 (Red Hat 4.3.2-6)"
 | ||||||
|  | +	.section	.note.GNU-stack,"",@progbits
 | ||||||
							
								
								
									
										93
									
								
								gdb-6.8-bz466901-backtrace-never-aborts.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								gdb-6.8-bz466901-backtrace-never-aborts.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | |||||||
|  | # Never terminate `bt full' on a problem of variable resolving (BZ 466901). | ||||||
|  | 
 | ||||||
|  | --- ./gdb/f-valprint.c	2008-11-06 22:05:16.000000000 +0100
 | ||||||
|  | +++ ./gdb/f-valprint.c	2008-11-06 22:09:10.000000000 +0100
 | ||||||
|  | @@ -611,8 +611,7 @@ info_common_command (char *comname, int 
 | ||||||
|  |        while (entry != NULL) | ||||||
|  |  	{ | ||||||
|  |  	  printf_filtered ("%s = ", DEPRECATED_SYMBOL_NAME (entry->symbol)); | ||||||
|  | -	  print_variable_value (entry->symbol, fi, gdb_stdout);
 | ||||||
|  | -	  printf_filtered ("\n");
 | ||||||
|  | +	  print_variable_value_nl (entry->symbol, fi, gdb_stdout);
 | ||||||
|  |  	  entry = entry->next; | ||||||
|  |  	} | ||||||
|  |      } | ||||||
|  | --- ./gdb/printcmd.c	2008-11-06 22:05:16.000000000 +0100
 | ||||||
|  | +++ ./gdb/printcmd.c	2008-11-06 22:06:55.000000000 +0100
 | ||||||
|  | @@ -42,6 +42,7 @@
 | ||||||
|  |  #include "block.h" | ||||||
|  |  #include "disasm.h" | ||||||
|  |  #include "dfp.h" | ||||||
|  | +#include "exceptions.h"
 | ||||||
|  |   | ||||||
|  |  #ifdef TUI | ||||||
|  |  #include "tui/tui.h"		/* For tui_active et.al.   */ | ||||||
|  | @@ -1721,15 +1722,26 @@ disable_display_command (char *args, int
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  /* Print the value in stack frame FRAME of a variable specified by a | ||||||
|  | -   struct symbol.  */
 | ||||||
|  | +   struct symbol.  Printed value gets terminated by a newline.  */
 | ||||||
|  |   | ||||||
|  |  void | ||||||
|  | -print_variable_value (struct symbol *var, struct frame_info *frame,
 | ||||||
|  | -		      struct ui_file *stream)
 | ||||||
|  | +print_variable_value_nl (struct symbol *var, struct frame_info *frame,
 | ||||||
|  | +			 struct ui_file *stream)
 | ||||||
|  |  { | ||||||
|  | -  struct value *val = read_var_value (var, frame);
 | ||||||
|  | +  struct value *val;
 | ||||||
|  | +  struct gdb_exception e;
 | ||||||
|  |   | ||||||
|  | -  value_print (val, stream, 0, Val_pretty_default);
 | ||||||
|  | +  TRY_CATCH (e, RETURN_MASK_ERROR)
 | ||||||
|  | +    {
 | ||||||
|  | +      val = read_var_value (var, frame);
 | ||||||
|  | +    }
 | ||||||
|  | +  if (e.reason < 0)
 | ||||||
|  | +    exception_print (stream, e);
 | ||||||
|  | +  else
 | ||||||
|  | +    {
 | ||||||
|  | +      value_print (val, stream, 0, Val_pretty_default);
 | ||||||
|  | +      fprintf_filtered (stream, "\n");
 | ||||||
|  | +    }
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static void | ||||||
|  | --- ./gdb/stack.c	2008-11-06 22:05:16.000000000 +0100
 | ||||||
|  | +++ ./gdb/stack.c	2008-11-06 22:08:45.000000000 +0100
 | ||||||
|  | @@ -1412,8 +1412,7 @@ print_block_frame_locals (struct block *
 | ||||||
|  |  	    fputs_filtered ("\t", stream); | ||||||
|  |  	  fputs_filtered (SYMBOL_PRINT_NAME (sym), stream); | ||||||
|  |  	  fputs_filtered (" = ", stream); | ||||||
|  | -	  print_variable_value (sym, frame, stream);
 | ||||||
|  | -	  fprintf_filtered (stream, "\n");
 | ||||||
|  | +	  print_variable_value_nl (sym, frame, stream);
 | ||||||
|  |  	  break; | ||||||
|  |   | ||||||
|  |  	default: | ||||||
|  | @@ -1633,8 +1632,7 @@ print_frame_arg_vars (struct frame_info 
 | ||||||
|  |   | ||||||
|  |  	  sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym), | ||||||
|  |  				b, VAR_DOMAIN, NULL, NULL); | ||||||
|  | -	  print_variable_value (sym2, frame, stream);
 | ||||||
|  | -	  fprintf_filtered (stream, "\n");
 | ||||||
|  | +	  print_variable_value_nl (sym2, frame, stream);
 | ||||||
|  |  	  break; | ||||||
|  |   | ||||||
|  |  	default: | ||||||
|  | --- ./gdb/value.h	2008-11-06 22:05:16.000000000 +0100
 | ||||||
|  | +++ ./gdb/value.h	2008-11-06 22:08:07.000000000 +0100
 | ||||||
|  | @@ -526,9 +526,9 @@ extern int common_val_print (struct valu
 | ||||||
|  |  extern int val_print_string (CORE_ADDR addr, int len, int width, | ||||||
|  |  			     struct ui_file *stream); | ||||||
|  |   | ||||||
|  | -extern void print_variable_value (struct symbol *var,
 | ||||||
|  | -				  struct frame_info *frame,
 | ||||||
|  | -				  struct ui_file *stream);
 | ||||||
|  | +extern void print_variable_value_nl (struct symbol *var,
 | ||||||
|  | +				     struct frame_info *frame,
 | ||||||
|  | +				     struct ui_file *stream);
 | ||||||
|  |   | ||||||
|  |  extern int check_field (struct value *, const char *); | ||||||
|  |   | ||||||
							
								
								
									
										15
									
								
								gdb.spec
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								gdb.spec
									
									
									
									
									
								
							| @ -422,6 +422,12 @@ Patch342: gdb-6.8-ia64-breakpoint-restoration.patch | |||||||
| # Test the watchpoints conditionals works. | # Test the watchpoints conditionals works. | ||||||
| Patch343: gdb-6.8-watchpoint-conditionals-test.patch | Patch343: gdb-6.8-watchpoint-conditionals-test.patch | ||||||
| 
 | 
 | ||||||
|  | # Never terminate `bt full' on a problem of variable resolving (for BZ 466901). | ||||||
|  | Patch347: gdb-6.8-bz466901-backtrace-never-aborts.patch | ||||||
|  | 
 | ||||||
|  | # Fix resolving of variables at locations lists in prelinked libs (BZ 466901). | ||||||
|  | Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch | ||||||
|  | 
 | ||||||
| BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext | BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext | ||||||
| BuildRequires: flex bison sharutils expat-devel | BuildRequires: flex bison sharutils expat-devel | ||||||
| Requires: readline | Requires: readline | ||||||
| @ -625,6 +631,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c | |||||||
| %patch338 -p1 | %patch338 -p1 | ||||||
| %patch342 -p1 | %patch342 -p1 | ||||||
| %patch343 -p1 | %patch343 -p1 | ||||||
|  | %patch347 -p1 | ||||||
|  | %patch348 -p1 | ||||||
| %patch124 -p1 | %patch124 -p1 | ||||||
| 
 | 
 | ||||||
| find -name "*.orig" | xargs rm -f | find -name "*.orig" | xargs rm -f | ||||||
| @ -888,7 +896,12 @@ fi | |||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
| * Tue Nov  4 2008 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8-26 | * Thu Nov  6 2008 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8-27 | ||||||
|  | - Fix resolving of variables at locations lists in prelinked libs (BZ 466901), | ||||||
|  |   bugreported by Michal Babej. | ||||||
|  | - Never terminate `bt full' on a problem of variable resolving (for BZ 466901). | ||||||
|  | 
 | ||||||
|  | * Thu Nov  6 2008 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8-26 | ||||||
| - Fix more the variable-length-arrays support (BZ 468266, feature BZ 377541). | - Fix more the variable-length-arrays support (BZ 468266, feature BZ 377541). | ||||||
| - Fix the watchpoints conditionals. | - Fix the watchpoints conditionals. | ||||||
| - Fix on PPC spurious SIGTRAPs on active watchpoints. | - Fix on PPC spurious SIGTRAPs on active watchpoints. | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user