This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: PATCH: Use stabs for Linux/mips (Re: binutils is broken onELF/MIPS)
> I tried a dirty, quick change enclosed. I still can't use gdb 5.2 to
> debug gcc 3.1.1 on Linux/mipsel. I don't think it is a good idea to
> make gcc 3.1.1 generate unusable debug info by default..
>
Definitely not a huge fan of that patch. I have another one from Matt
Green (attached) that I'm not ecstatic about either, but also seems to
work. The correct answer is to make dwarf-2 work under mips. It may
require some reworking though.
-eric
--
I will not carve gods
* config/obj-elf.h (ECOFF_DEBUGGING): Define as a tested of
debug_type being DEBUG_ECOFF, in the non MIPS_STABS_ELF case.
* config/tc-mips.c (mips_nonecoff_pseudo_table): Point "file" at
s_mips_file() and "loc" at s_mips_loc().
(s_file): Delete.
(s_mips_file, s_mips_loc): New functions for ".file" and ".loc"
support.
Index: gas/config/obj-elf.h
===================================================================
RCS file: /cvs/src/src/gas/config/obj-elf.h,v
retrieving revision 1.15
diff -p -r1.15 obj-elf.h
*** gas/config/obj-elf.h 8 Aug 2001 13:11:58 -0000 1.15
--- gas/config/obj-elf.h 28 May 2002 18:08:22 -0000
*************** extern int alpha_flag_mdebug;
*** 51,57 ****
#ifdef MIPS_STABS_ELF
#define ECOFF_DEBUGGING 0
#else
! #define ECOFF_DEBUGGING 1
#endif /* MIPS_STABS_ELF */
#endif /* TC_MIPS */
--- 51,57 ----
#ifdef MIPS_STABS_ELF
#define ECOFF_DEBUGGING 0
#else
! #define ECOFF_DEBUGGING (debug_type == DEBUG_ECOFF)
#endif /* MIPS_STABS_ELF */
#endif /* TC_MIPS */
Index: gas/config/tc-mips.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mips.c,v
retrieving revision 1.115
diff -p -r1.115 tc-mips.c
*** gas/config/tc-mips.c 4 Apr 2002 07:43:11 -0000 1.115
--- gas/config/tc-mips.c 28 May 2002 18:08:54 -0000
*************** static void s_mips_frame PARAMS ((int));
*** 749,755 ****
static void s_mips_mask PARAMS ((int));
static void s_mips_stab PARAMS ((int));
static void s_mips_weakext PARAMS ((int));
! static void s_file PARAMS ((int));
static int mips16_extended_frag PARAMS ((fragS *, asection *, long));
static const char *mips_isa_to_str PARAMS ((int));
static const char *mips_cpu_to_str PARAMS ((int));
--- 749,756 ----
static void s_mips_mask PARAMS ((int));
static void s_mips_stab PARAMS ((int));
static void s_mips_weakext PARAMS ((int));
! static void s_mips_file PARAMS ((int));
! static void s_mips_loc PARAMS ((int));
static int mips16_extended_frag PARAMS ((fragS *, asection *, long));
static const char *mips_isa_to_str PARAMS ((int));
static const char *mips_cpu_to_str PARAMS ((int));
*************** static const pseudo_typeS mips_nonecoff_
*** 882,891 ****
{"end", s_mips_end, 0},
{"endb", s_ignore, 0},
{"ent", s_mips_ent, 0},
! {"file", s_file, 0},
{"fmask", s_mips_mask, 'F'},
{"frame", s_mips_frame, 0},
! {"loc", s_ignore, 0},
{"mask", s_mips_mask, 'R'},
{"verstamp", s_ignore, 0},
{ NULL, NULL, 0 },
--- 883,892 ----
{"end", s_mips_end, 0},
{"endb", s_ignore, 0},
{"ent", s_mips_ent, 0},
! {"file", s_mips_file, 0},
{"fmask", s_mips_mask, 'F'},
{"frame", s_mips_frame, 0},
! {"loc", s_mips_loc, 0},
{"mask", s_mips_mask, 'R'},
{"verstamp", s_ignore, 0},
{ NULL, NULL, 0 },
*************** get_number ()
*** 12938,12948 ****
is an initial number which is the ECOFF file index. */
static void
! s_file (x)
int x ATTRIBUTE_UNUSED;
{
! get_number ();
! s_app_file (0);
}
/* The .end directive. */
--- 12939,12968 ----
is an initial number which is the ECOFF file index. */
static void
! s_mips_file (x)
int x ATTRIBUTE_UNUSED;
{
! if (ECOFF_DEBUGGING)
! {
! get_number ();
! s_app_file (0);
! }
! else if (debug_type == DEBUG_DWARF2)
! {
! dwarf2_directive_file (0);
! }
! }
!
! /* The .loc directive, ignored for everything but DWARF2. */
!
! static void
! s_mips_loc (x)
! int x ATTRIBUTE_UNUSED;
! {
! if (debug_type == DEBUG_DWARF2)
! {
! dwarf2_directive_loc (0);
! }
}
/* The .end directive. */