ecomp.r140802
: liblccopt: ecomp.r140802 . ecomp.r140802 liblccopt () binutils.
This commit is contained in:
parent
ed7f317b07
commit
530ae2fbb6
|
@ -901,16 +901,14 @@ lccrt_irreader_read_int( lccrt_irreader_t *irr, int64_t *value, int is_hex)
|
|||
}
|
||||
|
||||
if ( is_dig0
|
||||
|| (i > 2) )
|
||||
|| (i >= 2) )
|
||||
{
|
||||
char *p1 = 0;
|
||||
char *p0 = b->data + b->ind;
|
||||
|
||||
if ( is_hex )
|
||||
{
|
||||
if ( is_hex ) {
|
||||
(*value) = strtoull( p0, &p1, 16);
|
||||
} else
|
||||
{
|
||||
} else {
|
||||
(*value) = strtoll( p0, &p1, 10);
|
||||
}
|
||||
|
||||
|
@ -960,7 +958,7 @@ lccrt_irreader_read_lexem( lccrt_irreader_t *irr)
|
|||
* Проверяем, что в начале буфера находится заданная лексема.
|
||||
*/
|
||||
static int
|
||||
lccrt_irreader_is_lexem( lccrt_irreader_t *irr, const char *lexem, int is_skip)
|
||||
lccrt_irreader_is_lexem( lccrt_irreader_t *irr, const char *lexem, int is_skip_space)
|
||||
{
|
||||
int r = 0;
|
||||
lccrt_irreader_buffer_t *b = irr->b;
|
||||
|
@ -977,7 +975,7 @@ lccrt_irreader_is_lexem( lccrt_irreader_t *irr, const char *lexem, int is_skip)
|
|||
&& (strncmp( lexem, b->data + b->ind, lexem_len) == 0) )
|
||||
{
|
||||
r = 1;
|
||||
lccrt_irreader_skip( irr, strlen( lexem), is_skip);
|
||||
lccrt_irreader_skip( irr, strlen( lexem), is_skip_space);
|
||||
}
|
||||
|
||||
return (r);
|
||||
|
@ -2122,7 +2120,7 @@ lccrt_irreader_read_einfocat( lccrt_irreader_t *irr)
|
|||
|| (lccrt_module_find_einfo_category( m, cname).id >= 0) )
|
||||
{
|
||||
lccrt_irreader_error( irr, "duplicate definition einfo-category '%%c%jd = %s', [%s]",
|
||||
cident, cname, lccrt_irreader_print_head( irr, 64, s));
|
||||
cident, lccrt_irreader_print_head( irr, 64, s));
|
||||
} else
|
||||
{
|
||||
lccrt_eic_t ecat = lccrt_module_new_einfo_category( m, cname);
|
||||
|
@ -2786,7 +2784,8 @@ lccrt_irreader_read_varinit( lccrt_irreader_t *irr, lccrt_varinit_ptr *vinit)
|
|||
int64_t shift = 0;
|
||||
|
||||
if ( lccrt_irreader_read_ident( irr, &aname)
|
||||
&& lccrt_irreader_is_lexem( irr, "+", 0)
|
||||
&& (lccrt_irreader_is_char( irr, 0, '+')
|
||||
|| lccrt_irreader_is_char( irr, 0, '-'))
|
||||
&& lccrt_irreader_read_int( irr, &shift, 0) )
|
||||
{
|
||||
vi = lccrt_varinit_new_addr_var( irr->addr0, shift);
|
||||
|
@ -3086,7 +3085,7 @@ lccrt_irreader_get_label( lccrt_irreader_t *irr, const char *name)
|
|||
if ( !r )
|
||||
{
|
||||
lccrt_irreader_error( irr, "unknown label [%s] in function [%s], [%s ...]",
|
||||
name, fi->f->name, lccrt_function_get_name( fi->f));
|
||||
name, lccrt_function_get_name( fi->f));
|
||||
}
|
||||
|
||||
return (r);
|
||||
|
|
|
@ -647,13 +647,13 @@ lccrt_irwriter_print_varinit( lccrt_irwriter_t *irw, lccrt_varinit_ptr vi)
|
|||
{
|
||||
int64_t i;
|
||||
int fd = irw->fd;
|
||||
lccrt_var_ptr va = 0;
|
||||
lccrt_function_ptr fa = 0;
|
||||
const char *vn = 0;
|
||||
lccrt_type_ptr t = lccrt_varinit_get_type( vi);
|
||||
int64_t num_elems = lccrt_varinit_get_num_elems( vi);
|
||||
lccrt_varinit_inittype_t vitype = lccrt_varinit_get_inittype( vi);
|
||||
|
||||
lccrt_printf( irw, "%s ", lccrt_irwriter_get_type_ident( irw, t));
|
||||
switch ( lccrt_varinit_get_inittype( vi) )
|
||||
switch ( vitype )
|
||||
{
|
||||
case LCCRT_VARINIT_ZERO:
|
||||
lccrt_printf( irw, "zeroinit");
|
||||
|
@ -665,14 +665,17 @@ lccrt_irwriter_print_varinit( lccrt_irwriter_t *irw, lccrt_varinit_ptr vi)
|
|||
lccrt_print_escaped_bytearray( irw, num_elems, lccrt_varinit_get_str( vi));
|
||||
break;
|
||||
case LCCRT_VARINIT_ADDR_VAR:
|
||||
va = lccrt_varinit_get_addr_var( vi);
|
||||
lccrt_printf( irw, "&%s+%jd", lccrt_irwriter_get_name_ident( irw, va),
|
||||
lccrt_varinit_get_num_elems( vi));
|
||||
break;
|
||||
case LCCRT_VARINIT_ADDR_FUNC:
|
||||
fa = lccrt_varinit_get_addr_func( vi);
|
||||
lccrt_printf( irw, "&%s+%jd", lccrt_irwriter_get_name_ident( irw, fa),
|
||||
lccrt_varinit_get_num_elems( vi));
|
||||
if ( vitype == LCCRT_VARINIT_ADDR_VAR ) {
|
||||
vn = lccrt_irwriter_get_name_ident( irw, lccrt_varinit_get_addr_var( vi));
|
||||
} else {
|
||||
vn = lccrt_irwriter_get_name_ident( irw, lccrt_varinit_get_addr_func( vi));
|
||||
}
|
||||
if ( num_elems >= 0 ) {
|
||||
lccrt_printf( irw, "&%s+%jd", vn, num_elems);
|
||||
} else {
|
||||
lccrt_printf( irw, "&%s%jd", vn, num_elems);
|
||||
}
|
||||
break;
|
||||
case LCCRT_VARINIT_ARR:
|
||||
lccrt_printf( irw, "{");
|
||||
|
|
|
@ -237,7 +237,8 @@ lccrt_varinit_get_num_elems( lccrt_varinit_ptr vi)
|
|||
|
||||
if ( lccrt_varinit_is_array( vi)
|
||||
|| lccrt_varinit_is_str( vi)
|
||||
|| lccrt_varinit_is_addr_var( vi) )
|
||||
|| lccrt_varinit_is_addr_var( vi)
|
||||
|| lccrt_varinit_is_addr_func( vi) )
|
||||
{
|
||||
r = vi->num_elems;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue