Handle DW_OP_GNU_push_tls_address.

Synch up with the gcc's dwarf2.h
This commit is contained in:
Nick Clifton 2002-09-12 10:35:54 +00:00
parent ecd1107e81
commit 065c959b71
4 changed files with 42 additions and 24 deletions

View file

@ -1,3 +1,8 @@
2002-09-12 Roland McGrath <roland@redhat.com>
* readelf.c (decode_location_expression): DW_OP_calli -> DW_OP_call_ref
Handle DW_OP_GNU_push_tls_address.
2002-09-11 Nick Clifton <nickc@redhat.com> 2002-09-11 Nick Clifton <nickc@redhat.com>
* po/tr.po: Updated Turkish translation. * po/tr.po: Updated Turkish translation.

View file

@ -7348,7 +7348,7 @@ decode_location_expression (data, pointer_size, length)
printf ("DW_OP_nop"); printf ("DW_OP_nop");
break; break;
/* DWARF 2.1 extensions. */ /* DWARF 3 extensions. */
case DW_OP_push_object_address: case DW_OP_push_object_address:
printf ("DW_OP_push_object_address"); printf ("DW_OP_push_object_address");
break; break;
@ -7360,8 +7360,13 @@ decode_location_expression (data, pointer_size, length)
printf ("DW_OP_call4: <%lx>", (long) byte_get (data, 4)); printf ("DW_OP_call4: <%lx>", (long) byte_get (data, 4));
data += 4; data += 4;
break; break;
case DW_OP_calli: case DW_OP_call_ref:
printf ("DW_OP_calli"); printf ("DW_OP_call_ref");
break;
/* GNU extensions. */
case DW_OP_GNU_push_tls_address:
printf ("DW_OP_GNU_push_tls_address");
break; break;
default: default:
@ -7436,13 +7441,16 @@ display_debug_loc (section, start, file)
addr = section->sh_addr; addr = section->sh_addr;
bytes = section->sh_size; bytes = section->sh_size;
section_end = start + bytes; section_end = start + bytes;
if (bytes == 0) if (bytes == 0)
{ {
printf (_("\nThe .debug_loc section is empty.\n")); printf (_("\nThe .debug_loc section is empty.\n"));
return 0; return 0;
} }
printf (_("Contents of the .debug_loc section:\n\n")); printf (_("Contents of the .debug_loc section:\n\n"));
printf (_("\n Offset Begin End Expression\n")); printf (_("\n Offset Begin End Expression\n"));
while (start < section_end) while (start < section_end)
{ {
unsigned long begin; unsigned long begin;
@ -7541,7 +7549,6 @@ fetch_indirect_string (offset)
return debug_str_contents + offset; return debug_str_contents + offset;
} }
static int static int
display_debug_str (section, start, file) display_debug_str (section, start, file)
Elf32_Internal_Shdr * section; Elf32_Internal_Shdr * section;
@ -7602,7 +7609,6 @@ display_debug_str (section, start, file)
return 1; return 1;
} }
static unsigned char * static unsigned char *
read_and_display_attr_value (attribute, form, data, cu_offset, pointer_size) read_and_display_attr_value (attribute, form, data, cu_offset, pointer_size)
unsigned long attribute; unsigned long attribute;
@ -7956,8 +7962,8 @@ display_debug_info (section, start, file)
break; break;
} }
/* Check for RELA relocations in the abbrev_offset address, and /* Check for RELA relocations in the
apply them. */ abbrev_offset address, and apply them. */
for (relsec = section_headers; for (relsec = section_headers;
relsec < section_headers + elf_header.e_shnum; relsec < section_headers + elf_header.e_shnum;
++relsec) ++relsec)
@ -8036,7 +8042,6 @@ display_debug_info (section, start, file)
free_abbrevs (); free_abbrevs ();
/* Read in the abbrevs used by this compilation unit. */ /* Read in the abbrevs used by this compilation unit. */
{ {
Elf32_Internal_Shdr * sec; Elf32_Internal_Shdr * sec;
unsigned char * begin; unsigned char * begin;

View file

@ -1,3 +1,10 @@
2002-09-12 Roland McGrath <roland@redhat.com>
* dwarf2.h: Updates from GCC version of thie file:
(enum dwarf_location_atom): DW_OP_calli -> DW_OP_call_ref.
Add DW_OP_GNU_push_tls_address.
(DW_OP_lo_user): Change to 0xe0.
2002-08-28 Catherine Moore <clm@redhat.com> 2002-08-28 Catherine Moore <clm@redhat.com>
* elf/v850.h (R_V850_LONGCALL, R_V850_ALIGN, * elf/v850.h (R_V850_LONGCALL, R_V850_ALIGN,

View file

@ -10,22 +10,22 @@
Derived from the DWARF 1 implementation written by Ron Guilmette Derived from the DWARF 1 implementation written by Ron Guilmette
(rfg@netcom.com), November 1990. (rfg@netcom.com), November 1990.
This file is part of GCC. This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later Software Foundation; either version 2, or (at your option) any later
version. version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY GCC is distributed in the hope that it will be useful, but WITHOUT
WARRANTY; without even the implied warranty of MERCHANTABILITY or ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
for more details. License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to the Free along with GCC; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */ 02111-1307, USA. */
/* This file is derived from the DWARF specification (a public document) /* This file is derived from the DWARF specification (a public document)
Revision 2.0.0 (July 27, 1993) developed by the UNIX International Revision 2.0.0 (July 27, 1993) developed by the UNIX International
@ -488,10 +488,12 @@ enum dwarf_location_atom
DW_OP_push_object_address = 0x97, DW_OP_push_object_address = 0x97,
DW_OP_call2 = 0x98, DW_OP_call2 = 0x98,
DW_OP_call4 = 0x99, DW_OP_call4 = 0x99,
DW_OP_calli = 0x9a DW_OP_call_ref = 0x9a,
/* GNU extensions. */
DW_OP_GNU_push_tls_address = 0xe0
}; };
#define DW_OP_lo_user 0x80 /* Implementation-defined range start. */ #define DW_OP_lo_user 0xe0 /* Implementation-defined range start. */
#define DW_OP_hi_user 0xff /* Implementation-defined range end. */ #define DW_OP_hi_user 0xff /* Implementation-defined range end. */
/* Type encodings. */ /* Type encodings. */
@ -679,7 +681,6 @@ enum dwarf_source_language
DW_LANG_Mips_Assembler = 0x8001 DW_LANG_Mips_Assembler = 0x8001
}; };
#define DW_LANG_lo_user 0x8000 /* Implementation-defined range start. */ #define DW_LANG_lo_user 0x8000 /* Implementation-defined range start. */
#define DW_LANG_hi_user 0xffff /* Implementation-defined range start. */ #define DW_LANG_hi_user 0xffff /* Implementation-defined range start. */