* [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn @ 2014-08-07 0:09 Richard Henderson 2014-08-07 0:09 ` [PATCH 2/2] aarch64: Decode dwarf2 register numbers Richard Henderson 2014-09-02 17:38 ` [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn Marcus Shawcroft 0 siblings, 2 replies; 5+ messages in thread From: Richard Henderson @ 2014-08-07 0:09 UTC (permalink / raw) To: binutils My argument for not accepting [bhsv]N is that unwind info is specifically 64-bits, i.e. the dN values. Not handled here is "esr" == 33. --- gas/config/tc-aarch64.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 0a65b9d..09ea8a6 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -5962,16 +5962,20 @@ tc_aarch64_regname_to_dw2regnum (char *regname) switch (reg->type) { - case REG_TYPE_SP_32: case REG_TYPE_SP_64: - case REG_TYPE_R_32: case REG_TYPE_R_64: + return reg->number; + + case REG_TYPE_FP_D: + return reg->number + 64; + + case REG_TYPE_SP_32: + case REG_TYPE_R_32: case REG_TYPE_FP_B: case REG_TYPE_FP_H: case REG_TYPE_FP_S: - case REG_TYPE_FP_D: case REG_TYPE_FP_Q: - return reg->number; + /* Do not allow register names of width other than 64-bit. */ default: break; } -- 1.8.3.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] aarch64: Decode dwarf2 register numbers 2014-08-07 0:09 [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn Richard Henderson @ 2014-08-07 0:09 ` Richard Henderson 2014-09-03 10:25 ` Marcus Shawcroft 2014-09-02 17:38 ` [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn Marcus Shawcroft 1 sibling, 1 reply; 5+ messages in thread From: Richard Henderson @ 2014-08-07 0:09 UTC (permalink / raw) To: binutils Similar to the parsing side in gas. But here I'm less certain about only printing dN, since these are also used for uses within .debug_info which could rightly use vN. --- binutils/dwarf.c | 27 +++++++++++++++++++++++++++ binutils/dwarf.h | 1 + binutils/objdump.c | 4 ++++ 3 files changed, 32 insertions(+) diff --git a/binutils/dwarf.c b/binutils/dwarf.c index a6986ad..fc44f38 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -5093,6 +5093,29 @@ init_dwarf_regnames_x86_64 (void) dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_x86_64); } +static const char *const dwarf_regnames_aarch64[] = +{ + "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", + "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", + "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23", + "x24", "x25", "x26", "x27", "x28", "x29", "x30", "sp", + NULL, "elr", NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", + "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", + "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", + "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31", +}; + +void +init_dwarf_regnames_aarch64 (void) +{ + dwarf_regnames = dwarf_regnames_aarch64; + dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_aarch64); +} + void init_dwarf_regnames (unsigned int e_machine) { @@ -5109,6 +5132,10 @@ init_dwarf_regnames (unsigned int e_machine) init_dwarf_regnames_x86_64 (); break; + case EM_AARCH64: + init_dwarf_regnames_aarch64 (); + break; + default: break; } diff --git a/binutils/dwarf.h b/binutils/dwarf.h index db235a9..124d9d6 100644 --- a/binutils/dwarf.h +++ b/binutils/dwarf.h @@ -235,6 +235,7 @@ extern int dwarf_check; extern void init_dwarf_regnames (unsigned int); extern void init_dwarf_regnames_i386 (void); extern void init_dwarf_regnames_x86_64 (void); +extern void init_dwarf_regnames_aarch64 (void); 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 5086a15..413de56 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -2407,6 +2407,10 @@ dump_dwarf (bfd *abfd) } break; + case bfd_arch_aarch64: + init_dwarf_regnames_aarch64(); + break; + default: break; } -- 1.8.3.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] aarch64: Decode dwarf2 register numbers 2014-08-07 0:09 ` [PATCH 2/2] aarch64: Decode dwarf2 register numbers Richard Henderson @ 2014-09-03 10:25 ` Marcus Shawcroft 2014-09-03 10:27 ` Marcus Shawcroft 0 siblings, 1 reply; 5+ messages in thread From: Marcus Shawcroft @ 2014-09-03 10:25 UTC (permalink / raw) To: Richard Henderson; +Cc: binutils On 7 August 2014 01:11, Richard Henderson <rth@twiddle.net> wrote: > Similar to the parsing side in gas. But here I'm less > certain about only printing dN, since these are also used > for uses within .debug_info which could rightly use vN. > + "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", > + "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", > + "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", > + "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31", I think these should be Vn rather than dN. /Marcus ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] aarch64: Decode dwarf2 register numbers 2014-09-03 10:25 ` Marcus Shawcroft @ 2014-09-03 10:27 ` Marcus Shawcroft 0 siblings, 0 replies; 5+ messages in thread From: Marcus Shawcroft @ 2014-09-03 10:27 UTC (permalink / raw) To: Richard Henderson; +Cc: binutils On 3 September 2014 11:24, Marcus Shawcroft <marcus.shawcroft@gmail.com> wrote: > On 7 August 2014 01:11, Richard Henderson <rth@twiddle.net> wrote: >> Similar to the parsing side in gas. But here I'm less >> certain about only printing dN, since these are also used >> for uses within .debug_info which could rightly use vN. > >> + "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", >> + "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", >> + "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", >> + "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31", > > > I think these should be Vn rather than dN. Oops, ignore me, I see you made that change in the version of the patch you pushed... /Marcus ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn 2014-08-07 0:09 [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn Richard Henderson 2014-08-07 0:09 ` [PATCH 2/2] aarch64: Decode dwarf2 register numbers Richard Henderson @ 2014-09-02 17:38 ` Marcus Shawcroft 1 sibling, 0 replies; 5+ messages in thread From: Marcus Shawcroft @ 2014-09-02 17:38 UTC (permalink / raw) To: Richard Henderson; +Cc: binutils On 7 August 2014 01:11, Richard Henderson <rth@twiddle.net> wrote: > My argument for not accepting [bhsv]N is that unwind info > is specifically 64-bits, i.e. the dN values. > > Not handled here is "esr" == 33. > > --- > gas/config/tc-aarch64.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c > index 0a65b9d..09ea8a6 100644 > --- a/gas/config/tc-aarch64.c > +++ b/gas/config/tc-aarch64.c > @@ -5962,16 +5962,20 @@ tc_aarch64_regname_to_dw2regnum (char *regname) > > switch (reg->type) > { > - case REG_TYPE_SP_32: > case REG_TYPE_SP_64: > - case REG_TYPE_R_32: > case REG_TYPE_R_64: > + return reg->number; > + > + case REG_TYPE_FP_D: > + return reg->number + 64; > + > + case REG_TYPE_SP_32: > + case REG_TYPE_R_32: > case REG_TYPE_FP_B: > case REG_TYPE_FP_H: > case REG_TYPE_FP_S: > - case REG_TYPE_FP_D: > case REG_TYPE_FP_Q: > - return reg->number; > + /* Do not allow register names of width other than 64-bit. */ > default: > break; Hi, Sorry, I've been out for a month. I think this change will break the assembly of any existing code that uses cfi_offset for one of these dropped register names? There is code over in glibc dl-trampoline.S and possibly other places that would need to be fixed first. /Marcus ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-09-03 10:27 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-08-07 0:09 [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn Richard Henderson 2014-08-07 0:09 ` [PATCH 2/2] aarch64: Decode dwarf2 register numbers Richard Henderson 2014-09-03 10:25 ` Marcus Shawcroft 2014-09-03 10:27 ` Marcus Shawcroft 2014-09-02 17:38 ` [PATCH 1/2] aarch64: Fix dwarf2 regnum for Dn Marcus Shawcroft
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).