Workaround KGDB issues on ARM by ignoring ARM EABI version higher than 5
To make KGDB working, it needs to understand kernel ELF image. By default it is compiled using EABI_5, which is not supported on the gdb-6. As a workaround, treat these images as EABI_2 because they share a lot of things in common. This workaround does not guarantee ALL funtionalities to work. Submitted by: Wojciech Macek <wma@semihalf.com> Reviewed by: jhb Obtained from: Semihalf Sponsored by: Juniper Networks Inc. Differential Revision: https://reviews.freebsd.org/D4012
This commit is contained in:
parent
abc37121c4
commit
f62dbbae61
@ -2580,6 +2580,21 @@ arm_elf_osabi_sniffer (bfd *abfd)
|
||||
osabi = GDB_OSABI_ARM_EABI_V2;
|
||||
break;
|
||||
|
||||
case EF_ARM_EABI_VER3:
|
||||
case EF_ARM_EABI_VER4:
|
||||
case EF_ARM_EABI_VER5:
|
||||
/*
|
||||
* GDB does not support these EABI versions. Fallback
|
||||
* to the highest known to make the KGDB working with
|
||||
* kernel ELF image.
|
||||
*/
|
||||
osabi = GDB_OSABI_ARM_EABI_V2;
|
||||
printf ("\n%s:%d "
|
||||
"arm_elf_osabi_sniffer: Unsupported ARM EABI "
|
||||
"version 0x%x, falling back to 0x%x\n",
|
||||
__FILE__, __LINE__, eflags, EF_ARM_EABI_VER2);
|
||||
break;
|
||||
|
||||
case EF_ARM_EABI_UNKNOWN:
|
||||
/* Assume GNU tools. */
|
||||
osabi = GDB_OSABI_ARM_APCS;
|
||||
|
Loading…
Reference in New Issue
Block a user