Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 21 Feb 2023 11:09:14 -0800
From: Fangrui Song <i@...kray.me>
To: musl@...ts.openwall.com
Subject: Re: [PATCH] Use __builtin_FILE/__builtin_LINE if available

On Sat, Feb 18, 2023 at 4:17 AM Jon Chesterfield
<jonathanchesterfield@...il.com> wrote:
>
> On Sat, 18 Feb 2023, 02:54 Fangrui Song, <i@...kray.me> wrote:
>
> On Fri, Feb 17, 2023 at 6:03 PM Rich Felker <dalias@...c.org> wrote:
> >
> > On Fri, Feb 17, 2023 at 05:33:33PM -0800, Fangrui Song wrote:
> > > C++ inline functions are requred to have exact same sequence of tokens
> > > in every translation unit, but __FILE__ and __LINE__ may expand to
> > > different tokens. The ODR violatioin is usually benign, but it can lead
> > > to errors when C++20 modules are used.
>
>
>
> It is sad that C++ modules broke 'assert' but not surprising. Modules were largely created out of aversion to macros. This isn't something libc can fix though, I suggest a defect report against C++ instead.
>
> Changing the semantics of assert in C seems like a bad thing to do.
>
> Thanks

I disagree. This is a footgun where the right fix (or workaround, if
you prefer) is on the libc side. It is fairly reasonable for a header
to use assert and not expect two includes using different paths to not
cause C++ module problems.

The current module behavior regarding macros is a reasonable
compromise. It can be evolved (e.g.
https://gracicot.github.io/modules/2018/05/14/modules-macro.html).

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.