mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-17 04:43:17 +08:00
merge from gcc
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2008-03-31 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
|
* cp-demangle.c (d_substitution): Correct overflow check to avoid
|
||||||
|
-fstrict-overflow optimizations.
|
||||||
|
|
||||||
2008-03-27 Paolo Bonzini <bonzini@gnu.org>
|
2008-03-27 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
* configure.ac (frags): Don't set, use frag instead.
|
* configure.ac (frags): Don't set, use frag instead.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Demangler for g++ V3 ABI.
|
/* Demangler for g++ V3 ABI.
|
||||||
Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
|
||||||
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor <ian@wasabisystems.com>.
|
Written by Ian Lance Taylor <ian@wasabisystems.com>.
|
||||||
|
|
||||||
This file is part of the libiberty library, which is part of GCC.
|
This file is part of the libiberty library, which is part of GCC.
|
||||||
@ -2681,21 +2682,24 @@ d_substitution (struct d_info *di, int prefix)
|
|||||||
c = d_next_char (di);
|
c = d_next_char (di);
|
||||||
if (c == '_' || IS_DIGIT (c) || IS_UPPER (c))
|
if (c == '_' || IS_DIGIT (c) || IS_UPPER (c))
|
||||||
{
|
{
|
||||||
int id;
|
unsigned int id;
|
||||||
|
|
||||||
id = 0;
|
id = 0;
|
||||||
if (c != '_')
|
if (c != '_')
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
unsigned int new_id;
|
||||||
|
|
||||||
if (IS_DIGIT (c))
|
if (IS_DIGIT (c))
|
||||||
id = id * 36 + c - '0';
|
new_id = id * 36 + c - '0';
|
||||||
else if (IS_UPPER (c))
|
else if (IS_UPPER (c))
|
||||||
id = id * 36 + c - 'A' + 10;
|
new_id = id * 36 + c - 'A' + 10;
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
if (id < 0)
|
if (new_id < id)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
id = new_id;
|
||||||
c = d_next_char (di);
|
c = d_next_char (di);
|
||||||
}
|
}
|
||||||
while (c != '_');
|
while (c != '_');
|
||||||
@ -2703,7 +2707,7 @@ d_substitution (struct d_info *di, int prefix)
|
|||||||
++id;
|
++id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id >= di->next_sub)
|
if (id >= (unsigned int) di->next_sub)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
++di->did_subs;
|
++di->did_subs;
|
||||||
|
Reference in New Issue
Block a user