| Submitter | Aldy Hernandez |
|---|---|
| Date | Dec. 4, 2012, 10:25 p.m. |
| Message ID | <50BE7844.8000409@redhat.com> |
| Download | mbox | patch |
| Permalink | /patch/203741/ |
| State | New |
| Headers | show |
Comments
Hi gentlemen.
Just in case you missed this post. This only affects Darwin, so it's
technically not just an Objective C problem. This problem came about
with Ian Sandoe's patch of rev@170260. The CPP builtin "__OBJC2__" is
only set for Darwin.
FYI, in this patch I followed the way we currently set __OBJC__ in
libcpp/init.c:
if (CPP_OPTION (pfile, objc))
_cpp_define_builtin (pfile, "__OBJC__ 1");
I hope this helps in reviewing the patch.
Thanks.
On 12/04/12 16:25, Aldy Hernandez wrote:
> The problem here is that we are setting __OBJC2__ regardless of what
> language we are compiling.
>
> Tested by building a cross cc1/cc1obj for x86_64-unknown-darwin, and
> doing the following:
>
> reynosa:/build/trunk-darwin-objc/gcc$ echo "" | ./cc1obj -E -dM -
> -quiet |grep OBJ
> #define __OBJC__ 1
> #define __OBJC2__ 1
> reynosa:/build/trunk-darwin-objc/gcc$ echo "" | ./cc1 -E -dM - -quiet
> |grep OBJ
>
> It would be nice if someone with access to a Darwin build system could
> test this further, but this at least fixes the PR.
>
> OK for trunk?
Patch
diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c index 8e48c30..ec8aa9c 100644 --- a/gcc/config/darwin-c.c +++ b/gcc/config/darwin-c.c @@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. If not see #include "c-family/c-target.h" #include "c-family/c-target-def.h" #include "cgraph.h" +#include "../../libcpp/internal.h" /* Pragmas. */ @@ -632,7 +633,7 @@ darwin_cpp_builtins (cpp_reader *pfile) builtin_define ("__weak="); } - if (flag_objc_abi == 2) + if (CPP_OPTION (pfile, objc) && flag_objc_abi == 2) builtin_define ("__OBJC2__"); } diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin index e2bd74d..0e8346b 100644 --- a/gcc/config/t-darwin +++ b/gcc/config/t-darwin @@ -29,7 +29,7 @@ darwin.o: $(srcdir)/config/darwin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ darwin-c.o: $(srcdir)/config/darwin-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(CPPLIB_H) $(TREE_H) $(C_PRAGMA_H) $(TM_P_H) \ - incpath.h flags.h $(C_COMMON_H) $(C_TARGET_H) $(C_TARGET_DEF_H) + incpath.h flags.h $(C_COMMON_H) $(C_TARGET_H) $(C_TARGET_DEF_H) $(CPP_INTERNAL_H) $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/darwin-c.c $(PREPROCESSOR_DEFINES)