This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 2/7] New regs_info for aarch32
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Yao Qi <qiyaoltc at gmail dot com>
- Cc: Pedro Alves <palves at redhat dot com>, gdb-patches at sourceware dot org
- Date: Tue, 11 Aug 2015 12:40:12 -0700
- Subject: Re: [PATCH 2/7] New regs_info for aarch32
- Authentication-results: sourceware.org; auth=none
- References: <1438355801-25798-1-git-send-email-yao dot qi at linaro dot org> <1438355801-25798-3-git-send-email-yao dot qi at linaro dot org> <55BF7383 dot 5030304 at redhat dot com> <55BF980F dot 5010306 at gmail dot com> <55BFA0AD dot 5000408 at redhat dot com> <86614ve5z5 dot fsf at gmail dot com>
Hi Yao,
> 2015-08-04 Yao Qi <yao.qi@linaro.org>
>
> * configure.srv (srv_tgtobj): Add linux-aarch32-low.o.
> * linux-aarch32-low.c: New file.
> * linux-aarch32-low.h: New file.
> * linux-arm-low.c (arm_fill_gregset): Move it to
> linux-aarch32-low.c.
> (arm_store_gregset): Likewise.
> (arm_fill_vfpregset): Call arm_fill_vfpregset_num
> (arm_store_vfpregset): Call arm_store_vfpregset_num.
> (arm_arch_setup): Check if PTRACE_GETREGSET works.
> (regs_info): Rename to regs_info_arm.
> (arm_regs_info): Return regs_info_aarch32 if
> have_ptrace_getregset is 1 and target description is
> arm_with_neon or arm_with_vfpv3.
> (initialize_low_arch): Don't call init_registers_arm_with_neon.
> Call initialize_low_arch_aarch32 instead.
This patch is causing a GDBserver build failure on some versions
of GNU/Linux (the version we support is fairly old), but also on
relatively recent versions of Android as well.
The problem is that NT_ARM_VFP is not always defined. I tried
the attached patch, which I was a bit dubious about, but seems
to work ("info float" does not error out, and print a series of zeros),
but I'm not sure whether I'm exercising the code at all. The other
alternative I was thinking of was perhaps to just #ifndef out
the entry in aarch32_regsets that needs NT_ARM_VFP. It might be
cleaner, but I haven't tried it.
gdb/gdbserver/ChangeLog:
* linux-aarch32-low.c (NT_ARM_VFP): Define if not already defined.
WDYT?
Thanks!
--
Joel
>From 6c3cc336283db01c11a89bdbfdb70cc90a7b5d3e Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Tue, 11 Aug 2015 15:28:19 -0400
Subject: [PATCH] gdbserver/linux-aarch32-low: build failure when NT_ARM_VFP
not defined
On some older versions of GNU/Linux, gdbserver now fails to build
due to an undefined reference to NT_ARM_VFP. Same issue on Android,
where this macros is undefined until Android API level 21 (Android
5.0 "Lollipop").
This patch modifies linux-aarch32-low.c to define that macros when
not already defined.
gdb/gdbserver/ChangeLog:
* linux-aarch32-low.c (NT_ARM_VFP): Define if not already defined.
---
gdb/gdbserver/linux-aarch32-low.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/gdb/gdbserver/linux-aarch32-low.c b/gdb/gdbserver/linux-aarch32-low.c
index 7f3b985..5876b13 100644
--- a/gdb/gdbserver/linux-aarch32-low.c
+++ b/gdb/gdbserver/linux-aarch32-low.c
@@ -27,6 +27,12 @@
#include <elf.h>
#endif
+/* Some older versions of GNU/Linux and Android do not define
+ the following macros. */
+#ifndef NT_ARM_VFP
+#define NT_ARM_VFP 0x400
+#endif
+
/* Collect GP registers from REGCACHE to buffer BUF. */
void
--
2.1.4