[Bug,libdw/30077] Duplicate definition of typedef struct debuginfod_client in libdwfl
Commit Message
https://sourceware.org/bugzilla/show_bug.cgi?id=30077
Mark Wielaard <mark at klomp dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mark at klomp dot org
--- Comment #1 from Mark Wielaard <mark at klomp dot org> ---
(In reply to David Edelsohn from comment #0)
> typedef struct debuginfod_client is defined in both libdwfl/libdwfl.h and in
> debuginfod.h included by libdwfl/libdwflP.h. Although innocuous, this is
> invalid C and causes compilation failures with strict compliance.
Is there a gcc flag that can help us detect this issue?
If the problem is that there cannot be two equal typedefs then we have to solve
this not just in the implementation code but also in the public headers.
If if understand the issue correctly then a program that includes both the
public debuginfod.h and dwfl.h headers (in any order or indirectly) has the
same problem?
Would the following fix it?
@@ -44,7 +44,10 @@
#define DEBUGINFOD_SONAME "@LIBDEBUGINFOD_SONAME@"
/* Handle for debuginfod-client connection. */
+#ifndef _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF
typedef struct debuginfod_client debuginfod_client;
+#define _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF 1
+#endif
#ifdef __cplusplus
extern "C" {
@@ -50,7 +50,10 @@ typedef struct Dwfl_Thread Dwfl_Thread;
typedef struct Dwfl_Frame Dwfl_Frame;
/* Handle for debuginfod-client connection. */
+#ifndef _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF
typedef struct debuginfod_client debuginfod_client;
+#define _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF 1
+#endif
/* Callbacks. */
typedef struct