This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/7] New regs_info for aarch32


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]