[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