[PATCH] IPA: Move getauxval out of #ifndef IN_PROCESS_AGENT

Marcin Kościelnicki
2016-04-05T13:33:54Z

The getauxval code was wrongly included in code area only compiled for
gdbserver. Move it to a #ifdef IN_PROCESS_AGENT area that already
contains lots of IPA-only code.

gdb/gdbserver/ChangeLog:

* tracepoint.c (getauxval): Move to #ifdef IN_PROCESS_AGENT.
---
Ugh. I don't have a machine with sufficiently old glibc, so I tested
my patch by manually removing HAVE_GETAUXVAL from config.h. Little
did I know that it was always regenerated by the build process from
config.status.

Here's a fix, this time tested with HAVE_GETAUXVAL actually undefined
on s390x.

gdb/gdbserver/tracepoint.c | 56 +++++++++++++++++++++++-----------------------
1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c
index 8f71325..620b94f 100644
--- a/gdb/gdbserver/tracepoint.c
+++ b/gdb/gdbserver/tracepoint.c
@@ -216,34 +216,6 @@ static struct ipa_sym_addresses ipa_sym_addrs;

static int read_inferior_integer (CORE_ADDR symaddr, int *val);

-#if !defined HAVE_GETAUXVAL && defined IN_PROCESS_AGENT
-/* Retrieve the value of TYPE from the auxiliary vector. If TYPE is not
- found, 0 is returned. This function is provided if glibc is too old. */
-
-unsigned long
-getauxval (unsigned long type)
-{
- unsigned long data[2];
- FILE *f = fopen ("/proc/self/auxv", "r");
- unsigned long value = 0;
-
- if (f == NULL)
- return 0;
-
- while (fread (data, sizeof (data), 1, f) > 0)
- {
- if (data[0] == type)
- {
- value = data[1];
- break;
- }
- }
-
- fclose (f);
- return value;
-}
-#endif
-
/* Returns true if both the in-process agent library and the static
tracepoints libraries are loaded in the inferior, and agent has
capability on static tracepoints. */
@@ -7395,6 +7367,34 @@ initialize_tracepoint_ftlib (void)
gdb_agent_init ();
}

+#ifndef HAVE_GETAUXVAL
+/* Retrieve the value of TYPE from the auxiliary vector. If TYPE is not
+ found, 0 is returned. This function is provided if glibc is too old. */
+
+unsigned long
+getauxval (unsigned long type)
+{
+ unsigned long data[2];
+ FILE *f = fopen ("/proc/self/auxv", "r");
+ unsigned long value = 0;
+
+ if (f == NULL)
+ return 0;
+
+ while (fread (data, sizeof (data), 1, f) > 0)
+ {
+ if (data[0] == type)
+ {
+ value = data[1];
+ break;
+ }
+ }
+
+ fclose (f);
+ return value;
+}
+#endif
+
#endif /* IN_PROCESS_AGENT */

/* Return a timestamp, expressed as microseconds of the usual Unix
--
2.8.0