Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Jul 2020 01:25:45 -0700 (PDT)
From:      Don Lewis <truckman@FreeBSD.org>
To:        freebsd-stable@FreeBSD.org, jkim@FreeBSD.org
Subject:   11-STABLE build failure in gnu/usr.bin/binutils/ld on recent -CURRENT
Message-ID:  <tkrat.b4f4c577fd89744e@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
I ran into another problem updating my 11-STABLE poudriere jails on my
package build machine, which runs a fairly recent version of -CURRENT.

If I try to cross build:

  -O2 -pipe -DBFD_DEFAULT_TARGET_SIZE=64 -I. -I/tmp/src11/gnu/usr.bin/binutils/l
d -I/tmp/src11/gnu/usr.bin/binutils/ld/../libbfd -I/usr/obj/tmp/src11/gnu/usr.bi
n/binutils/ld/../libbfd -I/tmp/src11/gnu/usr.bin/binutils/ld/../../../../contrib
/binutils/include   -DTARGET=\"x86_64-unknown-freebsd\" -DDEFAULT_EMULATION=\"el
f_x86_64_fbsd\" -DSCRIPTDIR=\"/usr/libdata\" -DBFD_VERSION_STRING=\""2.17.50 [Fr
eeBSD] 2007-07-03"\" -DBINDIR=\"/usr/bin\" -DTARGET_SYSTEM_ROOT=\"/\" -DTOOLBIND
IR=\"//usr/bin/libexec\" -D_GNU_SOURCE -I/tmp/src11/gnu/usr.bin/binutils/ld/../.
./../../contrib/binutils/ld -I/tmp/src11/gnu/usr.bin/binutils/ld/../../../../con
trib/binutils/bfd -g -MD  -MF.depend.ldlex.o -MTldlex.o -std=gnu99 -fstack-prote
ctor-strong -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parame
ter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized
-Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variabl
e -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unu
sed-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-pack
ed-member  -Qunused-arguments  -c ldlex.c -o ldlex.o
ldlex.c:3216:3: error: incompatible pointer types passing 'int *' to parameter
      of type 'yy_size_t *' (aka 'unsigned long *')
      [-Werror,-Wincompatible-pointer-types]
  ...YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/src11/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldlex.l:64:54
: note:
      expanded from macro 'YY_INPUT'
#define YY_INPUT(buf,result,max_size) yy_input (buf, &result, max_size)
                                                     ^~~~~~~
/tmp/src11/gnu/usr.bin/binutils/ld/../../../../contrib/binutils/ld/ldlex.l:73:42
: note:
      passing argument to parameter here
static void yy_input (char *, yy_size_t *, yy_size_t);
                                         ^
1 error generated.
*** Error code 1


The problem is that the skeleton defines yy_n_chars as type 'int'
instead of type 'yy_size_t'.  That's a bit of a puzzle because it is
defined as 'yy_size_t' in usr.bin/lex/initskel.c.

If I force lex to always be built as a bootstrap tool, then I get a
successful build, so it looks like the host version of lex is getting
used by default.

I think this is a new problem when the build host is -CURRENT. This
commit:
  ------------------------------------------------------------------------
  r362333 | jkim | 2020-06-18 11:09:16 -0700 (Thu, 18 Jun 2020) | 4 lines
  
  MFV:	r362286
  
  Merge flex 2.6.4.
  
  ------------------------------------------------------------------------
changes the type of yy_size_t from 'yy_size_t' to 'int'.

I'm not sure what the best fix for this is.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?tkrat.b4f4c577fd89744e>