Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Feb 1997 12:22:19 -0800 (PST)
From:      Poul-Henning Kamp <phk>
To:        CVS-committers, cvs-all, cvs-sys
Subject:   cvs commit:  src/sys/i386/include varargs.h
Message-ID:  <199702072022.MAA17295@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
phk         97/02/07 12:22:16

  Modified:    sys/i386/include  varargs.h
  Log:
  I have no idea what this is all about, but it works and Bruce hasn't
  complained so it cannot be entirely bad :-)
  
  I include the email that probably explains it for people who already know:
  
  > >Compiling with -O3 inlines functions.  However the function that is being
  > >inlined in makeinfo.c (add_word_args()) is a vararg function and must not be
  > >inlined.
  > >
  > >The code in question is K&R style, and AFIK, there is no way for the compiler
  > >to determine that the function uses vararg.  Either change the code to use
  > >prototypes, or use stdarg, or add a directive to prevent inlining.
  >
  > Not declaring a varargs function as varargs before it is used gives
  > undefined behaviour.
  >
  > However, in practice the bug is probably in FreeBSD's <varargs.h>, which
  > doesn't use gcc's __builtin_next_arg().  gcc should notice that it is
  > used and not inline functions that have it.  <stdarg.h.> uses it, but I
  > think there's another gcc builtin that it should be using.
  
  Patch attached.  The ellipsis causes gcc to flag this as a varargs function,
  and the name "__builtin_va_alist" is special cased in gcc to hide the last
  argument in the arglist.
  
  Reviewed by:	bde & phk
  Submitted by:	jlemon@americantv.com (Jonathan Lemon)
  
  Revision  Changes    Path
  1.4       +6 -1      src/sys/i386/include/varargs.h



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