This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Fix to handle enums with values above LONG_MAX
John R. Moore writes:
>
> Ok, this went on deaf ears... to illustrate, do the following:
>
It's in my queue. Do you get this error on other platforms besides
Linux?
Elena
> ------------------------- example.c ---------------------------
> #include <stdio.h>
>
> enum AAA
> {
> a = 0x1,
> b = 0xFFFFFFFF, /* If this is > LONG_MAX we core dump */
> };
>
> int
> main ()
> {
> unsigned int x = a;
> printf ("x = 0x%x\n", x);
> }
> ----------------------- end example.c -------------------------
>
> % gcc -g example.c -o example
> % gdb -nw example
> (gdb) print a
> Segmentation fault (core dumped)
> %
>
> John Moore
>
> On Tue, 8 May 2001, John R. Moore wrote:
>
> >
> > This fix has been tested on linux 2.4.4 kernel using gcc RedHat-2.97.
> > Without this fix, gdb simply core-dumps.
> >
> >
> > 2001-05-08 John Moore <jmoore@redhat.com>
> >
> > * stabsread.c (read_huge_number): Fix to allow gdb to handle
> > enums with unsigned long values above LONG_MAX.
> >
> > Index: gdb/stabsread.c
> > ===================================================================
> > RCS file: /cvs/cvsfiles/devo/gdb/stabsread.c,v
> > retrieving revision 2.178
> > diff -p -u -r2.178 stabsread.c
> > --- gdb/stabsread.c 2001/03/26 19:54:39 2.178
> > +++ gdb/stabsread.c 2001/05/07 22:45:47
> > @@ -4433,10 +4433,7 @@ read_huge_number (char **pp, int end, in
> > p++;
> > }
> >
> > - if (os9k_stabs)
> > - upper_limit = ULONG_MAX / radix;
> > - else
> > - upper_limit = LONG_MAX / radix;
> > + upper_limit = ULONG_MAX / radix;
> >
> > while ((c = *p++) >= '0' && c < ('0' + radix))
> > {
> >
> >
> >
>