nano printf patch breaks arm build (GCC 7.3)
Alexey Neyman
stilor@att.net
Mon Jan 29 07:56:00 GMT 2018
Please disregard.
(there were no replies to this patch in December 2017 mail index - I
didn't notice there is an on-going discussion in January 2018 archive
for this mailing list)
Sorry for the noise.
Alexey.
On 01/28/2018 11:52 PM, Alexey Neyman wrote:
> Hi,
>
> Commit fcd33916ac03086b9090c68e88036afa4b25d913 breaks the build for
> `arm-*-elf`; using GCC 7.3.
>
> /home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/src/newlib/newlib/libc/stdio/nano-vfprintf.c:
> In function '_vfprintf_r':
> /home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/src/newlib/newlib/libc/stdio/nano-vfprintf.c:644:2:
> error: cannot convert to a pointer type
> Â n = _printf_i (data, &prt_data, fp, pfunc, va_ptr(ap));
> Â ^
>
> The indicated location is misleading; the actual problem is the va_ptr
> macro. This is the definition of va_ptr:
>
> #define va_ptr(ap) _Generic(&(ap), va_list *: &(ap), default: (va_list
> *)(ap))
>
> I am not sure if _Generic picks up the default alternative (it looks
> like it shouldn't) or if the compiler tries to first construct and
> validate the expressions for all alternatives, including the ones not
> going to be selected. In the description of _Generic, I don't see any
> mention that a non-selected expression is allowed to be invalid - so
> what happens here is probably an error before _Generic is even evaluated.
>
> Note that in the GCC PR referenced in this commit, someone already
> made a similar comment that these macros are broken in their current
> form. They probably work on PowerPC, as there both `&ap` and `(va_list
> *)ap` are both valid expressions, so you just need to choose the
> correct one.
>
>
> I don't have a fix at this time - but it looks like this commit made
> the use of va_list in newlib even less portable than before.
>
>
> Just in case, GCC info:
>
> Using built-in specs.
> COLLECT_GCC=arm-nano-eabi-cc
> COLLECT_LTO_WRAPPER=/home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/buildtools/libexec/gcc/arm-nano-eabi/7.3.0/lto-wrapper
>
> Target: arm-nano-eabi
> Configured with:
> /home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/src/gcc/configure
> --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu
> --target=arm-nano-eabi
> --prefix=/home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/buildtools
> --with-local-prefix=/home/avn/x-tools/arm-nano-eabi/arm-nano-eabi
> --without-headers --with-newlib --enable-threads=no --disable-shared
> --with-pkgversion='crosstool-NG
> crosstool-ng-1.23.0-296-gba165ed4-dirty' --enable-__cxa_atexit
> --disable-libgomp --disable-libmudflap --disable-libmpx
> --disable-libssp --disable-libquadmath --disable-libquadmath-support
> --with-gmp=/home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/buildtools
> --with-mpfr=/home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/buildtools
> --with-mpc=/home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/buildtools
> --with-isl=/home/avn/work/ctng/issues-ctng/.build/arm-nano-eabi/buildtools
> --enable-lto --with-host-libstdcxx='-static-libgcc
> -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-target-optspace
> --disable-nls --enable-multiarch --enable-languages=c
> Thread model: single
> gcc version 7.3.0 (crosstool-NG crosstool-ng-1.23.0-296-gba165ed4-dirty)
>
> Regards,
> Alexey.
>
More information about the Newlib
mailing list