[RFC patch]: Adjust the use of 'long' type in dwarf2.h header
Nick Clifton
nickc@redhat.com
Tue Feb 22 15:21:00 GMT 2011
Hi Kai,
> So this version uses new function dwarf_vma_print function for
> printf-messages, which are getting localized.
>
> Tested for x86_64-w64-mingw32 and x86_64-pc-linux-gnu. Ok for apply?
> +static const char *
> +dwarf_vma_print (const char *fmtch, bfd_vma value)
I think that I prefer your suggestion of dwarf_vmatoa.
> +{
> + static int buf_pos = 0;
> + static struct dwarf_vma_print_buf {
> + char place[64];
> + } buf[16];
Ideally you should have a comment here explaining why you have an array
of these string buffers.
> + char fmt[32];
> + char *ret;
> +
> + sprintf (fmt, "%%%s%s", BFD_VMA_FMT, fmtch);
> + ret = &buf[buf_pos++].place[0];
Or, more simply:
ret = buf[buf_pos++].place;
> + buf_pos &= 15;
That "15" should be: "ARRAY_SIZE (buf) - 1", and it would be safer to write:
buf_pos %= ARRAY_SIZE (buf);
and leave it to the compiler to optimize this into an AND operation if
it can.
> snprintf (ret, 64, fmt, value);
And the "64" here should be "sizeof (buf[0].place)".
Cheers
Nick
More information about the Binutils
mailing list