PATCH: Use stabs for Linux/mips (Re: binutils is broken on ELF/MIPS)

Eric Christopher echristo@redhat.com
Mon Jun 3 17:50:00 GMT 2002


> 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.  */



More information about the Gdb mailing list