Re: [Bulk] Re: [PATCH 4/10] compiler-gcc{3,4}.h: Use GCC_VERSION macro
On Fri, 28 Sep 2012, Josh Triplett wrote: > GCC 4.1.0 and 4.1.1 miscompiling __weak has nothing to do with > __compiletime_object_size; why should *this* version check exclude those > versions? > Agreed, we shouldn't be relying on any #error directives to fail the build and then try to factor those version numbers out of other directives; if the #error directive were ever to be removed (or commented out, like in this case), nobody would make the other directives inclusive of that now-allowed version where things like __compiletime_object_size() are valid. After __compiletime_object_size() is compiled for GCC_VERSION >= 40100, then: Acked-by: David Rientjes -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [Bulk] Re: [PATCH 4/10] compiler-gcc{3,4}.h: Use GCC_VERSION macro
On Fri, Sep 28, 2012 at 07:31:53PM -0500, Daniel Santos wrote: > On 09/28/2012 07:20 PM, Josh Triplett wrote: > > On Fri, Sep 28, 2012 at 06:20:05PM -0500, Daniel Santos wrote: > >> --- a/include/linux/compiler-gcc4.h > >> +++ b/include/linux/compiler-gcc4.h > >> @@ -13,11 +13,11 @@ > >> #define __must_check __attribute__((warn_unused_result)) > >> #define __compiler_offsetof(a,b) __builtin_offsetof(a,b) > >> > >> -#if __GNUC_MINOR__ > 0 > >> +#if GCC_VERSION >= 40102 > >> # define __compiletime_object_size(obj) __builtin_object_size(obj, 0) > >> #endif > > You've changed the semantics of this one; if literally translated, this > > should have become #if GCC_VERSION >= 40100. If you intended to change > > that, could you please document why? And in any case, could you make > > that semantic change in a separate commit from the switch to > > GCC_VERSION? > hmm, it looks like somebody commented out the #error that would normally > prevent that test from ever occurring on 4.1.0 or 4.1.1. > When I had written this patch, it wasn't commented out and I had assumed > that it was obvious from the context. GCC 4.1.0 and 4.1.1 miscompiling __weak has nothing to do with __compiletime_object_size; why should *this* version check exclude those versions? - Josh Triplett -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [Bulk] Re: [PATCH 4/10] compiler-gcc{3,4}.h: Use GCC_VERSION macro
On 09/28/2012 07:20 PM, Josh Triplett wrote: > On Fri, Sep 28, 2012 at 06:20:05PM -0500, Daniel Santos wrote: >> --- a/include/linux/compiler-gcc4.h >> +++ b/include/linux/compiler-gcc4.h >> @@ -13,11 +13,11 @@ >> #define __must_check__attribute__((warn_unused_result)) >> #define __compiler_offsetof(a,b) __builtin_offsetof(a,b) >> >> -#if __GNUC_MINOR__ > 0 >> +#if GCC_VERSION >= 40102 >> # define __compiletime_object_size(obj) __builtin_object_size(obj, 0) >> #endif > You've changed the semantics of this one; if literally translated, this > should have become #if GCC_VERSION >= 40100. If you intended to change > that, could you please document why? And in any case, could you make > that semantic change in a separate commit from the switch to > GCC_VERSION? hmm, it looks like somebody commented out the #error that would normally prevent that test from ever occurring on 4.1.0 or 4.1.1. When I had written this patch, it wasn't commented out and I had assumed that it was obvious from the context. > /* GCC 4.1.[01] miscompiles __weak */ > #ifdef __KERNEL__ > -# if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1 > +# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 > //# error Your version of gcc miscompiles the __weak directive > # endif > #endif > @@ -13,11 +13,11 @@ > #define __must_check __attribute__((warn_unused_result)) > #define __compiler_offsetof(a,b) __builtin_offsetof(a,b) > > -#if __GNUC_MINOR__ > 0 > +#if GCC_VERSION >= 40102 > # define __compiletime_object_size(obj) __builtin_object_size(obj, 0) > #endif I would say that commenting this out is bad if __weak is miscompiled. If we don't want to break the build, should we at least be defining __weak to something else? Daniel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/