[libc++ patch] Don't define __need_FOO in cstddef

Marshall Clow mclow.lists at gmail.com
Mon May 19 13:49:11 PDT 2014


On May 15, 2014, at 11:05 PM, Richard Smith <richard at metafoo.co.uk> wrote:

> Thank you for fixing this!

yes, thanks!

— Marshall

> 
> 
> On Thu, May 15, 2014 at 6:54 PM, Nico Weber <thakis at chromium.org> wrote:
> On Fri, May 16, 2014 at 12:11 AM, Marshall Clow <mclow.lists at gmail.com> wrote:
> 
> On May 15, 2014, at 10:08 AM, Jeffrey Yasskin <jyasskin at google.com> wrote:
> 
> > I would totally believe those were wrong. They worked around
> > <stddef.h> doing something absolutely crazy that I don't remember
> > anymore, and it sounds like that's been fixed.
> 
> My only concern is with the initial checkin comment “for ubuntu”.
> If this doesn’t break Ubuntu, then I’m good with it.
> 
> r208942, thanks! I did some light testing on Ubuntu with the patch, and things still seemed to work with it. (And the thing mentioned in PR19723 now works:
> 
>   #include <cstddef>
>   struct A { int a; };
>   int O = offsetof(A, a);
> 
>   $ clang -c -stdlib=libc++ -Ipath/to/libcxx/include -std=c++11
> 
> This was broken without this change, and this is e.g. needed to bootstrap clang.)
>  
> 
> — Marshall
> 
> > On Thu, May 15, 2014 at 5:20 AM, Alp Toker <alp at nuanti.com> wrote:
> >> A little SVN digging indicates the change originated in r104516. Removing it
> >> cursorily seems OK, CC'ing in Jeffrey Yasskin who wrote it.
> >>
> >> Alp.
> >>
> >>
> >>
> >> On 15/05/2014 07:21, Nico Weber wrote:
> >>>
> >>>
> >>> Ping.
> >>>
> >>>
> >>> On May 13, 2014 12:05 PM, "Nico Weber" <thakis at chromium.org
> >>> <mailto:thakis at chromium.org>> wrote:
> >>>
> >>>    D'oh, forgot to cc Marshall :-)
> >>>
> >>>
> >>>    On Tue, May 13, 2014 at 12:00 PM, Nico Weber <thakis at chromium.org
> >>>    <mailto:thakis at chromium.org>> wrote:
> >>>
> >>>        Hi,
> >>>
> >>>        r207606 changed the __need_foo macros to behave like they do
> >>>        with gcc: If they are set, _only_ the __need_foo stuff gets
> >>>        defined. libc++'s cstddef sets a few __need_foo settings, so
> >>>        cstddef now doesn't work right with libc++ after clang r207606.
> >>>
> >>>        The attached patch removes the __need_foo defines from
> >>>        libc++'s cstddef. They were added with a cryptic commit
> >>>        message ""for ubuntu" years ago - I think they're incorrect,
> >>>        and things still seem to work without them. (libstdc++ doesn't
> >>>        set them either.) Maybe they were needed before clang had
> >>>        r207606 - if so, this patch should also improve how libc++
> >>>        works when built with gcc.
> >>>
> >>>        This fixes PR19723, see the bug for some more information and
> >>>        discussion.
> >>>
> >>>        Ok?
> >>>
> >>>        Nico
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> cfe-commits mailing list
> >>> cfe-commits at cs.uiuc.edu
> >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> >>
> >>
> >> --
> >> http://www.nuanti.com
> >> the browser experts
> >>
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140519/d7f6eda8/attachment.html>


More information about the cfe-commits mailing list