libiberty/ChangeLog:
2003-05-14 Jim Blandy <jimb@redhat.com> * hex.c (_hex_value): Make this unsigned. (hex_value): Update documentation for new return type. hex_value now expands to an unsigned int expression, to avoid unexpected sign extension when we store it in a bfd_vma, which is larger than int on some platforms. * functions.texi: Regenerated. include/ChangeLog: 2003-05-14 Jim Blandy <jimb@redhat.com> * libiberty.h (hex_value): Make the value an unsigned int, to avoid unexpected sign-extension when cast to unsigned types larger than int --- like bfd_vma, on some platforms. (_hex_value): Update declaration.
This commit is contained in:
parent
cc8c88f3a7
commit
e4f7904629
5 changed files with 34 additions and 6 deletions
|
@ -1,3 +1,10 @@
|
|||
2003-05-15 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* libiberty.h (hex_value): Make the value an unsigned int, to
|
||||
avoid unexpected sign-extension when cast to unsigned types larger
|
||||
than int --- like bfd_vma, on some platforms.
|
||||
(_hex_value): Update declaration.
|
||||
|
||||
2003-05-09 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* xtensa-isa-internal.h (xtensa_isa_module_struct): Remove const on
|
||||
|
|
|
@ -254,12 +254,12 @@ extern double physmem_available PARAMS ((void));
|
|||
|
||||
#define _hex_array_size 256
|
||||
#define _hex_bad 99
|
||||
extern const char _hex_value[_hex_array_size];
|
||||
extern const unsigned char _hex_value[_hex_array_size];
|
||||
extern void hex_init PARAMS ((void));
|
||||
#define hex_p(c) (hex_value (c) != _hex_bad)
|
||||
/* If you change this, note well: Some code relies on side effects in
|
||||
the argument being performed exactly once. */
|
||||
#define hex_value(c) (_hex_value[(unsigned char) (c)])
|
||||
#define hex_value(c) ((unsigned int) _hex_value[(unsigned char) (c)])
|
||||
|
||||
/* Definitions used by the pexecute routine. */
|
||||
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2003-05-15 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* hex.c (_hex_value): Make this unsigned.
|
||||
(hex_value): Update documentation for new return type. hex_value
|
||||
now expands to an unsigned int expression, to avoid unexpected
|
||||
sign extension when we store it in a bfd_vma, which is larger than
|
||||
int on some platforms.
|
||||
* functions.texi: Regenerated.
|
||||
|
||||
2003-05-07 Josef Zlomek <zlomekj@suse.cz>
|
||||
|
||||
* splay-tree.c (splay_tree_predecessor): Fix comment.
|
||||
|
|
|
@ -337,13 +337,19 @@ or zero if it is not. Note that the value you pass will be cast to
|
|||
@end deftypefn
|
||||
|
||||
@c hex.c:42
|
||||
@deftypefn Extension int hex_value (int @var{c})
|
||||
@deftypefn Extension unsigned int hex_value (int @var{c})
|
||||
|
||||
Returns the numeric equivalent of the given character when interpreted
|
||||
as a hexidecimal digit. The result is undefined if you pass an
|
||||
invalid hex digit. Note that the value you pass will be cast to
|
||||
@code{unsigned char} within the macro.
|
||||
|
||||
The @code{hex_value} macro returns @code{unsigned int}, rather than
|
||||
signed @code{int}, to make it easier to use in parsing addresses from
|
||||
hex dump files: a signed @code{int} would be sign-extended when
|
||||
converted to a wider unsigned type --- like @code{bfd_vma}, on some
|
||||
systems.
|
||||
|
||||
@end deftypefn
|
||||
|
||||
@c index.c:5
|
||||
|
|
|
@ -39,13 +39,19 @@ or zero if it is not. Note that the value you pass will be cast to
|
|||
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn Extension int hex_value (int @var{c})
|
||||
@deftypefn Extension unsigned int hex_value (int @var{c})
|
||||
|
||||
Returns the numeric equivalent of the given character when interpreted
|
||||
as a hexidecimal digit. The result is undefined if you pass an
|
||||
invalid hex digit. Note that the value you pass will be cast to
|
||||
@code{unsigned char} within the macro.
|
||||
|
||||
The @code{hex_value} macro returns @code{unsigned int}, rather than
|
||||
signed @code{int}, to make it easier to use in parsing addresses from
|
||||
hex dump files: a signed @code{int} would be sign-extended when
|
||||
converted to a wider unsigned type --- like @code{bfd_vma}, on some
|
||||
systems.
|
||||
|
||||
@end deftypefn
|
||||
|
||||
@undocumented _hex_array_size
|
||||
|
@ -60,7 +66,7 @@ invalid hex digit. Note that the value you pass will be cast to
|
|||
&& 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21 \
|
||||
&& EOF == -1
|
||||
|
||||
const char _hex_value[_hex_array_size] =
|
||||
const unsigned char _hex_value[_hex_array_size] =
|
||||
{
|
||||
_hex_bad, _hex_bad, _hex_bad, _hex_bad, /* NUL SOH STX ETX */
|
||||
_hex_bad, _hex_bad, _hex_bad, _hex_bad, /* EOT ENQ ACK BEL */
|
||||
|
@ -139,7 +145,7 @@ const char _hex_value[_hex_array_size] =
|
|||
|
||||
#else
|
||||
|
||||
char _hex_value[_hex_array_size];
|
||||
unsigned char _hex_value[_hex_array_size];
|
||||
|
||||
#endif /* not ASCII */
|
||||
|
||||
|
|
Loading…
Reference in a new issue