public inbox for elfutils@sourceware.org
 help / color / mirror / Atom feed
From: "mark at klomp dot org" <sourceware-bugzilla@sourceware.org>
To: elfutils-devel@sourceware.org
Subject: [Bug libdw/30077] Duplicate definition of typedef struct debuginfod_client in libdwfl
Date: Sat, 04 Feb 2023 17:32:14 +0000	[thread overview]
Message-ID: <bug-30077-10460-nw40Xs8TiP@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-30077-10460@http.sourceware.org/bugzilla/>

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?

diff --git a/debuginfod/debuginfod.h.in b/debuginfod/debuginfod.h.in
index 69c9efd2..4a256ba9 100644
--- a/debuginfod/debuginfod.h.in
+++ b/debuginfod/debuginfod.h.in
@@ -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" {
diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h
index 9114f7f0..49ad6664 100644
--- a/libdwfl/libdwfl.h
+++ b/libdwfl/libdwfl.h
@@ -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

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  reply	other threads:[~2023-02-04 17:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-03 20:12 [Bug libdw/30077] New: " dje at sourceware dot org
2023-02-04 17:32 ` mark at klomp dot org [this message]
2023-02-04 18:25 ` [Bug libdw/30077] " sam at gentoo dot org
2023-02-04 22:04 ` dje at sourceware dot org
2023-02-05 10:35 ` mark at klomp dot org
2023-02-05 10:46 ` mark at klomp dot org
2023-02-05 21:41 ` dje at sourceware dot org
2023-02-06  9:47 ` mark at klomp dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-30077-10460-nw40Xs8TiP@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=elfutils-devel@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).