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

Nico Weber thakis at chromium.org
Thu May 15 18:54:11 PDT 2014


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
> >>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140516/3f0cf437/attachment.html>


More information about the cfe-commits mailing list