[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