Am 04.12.2012 08:03, schrieb Ian Lance Taylor:
> On Mon, Dec 3, 2012 at 10:47 PM, Matthias Klose <d...@ubuntu.com> wrote:
>> Am 04.12.2012 07:26, schrieb Ian Lance Taylor:
>>> On Mon, Nov 19, 2012 at 8:27 AM, Matthias Klose <d...@ubuntu.com> wrote:
>>>> libgo-fix-arm.diff: Work around parse error of struct timex_ on ARM (both 
>>>> trunk
>>>> and 4.7 branch).
>>>>
>>>> libgo-hardening.diff: Avoid compiler warnings in libgo with 
>>>> -D_FORTIFY_SOURCE=2,
>>>> which let the build fail with -Werror. first chunk for the trunk and 4.7, 
>>>> second
>>>> chunk for trunk only.
>>>>
>>>> libgo-mksysinfo.diff: Fix TIOCNOTTY and TIOCSCTTY definitions, afaicr 
>>>> needed for
>>>> ARM as well. for trunk and 4.7.
>>>
>>> Thanks.  I committed the libgo-hardening and libgo-mksysinfo patches
>>> to mainline and 4.7 branch.
>>>
>>>
>>> Can you tell me more about the libgo-fix-arm patch?  The patch adds
>>> these lines to mksysinfo.sh:
>>>
>>> +# ARM
>>> +sed -i '/type _timex/s/INVALID-bit-field/int32/g;/type _timex/s,^//
>>> ,,' gen-sysinfo.go
>>>
>>> I don't understand why there would an INVALID-bit-field on ARM.  This
>>> struct comes from the <sys/timex.h>, which as far as I can see should
>>> be the same on every glibc system.
>>>
>>> What does struct timex look like in your <sys/timex.h> file?  What
>>> does the line look like in gen-sysinfo.go before the sed script above
>>> is run?
>>
>> defined in bits/timex.h
>>
>> struct timex
>> {
>>   unsigned int modes;           /* mode selector */
>>   __syscall_slong_t offset;     /* time offset (usec) */
>>   __syscall_slong_t freq;       /* frequency offset (scaled ppm) */
>>   __syscall_slong_t maxerror;   /* maximum error (usec) */
>>   __syscall_slong_t esterror;   /* estimated error (usec) */
>>   int status;                   /* clock command/status */
>>   __syscall_slong_t constant;   /* pll time constant */
>>   __syscall_slong_t precision;  /* clock precision (usec) (ro) */
>>   __syscall_slong_t tolerance;  /* clock frequency tolerance (ppm) (ro) */
>>   struct timeval time;          /* (read only) */
>>   __syscall_slong_t tick;       /* (modified) usecs between clock ticks */
>>   __syscall_slong_t ppsfreq;    /* pps frequency (scaled ppm) (ro) */
>>   __syscall_slong_t jitter;     /* pps jitter (us) (ro) */
>>   int shift;                    /* interval duration (s) (shift) (ro) */
>>   __syscall_slong_t stabil;     /* pps stability (scaled ppm) (ro) */
>>   __syscall_slong_t jitcnt;     /* jitter limit exceeded (ro) */
>>   __syscall_slong_t calcnt;     /* calibration intervals (ro) */
>>   __syscall_slong_t errcnt;     /* calibration errors (ro) */
>>   __syscall_slong_t stbcnt;     /* stability limit exceeded (ro) */
>>
>>   int tai;                      /* TAI offset (ro) */
>>
>>   /* ??? */
>>   int  :32; int  :32; int  :32; int  :32;
>>   int  :32; int  :32; int  :32; int  :32;
>>   int  :32; int  :32; int  :32;
>> };
>>
>>
>> I'll have to re-run the build with out the patch, but this replaces just the
>> 32bit bit fields with an int32.
> 
> Thanks.  That's more or less what timex.h looks like on my system, but
> I don't see the bitfields.  GCC treats the :32 fields as int32, in
> both 32-bit and 64-bit mode.

sorry, this was fixed with the patch for PR52557.

Reply via email to