[Dwarf-Discuss] _dwarf_p_error(): Does it correctly handle negative error values?

Ron Louzon louzonr@yahoo.com
Fri Jan 21 15:36:57 GMT 2011


_dwarf_p_error() is defined in pro_error.c as
?void_dwarf_p_error(Dwarf_P_Debug dbg,
Dwarf_Error * error, Dwarf_Word errval)
{
Dwarf_Error errptr;
want to report the upper-level error, not this one. *//* Allow NULL dbg on 
entry, since sometimes that can happen and weprintf("ERROR VALUE: %ld - %s\n",
(
errptr = (Dwarf_Error)
_dwarf_p_get_alloc(dbg, 
fprintf(stderr,
"Could not allocate Dwarf_Error structure\n");
abort();
}
errptr->er_errval = (Dwarf_Sword) errval;
*error = errptr;
}
?
If?the supplied "errval" is negative, the conversion code "-errval-1" is used to 
convert "errval" to a positive index.?
?
Assume that?"errval" had a value of -5.? This conversion?generates an index of 4 
which is then used to retrieve a string from the _dwarf_errmsgs?table.? Was?it 
intended to have an index which is off by 1 or should the conversion be using 
the positive equivalent of "errval" as an index into the _dwarf_errmsgs?table?? 

?
It appears?to me that the conversion of errval to a positive number?should 
really be?
(
?
?I also could not find any usage in libdwarf of this function where a negative 
value was passed in through errval.
?
Thanks,
Ronunsigned)( -( (signed)errval ) );if((Dwarf_Sword) errval < 0)long) errval, 
_dwarf_errmsgs[-errval - 1]);if(error != NULL) 
{sizeof(structDwarf_Error_s));if(errptr == NULL) {return;


      




More information about the Dwarf-discuss mailing list