mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-19 14:34:07 +08:00
PR31120, ld-scripts/fill2 fails when bfd_vma is 32 bits
The ld lexer converts strings to integers without overflow checking, so I don't think there is any problem in truncating an integer that exceeds the size of a bfd_vma rather than using (bfd_vma) -1. PR 31120 * ldlex.l: Don't use bfd_scan_vma for integer conversion, use strtoull.
This commit is contained in:
parent
6a95962e25
commit
c217aed574
@ -133,7 +133,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
comment (); }
|
||||
|
||||
<MRI,EXPRESSION>"$"([0-9A-Fa-f])+ {
|
||||
yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
|
||||
yylval.integer = strtoull (yytext + 1, 0, 16);
|
||||
yylval.bigint.str = NULL;
|
||||
return INT;
|
||||
}
|
||||
@ -158,8 +158,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
default:
|
||||
ibase = 10;
|
||||
}
|
||||
yylval.integer = bfd_scan_vma (yytext, 0,
|
||||
ibase);
|
||||
yylval.integer = strtoull (yytext, 0, ibase);
|
||||
yylval.bigint.str = NULL;
|
||||
return INT;
|
||||
}
|
||||
@ -172,7 +171,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
++s;
|
||||
ibase = 16;
|
||||
}
|
||||
yylval.integer = bfd_scan_vma (s, 0, ibase);
|
||||
yylval.integer = strtoull (s, 0, ibase);
|
||||
yylval.bigint.str = NULL;
|
||||
if (yytext[yyleng - 1] == 'M'
|
||||
|| yytext[yyleng - 1] == 'm')
|
||||
|
Loading…
Reference in New Issue
Block a user