The current stdarg(3) man page http://man7.org/linux/man-pages/man3/stdarg.3.html contains in NOTES: On some systems, va_end contains a closing '}' matching a '{' in va_start, so that both macros must occur in the same function, and in a way that allows this. However, the constraint on the matching braces is not in the ISO C standard, which just requires: Each invocation of the va_start and va_copy macros shall be matched by a corresponding invocation of the va_end macro in the same function. and If there is no corresponding invocation of the va_start or va_copy macro, or if the va_end macro is not invoked before the return, the behavior is undefined. (already present in the DESCRIPTION section of the man page). According to https://stackoverflow.com/a/25652373/3782797 the matching brace constraint is just history, and it is often not followed in practice. Thus I suggest to remove this paragraph from the man page (or if someone knows an implementation that still has this additional requirement, it should be mentioned).
The h=whole NOTES section seems to be referring the ancient varargs implementation, and I suspect the paragraph you quite actually is describing va_start/va_end details for that implementation. I'm actually inclined to remove the whole NOTES section, since it relates to details that were last relevant about 30 years ago. What do you think about removing the whole NOTES section?
And furthermore, gcc no longer implements <varargs.h>, probably for at least 15 years. I'm going to remove the NOTES section.