Building rsync on a Solaris 10 / AMD64 system: ----(begin snip)---- cc -I. -I. -Xa -v -xtarget=opteron -xarch=amd64 -xbuiltin -xstrconst -xO4 -xcrossfile -DHAVE_CONFIG_H -c lib/compat.c -o lib/compat.o cc -I. -I. -Xa -v -xtarget=opteron -xarch=amd64 -xbuiltin -xstrconst -xO4 -xcrossfile -DHAVE_CONFIG_H -c lib/snprintf.c -o lib/snprintf.o "lib/snprintf.c", line 853: left operand must be modifiable lvalue: op "=" "lib/snprintf.c", line 861: left operand must be modifiable lvalue: op "=" cc: acomp failed for lib/snprintf.c *** Error code 2 make: Fatal error: Command failed for target `lib/snprintf.o' ----(end snip)---- The system is using the fallback definition of VA_COPY(), i.e. "(dest) = (src)", instead of the va_copy() function. Neither HAVE_VA_COPY nor HAVE___VA_COPY is defined. Why not? Because they are defined as macros in the system headers, and rsync's configure script looks for them via AC_CHECK_FUNCS.
Created attachment 1500 [details] Use va_copy() macro if defined I assume that this one-line change will fix the problem. Would you test it and let me know?
Rsync builds successfully with this modification.
The suggested fix was committed to CVS.