Artifact cbb09658843b55330ded3106b6ff92f771161506:


0000: 23 69 66 6e 64 65 66 20 5f 56 41 43 41 4c 4c 5f  #ifndef _VACALL_
0010: 52 5f 48 20 20 20 20 20 20 20 20 20 20 20 20 20  R_H             
0020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0030: 2f 2a 2d 2a 2d 20 43 20 2d 2a 2d 2a 2f 0a 23 64  /*-*- C -*-*/.#d
0040: 65 66 69 6e 65 20 5f 56 41 43 41 4c 4c 5f 52 5f  efine _VACALL_R_
0050: 48 0a 0a 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 67  H../*. * Copyrig
0060: 68 74 20 31 39 39 35 2d 32 30 30 36 20 42 72 75  ht 1995-2006 Bru
0070: 6e 6f 20 48 61 69 62 6c 65 2c 20 3c 62 72 75 6e  no Haible, <brun
0080: 6f 40 63 6c 69 73 70 2e 6f 72 67 3e 0a 20 2a 0a  o@clisp.org>. *.
0090: 20 2a 20 54 68 69 73 20 69 73 20 66 72 65 65 20   * This is free 
00a0: 73 6f 66 74 77 61 72 65 20 64 69 73 74 72 69 62  software distrib
00b0: 75 74 65 64 20 75 6e 64 65 72 20 74 68 65 20 47  uted under the G
00c0: 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  NU General Publi
00d0: 63 20 4c 69 63 65 6e 63 65 0a 20 2a 20 64 65 73  c Licence. * des
00e0: 63 72 69 62 65 64 20 69 6e 20 74 68 65 20 66 69  cribed in the fi
00f0: 6c 65 20 43 4f 50 59 49 4e 47 2e 20 43 6f 6e 74  le COPYING. Cont
0100: 61 63 74 20 74 68 65 20 61 75 74 68 6f 72 20 69  act the author i
0110: 66 20 79 6f 75 20 64 6f 6e 27 74 20 68 61 76 65  f you don't have
0120: 20 74 68 69 73 0a 20 2a 20 6f 72 20 63 61 6e 27   this. * or can'
0130: 74 20 6c 69 76 65 20 77 69 74 68 20 69 74 2e 20  t live with it. 
0140: 54 68 65 72 65 20 69 73 20 41 42 53 4f 4c 55 54  There is ABSOLUT
0150: 45 4c 59 20 4e 4f 20 57 41 52 52 41 4e 54 59 2c  ELY NO WARRANTY,
0160: 20 65 78 70 6c 69 63 69 74 20 6f 72 20 69 6d 70   explicit or imp
0170: 6c 69 65 64 2c 0a 20 2a 20 6f 6e 20 74 68 69 73  lied,. * on this
0180: 20 73 6f 66 74 77 61 72 65 2e 0a 20 2a 2f 0a 0a   software.. */..
0190: 23 69 66 20 21 64 65 66 69 6e 65 64 28 4c 49 42  #if !defined(LIB
01a0: 46 46 43 41 4c 4c 5f 56 45 52 53 49 4f 4e 29 0a  FFCALL_VERSION).
01b0: 23 20 64 65 66 69 6e 65 20 4c 49 42 46 46 43 41  # define LIBFFCA
01c0: 4c 4c 5f 56 45 52 53 49 4f 4e 20 40 4c 49 42 46  LL_VERSION @LIBF
01d0: 46 43 41 4c 4c 5f 56 45 52 53 49 4f 4e 40 0a 23  FCALL_VERSION@.#
01e0: 65 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 73 65 20  endif../* These 
01f0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 72 65 20  definitions are 
0200: 61 64 6a 75 73 74 65 64 20 62 79 20 60 63 6f 6e  adjusted by `con
0210: 66 69 67 75 72 65 27 20 61 75 74 6f 6d 61 74 69  figure' automati
0220: 63 61 6c 6c 79 2e 20 2a 2f 0a 0a 2f 2a 20 43 50  cally. */../* CP
0230: 55 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 69  U */.#ifndef __i
0240: 33 38 36 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 69  386__.#undef __i
0250: 33 38 36 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  386__.#endif.#if
0260: 6e 64 65 66 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 75  ndef __m68k__.#u
0270: 6e 64 65 66 20 5f 5f 6d 36 38 6b 5f 5f 0a 23 65  ndef __m68k__.#e
0280: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d  ndif.#ifndef __m
0290: 69 70 73 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d  ips__.#undef __m
02a0: 69 70 73 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  ips__.#endif.#if
02b0: 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ndef __mipsn32__
02c0: 0a 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33  .#undef __mipsn3
02d0: 32 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  2__.#endif.#ifnd
02e0: 65 66 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a 23 75  ef __mips64__.#u
02f0: 6e 64 65 66 20 5f 5f 6d 69 70 73 36 34 5f 5f 0a  ndef __mips64__.
0300: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0310: 5f 73 70 61 72 63 5f 5f 0a 23 75 6e 64 65 66 20  _sparc__.#undef 
0320: 5f 5f 73 70 61 72 63 5f 5f 0a 23 65 6e 64 69 66  __sparc__.#endif
0330: 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70 61 72 63  .#ifndef __sparc
0340: 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 73 70  64__.#undef __sp
0350: 61 72 63 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 23  arc64__.#endif.#
0360: 69 66 6e 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f  ifndef __alpha__
0370: 0a 23 75 6e 64 65 66 20 5f 5f 61 6c 70 68 61 5f  .#undef __alpha_
0380: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
0390: 20 5f 5f 68 70 70 61 5f 5f 0a 23 75 6e 64 65 66   __hppa__.#undef
03a0: 20 5f 5f 68 70 70 61 5f 5f 0a 23 65 6e 64 69 66   __hppa__.#endif
03b0: 0a 23 69 66 6e 64 65 66 20 5f 5f 61 72 6d 5f 5f  .#ifndef __arm__
03c0: 0a 23 75 6e 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a  .#undef __arm__.
03d0: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
03e0: 5f 70 6f 77 65 72 70 63 5f 5f 0a 23 75 6e 64 65  _powerpc__.#unde
03f0: 66 20 5f 5f 70 6f 77 65 72 70 63 5f 5f 0a 23 65  f __powerpc__.#e
0400: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 70  ndif.#ifndef __p
0410: 6f 77 65 72 70 63 36 34 5f 5f 0a 23 75 6e 64 65  owerpc64__.#unde
0420: 66 20 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 0a  f __powerpc64__.
0430: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0440: 5f 73 33 39 30 5f 5f 0a 23 75 6e 64 65 66 20 5f  _s390__.#undef _
0450: 5f 73 33 39 30 5f 5f 0a 23 65 6e 64 69 66 0a 23  _s390__.#endif.#
0460: 69 66 6e 64 65 66 20 5f 5f 6d 38 38 6b 5f 5f 0a  ifndef __m88k__.
0470: 23 75 6e 64 65 66 20 5f 5f 6d 38 38 6b 5f 5f 0a  #undef __m88k__.
0480: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0490: 5f 63 6f 6e 76 65 78 5f 5f 0a 23 75 6e 64 65 66  _convex__.#undef
04a0: 20 5f 5f 63 6f 6e 76 65 78 5f 5f 0a 23 65 6e 64   __convex__.#end
04b0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 69 61 36  if.#ifndef __ia6
04c0: 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 69 61 36  4__.#undef __ia6
04d0: 34 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  4__.#endif.#ifnd
04e0: 65 66 20 5f 5f 78 38 36 5f 36 34 5f 5f 0a 23 75  ef __x86_64__.#u
04f0: 6e 64 65 66 20 5f 5f 78 38 36 5f 36 34 5f 5f 0a  ndef __x86_64__.
0500: 23 65 6e 64 69 66 0a 0a 2f 2a 20 43 61 6c 6c 69  #endif../* Calli
0510: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f  ng convention */
0520: 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 75 73  ./* Define if us
0530: 69 6e 67 20 70 63 63 20 6e 6f 6e 2d 72 65 65 6e  ing pcc non-reen
0540: 74 72 61 6e 74 20 73 74 72 75 63 74 20 72 65 74  trant struct ret
0550: 75 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 2a  urn convention *
0560: 2f 0a 23 75 6e 64 65 66 20 5f 5f 50 43 43 5f 53  /.#undef __PCC_S
0570: 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 0a 2f  TRUCT_RETURN__./
0580: 2a 20 44 65 66 69 6e 65 20 69 66 20 73 6d 61 6c  * Define if smal
0590: 6c 20 73 74 72 75 63 74 73 20 61 72 65 20 72 65  l structs are re
05a0: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74  turned in regist
05b0: 65 72 73 20 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f  ers */.#undef __
05c0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
05d0: 55 52 4e 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65 20  URN__./* Define 
05e0: 69 66 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  if floating-poin
05f0: 74 20 72 65 73 75 6c 74 73 20 61 72 65 20 72 65  t results are re
0600: 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20 69 6e  turned in the in
0610: 74 65 67 65 72 20 72 65 67 69 73 74 65 72 73 20  teger registers 
0620: 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 49 52 45 47  */.#undef __IREG
0630: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 5f 5f 0a  _FLOAT_RETURN__.
0640: 0a 2f 2a 20 41 43 5f 54 59 50 45 5f 4c 4f 4e 47  ./* AC_TYPE_LONG
0650: 5f 4c 4f 4e 47 5f 49 4e 54 20 2a 2f 0a 2f 2a 20  _LONG_INT */./* 
0660: 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20 63  Define if your c
0670: 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 73  ompiler supports
0680: 20 74 68 65 20 27 6c 6f 6e 67 20 6c 6f 6e 67 27   the 'long long'
0690: 20 74 79 70 65 2e 20 2a 2f 0a 23 69 66 6e 64 65   type. */.#ifnde
06a0: 66 20 48 41 56 45 5f 4c 4f 4e 47 5f 4c 4f 4e 47  f HAVE_LONG_LONG
06b0: 5f 49 4e 54 0a 23 75 6e 64 65 66 20 48 41 56 45  _INT.#undef HAVE
06c0: 5f 4c 4f 4e 47 5f 4c 4f 4e 47 5f 49 4e 54 0a 23  _LONG_LONG_INT.#
06d0: 65 6e 64 69 66 0a 0a 2f 2a 20 41 43 5f 43 5f 43  endif../* AC_C_C
06e0: 48 41 52 5f 55 4e 53 49 47 4e 45 44 20 2a 2f 0a  HAR_UNSIGNED */.
06f0: 23 69 66 6e 64 65 66 20 5f 5f 43 48 41 52 5f 55  #ifndef __CHAR_U
0700: 4e 53 49 47 4e 45 44 5f 5f 0a 23 75 6e 64 65 66  NSIGNED__.#undef
0710: 20 5f 5f 43 48 41 52 5f 55 4e 53 49 47 4e 45 44   __CHAR_UNSIGNED
0720: 5f 5f 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 45 6e  __.#endif../* En
0730: 64 20 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e 73  d of definitions
0740: 20 61 64 6a 75 73 74 65 64 20 62 79 20 60 63 6f   adjusted by `co
0750: 6e 66 69 67 75 72 65 27 2e 20 2a 2f 0a 0a 0a 2f  nfigure'. */.../
0760: 2a 20 4d 61 78 20 23 20 77 6f 72 64 73 20 69 6e  * Max # words in
0770: 20 61 72 67 75 6d 65 6e 74 2d 6c 69 73 74 20 61   argument-list a
0780: 6e 64 20 74 65 6d 70 6f 72 61 72 79 20 73 74 72  nd temporary str
0790: 75 63 74 75 72 65 20 73 74 6f 72 61 67 65 2e 0a  ucture storage..
07a0: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41   */.#ifndef __VA
07b0: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 0a 23 64 65  _ALIST_WORDS.#de
07c0: 66 69 6e 65 20 5f 5f 56 41 5f 41 4c 49 53 54 5f  fine __VA_ALIST_
07d0: 57 4f 52 44 53 20 20 32 35 36 0a 23 65 6e 64 69  WORDS  256.#endi
07e0: 66 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 20  f../* Determine 
07f0: 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 6f 66  the alignment of
0800: 20 61 20 74 79 70 65 20 61 74 20 63 6f 6d 70 69   a type at compi
0810: 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23 69 66  le time.. */.#if
0820: 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f   defined(__GNUC_
0830: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f  _).#define __VA_
0840: 61 6c 69 67 6e 6f 66 20 5f 5f 61 6c 69 67 6e 6f  alignof __aligno
0850: 66 5f 5f 0a 23 65 6c 73 65 0a 23 69 66 20 64 65  f__.#else.#if de
0860: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
0870: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
0880: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
0890: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 2f  ed(__mips64__) /
08a0: 2a 20 53 47 49 20 63 6f 6d 70 69 6c 65 72 20 2a  * SGI compiler *
08b0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f 61  /.#define __VA_a
08c0: 6c 69 67 6e 6f 66 20 5f 5f 62 75 69 6c 74 69 6e  lignof __builtin
08d0: 5f 61 6c 69 67 6e 6f 66 0a 23 65 6c 73 65 0a 23  _alignof.#else.#
08e0: 64 65 66 69 6e 65 20 5f 5f 56 41 5f 6f 66 66 73  define __VA_offs
08f0: 65 74 6f 66 28 74 79 70 65 2c 69 64 65 6e 74 29  etof(type,ident)
0900: 20 20 28 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e    ((unsigned lon
0910: 67 29 26 28 28 28 74 79 70 65 2a 29 30 29 2d 3e  g)&(((type*)0)->
0920: 69 64 65 6e 74 29 29 0a 23 64 65 66 69 6e 65 20  ident)).#define 
0930: 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 74 79 70  __VA_alignof(typ
0940: 65 29 20 20 5f 5f 56 41 5f 6f 66 66 73 65 74 6f  e)  __VA_offseto
0950: 66 28 73 74 72 75 63 74 20 7b 20 63 68 61 72 20  f(struct { char 
0960: 5f 5f 73 6c 6f 74 31 3b 20 74 79 70 65 20 5f 5f  __slot1; type __
0970: 73 6c 6f 74 32 3b 20 7d 2c 20 5f 5f 73 6c 6f 74  slot2; }, __slot
0980: 32 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  2).#endif.#endif
0990: 0a 0a 2f 2a 20 43 20 62 75 69 6c 74 69 6e 20 74  ../* C builtin t
09a0: 79 70 65 73 2e 0a 20 2a 2f 0a 23 69 66 20 64 65  ypes.. */.#if de
09b0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
09c0: 5f 29 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67 20  _).typedef long 
09d0: 6c 6f 6e 67 20 5f 5f 76 61 77 6f 72 64 3b 0a 23  long __vaword;.#
09e0: 65 6c 73 65 0a 74 79 70 65 64 65 66 20 6c 6f 6e  else.typedef lon
09f0: 67 20 5f 5f 76 61 77 6f 72 64 3b 0a 23 65 6e 64  g __vaword;.#end
0a00: 69 66 0a 0a 65 6e 75 6d 20 5f 5f 56 41 74 79 70  if..enum __VAtyp
0a10: 65 0a 7b 0a 20 20 5f 5f 56 41 76 6f 69 64 2c 0a  e.{.  __VAvoid,.
0a20: 20 20 5f 5f 56 41 63 68 61 72 2c 0a 20 20 5f 5f    __VAchar,.  __
0a30: 56 41 73 63 68 61 72 2c 0a 20 20 5f 5f 56 41 75  VAschar,.  __VAu
0a40: 63 68 61 72 2c 0a 20 20 5f 5f 56 41 73 68 6f 72  char,.  __VAshor
0a50: 74 2c 0a 20 20 5f 5f 56 41 75 73 68 6f 72 74 2c  t,.  __VAushort,
0a60: 0a 20 20 5f 5f 56 41 69 6e 74 2c 0a 20 20 5f 5f  .  __VAint,.  __
0a70: 56 41 75 69 6e 74 2c 0a 20 20 5f 5f 56 41 6c 6f  VAuint,.  __VAlo
0a80: 6e 67 2c 0a 20 20 5f 5f 56 41 75 6c 6f 6e 67 2c  ng,.  __VAulong,
0a90: 0a 20 20 5f 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 2c  .  __VAlonglong,
0aa0: 0a 20 20 5f 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67  .  __VAulonglong
0ab0: 2c 0a 20 20 5f 5f 56 41 66 6c 6f 61 74 2c 0a 20  ,.  __VAfloat,. 
0ac0: 20 5f 5f 56 41 64 6f 75 62 6c 65 2c 0a 20 20 5f   __VAdouble,.  _
0ad0: 5f 56 41 76 6f 69 64 70 2c 0a 20 20 5f 5f 56 41  _VAvoidp,.  __VA
0ae0: 73 74 72 75 63 74 0a 7d 3b 0a 0a 65 6e 75 6d 20  struct.};..enum 
0af0: 5f 5f 56 41 5f 61 6c 69 73 74 5f 66 6c 61 67 73  __VA_alist_flags
0b00: 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20  .{..  /* how to 
0b10: 72 65 74 75 72 6e 20 73 74 72 75 63 74 73 20 2a  return structs *
0b20: 2f 0a 20 20 2f 2a 20 54 68 65 72 65 20 61 72 65  /.  /* There are
0b30: 20 62 61 73 69 63 61 6c 6c 79 20 33 20 77 61 79   basically 3 way
0b40: 73 20 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75  s to return stru
0b50: 63 74 73 3a 0a 20 20 20 2a 20 61 2e 20 54 68 65  cts:.   * a. The
0b60: 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e   called function
0b70: 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
0b80: 65 72 20 74 6f 20 73 74 61 74 69 63 20 64 61 74  er to static dat
0b90: 61 2e 20 4e 6f 74 20 72 65 65 6e 74 72 61 6e 74  a. Not reentrant
0ba0: 2e 0a 20 20 20 2a 20 62 2e 20 54 68 65 20 63 61  ..   * b. The ca
0bb0: 6c 6c 65 72 20 70 61 73 73 65 73 20 74 68 65 20  ller passes the 
0bc0: 72 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65  return structure
0bd0: 20 61 64 64 72 65 73 73 20 69 6e 20 61 20 64 65   address in a de
0be0: 64 69 63 61 74 65 64 20 72 65 67 69 73 74 65 72  dicated register
0bf0: 0a 20 20 20 2a 20 20 20 20 6f 72 20 61 73 20 61  .   *    or as a
0c00: 20 66 69 72 73 74 20 28 6f 72 20 6c 61 73 74 29   first (or last)
0c10: 2c 20 69 6e 76 69 73 69 62 6c 65 20 61 72 67 75  , invisible argu
0c20: 6d 65 6e 74 2e 20 54 68 65 20 63 61 6c 6c 65 64  ment. The called
0c30: 20 66 75 6e 63 74 69 6f 6e 20 73 74 6f 72 65 73   function stores
0c40: 0a 20 20 20 2a 20 20 20 20 69 74 73 20 72 65 73  .   *    its res
0c50: 75 6c 74 20 74 68 65 72 65 2e 0a 20 20 20 2a 20  ult there..   * 
0c60: 63 2e 20 4c 69 6b 65 20 62 2c 20 61 6e 64 20 74  c. Like b, and t
0c70: 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69  he called functi
0c80: 6f 6e 20 61 6c 73 6f 20 72 65 74 75 72 6e 73 20  on also returns 
0c90: 74 68 65 20 72 65 74 75 72 6e 20 73 74 72 75 63  the return struc
0ca0: 74 75 72 65 0a 20 20 20 2a 20 20 20 20 61 64 64  ture.   *    add
0cb0: 72 65 73 73 20 69 6e 20 74 68 65 20 72 65 74 75  ress in the retu
0cc0: 72 6e 20 76 61 6c 75 65 20 72 65 67 69 73 74 65  rn value registe
0cd0: 72 2e 20 28 54 68 69 73 20 69 73 20 6e 6f 74 20  r. (This is not 
0ce0: 76 65 72 79 20 64 69 73 74 69 6e 67 75 69 73 68  very distinguish
0cf0: 61 62 6c 65 0a 20 20 20 2a 20 20 20 20 66 72 6f  able.   *    fro
0d00: 6d 20 62 2e 29 0a 20 20 20 2a 20 49 6e 64 65 70  m b.).   * Indep
0d10: 65 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68 69 73  endently of this
0d20: 2c 0a 20 20 20 2a 20 72 2e 20 73 6d 61 6c 6c 20  ,.   * r. small 
0d30: 73 74 72 75 63 74 75 72 65 73 20 28 3c 3d 20 34  structures (<= 4
0d40: 20 6f 72 20 3c 3d 20 38 20 62 79 74 65 73 29 20   or <= 8 bytes) 
0d50: 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 64 20  may be returned 
0d60: 69 6e 20 74 68 65 20 72 65 74 75 72 6e 0a 20 20  in the return.  
0d70: 20 2a 20 20 20 20 76 61 6c 75 65 20 72 65 67 69   *    value regi
0d80: 73 74 65 72 28 73 29 2c 20 6f 72 0a 20 20 20 2a  ster(s), or.   *
0d90: 20 6d 2e 20 65 76 65 6e 20 73 6d 61 6c 6c 20 73   m. even small s
0da0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61  tructures are pa
0db0: 73 73 65 64 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a  ssed in memory..
0dc0: 20 20 20 2a 2f 0a 20 20 2f 2a 20 67 63 63 2d 32     */.  /* gcc-2
0dd0: 2e 36 2e 33 20 65 6d 70 6c 6f 79 73 20 74 68 65  .6.3 employs the
0de0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 61 74   following strat
0df0: 65 67 79 3a 0a 20 20 20 2a 20 20 20 2d 20 49 66  egy:.   *   - If
0e00: 20 50 43 43 5f 53 54 41 54 49 43 5f 53 54 52 55   PCC_STATIC_STRU
0e10: 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64 65 66  CT_RETURN is def
0e20: 69 6e 65 64 20 69 6e 20 74 68 65 20 6d 61 63 68  ined in the mach
0e30: 69 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e 0a  ine description.
0e40: 20 20 20 2a 20 20 20 20 20 69 74 20 75 73 65 73     *     it uses
0e50: 20 6d 65 74 68 6f 64 20 61 2c 20 65 6c 73 65 20   method a, else 
0e60: 6d 65 74 68 6f 64 20 63 2e 0a 20 20 20 2a 20 20  method c..   *  
0e70: 20 2d 20 49 66 20 66 6c 61 67 5f 70 63 63 5f 73   - If flag_pcc_s
0e80: 74 72 75 63 74 5f 72 65 74 75 72 6e 20 69 73 20  truct_return is 
0e90: 73 65 74 20 28 65 69 74 68 65 72 20 62 79 20 2d  set (either by -
0ea0: 66 70 63 63 2d 73 74 72 75 63 74 2d 72 65 74 75  fpcc-struct-retu
0eb0: 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20 20 20  rn or if.   *   
0ec0: 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f 53 54    DEFAULT_PCC_ST
0ed0: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64  RUCT_RETURN is d
0ee0: 65 66 69 6e 65 64 20 74 6f 20 31 20 69 6e 20 74  efined to 1 in t
0ef0: 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73 63 72  he machine descr
0f00: 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20 20 20  iption).   *    
0f10: 20 69 74 20 75 73 65 73 20 6d 65 74 68 6f 64 20   it uses method 
0f20: 6d 2c 20 65 6c 73 65 20 28 65 69 74 68 65 72 20  m, else (either 
0f30: 62 79 20 2d 66 72 65 67 2d 73 74 72 75 63 74 2d  by -freg-struct-
0f40: 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20  return or if.   
0f50: 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43  *     DEFAULT_PC
0f60: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
0f70: 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 30 20  is defined to 0 
0f80: 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64  in the machine d
0f90: 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a  escription).   *
0fa0: 20 20 20 20 20 6d 65 74 68 6f 64 20 72 2e 0a 20       method r.. 
0fb0: 20 20 2a 2f 0a 20 20 5f 5f 56 41 5f 50 43 43 5f    */.  __VA_PCC_
0fc0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20  STRUCT_RETURN.= 
0fd0: 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20 6e 65 65 64  1<<0,./* a: need
0fe0: 20 74 6f 20 63 6f 70 79 20 74 68 65 20 73 74 72   to copy the str
0ff0: 75 63 74 20 2a 2f 0a 20 20 5f 5f 56 41 5f 53 4d  uct */.  __VA_SM
1000: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
1010: 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a 20 72 3a 20  N.= 1<<1,./* r: 
1020: 73 70 65 63 69 61 6c 20 63 61 73 65 20 66 6f 72  special case for
1030: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 73 20 2a   small structs *
1040: 2f 0a 20 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52  /.  __VA_GCC_STR
1050: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c  UCT_RETURN.= 1<<
1060: 32 2c 09 2f 2a 20 63 6f 6e 73 69 64 65 72 20 38  2,./* consider 8
1070: 20 62 79 74 65 20 73 74 72 75 63 74 73 20 61 73   byte structs as
1080: 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69 66 20 64 65   small */.#if de
1090: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
10a0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
10b0: 70 61 72 63 36 34 5f 5f 29 0a 20 20 5f 5f 56 41  parc64__).  __VA
10c0: 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45  _SUNCC_STRUCT_RE
10d0: 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f  TURN.= 1<<3,.  _
10e0: 5f 56 41 5f 53 55 4e 50 52 4f 43 43 5f 53 54 52  _VA_SUNPROCC_STR
10f0: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c  UCT_RETURN.= 1<<
1100: 34 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 56 41 5f  4,.#else.  __VA_
1110: 53 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54  SUNCC_STRUCT_RET
1120: 55 52 4e 09 3d 20 30 2c 0a 20 20 5f 5f 56 41 5f  URN.= 0,.  __VA_
1130: 53 55 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f  SUNPROCC_STRUCT_
1140: 52 45 54 55 52 4e 09 3d 20 30 2c 0a 23 65 6e 64  RETURN.= 0,.#end
1150: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
1160: 5f 69 33 38 36 5f 5f 29 0a 20 20 5f 5f 56 41 5f  _i386__).  __VA_
1170: 4e 45 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52  NEXTGCC_STRUCT_R
1180: 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20  ETURN.= 1<<3,.  
1190: 5f 5f 56 41 5f 4d 53 56 43 5f 53 54 52 55 43 54  __VA_MSVC_STRUCT
11a0: 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 34 2c 0a  _RETURN.= 1<<4,.
11b0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
11c0: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 20 20 5f  ed(__hppa__).  _
11d0: 5f 56 41 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43  _VA_OLDGCC_STRUC
11e0: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c  T_RETURN.= 1<<3,
11f0: 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 65  .#endif.  /* the
1200: 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20   default way to 
1210: 72 65 74 75 72 6e 20 73 74 72 75 63 74 73 20 2a  return structs *
1220: 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69  /.  /* This choi
1230: 63 65 20 68 65 72 65 20 69 73 20 62 61 73 65 64  ce here is based
1240: 20 6f 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69   on the assumpti
1250: 6f 6e 20 74 68 61 74 20 74 68 65 20 66 75 6e 63  on that the func
1260: 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20  tion you are.   
1270: 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20  * going to call 
1280: 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65  has been compile
1290: 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  d with the same 
12a0: 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65  compiler you are
12b0: 20 75 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69   using to.   * i
12c0: 6e 63 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65  nclude this file
12d0: 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61  ..   * If you wa
12e0: 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74  nt to call funct
12f0: 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65  ions with anothe
1300: 72 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 69  r struct returni
1310: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20  ng convention,. 
1320: 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e    * just  #defin
1330: 65 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 52 45  e __VA_STRUCT_RE
1340: 54 55 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65  TURN ....   * be
1350: 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69  fore or after #i
1360: 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c 6c  ncluding <vacall
1370: 5f 72 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66  _r.h>..   */.#if
1380: 6e 64 65 66 20 5f 5f 56 41 5f 53 54 52 55 43 54  ndef __VA_STRUCT
1390: 5f 52 45 54 55 52 4e 0a 20 20 5f 5f 56 41 5f 53  _RETURN.  __VA_S
13a0: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09 3d 0a  TRUCT_RETURN..=.
13b0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
13c0: 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  arc__) && !defin
13d0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20  ed(__sparc64__) 
13e0: 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e 29 20  && defined(sun) 
13f0: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 53 55 4e  && defined(__SUN
1400: 50 52 4f 5f 43 29 20 2f 2a 20 53 55 4e 57 73 70  PRO_C) /* SUNWsp
1410: 72 6f 20 63 63 20 2a 2f 0a 09 09 09 09 20 20 5f  ro cc */.....  _
1420: 5f 56 41 5f 53 55 4e 50 52 4f 43 43 5f 53 54 52  _VA_SUNPROCC_STR
1430: 55 43 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 73  UCT_RETURN,.#els
1440: 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  e.#if defined(__
1450: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  PCC_STRUCT_RETUR
1460: 4e 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65 64 20  N__) /* defined 
1470: 74 68 72 6f 75 67 68 20 63 6f 6e 66 69 67 75 72  through configur
1480: 65 2c 20 73 65 65 20 61 62 6f 76 65 20 2a 2f 0a  e, see above */.
1490: 09 09 09 09 20 20 5f 5f 56 41 5f 50 43 43 5f 53  ....  __VA_PCC_S
14a0: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 0a 23 65  TRUCT_RETURN,.#e
14b0: 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28  lse.#if defined(
14c0: 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  __SMALL_STRUCT_R
14d0: 45 54 55 52 4e 5f 5f 29 20 7c 7c 20 64 65 66 69  ETURN__) || defi
14e0: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
14f0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
1500: 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ps64__) || defin
1510: 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 2f 2a 20  ed(__ARMEL__)/* 
1520: 64 65 66 69 6e 65 64 20 74 68 72 6f 75 67 68 20  defined through 
1530: 63 6f 6e 66 69 67 75 72 65 2c 20 73 65 65 20 61  configure, see a
1540: 62 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20 5f 5f  bove */.....  __
1550: 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f  VA_SMALL_STRUCT_
1560: 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a  RETURN |.#endif.
1570: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e  #if defined(__GN
1580: 55 43 5f 5f 29 0a 09 09 09 09 20 20 5f 5f 56 41  UC__).....  __VA
1590: 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  _GCC_STRUCT_RETU
15a0: 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20  RN |.#endif.#if 
15b0: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
15c0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 4e 65 58  ) && defined(NeX
15d0: 54 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f  T) && defined(__
15e0: 47 4e 55 43 5f 5f 29 20 2f 2a 20 4e 65 58 54 20  GNUC__) /* NeXT 
15f0: 67 63 63 2d 32 2e 35 2e 38 20 2a 2f 0a 09 09 09  gcc-2.5.8 */....
1600: 09 20 20 5f 5f 56 41 5f 4e 45 58 54 47 43 43 5f  .  __VA_NEXTGCC_
1610: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a  STRUCT_RETURN |.
1620: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
1630: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20  ed(__i386__) && 
1640: 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52  defined(_MSC_VER
1650: 29 20 2f 2a 20 4d 53 56 43 20 34 2e 30 20 2a 2f  ) /* MSVC 4.0 */
1660: 0a 09 09 09 09 20 20 5f 5f 56 41 5f 4d 53 56 43  .....  __VA_MSVC
1670: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c  _STRUCT_RETURN |
1680: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
1690: 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 26 26  ned(__hppa__) &&
16a0: 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f   defined(__GNUC_
16b0: 5f 29 20 26 26 20 28 5f 5f 47 4e 55 43 5f 5f 20  _) && (__GNUC__ 
16c0: 3c 20 33 29 20 26 26 20 28 5f 5f 47 4e 55 43 5f  < 3) && (__GNUC_
16d0: 4d 49 4e 4f 52 5f 5f 20 3c 20 37 29 0a 09 09 09  MINOR__ < 7)....
16e0: 09 20 20 5f 5f 56 41 5f 4f 4c 44 47 43 43 5f 53  .  __VA_OLDGCC_S
16f0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23  TRUCT_RETURN |.#
1700: 65 6e 64 69 66 0a 20 20 09 09 09 09 20 20 30 2c  endif.  ....  0,
1710: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
1720: 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20  endif..  /* how 
1730: 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f 61 74 73  to return floats
1740: 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28   */.#if defined(
1750: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65  __m68k__) || (de
1760: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
1770: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
1780: 70 61 72 63 36 34 5f 5f 29 29 0a 20 20 5f 5f 56  parc64__)).  __V
1790: 41 5f 53 55 4e 43 43 5f 46 4c 4f 41 54 5f 52 45  A_SUNCC_FLOAT_RE
17a0: 54 55 52 4e 09 3d 20 31 3c 3c 35 2c 0a 23 65 6e  TURN.= 1<<5,.#en
17b0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
17c0: 5f 5f 6d 36 38 6b 5f 5f 29 0a 20 20 5f 5f 56 41  __m68k__).  __VA
17d0: 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55  _FREG_FLOAT_RETU
17e0: 52 4e 09 3d 20 31 3c 3c 36 2c 0a 23 65 6e 64 69  RN.= 1<<6,.#endi
17f0: 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75  f.  /* the defau
1800: 6c 74 20 77 61 79 20 74 6f 20 72 65 74 75 72 6e  lt way to return
1810: 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20   floats */.  /* 
1820: 54 68 69 73 20 63 68 6f 69 63 65 20 68 65 72 65  This choice here
1830: 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65   is based on the
1840: 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74   assumption that
1850: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f   the function yo
1860: 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67  u are.   * going
1870: 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65   to call has bee
1880: 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  n compiled with 
1890: 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65  the same compile
18a0: 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20  r you are using 
18b0: 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20  to.   * include 
18c0: 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20  this file..   * 
18d0: 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63  If you want to c
18e0: 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69  all functions wi
18f0: 74 68 20 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74  th another float
1900: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6e 76 65   returning conve
1910: 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 74  ntion,.   * just
1920: 20 20 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f 46    #define __VA_F
1930: 4c 4f 41 54 5f 52 45 54 55 52 4e 20 2e 2e 2e 0a  LOAT_RETURN ....
1940: 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20 61     * before or a
1950: 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67 20  fter #including 
1960: 3c 76 61 63 61 6c 6c 5f 72 2e 68 3e 2e 0a 20 20  <vacall_r.h>..  
1970: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41   */.#ifndef __VA
1980: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 0a 23 69  _FLOAT_RETURN.#i
1990: 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  f (defined(__m68
19a0: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  k__) || (defined
19b0: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
19c0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
19d0: 34 5f 5f 29 29 29 20 26 26 20 21 64 65 66 69 6e  4__))) && !defin
19e0: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20  ed(__GNUC__) && 
19f0: 64 65 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20  defined(sun) && 
1a00: 21 64 65 66 69 6e 65 64 28 5f 5f 53 55 4e 50 52  !defined(__SUNPR
1a10: 4f 5f 43 29 20 20 2f 2a 20 73 75 6e 20 63 63 20  O_C)  /* sun cc 
1a20: 2a 2f 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  */.  __VA_FLOAT_
1a30: 52 45 54 55 52 4e 09 09 3d 20 5f 5f 56 41 5f 53  RETURN..= __VA_S
1a40: 55 4e 43 43 5f 46 4c 4f 41 54 5f 52 45 54 55 52  UNCC_FLOAT_RETUR
1a50: 4e 2c 0a 23 65 6c 69 66 20 28 64 65 66 69 6e 65  N,.#elif (define
1a60: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 26 26 20 21  d(__m68k__) && !
1a70: 64 65 66 69 6e 65 64 28 5f 5f 49 52 45 47 5f 46  defined(__IREG_F
1a80: 4c 4f 41 54 5f 52 45 54 55 52 4e 5f 5f 29 29 0a  LOAT_RETURN__)).
1a90: 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54    __VA_FLOAT_RET
1aa0: 55 52 4e 09 09 3d 20 5f 5f 56 41 5f 46 52 45 47  URN..= __VA_FREG
1ab0: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 2c 0a 23  _FLOAT_RETURN,.#
1ac0: 65 6c 73 65 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41  else.  __VA_FLOA
1ad0: 54 5f 52 45 54 55 52 4e 09 09 3d 20 30 2c 0a 23  T_RETURN..= 0,.#
1ae0: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20  endif.#endif..  
1af0: 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20 73  /* how to pass s
1b00: 74 72 75 63 74 73 20 2a 2f 0a 23 69 66 20 64 65  tructs */.#if de
1b10: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
1b20: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
1b30: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
1b40: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20  ed(__mips64__). 
1b50: 20 5f 5f 56 41 5f 53 47 49 43 43 5f 53 54 52 55   __VA_SGICC_STRU
1b60: 43 54 5f 41 52 47 53 09 3d 20 31 3c 3c 37 2c 0a  CT_ARGS.= 1<<7,.
1b70: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
1b80: 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20  ed(__powerpc__) 
1b90: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f  && !defined(__po
1ba0: 77 65 72 70 63 36 34 5f 5f 29 0a 20 20 5f 5f 56  werpc64__).  __V
1bb0: 41 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41  A_AIXCC_STRUCT_A
1bc0: 52 47 53 09 3d 20 31 3c 3c 37 2c 0a 23 65 6e 64  RGS.= 1<<7,.#end
1bd0: 69 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61  if.  /* the defa
1be0: 75 6c 74 20 77 61 79 20 74 6f 20 70 61 73 73 20  ult way to pass 
1bf0: 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54  floats */.  /* T
1c00: 68 69 73 20 63 68 6f 69 63 65 20 68 65 72 65 20  his choice here 
1c10: 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  is based on the 
1c20: 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20  assumption that 
1c30: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75  the function you
1c40: 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20   are.   * going 
1c50: 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e  to call has been
1c60: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
1c70: 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72  he same compiler
1c80: 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74   you are using t
1c90: 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74  o.   * include t
1ca0: 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49  his file..   * I
1cb0: 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61  f you want to ca
1cc0: 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74  ll functions wit
1cd0: 68 20 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20  h another float 
1ce0: 70 61 73 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69  passing conventi
1cf0: 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23  on,.   * just  #
1d00: 64 65 66 69 6e 65 20 5f 5f 56 41 5f 53 54 52 55  define __VA_STRU
1d10: 43 54 5f 41 52 47 53 20 2e 2e 2e 0a 20 20 20 2a  CT_ARGS ....   *
1d20: 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65 72   before or after
1d30: 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63   #including <vac
1d40: 61 6c 6c 5f 72 2e 68 3e 2e 0a 20 20 20 2a 2f 0a  all_r.h>..   */.
1d50: 23 69 66 6e 64 65 66 20 5f 5f 56 41 5f 53 54 52  #ifndef __VA_STR
1d60: 55 43 54 5f 41 52 47 53 0a 23 69 66 20 28 64 65  UCT_ARGS.#if (de
1d70: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
1d80: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
1d90: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
1da0: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 29 20  ed(__mips64__)) 
1db0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e  && !defined(__GN
1dc0: 55 43 5f 5f 29 20 2f 2a 20 53 47 49 20 6d 69 70  UC__) /* SGI mip
1dd0: 73 20 63 63 20 2a 2f 0a 20 20 5f 5f 56 41 5f 53  s cc */.  __VA_S
1de0: 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 5f 5f  TRUCT_ARGS..= __
1df0: 56 41 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f  VA_SGICC_STRUCT_
1e00: 41 52 47 53 2c 0a 23 65 6c 73 65 0a 23 69 66 20  ARGS,.#else.#if 
1e10: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
1e20: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  c__) && !defined
1e30: 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20  (__powerpc64__) 
1e40: 26 26 20 64 65 66 69 6e 65 64 28 5f 41 49 58 29  && defined(_AIX)
1e50: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47   && !defined(__G
1e60: 4e 55 43 5f 5f 29 20 2f 2a 20 41 49 58 20 63 63  NUC__) /* AIX cc
1e70: 2c 20 78 6c 63 20 2a 2f 0a 20 20 5f 5f 56 41 5f  , xlc */.  __VA_
1e80: 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 5f  STRUCT_ARGS..= _
1e90: 5f 56 41 5f 41 49 58 43 43 5f 53 54 52 55 43 54  _VA_AIXCC_STRUCT
1ea0: 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 20 20 5f  _ARGS,.#else.  _
1eb0: 5f 56 41 5f 53 54 52 55 43 54 5f 41 52 47 53 09  _VA_STRUCT_ARGS.
1ec0: 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e  .= 0,.#endif.#en
1ed0: 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a  dif.#endif..  /*
1ee0: 20 68 6f 77 20 74 6f 20 70 61 73 73 20 66 6c 6f   how to pass flo
1ef0: 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 41 4e 53 49  ats */.  /* ANSI
1f00: 20 43 20 63 6f 6d 70 69 6c 65 72 73 20 61 6e 64   C compilers and
1f10: 20 47 4e 55 20 67 63 63 20 70 61 73 73 20 66 6c   GNU gcc pass fl
1f20: 6f 61 74 73 20 61 73 20 66 6c 6f 61 74 73 2e 0a  oats as floats..
1f30: 20 20 20 2a 20 4b 26 52 20 43 20 63 6f 6d 70 69     * K&R C compi
1f40: 6c 65 72 73 20 70 61 73 73 20 66 6c 6f 61 74 73  lers pass floats
1f50: 20 61 73 20 64 6f 75 62 6c 65 73 2e 20 57 65 20   as doubles. We 
1f60: 64 6f 6e 27 74 20 73 75 70 70 6f 72 74 20 74 68  don't support th
1f70: 65 6d 20 61 6e 79 20 6d 6f 72 65 2e 0a 20 20 20  em any more..   
1f80: 2a 2f 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20  */..  /* how to 
1f90: 70 61 73 73 20 61 6e 64 20 72 65 74 75 72 6e 20  pass and return 
1fa0: 73 6d 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 72  small integer ar
1fb0: 67 75 6d 65 6e 74 73 20 2a 2f 0a 20 20 5f 5f 56  guments */.  __V
1fc0: 41 5f 41 4e 53 49 5f 49 4e 54 45 47 45 52 53 09  A_ANSI_INTEGERS.
1fd0: 09 3d 20 30 2c 20 2f 2a 20 6e 6f 20 70 72 6f 6d  .= 0, /* no prom
1fe0: 6f 74 69 6f 6e 73 20 2a 2f 0a 20 20 5f 5f 56 41  otions */.  __VA
1ff0: 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54  _TRADITIONAL_INT
2000: 45 47 45 52 53 09 3d 20 30 2c 20 2f 2a 20 70 72  EGERS.= 0, /* pr
2010: 6f 6d 6f 74 65 20 5b 75 5d 63 68 61 72 2c 20 5b  omote [u]char, [
2020: 75 5d 73 68 6f 72 74 20 74 6f 20 5b 75 5d 69 6e  u]short to [u]in
2030: 74 20 2a 2f 0a 20 20 2f 2a 20 46 6f 72 74 75 6e  t */.  /* Fortun
2040: 61 74 65 6c 79 20 74 68 65 73 65 20 74 77 6f 20  ately these two 
2050: 6d 65 74 68 6f 64 73 20 61 72 65 20 63 6f 6d 70  methods are comp
2060: 61 74 69 62 6c 65 2e 20 4f 75 72 20 6d 61 63 72  atible. Our macr
2070: 6f 73 20 77 6f 72 6b 20 77 69 74 68 20 62 6f 74  os work with bot
2080: 68 2e 20 2a 2f 0a 0a 20 20 2f 2a 20 73 74 61 63  h. */..  /* stac
2090: 6b 20 63 6c 65 61 6e 75 70 20 70 6f 6c 69 63 79  k cleanup policy
20a0: 20 2a 2f 0a 20 20 5f 5f 56 41 5f 43 44 45 43 4c   */.  __VA_CDECL
20b0: 5f 43 4c 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f  _CLEANUP..= 0, /
20c0: 2a 20 63 61 6c 6c 65 72 20 70 6f 70 73 20 61 72  * caller pops ar
20d0: 67 73 20 61 66 74 65 72 20 72 65 74 75 72 6e 20  gs after return 
20e0: 2a 2f 0a 20 20 5f 5f 56 41 5f 53 54 44 43 41 4c  */.  __VA_STDCAL
20f0: 4c 5f 43 4c 45 41 4e 55 50 09 09 3d 20 31 3c 3c  L_CLEANUP..= 1<<
2100: 39 2c 20 2f 2a 20 63 61 6c 6c 65 65 20 70 6f 70  9, /* callee pop
2110: 73 20 61 72 67 73 20 62 65 66 6f 72 65 20 72 65  s args before re
2120: 74 75 72 6e 20 2a 2f 0a 09 09 09 09 20 20 20 20  turn */.....    
2130: 20 2f 2a 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e   /* currently on
2140: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
2150: 5f 5f 69 33 38 36 5f 5f 20 2a 2f 0a 23 69 66 6e  __i386__ */.#ifn
2160: 64 65 66 20 5f 5f 56 41 5f 43 4c 45 41 4e 55 50  def __VA_CLEANUP
2170: 0a 20 20 5f 5f 56 41 5f 43 4c 45 41 4e 55 50 09  .  __VA_CLEANUP.
2180: 09 09 3d 20 5f 5f 56 41 5f 43 44 45 43 4c 5f 43  ..= __VA_CDECL_C
2190: 4c 45 41 4e 55 50 2c 0a 23 65 6e 64 69 66 0a 0a  LEANUP,.#endif..
21a0: 20 20 2f 2a 20 54 68 65 73 65 20 61 72 65 20 66    /* These are f
21b0: 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20  or internal use 
21c0: 6f 6e 6c 79 20 2a 2f 0a 23 69 66 20 64 65 66 69  only */.#if defi
21d0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
21e0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
21f0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
2200: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
2210: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
2220: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
2230: 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66  parc64__) || def
2240: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
2250: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
2260: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
2270: 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26 20  __powerpc__) && 
2280: 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  !defined(__power
2290: 70 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69  pc64__)) || defi
22a0: 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20  ned(__convex__) 
22b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
22c0: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
22d0: 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c 20 64  __x86_64__) || d
22e0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
22f0: 0a 20 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  .  __VA_REGISTER
2300: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
2310: 20 31 3c 3c 31 30 2c 0a 23 65 6e 64 69 66 0a 23   1<<10,.#endif.#
2320: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
2330: 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  s__) && !defined
2340: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26  (__mipsn32__) &&
2350: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
2360: 36 34 5f 5f 29 0a 20 20 5f 5f 56 41 5f 46 4c 4f  64__).  __VA_FLO
2370: 41 54 5f 31 09 09 09 3d 20 31 3c 3c 31 31 2c 0a  AT_1...= 1<<11,.
2380: 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 32 09 09    __VA_FLOAT_2..
2390: 09 3d 20 31 3c 3c 31 32 2c 0a 23 65 6e 64 69 66  .= 1<<12,.#endif
23a0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
23b0: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
23c0: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
23d0: 0a 20 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  .  __VA_REGISTER
23e0: 5f 46 4c 4f 41 54 53 54 52 55 43 54 5f 52 45 54  _FLOATSTRUCT_RET
23f0: 55 52 4e 09 3d 20 31 3c 3c 31 33 2c 0a 20 20 5f  URN.= 1<<13,.  _
2400: 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 44 4f 55  _VA_REGISTER_DOU
2410: 42 4c 45 53 54 52 55 43 54 5f 52 45 54 55 52 4e  BLESTRUCT_RETURN
2420: 09 3d 20 31 3c 3c 31 34 2c 0a 23 65 6e 64 69 66  .= 1<<14,.#endif
2430: 0a 0a 20 20 5f 5f 56 41 5f 66 6c 61 67 5f 66 6f  ..  __VA_flag_fo
2440: 72 5f 62 72 6f 6b 65 6e 5f 63 6f 6d 70 69 6c 65  r_broken_compile
2450: 72 73 5f 74 68 61 74 5f 64 6f 6e 74 5f 6c 69 6b  rs_that_dont_lik
2460: 65 5f 74 72 61 69 6c 69 6e 67 5f 63 6f 6d 6d 61  e_trailing_comma
2470: 73 0a 7d 3b 0a 0a 2f 2a 0a 20 2a 20 44 65 66 69  s.};../*. * Defi
2480: 6e 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 60 76  nition of the `v
2490: 61 5f 61 6c 69 73 74 27 20 74 79 70 65 2e 0a 20  a_alist' type.. 
24a0: 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
24b0: 74 0a 7b 0a 20 20 2f 2a 20 73 6f 6d 65 20 76 61  t.{.  /* some va
24c0: 5f 2e 2e 2e 20 6d 61 63 72 6f 73 20 6e 65 65 64  _... macros need
24d0: 20 74 68 65 73 65 20 66 6c 61 67 73 20 2a 2f 0a   these flags */.
24e0: 20 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 20    int           
24f0: 20 66 6c 61 67 73 3b 0a 20 20 2f 2a 20 63 75 72   flags;.  /* cur
2500: 72 65 6e 74 20 70 6f 69 6e 74 65 72 20 69 6e 74  rent pointer int
2510: 6f 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 61  o the argument a
2520: 72 72 61 79 20 2a 2f 0a 20 20 75 6e 73 69 67 6e  rray */.  unsign
2530: 65 64 20 6c 6f 6e 67 20 20 61 70 74 72 3b 0a 20  ed long  aptr;. 
2540: 20 2f 2a 20 73 74 72 75 63 74 75 72 65 20 72 65   /* structure re
2550: 74 75 72 6e 20 70 6f 69 6e 74 65 72 2c 20 72 65  turn pointer, re
2560: 74 75 72 6e 20 74 79 70 65 2c 20 72 65 74 75 72  turn type, retur
2570: 6e 20 74 79 70 65 20 73 69 7a 65 20 2a 2f 0a 20  n type size */. 
2580: 20 76 6f 69 64 2a 20 20 20 20 20 20 20 20 20 20   void*          
2590: 72 61 64 64 72 3b 0a 20 20 65 6e 75 6d 20 5f 5f  raddr;.  enum __
25a0: 56 41 74 79 70 65 20 20 72 74 79 70 65 3b 0a 20  VAtype  rtype;. 
25b0: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20   unsigned long  
25c0: 72 73 69 7a 65 3b 0a 23 69 66 20 64 65 66 69 6e  rsize;.#if defin
25d0: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
25e0: 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  (defined(__power
25f0: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
2600: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
2610: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 4d 41   && defined(__MA
2620: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
2630: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 0a 20 20 2f  (__APPLE__)).  /
2640: 2a 20 46 69 6c 6c 65 72 20 77 6f 72 64 2c 20 6e  * Filler word, n
2650: 65 65 64 65 64 20 69 66 20 74 68 65 20 6e 75 6d  eeded if the num
2660: 62 65 72 73 20 6f 66 20 77 6f 72 64 73 20 75 70  bers of words up
2670: 20 74 6f 20 6e 6f 77 20 69 6e 20 74 68 69 73 20   to now in this 
2680: 73 74 72 75 63 74 75 72 65 20 2a 2f 0a 20 20 2f  structure */.  /
2690: 2a 20 69 73 20 6f 64 64 20 28 62 65 63 61 75 73  * is odd (becaus
26a0: 65 20 6f 6e 20 4d 53 56 43 2c 20 61 6c 69 67 6e  e on MSVC, align
26b0: 6f 66 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20  of(double) = 8, 
26c0: 6e 6f 72 6d 61 6c 6c 79 20 3d 20 34 3b 20 73 69  normally = 4; si
26d0: 6d 69 6c 61 72 6c 79 2c 20 20 2a 2f 0a 20 20 2f  milarly,  */.  /
26e0: 2a 20 6f 6e 20 4d 61 63 4f 53 20 58 2c 20 74 68  * on MacOS X, th
26f0: 65 20 41 70 70 6c 65 20 63 6f 6d 70 69 6c 65 72  e Apple compiler
2700: 20 68 61 73 20 61 6c 69 67 6e 6f 66 28 64 6f 75   has alignof(dou
2710: 62 6c 65 29 20 3d 20 38 20 77 68 65 72 65 61 73  ble) = 8 whereas
2720: 20 74 68 65 20 20 20 20 20 20 2a 2f 0a 20 20 2f   the      */.  /
2730: 2a 20 73 74 61 6e 64 61 72 64 20 47 43 43 20 68  * standard GCC h
2740: 61 73 20 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c  as alignof(doubl
2750: 65 29 20 3d 20 34 2e 20 20 20 20 20 20 20 20 20  e) = 4.         
2760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2770: 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 5f            */.  _
2780: 5f 76 61 77 6f 72 64 20 20 20 20 20 20 20 66 69  _vaword       fi
2790: 6c 6c 65 72 31 3b 0a 23 65 6e 64 69 66 0a 20 20  ller1;.#endif.  
27a0: 2f 2a 20 74 65 6d 70 6f 72 61 72 79 20 73 74 6f  /* temporary sto
27b0: 72 61 67 65 20 66 6f 72 20 72 65 74 75 72 6e 20  rage for return 
27c0: 76 61 6c 75 65 20 2a 2f 0a 20 20 75 6e 69 6f 6e  value */.  union
27d0: 20 7b 0a 20 20 20 20 63 68 61 72 20 20 20 20 20   {.    char     
27e0: 20 20 20 20 20 20 20 20 20 20 20 5f 63 68 61 72             _char
27f0: 3b 0a 20 20 20 20 73 69 67 6e 65 64 20 63 68 61  ;.    signed cha
2800: 72 20 20 20 20 20 20 20 20 20 5f 73 63 68 61 72  r         _schar
2810: 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63  ;.    unsigned c
2820: 68 61 72 20 20 20 20 20 20 20 5f 75 63 68 61 72  har       _uchar
2830: 3b 0a 20 20 20 20 73 68 6f 72 74 20 20 20 20 20  ;.    short     
2840: 20 20 20 20 20 20 20 20 20 20 5f 73 68 6f 72 74            _short
2850: 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 73  ;.    unsigned s
2860: 68 6f 72 74 20 20 20 20 20 20 5f 75 73 68 6f 72  hort      _ushor
2870: 74 3b 0a 20 20 20 20 69 6e 74 20 20 20 20 20 20  t;.    int      
2880: 20 20 20 20 20 20 20 20 20 20 20 5f 69 6e 74 3b             _int;
2890: 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  .    unsigned in
28a0: 74 20 20 20 20 20 20 20 20 5f 75 69 6e 74 3b 0a  t        _uint;.
28b0: 20 20 20 20 6c 6f 6e 67 20 20 20 20 20 20 20 20      long        
28c0: 20 20 20 20 20 20 20 20 5f 6c 6f 6e 67 3b 0a 20          _long;. 
28d0: 20 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67     unsigned long
28e0: 20 20 20 20 20 20 20 5f 75 6c 6f 6e 67 3b 0a 23         _ulong;.#
28f0: 69 66 20 21 28 64 65 66 69 6e 65 64 28 5f 5f 6d  if !(defined(__m
2900: 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  ips64__) || defi
2910: 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c  ned(__alpha__) |
2920: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65  | defined(__powe
2930: 72 70 63 36 34 5f 5f 29 29 20 26 26 20 64 65 66  rpc64__)) && def
2940: 69 6e 65 64 28 48 41 56 45 5f 4c 4f 4e 47 5f 4c  ined(HAVE_LONG_L
2950: 4f 4e 47 5f 49 4e 54 29 0a 20 20 20 20 6c 6f 6e  ONG_INT).    lon
2960: 67 20 6c 6f 6e 67 20 20 20 20 20 20 20 20 20 20  g long          
2970: 20 5f 6c 6f 6e 67 6c 6f 6e 67 3b 0a 20 20 20 20   _longlong;.    
2980: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f  unsigned long lo
2990: 6e 67 20 20 5f 75 6c 6f 6e 67 6c 6f 6e 67 3b 0a  ng  _ulonglong;.
29a0: 23 65 6e 64 69 66 0a 20 20 20 20 66 6c 6f 61 74  #endif.    float
29b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
29c0: 66 6c 6f 61 74 3b 0a 20 20 20 20 64 6f 75 62 6c  float;.    doubl
29d0: 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f  e              _
29e0: 64 6f 75 62 6c 65 3b 0a 20 20 20 20 76 6f 69 64  double;.    void
29f0: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
2a00: 5f 70 74 72 3b 0a 20 20 20 20 5f 5f 76 61 77 6f  _ptr;.    __vawo
2a10: 72 64 20 20 20 20 20 20 20 20 20 20 20 20 5f 77  rd            _w
2a20: 6f 72 64 73 5b 32 5d 3b 0a 20 20 7d 20 20 20 20  ords[2];.  }    
2a30: 20 20 20 20 20 20 20 20 20 20 74 6d 70 3b 0a 23            tmp;.#
2a40: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
2a50: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  6__) || defined(
2a60: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65  __m68k__) || (de
2a70: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
2a80: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
2a90: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65  parc64__)) || de
2aa0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
2ab0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
2ac0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
2ad0: 5f 5f 69 61 36 34 5f 5f 29 0a 20 20 76 6f 69 64  __ia64__).  void
2ae0: 2a 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63  *          struc
2af0: 74 72 61 64 64 72 3b 0a 23 65 6e 64 69 66 0a 23  traddr;.#endif.#
2b00: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
2b10: 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  s__) || defined(
2b20: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
2b30: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
2b40: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2b50: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
2b60: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 20  ined(__hppa__). 
2b70: 20 6c 6f 6e 67 20 20 20 20 20 20 20 20 20 20 20   long           
2b80: 6d 65 6d 61 72 67 70 74 72 3b 0a 23 65 6e 64 69  memargptr;.#endi
2b90: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
2ba0: 68 70 70 61 5f 5f 29 0a 20 20 6c 6f 6e 67 20 20  hppa__).  long  
2bb0: 20 20 20 20 20 20 20 20 20 66 61 72 67 5f 6f 66           farg_of
2bc0: 66 73 65 74 3b 0a 20 20 6c 6f 6e 67 20 20 20 20  fset;.  long    
2bd0: 20 20 20 20 20 20 20 64 61 72 67 5f 6f 66 66 73         darg_offs
2be0: 65 74 3b 0a 20 20 66 6c 6f 61 74 20 20 20 20 20  et;.  float     
2bf0: 20 20 20 20 20 66 61 72 67 5b 34 5d 3b 0a 20 20       farg[4];.  
2c00: 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 64  double         d
2c10: 61 72 67 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23  arg[2];.#endif.#
2c20: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
2c30: 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  s__) && !defined
2c40: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26  (__mipsn32__) &&
2c50: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
2c60: 36 34 5f 5f 29 0a 20 20 69 6e 74 20 20 20 20 20  64__).  int     
2c70: 20 20 20 20 20 20 20 61 6e 75 6d 3b 0a 20 20 66         anum;.  f
2c80: 6c 6f 61 74 20 20 20 20 20 20 20 20 20 20 66 61  loat          fa
2c90: 72 67 5b 32 5d 3b 0a 20 20 64 6f 75 62 6c 65 20  rg[2];.  double 
2ca0: 20 20 20 20 20 20 20 20 64 61 72 67 5b 32 5d 3b          darg[2];
2cb0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
2cc0: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
2cd0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
2ce0: 70 73 36 34 5f 5f 29 0a 20 20 69 6e 74 20 20 20  ps64__).  int   
2cf0: 20 20 20 20 20 20 20 20 20 61 6e 75 6d 3b 0a 20           anum;. 
2d00: 20 66 6c 6f 61 74 20 20 20 20 20 20 20 20 20 20   float          
2d10: 66 61 72 67 5b 38 5d 3b 0a 20 20 64 6f 75 62 6c  farg[8];.  doubl
2d20: 65 20 20 20 20 20 20 20 20 20 64 61 72 67 5b 38  e         darg[8
2d30: 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ];.#endif.#if de
2d40: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
2d50: 5f 29 0a 20 20 69 6e 74 20 20 20 20 20 20 20 20  _).  int        
2d60: 20 20 20 20 61 6e 75 6d 3b 0a 20 20 66 6c 6f 61      anum;.  floa
2d70: 74 20 20 20 20 20 20 20 20 20 20 66 61 72 67 5b  t          farg[
2d80: 31 36 5d 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20  16];.  double   
2d90: 20 20 20 20 20 20 64 61 72 67 5b 31 36 5d 3b 0a        darg[16];.
2da0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
2db0: 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20  ed(__powerpc__) 
2dc0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77  || defined(__pow
2dd0: 65 72 70 63 36 34 5f 5f 29 0a 20 20 64 6f 75 62  erpc64__).  doub
2de0: 6c 65 2a 20 20 20 20 20 20 20 20 6d 65 6d 66 61  le*        memfa
2df0: 72 67 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65 20  rgptr;.  double 
2e00: 20 20 20 20 20 20 20 20 66 61 72 67 5b 31 33 5d          farg[13]
2e10: 3b 0a 23 69 66 20 21 28 64 65 66 69 6e 65 64 28  ;.#if !(defined(
2e20: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
2e30: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
2e40: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
2e50: 29 29 29 0a 20 20 5f 5f 76 61 77 6f 72 64 20 20  ))).  __vaword  
2e60: 20 20 20 20 20 72 65 67 61 72 67 5b 38 5d 3b 0a       regarg[8];.
2e70: 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20    unsigned long 
2e80: 20 73 61 70 74 72 3b 0a 20 20 69 6e 74 20 20 20   saptr;.  int   
2e90: 20 20 20 20 20 20 20 20 20 6f 6e 73 74 61 63 6b           onstack
2ea0: 3b 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ;.#endif.#endif.
2eb0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33  #if defined(__s3
2ec0: 39 30 5f 5f 29 0a 20 20 66 6c 6f 61 74 2a 20 20  90__).  float*  
2ed0: 20 20 20 20 20 20 20 6d 65 6d 66 61 72 67 70 74         memfargpt
2ee0: 72 3b 0a 20 20 64 6f 75 62 6c 65 2a 20 20 20 20  r;.  double*    
2ef0: 20 20 20 20 6d 65 6d 64 61 72 67 70 74 72 3b 0a      memdargptr;.
2f00: 20 20 66 6c 6f 61 74 20 20 20 20 20 20 20 20 20    float         
2f10: 20 66 61 72 67 5b 32 5d 3b 0a 20 20 64 6f 75 62   farg[2];.  doub
2f20: 6c 65 20 20 20 20 20 20 20 20 20 64 61 72 67 5b  le         darg[
2f30: 32 5d 3b 0a 20 20 5f 5f 76 61 77 6f 72 64 20 20  2];.  __vaword  
2f40: 20 20 20 20 20 72 65 67 61 72 67 5b 35 5d 3b 0a       regarg[5];.
2f50: 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20    unsigned long 
2f60: 20 73 61 70 74 72 3b 0a 20 20 69 6e 74 20 20 20   saptr;.  int   
2f70: 20 20 20 20 20 20 20 20 20 6f 6e 73 74 61 63 6b           onstack
2f80: 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ;.#endif.#if def
2f90: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 20  ined(__ia64__). 
2fa0: 20 5f 5f 76 61 77 6f 72 64 2a 20 20 20 20 20 20   __vaword*      
2fb0: 73 61 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65 2a  saptr;.  double*
2fc0: 20 20 20 20 20 20 20 20 6d 65 6d 66 61 72 67 70          memfargp
2fd0: 74 72 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20  tr;.  double    
2fe0: 20 20 20 20 20 66 61 72 67 5b 38 5d 3b 0a 23 65       farg[8];.#e
2ff0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3000: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 20 20 64  (__x86_64__).  d
3010: 6f 75 62 6c 65 2a 20 20 20 20 20 20 20 20 6d 65  ouble*        me
3020: 6d 66 61 72 67 70 74 72 3b 0a 20 20 64 6f 75 62  mfargptr;.  doub
3030: 6c 65 20 20 20 20 20 20 20 20 20 66 61 72 67 5b  le         farg[
3040: 38 5d 3b 0a 20 20 5f 5f 76 61 77 6f 72 64 2a 20  8];.  __vaword* 
3050: 20 20 20 20 20 6d 65 6d 69 61 72 67 70 74 72 3b       memiargptr;
3060: 0a 20 20 5f 5f 76 61 77 6f 72 64 20 20 20 20 20  .  __vaword     
3070: 20 20 69 61 72 67 5b 36 5d 3b 0a 23 65 6e 64 69    iarg[6];.#endi
3080: 66 0a 7d 20 5f 5f 76 61 5f 61 6c 69 73 74 3b 0a  f.} __va_alist;.
3090: 0a 74 79 70 65 64 65 66 20 5f 5f 76 61 5f 61 6c  .typedef __va_al
30a0: 69 73 74 2a 20 76 61 5f 61 6c 69 73 74 3b 0a 0a  ist* va_alist;..
30b0: 0a 2f 2a 0a 20 2a 20 44 65 66 69 6e 69 74 69 6f  ./*. * Definitio
30c0: 6e 20 6f 66 20 74 68 65 20 76 61 5f 73 74 61 72  n of the va_star
30d0: 74 5f 78 78 78 20 6d 61 63 72 6f 73 2e 0a 20 2a  t_xxx macros.. *
30e0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f 53  /.#define __VA_S
30f0: 54 41 52 54 5f 46 4c 41 47 53 20 20 5c 0a 20 20  TART_FLAGS  \.  
3100: 5f 5f 56 41 5f 53 54 52 55 43 54 5f 52 45 54 55  __VA_STRUCT_RETU
3110: 52 4e 20 7c 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  RN | __VA_FLOAT_
3120: 52 45 54 55 52 4e 20 7c 20 5f 5f 56 41 5f 53 54  RETURN | __VA_ST
3130: 52 55 43 54 5f 41 52 47 53 20 7c 20 5f 5f 56 41  RUCT_ARGS | __VA
3140: 5f 43 4c 45 41 4e 55 50 0a 23 64 65 66 69 6e 65  _CLEANUP.#define
3150: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
3160: 2c 52 45 54 54 59 50 45 29 20 20 5c 0a 20 20 28  ,RETTYPE)  \.  (
3170: 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 3d 20  (LIST)->flags = 
3180: 5f 5f 56 41 5f 53 54 41 52 54 5f 46 4c 41 47 53  __VA_START_FLAGS
3190: 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ,.....\.   (LIST
31a0: 29 2d 3e 72 74 79 70 65 20 3d 20 28 52 45 54 54  )->rtype = (RETT
31b0: 59 50 45 29 09 09 09 09 09 09 5c 0a 20 20 29 0a  YPE)......\.  ).
31c0: 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74  #define va_start
31d0: 5f 76 6f 69 64 28 4c 49 53 54 29 09 20 5f 5f 76  _void(LIST). __v
31e0: 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56  a_start(LIST,__V
31f0: 41 76 6f 69 64 29 0a 23 64 65 66 69 6e 65 20 76  Avoid).#define v
3200: 61 5f 73 74 61 72 74 5f 63 68 61 72 28 4c 49 53  a_start_char(LIS
3210: 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c  T). __va_start(L
3220: 49 53 54 2c 5f 5f 56 41 63 68 61 72 29 0a 23 64  IST,__VAchar).#d
3230: 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 73  efine va_start_s
3240: 63 68 61 72 28 4c 49 53 54 29 09 20 5f 5f 76 61  char(LIST). __va
3250: 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41  _start(LIST,__VA
3260: 73 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20 76  schar).#define v
3270: 61 5f 73 74 61 72 74 5f 75 63 68 61 72 28 4c 49  a_start_uchar(LI
3280: 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28  ST). __va_start(
3290: 4c 49 53 54 2c 5f 5f 56 41 75 63 68 61 72 29 0a  LIST,__VAuchar).
32a0: 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74  #define va_start
32b0: 5f 73 68 6f 72 74 28 4c 49 53 54 29 09 20 5f 5f  _short(LIST). __
32c0: 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f  va_start(LIST,__
32d0: 56 41 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65  VAshort).#define
32e0: 20 76 61 5f 73 74 61 72 74 5f 75 73 68 6f 72 74   va_start_ushort
32f0: 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74 61  (LIST). __va_sta
3300: 72 74 28 4c 49 53 54 2c 5f 5f 56 41 75 73 68 6f  rt(LIST,__VAusho
3310: 72 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73  rt).#define va_s
3320: 74 61 72 74 5f 69 6e 74 28 4c 49 53 54 29 09 20  tart_int(LIST). 
3330: 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c  __va_start(LIST,
3340: 5f 5f 56 41 69 6e 74 29 0a 23 64 65 66 69 6e 65  __VAint).#define
3350: 20 76 61 5f 73 74 61 72 74 5f 75 69 6e 74 28 4c   va_start_uint(L
3360: 49 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74  IST). __va_start
3370: 28 4c 49 53 54 2c 5f 5f 56 41 75 69 6e 74 29 0a  (LIST,__VAuint).
3380: 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74  #define va_start
3390: 5f 6c 6f 6e 67 28 4c 49 53 54 29 09 20 5f 5f 76  _long(LIST). __v
33a0: 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56  a_start(LIST,__V
33b0: 41 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 76  Along).#define v
33c0: 61 5f 73 74 61 72 74 5f 75 6c 6f 6e 67 28 4c 49  a_start_ulong(LI
33d0: 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28  ST). __va_start(
33e0: 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67 29 0a  LIST,__VAulong).
33f0: 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74  #define va_start
3400: 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09  _longlong(LIST).
3410: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
3420: 2c 5f 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 29 0a 23  ,__VAlonglong).#
3430: 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f  define va_start_
3440: 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 20  ulonglong(LIST) 
3450: 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c  __va_start(LIST,
3460: 5f 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67 29 0a 23  __VAulonglong).#
3470: 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f  define va_start_
3480: 66 6c 6f 61 74 28 4c 49 53 54 29 09 20 5f 5f 76  float(LIST). __v
3490: 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56  a_start(LIST,__V
34a0: 41 66 6c 6f 61 74 29 0a 23 64 65 66 69 6e 65 20  Afloat).#define 
34b0: 76 61 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65 28  va_start_double(
34c0: 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72  LIST). __va_star
34d0: 74 28 4c 49 53 54 2c 5f 5f 56 41 64 6f 75 62 6c  t(LIST,__VAdoubl
34e0: 65 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  e).#define va_st
34f0: 61 72 74 5f 70 74 72 28 4c 49 53 54 2c 54 59 50  art_ptr(LIST,TYP
3500: 45 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c  E). __va_start(L
3510: 49 53 54 2c 5f 5f 56 41 76 6f 69 64 70 29 0a 0a  IST,__VAvoidp)..
3520: 2f 2a 0a 20 2a 20 76 61 5f 73 74 61 72 74 5f 73  /*. * va_start_s
3530: 74 72 75 63 74 3a 20 50 72 65 70 61 72 69 6e 67  truct: Preparing
3540: 20 73 74 72 75 63 74 75 72 65 20 72 65 74 75 72   structure retur
3550: 6e 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76  n.. */.#define v
3560: 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c  a_start_struct(L
3570: 49 53 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 50  IST,TYPE,TYPE_SP
3580: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 5f  LITTABLE)  \.  _
3590: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28  va_start_struct(
35a0: 4c 49 53 54 2c 73 69 7a 65 6f 66 28 54 59 50 45  LIST,sizeof(TYPE
35b0: 29 2c 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54  ),__VA_alignof(T
35c0: 59 50 45 29 2c 54 59 50 45 5f 53 50 4c 49 54 54  YPE),TYPE_SPLITT
35d0: 41 42 4c 45 29 0a 2f 2a 20 5f 76 61 5f 73 74 61  ABLE)./* _va_sta
35e0: 72 74 5f 73 74 72 75 63 74 28 29 20 69 73 20 6c  rt_struct() is l
35f0: 69 6b 65 20 76 61 5f 73 74 61 72 74 5f 73 74 72  ike va_start_str
3600: 75 63 74 28 29 2c 20 65 78 63 65 70 74 20 74 68  uct(), except th
3610: 61 74 20 79 6f 75 20 70 61 73 73 0a 20 2a 20 74  at you pass. * t
3620: 68 65 20 74 79 70 65 27 73 20 73 69 7a 65 20 61  he type's size a
3630: 6e 64 20 61 6c 69 67 6e 6d 65 6e 74 20 69 6e 73  nd alignment ins
3640: 74 65 61 64 20 6f 66 20 74 68 65 20 74 79 70 65  tead of the type
3650: 20 69 74 73 65 6c 66 2e 0a 20 2a 2f 0a 23 64 65   itself.. */.#de
3660: 66 69 6e 65 20 5f 76 61 5f 73 74 61 72 74 5f 73  fine _va_start_s
3670: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f  truct(LIST,TYPE_
3680: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
3690: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
36a0: 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 73 74 61 72    \.  (__va_star
36b0: 74 28 4c 49 53 54 2c 5f 5f 56 41 73 74 72 75 63  t(LIST,__VAstruc
36c0: 74 29 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c  t),......\.   (L
36d0: 49 53 54 29 2d 3e 72 73 69 7a 65 20 3d 20 28 54  IST)->rsize = (T
36e0: 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 09 09  YPE_SIZE),......
36f0: 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c  \.   ((LIST)->fl
3700: 61 67 73 20 26 20 5f 5f 56 41 5f 53 55 4e 50 52  ags & __VA_SUNPR
3710: 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  OCC_STRUCT_RETUR
3720: 4e 09 09 09 09 5c 0a 20 20 20 20 3f 20 5f 5f 76  N....\.    ? __v
3730: 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 28  a_start_struct2(
3740: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
3750: 20 3a 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67   : ((LIST)->flag
3760: 73 20 26 20 28 5f 5f 56 41 5f 50 43 43 5f 53 54  s & (__VA_PCC_ST
3770: 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f  RUCT_RETURN | __
3780: 56 41 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f  VA_SUNCC_STRUCT_
3790: 52 45 54 55 52 4e 29 20 5c 0a 20 20 20 20 20 20  RETURN) \.      
37a0: 20 3f 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   ? ((TYPE_SIZE) 
37b0: 3c 3d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 5f 73  <= sizeof(__va_s
37c0: 74 72 75 63 74 5f 62 75 66 66 65 72 29 20 7c 7c  truct_buffer) ||
37d0: 20 5f 5f 76 61 5f 65 72 72 6f 72 32 28 54 59 50   __va_error2(TYP
37e0: 45 5f 53 49 5a 45 29 2c 20 5c 0a 20 20 20 20 20  E_SIZE), \.     
37f0: 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 72 61 64       (LIST)->rad
3800: 64 72 20 3d 20 26 5f 5f 76 61 5f 73 74 72 75 63  dr = &__va_struc
3810: 74 5f 62 75 66 66 65 72 2c 09 09 09 09 5c 0a 20  t_buffer,....\. 
3820: 20 20 20 20 20 20 20 20 20 30 09 09 09 09 09 09           0......
3830: 09 09 5c 0a 20 20 20 20 20 20 20 20 20 29 09 09  ..\.         )..
3840: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3a  ......\.       :
3850: 20 28 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73   (((LIST)->flags
3860: 20 26 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54   & __VA_SMALL_ST
3870: 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c  RUCT_RETURN)...\
3880: 0a 20 20 20 20 20 20 20 20 20 20 26 26 20 5f 5f  .          && __
3890: 76 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65  va_reg_struct_re
38a0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53  turn(LIST,TYPE_S
38b0: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
38c0: 42 4c 45 29 09 5c 0a 20 20 20 20 20 20 20 20 20  BLE).\.         
38d0: 20 3f 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64   ? ((LIST)->radd
38e0: 72 20 3d 20 26 28 4c 49 53 54 29 2d 3e 74 6d 70  r = &(LIST)->tmp
38f0: 2c 09 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20  ,....\.         
3900: 20 20 20 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73      __va_start_s
3910: 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45  truct1(LIST,TYPE
3920: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
3930: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
3940: 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) \.            
3950: 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20  )........\.     
3960: 20 20 20 20 20 3a 20 5f 5f 76 61 5f 73 74 61 72       : __va_star
3970: 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54 29 09  t_struct2(LIST).
3980: 09 09 09 09 5c 0a 20 20 29 29 20 20 29 20 20 29  ....\.  ))  )  )
3990: 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 73 20 77  ./* Determines w
39a0: 68 65 74 68 65 72 20 61 20 73 74 72 75 63 74 75  hether a structu
39b0: 72 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  re is returned i
39c0: 6e 20 72 65 67 69 73 74 65 72 73 2c 0a 20 2a 20  n registers,. * 
39d0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 69 74 73  depending on its
39e0: 20 73 69 7a 65 20 61 6e 64 20 69 74 73 20 77 6f   size and its wo
39f0: 72 64 2d 73 70 6c 69 74 74 61 62 6c 65 20 66 6c  rd-splittable fl
3a00: 61 67 2e 0a 20 2a 2f 0a 23 69 66 20 28 64 65 66  ag.. */.#if (def
3a10: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26  ined(__i386__) &
3a20: 26 20 64 65 66 69 6e 65 64 28 5f 57 49 4e 33 32  & defined(_WIN32
3a30: 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  )).#define __va_
3a40: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
3a50: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
3a60: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
3a70: 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49  )  \.  ((TYPE_SI
3a80: 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50  ZE) == 1 || (TYP
3a90: 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20  E_SIZE) == 2 || 
3aa0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34  (TYPE_SIZE) == 4
3ab0: 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45  ..\.   || ((TYPE
3ac0: 5f 53 49 5a 45 29 20 3d 3d 20 38 09 09 09 09 09  _SIZE) == 8.....
3ad0: 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28  ..\.       && ((
3ae0: 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20  (LIST)->flags & 
3af0: 5f 5f 56 41 5f 4d 53 56 43 5f 53 54 52 55 43 54  __VA_MSVC_STRUCT
3b00: 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 20  _RETURN)...\.   
3b10: 20 20 20 20 20 20 20 20 7c 7c 20 28 28 54 59 50          || ((TYP
3b20: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09  E_SPLITTABLE)...
3b30: 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ..\.            
3b40: 20 20 20 26 26 20 28 28 4c 49 53 54 29 2d 3e 66     && ((LIST)->f
3b50: 6c 61 67 73 20 26 20 5f 5f 56 41 5f 47 43 43 5f  lags & __VA_GCC_
3b60: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09  STRUCT_RETURN)..
3b70: 5c 0a 20 20 29 20 20 20 29 20 20 20 29 20 20 20  \.  )   )   )   
3b80: 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56  )./* Turn on __V
3b90: 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  A_REGISTER_STRUC
3ba0: 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 56 41  T_RETURN if __VA
3bb0: 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45  _SMALL_STRUCT_RE
3bc0: 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20  TURN was set. * 
3bd0: 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77  and the struct w
3be0: 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20  ill actually be 
3bf0: 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69  returned in regi
3c00: 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  sters.. */.#defi
3c10: 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74  ne __va_start_st
3c20: 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f  ruct1(LIST,TYPE_
3c30: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
3c40: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
3c50: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66    \.  ((LIST)->f
3c60: 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47  lags |= __VA_REG
3c70: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
3c80: 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23  URN, 0).#endif.#
3c90: 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 69 33  if (defined(__i3
3ca0: 38 36 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  86__) && !define
3cb0: 64 28 5f 57 49 4e 33 32 29 29 20 7c 7c 20 64 65  d(_WIN32)) || de
3cc0: 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20  fined(__m68k__) 
3cd0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 61 72  || (defined(__ar
3ce0: 6d 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  m__) && !defined
3cf0: 28 5f 5f 41 52 4d 45 4c 5f 5f 29 29 20 7c 7c 20  (__ARMEL__)) || 
3d00: 28 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72  (defined(__power
3d10: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
3d20: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
3d30: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63  ) || defined(__c
3d40: 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69  onvex__) || defi
3d50: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64  ned(__s390__).#d
3d60: 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73  efine __va_reg_s
3d70: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
3d80: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
3d90: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
3da0: 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d    ((TYPE_SIZE) =
3db0: 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 1 || (TYPE_SIZ
3dc0: 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45  E) == 2 || (TYPE
3dd0: 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c 0a 20  _SIZE) == 4..\. 
3de0: 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a 45    || ((TYPE_SIZE
3df0: 29 20 3d 3d 20 38 20 26 26 20 28 54 59 50 45 5f  ) == 8 && (TYPE_
3e00: 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09 5c  SPLITTABLE)....\
3e10: 0a 20 20 20 20 20 20 20 26 26 20 28 28 4c 49 53  .       && ((LIS
3e20: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
3e30: 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  _GCC_STRUCT_RETU
3e40: 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 20 29 0a  RN)...\.  )   ).
3e50: 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f  /* Turn on __VA_
3e60: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
3e70: 52 45 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53  RETURN if __VA_S
3e80: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
3e90: 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e  RN was set. * an
3ea0: 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c  d the struct wil
3eb0: 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65  l actually be re
3ec0: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74  turned in regist
3ed0: 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ers.. */.#define
3ee0: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
3ef0: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct1(LIST,TYPE_SI
3f00: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59  ZE,TYPE_ALIGN,TY
3f10: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
3f20: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61  \.  ((LIST)->fla
3f30: 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53  gs |= __VA_REGIS
3f40: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
3f50: 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 0a 23 69  N, 0).#endif..#i
3f60: 66 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45  f defined(__ARME
3f70: 4c 5f 5f 29 0a 2f 2a 20 73 74 72 75 63 74 73 20  L__)./* structs 
3f80: 6f 66 20 73 69 7a 65 20 33 20 61 6c 73 6f 20 77  of size 3 also w
3f90: 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20  ill be returned 
3fa0: 69 6e 20 72 65 67 69 73 74 65 72 20 2a 2f 0a 23  in register */.#
3fb0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f  define __va_reg_
3fc0: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
3fd0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
3fe0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
3ff0: 0a 20 20 20 20 28 28 54 59 50 45 5f 53 49 5a 45  .    ((TYPE_SIZE
4000: 29 20 3c 3d 20 34 29 0a 2f 2a 20 54 75 72 6e 20  ) <= 4)./* Turn 
4010: 6f 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  on __VA_REGISTER
4020: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69  _STRUCT_RETURN i
4030: 66 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52  f __VA_SMALL_STR
4040: 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73  UCT_RETURN was s
4050: 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74  et. * and the st
4060: 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c  ruct will actual
4070: 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  ly be returned i
4080: 6e 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f  n registers.. */
4090: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74  .#define __va_st
40a0: 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54  art_struct1(LIST
40b0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
40c0: 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54  ALIGN,TYPE_SPLIT
40d0: 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49  TABLE)  \.  ((LI
40e0: 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f  ST)->flags |= __
40f0: 56 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  VA_REGISTER_STRU
4100: 43 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65  CT_RETURN, 0).#e
4110: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
4120: 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 23 64 65 66  (__alpha__).#def
4130: 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72  ine __va_reg_str
4140: 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c  uct_return(LIST,
4150: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
4160: 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20  PLITTABLE)  \.  
4170: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20  ((TYPE_SIZE) == 
4180: 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29  1 || (TYPE_SIZE)
4190: 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53   == 2 || (TYPE_S
41a0: 49 5a 45 29 20 3d 3d 20 34 20 7c 7c 20 28 54 59  IZE) == 4 || (TY
41b0: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 5c 0a  PE_SIZE) == 8.\.
41c0: 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a     || ((TYPE_SIZ
41d0: 45 29 20 3d 3d 20 31 36 20 26 26 20 28 54 59 50  E) == 16 && (TYP
41e0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09  E_SPLITTABLE)...
41f0: 09 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28 4c  .\.       && ((L
4200: 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f  IST)->flags & __
4210: 56 41 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45  VA_GCC_STRUCT_RE
4220: 54 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 20  TURN)...\.  )   
4230: 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56  )./* Turn on __V
4240: 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  A_REGISTER_STRUC
4250: 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 56 41  T_RETURN if __VA
4260: 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45  _SMALL_STRUCT_RE
4270: 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20  TURN was set. * 
4280: 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77  and the struct w
4290: 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20  ill actually be 
42a0: 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69  returned in regi
42b0: 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  sters.. */.#defi
42c0: 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74  ne __va_start_st
42d0: 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f  ruct1(LIST,TYPE_
42e0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c  SIZE,TYPE_ALIGN,
42f0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4300: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66    \.  ((LIST)->f
4310: 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47  lags |= __VA_REG
4320: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
4330: 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23  URN, 0).#endif.#
4340: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
4350: 61 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76  a__).#define __v
4360: 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74  a_reg_struct_ret
4370: 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  urn(LIST,TYPE_SI
4380: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
4390: 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  LE)  \.  ((LIST)
43a0: 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 4f  ->flags & __VA_O
43b0: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
43c0: 55 52 4e 09 09 09 09 5c 0a 20 20 20 3f 20 28 28  URN....\.   ? ((
43d0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20  TYPE_SIZE) == 1 
43e0: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
43f0: 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 2 || (TYPE_SIZ
4400: 45 29 20 3d 3d 20 34 29 09 09 5c 0a 20 20 20 3a  E) == 4)..\.   :
4410: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d   ((TYPE_SIZE) <=
4420: 20 38 29 09 09 09 09 09 09 09 5c 0a 20 20 29 0a   8).......\.  ).
4430: 2f 2a 20 54 65 73 74 20 62 6f 74 68 20 5f 5f 56  /* Test both __V
4440: 41 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f  A_OLDGCC_STRUCT_
4450: 52 45 54 55 52 4e 20 61 6e 64 20 5f 5f 56 41 5f  RETURN and __VA_
4460: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
4470: 55 52 4e 20 61 74 20 72 75 6e 20 74 69 6d 65 2e  URN at run time.
4480: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
4490: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
44a0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
44b0: 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50  PE_ALIGN,TYPE_SP
44c0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 30  LITTABLE)  \.  0
44d0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
44e0: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26  ned(__mips__) &&
44f0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
4500: 6e 33 32 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  n32__) && !defin
4510: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c  ed(__mips64__) |
4520: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  | (defined(__spa
4530: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
4540: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20  d(__sparc64__)) 
4550: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
4560: 6b 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76  k__).#define __v
4570: 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74  a_reg_struct_ret
4580: 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  urn(LIST,TYPE_SI
4590: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
45a0: 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f  LE)  \.  ((TYPE_
45b0: 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54  SIZE) == 1 || (T
45c0: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c  YPE_SIZE) == 2 |
45d0: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
45e0: 20 34 29 0a 2f 2a 20 54 65 73 74 20 5f 5f 56 41   4)./* Test __VA
45f0: 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45  _SMALL_STRUCT_RE
4600: 54 55 52 4e 20 69 6e 73 74 65 61 64 20 6f 66 20  TURN instead of 
4610: 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 53 54  __VA_REGISTER_ST
4620: 52 55 43 54 5f 52 45 54 55 52 4e 2e 20 2a 2f 0a  RUCT_RETURN. */.
4630: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
4640: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
4650: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26  d(__mipsn32__) &
4660: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  & !defined(__mip
4670: 73 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  s64__).#define _
4680: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
4690: 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  1(LIST,TYPE_SIZE
46a0: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45  ,TYPE_ALIGN,TYPE
46b0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
46c0: 20 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b    ((LIST)->anum+
46d0: 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 30 09  +,.......\.   0.
46e0: 09 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65  ........\.  ).#e
46f0: 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61  lse.#define __va
4700: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
4710: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4720: 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50  PE_ALIGN,TYPE_SP
4730: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 30  LITTABLE)  \.  0
4740: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
4750: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
4760: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
4770: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23  ed(__mips64__).#
4780: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f  define __va_reg_
4790: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
47a0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
47b0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
47c0: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  .  ((LIST)->flag
47d0: 73 20 26 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52  s & __VA_GCC_STR
47e0: 55 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a  UCT_RETURN....\.
47f0: 20 20 20 3f 20 28 28 54 59 50 45 5f 53 49 5a 45     ? ((TYPE_SIZE
4800: 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f  ) == 1 || (TYPE_
4810: 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54  SIZE) == 2 || (T
4820: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c  YPE_SIZE) == 4 |
4830: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
4840: 20 38 29 20 5c 0a 20 20 20 3a 20 28 28 54 59 50   8) \.   : ((TYP
4850: 45 5f 53 49 5a 45 29 20 3c 3d 20 31 36 29 09 09  E_SIZE) <= 16)..
4860: 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 75 72  ....\.  )./* Tur
4870: 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54  n on __VA_REGIST
4880: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  ER_STRUCT_RETURN
4890: 20 69 66 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53   if __VA_SMALL_S
48a0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73  TRUCT_RETURN was
48b0: 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20   set. * and the 
48c0: 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75  struct will actu
48d0: 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64  ally be returned
48e0: 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 41   in registers. A
48f0: 6c 73 6f 20 74 75 72 6e 20 6f 6e 0a 20 2a 20 5f  lso turn on. * _
4900: 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 46 4c 4f  _VA_REGISTER_FLO
4910: 41 54 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  ATSTRUCT_RETURN 
4920: 6f 72 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  or __VA_REGISTER
4930: 5f 44 4f 55 42 4c 45 53 54 52 55 43 54 5f 52 45  _DOUBLESTRUCT_RE
4940: 54 55 52 4e 20 69 66 0a 20 2a 20 74 68 65 20 73  TURN if. * the s
4950: 74 72 75 63 74 20 77 69 6c 6c 20 62 65 20 72 65  truct will be re
4960: 74 75 72 6e 65 64 20 69 6e 20 66 6c 6f 61 74 69  turned in floati
4970: 6e 67 2d 70 6f 69 6e 74 20 72 65 67 69 73 74 65  ng-point registe
4980: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
4990: 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  __va_start_struc
49a0: 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t1(LIST,TYPE_SIZ
49b0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50  E,TYPE_ALIGN,TYP
49c0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
49d0: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  .  ((LIST)->flag
49e0: 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54  s |= __VA_REGIST
49f0: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  ER_STRUCT_RETURN
4a00: 2c 09 09 09 09 5c 0a 20 20 20 28 54 59 50 45 5f  ,....\.   (TYPE_
4a10: 41 4c 49 47 4e 29 20 3d 3d 20 73 69 7a 65 6f 66  ALIGN) == sizeof
4a20: 28 66 6c 6f 61 74 29 20 26 26 20 28 54 59 50 45  (float) && (TYPE
4a30: 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09  _SPLITTABLE)....
4a40: 5c 0a 20 20 20 20 26 26 20 28 28 54 59 50 45 5f  \.    && ((TYPE_
4a50: 53 49 5a 45 29 20 3d 3d 20 73 69 7a 65 6f 66 28  SIZE) == sizeof(
4a60: 66 6c 6f 61 74 29 20 7c 7c 20 28 54 59 50 45 5f  float) || (TYPE_
4a70: 53 49 5a 45 29 20 3d 3d 20 32 2a 73 69 7a 65 6f  SIZE) == 2*sizeo
4a80: 66 28 66 6c 6f 61 74 29 29 09 09 5c 0a 20 20 20  f(float))..\.   
4a90: 20 26 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61   && ((LIST)->fla
4aa0: 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53  gs |= __VA_REGIS
4ab0: 54 45 52 5f 46 4c 4f 41 54 53 54 52 55 43 54 5f  TER_FLOATSTRUCT_
4ac0: 52 45 54 55 52 4e 29 2c 09 09 09 5c 0a 20 20 20  RETURN),...\.   
4ad0: 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 3d 3d 20  (TYPE_ALIGN) == 
4ae0: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 20 26  sizeof(double) &
4af0: 26 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42  & (TYPE_SPLITTAB
4b00: 4c 45 29 09 09 09 09 5c 0a 20 20 20 20 26 26 20  LE)....\.    && 
4b10: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20  ((TYPE_SIZE) == 
4b20: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 20 7c  sizeof(double) |
4b30: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
4b40: 20 32 2a 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65   2*sizeof(double
4b50: 29 29 09 5c 0a 20 20 20 20 26 26 20 28 28 4c 49  )).\.    && ((LI
4b60: 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f  ST)->flags |= __
4b70: 56 41 5f 52 45 47 49 53 54 45 52 5f 44 4f 55 42  VA_REGISTER_DOUB
4b80: 4c 45 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29  LESTRUCT_RETURN)
4b90: 2c 09 09 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64  ,...\.   0).#end
4ba0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
4bb0: 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 0a 23 64  _powerpc64__).#d
4bc0: 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73  efine __va_reg_s
4bd0: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
4be0: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4bf0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4c00: 20 20 30 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61    0.#define __va
4c10: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
4c20: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4c30: 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50  PE_ALIGN,TYPE_SP
4c40: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 30  LITTABLE)  \.  0
4c50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
4c60: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
4c70: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
4c80: 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  64__).#define __
4c90: 76 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65  va_reg_struct_re
4ca0: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53  turn(LIST,TYPE_S
4cb0: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
4cc0: 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45  BLE)  \.  ((TYPE
4cd0: 5f 53 49 5a 45 29 20 3c 3d 20 33 32 29 0a 2f 2a  _SIZE) <= 32)./*
4ce0: 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45   Turn on __VA_RE
4cf0: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
4d00: 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d 41  TURN if __VA_SMA
4d10: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
4d20: 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20   was set. * and 
4d30: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20  the struct will 
4d40: 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75  actually be retu
4d50: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  rned in register
4d60: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
4d70: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
4d80: 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  1(LIST,TYPE_SIZE
4d90: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45  ,TYPE_ALIGN,TYPE
4da0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4db0: 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73    ((LIST)->flags
4dc0: 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45   |= __VA_REGISTE
4dd0: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c  R_STRUCT_RETURN,
4de0: 09 09 09 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64  ....\.   0).#end
4df0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
4e00: 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69  _x86_64__).#defi
4e10: 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75  ne __va_reg_stru
4e20: 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54  ct_return(LIST,T
4e30: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
4e40: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
4e50: 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 31  (TYPE_SIZE) <= 1
4e60: 36 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f  6)./* Turn on __
4e70: 56 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  VA_REGISTER_STRU
4e80: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 56  CT_RETURN if __V
4e90: 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  A_SMALL_STRUCT_R
4ea0: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a  ETURN was set. *
4eb0: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20   and the struct 
4ec0: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65  will actually be
4ed0: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
4ee0: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66  isters.. */.#def
4ef0: 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73  ine __va_start_s
4f00: 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45  truct1(LIST,TYPE
4f10: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
4f20: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
4f30: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
4f40: 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45  flags |= __VA_RE
4f50: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
4f60: 54 55 52 4e 2c 09 09 09 09 5c 0a 20 20 20 30 29  TURN,....\.   0)
4f70: 0a 23 65 6e 64 69 66 0a 2f 2a 0a 20 2a 20 50 72  .#endif./*. * Pr
4f80: 65 70 61 72 69 6e 67 20 73 74 72 75 63 74 75 72  eparing structur
4f90: 65 20 72 65 74 75 72 6e 20 69 6e 20 6d 65 6d 6f  e return in memo
4fa0: 72 79 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69  ry.. */.#if defi
4fb0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 0a 2f 2a  ned(__i386__)./*
4fc0: 20 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72   Return structur
4fd0: 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73  e pointer is pas
4fe0: 73 65 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c  sed in a special
4ff0: 20 72 65 67 69 73 74 65 72 20 6f 72 20 61 73 20   register or as 
5000: 66 69 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64  first arg. */.#d
5010: 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74  efine __va_start
5020: 5f 73 74 72 75 63 74 32 28 4c 49 53 54 29 20 20  _struct2(LIST)  
5030: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61  \.  ((LIST)->fla
5040: 67 73 20 26 20 5f 5f 56 41 5f 4e 45 58 54 47 43  gs & __VA_NEXTGC
5050: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
5060: 09 09 09 5c 0a 20 20 20 3f 20 28 28 4c 49 53 54  ...\.   ? ((LIST
5070: 29 2d 3e 72 61 64 64 72 20 3d 20 28 4c 49 53 54  )->raddr = (LIST
5080: 29 2d 3e 73 74 72 75 63 74 72 61 64 64 72 2c 20  )->structraddr, 
5090: 30 29 09 20 2f 2a 20 73 70 65 63 69 61 6c 20 72  0). /* special r
50a0: 65 67 69 73 74 65 72 20 2a 2f 09 5c 0a 20 20 20  egister */.\.   
50b0: 3a 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72  : ((LIST)->raddr
50c0: 20 3d 20 2a 28 76 6f 69 64 2a 20 2a 29 28 28 4c   = *(void* *)((L
50d0: 49 53 54 29 2d 3e 61 70 74 72 29 2c 09 09 2f 2a  IST)->aptr),../*
50e0: 20 66 69 72 73 74 20 61 72 67 20 2a 2f 09 5c 0a   first arg */.\.
50f0: 20 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 61 70        (LIST)->ap
5100: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 76 6f 69  tr += sizeof(voi
5110: 64 2a 29 2c 09 09 09 09 09 5c 0a 20 20 20 20 20  d*),.....\.     
5120: 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 29   0.........\.  )
5130: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64    ).#endif.#if d
5140: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
5150: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
5160: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  rm__) || defined
5170: 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 7c 7c  (__powerpc__) ||
5180: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
5190: 70 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  pc64__) || defin
51a0: 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 20  ed(__convex__)  
51b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39  || defined(__s39
51c0: 30 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73  0__)./* Return s
51d0: 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72  tructure pointer
51e0: 20 69 73 20 70 61 73 73 65 64 20 61 73 20 66 69   is passed as fi
51f0: 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66  rst arg. */.#def
5200: 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73  ine __va_start_s
5210: 74 72 75 63 74 32 28 4c 49 53 54 29 20 20 5c 0a  truct2(LIST)  \.
5220: 20 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72    ((LIST)->raddr
5230: 20 3d 20 2a 28 76 6f 69 64 2a 20 2a 29 28 28 4c   = *(void* *)((L
5240: 49 53 54 29 2d 3e 61 70 74 72 29 2c 09 09 09 09  IST)->aptr),....
5250: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74  \.   (LIST)->apt
5260: 72 20 2b 3d 20 73 69 7a 65 6f 66 28 76 6f 69 64  r += sizeof(void
5270: 2a 29 2c 09 09 09 09 09 5c 0a 20 20 20 30 09 09  *),.....\.   0..
5280: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e  .......\.  ).#en
5290: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
52a0: 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66  __mips__) || def
52b0: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
52c0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
52d0: 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  ips64__) || defi
52e0: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
52f0: 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 63  ./* Return struc
5300: 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 20  ture pointer is 
5310: 70 61 73 73 65 64 20 61 73 20 66 69 72 73 74 20  passed as first 
5320: 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  arg. */.#define 
5330: 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  __va_start_struc
5340: 74 32 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  t2(LIST)  \.  ((
5350: 4c 49 53 54 29 2d 3e 72 61 64 64 72 20 3d 20 2a  LIST)->raddr = *
5360: 28 76 6f 69 64 2a 20 2a 29 28 28 4c 49 53 54 29  (void* *)((LIST)
5370: 2d 3e 61 70 74 72 29 2c 09 09 09 09 5c 0a 20 20  ->aptr),....\.  
5380: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d   (LIST)->aptr +=
5390: 20 73 69 7a 65 6f 66 28 76 6f 69 64 2a 29 2c 09   sizeof(void*),.
53a0: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d  ....\.   (LIST)-
53b0: 3e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c  >anum++,.......\
53c0: 0a 20 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a  .   0.........\.
53d0: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64    ).#endif.#if d
53e0: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
53f0: 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72  _)./* Return str
5400: 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69  ucture pointer i
5410: 73 20 70 61 73 73 65 64 20 61 73 20 66 69 72 73  s passed as firs
5420: 74 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e  t arg. */.#defin
5430: 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72  e __va_start_str
5440: 75 63 74 32 28 4c 49 53 54 29 20 20 5c 0a 20 20  uct2(LIST)  \.  
5450: 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20 3d  ((LIST)->raddr =
5460: 20 28 76 6f 69 64 20 2a 29 28 2a 28 4c 49 53 54   (void *)(*(LIST
5470: 29 2d 3e 6d 65 6d 69 61 72 67 70 74 72 2b 2b 29  )->memiargptr++)
5480: 2c 09 09 09 5c 0a 20 20 20 30 09 09 09 09 09 09  ,...\.   0......
5490: 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a  ...\.  ).#endif.
54a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36  #if defined(__m6
54b0: 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65  8k__) || (define
54c0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
54d0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
54e0: 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65  64__)) || define
54f0: 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 64  d(__hppa__) || d
5500: 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29  efined(__m88k__)
5510: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
5520: 36 34 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20  64__)./* Return 
5530: 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65  structure pointe
5540: 72 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61  r is passed in a
5550: 20 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65   special registe
5560: 72 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  r. */.#define __
5570: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32  va_start_struct2
5580: 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49  (LIST)  \.  ((LI
5590: 53 54 29 2d 3e 72 61 64 64 72 20 3d 20 28 4c 49  ST)->raddr = (LI
55a0: 53 54 29 2d 3e 73 74 72 75 63 74 72 61 64 64 72  ST)->structraddr
55b0: 2c 20 30 29 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a  , 0).#endif.../*
55c0: 0a 20 2a 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f  . * Definition o
55d0: 66 20 74 68 65 20 76 61 5f 61 72 67 5f 78 78 78  f the va_arg_xxx
55e0: 20 6d 61 63 72 6f 73 2e 0a 20 2a 2f 0a 0a 2f 2a   macros.. */../*
55f0: 20 50 61 64 64 69 6e 67 20 6f 66 20 6e 6f 6e 2d   Padding of non-
5600: 73 74 72 75 63 74 20 61 72 67 75 6d 65 6e 74 73  struct arguments
5610: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
5620: 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53  a_argsize(TYPE_S
5630: 49 5a 45 29 20 20 5c 0a 20 20 28 28 28 54 59 50  IZE)  \.  (((TYP
5640: 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65 6f 66  E_SIZE) + sizeof
5650: 28 5f 5f 76 61 77 6f 72 64 29 2d 31 29 20 26 20  (__vaword)-1) & 
5660: 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f  -(long)sizeof(__
5670: 76 61 77 6f 72 64 29 29 0a 23 69 66 20 64 65 66  vaword)).#if def
5680: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c  ined(__i386__) |
5690: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
56a0: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
56b0: 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65  __mips__) && !de
56c0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
56d0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
56e0: 5f 6d 69 70 73 36 34 5f 5f 29 29 20 7c 7c 20 28  _mips64__)) || (
56f0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
5700: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
5710: 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20  _sparc64__)) || 
5720: 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f  defined(__alpha_
5730: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5740: 61 72 6d 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  arm__) || (defin
5750: 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20  ed(__powerpc__) 
5760: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f  && !defined(__po
5770: 77 65 72 70 63 36 34 5f 5f 29 20 26 26 20 28 64  werpc64__) && (d
5780: 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20  efined(_AIX) || 
5790: 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f  (defined(__MACH_
57a0: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f  _) && defined(__
57b0: 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64  APPLE__)))) || d
57c0: 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63  efined(__powerpc
57d0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
57e0: 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m88k__) || de
57f0: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f  fined(__convex__
5800: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69  ) || defined(__i
5810: 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  a64__) || define
5820: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a  d(__x86_64__)./*
5830: 20 61 72 67 73 20 67 72 6f 77 20 75 70 20 2a 2f   args grow up */
5840: 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74  ./* small struct
5850: 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72  ures < 1 word ar
5860: 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e  e adjusted depen
5870: 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72  ding on compiler
5880: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
5890: 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65  _arg_leftadjuste
58a0: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
58b0: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a  ,TYPE_ALIGN)  \.
58c0: 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20    ((LIST)->aptr 
58d0: 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28  += __va_argsize(
58e0: 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c  TYPE_SIZE),....\
58f0: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
5900: 20 2d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28   - __va_argsize(
5910: 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a  TYPE_SIZE)....\.
5920: 20 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61    ).#define __va
5930: 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74  _arg_rightadjust
5940: 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ed(LIST,TYPE_SIZ
5950: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
5960: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  .  ((LIST)->aptr
5970: 20 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65   += __va_argsize
5980: 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09  (TYPE_SIZE),....
5990: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74  \.   (LIST)->apt
59a0: 72 20 2d 20 28 28 54 59 50 45 5f 53 49 5a 45 29  r - ((TYPE_SIZE)
59b0: 20 3c 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f   < sizeof(__vawo
59c0: 72 64 29 09 09 09 5c 0a 09 09 20 20 20 3f 20 28  rd)...\...   ? (
59d0: 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c  TYPE_SIZE).....\
59e0: 0a 09 09 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67  ...   : __va_arg
59f0: 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09  size(TYPE_SIZE).
5a00: 09 09 09 5c 0a 09 09 20 20 29 09 09 09 09 09 09  ...\...  )......
5a10: 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69  .\.  ).#endif.#i
5a20: 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65  f defined(__powe
5a30: 72 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  rpc__) && !defin
5a40: 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f  ed(__powerpc64__
5a50: 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f  ) && !(defined(_
5a60: 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  AIX) || (defined
5a70: 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65  (__MACH__) && de
5a80: 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29  fined(__APPLE__)
5a90: 29 29 0a 2f 2a 20 61 72 67 73 20 67 72 6f 77 20  ))./* args grow 
5aa0: 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61 6c 6c 20 73  up */./* small s
5ab0: 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f  tructures < 1 wo
5ac0: 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20  rd are adjusted 
5ad0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d  depending on com
5ae0: 70 69 6c 65 72 20 2a 2f 0a 2f 2a 20 41 6c 73 6f  piler */./* Also
5af0: 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 73 77   make sure we sw
5b00: 69 74 63 68 20 74 6f 20 74 68 65 20 73 74 61 63  itch to the stac
5b10: 6b 20 70 6f 69 6e 74 65 72 20 61 66 74 65 72 20  k pointer after 
5b20: 38 20 61 72 67 73 20 2a 2f 0a 23 64 65 66 69 6e  8 args */.#defin
5b30: 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61  e __va_arg_lefta
5b40: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
5b50: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
5b60: 4e 29 20 20 5c 0a 20 20 28 28 28 28 4c 49 53 54  N)  \.  ((((LIST
5b70: 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20  )->onstack == 0 
5b80: 26 26 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  && (LIST)->aptr 
5b90: 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54 29  >= (long)&(LIST)
5ba0: 2d 3e 72 65 67 61 72 67 5b 38 5d 29 09 5c 0a 20  ->regarg[8]).\. 
5bb0: 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e     ? ((LIST)->on
5bc0: 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d  stack=1, (LIST)-
5bd0: 3e 61 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e  >aptr = (LIST)->
5be0: 73 61 70 74 72 29 20 3a 20 30 29 2c 09 09 5c 0a  saptr) : 0),..\.
5bf0: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
5c00: 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28  += __va_argsize(
5c10: 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c  TYPE_SIZE),....\
5c20: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
5c30: 20 2d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28   - __va_argsize(
5c40: 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a  TYPE_SIZE)....\.
5c50: 20 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61    ).#define __va
5c60: 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74  _arg_rightadjust
5c70: 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ed(LIST,TYPE_SIZ
5c80: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
5c90: 0a 20 20 28 28 28 28 4c 49 53 54 29 2d 3e 6f 6e  .  ((((LIST)->on
5ca0: 73 74 61 63 6b 20 3d 3d 20 30 20 26 26 20 28 4c  stack == 0 && (L
5cb0: 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28 6c  IST)->aptr >= (l
5cc0: 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e 72 65 67  ong)&(LIST)->reg
5cd0: 61 72 67 5b 38 5d 29 09 5c 0a 20 20 20 20 3f 20  arg[8]).\.    ? 
5ce0: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
5cf0: 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  =1, (LIST)->aptr
5d00: 20 3d 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72   = (LIST)->saptr
5d10: 29 20 3a 20 30 29 2c 09 09 5c 0a 20 20 20 28 4c  ) : 0),..\.   (L
5d20: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f  IST)->aptr += __
5d30: 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f  va_argsize(TYPE_
5d40: 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20 28  SIZE),....\.   (
5d50: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 28 28  LIST)->aptr - ((
5d60: 54 59 50 45 5f 53 49 5a 45 29 20 3c 20 73 69 7a  TYPE_SIZE) < siz
5d70: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 09 09 09  eof(__vaword)...
5d80: 5c 0a 09 09 20 20 20 3f 20 28 54 59 50 45 5f 53  \...   ? (TYPE_S
5d90: 49 5a 45 29 09 09 09 09 09 5c 0a 09 09 20 20 20  IZE).....\...   
5da0: 3a 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  : __va_argsize(T
5db0: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 09  YPE_SIZE)....\..
5dc0: 09 20 20 29 09 09 09 09 09 09 09 5c 0a 20 20 29  .  ).......\.  )
5dd0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
5de0: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a  ned(__s390__)./*
5df0: 20 61 72 67 73 20 67 72 6f 77 20 75 70 20 2a 2f   args grow up */
5e00: 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74  ./* small struct
5e10: 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72  ures < 1 word ar
5e20: 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e  e adjusted depen
5e30: 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72  ding on compiler
5e40: 20 2a 2f 0a 2f 2a 20 41 6c 73 6f 20 6d 61 6b 65   */./* Also make
5e50: 20 73 75 72 65 20 77 65 20 73 77 69 74 63 68 20   sure we switch 
5e60: 74 6f 20 74 68 65 20 73 74 61 63 6b 20 70 6f 69  to the stack poi
5e70: 6e 74 65 72 20 61 66 74 65 72 20 35 20 61 72 67  nter after 5 arg
5e80: 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  s */.#define __v
5e90: 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74  a_arg_leftadjust
5ea0: 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ed(LIST,TYPE_SIZ
5eb0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
5ec0: 0a 20 20 28 28 28 28 4c 49 53 54 29 2d 3e 6f 6e  .  ((((LIST)->on
5ed0: 73 74 61 63 6b 20 3d 3d 20 30 20 26 26 20 28 4c  stack == 0 && (L
5ee0: 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28 6c  IST)->aptr >= (l
5ef0: 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e 72 65 67  ong)&(LIST)->reg
5f00: 61 72 67 5b 35 5d 29 09 5c 0a 20 20 20 20 3f 20  arg[5]).\.    ? 
5f10: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
5f20: 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  =1, (LIST)->aptr
5f30: 20 3d 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72   = (LIST)->saptr
5f40: 29 20 3a 20 30 29 2c 09 09 5c 0a 20 20 20 28 4c  ) : 0),..\.   (L
5f50: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f  IST)->aptr += __
5f60: 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f  va_argsize(TYPE_
5f70: 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20 28  SIZE),....\.   (
5f80: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f 5f  LIST)->aptr - __
5f90: 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f  va_argsize(TYPE_
5fa0: 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 29 0a 23  SIZE)....\.  ).#
5fb0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
5fc0: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49  rightadjusted(LI
5fd0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
5fe0: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28  E_ALIGN)  \.  ((
5ff0: 28 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63  (((LIST)->onstac
6000: 6b 20 3d 3d 20 30 20 26 26 20 28 28 4c 49 53 54  k == 0 && ((LIST
6010: 29 2d 3e 61 70 74 72 20 3e 3d 20 28 6c 6f 6e 67  )->aptr >= (long
6020: 29 26 28 4c 49 53 54 29 2d 3e 72 65 67 61 72 67  )&(LIST)->regarg
6030: 5b 35 5d 29 29 20 5c 0a 20 20 20 7c 7c 20 28 28  [5])) \.   || ((
6040: 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 73 69 7a  TYPE_SIZE) > siz
6050: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 26 26  eof(__vaword) &&
6060: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d   (LIST)->aptr >=
6070: 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e   (long)&(LIST)->
6080: 72 65 67 61 72 67 5b 34 5d 29 29 20 5c 0a 20 20  regarg[4])) \.  
6090: 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73    ? ((LIST)->ons
60a0: 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d 3e  tack=1, (LIST)->
60b0: 61 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e 73  aptr = (LIST)->s
60c0: 61 70 74 72 29 20 3a 20 30 29 2c 09 09 5c 0a 20  aptr) : 0),..\. 
60d0: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
60e0: 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  = __va_argsize(T
60f0: 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a  YPE_SIZE),....\.
6100: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
6110: 2d 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c  - ((TYPE_SIZE) <
6120: 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64   sizeof(__vaword
6130: 29 09 09 09 5c 0a 09 09 20 20 20 3f 20 28 54 59  )...\...   ? (TY
6140: 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a 09  PE_SIZE).....\..
6150: 09 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 73 69  .   : __va_argsi
6160: 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09  ze(TYPE_SIZE)...
6170: 09 5c 0a 09 09 20 20 29 09 09 09 09 09 09 09 5c  .\...  ).......\
6180: 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  .  ).#endif.#if 
6190: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
61a0: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
61b0: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
61c0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
61d0: 5f 5f 29 0a 2f 2a 20 61 72 67 73 20 67 72 6f 77  __)./* args grow
61e0: 20 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61 6c 6c 20   up */./* small 
61f0: 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 77  structures < 1 w
6200: 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64  ord are adjusted
6210: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f   depending on co
6220: 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e  mpiler */.#defin
6230: 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61  e __va_arg_lefta
6240: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
6250: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
6260: 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  N)  \.  ((LIST)-
6270: 3e 61 6e 75 6d 20 2b 3d 20 5f 5f 76 61 5f 61 72  >anum += __va_ar
6280: 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29  gsize(TYPE_SIZE)
6290: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
62a0: 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d  ),..\.   (LIST)-
62b0: 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61 72  >aptr += __va_ar
62c0: 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29  gsize(TYPE_SIZE)
62d0: 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  ,....\.   (LIST)
62e0: 2d 3e 61 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72  ->aptr - __va_ar
62f0: 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29  gsize(TYPE_SIZE)
6300: 09 09 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e  ....\.  ).#defin
6310: 65 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74  e __va_arg_right
6320: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
6330: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
6340: 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  GN)  \.  ((LIST)
6350: 2d 3e 61 6e 75 6d 20 2b 3d 20 5f 5f 76 61 5f 61  ->anum += __va_a
6360: 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45  rgsize(TYPE_SIZE
6370: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
6380: 64 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  d),..\.   (LIST)
6390: 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61  ->aptr += __va_a
63a0: 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45  rgsize(TYPE_SIZE
63b0: 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ),....\.   (LIST
63c0: 29 2d 3e 61 70 74 72 20 2d 20 28 28 54 59 50 45  )->aptr - ((TYPE
63d0: 5f 53 49 5a 45 29 20 3c 20 73 69 7a 65 6f 66 28  _SIZE) < sizeof(
63e0: 5f 5f 76 61 77 6f 72 64 29 09 09 09 5c 0a 09 09  __vaword)...\...
63f0: 20 20 20 3f 20 28 54 59 50 45 5f 53 49 5a 45 29     ? (TYPE_SIZE)
6400: 09 09 09 09 09 5c 0a 09 09 20 20 20 3a 20 5f 5f  .....\...   : __
6410: 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f  va_argsize(TYPE_
6420: 53 49 5a 45 29 09 09 09 09 5c 0a 09 09 20 20 29  SIZE)....\...  )
6430: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e  .......\.  ).#en
6440: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
6450: 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 61 72 67  __hppa__)./* arg
6460: 73 20 67 72 6f 77 20 64 6f 77 6e 20 2a 2f 0a 23  s grow down */.#
6470: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
6480: 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53  leftadjusted(LIS
6490: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
64a0: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c  _ALIGN)  \.  ((L
64b0: 49 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49  IST)->aptr = (LI
64c0: 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f 5f 76 61  ST)->aptr - __va
64d0: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
64e0: 5a 45 29 2c 09 09 5c 0a 20 20 20 28 28 54 59 50  ZE),..\.   ((TYP
64f0: 45 5f 53 49 5a 45 29 20 3e 20 34 20 26 26 20 28  E_SIZE) > 4 && (
6500: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 26 3d 20  (LIST)->aptr &= 
6510: 2d 38 29 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c  -8)),....\.   (L
6520: 49 53 54 29 2d 3e 61 70 74 72 09 09 09 09 09 09  IST)->aptr......
6530: 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20  ..\.  ).#define 
6540: 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64  __va_arg_rightad
6550: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
6560: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
6570: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
6580: 61 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e 61  aptr = (LIST)->a
6590: 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72 67 73 69  ptr - __va_argsi
65a0: 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09  ze(TYPE_SIZE),..
65b0: 5c 0a 20 20 20 28 28 54 59 50 45 5f 53 49 5a 45  \.   ((TYPE_SIZE
65c0: 29 20 3e 20 34 20 26 26 20 28 28 4c 49 53 54 29  ) > 4 && ((LIST)
65d0: 2d 3e 61 70 74 72 20 26 3d 20 2d 38 29 29 2c 09  ->aptr &= -8)),.
65e0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
65f0: 61 70 74 72 20 2b 20 28 28 2d 28 54 59 50 45 5f  aptr + ((-(TYPE_
6600: 53 49 5a 45 29 29 20 26 20 33 29 09 09 09 09 09  SIZE)) & 3).....
6610: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
6620: 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f   defined(__i386_
6630: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
6640: 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69  alpha__) || defi
6650: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c  ned(__ia64__) ||
6660: 20 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c   defined(__ARMEL
6670: 5f 5f 29 20 7c 7c 20 28 28 64 65 66 69 6e 65 64  __) || ((defined
6680: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
6690: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
66a0: 34 5f 5f 29 29 20 26 26 20 64 65 66 69 6e 65 64  4__)) && defined
66b0: 28 5f 4d 49 50 53 45 4c 29 29 0a 2f 2a 20 6c 69  (_MIPSEL))./* li
66c0: 74 74 6c 65 20 65 6e 64 69 61 6e 20 2d 3e 20 73  ttle endian -> s
66d0: 6d 61 6c 6c 20 61 72 67 73 20 3c 20 31 20 77 6f  mall args < 1 wo
66e0: 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20  rd are adjusted 
66f0: 74 6f 20 74 68 65 20 6c 65 66 74 20 2a 2f 0a 23  to the left */.#
6700: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
6710: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
6720: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
6730: 47 4e 29 20 20 5c 0a 20 20 5f 5f 76 61 5f 61 72  GN)  \.  __va_ar
6740: 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c  g_leftadjusted(L
6750: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
6760: 50 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66  PE_ALIGN).#endif
6770: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
6780: 36 38 6b 5f 5f 29 20 7c 7c 20 28 28 64 65 66 69  68k__) || ((defi
6790: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
67a0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
67b0: 70 73 36 34 5f 5f 29 29 20 26 26 20 64 65 66 69  ps64__)) && defi
67c0: 6e 65 64 28 5f 4d 49 50 53 45 42 29 29 20 7c 7c  ned(_MIPSEB)) ||
67d0: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
67e0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
67f0: 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64  _sparc64__) || d
6800: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29  efined(__hppa__)
6810: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 61   || (defined(__a
6820: 72 6d 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rm__) && !define
6830: 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 29 20 7c 7c  d(__ARMEL__)) ||
6840: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
6850: 70 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  pc__) || defined
6860: 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20  (__powerpc64__) 
6870: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
6880: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
6890: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
68a0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
68b0: 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61 6e 20 2d  ./* big endian -
68c0: 3e 20 73 6d 61 6c 6c 20 61 72 67 73 20 3c 20 31  > small args < 1
68d0: 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74   word are adjust
68e0: 65 64 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  ed to the right 
68f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
6900: 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c 49 53  arg_adjusted(LIS
6910: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
6920: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 5f 5f 76  _ALIGN)  \.  __v
6930: 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73  a_arg_rightadjus
6940: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
6950: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a 23  ZE,TYPE_ALIGN).#
6960: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
6970: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21  d(__mips__) && !
6980: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
6990: 32 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  2__) && !defined
69a0: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 69 66  (__mips64__).#if
69b0: 64 65 66 20 5f 4d 49 50 53 45 42 0a 2f 2a 20 62  def _MIPSEB./* b
69c0: 69 67 20 65 6e 64 69 61 6e 20 2d 3e 20 73 6d 61  ig endian -> sma
69d0: 6c 6c 20 61 72 67 73 20 3c 20 31 20 77 6f 72 64  ll args < 1 word
69e0: 20 61 72 65 20 61 64 6a 75 73 74 65 64 20 74 6f   are adjusted to
69f0: 20 74 68 65 20 72 69 67 68 74 20 2a 2f 0a 23 64   the right */.#d
6a00: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 61  efine __va_arg_a
6a10: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
6a20: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
6a30: 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  N)  \.  ((LIST)-
6a40: 3e 61 6e 75 6d 2b 2b 2c 20 5f 5f 76 61 5f 61 72  >anum++, __va_ar
6a50: 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28  g_rightadjusted(
6a60: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
6a70: 59 50 45 5f 41 4c 49 47 4e 29 29 0a 23 65 6c 73  YPE_ALIGN)).#els
6a80: 65 20 2f 2a 20 5f 4d 49 50 53 45 4c 20 2a 2f 0a  e /* _MIPSEL */.
6a90: 2f 2a 20 6c 69 74 74 6c 65 20 65 6e 64 69 61 6e  /* little endian
6aa0: 20 2d 3e 20 73 6d 61 6c 6c 20 61 72 67 73 20 3c   -> small args <
6ab0: 20 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75   1 word are adju
6ac0: 73 74 65 64 20 74 6f 20 74 68 65 20 6c 65 66 74  sted to the left
6ad0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
6ae0: 5f 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c 49  _arg_adjusted(LI
6af0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
6b00: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28  E_ALIGN)  \.  ((
6b10: 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 20 5f  LIST)->anum++, _
6b20: 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75  _va_arg_leftadju
6b30: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53  sted(LIST,TYPE_S
6b40: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 29  IZE,TYPE_ALIGN))
6b50: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23  .#endif.#endif.#
6b60: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
6b70: 5f 36 34 5f 5f 29 0a 2f 2a 20 74 68 65 20 66 69  _64__)./* the fi
6b80: 72 73 74 20 36 20 61 72 67 75 6d 65 6e 74 20 77  rst 6 argument w
6b90: 6f 72 64 73 20 61 72 65 20 70 61 73 73 65 64 20  ords are passed 
6ba0: 69 6e 20 72 65 67 69 73 74 65 72 73 20 2a 2f 0a  in registers */.
6bb0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
6bc0: 5f 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  _adjusted(LIST,T
6bd0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
6be0: 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IGN)  \.  ((LIST
6bf0: 29 2d 3e 6d 65 6d 69 61 72 67 70 74 72 20 2b 20  )->memiargptr + 
6c00: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 73  ((TYPE_SIZE) + s
6c10: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2d  izeof(__vaword)-
6c20: 31 29 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 76 61  1) / sizeof(__va
6c30: 77 6f 72 64 29 20 3c 3d 20 26 28 4c 49 53 54 29  word) <= &(LIST)
6c40: 2d 3e 69 61 72 67 5b 36 5d 20 5c 0a 20 20 20 3f  ->iarg[6] \.   ?
6c50: 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 69 61 72   ((LIST)->memiar
6c60: 67 70 74 72 20 2b 3d 20 28 28 54 59 50 45 5f 53  gptr += ((TYPE_S
6c70: 49 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f  IZE) + sizeof(__
6c80: 76 61 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a  vaword)-1) / siz
6c90: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2c 20 5c  eof(__vaword), \
6ca0: 0a 20 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 6d  .      (LIST)->m
6cb0: 65 6d 69 61 72 67 70 74 72 20 2d 20 28 28 54 59  emiargptr - ((TY
6cc0: 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65 6f  PE_SIZE) + sizeo
6cd0: 66 28 5f 5f 76 61 77 6f 72 64 29 2d 31 29 20 2f  f(__vaword)-1) /
6ce0: 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64   sizeof(__vaword
6cf0: 29 20 5c 0a 20 20 20 20 20 29 09 09 09 09 09 09  ) \.     )......
6d00: 09 09 09 5c 0a 20 20 20 3a 20 28 76 6f 69 64 2a  ...\.   : (void*
6d10: 29 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64  )__va_arg_leftad
6d20: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
6d30: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
6d40: 29 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a  )..\.  ).#endif.
6d50: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
6d60: 28 4c 49 53 54 2c 54 59 50 45 29 20 20 5c 0a 20  (LIST,TYPE)  \. 
6d70: 20 2a 28 54 59 50 45 2a 29 5f 5f 76 61 5f 61 72   *(TYPE*)__va_ar
6d80: 67 5f 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  g_adjusted(LIST,
6d90: 73 69 7a 65 6f 66 28 54 59 50 45 29 2c 5f 5f 56  sizeof(TYPE),__V
6da0: 41 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29  A_alignof(TYPE))
6db0: 0a 0a 2f 2a 20 49 6e 74 65 67 65 72 20 61 72 67  ../* Integer arg
6dc0: 75 6d 65 6e 74 73 2e 20 2a 2f 0a 0a 23 64 65 66  uments. */..#def
6dd0: 69 6e 65 20 76 61 5f 61 72 67 5f 63 68 61 72 28  ine va_arg_char(
6de0: 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c  LIST).__va_arg(L
6df0: 49 53 54 2c 63 68 61 72 29 0a 23 64 65 66 69 6e  IST,char).#defin
6e00: 65 20 76 61 5f 61 72 67 5f 73 63 68 61 72 28 4c  e va_arg_schar(L
6e10: 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49  IST).__va_arg(LI
6e20: 53 54 2c 73 69 67 6e 65 64 20 63 68 61 72 29 0a  ST,signed char).
6e30: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 75  #define va_arg_u
6e40: 63 68 61 72 28 4c 49 53 54 29 09 5f 5f 76 61 5f  char(LIST).__va_
6e50: 61 72 67 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65  arg(LIST,unsigne
6e60: 64 20 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20  d char).#define 
6e70: 76 61 5f 61 72 67 5f 73 68 6f 72 74 28 4c 49 53  va_arg_short(LIS
6e80: 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54  T).__va_arg(LIST
6e90: 2c 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20  ,short).#define 
6ea0: 76 61 5f 61 72 67 5f 75 73 68 6f 72 74 28 4c 49  va_arg_ushort(LI
6eb0: 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53  ST).__va_arg(LIS
6ec0: 54 2c 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74  T,unsigned short
6ed0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67  ).#define va_arg
6ee0: 5f 69 6e 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f  _int(LIST).__va_
6ef0: 61 72 67 28 4c 49 53 54 2c 69 6e 74 29 0a 23 64  arg(LIST,int).#d
6f00: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 69 6e  efine va_arg_uin
6f10: 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67  t(LIST).__va_arg
6f20: 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 69  (LIST,unsigned i
6f30: 6e 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61  nt).#define va_a
6f40: 72 67 5f 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f  rg_long(LIST).__
6f50: 76 61 5f 61 72 67 28 4c 49 53 54 2c 6c 6f 6e 67  va_arg(LIST,long
6f60: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67  ).#define va_arg
6f70: 5f 75 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76  _ulong(LIST).__v
6f80: 61 5f 61 72 67 28 4c 49 53 54 2c 75 6e 73 69 67  a_arg(LIST,unsig
6f90: 6e 65 64 20 6c 6f 6e 67 29 0a 0a 23 69 66 20 64  ned long)..#if d
6fa0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
6fb0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
6fc0: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65  sparc64__) || de
6fd0: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
6fe0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f   || defined(__po
6ff0: 77 65 72 70 63 36 34 5f 5f 29 20 7c 7c 20 64 65  werpc64__) || de
7000: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20  fined(__ia64__) 
7010: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  || defined(__x86
7020: 5f 36 34 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20  _64__)./* `long 
7030: 6c 6f 6e 67 27 20 61 6e 64 20 60 6c 6f 6e 67 27  long' and `long'
7040: 20 61 72 65 20 69 64 65 6e 74 69 63 61 6c 2e 20   are identical. 
7050: 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  */.#define va_ar
7060: 67 5f 6c 6f 6e 67 6c 6f 6e 67 09 09 76 61 5f 61  g_longlong..va_a
7070: 72 67 5f 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20  rg_long.#define 
7080: 76 61 5f 61 72 67 5f 75 6c 6f 6e 67 6c 6f 6e 67  va_arg_ulonglong
7090: 09 76 61 5f 61 72 67 5f 75 6c 6f 6e 67 0a 23 65  .va_arg_ulong.#e
70a0: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  lif defined(__mi
70b0: 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e  psn32__)./* `lon
70c0: 67 20 6c 6f 6e 67 27 20 66 69 74 73 20 69 6e 20  g long' fits in 
70d0: 5f 5f 76 61 77 6f 72 64 2e 20 2a 2f 0a 23 64 65  __vaword. */.#de
70e0: 66 69 6e 65 20 76 61 5f 61 72 67 5f 6c 6f 6e 67  fine va_arg_long
70f0: 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76 61 5f  long(LIST).__va_
7100: 61 72 67 28 4c 49 53 54 2c 6c 6f 6e 67 20 6c 6f  arg(LIST,long lo
7110: 6e 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61  ng).#define va_a
7120: 72 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  rg_ulonglong(LIS
7130: 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54  T).__va_arg(LIST
7140: 2c 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c  ,unsigned long l
7150: 6f 6e 67 29 0a 23 65 6c 69 66 20 64 65 66 69 6e  ong).#elif defin
7160: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
7170: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f  defined(__m68k__
7180: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
7190: 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  ips__) || (defin
71a0: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
71b0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
71c0: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e  c64__)) || defin
71d0: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20  ed(__hppa__) || 
71e0: 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29  defined(__arm__)
71f0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f   || defined(__po
7200: 77 65 72 70 63 5f 5f 29 20 7c 7c 20 64 65 66 69  werpc__) || defi
7210: 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c  ned(__m88k__) ||
7220: 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65   defined(__conve
7230: 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  x__) || defined(
7240: 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60 6c 6f  __s390__)./* `lo
7250: 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20 70 61  ng long's are pa
7260: 73 73 65 64 20 65 6d 62 65 64 64 65 64 20 6f 6e  ssed embedded on
7270: 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 20   the arg stack. 
7280: 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  */.#define va_ar
7290: 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29  g_longlong(LIST)
72a0: 09 5f 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f  .__va_arg_longlo
72b0: 6e 67 28 4c 49 53 54 2c 6c 6f 6e 67 20 6c 6f 6e  ng(LIST,long lon
72c0: 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  g).#define va_ar
72d0: 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54  g_ulonglong(LIST
72e0: 29 09 5f 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c  ).__va_arg_longl
72f0: 6f 6e 67 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65  ong(LIST,unsigne
7300: 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 0a 23 69 66  d long long).#if
7310: 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f   defined(__i386_
7320: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
7330: 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69  m68k__) || (defi
7340: 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 26 26 20  ned(__arm__) && 
7350: 21 64 65 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c  !defined(__ARMEL
7360: 5f 5f 29 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  __)) || (defined
7370: 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26 26  (__powerpc__) &&
7380: 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20   (defined(_AIX) 
7390: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
73a0: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
73b0: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c  (__APPLE__)))) |
73c0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
73d0: 65 78 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c  ex__)./* `long l
73e0: 6f 6e 67 27 73 20 61 72 65 20 28 61 74 20 6d 6f  ong's are (at mo
73f0: 73 74 29 20 77 6f 72 64 2d 61 6c 69 67 6e 65 64  st) word-aligned
7400: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
7410: 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c  a_arg_longlong(L
7420: 49 53 54 2c 54 59 50 45 29 09 5f 5f 76 61 5f 61  IST,TYPE).__va_a
7430: 72 67 28 4c 49 53 54 2c 54 59 50 45 29 0a 23 65  rg(LIST,TYPE).#e
7440: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
7450: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 28 64  (__mips__) || (d
7460: 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63  efined(__powerpc
7470: 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 64  __) && !(defined
7480: 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e  (_AIX) || (defin
7490: 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20  ed(__MACH__) && 
74a0: 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f  defined(__APPLE_
74b0: 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64  _)))) || defined
74c0: 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m88k__) || de
74d0: 66 69 6e 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29  fined(__ARMEL__)
74e0: 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73  ./* `long long's
74f0: 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74 20   have alignment 
7500: 38 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  8. */.#define __
7510: 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28  va_arg_longlong(
7520: 4c 49 53 54 2c 54 59 50 45 29 09 09 09 09 09 5c  LIST,TYPE).....\
7530: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  .  ((LIST)->aptr
7540: 20 3d 20 28 28 28 4c 49 53 54 29 2d 3e 61 70 74   = (((LIST)->apt
7550: 72 2b 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54  r+__VA_alignof(T
7560: 59 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  YPE)-1) & -(long
7570: 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54 59  )__VA_alignof(TY
7580: 50 45 29 29 2c 20 5c 0a 20 20 20 5f 5f 76 61 5f  PE)), \.   __va_
7590: 61 72 67 28 4c 49 53 54 2c 54 59 50 45 29 29 0a  arg(LIST,TYPE)).
75a0: 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66 69  #endif.#if (defi
75b0: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
75c0: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
75d0: 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69  rc64__)) || defi
75e0: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a  ned(__s390__)./*
75f0: 20 57 69 74 68 69 6e 20 74 68 65 20 61 72 67 20   Within the arg 
7600: 73 74 61 63 6b 2c 20 74 68 65 20 61 6c 69 67 6e  stack, the align
7610: 6d 65 6e 74 20 69 73 20 6f 6e 6c 79 20 34 2c 20  ment is only 4, 
7620: 6e 6f 74 20 38 2e 20 2a 2f 0a 2f 2a 20 42 65 77  not 8. */./* Bew
7630: 61 72 65 20 61 67 61 69 6e 73 74 20 75 6e 61 6c  are against unal
7640: 69 67 6e 65 64 20 61 63 63 65 73 73 65 73 21 20  igned accesses! 
7650: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
7660: 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  arg_longlong(LIS
7670: 54 2c 54 59 50 45 29 09 09 09 09 09 5c 0a 20 20  T,TYPE).....\.  
7680: 28 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77 6f  ((LIST)->tmp._wo
7690: 72 64 73 5b 30 5d 20 3d 20 28 28 5f 5f 76 61 77  rds[0] = ((__vaw
76a0: 6f 72 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70  ord*)((LIST)->ap
76b0: 74 72 29 29 5b 30 5d 2c 09 09 5c 0a 20 20 20 28  tr))[0],..\.   (
76c0: 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77 6f 72 64  LIST)->tmp._word
76d0: 73 5b 31 5d 20 3d 20 28 28 5f 5f 76 61 77 6f 72  s[1] = ((__vawor
76e0: 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  d*)((LIST)->aptr
76f0: 29 29 5b 31 5d 2c 09 09 5c 0a 20 20 20 28 4c 49  ))[1],..\.   (LI
7700: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a  ST)->aptr += siz
7710: 65 6f 66 28 54 59 50 45 29 2c 09 09 09 09 09 5c  eof(TYPE),.....\
7720: 0a 20 20 20 28 54 59 50 45 29 28 28 4c 49 53 54  .   (TYPE)((LIST
7730: 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f 6e 67  )->tmp._longlong
7740: 29 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64  ).....\.  ).#end
7750: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
7760: 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e  _hppa__)./* `lon
7770: 67 20 6c 6f 6e 67 27 73 20 68 61 76 65 20 61 6c  g long's have al
7780: 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f 0a 23 64  ignment 8. */.#d
7790: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c  efine __va_arg_l
77a0: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50  onglong(LIST,TYP
77b0: 45 29 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  E).....\.  ((LIS
77c0: 54 29 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49 53  T)->aptr = ((LIS
77d0: 54 29 2d 3e 61 70 74 72 20 26 20 2d 28 6c 6f 6e  T)->aptr & -(lon
77e0: 67 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54  g)__VA_alignof(T
77f0: 59 50 45 29 29 2c 09 09 5c 0a 20 20 20 5f 5f 76  YPE)),..\.   __v
7800: 61 5f 61 72 67 28 4c 49 53 54 2c 54 59 50 45 29  a_arg(LIST,TYPE)
7810: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ).#endif.#endif.
7820: 0a 2f 2a 20 46 6c 6f 61 74 69 6e 67 20 70 6f 69  ./* Floating poi
7830: 6e 74 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f  nt arguments. */
7840: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
7850: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
7860: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
7870: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
7880: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
7890: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
78a0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
78b0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
78c0: 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66  parc64__) || def
78d0: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
78e0: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 61 72  || (defined(__ar
78f0: 6d 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  m__) && !defined
7900: 28 5f 5f 41 52 4d 45 4c 5f 5f 29 29 20 7c 7c 20  (__ARMEL__)) || 
7910: 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70  defined(__powerp
7920: 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  c__) || defined(
7930: 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 7c  __powerpc64__) |
7940: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
7950: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
7960: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65  (__ia64__) || de
7970: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
7980: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
7990: 33 39 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  390__).#define _
79a0: 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65  _va_align_double
79b0: 28 4c 49 53 54 29 0a 23 65 6e 64 69 66 0a 23 69  (LIST).#endif.#i
79c0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
79d0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
79e0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26 20  __mipsn32__) && 
79f0: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36  !defined(__mips6
7a00: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
7a10: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
7a20: 69 6e 65 64 28 5f 5f 41 52 4d 45 4c 5f 5f 29 0a  ined(__ARMEL__).
7a30: 2f 2a 20 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28  /* __VA_alignof(
7a40: 64 6f 75 62 6c 65 29 20 3e 20 73 69 7a 65 6f 66  double) > sizeof
7a50: 28 5f 5f 76 61 77 6f 72 64 29 20 2a 2f 0a 23 64  (__vaword) */.#d
7a60: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 6c 69 67 6e  efine __va_align
7a70: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c  _double(LIST)  \
7a80: 0a 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  .  (LIST)->aptr 
7a90: 3d 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  = ((LIST)->aptr 
7aa0: 2b 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  + sizeof(double)
7ab0: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a  -1) & -(long)siz
7ac0: 65 6f 66 28 64 6f 75 62 6c 65 29 2c 0a 23 65 6e  eof(double),.#en
7ad0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
7ae0: 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 66 69 6e  __hppa__).#defin
7af0: 65 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75  e __va_align_dou
7b00: 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ble(LIST)  \.  (
7b10: 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c  LIST)->aptr = (L
7b20: 49 53 54 29 2d 3e 61 70 74 72 20 26 20 2d 28 6c  IST)->aptr & -(l
7b30: 6f 6e 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c  ong)sizeof(doubl
7b40: 65 29 2c 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20  e),.#endif..#if 
7b50: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
7b60: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
7b70: 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 42  _sparc64__)./* B
7b80: 65 77 61 72 65 20 61 67 61 69 6e 73 74 20 75 6e  eware against un
7b90: 61 6c 69 67 6e 65 64 20 60 64 6f 75 62 6c 65 27  aligned `double'
7ba0: 20 61 63 63 65 73 73 65 73 21 20 2a 2f 0a 23 64   accesses! */.#d
7bb0: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75  efine va_arg_dou
7bc0: 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ble(LIST)  \.  (
7bd0: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
7be0: 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  e(LIST)......\. 
7bf0: 20 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77    (LIST)->tmp._w
7c00: 6f 72 64 73 5b 30 5d 20 3d 20 28 28 5f 5f 76 61  ords[0] = ((__va
7c10: 77 6f 72 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61  word*)((LIST)->a
7c20: 70 74 72 29 29 5b 30 5d 2c 09 09 5c 0a 20 20 20  ptr))[0],..\.   
7c30: 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77 6f 72  (LIST)->tmp._wor
7c40: 64 73 5b 31 5d 20 3d 20 28 28 5f 5f 76 61 77 6f  ds[1] = ((__vawo
7c50: 72 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  rd*)((LIST)->apt
7c60: 72 29 29 5b 31 5d 2c 09 09 5c 0a 20 20 20 28 4c  r))[1],..\.   (L
7c70: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
7c80: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09 09  zeof(double),...
7c90: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 74  ..\.   (LIST)->t
7ca0: 6d 70 2e 5f 64 6f 75 62 6c 65 09 09 09 09 09 09  mp._double......
7cb0: 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69  .\.  ).#endif.#i
7cc0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68  f defined(__alph
7cd0: 61 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73  a__)./* The firs
7ce0: 74 20 36 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  t 6 floating poi
7cf0: 6e 74 20 72 65 67 69 73 74 65 72 73 20 68 61 76  nt registers hav
7d00: 65 20 62 65 65 6e 20 73 74 6f 72 65 64 20 69 6e  e been stored in
7d10: 20 61 6e 6f 74 68 65 72 20 70 6c 61 63 65 2e 20   another place. 
7d20: 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  */.#define va_ar
7d30: 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20  g_double(LIST)  
7d40: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2d 3e 61 70  \.  (((LIST)->ap
7d50: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75  tr += sizeof(dou
7d60: 62 6c 65 29 29 20 3c 3d 20 28 4c 49 53 54 29 2d  ble)) <= (LIST)-
7d70: 3e 6d 65 6d 61 72 67 70 74 72 09 09 5c 0a 20 20  >memargptr..\.  
7d80: 20 3f 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c   ? *(double*)((L
7d90: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a  IST)->aptr - siz
7da0: 65 6f 66 28 64 6f 75 62 6c 65 29 20 2d 20 36 2a  eof(double) - 6*
7db0: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09  sizeof(double)).
7dc0: 5c 0a 20 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a  \.   : *(double*
7dd0: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d  )((LIST)->aptr -
7de0: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29   sizeof(double))
7df0: 09 09 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e  ....\.  ).#defin
7e00: 65 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c  e va_arg_float(L
7e10: 49 53 54 29 20 20 5c 0a 20 20 28 28 28 4c 49 53  IST)  \.  (((LIS
7e20: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65  T)->aptr += size
7e30: 6f 66 28 64 6f 75 62 6c 65 29 29 20 3c 3d 20 28  of(double)) <= (
7e40: 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70 74 72  LIST)->memargptr
7e50: 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 54 68 65 20  ..\.   ? /* The 
7e60: 66 69 72 73 74 20 36 20 61 72 67 73 20 68 61 76  first 6 args hav
7e70: 65 20 62 65 65 6e 20 70 75 74 20 69 6e 74 6f 20  e been put into 
7e80: 6d 65 6d 6f 72 79 20 62 79 20 22 73 74 74 22 20  memory by "stt" 
7e90: 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 2a 2f 5c  instructions */\
7ea0: 0a 20 20 20 20 20 2f 2a 20 28 73 65 65 20 76 61  .     /* (see va
7eb0: 63 61 6c 6c 2d 61 6c 70 68 61 2e 73 21 29 2e 20  call-alpha.s!). 
7ec0: 54 68 65 72 65 66 6f 72 65 20 6c 6f 61 64 20 74  Therefore load t
7ed0: 68 65 6d 20 61 73 20 64 6f 75 62 6c 65 73 2e 20  hem as doubles. 
7ee0: 2a 2f 09 5c 0a 20 20 20 20 20 2f 2a 20 57 68 65  */.\.     /* Whe
7ef0: 6e 20 76 69 65 77 65 64 20 61 73 20 66 6c 6f 61  n viewed as floa
7f00: 74 73 2c 20 74 68 65 20 76 61 6c 75 65 20 77 69  ts, the value wi
7f10: 6c 6c 20 62 65 20 74 68 65 20 63 6f 72 72 65 63  ll be the correc
7f20: 74 20 6f 6e 65 2e 20 2a 2f 09 5c 0a 20 20 20 20  t one. */.\.    
7f30: 20 28 66 6c 6f 61 74 29 2a 28 64 6f 75 62 6c 65   (float)*(double
7f40: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
7f50: 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  - sizeof(double)
7f60: 20 2d 20 36 2a 73 69 7a 65 6f 66 28 64 6f 75 62   - 6*sizeof(doub
7f70: 6c 65 29 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 54  le)) \.   : /* T
7f80: 68 65 73 65 20 61 72 67 73 20 68 61 76 65 20 62  hese args have b
7f90: 65 65 6e 20 70 75 74 20 69 6e 74 6f 20 6d 65 6d  een put into mem
7fa0: 6f 72 79 20 62 79 20 22 73 74 73 22 20 69 6e 73  ory by "sts" ins
7fb0: 74 72 75 63 74 69 6f 6e 73 2c 20 2a 2f 09 5c 0a  tructions, */.\.
7fc0: 20 20 20 20 20 2f 2a 20 74 68 65 72 65 66 6f 72       /* therefor
7fd0: 65 20 6c 6f 61 64 20 74 68 65 6d 20 61 73 20 66  e load them as f
7fe0: 6c 6f 61 74 73 2e 20 2a 2f 09 09 09 09 5c 0a 20  loats. */....\. 
7ff0: 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c      *(float*)((L
8000: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a  IST)->aptr - siz
8010: 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09 09  eof(double))....
8020: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
8030: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f   defined(__hppa_
8040: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
8050: 34 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  4 float register
8060: 73 20 61 6e 64 20 74 68 65 20 66 69 72 73 74 20  s and the first 
8070: 32 20 64 6f 75 62 6c 65 20 72 65 67 69 73 74 65  2 double registe
8080: 72 73 20 61 72 65 20 73 74 6f 72 65 64 0a 20 2a  rs are stored. *
8090: 20 65 6c 73 65 77 68 65 72 65 2e 0a 20 2a 2f 0a   elsewhere.. */.
80a0: 23 69 66 20 31 20 2f 2a 20 67 63 63 2d 32 2e 35  #if 1 /* gcc-2.5
80b0: 2e 32 20 70 61 73 73 65 73 20 74 68 65 73 65 20  .2 passes these 
80c0: 61 72 67 73 20 69 6e 20 67 65 6e 65 72 61 6c 20  args in general 
80d0: 72 65 67 69 73 74 65 72 73 21 20 41 20 62 75 67  registers! A bug
80e0: 2c 20 49 20 74 68 69 6e 6b 2e 20 2a 2f 0a 23 64  , I think. */.#d
80f0: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 66 6c 6f  efine va_arg_flo
8100: 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 2a  at(LIST)  \.  (*
8110: 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d  (float*)((LIST)-
8120: 3e 61 70 74 72 20 2d 3d 20 73 69 7a 65 6f 66 28  >aptr -= sizeof(
8130: 66 6c 6f 61 74 29 29 29 0a 23 64 65 66 69 6e 65  float))).#define
8140: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c   va_arg_double(L
8150: 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  IST)  \.  (__va_
8160: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
8170: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 2a 28 64  T)......\.   *(d
8180: 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e  ouble*)((LIST)->
8190: 61 70 74 72 20 2d 3d 20 73 69 7a 65 6f 66 28 64  aptr -= sizeof(d
81a0: 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29  ouble))....\.  )
81b0: 0a 23 65 6c 73 65 20 2f 2a 20 74 68 69 73 20 77  .#else /* this w
81c0: 6f 75 6c 64 20 62 65 20 63 6f 72 72 65 63 74 20  ould be correct 
81d0: 69 66 20 74 68 65 20 61 72 67 73 20 77 65 72 65  if the args were
81e0: 20 70 61 73 73 65 64 20 69 6e 20 66 6c 6f 61 74   passed in float
81f0: 20 72 65 67 69 73 74 65 72 73 2e 20 2a 2f 0a 23   registers. */.#
8200: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 66 6c  define va_arg_fl
8210: 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  oat(LIST)  \.  (
8220: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 3d  ((LIST)->aptr -=
8230: 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 20   sizeof(float)) 
8240: 3e 3d 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 61 72  >= (LIST)->memar
8250: 67 70 74 72 09 09 09 5c 0a 20 20 20 3f 20 2f 2a  gptr...\.   ? /*
8260: 20 54 68 65 20 66 69 72 73 74 20 34 20 66 6c 6f   The first 4 flo
8270: 61 74 20 61 72 67 73 20 61 72 65 20 73 74 6f 72  at args are stor
8280: 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e 20 2a  ed separately. *
8290: 2f 09 09 5c 0a 20 20 20 20 20 2a 28 66 6c 6f 61  /..\.     *(floa
82a0: 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  t*)((LIST)->aptr
82b0: 20 2b 20 28 4c 49 53 54 29 2d 3e 66 61 72 67 5f   + (LIST)->farg_
82c0: 6f 66 66 73 65 74 29 09 09 09 5c 0a 20 20 20 3a  offset)...\.   :
82d0: 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54   *(float*)((LIST
82e0: 29 2d 3e 61 70 74 72 29 09 09 09 09 09 09 5c 0a  )->aptr)......\.
82f0: 20 20 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61    ).#define va_a
8300: 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20  rg_double(LIST) 
8310: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
8320: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09  _double(LIST)...
8330: 09 09 09 5c 0a 20 20 20 28 28 28 4c 49 53 54 29  ...\.   (((LIST)
8340: 2d 3e 61 70 74 72 20 2d 3d 20 73 69 7a 65 6f 66  ->aptr -= sizeof
8350: 28 64 6f 75 62 6c 65 29 29 20 3e 3d 20 28 4c 49  (double)) >= (LI
8360: 53 54 29 2d 3e 6d 65 6d 61 72 67 70 74 72 09 09  ST)->memargptr..
8370: 5c 0a 20 20 20 20 3f 20 2f 2a 20 54 68 65 20 66  \.    ? /* The f
8380: 69 72 73 74 20 32 20 64 6f 75 62 6c 65 20 61 72  irst 2 double ar
8390: 67 73 20 61 72 65 20 73 74 6f 72 65 64 20 73 65  gs are stored se
83a0: 70 61 72 61 74 65 6c 79 2e 20 2a 2f 09 09 5c 0a  parately. */..\.
83b0: 20 20 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29        *(double*)
83c0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 20  ((LIST)->aptr + 
83d0: 28 4c 49 53 54 29 2d 3e 64 61 72 67 5f 6f 66 66  (LIST)->darg_off
83e0: 73 65 74 29 09 09 09 5c 0a 20 20 20 20 3a 20 2a  set)...\.    : *
83f0: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
8400: 2d 3e 61 70 74 72 29 09 09 09 09 09 09 5c 0a 20  ->aptr)......\. 
8410: 20 29 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69   )).#endif.#endi
8420: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
8430: 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69  mips__) && !defi
8440: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
8450: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d   && !defined(__m
8460: 69 70 73 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20  ips64__)./* The 
8470: 66 69 72 73 74 20 30 2c 31 2c 32 20 72 65 67 69  first 0,1,2 regi
8480: 73 74 65 72 73 20 61 72 65 20 73 74 6f 72 65 64  sters are stored
8490: 20 65 6c 73 65 77 68 65 72 65 20 69 66 20 74 68   elsewhere if th
84a0: 65 79 20 61 72 65 20 66 6c 6f 61 74 69 6e 67 2d  ey are floating-
84b0: 70 6f 69 6e 74 0a 20 2a 20 70 61 72 61 6d 65 74  point. * paramet
84c0: 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ers.. */.#define
84d0: 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49   va_arg_float(LI
84e0: 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  ST)  \.  ((LIST)
84f0: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
8500: 28 66 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a 20  (float),.....\. 
8510: 20 20 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b    (LIST)->anum++
8520: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28 28 4c  ,.......\.   ((L
8530: 49 53 54 29 2d 3e 61 6e 75 6d 20 3d 3d 20 31 09  IST)->anum == 1.
8540: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 28  ......\.    ? ((
8550: 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20  LIST)->flags |= 
8560: 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31 2c 20 28 4c  __VA_FLOAT_1, (L
8570: 49 53 54 29 2d 3e 66 61 72 67 5b 30 5d 29 09 09  IST)->farg[0])..
8580: 09 5c 0a 20 20 20 20 3a 20 28 28 4c 49 53 54 29  .\.    : ((LIST)
8590: 2d 3e 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28  ->anum == 2 && (
85a0: 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20  (LIST)->flags & 
85b0: 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31 29 09 09 5c  __VA_FLOAT_1)..\
85c0: 0a 20 20 20 20 20 20 20 3f 20 28 2f 2a 20 28 4c  .       ? (/* (L
85d0: 49 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f  IST)->flags |= _
85e0: 5f 56 41 5f 46 4c 4f 41 54 5f 32 2c 20 2a 2f 20  _VA_FLOAT_2, */ 
85f0: 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 5d 29  (LIST)->farg[1])
8600: 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 2a 28 66  ..\.       : *(f
8610: 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61  loat*)((LIST)->a
8620: 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 66 6c 6f  ptr - sizeof(flo
8630: 61 74 29 29 09 09 09 5c 0a 20 20 29 29 20 20 29  at))...\.  ))  )
8640: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
8650: 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a  double(LIST)  \.
8660: 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f    (__va_align_do
8670: 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09  uble(LIST)......
8680: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74  \.   (LIST)->apt
8690: 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62  r += sizeof(doub
86a0: 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c  le),.....\.   (L
86b0: 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 09 09 09  IST)->anum++,...
86c0: 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29  ....\.   ((LIST)
86d0: 2d 3e 61 6e 75 6d 20 3d 3d 20 31 09 09 09 09 09  ->anum == 1.....
86e0: 09 09 5c 0a 20 20 20 20 3f 20 28 28 4c 49 53 54  ..\.    ? ((LIST
86f0: 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41  )->flags |= __VA
8700: 5f 46 4c 4f 41 54 5f 31 2c 20 28 4c 49 53 54 29  _FLOAT_1, (LIST)
8710: 2d 3e 64 61 72 67 5b 30 5d 29 09 09 09 5c 0a 20  ->darg[0])...\. 
8720: 20 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 6e     : ((LIST)->an
8730: 75 6d 20 3d 3d 20 32 20 26 26 20 28 28 4c 49 53  um == 2 && ((LIS
8740: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
8750: 5f 46 4c 4f 41 54 5f 31 29 09 09 5c 0a 20 20 20  _FLOAT_1)..\.   
8760: 20 20 20 20 3f 20 28 2f 2a 20 28 4c 49 53 54 29      ? (/* (LIST)
8770: 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f  ->flags |= __VA_
8780: 46 4c 4f 41 54 5f 32 2c 20 2a 2f 20 28 4c 49 53  FLOAT_2, */ (LIS
8790: 54 29 2d 3e 64 61 72 67 5b 31 5d 29 09 09 5c 0a  T)->darg[1])..\.
87a0: 20 20 20 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c         : *(doubl
87b0: 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  e*)((LIST)->aptr
87c0: 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65   - sizeof(double
87d0: 29 29 09 09 09 5c 0a 20 20 29 29 20 20 29 0a 23  ))...\.  ))  ).#
87e0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
87f0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
8800: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
8810: 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72  64__)./* The fir
8820: 73 74 20 30 2c 2e 2e 2c 38 20 72 65 67 69 73 74  st 0,..,8 regist
8830: 65 72 73 20 61 72 65 20 73 74 6f 72 65 64 20 65  ers are stored e
8840: 6c 73 65 77 68 65 72 65 20 69 66 20 74 68 65 79  lsewhere if they
8850: 20 61 72 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f   are floating-po
8860: 69 6e 74 0a 20 2a 20 70 61 72 61 6d 65 74 65 72  int. * parameter
8870: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76  s.. */.#define v
8880: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54  a_arg_float(LIST
8890: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69  )  \.  (__va_ali
88a0: 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09  gn_double(LIST).
88b0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
88c0: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
88d0: 28 64 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a  (double),.....\.
88e0: 20 20 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e     (++(LIST)->an
88f0: 75 6d 20 3c 3d 20 38 09 09 09 09 09 09 09 5c 0a  um <= 8.......\.
8900: 20 20 20 20 3f 20 28 4c 49 53 54 29 2d 3e 66 61      ? (LIST)->fa
8910: 72 67 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20  rg[(LIST)->anum 
8920: 2d 20 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a  - 1].....\.    :
8930: 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54   *(float*)((LIST
8940: 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66  )->aptr - sizeof
8950: 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20  (double))....\. 
8960: 20 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61   )).#define va_a
8970: 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20  rg_double(LIST) 
8980: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
8990: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09  _double(LIST)...
89a0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
89b0: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64  aptr += sizeof(d
89c0: 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20  ouble),.....\.  
89d0: 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d   (++(LIST)->anum
89e0: 20 3c 3d 20 38 09 09 09 09 09 09 09 5c 0a 20 20   <= 8.......\.  
89f0: 20 20 3f 20 28 4c 49 53 54 29 2d 3e 64 61 72 67    ? (LIST)->darg
8a00: 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 2d 20  [(LIST)->anum - 
8a10: 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a  1].....\.    : *
8a20: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
8a30: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
8a40: 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20  double))....\.  
8a50: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
8a60: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
8a70: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
8a80: 30 2c 2e 2e 2c 31 36 20 72 65 67 69 73 74 65 72  0,..,16 register
8a90: 73 20 61 72 65 20 73 74 6f 72 65 64 20 65 6c 73  s are stored els
8aa0: 65 77 68 65 72 65 20 69 66 20 74 68 65 79 20 61  ewhere if they a
8ab0: 72 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  re floating-poin
8ac0: 74 0a 20 2a 20 70 61 72 61 6d 65 74 65 72 73 2e  t. * parameters.
8ad0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f  . */.#define va_
8ae0: 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20  arg_float(LIST) 
8af0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
8b00: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09  _double(LIST)...
8b10: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
8b20: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64  aptr += sizeof(d
8b30: 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20  ouble),.....\.  
8b40: 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d   (++(LIST)->anum
8b50: 20 3c 3d 20 31 36 09 09 09 09 09 09 5c 0a 20 20   <= 16......\.  
8b60: 20 20 3f 20 28 4c 49 53 54 29 2d 3e 66 61 72 67    ? (LIST)->farg
8b70: 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 2d 20  [(LIST)->anum - 
8b80: 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a  1].....\.    : *
8b90: 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d  (float*)((LIST)-
8ba0: 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64  >aptr - sizeof(d
8bb0: 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29  ouble))....\.  )
8bc0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67  ).#define va_arg
8bd0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c  _double(LIST)  \
8be0: 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64  .  (__va_align_d
8bf0: 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09  ouble(LIST).....
8c00: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70  .\.   (LIST)->ap
8c10: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75  tr += sizeof(dou
8c20: 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28  ble),.....\.   (
8c30: 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3c  ++(LIST)->anum <
8c40: 3d 20 31 36 09 09 09 09 09 09 5c 0a 20 20 20 20  = 16......\.    
8c50: 3f 20 28 4c 49 53 54 29 2d 3e 64 61 72 67 5b 28  ? (LIST)->darg[(
8c60: 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d  LIST)->anum - 1]
8c70: 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 64  .....\.    : *(d
8c80: 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e  ouble*)((LIST)->
8c90: 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f  aptr - sizeof(do
8ca0: 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29 29  uble))....\.  ))
8cb0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
8cc0: 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29  ned(__powerpc__)
8cd0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 70   && !defined(__p
8ce0: 6f 77 65 72 70 63 36 34 5f 5f 29 20 26 26 20 28  owerpc64__) && (
8cf0: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c  defined(_AIX) ||
8d00: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48   (defined(__MACH
8d10: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
8d20: 5f 41 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 54  _APPLE__)))./* T
8d30: 68 65 20 66 69 72 73 74 20 31 33 20 66 6c 6f 61  he first 13 floa
8d40: 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20  ting-point args 
8d50: 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64  have been stored
8d60: 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23   elsewhere. */.#
8d70: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 66 6c  define va_arg_fl
8d80: 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  oat(LIST)  \.  (
8d90: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
8da0: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 2c 09 09  sizeof(float),..
8db0: 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d  ...\.   ((LIST)-
8dc0: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
8dd0: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 33 5d 09  LIST)->farg[13].
8de0: 09 09 09 5c 0a 20 20 20 20 3f 20 28 66 6c 6f 61  ...\.    ? (floa
8df0: 74 29 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d  t) *((LIST)->mem
8e00: 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09 09 5c  fargptr++).....\
8e10: 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61 74 2a 29  .    : *(float*)
8e20: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20  ((LIST)->aptr - 
8e30: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09  sizeof(float))..
8e40: 09 09 5c 0a 20 20 29 29 0a 23 64 65 66 69 6e 65  ..\.  )).#define
8e50: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c   va_arg_double(L
8e60: 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  IST)  \.  (__va_
8e70: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
8e80: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
8e90: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a  ST)->aptr += siz
8ea0: 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09 09 09  eof(double),....
8eb0: 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 6d  .\.   ((LIST)->m
8ec0: 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28 4c 49  emfargptr < &(LI
8ed0: 53 54 29 2d 3e 66 61 72 67 5b 31 33 5d 09 09 09  ST)->farg[13]...
8ee0: 09 5c 0a 20 20 20 20 3f 20 2a 28 28 4c 49 53 54  .\.    ? *((LIST
8ef0: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29  )->memfargptr++)
8f00: 09 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28  ......\.    : *(
8f10: 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d  double*)((LIST)-
8f20: 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64  >aptr - sizeof(d
8f30: 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29  ouble))....\.  )
8f40: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
8f50: 69 6e 65 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f  ined(__powerpc__
8f60: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
8f70: 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 26 26 20  powerpc64__) && 
8f80: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  !(defined(_AIX) 
8f90: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
8fa0: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
8fb0: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a  (__APPLE__)))./*
8fc0: 20 54 68 65 20 66 69 72 73 74 20 38 20 66 6c 6f   The first 8 flo
8fd0: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73  ating-point args
8fe0: 20 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65   have been store
8ff0: 64 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a  d elsewhere. */.
9000: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 66  #define va_arg_f
9010: 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20  loat(LIST)  \.  
9020: 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67  ((LIST)->memfarg
9030: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66  ptr < &(LIST)->f
9040: 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20 20 20 3f  arg[8]....\.   ?
9050: 20 28 66 6c 6f 61 74 29 20 2a 28 28 4c 49 53 54   (float) *((LIST
9060: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29  )->memfargptr++)
9070: 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49  .....\.   : ((LI
9080: 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49  ST)->aptr = ((LI
9090: 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20  ST)->onstack == 
90a0: 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  0               
90b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
90c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
90d0: 20 20 20 20 20 20 20 20 3f 20 28 28 4c 49 53 54          ? ((LIST
90e0: 29 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c  )->onstack=1, (L
90f0: 49 53 54 29 2d 3e 73 61 70 74 72 29 20 20 20 20  IST)->saptr)    
9100: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
9110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9120: 20 20 3a 20 28 4c 49 53 54 29 2d 3e 61 70 74 72    : (LIST)->aptr
9130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9150: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20     \.           
9160: 20 20 20 20 20 20 20 20 20 20 20 29 2c 20 20 20             ),   
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
91a0: 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74       (LIST)->apt
91b0: 72 20 2b 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61  r += sizeof(floa
91c0: 74 29 2c 09 09 09 09 09 5c 0a 20 20 20 20 20 20  t),.....\.      
91d0: 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29  *(float*)((LIST)
91e0: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
91f0: 66 6c 6f 61 74 29 29 09 09 09 09 5c 0a 20 20 29  float))....\.  )
9200: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67  ).#define va_arg
9210: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c  _double(LIST)  \
9220: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66  .  ((LIST)->memf
9230: 61 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29  argptr < &(LIST)
9240: 2d 3e 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20  ->farg[8]....\. 
9250: 20 20 20 3f 20 2a 28 28 4c 49 53 54 29 2d 3e 6d     ? *((LIST)->m
9260: 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09  emfargptr++)....
9270: 09 09 5c 0a 20 20 20 20 3a 20 28 28 4c 49 53 54  ..\.    : ((LIST
9280: 29 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54  )->aptr = ((LIST
9290: 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20  )->onstack == 0 
92a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92b0: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
92c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92d0: 20 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e       ? ((LIST)->
92e0: 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54  onstack=1, (LIST
92f0: 29 2d 3e 73 61 70 74 72 29 20 20 20 20 20 20 20  )->saptr)       
9300: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20        \.        
9310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
9320: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 20 20   (LIST)->aptr   
9330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9350: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  \.              
9360: 20 20 20 20 20 20 20 20 29 2c 20 20 20 20 20 20          ),      
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9390: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
93a0: 20 20 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f     __va_align_do
93b0: 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09  uble(LIST)......
93c0: 5c 0a 20 20 20 20 20 20 20 28 4c 49 53 54 29 2d  \.       (LIST)-
93d0: 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28  >aptr += sizeof(
93e0: 64 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20  double),.....\. 
93f0: 20 20 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29        *(double*)
9400: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20  ((LIST)->aptr - 
9410: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09  sizeof(double)).
9420: 09 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a  ..\.  )).#endif.
9430: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f  #if defined(__po
9440: 77 65 72 70 63 36 34 5f 5f 29 0a 2f 2a 20 54 68  werpc64__)./* Th
9450: 65 20 66 69 72 73 74 20 31 33 20 66 6c 6f 61 74  e first 13 float
9460: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20 68  ing-point args h
9470: 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64 20  ave been stored 
9480: 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23 64  elsewhere. */.#d
9490: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 66 6c 6f  efine va_arg_flo
94a0: 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  at(LIST)  \.  ((
94b0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73  LIST)->aptr += s
94c0: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2c  izeof(__vaword),
94d0: 09 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54  .....\.   ((LIST
94e0: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20  )->memfargptr < 
94f0: 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 33  &(LIST)->farg[13
9500: 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 66 6c  ]....\.    ? (fl
9510: 6f 61 74 29 20 2a 28 28 4c 49 53 54 29 2d 3e 6d  oat) *((LIST)->m
9520: 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09  emfargptr++)....
9530: 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61 74  .\.    : *(float
9540: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
9550: 2d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29  - sizeof(float))
9560: 09 09 09 09 5c 0a 20 20 29 29 0a 23 64 65 66 69  ....\.  )).#defi
9570: 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65  ne va_arg_double
9580: 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76  (LIST)  \.  (__v
9590: 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c  a_align_double(L
95a0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28  IST)......\.   (
95b0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73  LIST)->aptr += s
95c0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09  izeof(double),..
95d0: 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d  ...\.   ((LIST)-
95e0: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
95f0: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 33 5d 09  LIST)->farg[13].
9600: 09 09 09 5c 0a 20 20 20 20 3f 20 2a 28 28 4c 49  ...\.    ? *((LI
9610: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b  ST)->memfargptr+
9620: 2b 29 09 09 09 09 09 09 5c 0a 20 20 20 20 3a 20  +)......\.    : 
9630: 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54  *(double*)((LIST
9640: 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66  )->aptr - sizeof
9650: 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20  (double))....\. 
9660: 20 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64   )).#endif.#if d
9670: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
9680: 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 32 20  ./* The first 2 
9690: 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61  floating-point a
96a0: 72 67 73 20 68 61 76 65 20 62 65 65 6e 20 73 74  rgs have been st
96b0: 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65 2e 20  ored elsewhere. 
96c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  */.#define va_ar
96d0: 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c  g_float(LIST)  \
96e0: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66  .  ((LIST)->memf
96f0: 61 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29  argptr < &(LIST)
9700: 2d 3e 66 61 72 67 5b 32 5d 09 09 09 09 5c 0a 20  ->farg[2]....\. 
9710: 20 20 3f 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 64    ? (LIST)->memd
9720: 61 72 67 70 74 72 2b 2b 2c 20 28 66 6c 6f 61 74  argptr++, (float
9730: 29 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66  ) *((LIST)->memf
9740: 61 72 67 70 74 72 2b 2b 29 09 09 5c 0a 20 20 20  argptr++)..\.   
9750: 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  : ((LIST)->aptr 
9760: 3d 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61  = ((LIST)->onsta
9770: 63 6b 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20  ck == 0         
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9790: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20       \.         
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20                ? 
97b0: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
97c0: 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61 70 74  =1, (LIST)->sapt
97d0: 72 29 20 20 20 20 20 20 20 20 20 20 20 20 20 5c  r)             \
97e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
97f0: 20 20 20 20 20 20 20 20 3a 20 28 4c 49 53 54 29          : (LIST)
9800: 2d 3e 61 70 74 72 20 20 20 20 20 20 20 20 20 20  ->aptr          
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9820: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
9830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9840: 20 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   ),             
9850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9870: 20 20 20 5c 0a 20 20 20 20 20 20 28 4c 49 53 54     \.      (LIST
9880: 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f  )->aptr += sizeo
9890: 66 28 66 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a  f(float),.....\.
98a0: 20 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28        *(float*)(
98b0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73  (LIST)->aptr - s
98c0: 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09 09  izeof(float))...
98d0: 09 5c 0a 20 20 29 29 0a 23 64 65 66 69 6e 65 20  .\.  )).#define 
98e0: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49  va_arg_double(LI
98f0: 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  ST)  \.  ((LIST)
9900: 2d 3e 6d 65 6d 64 61 72 67 70 74 72 20 3c 20 26  ->memdargptr < &
9910: 28 4c 49 53 54 29 2d 3e 64 61 72 67 5b 32 5d 09  (LIST)->darg[2].
9920: 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c 49 53 54  ...\.    ? (LIST
9930: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 2c  )->memfargptr++,
9940: 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 64 61   *((LIST)->memda
9950: 72 67 70 74 72 2b 2b 29 09 09 09 5c 0a 20 20 20  rgptr++)...\.   
9960: 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72   : ((LIST)->aptr
9970: 20 3d 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74   = ((LIST)->onst
9980: 61 63 6b 20 3d 3d 20 30 20 20 20 20 20 20 20 20  ack == 0        
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99a0: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20       \.         
99b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20                ? 
99c0: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
99d0: 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61 70 74  =1, (LIST)->sapt
99e0: 72 29 20 20 20 20 20 20 20 20 20 20 20 20 20 5c  r)             \
99f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a00: 20 20 20 20 20 20 20 20 3a 20 28 4c 49 53 54 29          : (LIST)
9a10: 2d 3e 61 70 74 72 20 20 20 20 20 20 20 20 20 20  ->aptr          
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a30: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
9a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a50: 20 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   ),             
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a80: 20 20 20 5c 0a 20 20 20 20 20 20 20 5f 5f 76 61     \.       __va
9a90: 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49  _align_double(LI
9aa0: 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 20 20  ST)......\.     
9ab0: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
9ac0: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
9ad0: 2c 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 2a  ,.....\.       *
9ae0: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
9af0: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
9b00: 64 6f 75 62 6c 65 29 29 09 09 09 5c 0a 20 20 29  double))...\.  )
9b10: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
9b20: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f  ined(__ia64__)./
9b30: 2a 20 54 68 65 20 66 69 72 73 74 20 38 20 66 6c  * The first 8 fl
9b40: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67  oating-point arg
9b50: 73 20 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72  s have been stor
9b60: 65 64 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f  ed elsewhere. */
9b70: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
9b80: 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20  float(LIST)  \. 
9b90: 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b   ((LIST)->aptr +
9ba0: 3d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  = sizeof(__vawor
9bb0: 64 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 28 4c  d),.....\.   ((L
9bc0: 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72  IST)->memfargptr
9bd0: 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67   < &(LIST)->farg
9be0: 5b 38 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 28  [8]....\.    ? (
9bf0: 66 6c 6f 61 74 29 20 2a 28 28 4c 49 53 54 29 2d  float) *((LIST)-
9c00: 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09  >memfargptr++)..
9c10: 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f  ...\.    : *(flo
9c20: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
9c30: 72 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77  r - sizeof(__vaw
9c40: 6f 72 64 29 29 09 09 09 5c 0a 20 20 29 29 0a 23  ord))...\.  )).#
9c50: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f  define va_arg_do
9c60: 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20  uble(LIST)  \.  
9c70: 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62  (__va_align_doub
9c80: 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  le(LIST)......\.
9c90: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
9ca0: 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  += sizeof(double
9cb0: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 28 4c 49  ),.....\.   ((LI
9cc0: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20  ST)->memfargptr 
9cd0: 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b  < &(LIST)->farg[
9ce0: 38 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 2a 28  8]....\.    ? *(
9cf0: 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70  (LIST)->memfargp
9d00: 74 72 2b 2b 29 09 09 09 09 09 09 5c 0a 20 20 20  tr++)......\.   
9d10: 20 3a 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c   : *(double*)((L
9d20: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a  IST)->aptr - siz
9d30: 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09 09  eof(double))....
9d40: 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69  \.  )).#endif.#i
9d50: 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  f defined(__x86_
9d60: 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72  64__)./* The fir
9d70: 73 74 20 38 20 66 6c 6f 61 74 69 6e 67 2d 70 6f  st 8 floating-po
9d80: 69 6e 74 20 61 72 67 73 20 68 61 76 65 20 62 65  int args have be
9d90: 65 6e 20 73 74 6f 72 65 64 20 65 6c 73 65 77 68  en stored elsewh
9da0: 65 72 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ere. */.#define 
9db0: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53  va_arg_float(LIS
9dc0: 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  T)  \.  ((LIST)-
9dd0: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
9de0: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38 5d 09 09  LIST)->farg[8]..
9df0: 09 09 5c 0a 20 20 20 3f 20 28 28 4c 49 53 54 29  ..\.   ? ((LIST)
9e00: 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 2c 09  ->memfargptr++,.
9e10: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 2a 28 66  .....\.      *(f
9e20: 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 6d  loat*)((LIST)->m
9e30: 65 6d 66 61 72 67 70 74 72 20 2d 20 31 29 09 09  emfargptr - 1)..
9e40: 09 09 09 5c 0a 20 20 20 20 20 29 09 09 09 09 09  ...\.     ).....
9e50: 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53  ....\.   : ((LIS
9e60: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65  T)->aptr += size
9e70: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2c 09 09 09  of(__vaword),...
9e80: 09 09 5c 0a 20 20 20 20 20 20 2a 28 66 6c 6f 61  ..\.      *(floa
9e90: 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  t*)((LIST)->aptr
9ea0: 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f   - sizeof(__vawo
9eb0: 72 64 29 29 09 09 09 5c 0a 20 20 29 20 20 29 0a  rd))...\.  )  ).
9ec0: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64  #define va_arg_d
9ed0: 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20  ouble(LIST)  \. 
9ee0: 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72   ((LIST)->memfar
9ef0: 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e  gptr < &(LIST)->
9f00: 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20 20 20  farg[8]....\.   
9f10: 3f 20 2a 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61  ? *(LIST)->memfa
9f20: 72 67 70 74 72 2b 2b 09 09 09 09 09 09 5c 0a 20  rgptr++......\. 
9f30: 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74    : ((LIST)->apt
9f40: 72 20 2b 3d 20 73 69 7a 65 6f 66 28 5f 5f 76 61  r += sizeof(__va
9f50: 77 6f 72 64 29 2c 09 09 09 09 09 5c 0a 20 20 20  word),.....\.   
9f60: 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c     *(double*)((L
9f70: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a  IST)->aptr - siz
9f80: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 09 09  eof(__vaword))..
9f90: 09 5c 0a 20 20 29 20 20 29 0a 23 65 6e 64 69 66  .\.  )  ).#endif
9fa0: 0a 23 69 66 6e 64 65 66 20 76 61 5f 61 72 67 5f  .#ifndef va_arg_
9fb0: 66 6c 6f 61 74 0a 23 64 65 66 69 6e 65 20 76 61  float.#define va
9fc0: 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29  _arg_float(LIST)
9fd0: 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 66  .__va_arg(LIST,f
9fe0: 6c 6f 61 74 29 0a 23 65 6e 64 69 66 0a 23 69 66  loat).#endif.#if
9ff0: 6e 64 65 66 20 76 61 5f 61 72 67 5f 64 6f 75 62  ndef va_arg_doub
a000: 6c 65 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  le.#define va_ar
a010: 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20  g_double(LIST)  
a020: 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f  \.  (__va_align_
a030: 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 5f 5f 76  double(LIST) __v
a040: 61 5f 61 72 67 28 4c 49 53 54 2c 64 6f 75 62 6c  a_arg(LIST,doubl
a050: 65 29 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 50  e)).#endif../* P
a060: 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 73  ointer arguments
a070: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f  . */.#define va_
a080: 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 54 59 50  arg_ptr(LIST,TYP
a090: 45 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54  E).__va_arg(LIST
a0a0: 2c 54 59 50 45 29 0a 0a 2f 2a 20 53 74 72 75 63  ,TYPE)../* Struc
a0b0: 74 75 72 65 20 61 72 67 75 6d 65 6e 74 73 2e 20  ture arguments. 
a0c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  */.#define va_ar
a0d0: 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  g_struct(LIST,TY
a0e0: 50 45 29 20 20 5c 0a 20 20 2a 28 54 59 50 45 2a  PE)  \.  *(TYPE*
a0f0: 29 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74  )__va_arg_struct
a100: 28 4c 49 53 54 2c 73 69 7a 65 6f 66 28 54 59 50  (LIST,sizeof(TYP
a110: 45 29 2c 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28  E),__VA_alignof(
a120: 54 59 50 45 29 29 0a 2f 2a 20 5f 76 61 5f 61 72  TYPE))./* _va_ar
a130: 67 5f 73 74 72 75 63 74 28 29 20 69 73 20 6c 69  g_struct() is li
a140: 6b 65 20 76 61 5f 61 72 67 5f 73 74 72 75 63 74  ke va_arg_struct
a150: 28 29 2c 20 65 78 63 65 70 74 20 74 68 61 74 20  (), except that 
a160: 79 6f 75 20 70 61 73 73 20 74 68 65 20 74 79 70  you pass the typ
a170: 65 27 73 0a 20 2a 20 73 69 7a 65 20 61 6e 64 20  e's. * size and 
a180: 61 6c 69 67 6e 6d 65 6e 74 20 69 6e 73 74 65 61  alignment instea
a190: 64 20 6f 66 20 74 68 65 20 74 79 70 65 20 61 6e  d of the type an
a1a0: 64 20 67 65 74 20 74 68 65 20 76 61 6c 75 65 27  d get the value'
a1b0: 73 20 61 64 64 72 65 73 73 20 69 6e 73 74 65 61  s address instea
a1c0: 64 0a 20 2a 20 6f 66 20 74 68 65 20 76 61 6c 75  d. * of the valu
a1d0: 65 20 69 74 73 65 6c 66 2e 0a 20 2a 2f 0a 23 64  e itself.. */.#d
a1e0: 65 66 69 6e 65 20 5f 76 61 5f 61 72 67 5f 73 74  efine _va_arg_st
a1f0: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
a200: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
a210: 20 5c 0a 20 20 28 76 6f 69 64 2a 29 5f 5f 76 61   \.  (void*)__va
a220: 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54  _arg_struct(LIST
a230: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
a240: 41 4c 49 47 4e 29 0a 2f 2a 20 53 74 72 75 63 74  ALIGN)./* Struct
a250: 75 72 65 20 61 72 67 75 6d 65 6e 74 20 61 6c 69  ure argument ali
a260: 67 6e 6d 65 6e 74 2e 20 2a 2f 0a 23 69 66 20 64  gnment. */.#if d
a270: 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29  efined(__i386__)
a280: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 4d 53 43   && defined(_MSC
a290: 5f 56 45 52 29 0a 2f 2a 20 49 6e 20 4d 53 56 43  _VER)./* In MSVC
a2a0: 2c 20 64 6f 75 62 6c 65 73 20 69 6e 73 69 64 65  , doubles inside
a2b0: 20 73 74 72 75 63 74 75 72 65 73 20 68 61 76 65   structures have
a2c0: 20 61 6c 69 67 6e 6d 65 6e 74 20 38 2c 20 69 2e   alignment 8, i.
a2d0: 65 2e 0a 20 2a 20 5f 5f 56 41 5f 61 6c 69 67 6e  e.. * __VA_align
a2e0: 6f 66 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20  of(double) = 8, 
a2f0: 62 75 74 20 64 6f 75 62 6c 65 73 20 28 61 6e 64  but doubles (and
a300: 20 61 6c 73 6f 20 73 74 72 75 63 74 75 72 65 73   also structures
a310: 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 20 2a 20 64   containing. * d
a320: 6f 75 62 6c 65 73 29 20 61 72 65 20 70 61 73 73  oubles) are pass
a330: 65 64 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 20  ed on the stack 
a340: 77 69 74 68 20 61 6c 69 67 6e 6d 65 6e 74 20 34  with alignment 4
a350: 2e 20 4c 6f 6f 6b 73 20 72 65 61 6c 6c 79 20 77  . Looks really w
a360: 65 69 72 64 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  eird.. */.#defin
a370: 65 20 5f 5f 76 61 5f 73 74 72 75 63 74 5f 61 6c  e __va_struct_al
a380: 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49  ignment(TYPE_ALI
a390: 47 4e 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f  GN)  \.  ((TYPE_
a3a0: 41 4c 49 47 4e 29 20 3c 3d 20 34 20 3f 20 28 54  ALIGN) <= 4 ? (T
a3b0: 59 50 45 5f 41 4c 49 47 4e 29 20 3a 20 34 29 0a  YPE_ALIGN) : 4).
a3c0: 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f  #else.#define __
a3d0: 76 61 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d  va_struct_alignm
a3e0: 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 20  ent(TYPE_ALIGN) 
a3f0: 20 5c 0a 20 20 28 54 59 50 45 5f 41 4c 49 47 4e   \.  (TYPE_ALIGN
a400: 29 0a 23 65 6e 64 69 66 0a 23 64 65 66 69 6e 65  ).#endif.#define
a410: 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75   __va_align_stru
a420: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
a430: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
a440: 0a 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  .  (LIST)->aptr 
a450: 3d 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  = ((LIST)->aptr 
a460: 2b 20 5f 5f 76 61 5f 73 74 72 75 63 74 5f 61 6c  + __va_struct_al
a470: 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49  ignment(TYPE_ALI
a480: 47 4e 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29  GN)-1) & -(long)
a490: 5f 5f 76 61 5f 73 74 72 75 63 74 5f 61 6c 69 67  __va_struct_alig
a4a0: 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e  nment(TYPE_ALIGN
a4b0: 29 2c 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  ),.#if defined(_
a4c0: 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69  _i386__) || defi
a4d0: 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c  ned(__m68k__) ||
a4e0: 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61   defined(__alpha
a4f0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
a500: 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  _arm__) || defin
a510: 65 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f  ed(__powerpc64__
a520: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
a530: 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  88k__) || define
a540: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c  d(__convex__) ||
a550: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
a560: 34 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  4__) || (defined
a570: 28 5f 5f 69 61 36 34 5f 5f 29 20 26 26 20 64 65  (__ia64__) && de
a580: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
a590: 26 26 20 28 5f 5f 47 4e 55 43 5f 5f 20 3e 3d 20  && (__GNUC__ >= 
a5a0: 33 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61  3)).#define __va
a5b0: 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54  _arg_struct(LIST
a5c0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
a5d0: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 5f 5f 76  ALIGN)  \.  (__v
a5e0: 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28 4c  a_align_struct(L
a5f0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
a600: 50 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a 20  PE_ALIGN)....\. 
a610: 20 20 5f 5f 76 61 5f 61 72 67 5f 61 64 6a 75 73    __va_arg_adjus
a620: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
a630: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
a640: 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23  ..\.  ).#endif.#
a650: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
a660: 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  s__) && !defined
a670: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 26 26  (__mipsn32__) &&
a680: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
a690: 36 34 5f 5f 29 0a 2f 2a 20 73 6d 61 6c 6c 20 73  64__)./* small s
a6a0: 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f  tructures < 1 wo
a6b0: 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20  rd are adjusted 
a6c0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d  depending on com
a6d0: 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65  piler */.#define
a6e0: 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74   __va_arg_struct
a6f0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
a700: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
a710: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 73 74 72   (__va_align_str
a720: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  uct(LIST,TYPE_SI
a730: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
a740: 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e  ..\.   ((LIST)->
a750: 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 53 47 49  flags & __VA_SGI
a760: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09  CC_STRUCT_ARGS..
a770: 09 09 5c 0a 20 20 20 20 3f 20 2f 2a 20 53 47 49  ..\.    ? /* SGI
a780: 20 4d 49 50 53 20 63 63 20 70 61 73 73 65 73 20   MIPS cc passes 
a790: 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73  small structures
a7a0: 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c 20   left-adjusted, 
a7b0: 61 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64  although big-end
a7c0: 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 20 5f  ian! */\.      _
a7d0: 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75  _va_arg_leftadju
a7e0: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53  sted(LIST,TYPE_S
a7f0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09  IZE,TYPE_ALIGN).
a800: 09 09 5c 0a 20 20 20 20 3a 20 2f 2a 20 53 47 49  ..\.    : /* SGI
a810: 20 4d 49 50 53 20 67 63 63 20 70 61 73 73 65 73   MIPS gcc passes
a820: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
a830: 73 20 77 69 74 68 69 6e 20 74 68 65 20 66 69 72  s within the fir
a840: 73 74 20 66 6f 75 72 20 77 6f 72 64 73 20 6c 65  st four words le
a850: 66 74 2d 09 20 20 20 5c 0a 20 20 20 20 20 20 20  ft-.   \.       
a860: 2a 20 61 64 6a 75 73 74 65 64 2c 20 66 6f 72 20  * adjusted, for 
a870: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
a880: 74 68 20 63 63 2e 20 42 75 74 20 73 74 72 75 63  th cc. But struc
a890: 74 75 72 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20  tures in memory 
a8a0: 61 72 65 20 70 61 73 73 65 64 20 20 5c 0a 20 20  are passed  \.  
a8b0: 20 20 20 20 20 2a 20 72 69 67 68 74 2d 61 64 6a       * right-adj
a8c0: 75 73 74 65 64 21 21 20 53 65 65 20 67 63 63 2d  usted!! See gcc-
a8d0: 32 2e 36 2e 33 2f 63 6f 6e 66 69 67 2f 6d 69 70  2.6.3/config/mip
a8e0: 73 2f 6d 69 70 73 2e 63 3a 66 75 6e 63 74 69 6f  s/mips.c:functio
a8f0: 6e 5f 61 72 67 28 29 2e 09 20 20 20 5c 0a 20 20  n_arg()..   \.  
a900: 20 20 20 20 20 2a 2f 09 09 09 09 09 09 09 09 09       */.........
a910: 20 20 20 5c 0a 20 20 20 20 20 20 28 28 4c 49 53     \.      ((LIS
a920: 54 29 2d 3e 61 70 74 72 20 3c 20 28 4c 49 53 54  T)->aptr < (LIST
a930: 29 2d 3e 6d 65 6d 61 72 67 70 74 72 09 09 09 09  )->memargptr....
a940: 09 5c 0a 20 20 20 20 20 20 20 3f 20 5f 5f 76 61  .\.       ? __va
a950: 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65  _arg_leftadjuste
a960: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
a970: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 5c 0a  ,TYPE_ALIGN)..\.
a980: 20 20 20 20 20 20 20 3a 20 5f 5f 76 61 5f 61 72         : __va_ar
a990: 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28  g_rightadjusted(
a9a0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
a9b0: 59 50 45 5f 41 4c 49 47 4e 29 09 09 5c 0a 20 20  YPE_ALIGN)..\.  
a9c0: 29 29 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  ))  ).#endif.#if
a9d0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
a9e0: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  32__) || defined
a9f0: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 2f 2a 20  (__mips64__)./* 
aa00: 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73  small structures
aa10: 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64   < 1 word are ad
aa20: 6a 75 73 74 65 64 20 64 65 70 65 6e 64 69 6e 67  justed depending
aa30: 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a   on compiler */.
aa40: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
aa50: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
aa60: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
aa70: 4e 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c  N)  \.  (__va_al
aa80: 69 67 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  ign_struct(LIST,
aa90: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
aaa0: 4c 49 47 4e 29 09 09 09 09 5c 0a 20 20 20 28 28  LIGN)....\.   ((
aab0: 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f  LIST)->flags & _
aac0: 5f 56 41 5f 53 47 49 43 43 5f 53 54 52 55 43 54  _VA_SGICC_STRUCT
aad0: 5f 41 52 47 53 09 09 09 09 5c 0a 20 20 20 20 3f  _ARGS....\.    ?
aae0: 20 2f 2a 20 53 47 49 20 4d 49 50 53 20 63 63 20   /* SGI MIPS cc 
aaf0: 70 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72  passes small str
ab00: 75 63 74 75 72 65 73 20 6c 65 66 74 2d 61 64 6a  uctures left-adj
ab10: 75 73 74 65 64 2c 20 61 6c 74 68 6f 75 67 68 20  usted, although 
ab20: 62 69 67 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a  big-endian! */\.
ab30: 20 20 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 6c        __va_arg_l
ab40: 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  eftadjusted(LIST
ab50: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
ab60: 41 4c 49 47 4e 29 09 09 09 5c 0a 20 20 20 20 3a  ALIGN)...\.    :
ab70: 20 2f 2a 20 53 47 49 20 4d 49 50 53 20 67 63 63   /* SGI MIPS gcc
ab80: 20 70 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74   passes small st
ab90: 72 75 63 74 75 72 65 73 20 72 69 67 68 74 2d 61  ructures right-a
aba0: 64 6a 75 73 74 65 64 2e 20 2a 2f 09 5c 0a 20 20  djusted. */.\.  
abb0: 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67      __va_arg_rig
abc0: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
abd0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
abe0: 4c 49 47 4e 29 09 09 09 5c 0a 20 20 29 29 0a 23  LIGN)...\.  )).#
abf0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
ac00: 64 28 5f 5f 70 6f 77 65 72 70 63 5f 5f 29 20 26  d(__powerpc__) &
ac10: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77  & !defined(__pow
ac20: 65 72 70 63 36 34 5f 5f 29 20 26 26 20 28 64 65  erpc64__) && (de
ac30: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
ac40: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
ac50: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
ac60: 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 73 6d 61  PPLE__)))./* sma
ac70: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20  ll structures < 
ac80: 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73  1 word are adjus
ac90: 74 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ted depending on
aca0: 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65   compiler */.#de
acb0: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74  fine __va_arg_st
acc0: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
acd0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
ace0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
acf0: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
ad00: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
ad10: 4e 29 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53  N)....\.   ((LIS
ad20: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
ad30: 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52  _AIXCC_STRUCT_AR
ad40: 47 53 09 09 09 09 5c 0a 20 20 20 20 3f 20 2f 2a  GS....\.    ? /*
ad50: 20 41 49 58 20 63 63 20 61 6e 64 20 78 6c 63 20   AIX cc and xlc 
ad60: 70 61 73 73 20 73 6d 61 6c 6c 20 73 74 72 75 63  pass small struc
ad70: 74 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73  tures left-adjus
ad80: 74 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69  ted, although bi
ad90: 67 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20  g-endian! */\.  
ada0: 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66      __va_arg_lef
adb0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
adc0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
add0: 49 47 4e 29 09 09 09 5c 0a 20 20 20 20 3a 20 2f  IGN)...\.    : /
ade0: 2a 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61  * gcc passes sma
adf0: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 72 69  ll structures ri
ae00: 67 68 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f  ght-adjusted. */
ae10: 09 09 09 5c 0a 20 20 20 20 20 20 5f 5f 76 61 5f  ...\.      __va_
ae20: 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65  arg_rightadjuste
ae30: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
ae40: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c  ,TYPE_ALIGN)...\
ae50: 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69 66  .  )).#endif.#if
ae60: 20 64 65 66 69 6e 65 64 28 5f 5f 70 6f 77 65 72   defined(__power
ae70: 70 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  pc__) && !define
ae80: 64 28 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29  d(__powerpc64__)
ae90: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41   && !(defined(_A
aea0: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
aeb0: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
aec0: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
aed0: 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20  )./* Structures 
aee0: 61 72 65 20 70 61 73 73 65 64 20 61 73 20 70 6f  are passed as po
aef0: 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72  inters to caller
af00: 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69  -made local copi
af10: 65 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  es. */.#define _
af20: 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c  _va_arg_struct(L
af30: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
af40: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 76  PE_ALIGN)  \.  v
af50: 61 5f 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 76  a_arg_ptr(LIST,v
af60: 6f 69 64 2a 29 0a 23 65 6e 64 69 66 0a 23 69 66  oid*).#endif.#if
af70: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
af80: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
af90: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20  __sparc64__)./* 
afa0: 53 74 72 75 63 74 75 72 65 73 20 61 72 65 20 70  Structures are p
afb0: 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72  assed as pointer
afc0: 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65  s to caller-made
afd0: 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 20 2a   local copies. *
afe0: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  /.#define __va_a
aff0: 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  rg_struct(LIST,T
b000: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
b010: 49 47 4e 29 20 20 5c 0a 20 20 76 61 5f 61 72 67  IGN)  \.  va_arg
b020: 5f 70 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29  _ptr(LIST,void*)
b030: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
b040: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
b050: 0a 2f 2a 20 53 6d 61 6c 6c 20 73 74 72 75 63 74  ./* Small struct
b060: 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ures are passed 
b070: 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61  left-adjusted, a
b080: 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69  lthough big-endi
b090: 61 6e 21 20 2a 2f 0a 2f 2a 20 42 69 67 20 73 74  an! */./* Big st
b0a0: 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73  ructures are pas
b0b0: 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 73 20  sed as pointers 
b0c0: 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c  to caller-made l
b0d0: 6f 63 61 6c 20 63 6f 70 69 65 73 2e 20 2a 2f 0a  ocal copies. */.
b0e0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
b0f0: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
b100: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
b110: 4e 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53  N)  \.  ((TYPE_S
b120: 49 5a 45 29 20 3c 3d 20 31 36 09 09 09 09 09 09  IZE) <= 16......
b130: 09 5c 0a 20 20 20 3f 20 28 5f 5f 76 61 5f 61 6c  .\.   ? (__va_al
b140: 69 67 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  ign_struct(LIST,
b150: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
b160: 4c 49 47 4e 29 09 09 09 5c 0a 20 20 20 20 20 20  LIGN)...\.      
b170: 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a  __va_arg_leftadj
b180: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
b190: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
b1a0: 29 09 09 09 5c 0a 20 20 20 3a 20 76 61 5f 61 72  )...\.   : va_ar
b1b0: 67 5f 70 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a  g_ptr(LIST,void*
b1c0: 29 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e  )......\.  ).#en
b1d0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
b1e0: 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72  __s390__)./* Str
b1f0: 75 63 74 75 72 65 73 20 3c 3d 20 38 20 62 79 74  uctures <= 8 byt
b200: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73  es are passed as
b210: 20 65 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73   embedded copies
b220: 20 6f 6e 20 74 68 65 20 61 72 67 20 73 74 61 63   on the arg stac
b230: 6b 2e 0a 20 2a 20 42 69 67 20 73 74 72 75 63 74  k.. * Big struct
b240: 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ures are passed 
b250: 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63  as pointers to c
b260: 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c  aller-made local
b270: 20 63 6f 70 69 65 73 2e 0a 20 2a 2f 0a 23 64 65   copies.. */.#de
b280: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74  fine __va_arg_st
b290: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
b2a0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
b2b0: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45   \.  ((TYPE_SIZE
b2c0: 29 20 21 3d 20 31 20 26 26 20 28 54 59 50 45 5f  ) != 1 && (TYPE_
b2d0: 53 49 5a 45 29 20 21 3d 20 32 20 26 26 20 28 54  SIZE) != 2 && (T
b2e0: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 34 20 26  YPE_SIZE) != 4 &
b2f0: 26 20 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d  & (TYPE_SIZE) !=
b300: 20 38 20 5c 0a 20 20 20 3f 20 76 61 5f 61 72 67   8 \.   ? va_arg
b310: 5f 70 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29  _ptr(LIST,void*)
b320: 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 76 6f  ......\.   : (vo
b330: 69 64 2a 29 5f 5f 76 61 5f 61 72 67 5f 72 69 67  id*)__va_arg_rig
b340: 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  htadjusted(LIST,
b350: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
b360: 4c 49 47 4e 29 09 09 5c 0a 20 20 29 0a 23 65 6e  LIGN)..\.  ).#en
b370: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
b380: 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 53 74 72  __hppa__)./* Str
b390: 75 63 74 75 72 65 73 20 3c 3d 20 38 20 62 79 74  uctures <= 8 byt
b3a0: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73  es are passed as
b3b0: 20 65 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73   embedded copies
b3c0: 20 6f 6e 20 74 68 65 20 61 72 67 20 73 74 61 63   on the arg stac
b3d0: 6b 2e 0a 20 2a 20 42 69 67 20 73 74 72 75 63 74  k.. * Big struct
b3e0: 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ures are passed 
b3f0: 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63  as pointers to c
b400: 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c  aller-made local
b410: 20 63 6f 70 69 65 73 2e 0a 20 2a 2f 0a 23 64 65   copies.. */.#de
b420: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74  fine __va_arg_st
b430: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
b440: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
b450: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45   \.  ((TYPE_SIZE
b460: 29 20 3e 20 38 09 09 09 09 09 09 09 5c 0a 20 20  ) > 8.......\.  
b470: 20 3f 20 76 61 5f 61 72 67 5f 70 74 72 28 4c 49   ? va_arg_ptr(LI
b480: 53 54 2c 76 6f 69 64 2a 29 09 09 09 09 09 09 5c  ST,void*)......\
b490: 0a 20 20 20 3a 20 2f 2a 20 46 49 58 4d 45 3a 20  .   : /* FIXME: 
b4a0: 67 63 63 2d 32 2e 36 2e 33 20 70 61 73 73 65 73  gcc-2.6.3 passes
b4b0: 20 73 74 72 75 63 74 75 72 65 73 20 3c 3d 20 34   structures <= 4
b4c0: 20 62 79 74 65 73 20 69 6e 20 6d 65 6d 6f 72 79   bytes in memory
b4d0: 20 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 21 20   left-adjusted! 
b4e0: 3f 3f 20 2a 2f 5c 0a 20 20 20 20 20 28 76 6f 69  ?? */\.     (voi
b4f0: 64 2a 29 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68  d*)__va_arg_righ
b500: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
b510: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
b520: 49 47 4e 29 09 09 5c 0a 20 20 29 0a 23 65 6e 64  IGN)..\.  ).#end
b530: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
b540: 5f 69 61 36 34 5f 5f 29 20 26 26 20 28 21 64 65  _ia64__) && (!de
b550: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
b560: 7c 7c 20 28 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33  || (__GNUC__ < 3
b570: 29 29 0a 2f 2a 20 54 79 70 65 73 20 6c 61 72 67  ))./* Types larg
b580: 65 72 20 74 68 61 6e 20 61 20 77 6f 72 64 20 68  er than a word h
b590: 61 76 65 20 32 2d 77 6f 72 64 20 61 6c 69 67 6e  ave 2-word align
b5a0: 6d 65 6e 74 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  ment. */.#define
b5b0: 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74   __va_arg_struct
b5c0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
b5d0: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
b5e0: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 73 74 72   (__va_align_str
b5f0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  uct(LIST,TYPE_SI
b600: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
b610: 09 09 5c 0a 20 20 20 28 28 54 59 50 45 5f 53 49  ..\.   ((TYPE_SI
b620: 5a 45 29 20 3e 20 73 69 7a 65 6f 66 28 5f 5f 76  ZE) > sizeof(__v
b630: 61 77 6f 72 64 29 20 26 26 20 28 28 28 5f 5f 76  aword) && (((__v
b640: 61 77 6f 72 64 2a 29 28 4c 49 53 54 29 2d 3e 61  aword*)(LIST)->a
b650: 70 74 72 20 2d 20 28 4c 49 53 54 29 2d 3e 73 61  ptr - (LIST)->sa
b660: 70 74 72 29 20 26 20 31 29 20 3f 20 28 4c 49 53  ptr) & 1) ? (LIS
b670: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65  T)->aptr += size
b680: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3a 20 30  of(__vaword) : 0
b690: 29 2c 20 5c 0a 20 20 20 5f 5f 76 61 5f 61 72 67  ), \.   __va_arg
b6a0: 5f 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  _adjusted(LIST,T
b6b0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
b6c0: 49 47 4e 29 09 09 09 09 5c 0a 20 20 29 0a 23 65  IGN)....\.  ).#e
b6d0: 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 44 65 66  ndif.../*. * Def
b6e0: 69 6e 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 76  inition of the v
b6f0: 61 5f 72 65 74 75 72 6e 5f 78 78 78 20 6d 61 63  a_return_xxx mac
b700: 72 6f 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ros.. */.#define
b710: 20 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53   __va_return(LIS
b720: 54 2c 52 45 54 54 59 50 45 29 20 20 5c 0a 20 20  T,RETTYPE)  \.  
b730: 28 28 28 4c 49 53 54 29 2d 3e 72 74 79 70 65 20  (((LIST)->rtype 
b740: 3d 3d 20 28 52 45 54 54 59 50 45 29 29 20 7c 7c  == (RETTYPE)) ||
b750: 20 5f 5f 76 61 5f 65 72 72 6f 72 31 28 28 4c 49   __va_error1((LI
b760: 53 54 29 2d 3e 72 74 79 70 65 2c 52 45 54 54 59  ST)->rtype,RETTY
b770: 50 45 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  PE)).#define va_
b780: 72 65 74 75 72 6e 5f 76 6f 69 64 28 4c 49 53 54  return_void(LIST
b790: 29 20 20 5c 0a 20 20 5f 5f 76 61 5f 72 65 74 75  )  \.  __va_retu
b7a0: 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 76 6f 69 64  rn(LIST,__VAvoid
b7b0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
b7c0: 75 72 6e 5f 63 68 61 72 28 4c 49 53 54 2c 56 41  urn_char(LIST,VA
b7d0: 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65  L)  \.  (__va_re
b7e0: 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 63 68  turn(LIST,__VAch
b7f0: 61 72 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  ar), (LIST)->tmp
b800: 2e 5f 63 68 61 72 20 3d 20 28 56 41 4c 29 29 0a  ._char = (VAL)).
b810: 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72  #define va_retur
b820: 6e 5f 73 63 68 61 72 28 4c 49 53 54 2c 56 41 4c  n_schar(LIST,VAL
b830: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74  )  \.  (__va_ret
b840: 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 73 63 68  urn(LIST,__VAsch
b850: 61 72 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  ar), (LIST)->tmp
b860: 2e 5f 73 63 68 61 72 20 3d 20 28 56 41 4c 29 29  ._schar = (VAL))
b870: 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75  .#define va_retu
b880: 72 6e 5f 75 63 68 61 72 28 4c 49 53 54 2c 56 41  rn_uchar(LIST,VA
b890: 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65  L)  \.  (__va_re
b8a0: 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 63  turn(LIST,__VAuc
b8b0: 68 61 72 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d  har), (LIST)->tm
b8c0: 70 2e 5f 75 63 68 61 72 20 3d 20 28 56 41 4c 29  p._uchar = (VAL)
b8d0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
b8e0: 75 72 6e 5f 73 68 6f 72 74 28 4c 49 53 54 2c 56  urn_short(LIST,V
b8f0: 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72  AL)  \.  (__va_r
b900: 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 73  eturn(LIST,__VAs
b910: 68 6f 72 74 29 2c 20 28 4c 49 53 54 29 2d 3e 74  hort), (LIST)->t
b920: 6d 70 2e 5f 73 68 6f 72 74 20 3d 20 28 56 41 4c  mp._short = (VAL
b930: 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65  )).#define va_re
b940: 74 75 72 6e 5f 75 73 68 6f 72 74 28 4c 49 53 54  turn_ushort(LIST
b950: 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61  ,VAL)  \.  (__va
b960: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56  _return(LIST,__V
b970: 41 75 73 68 6f 72 74 29 2c 20 28 4c 49 53 54 29  Aushort), (LIST)
b980: 2d 3e 74 6d 70 2e 5f 75 73 68 6f 72 74 20 3d 20  ->tmp._ushort = 
b990: 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76  (VAL)).#define v
b9a0: 61 5f 72 65 74 75 72 6e 5f 69 6e 74 28 4c 49 53  a_return_int(LIS
b9b0: 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76  T,VAL)  \.  (__v
b9c0: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
b9d0: 56 41 69 6e 74 29 2c 20 28 4c 49 53 54 29 2d 3e  VAint), (LIST)->
b9e0: 74 6d 70 2e 5f 69 6e 74 20 3d 20 28 56 41 4c 29  tmp._int = (VAL)
b9f0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
ba00: 75 72 6e 5f 75 69 6e 74 28 4c 49 53 54 2c 56 41  urn_uint(LIST,VA
ba10: 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65  L)  \.  (__va_re
ba20: 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 69  turn(LIST,__VAui
ba30: 6e 74 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  nt), (LIST)->tmp
ba40: 2e 5f 75 69 6e 74 20 3d 20 28 56 41 4c 29 29 0a  ._uint = (VAL)).
ba50: 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72  #define va_retur
ba60: 6e 5f 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29  n_long(LIST,VAL)
ba70: 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75    \.  (__va_retu
ba80: 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 6c 6f 6e 67  rn(LIST,__VAlong
ba90: 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f  ), (LIST)->tmp._
baa0: 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29 0a 23 64  long = (VAL)).#d
bab0: 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f  efine va_return_
bac0: 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20  ulong(LIST,VAL) 
bad0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
bae0: 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67  n(LIST,__VAulong
baf0: 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f  ), (LIST)->tmp._
bb00: 75 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29 0a 23  ulong = (VAL)).#
bb10: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
bb20: 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  s64__) || define
bb30: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20 7c  d(__sparc64__) |
bb40: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68  | defined(__alph
bb50: 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  a__) || defined(
bb60: 5f 5f 70 6f 77 65 72 70 63 36 34 5f 5f 29 20 7c  __powerpc64__) |
bb70: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34  | defined(__ia64
bb80: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
bb90: 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69  _x86_64__).#defi
bba0: 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 6c 6f 6e  ne va_return_lon
bbb0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20  glong(LIST,VAL) 
bbc0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
bbd0: 6e 28 4c 49 53 54 2c 5f 5f 56 41 6c 6f 6e 67 6c  n(LIST,__VAlongl
bbe0: 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d  ong), (LIST)->tm
bbf0: 70 2e 5f 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29  p._long = (VAL))
bc00: 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75  .#define va_retu
bc10: 72 6e 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  rn_ulonglong(LIS
bc20: 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76  T,VAL)  \.  (__v
bc30: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
bc40: 56 41 75 6c 6f 6e 67 6c 6f 6e 67 29 2c 20 28 4c  VAulonglong), (L
bc50: 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 6c 6f 6e 67  IST)->tmp._ulong
bc60: 20 3d 20 28 56 41 4c 29 29 0a 23 65 6c 73 65 0a   = (VAL)).#else.
bc70: 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72  #define va_retur
bc80: 6e 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c  n_longlong(LIST,
bc90: 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  VAL)  \.  (__va_
bca0: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
bcb0: 6c 6f 6e 67 6c 6f 6e 67 29 2c 20 28 4c 49 53 54  longlong), (LIST
bcc0: 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f 6e 67  )->tmp._longlong
bcd0: 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e   = (VAL)).#defin
bce0: 65 20 76 61 5f 72 65 74 75 72 6e 5f 75 6c 6f 6e  e va_return_ulon
bcf0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20  glong(LIST,VAL) 
bd00: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
bd10: 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67  n(LIST,__VAulong
bd20: 6c 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74  long), (LIST)->t
bd30: 6d 70 2e 5f 75 6c 6f 6e 67 6c 6f 6e 67 20 3d 20  mp._ulonglong = 
bd40: 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a 23 64  (VAL)).#endif.#d
bd50: 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f  efine va_return_
bd60: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 20  float(LIST,VAL) 
bd70: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
bd80: 6e 28 4c 49 53 54 2c 5f 5f 56 41 66 6c 6f 61 74  n(LIST,__VAfloat
bd90: 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f  ), (LIST)->tmp._
bda0: 66 6c 6f 61 74 20 3d 20 28 56 41 4c 29 29 0a 23  float = (VAL)).#
bdb0: 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e  define va_return
bdc0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c  _double(LIST,VAL
bdd0: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74  )  \.  (__va_ret
bde0: 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 64 6f 75  urn(LIST,__VAdou
bdf0: 62 6c 65 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d  ble), (LIST)->tm
be00: 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 56 41 4c  p._double = (VAL
be10: 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65  )).#define va_re
be20: 74 75 72 6e 5f 70 74 72 28 4c 49 53 54 2c 54 59  turn_ptr(LIST,TY
be30: 50 45 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  PE,VAL)  \.  (__
be40: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
be50: 5f 56 41 76 6f 69 64 70 29 2c 20 28 4c 49 53 54  _VAvoidp), (LIST
be60: 29 2d 3e 74 6d 70 2e 5f 70 74 72 20 3d 20 28 76  )->tmp._ptr = (v
be70: 6f 69 64 2a 29 28 54 59 50 45 29 28 56 41 4c 29  oid*)(TYPE)(VAL)
be80: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
be90: 75 72 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  urn_struct(LIST,
bea0: 54 59 50 45 2c 56 41 4c 29 20 20 5c 0a 20 20 28  TYPE,VAL)  \.  (
beb0: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
bec0: 2c 5f 5f 56 41 73 74 72 75 63 74 29 2c 20 2a 28  ,__VAstruct), *(
bed0: 54 59 50 45 2a 29 28 28 4c 49 53 54 29 2d 3e 72  TYPE*)((LIST)->r
bee0: 61 64 64 72 29 20 3d 20 28 56 41 4c 29 29 0a 23  addr) = (VAL)).#
bef0: 64 65 66 69 6e 65 20 5f 76 61 5f 72 65 74 75 72  define _va_retur
bf00: 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  n_struct(LIST,TY
bf10: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
bf20: 47 4e 2c 56 41 4c 5f 41 44 44 52 29 20 20 5c 0a  GN,VAL_ADDR)  \.
bf30: 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c    (__va_return(L
bf40: 49 53 54 2c 5f 5f 56 41 73 74 72 75 63 74 29 2c  IST,__VAstruct),
bf50: 09 09 09 09 09 5c 0a 20 20 20 5f 5f 73 74 72 75  .....\.   __stru
bf60: 63 74 63 70 79 28 28 76 6f 69 64 2a 29 28 28 4c  ctcpy((void*)((L
bf70: 49 53 54 29 2d 3e 72 61 64 64 72 29 2c 56 41 4c  IST)->raddr),VAL
bf80: 5f 41 44 44 52 2c 54 59 50 45 5f 53 49 5a 45 2c  _ADDR,TYPE_SIZE,
bf90: 54 59 50 45 5f 41 4c 49 47 4e 29 09 5c 0a 20 20  TYPE_ALIGN).\.  
bfa0: 29 0a 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65  ).../* Determine
bfb0: 20 77 68 65 74 68 65 72 20 61 20 73 74 72 75 63   whether a struc
bfc0: 74 20 74 79 70 65 20 69 73 20 77 6f 72 64 2d 73  t type is word-s
bfd0: 70 6c 69 74 74 61 62 6c 65 2c 20 69 2e 65 2e 20  plittable, i.e. 
bfe0: 77 68 65 74 68 65 72 20 65 61 63 68 20 6f 66 0a  whether each of.
bff0: 20 2a 20 69 74 73 20 63 6f 6d 70 6f 6e 65 6e 74   * its component
c000: 73 20 66 69 74 20 69 6e 74 6f 20 61 20 72 65 67  s fit into a reg
c010: 69 73 74 65 72 2e 0a 20 2a 20 54 68 65 20 65 6e  ister.. * The en
c020: 74 69 72 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e  tire computation
c030: 20 69 73 20 64 6f 6e 65 20 61 74 20 63 6f 6d 70   is done at comp
c040: 69 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23 64  ile time.. */.#d
c050: 65 66 69 6e 65 20 76 61 5f 77 6f 72 64 5f 73 70  efine va_word_sp
c060: 6c 69 74 74 61 62 6c 65 5f 31 28 73 6c 6f 74 31  littable_1(slot1
c070: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 6f 66 66  )  \.  (__va_off
c080: 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65  set1(slot1)/size
c090: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20  of(__vaword) == 
c0a0: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73 6c  (__va_offset1(sl
c0b0: 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot1)+sizeof(slot
c0c0: 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  1)-1)/sizeof(__v
c0d0: 61 77 6f 72 64 29 29 0a 23 64 65 66 69 6e 65 20  aword)).#define 
c0e0: 76 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62  va_word_splittab
c0f0: 6c 65 5f 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  le_2(slot1,slot2
c100: 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66  )  \.  ((__va_of
c110: 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a  fset1(slot1)/siz
c120: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d  eof(__vaword) ==
c130: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73   (__va_offset1(s
c140: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot1)+sizeof(slo
c150: 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t1)-1)/sizeof(__
c160: 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26  vaword)) \.   &&
c170: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28 73   (__va_offset2(s
c180: 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a 65  lot1,slot2)/size
c190: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20  of(__vaword) == 
c1a0: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28 73 6c  (__va_offset2(sl
c1b0: 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f  ot1,slot2)+sizeo
c1c0: 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a 65  f(slot2)-1)/size
c1d0: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a  of(__vaword)) \.
c1e0: 20 20 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 77    ).#define va_w
c1f0: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 33  ord_splittable_3
c200: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f  (slot1,slot2,slo
c210: 74 33 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f  t3)  \.  ((__va_
c220: 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73  offset1(slot1)/s
c230: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20  izeof(__vaword) 
c240: 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31  == (__va_offset1
c250: 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73  (slot1)+sizeof(s
c260: 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28  lot1)-1)/sizeof(
c270: 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20  __vaword)) \.   
c280: 26 26 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32  && (__va_offset2
c290: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69  (slot1,slot2)/si
c2a0: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d  zeof(__vaword) =
c2b0: 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28  = (__va_offset2(
c2c0: 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a  slot1,slot2)+siz
c2d0: 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69  eof(slot2)-1)/si
c2e0: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 20  zeof(__vaword)) 
c2f0: 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61 5f 6f 66  \.   && (__va_of
c300: 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset3(slot1,slot
c310: 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f 66 28  2,slot3)/sizeof(
c320: 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f  __vaword) == (__
c330: 76 61 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31  va_offset3(slot1
c340: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b 73 69  ,slot2,slot3)+si
c350: 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29 2f 73  zeof(slot3)-1)/s
c360: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29  izeof(__vaword))
c370: 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 76   \.  ).#define v
c380: 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c  a_word_splittabl
c390: 65 5f 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  e_4(slot1,slot2,
c3a0: 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a  slot3,slot4)  \.
c3b0: 20 20 28 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31    ((__va_offset1
c3c0: 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f  (slot1)/sizeof(_
c3d0: 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76  _vaword) == (__v
c3e0: 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  a_offset1(slot1)
c3f0: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31  +sizeof(slot1)-1
c400: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
c410: 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76  d)) \.   && (__v
c420: 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c  a_offset2(slot1,
c430: 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f  slot2)/sizeof(__
c440: 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61  vaword) == (__va
c450: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73  _offset2(slot1,s
c460: 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot2)+sizeof(slo
c470: 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t2)-1)/sizeof(__
c480: 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26  vaword)) \.   &&
c490: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73   (__va_offset3(s
c4a0: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
c4b0: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
c4c0: 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73  d) == (__va_offs
c4d0: 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et3(slot1,slot2,
c4e0: 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c  slot3)+sizeof(sl
c4f0: 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot3)-1)/sizeof(_
c500: 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26  _vaword)) \.   &
c510: 26 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 34 28  & (__va_offset4(
c520: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74  slot1,slot2,slot
c530: 33 2c 73 6c 6f 74 34 29 2f 73 69 7a 65 6f 66 28  3,slot4)/sizeof(
c540: 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f  __vaword) == (__
c550: 76 61 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31  va_offset4(slot1
c560: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f  ,slot2,slot3,slo
c570: 74 34 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 34  t4)+sizeof(slot4
c580: 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61  )-1)/sizeof(__va
c590: 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65  word)) \.  ).#de
c5a0: 66 69 6e 65 20 5f 5f 76 61 5f 6f 66 66 73 65 74  fine __va_offset
c5b0: 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20 30 0a  1(slot1)  \.  0.
c5c0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 6f 66 66  #define __va_off
c5d0: 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set2(slot1,slot2
c5e0: 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66  )  \.  ((__va_of
c5f0: 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a  fset1(slot1)+siz
c600: 65 6f 66 28 73 6c 6f 74 31 29 2b 5f 5f 56 41 5f  eof(slot1)+__VA_
c610: 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 2d 31  alignof(slot2)-1
c620: 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f  ) & -(long)__VA_
c630: 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 29 0a  alignof(slot2)).
c640: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 6f 66 66  #define __va_off
c650: 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set3(slot1,slot2
c660: 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28 5f  ,slot3)  \.  ((_
c670: 5f 76 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74  _va_offset2(slot
c680: 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28  1,slot2)+sizeof(
c690: 73 6c 6f 74 32 29 2b 5f 5f 56 41 5f 61 6c 69 67  slot2)+__VA_alig
c6a0: 6e 6f 66 28 73 6c 6f 74 33 29 2d 31 29 20 26 20  nof(slot3)-1) & 
c6b0: 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f 61 6c 69 67  -(long)__VA_alig
c6c0: 6e 6f 66 28 73 6c 6f 74 33 29 29 0a 23 64 65 66  nof(slot3)).#def
c6d0: 69 6e 65 20 5f 5f 76 61 5f 6f 66 66 73 65 74 34  ine __va_offset4
c6e0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f  (slot1,slot2,slo
c6f0: 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a 20 20 28  t3,slot4)  \.  (
c700: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73 6c  (__va_offset3(sl
c710: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29  ot1,slot2,slot3)
c720: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2b 5f  +sizeof(slot3)+_
c730: 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _VA_alignof(slot
c740: 34 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f  4)-1) & -(long)_
c750: 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _VA_alignof(slot
c760: 34 29 29 0a 0a 0a 2f 2a 0a 20 2a 20 4d 69 73 63  4)).../*. * Misc
c770: 65 6c 6c 61 6e 65 6f 75 73 20 64 65 63 6c 61 72  ellaneous declar
c780: 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 23 69 66 64  ations.. */.#ifd
c790: 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 65  ef __cplusplus.e
c7a0: 78 74 65 72 6e 20 22 43 22 20 76 6f 69 64 20 5f  xtern "C" void _
c7b0: 5f 76 61 63 61 6c 6c 5f 72 20 28 29 3b 20 2f 2a  _vacall_r (); /*
c7c0: 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65   the return type
c7d0: 20 69 73 20 76 61 72 69 61 62 6c 65 2c 20 6e 6f   is variable, no
c7e0: 74 20 76 6f 69 64 21 20 2a 2f 0a 23 65 6c 73 65  t void! */.#else
c7f0: 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f 5f 76  .extern void __v
c800: 61 63 61 6c 6c 5f 72 20 28 29 3b 20 2f 2a 20 74  acall_r (); /* t
c810: 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 69  he return type i
c820: 73 20 76 61 72 69 61 62 6c 65 2c 20 6e 6f 74 20  s variable, not 
c830: 76 6f 69 64 21 20 2a 2f 0a 23 65 6e 64 69 66 0a  void! */.#endif.
c840: 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f 76 61 5f  extern int __va_
c850: 65 72 72 6f 72 31 20 28 65 6e 75 6d 20 5f 5f 56  error1 (enum __V
c860: 41 74 79 70 65 2c 20 65 6e 75 6d 20 5f 5f 56 41  Atype, enum __VA
c870: 74 79 70 65 29 3b 0a 65 78 74 65 72 6e 20 69 6e  type);.extern in
c880: 74 20 5f 5f 76 61 5f 65 72 72 6f 72 32 20 28 75  t __va_error2 (u
c890: 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b 0a 65 78  nsigned int);.ex
c8a0: 74 65 72 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75  tern void __stru
c8b0: 63 74 63 70 79 20 28 76 6f 69 64 2a 20 64 65 73  ctcpy (void* des
c8c0: 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 20 73  t, const void* s
c8d0: 72 63 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e  rc, unsigned lon
c8e0: 67 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64  g size, unsigned
c8f0: 20 6c 6f 6e 67 20 61 6c 69 67 6e 6d 65 6e 74 29   long alignment)
c900: 3b 0a 74 79 70 65 64 65 66 20 75 6e 69 6f 6e 20  ;.typedef union 
c910: 7b 20 5f 5f 76 61 77 6f 72 64 20 72 6f 6f 6d 5b  { __vaword room[
c920: 5f 5f 56 41 5f 41 4c 49 53 54 5f 57 4f 52 44 53  __VA_ALIST_WORDS
c930: 5d 3b 20 64 6f 75 62 6c 65 20 61 6c 69 67 6e 3b  ]; double align;
c940: 20 7d 20 5f 5f 76 61 5f 73 74 72 75 63 74 5f 62   } __va_struct_b
c950: 75 66 66 65 72 5f 74 3b 0a 65 78 74 65 72 6e 20  uffer_t;.extern 
c960: 5f 5f 76 61 5f 73 74 72 75 63 74 5f 62 75 66 66  __va_struct_buff
c970: 65 72 5f 74 20 5f 5f 76 61 5f 73 74 72 75 63 74  er_t __va_struct
c980: 5f 62 75 66 66 65 72 3b 0a 0a 0a 23 65 6e 64 69  _buffer;...#endi
c990: 66 20 2f 2a 20 5f 56 41 43 41 4c 4c 5f 52 5f 48  f /* _VACALL_R_H
c9a0: 20 2a 2f 0a                                       */.