On Mon, Aug 24, 2026 at 6:21 AM Josef Melcr <[email protected]> wrote:
>
> Hi,
> I accidentallly introduced an ODR violation in r17-3257-g6481867ae01355
> with the callback_info struct.  I wasn't aware that there is a struct of
> the same name in plugin.cc.  This patch puts the struct in an anonymous
> namespace to fix the ODR issues when compiling with LTO, as suggested by
> Drea Pinski.
>
> LTO-bootstrapped and regtested with BOOT_C{,XX}FLAGS="-O2 -g -Werror=odr"
> without issues (trunk of course doesn't build with these flags).
>
> OK for master?

Ok.

>
> Best regards,
> Josef
>
>         PR plugins/126882
>
> gcc/ChangeLog:
>
>         * plugin.cc (struct callback_info): Put the struct into an
>         anonymous namespace.
>
> Signed-off-by: Josef Melcr <[email protected]>
> ---
>  gcc/plugin.cc | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/gcc/plugin.cc b/gcc/plugin.cc
> index c3f01ec4df5..77d913a65c2 100644
> --- a/gcc/plugin.cc
> +++ b/gcc/plugin.cc
> @@ -100,6 +100,7 @@ static int event_horizon = PLUGIN_EVENT_FIRST_DYNAMIC;
>     parsing.  */
>  static htab_t plugin_name_args_tab = NULL;
>
> +namespace {
>  /* List node for keeping track of plugin-registered callback.  */
>  struct callback_info
>  {
> @@ -108,6 +109,7 @@ struct callback_info
>    void *user_data;           /* plugin-specified data.  */
>    struct callback_info *next;
>  };
> +}
>
>  /* An array of lists of 'callback_info' objects indexed by the event id.  */
>  static struct callback_info 
> *plugin_callbacks_init[PLUGIN_EVENT_FIRST_DYNAMIC];
> --
> 2.55.0
>

Reply via email to