[2/3] Add ILP32 support to gdb.

Message ID mvmshtkgj93.fsf@hawking.suse.de
State New, archived
Headers

Commit Message

Andreas Schwab Sept. 1, 2016, 7:40 a.m. UTC
  On Sep 01 2016, Andrew Pinski <pinskia@gmail.com> wrote:

> On Tue, Aug 30, 2016 at 12:44 AM, Andreas Schwab <schwab@suse.de> wrote:
>> On Aug 30 2016, Andrew Pinski <apinski@cavium.com> wrote:
>>
>>> @@ -2695,6 +2696,11 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
>>>        return NULL;
>>>      }
>>>
>>> +  if (info.abfd
>>> +      && bfd_get_flavour (info.abfd) == bfd_target_elf_flavour
>>> +      && elf_elfheader (info.abfd)->e_ident[EI_CLASS] == ELFCLASS32)
>>> +    ilp32 = TRUE;
>>> +
>>
>> Shouldn't this use bfd_arch_bits_per_address?
>
> That does not work as bfd_arch_bits_per_address is set to 64 still.

Actually I meant bfd_get_arch_size.

Does this fix the bits_per_address issue?

	* cpu-aarch64.c (N): Add argument ADDRSIZE.
	(bfd_aarch64_arch_ilp32): Pass 32 here.
	(bfd_aarch64_arch): Pass 64 here.
---
 bfd/cpu-aarch64.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Patch

diff --git a/bfd/cpu-aarch64.c b/bfd/cpu-aarch64.c
index 6fb9133..ae0c8a9 100644
--- a/bfd/cpu-aarch64.c
+++ b/bfd/cpu-aarch64.c
@@ -78,16 +78,16 @@  scan (const struct bfd_arch_info *info, const char *string)
   return FALSE;
 }
 
-#define N(NUMBER, PRINT, DEFAULT, NEXT)				\
-  { 64, 64, 8, bfd_arch_aarch64, NUMBER,			\
+#define N(NUMBER, PRINT, ADDRSIZE, DEFAULT, NEXT)		\
+  { 64, ADDRSIZE, 8, bfd_arch_aarch64, NUMBER,			\
     "aarch64", PRINT, 4, DEFAULT, compatible, scan,		\
     bfd_arch_default_fill, NEXT }
 
 static const bfd_arch_info_type bfd_aarch64_arch_ilp32 =
-  N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", FALSE, NULL);
+  N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", 32, FALSE, NULL);
 
 const bfd_arch_info_type bfd_aarch64_arch =
-  N (0, "aarch64", TRUE, &bfd_aarch64_arch_ilp32);
+  N (0, "aarch64", 64, TRUE, &bfd_aarch64_arch_ilp32);
 
 bfd_boolean
 bfd_is_aarch64_special_symbol_name (const char *name, int type)