Add replacement for <a.out.h>

Valgrind includes <a.out.h> to get the definition of 'struct
nlist'. However, while glibc directly defines 'struct nlist' in
<a.out.h>, uClibc relies on it being defined by kernel headers (i.e
<a.out.h> simply includes <linux/a.out.h>). This works for most
architectures, but not for PowerPC, on which the a.out binary format
has never been supported, and therefore the <linux/a.out.h> kernel
header does not exist.

One solution would have been to use the <nlist.h> header, but this one
is only available in glibc, and it also has a slightly different
definition than the one in <a.out.h>. So, for the time being, the
easiest solution is to just replace the #include <a.out.h> in Valgrind
code by a copy/paste of the 'struct nlist' definition.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/coregrind/m_debuginfo/readstabs.c
===================================================================
--- a/coregrind/m_debuginfo/readstabs.c
+++ b/coregrind/m_debuginfo/readstabs.c
@@ -53,7 +53,21 @@
 
 /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */
 #if defined(VGO_linux)
-#  include <a.out.h> /* stabs defns */
+/* Copied from a.out.h, because it is otherwise not available on
+   PowerPC/uClibc */
+struct nlist
+{
+  union
+    {
+      char *n_name;
+      struct nlist *n_next;
+      long n_strx;
+    } n_un;
+  unsigned char n_type;
+  char n_other;
+  short n_desc;
+  unsigned long n_value;
+};
 #elif defined(VGO_darwin)
 #  include <mach-o/nlist.h>
 #  define n_other n_sect
