Since commit
287a18452 libasm.h defines an opague Ebl handle.
This is fine, except for (internal) code that also includes libebl.h.
Since C11 having multiple typedefs for the same thing is fine, but we
do build using GNU/C99. This also allows multiple same typedefs, except
for (very) old GCCs.
This only affects internal code, since libebl.h isn't a public header.
For internal code, only add the typedef in libebl.h when libasm.h
hasn't been included. Make sure all code that includes both headers
includes libasm.h first.
Signed-off-by: Mark Wielaard <mark@klomp.org>
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * libasmP.h: Include libebl.h after libasm.h.
+
2020-07-05 Mark Wielaard <mark@klomp.org>
* libasm.h: Include gelf.h.
#include <stdio.h>
-#include "libebl.h"
#include <libasm.h>
+#include "libebl.h"
#include "libdwelf.h"
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * libebl.h: Only typedef Ebl if _LIBASM_H is undefined.
+
2020-06-10 Mark Wielaard <mark@klomp.org>
* eblopenbackend.c (i386_init, sh_init, x86_64_init, ia64_init,
#include "elf-knowledge.h"
-/* Opaque type for the handle. */
+/* Opaque type for the handle. libasm.h defined the same thing. */
+#ifndef _LIBASM_H
typedef struct ebl Ebl;
+#endif
#ifdef __cplusplus
+2020-07-19 Mark Wielaard <mark@klomp.org>
+
+ * asm-tst1.c: Include libebl.h after libasm.h.
+ * asm-tst2.c: Likewise.
+ * asm-tst3.c: Likewise.
+ * asm-tst4.c: Likewise.
+ * asm-tst5.c: Likewise.
+ * asm-tst6.c: Likewise.
+ * asm-tst7.c: Likewise.
+ * asm-tst8.c: Likewise.
+ * asm-tst9.c: Likewise.
+
2020-07-05 Mark Wielaard <mark@klomp.org>
* run-test-includes.sh: New test.
#endif
#include <fcntl.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
#endif
#include <fcntl.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
#endif
#include <fcntl.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>
#endif
#include <fcntl.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <stdlib.h>
#endif
#include <fcntl.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <stdlib.h>
# include <config.h>
#endif
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <inttypes.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <inttypes.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <inttypes.h>
-#include ELFUTILS_HEADER(ebl)
#include ELFUTILS_HEADER(asm)
+#include ELFUTILS_HEADER(ebl)
#include <libelf.h>
#include <stdio.h>
#include <string.h>