Message ID | 50BE7844.8000409@redhat.com |
---|---|
State | New |
Headers | show |
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?
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)