This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Fix gdb/277 by separating types
- From: Michael Elizabeth Chastain <mec at shout dot net>
- To: drow at mvista dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: Sun, 12 May 2002 22:10:04 -0500
- Subject: Re: [RFA] Fix gdb/277 by separating types
I do build an object directory from scratch (just to avoid these
kinds of problems).
BTW I am using gcc 2.95.3, I don't know where you got 2.95.2 from.
I bet the difference in our machines is somewhere in libc.
I am using stock red hat linux 7.2 glibc, glibc 2.2.4-13.
It's reproducing on my machine. Here's a shorter recipe:
./gdb gdb.base/break
(gdb) break main
(gdb) run
(gdb) maint print symbols symbols_output
Have a look at the end of symbols_output in the tarball.
Mine is reproducibly crapping out in file 'init.c' here:
typedef void (*__gconv_end_fct)();
typedef int (*__gconv_fct)();
struct __gconv_info {
size_t __nsteps;
struct __gconv_step *__steps;
struct __gconv_step_data __data[0];
};
typedef int (*__gconv_init_fct)();
struct __gconv_step {
When I do maint-print-symbols with gdb 5.2, it runs fine,
and gives me this output for __gconv_step:
typedef int (*__gconv_init_fct)(struct __gconv_step *);
struct __gconv_step {
struct __gconv_loaded_object *__shlib_handle;
const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
int (*__fct)(struct __gconv_step *, struct __gconv_step_data *, const unsigned char **, const unsigned char *, unsigned char **, size_t *, int, int);
int (*__init_fct)(struct __gconv_step *);
void (*__end_fct)(struct __gconv_step *);
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
In the stack trace, I'm seeing it crap out on c_print_type of
__shlib_handle. __gconv_loaded_object is a forward reference,
but it is not defined in this symtab: it is defined in a different
symtab.
Michael C