On 14 May 2007 19:28, Mike Stump wrote:
> I'm seeing:
>
> ../../gcc/gcc/dwarf2out.c: In function ‘print_die’:
> ../../gcc/gcc/dwarf2out.c:5772: error: format ‘%4lu’ expects type
> ‘long unsigne
> d int’, but argument 3 has type ‘dw_offset’
> ../../gcc/gcc/dwarf2out.c:5775: error: format ‘%lu’ expects type ‘long
> unsigned
> int’, but argument 3 has type ‘dw_offset’
> ../../gcc/gcc/dwarf2out.c:5823: error: format ‘%lu’ expects type ‘long
> unsigned
> int’, but argument 3 has type ‘dw_offset’
> ../../gcc/gcc/dwarf2out.c: In function ‘output_die’:
> ../../gcc/gcc/dwarf2out.c:7094: error: format ‘%lx’ expects type ‘long
> unsigned
> int’, but argument 3 has type ‘dw_offset’
> ../../gcc/gcc/dwarf2out.c:7276: error: format ‘%lx’ expects type ‘long
> unsigned
> int’, but argument 4 has type ‘dw_offset’
> make[3]: *** [dwarf2out.o] Error 1
> make[3]: *** Waiting for unfinished jobs....
> rm gcc.pod
> make[2]: *** [all-stage2-gcc] Error 2
> make[1]: *** [stage2-bubble] Error 2
>
> currently. :-( Anyone else seeing it?
Well, it looks like this must be what Aaron was referring to in his previous
somewhat mysterious post!
> If I do this:
>
> Doing diffs in dwarf2out.c.~1~:
> --- dwarf2out.c.~1~ 2007-05-02 14:59:45.000000000 -0700
> +++ dwarf2out.c 2007-05-14 11:08:03.000000000 -0700
> @@ -3697,7 +3697,7 @@ const struct gcc_debug_hooks dwarf2_debu
> /* Various DIE's use offsets relative to the beginning of the
> .debug_info section to refer to each other. */
>
> -typedef long int dw_offset;
> +typedef unsigned long int dw_offset;
>
> /* Define typedefs here to avoid circular dependencies. */
>
> --------------
>
> it gets farther. Anyone want to claim this is obvious? I glanced at
> the code and it seems reasonable.
It's hard to see how an 'offset relative to the beginning of [ ... any,
actually ... ] section' could ever usefully or meaningfully be zero.
Particularly since ...
#ifdef DWARF2_DEBUGGING_INFO
/* This location is used by calc_die_sizes() to keep track
the offset of each DIE within the .debug_info section. */
static unsigned long next_die_offset;
#endif
...it's unsigned here.
cheers,
DaveK
--
Can't think of a witty .sigline today....