On Fri, Oct 24, 2014 at 8:44 AM, Christophe Lyon
<[email protected]> wrote:
> On 29 September 2014 15:01, Christophe Lyon <[email protected]>
> wrote:
>> On 26 September 2014 23:05, Andreas Schwab <[email protected]> wrote:
>>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34c65c4
>>>
>>> * sanitizer_common/sanitizer_platform_limits_posix.h
>>> (__sanitizer___kernel_old_uid_t, __sanitizer___kernel_old_gid_t)
>>> [__aarch64__]: Define to unsigned short.
>>>
>>
>> Thanks for pointing this.
>>
>> My understanding is that this kind of patch has to be submitted to the
>> libsanitizer maintainers via the LLVM project.
>>
>> I'm going to take care of it.
>>
>> Christophe.
>>
>
> Hi,
>
> Although I tried to speed things up, this patch has not yet made it to
> GCC trunk, but it has been committed in upstream libsanitizer.
>
> While testing a cherry-pick of the relevant commit, I realized that we
> already have aarch64 machines running older kernels, and applying this
> patch means GCC would no longer build on such configurations.
>
> I'm unsure about the desirable approach:
> A- modify upsteam libsanitizer so that
> __sanitizer___kernel_old_[gu]id_t are defined to match the definition
> of the kernel headers used to build GCC
> B- drop backward compatibility and make it impossible to build
> gcc+libsanitizer on aarch64 with a kernel older than 3.15.3
>
> A: means I have to iterate with upstream libsanitizer, to discuss &
> agree on a patch, then cherry-pick it to GCC
> B: I can do it now, but since 3.15.3 is rather new, it's a bit harsh
> for users, and maybe a libsanitizer/configure.tgt update would be
> desirable to cleanly prevent trying to build libsanitizer in a no
> longer supported configuration.
>
> It also means that binary toolchains have another implicit dependency
> on the kernel versions (runtime and build-time ones).
The binary toolchain I am not worried about. I and others use either
3.10 or 3.14 since those are the two long term supported kernels.
Thanks,
Andrew
>
>
> Thanks,
>
> Christophe.
>
>
>
>
>>> ---
>>> libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git
>>> a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
>>> b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
>>> index caa36a4..139fe0a 100644
>>> --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
>>> +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
>>> @@ -470,7 +470,7 @@ namespace __sanitizer {
>>> typedef long __sanitizer___kernel_off_t;
>>> #endif
>>>
>>> -#if defined(__powerpc__) || defined(__aarch64__) || defined(__mips__)
>>> +#if defined(__powerpc__) || defined(__mips__)
>>> typedef unsigned int __sanitizer___kernel_old_uid_t;
>>> typedef unsigned int __sanitizer___kernel_old_gid_t;
>>> #else
>>> --
>>> 2.1.1
>>>
>>> --
>>> Andreas Schwab, [email protected]
>>> GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
>>> "And now for something completely different."