|
|
|
@ -53,6 +53,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
|
|
|
#include "bfd.h" /* Required by objfiles.h. */ |
|
|
|
#include "symfile.h" /* Required by objfiles.h. */ |
|
|
|
#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */ |
|
|
|
#include <ctype.h> |
|
|
|
|
|
|
|
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), |
|
|
|
as well as gratuitiously global symbol names, so we can have multiple |
|
|
|
@ -639,7 +640,6 @@ parse_number (p, len, parsed_float, putithere) |
|
|
|
{ |
|
|
|
register LONGEST n = 0; |
|
|
|
register LONGEST prevn = 0; |
|
|
|
register int i; |
|
|
|
register int c; |
|
|
|
register int base = input_radix; |
|
|
|
int unsigned_p = 0; |
|
|
|
@ -697,26 +697,26 @@ parse_number (p, len, parsed_float, putithere) |
|
|
|
while (len-- > 0) |
|
|
|
{ |
|
|
|
c = *p++; |
|
|
|
if (c >= 'A' && c <= 'Z') |
|
|
|
c += 'a' - 'A'; |
|
|
|
if (c != 'l' && c != 'u') |
|
|
|
n *= base; |
|
|
|
if (c >= '0' && c <= '9') |
|
|
|
n += i = c - '0'; |
|
|
|
if (isupper (c)) |
|
|
|
c = tolower (c); |
|
|
|
if (len == 0 && c == 'l') |
|
|
|
long_p = 1; |
|
|
|
else if (len == 0 && c == 'u') |
|
|
|
unsigned_p = 1; |
|
|
|
else |
|
|
|
{ |
|
|
|
if (base > 10 && c >= 'a' && c <= 'f') |
|
|
|
n += i = c - 'a' + 10; |
|
|
|
else if (len == 0 && c == 'l') |
|
|
|
long_p = 1; |
|
|
|
else if (len == 0 && c == 'u') |
|
|
|
unsigned_p = 1; |
|
|
|
int i; |
|
|
|
if (c >= '0' && c <= '9') |
|
|
|
i = c - '0'; |
|
|
|
else if (c >= 'a' && c <= 'f') |
|
|
|
i = c - 'a' + 10; |
|
|
|
else |
|
|
|
return ERROR; /* Char not a digit */ |
|
|
|
if (i >= base) |
|
|
|
return ERROR; /* Invalid digit in this base */ |
|
|
|
n *= base; |
|
|
|
n += i; |
|
|
|
} |
|
|
|
if (i >= base) |
|
|
|
return ERROR; /* Invalid digit in this base */ |
|
|
|
|
|
|
|
/* Portably test for overflow (only works for nonzero values, so make |
|
|
|
a second check for zero). */ |
|
|
|
if ((prevn >= n) && n != 0) |
|
|
|
|