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:
Zbigniew Bodek 2015-10-30 12:21:37 +00:00
parent abc37121c4
commit f62dbbae61

View File

@ -2580,6 +2580,21 @@ arm_elf_osabi_sniffer (bfd *abfd)
osabi = GDB_OSABI_ARM_EABI_V2; osabi = GDB_OSABI_ARM_EABI_V2;
break; 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: case EF_ARM_EABI_UNKNOWN:
/* Assume GNU tools. */ /* Assume GNU tools. */
osabi = GDB_OSABI_ARM_APCS; osabi = GDB_OSABI_ARM_APCS;