Re: [RFA] Define Elf32_auxv_t and Elf64_auxv_t if not available.

Joel Brobecker
2012-03-27T15:21:16Z

> 2012-03-26 Thiago Jung Bauermann <thiago.bauermann@linaro.org>
>
> * configure.ac: Check whether Elf32_auxv_t and Elf64_auxv_t
> are available.
> * linux-low.c [HAVE_ELF32_AUXV_T] (Elf32_auxv_t): Add typedef.
> [HAVE_ELF64_AUXV_T] (Elf64_auxv_t): Likewise.

(you'll need to mention the fact that configure and config.in need
to be regenerated)

I am not very familiar with this area, so I am hoping someone else
might provide feedback as well.

I only have a minor question. Other than that, I don't see a problem
with the patch...

> diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
> index e6e9162..6b98dc0 100644
> --- a/gdb/gdbserver/configure.ac
> +++ b/gdb/gdbserver/configure.ac
> @@ -163,9 +163,10 @@ fi
>
> AC_CHECK_DECLS([strerror, perror, memmem, vasprintf, vsnprintf])
>
> -AC_CHECK_TYPES(socklen_t, [], [],
> +AC_CHECK_TYPES([socklen_t, Elf32_auxv_t, Elf64_auxv_t], [], [],
> [#include <sys/types.h>
> #include <sys/socket.h>
> +#include <elf.h>
> ])

I wonder if we shouldn't be using two separate checks here. Seems
unlikely to be a problem in practice, but we're looking for for
a type is <sys/types.h> + <sys/socket.h>, and then looking for another
collection of types in <elf.h>. We know we're most likely not going
to get any "cross-polination" finding socklen_t in <elf.h>, but if
this sort of thing were to happen, we would be in a situation where
the configure check finds the type, but the code (which presumably
might only include types.h and sockets.h) does not, leading to a build
error.

(let's wait for more feedback before we make any change - someone
might disagree)

--
Joel