linux/arch/arm64/kernel
Daniel Thompson 0d15ef6778 arm64: kgdb: Match pstate size with gdbserver protocol
Current versions of gdb do not interoperate cleanly with kgdb on arm64
systems because gdb and kgdb do not use the same register description.
This patch modifies kgdb to work with recent releases of gdb (>= 7.8.1).

Compatibility with gdb (after the patch is applied) is as follows:

  gdb-7.6 and earlier  Ok
  gdb-7.7 series       Works if user provides custom target description
  gdb-7.8(.0)          Works if user provides custom target description
  gdb-7.8.1 and later  Ok

When commit 44679a4f14 ("arm64: KGDB: Add step debugging support") was
introduced it was paired with a gdb patch that made an incompatible
change to the gdbserver protocol. This patch was eventually merged into
the gdb sources:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=a4d9ba85ec5597a6a556afe26b712e878374b9dd

The change to the protocol was mostly made to simplify big-endian support
inside the kernel gdb stub. Unfortunately the gdb project released
gdb-7.7.x and gdb-7.8.0 before the protocol incompatibility was identified
and reversed:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=bdc144174bcb11e808b4e73089b850cf9620a7ee

This leaves us in a position where kgdb still uses the no-longer-used
protocol; gdb-7.8.1, which restored the original behaviour, was
released on 2014-10-29.

I don't believe it is possible to detect/correct the protocol
incompatiblity which means the kernel must take a view about which
version of the gdb remote protocol is "correct". This patch takes the
view that the original/current version of the protocol is correct
and that version found in gdb-7.7.x and gdb-7.8.0 is anomalous.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-06-16 19:20:51 +01:00
..
vdso arm64: vdso: Mark vDSO code as read-only 2016-02-16 18:20:23 +00:00
.gitignore
acpi_parking_protocol.c arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot 2016-02-26 15:39:52 +00:00
acpi.c arm64: acpi: add acpi=on cmdline option to prefer ACPI boot over DT 2016-04-26 14:37:41 +01:00
alternative.c arm64: mm: fold alternatives into .init 2015-12-10 17:36:08 +00:00
arm64ksyms.c ARM: 8480/2: arm64: add implementation for arm-smccc 2016-01-04 16:24:45 +00:00
armv8_deprecated.c arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
asm-offsets.c arm64: kernel: Add support for hibernate/suspend-to-disk 2016-04-28 13:36:22 +01:00
cacheinfo.c arm64: kernel: add support for cpu cache information 2015-01-15 11:55:07 +00:00
cpu_errata.c arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpu_ops.c arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
cpufeature.c arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpuidle.c arm64: cpuidle: make arm_cpuidle_suspend() a bit more efficient 2016-04-13 14:49:23 +01:00
cpuinfo.c arm64: Provide "model name" in /proc/cpuinfo for PER_LINUX32 tasks 2016-05-31 17:50:30 +01:00
debug-monitors.c arm64/debug: Remove superfluous SMP function call 2016-04-14 18:13:03 +01:00
efi-entry.S arm64: move early boot code to the .init segment 2016-04-14 18:11:30 +01:00
efi.c arm64/efi/libstub: Make screen_info accessible to the UEFI stub 2016-04-28 11:33:59 +02:00
entry32.S arm64: entry32: remove pointless register assignment 2015-07-10 16:47:13 +01:00
entry-fpsimd.S arm64: fpsimd: fix a typo in fpsimd_save_partial_state ENDPROC 2014-07-31 11:42:42 +01:00
entry-ftrace.S arm64: ftrace: fix function_graph tracer panic 2015-10-02 11:12:56 +01:00
entry.S arm64/kernel: fix incorrect EL0 check in inv_entry macro 2016-03-21 12:05:34 +00:00
fpsimd.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
ftrace.c arm64: ftrace: modify a stack frame in a safe way 2015-12-21 17:26:01 +00:00
head.S arm64 updates for 4.7: 2016-05-16 17:17:24 -07:00
hibernate-asm.S arm64: kernel: Add support for hibernate/suspend-to-disk 2016-04-28 13:36:22 +01:00
hibernate.c arm64: hibernate: Refuse to hibernate if the boot cpu is offline 2016-04-28 13:36:23 +01:00
hw_breakpoint.c arm64 updates for 4.7: 2016-05-16 17:17:24 -07:00
hyp-stub.S arm64: hyp/kvm: Make hyp-stub reject kvm_call_hyp() 2016-04-28 12:05:46 +01:00
image.h arm64 updates for 4.7: 2016-05-16 17:17:24 -07:00
insn.c arm64: insn: avoid virt_to_page() translations on core kernel symbols 2016-04-14 16:31:49 +01:00
io.c arm64: optimize memcpy_{from,to}io() and memset_io() 2014-11-06 17:25:27 +00:00
irq.c arm64: remove irq_count and do_softirq_own_stack() 2015-12-21 17:26:01 +00:00
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kaslr.c arm64: relocatable: deal with physically misaligned kernel images 2016-04-26 12:23:28 +01:00
kgdb.c arm64: kgdb: Match pstate size with gdbserver protocol 2016-06-16 19:20:51 +01:00
kuser32.S
Makefile arm64: kernel: Add support for hibernate/suspend-to-disk 2016-04-28 13:36:22 +01:00
module-plts.c arm64: add support for module PLTs 2016-02-24 14:57:24 +00:00
module.c arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
module.lds arm64: add support for module PLTs 2016-02-24 14:57:24 +00:00
paravirt.c arm64: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
pci.c arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
perf_callchain.c perf core: Add a 'nr' field to perf_event_callchain_context 2016-05-16 23:11:51 -03:00
perf_event.c arm64: perf: don't expose CHAIN event in sysfs 2016-04-25 15:05:24 +01:00
perf_regs.c perf: Move task_pt_regs sampling into arch code 2015-01-09 11:12:28 +01:00
process.c exit_thread: remove empty bodies 2016-05-20 17:58:30 -07:00
psci.c ARM: 8511/1: ARM64: kernel: PSCI: move PSCI idle management code to drivers/firmware 2016-02-11 15:33:38 +00:00
ptrace.c arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
return_address.c arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
setup.c arm64: Change cpu_resume() to enable mmu early then access sleep_sp by va 2016-04-28 12:05:46 +01:00
signal32.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
signal.c arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
sleep.S arm64: Change cpu_resume() to enable mmu early then access sleep_sp by va 2016-04-28 12:05:46 +01:00
smccc-call.S ARM: 8480/2: arm64: add implementation for arm-smccc 2016-01-04 16:24:45 +00:00
smp_spin_table.c arm64: spin-table: add missing of_node_put() 2016-04-20 10:35:15 +01:00
smp.c arm64: secondary_start_kernel: Remove unnecessary barrier 2016-05-11 10:11:37 +01:00
stacktrace.c arm64: make irq_stack_ptr more robust 2016-02-12 15:53:51 +00:00
suspend.c arm64: Change cpu_resume() to enable mmu early then access sleep_sp by va 2016-04-28 12:05:46 +01:00
sys32.c arm64: fix implementation of mmap2 compat syscall 2015-03-19 10:43:51 +00:00
sys_compat.c arm64: compat: align cacheflush syscall with arch/arm 2014-12-01 13:31:12 +00:00
sys.c arm64: compat: Check for AArch32 state 2016-04-20 12:22:42 +01:00
time.c arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
topology.c arm64: kernel: remove non-legit DT warnings when booting using ACPI 2015-07-27 11:08:41 +01:00
trace-events-emulation.h arm64: Trace emulation of AArch32 legacy instructions 2014-11-20 16:35:02 +00:00
traps.c arm64: fix dump_instr when PAN and UAO are in use 2016-06-14 15:02:33 +01:00
vdso.c vdso: make arch_setup_additional_pages wait for mmap_sem for write killable 2016-05-23 17:04:14 -07:00
vmlinux.lds.S arm64: kernel: Add support for hibernate/suspend-to-disk 2016-04-28 13:36:22 +01:00