[patch] libgo - fix build errors and add ARM bits
Matthias Klose
doko@ubuntu.com
Tue Dec 4 06:47:00 GMT 2012
Am 04.12.2012 07:26, schrieb Ian Lance Taylor:
> On Mon, Nov 19, 2012 at 8:27 AM, Matthias Klose <doko@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.
Matthias
More information about the Gcc-patches
mailing list