mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 02:53:48 +08:00
* dwarf2cfi.c: Include "gcore.h".
(execute_stack_op): Fix implementation of the DW_OP_deref and DW_OP_deref_size operators by letting do their lookup in the target.
This commit is contained in:
parent
c74222f7de
commit
9b94f7bfd5
@ -1,3 +1,10 @@
|
||||
2002-07-08 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* dwarf2cfi.c: Include "gcore.h".
|
||||
(execute_stack_op): Fix implementation of the
|
||||
DW_OP_deref and DW_OP_deref_size operators by letting do their
|
||||
lookup in the target.
|
||||
|
||||
2002-07-07 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
From Peter Schauer <Peter.Schauer@regent.e-technik.tu-muenchen.de>:
|
||||
|
@ -21,6 +21,7 @@
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbcore.h"
|
||||
#include "symtab.h"
|
||||
#include "symfile.h"
|
||||
#include "objfiles.h"
|
||||
@ -1119,32 +1120,21 @@ execute_stack_op (struct objfile *objfile,
|
||||
{
|
||||
case DW_OP_deref:
|
||||
{
|
||||
char *ptr = (char *) result;
|
||||
result = read_pointer (objfile->obfd, &ptr);
|
||||
int len = TARGET_ADDR_BIT / TARGET_CHAR_BIT;
|
||||
if (len != 4 && len != 8)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"execute_stack_op error");
|
||||
result = read_memory_unsigned_integer (result, len);
|
||||
}
|
||||
break;
|
||||
|
||||
case DW_OP_deref_size:
|
||||
{
|
||||
char *ptr = (char *) result;
|
||||
switch (*op_ptr++)
|
||||
{
|
||||
case 1:
|
||||
result = read_1u (objfile->obfd, &ptr);
|
||||
break;
|
||||
case 2:
|
||||
result = read_2u (objfile->obfd, &ptr);
|
||||
break;
|
||||
case 4:
|
||||
result = read_4u (objfile->obfd, &ptr);
|
||||
break;
|
||||
case 8:
|
||||
result = read_8u (objfile->obfd, &ptr);
|
||||
break;
|
||||
default:
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"execute_stack_op error");
|
||||
}
|
||||
int len = *op_ptr++;
|
||||
if (len != 1 && len != 2 && len != 4 && len !=8)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"execute_stack_op error");
|
||||
result = read_memory_unsigned_integer (result, len);
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user