From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id C27193858C30; Sat, 4 Feb 2023 17:32:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C27193858C30 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675531934; bh=FBG3s7wF8Ayk41h6va5wHTnNQLvaqeDjsF7AUm0B+MQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=NzQkUCmIal1HWrASAMtwomWqof2C8en7UNdv0TCSIJKV3Gth0Cv2tzFgqCkY+9UoN rvmHp+yj+k9QcZ4kR7+Smg1BnuP5a7CBwXVQX28ecGdzPW9aIOLj99elm7FLMT9qZY LXRPKFsj8wtTGRrqhOk9k1S2hznJq2rLjmqLrO4Q= From: "mark at klomp dot 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 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: elfutils X-Bugzilla-Component: libdw X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: mark at klomp dot org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://sourceware.org/bugzilla/show_bug.cgi?id=3D30077 Mark Wielaard changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mark at klomp dot org --- Comment #1 from Mark Wielaard --- (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 s= olve 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 --=20 You are receiving this mail because: You are on the CC list for the bug.=