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 <>
Subject: Re: [PATCH] Use __builtin_FILE/__builtin_LINE if available

On Sat, Feb 18, 2023 at 4:17 AM Jon Chesterfield
<> wrote:
> On Sat, 18 Feb 2023, 02:54 Fangrui Song, <> wrote:
> On Fri, Feb 17, 2023 at 6:03 PM Rich Felker <> 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.

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.