DW_CFA_def_cfa_offset_sf bug? (Re: Does gdb 5.2 support gcc 3.1.1 on Linux/mips?)

H . J . Lu hjl@lucon.org
Mon Jun 3 08:55:00 GMT 2002


On Mon, Jun 03, 2002 at 10:18:10AM -0400, Daniel Jacobowitz wrote:
> On Sun, Jun 02, 2002 at 11:10:16PM -0700, H . J . Lu wrote:
> > On Sun, Jun 02, 2002 at 11:03:31PM -0700, H . J . Lu wrote:
> > > 
> > > DW_CFA_17 is DW_CFA_offset_extended_sf, which was added to gcc on
> > > 2002-01-30. I have verifed that gcc 3.1.1 does generate it for mips.
> > > It looks like we have at least 2 bugs. First, readelf doesn't handle
> > > DW_CFA_offset_extended_sf and maybe other DAWRF debug info generated
> > > by gcc 3.1.1. Secondly, gdb 5.2 doesn't work with gcc 3.1.1 for
> > > Linux/mips.
> > 
> > dwarf2cfi.c in gdb 5.2 seems to support DW_CFA_offset_extended_sf. But
> > that file is not used anywhere, at least not for Linux/x86 nor
> > Linux/mips. Did I miss something? Shouldn't we fix gdb 5.2 and
> > binutils for gcc 3.1.1?
> 
> GDB doesn't need the CFA info on MIPS (although I'll try soon to let
> GDB use it).  Is that really what's making GDB choke?  Have you looked
> at Jakub's suggestion about gas and -gdwarf-2?
> 

It has nothing to do with gas and -gdwarf-2. I used "gcc -c". I am
trying to fix readelf first. While working on DW_CFA_def_cfa_offset_sf,
I found:

          case DW_CFA_def_cfa_offset_sf:
            uoffset = read_uleb128 (objfile->obfd, &insn_ptr);
		      ^^^^^^^^^^^^
            fs->cfa_offset = uoffset;
            /* cfa_how deliberately not set.  */
            break;

in dwarf2cfi.c in gdb 5.2. Shouldn't that be

          case DW_CFA_def_cfa_offset_sf:
            offset = read_sleb128 (objfile->obfd, &insn_ptr);
		     ^^^^^^^^^^^^
            fs->cfa_offset = offset;
            /* cfa_how deliberately not set.  */
            break;



H.J.



More information about the Gdb mailing list