From 2dc4cec1f343cc27605be560098badd0e90137a4 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 28 Jan 2008 15:15:32 +0000 Subject: [PATCH] binutils/ 2008-01-28 H.J. Lu * dwarf.c: Include "elf/common.h". (eh_addr_size): Changed to int. (dwarf_regnames_i386): New. (dwarf_regnames_x86_64): Likewise. (dwarf_regnames): Likewise. (dwarf_regnames_count): Likewise. (init_dwarf_regnames): Likewise. (regname): Likewise. (frame_display_row): Properly support different address size. Call regname to get register name. (display_debug_frames): Call regname to get register name. Display DW_CFA_def_cfa_register as DW_CFA_def_cfa_register instead of DW_CFA_def_cfa_reg. * dwarf.h (init_dwarf_regnames): New. * objdump.c: Include "elf-bfd.h". (dump_dwarf): Call init_dwarf_regnames on ELF input. * readelf.c (guess_is_rela): Change argument to int. (parse_args): Remove the undocumented upper case options for -wX. (process_file_header): Call init_dwarf_regnames if do_dwarf_register is true. gas/testsuite/ 2008-01-28 H.J. Lu * gas/cfi/cfi-alpha-1.d: Replace DW_CFA_def_cfa_reg with DW_CFA_def_cfa_register. * gas/cfi/cfi-alpha-3.d: Likewise. * gas/cfi/cfi-hppa-1.d: Likewise. * gas/cfi/cfi-i386.d: Likewise. * gas/cfi/cfi-m68k.d: Likewise. * gas/cfi/cfi-mips-1.d: Likewise. * gas/cfi/cfi-sh-1.d: Likewise. * gas/cfi/cfi-sparc-1.d: Likewise. * gas/cfi/cfi-sparc64-1.d: Likewise. * gas/cfi/cfi-x86_64.d: Likewise. * gas/cfi/cfi-common-1.d: Updated for i386/x86-64 register names. * gas/cfi/cfi-common-2.d: Likewise. * gas/cfi/cfi-common-5.d: Likewise. * gas/cfi/cfi-i386.d: Likewise. * gas/cfi/cfi-x86_64.d: Likewise. ld/testsuite/ 2008-01-28 H.J. Lu * ld-elf/eh1.d: Replace DW_CFA_def_cfa_reg with DW_CFA_def_cfa_register. Updated for i386/x86-64 register names. * ld-elf/eh2.d: Likewise. * ld-elf/eh3.d: Likewise. * ld-elf/eh4.d: Likewise. * ld-elf/eh5.d: Likewise. --- binutils/ChangeLog | 27 ++++++ binutils/dwarf.c | 159 +++++++++++++++++++++++++++------- binutils/dwarf.h | 4 +- binutils/objdump.c | 7 ++ binutils/readelf.c | 11 +-- gas/testsuite/ChangeLog | 21 +++++ gas/testsuite/gas/cfi/cfi-alpha-1.d | 2 +- gas/testsuite/gas/cfi/cfi-alpha-3.d | 4 +- gas/testsuite/gas/cfi/cfi-common-1.d | 6 +- gas/testsuite/gas/cfi/cfi-common-2.d | 2 +- gas/testsuite/gas/cfi/cfi-common-5.d | 2 +- gas/testsuite/gas/cfi/cfi-hppa-1.d | 8 +- gas/testsuite/gas/cfi/cfi-i386.d | 14 +-- gas/testsuite/gas/cfi/cfi-m68k.d | 4 +- gas/testsuite/gas/cfi/cfi-mips-1.d | 2 +- gas/testsuite/gas/cfi/cfi-sh-1.d | 2 +- gas/testsuite/gas/cfi/cfi-sparc-1.d | 2 +- gas/testsuite/gas/cfi/cfi-sparc64-1.d | 2 +- gas/testsuite/gas/cfi/cfi-x86_64.d | 28 +++--- ld/testsuite/ChangeLog | 10 +++ ld/testsuite/ld-elf/eh1.d | 8 +- ld/testsuite/ld-elf/eh2.d | 8 +- ld/testsuite/ld-elf/eh3.d | 8 +- ld/testsuite/ld-elf/eh4.d | 4 +- ld/testsuite/ld-elf/eh5.d | 22 ++--- 25 files changed, 261 insertions(+), 106 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index a0d3c71..0498f00 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,30 @@ +2008-01-28 H.J. Lu + + * dwarf.c: Include "elf/common.h". + (eh_addr_size): Changed to int. + (dwarf_regnames_i386): New. + (dwarf_regnames_x86_64): Likewise. + (dwarf_regnames): Likewise. + (dwarf_regnames_count): Likewise. + (init_dwarf_regnames): Likewise. + (regname): Likewise. + (frame_display_row): Properly support different address size. + Call regname to get register name. + (display_debug_frames): Call regname to get register name. + Display DW_CFA_def_cfa_register as DW_CFA_def_cfa_register + instead of DW_CFA_def_cfa_reg. + + * dwarf.h (init_dwarf_regnames): New. + + * objdump.c: Include "elf-bfd.h". + (dump_dwarf): Call init_dwarf_regnames on ELF input. + + * readelf.c (guess_is_rela): Change argument to int. + (parse_args): Remove the undocumented upper case options for + -wX. + (process_file_header): Call init_dwarf_regnames if + do_dwarf_register is true. + 2008-01-25 DJ Delorie * readelf.c (process_section_headers): Add m16c handler. diff --git a/binutils/dwarf.c b/binutils/dwarf.c index df83be9..d4eb4aa 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -23,6 +23,7 @@ #include "libiberty.h" #include "bfd.h" #include "bucomm.h" +#include "elf/common.h" #include "elf/dwarf2.h" #include "dwarf.h" @@ -38,7 +39,7 @@ static debug_info *debug_information = NULL; that the .debug_info section could not be loaded/parsed. */ #define DEBUG_INFO_UNAVAILABLE (unsigned int) -1 -dwarf_vma eh_addr_size; +int eh_addr_size; int do_debug_info; int do_debug_abbrevs; @@ -3118,6 +3119,87 @@ frame_need_space (Frame_Chunk *fc, int reg) } } +static const char *const dwarf_regnames_i386[] = +{ + "eax", "ecx", "edx", "ebx", + "esp", "ebp", "esi", "edi", + "eip", "eflags", NULL, + "st0", "st1", "st2", "st3", + "st4", "st5", "st6", "st7", + NULL, NULL, + "xmm0", "xmm1", "xmm2", "xmm3", + "xmm4", "xmm5", "xmm6", "xmm7", + "mm0", "mm1", "mm2", "mm3", + "mm4", "mm5", "mm6", "mm7", + "fcw", "fsw", "mxcsr", + "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL, + "tr", "ldtr" +}; + +static const char *const dwarf_regnames_x86_64[] = +{ + "rax", "rdx", "rcx", "rbx", + "rsi", "rdi", "rbp", "rsp", + "r8", "r9", "r10", "r11", + "r12", "r13", "r14", "r15", + "rip", + "xmm0", "xmm1", "xmm2", "xmm3", + "xmm4", "xmm5", "xmm6", "xmm7", + "xmm8", "xmm9", "xmm10", "xmm11", + "xmm12", "xmm13", "xmm14", "xmm15", + "st0", "st1", "st2", "st3", + "st4", "st5", "st6", "st7", + "mm0", "mm1", "mm2", "mm3", + "mm4", "mm5", "mm6", "mm7", + "rflags", + "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL, + "fs.base", "gs.base", NULL, NULL, + "tr", "ldtr", + "mxcsr", "fcw", "fsw" +}; + +static const char *const *dwarf_regnames; +static unsigned int dwarf_regnames_count; + +void +init_dwarf_regnames (unsigned int e_machine) +{ + switch (e_machine) + { + case EM_386: + case EM_486: + dwarf_regnames = dwarf_regnames_i386; + dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_i386); + break; + + case EM_X86_64: + dwarf_regnames = dwarf_regnames_x86_64; + dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_x86_64); + break; + + default: + break; + } +} + +static const char * +regname (unsigned int regno, int row) +{ + static char reg[64]; + if (dwarf_regnames + && regno < dwarf_regnames_count + && dwarf_regnames [regno] != NULL) + { + if (row) + return dwarf_regnames [regno]; + snprintf (reg, sizeof (reg), "r%d (%s)", regno, + dwarf_regnames [regno]); + } + else + snprintf (reg, sizeof (reg), "r%d", regno); + return reg; +} + static void frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs) { @@ -3129,27 +3211,29 @@ frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs) if (*need_col_headers) { + static const char *loc = " LOC"; + *need_col_headers = 0; - printf (" LOC CFA "); + printf ("%-*s CFA ", eh_addr_size * 2, loc); for (r = 0; r < *max_regs; r++) if (fc->col_type[r] != DW_CFA_unreferenced) { if (r == fc->ra) - printf ("ra "); + printf ("ra "); else - printf ("r%-4d", r); + printf ("%-5s ", regname (r, 1)); } printf ("\n"); } - printf ("%08lx ", fc->pc_begin); + printf ("%0*lx ", eh_addr_size * 2, fc->pc_begin); if (fc->cfa_exp) strcpy (tmp, "exp"); else - sprintf (tmp, "r%d%+d", fc->cfa_reg, fc->cfa_offset); + sprintf (tmp, "%s%+d", regname (fc->cfa_reg, 1), fc->cfa_offset); printf ("%-8s ", tmp); for (r = 0; r < fc->ncols; r++) @@ -3171,7 +3255,7 @@ frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs) sprintf (tmp, "v%+d", fc->col_offset[r]); break; case DW_CFA_register: - sprintf (tmp, "r%d", fc->col_offset[r]); + sprintf (tmp, "%s", regname (fc->col_offset[r], 0)); break; case DW_CFA_expression: strcpy (tmp, "exp"); @@ -3183,7 +3267,7 @@ frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs) strcpy (tmp, "n/a"); break; } - printf ("%-5s", tmp); + printf ("%-5s ", tmp); } } printf ("\n"); @@ -3631,15 +3715,15 @@ display_debug_frames (struct dwarf_section *section, case DW_CFA_offset: roffs = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_offset: r%d at cfa%+ld\n", - opa, roffs * fc->data_factor); + printf (" DW_CFA_offset: %s at cfa%+ld\n", + regname (opa, 0), roffs * fc->data_factor); fc->col_type[opa] = DW_CFA_offset; fc->col_offset[opa] = roffs * fc->data_factor; break; case DW_CFA_restore: if (! do_debug_frames_interp) - printf (" DW_CFA_restore: r%d\n", opa); + printf (" DW_CFA_restore: %s\n", regname (opa, 0)); fc->col_type[opa] = cie->col_type[opa]; fc->col_offset[opa] = cie->col_offset[opa]; break; @@ -3693,8 +3777,8 @@ display_debug_frames (struct dwarf_section *section, reg = LEB (); roffs = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_offset_extended: r%ld at cfa%+ld\n", - reg, roffs * fc->data_factor); + printf (" DW_CFA_offset_extended: %s at cfa%+ld\n", + regname (reg, 0), roffs * fc->data_factor); fc->col_type[reg] = DW_CFA_offset; fc->col_offset[reg] = roffs * fc->data_factor; break; @@ -3703,8 +3787,8 @@ display_debug_frames (struct dwarf_section *section, reg = LEB (); roffs = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_val_offset: r%ld at cfa%+ld\n", - reg, roffs * fc->data_factor); + printf (" DW_CFA_val_offset: %s at cfa%+ld\n", + regname (reg, 0), roffs * fc->data_factor); fc->col_type[reg] = DW_CFA_val_offset; fc->col_offset[reg] = roffs * fc->data_factor; break; @@ -3712,7 +3796,8 @@ display_debug_frames (struct dwarf_section *section, case DW_CFA_restore_extended: reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_restore_extended: r%ld\n", reg); + printf (" DW_CFA_restore_extended: %s\n", + regname (reg, 0)); fc->col_type[reg] = cie->col_type[reg]; fc->col_offset[reg] = cie->col_offset[reg]; break; @@ -3720,7 +3805,7 @@ display_debug_frames (struct dwarf_section *section, case DW_CFA_undefined: reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_undefined: r%ld\n", reg); + printf (" DW_CFA_undefined: %s\n", regname (reg, 0)); fc->col_type[reg] = DW_CFA_undefined; fc->col_offset[reg] = 0; break; @@ -3728,7 +3813,7 @@ display_debug_frames (struct dwarf_section *section, case DW_CFA_same_value: reg = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_same_value: r%ld\n", reg); + printf (" DW_CFA_same_value: %s\n", regname (reg, 0)); fc->col_type[reg] = DW_CFA_same_value; fc->col_offset[reg] = 0; break; @@ -3737,7 +3822,11 @@ display_debug_frames (struct dwarf_section *section, reg = LEB (); roffs = LEB (); if (! do_debug_frames_interp) - printf (" DW_CFA_register: r%ld in r%ld\n", reg, roffs); + { + printf (" DW_CFA_register: %s in ", + regname (reg, 0)); + puts (regname (roffs, 0)); + } fc->col_type[reg] = DW_CFA_register; fc->col_offset[reg] = roffs; break; @@ -3779,15 +3868,16 @@ display_debug_frames (struct dwarf_section *section, fc->cfa_offset = LEB (); fc->cfa_exp = 0; if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa: r%d ofs %d\n", - fc->cfa_reg, fc->cfa_offset); + printf (" DW_CFA_def_cfa: %s ofs %d\n", + regname (fc->cfa_reg, 0), fc->cfa_offset); break; case DW_CFA_def_cfa_register: fc->cfa_reg = LEB (); fc->cfa_exp = 0; if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_reg: r%d\n", fc->cfa_reg); + printf (" DW_CFA_def_cfa_register: %s\n", + regname (fc->cfa_reg, 0)); break; case DW_CFA_def_cfa_offset: @@ -3818,8 +3908,10 @@ display_debug_frames (struct dwarf_section *section, ul = LEB (); if (! do_debug_frames_interp) { - printf (" DW_CFA_expression: r%ld (", reg); - decode_location_expression (start, eh_addr_size, ul, 0); + printf (" DW_CFA_expression: %s (", + regname (reg, 0)); + decode_location_expression (start, eh_addr_size, + ul, 0); printf (")\n"); } fc->col_type[reg] = DW_CFA_expression; @@ -3831,7 +3923,8 @@ display_debug_frames (struct dwarf_section *section, ul = LEB (); if (! do_debug_frames_interp) { - printf (" DW_CFA_val_expression: r%ld (", reg); + printf (" DW_CFA_val_expression: %s (", + regname (reg, 0)); decode_location_expression (start, eh_addr_size, ul, 0); printf (")\n"); } @@ -3844,8 +3937,8 @@ display_debug_frames (struct dwarf_section *section, l = SLEB (); frame_need_space (fc, reg); if (! do_debug_frames_interp) - printf (" DW_CFA_offset_extended_sf: r%ld at cfa%+ld\n", - reg, l * fc->data_factor); + printf (" DW_CFA_offset_extended_sf: %s at cfa%+ld\n", + regname (reg, 0), l * fc->data_factor); fc->col_type[reg] = DW_CFA_offset; fc->col_offset[reg] = l * fc->data_factor; break; @@ -3855,8 +3948,8 @@ display_debug_frames (struct dwarf_section *section, l = SLEB (); frame_need_space (fc, reg); if (! do_debug_frames_interp) - printf (" DW_CFA_val_offset_sf: r%ld at cfa%+ld\n", - reg, l * fc->data_factor); + printf (" DW_CFA_val_offset_sf: %s at cfa%+ld\n", + regname (reg, 0), l * fc->data_factor); fc->col_type[reg] = DW_CFA_val_offset; fc->col_offset[reg] = l * fc->data_factor; break; @@ -3867,8 +3960,8 @@ display_debug_frames (struct dwarf_section *section, fc->cfa_offset = fc->cfa_offset * fc->data_factor; fc->cfa_exp = 0; if (! do_debug_frames_interp) - printf (" DW_CFA_def_cfa_sf: r%d ofs %d\n", - fc->cfa_reg, fc->cfa_offset); + printf (" DW_CFA_def_cfa_sf: %s ofs %d\n", + regname (fc->cfa_reg, 0), fc->cfa_offset); break; case DW_CFA_def_cfa_offset_sf: @@ -3905,8 +3998,8 @@ display_debug_frames (struct dwarf_section *section, l = - LEB (); frame_need_space (fc, reg); if (! do_debug_frames_interp) - printf (" DW_CFA_GNU_negative_offset_extended: r%ld at cfa%+ld\n", - reg, l * fc->data_factor); + printf (" DW_CFA_GNU_negative_offset_extended: %s at cfa%+ld\n", + regname (reg, 0), l * fc->data_factor); fc->col_type[reg] = DW_CFA_offset; fc->col_offset[reg] = l * fc->data_factor; break; diff --git a/binutils/dwarf.h b/binutils/dwarf.h index 113a8f9..a0cffb9 100644 --- a/binutils/dwarf.h +++ b/binutils/dwarf.h @@ -91,7 +91,7 @@ extern dwarf_vma (*byte_get) (unsigned char *, int); extern dwarf_vma byte_get_little_endian (unsigned char *, int); extern dwarf_vma byte_get_big_endian (unsigned char *, int); -extern dwarf_vma eh_addr_size; +extern int eh_addr_size; extern int do_debug_info; extern int do_debug_abbrevs; @@ -105,6 +105,8 @@ extern int do_debug_macinfo; extern int do_debug_str; extern int do_debug_loc; +extern void init_dwarf_regnames (unsigned int); + extern int load_debug_section (enum dwarf_section_display_enum, void *); extern void free_debug_section (enum dwarf_section_display_enum); diff --git a/binutils/objdump.c b/binutils/objdump.c index 5a2ea6d..e5ee5d2 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -52,6 +52,7 @@ #include "sysdep.h" #include "bfd.h" +#include "elf-bfd.h" #include "progress.h" #include "bucomm.h" #include "dwarf.h" @@ -2186,6 +2187,12 @@ dump_dwarf (bfd *abfd) check_mach_o_dwarf (abfd); + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) + { + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + init_dwarf_regnames (bed->elf_machine_code); + } + bfd_map_over_sections (abfd, dump_dwarf_section, NULL); free_debug_memory (); diff --git a/binutils/readelf.c b/binutils/readelf.c index 20a7681..55ab842 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -624,7 +624,7 @@ find_section (const char *name) /* Guess the relocation size commonly used by the specific machines. */ static int -guess_is_rela (unsigned long e_machine) +guess_is_rela (unsigned int e_machine) { switch (e_machine) { @@ -3032,22 +3032,18 @@ parse_args (int argc, char **argv) switch (optarg[index++]) { case 'i': - case 'I': do_debug_info = 1; break; case 'a': - case 'A': do_debug_abbrevs = 1; break; case 'l': - case 'L': do_debug_lines = 1; break; case 'p': - case 'P': do_debug_pubnames = 1; break; @@ -3066,17 +3062,14 @@ parse_args (int argc, char **argv) break; case 'm': - case 'M': do_debug_macinfo = 1; break; case 's': - case 'S': do_debug_str = 1; break; case 'o': - case 'O': do_debug_loc = 1; break; @@ -3246,6 +3239,8 @@ process_file_header (void) return 0; } + init_dwarf_regnames (elf_header.e_machine); + if (do_header) { int i; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index c13d97b..519931d 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2008-01-28 H.J. Lu + + * gas/cfi/cfi-alpha-1.d: Replace DW_CFA_def_cfa_reg with + DW_CFA_def_cfa_register. + * gas/cfi/cfi-alpha-3.d: Likewise. + * gas/cfi/cfi-hppa-1.d: Likewise. + * gas/cfi/cfi-i386.d: Likewise. + * gas/cfi/cfi-m68k.d: Likewise. + * gas/cfi/cfi-mips-1.d: Likewise. + * gas/cfi/cfi-sh-1.d: Likewise. + * gas/cfi/cfi-sparc-1.d: Likewise. + * gas/cfi/cfi-sparc64-1.d: Likewise. + * gas/cfi/cfi-x86_64.d: Likewise. + + * gas/cfi/cfi-common-1.d: Updated for i386/x86-64 register + names. + * gas/cfi/cfi-common-2.d: Likewise. + * gas/cfi/cfi-common-5.d: Likewise. + * gas/cfi/cfi-i386.d: Likewise. + * gas/cfi/cfi-x86_64.d: Likewise. + 2008-01-24 H.J. Lu * gas/i386/x86-64-sib.s: Add tests for r12. diff --git a/gas/testsuite/gas/cfi/cfi-alpha-1.d b/gas/testsuite/gas/cfi/cfi-alpha-1.d index 4b3a340..5703c9c 100644 --- a/gas/testsuite/gas/cfi/cfi-alpha-1.d +++ b/gas/testsuite/gas/cfi/cfi-alpha-1.d @@ -10,7 +10,7 @@ The section .eh_frame contains: Return address column: 26 Augmentation data: 1b - DW_CFA_def_cfa_reg: r30 + DW_CFA_def_cfa_register: r30 DW_CFA_nop 00000014 00000020 00000018 FDE cie=00000000 pc=00000000..00000034 diff --git a/gas/testsuite/gas/cfi/cfi-alpha-3.d b/gas/testsuite/gas/cfi/cfi-alpha-3.d index f7bb8f0..61ab78b 100644 --- a/gas/testsuite/gas/cfi/cfi-alpha-3.d +++ b/gas/testsuite/gas/cfi/cfi-alpha-3.d @@ -10,7 +10,7 @@ The section .eh_frame contains: Return address column: 26 Augmentation data: 1b - DW_CFA_def_cfa_reg: r30 + DW_CFA_def_cfa_register: r30 DW_CFA_nop 00000014 00000028 00000018 FDE cie=00000000 pc=00000000..00000040 @@ -25,7 +25,7 @@ The section .eh_frame contains: DW_CFA_advance_loc: 4 to 00000014 DW_CFA_offset: r34 at cfa-8 DW_CFA_advance_loc: 4 to 00000018 - DW_CFA_def_cfa_reg: r15 + DW_CFA_def_cfa_register: r15 DW_CFA_advance_loc: 36 to 0000003c DW_CFA_def_cfa: r30 ofs 0 DW_CFA_nop diff --git a/gas/testsuite/gas/cfi/cfi-common-1.d b/gas/testsuite/gas/cfi/cfi-common-1.d index 9f5d993..1a5ee08 100644 --- a/gas/testsuite/gas/cfi/cfi-common-1.d +++ b/gas/testsuite/gas/cfi/cfi-common-1.d @@ -16,8 +16,8 @@ The section .eh_frame contains: 00000014 00000018 00000018 FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 - DW_CFA_offset: r1 at cfa-8 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 + DW_CFA_offset: r1( \((rdx|ecx)\)|) at cfa-8 DW_CFA_advance_loc: 4 to .* DW_CFA_def_cfa_offset: 32 - DW_CFA_offset: r2 at cfa-24 + DW_CFA_offset: r2( \((rcx|edx)\)|) at cfa-24 diff --git a/gas/testsuite/gas/cfi/cfi-common-2.d b/gas/testsuite/gas/cfi/cfi-common-2.d index a54e542..e929f87 100644 --- a/gas/testsuite/gas/cfi/cfi-common-2.d +++ b/gas/testsuite/gas/cfi/cfi-common-2.d @@ -12,7 +12,7 @@ The section .eh_frame contains: #... 00000014 000000[12][c0] 00000018 FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_advance_loc: 4 to .* DW_CFA_remember_state DW_CFA_advance_loc: 4 to .* diff --git a/gas/testsuite/gas/cfi/cfi-common-5.d b/gas/testsuite/gas/cfi/cfi-common-5.d index fed50c5..ba21e2f 100644 --- a/gas/testsuite/gas/cfi/cfi-common-5.d +++ b/gas/testsuite/gas/cfi/cfi-common-5.d @@ -18,7 +18,7 @@ The section .eh_frame contains: #... 0000002c 0000001[48] 00000030 FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_advance_loc: 4 to .* DW_CFA_def_cfa_offset: 0 #pass diff --git a/gas/testsuite/gas/cfi/cfi-hppa-1.d b/gas/testsuite/gas/cfi/cfi-hppa-1.d index 7b06d55..29a72ad 100644 --- a/gas/testsuite/gas/cfi/cfi-hppa-1.d +++ b/gas/testsuite/gas/cfi/cfi-hppa-1.d @@ -14,19 +14,19 @@ The section .eh_frame contains: 00000014 00000018 00000018 FDE cie=00000000 pc=00000000..00000018 DW_CFA_advance_loc: 8 to 00000008 - DW_CFA_def_cfa_reg: r3 + DW_CFA_def_cfa_register: r3 DW_CFA_advance_loc: 4 to 0000000c DW_CFA_def_cfa_offset: 4660 DW_CFA_advance_loc: 8 to 00000014 - DW_CFA_def_cfa_reg: r30 + DW_CFA_def_cfa_register: r30 DW_CFA_nop 00000030 00000018 00000034 FDE cie=00000000 pc=00000018..00000040 DW_CFA_advance_loc: 12 to 00000024 - DW_CFA_def_cfa_reg: r3 + DW_CFA_def_cfa_register: r3 DW_CFA_offset: r2 at cfa-24 DW_CFA_advance_loc: 24 to 0000003c - DW_CFA_def_cfa_reg: r30 + DW_CFA_def_cfa_register: r30 DW_CFA_nop DW_CFA_nop DW_CFA_nop diff --git a/gas/testsuite/gas/cfi/cfi-i386.d b/gas/testsuite/gas/cfi/cfi-i386.d index ff74780..ac085e9 100644 --- a/gas/testsuite/gas/cfi/cfi-i386.d +++ b/gas/testsuite/gas/cfi/cfi-i386.d @@ -10,8 +10,8 @@ The section .eh_frame contains: Return address column: 8 Augmentation data: 1b - DW_CFA_def_cfa: r4 ofs 4 - DW_CFA_offset: r8 at cfa-4 + DW_CFA_def_cfa: r4 \(esp\) ofs 4 + DW_CFA_offset: r8 \(eip\) at cfa-4 DW_CFA_nop DW_CFA_nop @@ -24,17 +24,17 @@ The section .eh_frame contains: 00000030 00000018 00000034 FDE cie=00000000 pc=00000012..0000001f DW_CFA_advance_loc: 1 to 00000013 DW_CFA_def_cfa_offset: 8 - DW_CFA_offset: r5 at cfa-8 + DW_CFA_offset: r5 \(ebp\) at cfa-8 DW_CFA_advance_loc: 2 to 00000015 - DW_CFA_def_cfa_reg: r5 + DW_CFA_def_cfa_register: r5 \(ebp\) DW_CFA_advance_loc: 9 to 0000001e - DW_CFA_def_cfa_reg: r4 + DW_CFA_def_cfa_register: r4 \(esp\) 0000004c 00000014 00000050 FDE cie=00000000 pc=0000001f..0000002f DW_CFA_advance_loc: 2 to 00000021 - DW_CFA_def_cfa_reg: r3 + DW_CFA_def_cfa_register: r3 \(ebx\) DW_CFA_advance_loc: 13 to 0000002e - DW_CFA_def_cfa: r4 ofs 4 + DW_CFA_def_cfa: r4 \(esp\) ofs 4 00000064 00000010 00000068 FDE cie=00000000 pc=0000002f..00000035 DW_CFA_nop diff --git a/gas/testsuite/gas/cfi/cfi-m68k.d b/gas/testsuite/gas/cfi/cfi-m68k.d index 7aeb542..e6b4ec8 100644 --- a/gas/testsuite/gas/cfi/cfi-m68k.d +++ b/gas/testsuite/gas/cfi/cfi-m68k.d @@ -25,9 +25,9 @@ The section .eh_frame contains: DW_CFA_advance_loc: 4 to 00000010 DW_CFA_def_cfa_offset: 8 DW_CFA_offset: r14 at cfa-8 - DW_CFA_def_cfa_reg: r14 + DW_CFA_def_cfa_register: r14 DW_CFA_advance_loc: 6 to 00000016 - DW_CFA_def_cfa_reg: r15 + DW_CFA_def_cfa_register: r15 DW_CFA_nop 0000004c 00000010 00000050 FDE cie=00000000 pc=00000018..0000001c diff --git a/gas/testsuite/gas/cfi/cfi-mips-1.d b/gas/testsuite/gas/cfi/cfi-mips-1.d index 7a8d8e8..22d74f6 100644 --- a/gas/testsuite/gas/cfi/cfi-mips-1.d +++ b/gas/testsuite/gas/cfi/cfi-mips-1.d @@ -10,7 +10,7 @@ The section .eh_frame contains: Return address column: 31 Augmentation data: 0b - DW_CFA_def_cfa_reg: r29 + DW_CFA_def_cfa_register: r29 DW_CFA_def_cfa: r29 ofs 0 DW_CFA_nop DW_CFA_nop diff --git a/gas/testsuite/gas/cfi/cfi-sh-1.d b/gas/testsuite/gas/cfi/cfi-sh-1.d index bfbfcfa..8f22243 100644 --- a/gas/testsuite/gas/cfi/cfi-sh-1.d +++ b/gas/testsuite/gas/cfi/cfi-sh-1.d @@ -20,7 +20,7 @@ The section .eh_frame contains: DW_CFA_offset: r15 at cfa-4 DW_CFA_offset: r17 at cfa-8 DW_CFA_advance_loc: 6 to 0000000a - DW_CFA_def_cfa_reg: r14 + DW_CFA_def_cfa_register: r14 DW_CFA_advance_loc: 2 to 0000000c DW_CFA_def_cfa_offset: 40 DW_CFA_nop diff --git a/gas/testsuite/gas/cfi/cfi-sparc-1.d b/gas/testsuite/gas/cfi/cfi-sparc-1.d index c9d855a..fa24c82 100644 --- a/gas/testsuite/gas/cfi/cfi-sparc-1.d +++ b/gas/testsuite/gas/cfi/cfi-sparc-1.d @@ -16,7 +16,7 @@ The section .eh_frame contains: 00000014 00000014 00000018 FDE cie=00000000 pc=00000000..00000024 DW_CFA_advance_loc: 4 to 00000004 - DW_CFA_def_cfa_reg: r30 + DW_CFA_def_cfa_register: r30 DW_CFA_GNU_window_save DW_CFA_register: r15 in r31 diff --git a/gas/testsuite/gas/cfi/cfi-sparc64-1.d b/gas/testsuite/gas/cfi/cfi-sparc64-1.d index 6206e39..d126f50 100644 --- a/gas/testsuite/gas/cfi/cfi-sparc64-1.d +++ b/gas/testsuite/gas/cfi/cfi-sparc64-1.d @@ -19,7 +19,7 @@ The section .eh_frame contains: 00000018 00000014 0000001c FDE cie=00000000 pc=00000000..00000030 DW_CFA_advance_loc: 4 to 00000004 - DW_CFA_def_cfa_reg: r30 + DW_CFA_def_cfa_register: r30 DW_CFA_GNU_window_save DW_CFA_register: r15 in r31 diff --git a/gas/testsuite/gas/cfi/cfi-x86_64.d b/gas/testsuite/gas/cfi/cfi-x86_64.d index 2f37a9c..9b6795c 100644 --- a/gas/testsuite/gas/cfi/cfi-x86_64.d +++ b/gas/testsuite/gas/cfi/cfi-x86_64.d @@ -10,8 +10,8 @@ The section .eh_frame contains: Return address column: 16 Augmentation data: 1b - DW_CFA_def_cfa: r7 ofs 8 - DW_CFA_offset: r16 at cfa-8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 + DW_CFA_offset: r16 \(rip\) at cfa-8 DW_CFA_nop DW_CFA_nop @@ -24,20 +24,20 @@ The section .eh_frame contains: 00000030 0000001c 00000034 FDE cie=00000000 pc=00000014..00000022 DW_CFA_advance_loc: 1 to 00000015 DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 at cfa-16 + DW_CFA_offset: r6 \(rbp\) at cfa-16 DW_CFA_advance_loc: 3 to 00000018 - DW_CFA_def_cfa_reg: r6 + DW_CFA_def_cfa_register: r6 \(rbp\) DW_CFA_advance_loc: 9 to 00000021 - DW_CFA_def_cfa: r7 ofs 8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 DW_CFA_nop DW_CFA_nop DW_CFA_nop 00000050 00000014 00000054 FDE cie=00000000 pc=00000022..00000035 DW_CFA_advance_loc: 3 to 00000025 - DW_CFA_def_cfa_reg: r8 + DW_CFA_def_cfa_register: r8 \(r8\) DW_CFA_advance_loc: 15 to 00000034 - DW_CFA_def_cfa_reg: r7 + DW_CFA_def_cfa_register: r7 \(rsp\) DW_CFA_nop 00000068 00000010 0000006c FDE cie=00000000 pc=00000035..0000003b @@ -58,27 +58,27 @@ The section .eh_frame contains: Return address column: 16 Augmentation data: 1b - DW_CFA_def_cfa: r7 ofs 8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 000000a4 00000030 00000018 FDE cie=00000090 pc=0000004d..00000058 DW_CFA_advance_loc: 1 to 0000004e DW_CFA_def_cfa_offset: 16 DW_CFA_advance_loc: 1 to 0000004f - DW_CFA_def_cfa_reg: r8 + DW_CFA_def_cfa_register: r8 \(r8\) DW_CFA_advance_loc: 1 to 00000050 DW_CFA_def_cfa_offset: 4676 DW_CFA_advance_loc: 1 to 00000051 - DW_CFA_offset_extended_sf: r4 at cfa\+16 + DW_CFA_offset_extended_sf: r4 \(rsi\) at cfa\+16 DW_CFA_advance_loc: 1 to 00000052 - DW_CFA_register: r8 in r9 + DW_CFA_register: r8 \(r8\) in r9 \(r9\) DW_CFA_advance_loc: 1 to 00000053 DW_CFA_remember_state DW_CFA_advance_loc: 1 to 00000054 - DW_CFA_restore: r6 + DW_CFA_restore: r6 \(rbp\) DW_CFA_advance_loc: 1 to 00000055 - DW_CFA_undefined: r16 + DW_CFA_undefined: r16 \(rip\) DW_CFA_advance_loc: 1 to 00000056 - DW_CFA_same_value: r3 + DW_CFA_same_value: r3 \(rbx\) DW_CFA_advance_loc: 1 to 00000057 DW_CFA_restore_state DW_CFA_nop diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index ed802de..2034795 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2008-01-28 H.J. Lu + + * ld-elf/eh1.d: Replace DW_CFA_def_cfa_reg with + DW_CFA_def_cfa_register. Updated for i386/x86-64 register + names. + * ld-elf/eh2.d: Likewise. + * ld-elf/eh3.d: Likewise. + * ld-elf/eh4.d: Likewise. + * ld-elf/eh5.d: Likewise. + 2008-01-28 Alan Modra * ld-spu/ovl.d: Update. diff --git a/ld/testsuite/ld-elf/eh1.d b/ld/testsuite/ld-elf/eh1.d index d7a5b15..a672f5b 100644 --- a/ld/testsuite/ld-elf/eh1.d +++ b/ld/testsuite/ld-elf/eh1.d @@ -13,8 +13,8 @@ The section .eh_frame contains: Data alignment factor: -8 Return address column: 16 - DW_CFA_def_cfa: r7 ofs 8 - DW_CFA_offset: r16 at cfa-8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 + DW_CFA_offset: r16 \(rip\) at cfa-8 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -25,9 +25,9 @@ The section .eh_frame contains: 00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078 DW_CFA_advance_loc: 0 to 00400078 DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 at cfa-16 + DW_CFA_offset: r6 \(rbp\) at cfa-16 DW_CFA_advance_loc: 0 to 00400078 - DW_CFA_def_cfa_reg: r6 + DW_CFA_def_cfa_register: r6 \(rbp\) 00000038 ZERO terminator diff --git a/ld/testsuite/ld-elf/eh2.d b/ld/testsuite/ld-elf/eh2.d index c1ef399..788d23d 100644 --- a/ld/testsuite/ld-elf/eh2.d +++ b/ld/testsuite/ld-elf/eh2.d @@ -13,8 +13,8 @@ The section .eh_frame contains: Data alignment factor: -8 Return address column: 16 - DW_CFA_def_cfa: r7 ofs 8 - DW_CFA_offset: r16 at cfa-8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 + DW_CFA_offset: r16 \(rip\) at cfa-8 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -25,9 +25,9 @@ The section .eh_frame contains: 00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078 DW_CFA_advance_loc: 0 to 00400078 DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 at cfa-16 + DW_CFA_offset: r6 \(rbp\) at cfa-16 DW_CFA_advance_loc: 0 to 00400078 - DW_CFA_def_cfa_reg: r6 + DW_CFA_def_cfa_register: r6 \(rbp\) 00000038 ZERO terminator diff --git a/ld/testsuite/ld-elf/eh3.d b/ld/testsuite/ld-elf/eh3.d index f1d2a52..6816313 100644 --- a/ld/testsuite/ld-elf/eh3.d +++ b/ld/testsuite/ld-elf/eh3.d @@ -13,8 +13,8 @@ The section .eh_frame contains: Data alignment factor: -8 Return address column: 16 - DW_CFA_def_cfa: r7 ofs 8 - DW_CFA_offset: r16 at cfa-8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 + DW_CFA_offset: r16 \(rip\) at cfa-8 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -25,9 +25,9 @@ The section .eh_frame contains: 00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078 DW_CFA_advance_loc: 0 to 00400078 DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 at cfa-16 + DW_CFA_offset: r6 \(rbp\) at cfa-16 DW_CFA_advance_loc: 0 to 00400078 - DW_CFA_def_cfa_reg: r6 + DW_CFA_def_cfa_register: r6 \(rbp\) 00000038 ZERO terminator #pass diff --git a/ld/testsuite/ld-elf/eh4.d b/ld/testsuite/ld-elf/eh4.d index 5fdd722..5efecab 100644 --- a/ld/testsuite/ld-elf/eh4.d +++ b/ld/testsuite/ld-elf/eh4.d @@ -14,8 +14,8 @@ The section .eh_frame contains: Return address column: 16 Augmentation data: 1b - DW_CFA_def_cfa: r7 ofs 8 - DW_CFA_offset: r16 at cfa-8 + DW_CFA_def_cfa: r7 \(rsp\) ofs 8 + DW_CFA_offset: r16 \(rip\) at cfa-8 DW_CFA_nop DW_CFA_nop diff --git a/ld/testsuite/ld-elf/eh5.d b/ld/testsuite/ld-elf/eh5.d index c12562a..13bff08 100644 --- a/ld/testsuite/ld-elf/eh5.d +++ b/ld/testsuite/ld-elf/eh5.d @@ -21,7 +21,7 @@ The section .eh_frame contains: #... 0000001[48] 00000014 0000001[8c] FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -38,14 +38,14 @@ The section .eh_frame contains: 0000004[48] 00000014 0000001c FDE cie=000000(2c|30) pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop 000000(5c|60) 00000014 0000006[04] FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -66,7 +66,7 @@ The section .eh_frame contains: Augmentation data: (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef) DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -79,7 +79,7 @@ The section .eh_frame contains: Return address column: .* Augmentation data: 1b - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 #... 000000(c4|d0) 0000001[04] 0000001[8c] FDE cie=000000b[08] pc=.* DW_CFA_nop @@ -98,7 +98,7 @@ The section .eh_frame contains: 00000(0f|10)0 00000014 0000001c FDE cie=000000[de]8 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -124,28 +124,28 @@ The section .eh_frame contains: Augmentation data: (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef) DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop 000001(58|70) 00000014 000001(5c|74) FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop 000001(70|88) 00000014 000001(48|5c) FDE cie=000000(2c|30) pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop 000001(88|a0) 00000014 000001(8c|a4) FDE cie=00000000 pc=.* DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop @@ -154,7 +154,7 @@ The section .eh_frame contains: Augmentation data: (ef be ad de 00 00 00 00|00 00 00 00 de ad be ef) DW_CFA_advance_loc: 4 to .* - DW_CFA_def_cfa: r0 ofs 16 + DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16 DW_CFA_nop DW_CFA_nop DW_CFA_nop -- 2.7.4