Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jason Merrill <jason@redhat.com>
To: gdb-patches@sources.redhat.com
Cc: Jason Merrill <jason@redhat.com>
Subject: PATCH to dwarf2read.c:decode_locdesc
Date: Thu, 10 Jan 2002 04:26:00 -0000	[thread overview]
Message-ID: <wvlelkygznq.fsf@prospero.cambridge.redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 924 bytes --]

I noticed that even with Daniel's recent C++ improvements (thanks!), vbase
handling was still broken with dwarf2 because dwarf2read.c still didn't
grok the complex location expression gcc now emits.  As it happens, by a
fluke simply adding support for the missing opcodes causes decode_locdesc
to produce the answer gdb wants.  The dwarf2 output expects the stack to
start with the address of the object and produce the address of the base,
whereas in the current gdb the stack starts with 0 and produces the
negation of whatever constant is provided, which matches the stabs output.

Of course, gdb tries to complain about the derefs twice in the process, but
is currently muffled.

So, it's not a complete solution, but it's entirely correct and fixes
gdb.c++/inherit.exp.

OK to commit?

2002-01-10  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
	Fix DW_OP_minus.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1634 bytes --]

*** dwarf2read.c.~1~	Tue Jan  8 14:17:30 2002
--- dwarf2read.c	Thu Jan 10 11:54:45 2002
*************** decode_locdesc (struct dwarf_block *blk,
*** 5807,5812 ****
--- 5807,5847 ----
        op = data[i++];
        switch (op)
  	{
+ 	case DW_OP_lit0:
+ 	case DW_OP_lit1:
+ 	case DW_OP_lit2:
+ 	case DW_OP_lit3:
+ 	case DW_OP_lit4:
+ 	case DW_OP_lit5:
+ 	case DW_OP_lit6:
+ 	case DW_OP_lit7:
+ 	case DW_OP_lit8:
+ 	case DW_OP_lit9:
+ 	case DW_OP_lit10:
+ 	case DW_OP_lit11:
+ 	case DW_OP_lit12:
+ 	case DW_OP_lit13:
+ 	case DW_OP_lit14:
+ 	case DW_OP_lit15:
+ 	case DW_OP_lit16:
+ 	case DW_OP_lit17:
+ 	case DW_OP_lit18:
+ 	case DW_OP_lit19:
+ 	case DW_OP_lit20:
+ 	case DW_OP_lit21:
+ 	case DW_OP_lit22:
+ 	case DW_OP_lit23:
+ 	case DW_OP_lit24:
+ 	case DW_OP_lit25:
+ 	case DW_OP_lit26:
+ 	case DW_OP_lit27:
+ 	case DW_OP_lit28:
+ 	case DW_OP_lit29:
+ 	case DW_OP_lit30:
+ 	case DW_OP_lit31:
+ 	  stack[++stacki] = op - DW_OP_lit0;
+ 	  break;
+ 
  	case DW_OP_reg0:
  	case DW_OP_reg1:
  	case DW_OP_reg2:
*************** decode_locdesc (struct dwarf_block *blk,
*** 5965,5970 ****
--- 6000,6010 ----
  	  i += bytes_read;
  	  break;
  
+ 	case DW_OP_dup:
+ 	  stack[stacki + 1] = stack[stacki];
+ 	  stacki++;
+ 	  break;
+ 
  	case DW_OP_plus:
  	  stack[stacki - 1] += stack[stacki];
  	  stacki--;
*************** decode_locdesc (struct dwarf_block *blk,
*** 5976,5982 ****
  	  break;
  
  	case DW_OP_minus:
! 	  stack[stacki - 1] = stack[stacki] - stack[stacki - 1];
  	  stacki--;
  	  break;
  
--- 6016,6022 ----
  	  break;
  
  	case DW_OP_minus:
! 	  stack[stacki - 1] -= stack[stacki];
  	  stacki--;
  	  break;
  

             reply	other threads:[~2002-01-10 12:26 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-10  4:26 Jason Merrill [this message]
2002-01-10 11:57 ` Daniel Jacobowitz
2002-01-10 14:07 ` Elena Zannoni
2002-01-11  2:13   ` Jason Merrill
2002-01-11 14:48     ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=wvlelkygznq.fsf@prospero.cambridge.redhat.com \
    --to=jason@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox