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