mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 02:53:48 +08:00
* config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type
to include '@' in symbol names when parsing versioned symbols rather than calling get_symbol_end multiple times. * config/tc-i370.c (register_name): Format fixes. Don't call get_symbol_end after parsing number. * config/tc-mn10200.c (data_register_name): Format fixes. Hoist code out of conditional. (address_register_name): Likewise. (other_register_name): Likewise. * config/tc-mn10300.c (r_register_name): Likewise. (xr_register_name): Likewise. (data_register_name): Likewise. (address_register_name): Likewise. (other_register_name): Likewise. * config/tc-ppc.c (register_name): Likewise. * config/tc-s390.c (register_name): Likewise.
This commit is contained in:
parent
5b2e4f117f
commit
468cced8b9
@ -1,3 +1,22 @@
|
||||
2001-07-30 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type
|
||||
to include '@' in symbol names when parsing versioned symbols
|
||||
rather than calling get_symbol_end multiple times.
|
||||
* config/tc-i370.c (register_name): Format fixes. Don't call
|
||||
get_symbol_end after parsing number.
|
||||
* config/tc-mn10200.c (data_register_name): Format fixes. Hoist
|
||||
code out of conditional.
|
||||
(address_register_name): Likewise.
|
||||
(other_register_name): Likewise.
|
||||
* config/tc-mn10300.c (r_register_name): Likewise.
|
||||
(xr_register_name): Likewise.
|
||||
(data_register_name): Likewise.
|
||||
(address_register_name): Likewise.
|
||||
(other_register_name): Likewise.
|
||||
* config/tc-ppc.c (register_name): Likewise.
|
||||
* config/tc-s390.c (register_name): Likewise.
|
||||
|
||||
2001-07-27 Stephane Carrez <Stephane.Carrez@worldnet.fr>
|
||||
|
||||
* config/tc-m68hc11.c (md_estimate_size_before_relax): Fix bsr
|
||||
|
@ -1132,6 +1132,7 @@ obj_elf_symver (ignore)
|
||||
{
|
||||
char *name;
|
||||
char c;
|
||||
char old_lexat;
|
||||
symbolS *sym;
|
||||
|
||||
name = input_line_pointer;
|
||||
@ -1151,13 +1152,12 @@ obj_elf_symver (ignore)
|
||||
|
||||
++input_line_pointer;
|
||||
name = input_line_pointer;
|
||||
while (1)
|
||||
{
|
||||
c = get_symbol_end ();
|
||||
if (c != ELF_VER_CHR)
|
||||
break;
|
||||
*input_line_pointer++ = c;
|
||||
}
|
||||
|
||||
/* Temporarily include '@' in symbol names. */
|
||||
old_lexat = lex_type[(unsigned char) '@'];
|
||||
lex_type[(unsigned char) '@'] |= LEX_NAME;
|
||||
c = get_symbol_end ();
|
||||
lex_type[(unsigned char) '@'] = old_lexat;
|
||||
|
||||
if (symbol_get_obj (sym)->versioned_name == NULL)
|
||||
{
|
||||
|
@ -332,7 +332,7 @@ register_name (expressionP)
|
||||
char *start;
|
||||
char c;
|
||||
|
||||
/* Find the spelling of the operand */
|
||||
/* Find the spelling of the operand. */
|
||||
start = name = input_line_pointer;
|
||||
if (name[0] == '%' && isalpha (name[1]))
|
||||
name = ++input_line_pointer;
|
||||
@ -343,36 +343,36 @@ register_name (expressionP)
|
||||
while (' ' == *name)
|
||||
name = ++input_line_pointer;
|
||||
|
||||
/* if its a number, treat it as a number */
|
||||
/* if its alpha, look to see if it's in the register table */
|
||||
/* If it's a number, treat it as a number. If it's alpha, look to
|
||||
see if it's in the register table. */
|
||||
if (!isalpha (name[0]))
|
||||
{
|
||||
reg_number = get_single_number ();
|
||||
c = get_symbol_end ();
|
||||
}
|
||||
else
|
||||
{
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
}
|
||||
|
||||
/* if numeric, make sure its not out of bounds */
|
||||
/* If numeric, make sure its not out of bounds. */
|
||||
if ((0 <= reg_number) && (16 >= reg_number))
|
||||
{
|
||||
expressionP->X_op = O_register;
|
||||
expressionP->X_add_number = reg_number;
|
||||
|
||||
/* make the rest nice */
|
||||
/* Make the rest nice. */
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
*input_line_pointer = c; /* put back the delimiting char */
|
||||
return true;
|
||||
}
|
||||
|
||||
/* reset the line as if we had not done anything */
|
||||
*input_line_pointer = c; /* put back the delimiting char */
|
||||
input_line_pointer = start; /* reset input_line pointer */
|
||||
return false;
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Local variables. */
|
||||
|
@ -197,6 +197,9 @@ data_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (data_registers, DATA_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -207,20 +210,12 @@ data_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Summary of register_name().
|
||||
@ -249,6 +244,9 @@ address_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (address_registers, ADDRESS_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -259,20 +257,12 @@ address_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Summary of register_name().
|
||||
@ -301,6 +291,9 @@ other_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (other_registers, OTHER_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -311,20 +304,12 @@ other_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -302,6 +302,9 @@ r_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (r_registers, R_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -312,20 +315,12 @@ r_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Summary of register_name().
|
||||
@ -354,6 +349,9 @@ xr_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (xr_registers, XR_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -364,20 +362,12 @@ xr_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Summary of register_name().
|
||||
@ -406,6 +396,9 @@ data_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (data_registers, DATA_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -416,20 +409,12 @@ data_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Summary of register_name().
|
||||
@ -458,6 +443,9 @@ address_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (address_registers, ADDRESS_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -468,21 +456,12 @@ address_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Summary of register_name().
|
||||
@ -511,6 +490,9 @@ other_register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (other_registers, OTHER_REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -521,20 +503,12 @@ other_register_name (expressionP)
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Reset input_line pointer. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -586,6 +586,9 @@ register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
|
||||
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
@ -595,17 +598,12 @@ register_name (expressionP)
|
||||
/* Make the rest nice. */
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reset the line as if we had not done anything. */
|
||||
*input_line_pointer = c;
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* This function is called for each symbol seen in an expression. It
|
||||
|
@ -251,7 +251,7 @@ register_name (expressionP)
|
||||
char *start;
|
||||
char c;
|
||||
|
||||
/* Find the spelling of the operand */
|
||||
/* Find the spelling of the operand. */
|
||||
start = name = input_line_pointer;
|
||||
if (name[0] == '%' && isalpha (name[1]))
|
||||
name = ++input_line_pointer;
|
||||
@ -261,25 +261,24 @@ register_name (expressionP)
|
||||
c = get_symbol_end ();
|
||||
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
|
||||
|
||||
/* look to see if it's in the register table */
|
||||
/* Put back the delimiting char. */
|
||||
*input_line_pointer = c;
|
||||
|
||||
/* Look to see if it's in the register table. */
|
||||
if (reg_number >= 0)
|
||||
{
|
||||
expressionP->X_op = O_register;
|
||||
expressionP->X_add_number = reg_number;
|
||||
|
||||
/* make the rest nice */
|
||||
/* Make the rest nice. */
|
||||
expressionP->X_add_symbol = NULL;
|
||||
expressionP->X_op_symbol = NULL;
|
||||
*input_line_pointer = c; /* put back the delimiting char */
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* reset the line as if we had not done anything */
|
||||
*input_line_pointer = c; /* put back the delimiting char */
|
||||
input_line_pointer = start; /* reset input_line pointer */
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Reset the line as if we had not done anything. */
|
||||
input_line_pointer = start;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Local variables. */
|
||||
|
Loading…
Reference in New Issue
Block a user