diff options
author | Nick Clifton <nickc@redhat.com> | 2002-09-12 10:35:54 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2002-09-12 10:35:54 +0000 |
commit | 065c959b713a738e84e065d57428e27eccee9076 (patch) | |
tree | f46025a4d55201ff09d41c6987b21542d8de898b /binutils | |
parent | ecd1107e8177b16c72a3bd940e84418e8e453ec1 (diff) | |
download | fsf-binutils-gdb-065c959b713a738e84e065d57428e27eccee9076.zip fsf-binutils-gdb-065c959b713a738e84e065d57428e27eccee9076.tar.gz fsf-binutils-gdb-065c959b713a738e84e065d57428e27eccee9076.tar.bz2 |
Handle DW_OP_GNU_push_tls_address.
Synch up with the gcc's dwarf2.h
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/readelf.c | 21 |
2 files changed, 18 insertions, 8 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 280467b..135cd5e 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -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> * po/tr.po: Updated Turkish translation. diff --git a/binutils/readelf.c b/binutils/readelf.c index 870e0df..05b553d 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -7348,7 +7348,7 @@ decode_location_expression (data, pointer_size, length) printf ("DW_OP_nop"); break; - /* DWARF 2.1 extensions. */ + /* DWARF 3 extensions. */ case DW_OP_push_object_address: printf ("DW_OP_push_object_address"); break; @@ -7360,8 +7360,13 @@ decode_location_expression (data, pointer_size, length) printf ("DW_OP_call4: <%lx>", (long) byte_get (data, 4)); data += 4; break; - case DW_OP_calli: - printf ("DW_OP_calli"); + case DW_OP_call_ref: + printf ("DW_OP_call_ref"); + break; + + /* GNU extensions. */ + case DW_OP_GNU_push_tls_address: + printf ("DW_OP_GNU_push_tls_address"); break; default: @@ -7436,13 +7441,16 @@ display_debug_loc (section, start, file) addr = section->sh_addr; bytes = section->sh_size; section_end = start + bytes; + if (bytes == 0) { printf (_("\nThe .debug_loc section is empty.\n")); return 0; } + printf (_("Contents of the .debug_loc section:\n\n")); printf (_("\n Offset Begin End Expression\n")); + while (start < section_end) { unsigned long begin; @@ -7541,7 +7549,6 @@ fetch_indirect_string (offset) return debug_str_contents + offset; } - static int display_debug_str (section, start, file) Elf32_Internal_Shdr * section; @@ -7602,7 +7609,6 @@ display_debug_str (section, start, file) return 1; } - static unsigned char * read_and_display_attr_value (attribute, form, data, cu_offset, pointer_size) unsigned long attribute; @@ -7956,8 +7962,8 @@ display_debug_info (section, start, file) break; } - /* Check for RELA relocations in the abbrev_offset address, and - apply them. */ + /* Check for RELA relocations in the + abbrev_offset address, and apply them. */ for (relsec = section_headers; relsec < section_headers + elf_header.e_shnum; ++relsec) @@ -8036,7 +8042,6 @@ display_debug_info (section, start, file) free_abbrevs (); /* Read in the abbrevs used by this compilation unit. */ - { Elf32_Internal_Shdr * sec; unsigned char * begin; |