patches/gdb/6.7/120-dwarf-stack-overflow.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Aug 07 14:05:47 2008 +0000 (2008-08-07)
changeset 766 717efd8b78b4
parent 746 b150d6f590fc
permissions -rw-r--r--
Update all samples to the latest set of options.
Update some samples to use newer features.
Add patches for the uClibc-20080801 snapshot to be able to build with gcc-4.3.
Add a patch against glibc-2.7 to allow building PPC with latest kernel headers.
Add a patch to gcc to use an alternate unwinding when built against uClibc (after a private explanation/request by Daniel Egger <daniel@eggers-club.de>)

/trunk/patches/glibc/2.7/230-powerpc-private_futex.patch | 15 15 0 0 +
/trunk/patches/uClibc/20080801/300-fix-asm.patch | 175 175 0 0 +++++++++
/trunk/patches/uClibc/20080801/100-ifaddrs.patch | 190 190 0 0 +++++++++
/trunk/patches/uClibc/20080801/200-mips-typeof.patch | 112 112 0 0 ++++++
/trunk/patches/gcc/4.3.1/330-unwind-for-uClibc.patch | 25 25 0 0 +
/trunk/samples/x86_64-unknown-linux-gnu/crosstool.config | 17 10 7 0 +
/trunk/samples/armeb-unknown-linux-uclibc/crosstool.config | 7 5 2 0 +
/trunk/samples/arm-unknown-linux-gnueabi/crosstool.config | 7 5 2 0 +
/trunk/samples/ia64-unknown-linux-gnu/crosstool.config | 14 11 3 0 +
/trunk/samples/x86_64-unknown-linux-uclibc/uClibc-20080801.config | 232 232 0 0 ++++++++++++
/trunk/samples/x86_64-unknown-linux-uclibc/crosstool.config | 34 21 13 0 +-
/trunk/samples/i686-nptl-linux-gnu/crosstool.config | 10 7 3 0 +
/trunk/samples/powerpc-unknown-linux-gnu/crosstool.config | 12 9 3 0 +
/trunk/samples/mips-unknown-linux-uclibc/uClibc-20080801.config | 249 249 0 0 ++++++++++++
/trunk/samples/mips-unknown-linux-uclibc/crosstool.config | 38 23 15 0 +-
/trunk/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config | 14 10 4 0 +
/trunk/samples/armeb-unknown-linux-gnu/crosstool.config | 7 5 2 0 +
/trunk/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config | 12 9 3 0 +
/trunk/samples/arm-unknown-linux-uclibc/crosstool.config | 7 5 2 0 +
/trunk/samples/i586-geode-linux-uclibc/uClibc-20080801.config | 261 261 0 0 +++++++++++++
/trunk/samples/i586-geode-linux-uclibc/crosstool.config | 32 20 12 0 ++
/trunk/samples/powerpc-unknown-linux-uclibc/crosstool.config | 12 9 3 0 +
/trunk/samples/mipsel-unknown-linux-gnu/crosstool.config | 7 5 2 0 +
/trunk/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config | 7 5 2 0 +
/trunk/samples/alphaev56-unknown-linux-gnu/crosstool.config | 16 10 6 0 +
25 files changed, 1428 insertions(+), 84 deletions(-)
     1 Original patch from gentoo: gentoo/src/patchsets/gdb/6.7/80_all_gdb-6.5-dwarf-stack-overflow.patch
     2 -= BEGIN original header =-
     3 http://bugs.gentoo.org/144833
     4 
     5 for gdb/ChangeLog:
     6 2006-08-22  Will Drewry <wad@google.com>
     7 	    Tavis Ormandy <taviso@google.com>
     8 
     9 	* dwarf2read.c (decode_locdesc): Enforce location description stack
    10 	boundaries.
    11 	* dwarfread.c (locval): Likewise.
    12 
    13 -= END original header =-
    14 diff -durN gdb-6.7.orig/gdb/dwarf2read.c gdb-6.7/gdb/dwarf2read.c
    15 --- gdb-6.7.orig/gdb/dwarf2read.c	2007-09-05 02:51:48.000000000 +0200
    16 +++ gdb-6.7/gdb/dwarf2read.c	2008-06-17 23:25:38.000000000 +0200
    17 @@ -9061,8 +9061,7 @@
    18     callers will only want a very basic result and this can become a
    19     complaint.
    20  
    21 -   Note that stack[0] is unused except as a default error return.
    22 -   Note that stack overflow is not yet handled.  */
    23 +   Note that stack[0] is unused except as a default error return. */
    24  
    25  static CORE_ADDR
    26  decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
    27 @@ -9079,7 +9078,7 @@
    28  
    29    i = 0;
    30    stacki = 0;
    31 -  stack[stacki] = 0;
    32 +  stack[++stacki] = 0;
    33  
    34    while (i < size)
    35      {
    36 @@ -9261,6 +9260,16 @@
    37  		     dwarf_stack_op_name (op));
    38  	  return (stack[stacki]);
    39  	}
    40 +      /* Enforce maximum stack depth of size-1 to avoid ++stacki writing
    41 +         outside of the allocated space. Also enforce minimum > 0.
    42 +         -- wad@google.com 14 Aug 2006 */
    43 +      if (stacki >= sizeof (stack) / sizeof (*stack) - 1)
    44 +	internal_error (__FILE__, __LINE__,
    45 +	                _("location description stack too deep: %d"),
    46 +	                stacki);
    47 +      if (stacki <= 0)
    48 +	internal_error (__FILE__, __LINE__,
    49 +	                _("location description stack too shallow"));
    50      }
    51    return (stack[stacki]);
    52  }