Artifact cd99c6e42335808f80eea13bc7d56c1e7316f0f2:


0000: 23 69 66 6e 64 65 66 20 5f 56 41 43 41 4c 4c 5f  #ifndef _VACALL_
0010: 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  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 48 0a  efine _VACALL_H.
0050: 0a 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74  ./*. * Copyright
0060: 20 31 39 39 35 2d 32 30 30 34 20 42 72 75 6e 6f   1995-2004 Bruno
0070: 20 48 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f 40   Haible, <bruno@
0080: 63 6c 69 73 70 2e 6f 72 67 3e 0a 20 2a 0a 20 2a  clisp.org>. *. *
0090: 20 54 68 69 73 20 69 73 20 66 72 65 65 20 73 6f   This is free so
00a0: 66 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74  ftware distribut
00b0: 65 64 20 75 6e 64 65 72 20 74 68 65 20 47 4e 55  ed under the GNU
00c0: 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20   General Public 
00d0: 4c 69 63 65 6e 63 65 0a 20 2a 20 64 65 73 63 72  Licence. * descr
00e0: 69 62 65 64 20 69 6e 20 74 68 65 20 66 69 6c 65  ibed in the file
00f0: 20 43 4f 50 59 49 4e 47 2e 20 43 6f 6e 74 61 63   COPYING. Contac
0100: 74 20 74 68 65 20 61 75 74 68 6f 72 20 69 66 20  t the author if 
0110: 79 6f 75 20 64 6f 6e 27 74 20 68 61 76 65 20 74  you don't have t
0120: 68 69 73 0a 20 2a 20 6f 72 20 63 61 6e 27 74 20  his. * or can't 
0130: 6c 69 76 65 20 77 69 74 68 20 69 74 2e 20 54 68  live with it. Th
0140: 65 72 65 20 69 73 20 41 42 53 4f 4c 55 54 45 4c  ere is ABSOLUTEL
0150: 59 20 4e 4f 20 57 41 52 52 41 4e 54 59 2c 20 65  Y NO WARRANTY, e
0160: 78 70 6c 69 63 69 74 20 6f 72 20 69 6d 70 6c 69  xplicit or impli
0170: 65 64 2c 0a 20 2a 20 6f 6e 20 74 68 69 73 20 73  ed,. * on this s
0180: 6f 66 74 77 61 72 65 2e 0a 20 2a 2f 0a 0a 0a 2f  oftware.. */.../
0190: 2a 20 54 68 65 73 65 20 64 65 66 69 6e 69 74 69  * These definiti
01a0: 6f 6e 73 20 61 72 65 20 61 64 6a 75 73 74 65 64  ons are adjusted
01b0: 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 20   by `configure' 
01c0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 2a  automatically. *
01d0: 2f 0a 0a 2f 2a 20 43 50 55 20 2a 2f 0a 23 69 66  /../* CPU */.#if
01e0: 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23 64  ndef __i386__.#d
01f0: 65 66 69 6e 65 20 5f 5f 69 33 38 36 5f 5f 20 31  efine __i386__ 1
0200: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
0210: 5f 5f 6d 36 38 6b 5f 5f 0a 23 75 6e 64 65 66 20  __m68k__.#undef 
0220: 5f 5f 6d 36 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a  __m68k__.#endif.
0230: 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f  #ifndef __mips__
0240: 0a 23 75 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f  .#undef __mips__
0250: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
0260: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a 23 75 6e 64  __mipsn32__.#und
0270: 65 66 20 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a 23  ef __mipsn32__.#
0280: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
0290: 6d 69 70 73 36 34 5f 5f 0a 23 75 6e 64 65 66 20  mips64__.#undef 
02a0: 5f 5f 6d 69 70 73 36 34 5f 5f 0a 23 65 6e 64 69  __mips64__.#endi
02b0: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70 61 72  f.#ifndef __spar
02c0: 63 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 73 70 61  c__.#undef __spa
02d0: 72 63 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e  rc__.#endif.#ifn
02e0: 64 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f 0a  def __sparc64__.
02f0: 23 75 6e 64 65 66 20 5f 5f 73 70 61 72 63 36 34  #undef __sparc64
0300: 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  __.#endif.#ifnde
0310: 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 75 6e 64  f __alpha__.#und
0320: 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 0a 23 65 6e  ef __alpha__.#en
0330: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 68 70  dif.#ifndef __hp
0340: 70 61 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 68 70  pa__.#undef __hp
0350: 70 61 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e  pa__.#endif.#ifn
0360: 64 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23 75 6e 64  def __arm__.#und
0370: 65 66 20 5f 5f 61 72 6d 5f 5f 0a 23 65 6e 64 69  ef __arm__.#endi
0380: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 72 73 36 30  f.#ifndef __rs60
0390: 30 30 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 72 73  00__.#undef __rs
03a0: 36 30 30 30 5f 5f 0a 23 65 6e 64 69 66 0a 23 69  6000__.#endif.#i
03b0: 66 6e 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a 23  fndef __s390__.#
03c0: 75 6e 64 65 66 20 5f 5f 73 33 39 30 5f 5f 0a 23  undef __s390__.#
03d0: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
03e0: 6d 38 38 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f  m88k__.#undef __
03f0: 6d 38 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23 69  m88k__.#endif.#i
0400: 66 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78 5f 5f  fndef __convex__
0410: 0a 23 75 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78  .#undef __convex
0420: 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  __.#endif.#ifnde
0430: 66 20 5f 5f 69 61 36 34 5f 5f 0a 23 75 6e 64 65  f __ia64__.#unde
0440: 66 20 5f 5f 69 61 36 34 5f 5f 0a 23 65 6e 64 69  f __ia64__.#endi
0450: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 78 38 36 5f  f.#ifndef __x86_
0460: 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 78 38  64__.#undef __x8
0470: 36 5f 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 0a 2f  6_64__.#endif../
0480: 2a 20 43 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e  * Calling conven
0490: 74 69 6f 6e 20 2a 2f 0a 2f 2a 20 44 65 66 69 6e  tion */./* Defin
04a0: 65 20 69 66 20 75 73 69 6e 67 20 70 63 63 20 6e  e if using pcc n
04b0: 6f 6e 2d 72 65 65 6e 74 72 61 6e 74 20 73 74 72  on-reentrant str
04c0: 75 63 74 20 72 65 74 75 72 6e 20 63 6f 6e 76 65  uct return conve
04d0: 6e 74 69 6f 6e 20 2a 2f 0a 23 75 6e 64 65 66 20  ntion */.#undef 
04e0: 5f 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54  __PCC_STRUCT_RET
04f0: 55 52 4e 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65 20  URN__./* Define 
0500: 69 66 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 73  if small structs
0510: 20 61 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e   are returned in
0520: 20 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 64   registers */.#d
0530: 65 66 69 6e 65 20 5f 5f 53 4d 41 4c 4c 5f 53 54  efine __SMALL_ST
0540: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 20 31 0a  RUCT_RETURN__ 1.
0550: 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 66 6c 6f  /* Define if flo
0560: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65 73 75  ating-point resu
0570: 6c 74 73 20 61 72 65 20 72 65 74 75 72 6e 65 64  lts are returned
0580: 20 69 6e 20 74 68 65 20 69 6e 74 65 67 65 72 20   in the integer 
0590: 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 75 6e  registers */.#un
05a0: 64 65 66 20 5f 5f 49 52 45 47 5f 46 4c 4f 41 54  def __IREG_FLOAT
05b0: 5f 52 45 54 55 52 4e 5f 5f 0a 0a 2f 2a 20 43 4c  _RETURN__../* CL
05c0: 5f 4c 4f 4e 47 4c 4f 4e 47 20 2a 2f 0a 2f 2a 20  _LONGLONG */./* 
05d0: 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20 63  Define if your c
05e0: 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 73  ompiler supports
05f0: 20 74 68 65 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27   the `long long'
0600: 20 74 79 70 65 2e 20 2a 2f 0a 23 69 66 6e 64 65   type. */.#ifnde
0610: 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 0a  f HAVE_LONGLONG.
0620: 23 75 6e 64 65 66 20 48 41 56 45 5f 4c 4f 4e 47  #undef HAVE_LONG
0630: 4c 4f 4e 47 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20  LONG.#endif../* 
0640: 41 43 5f 43 5f 43 48 41 52 5f 55 4e 53 49 47 4e  AC_C_CHAR_UNSIGN
0650: 45 44 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f  ED */.#ifndef __
0660: 43 48 41 52 5f 55 4e 53 49 47 4e 45 44 5f 5f 0a  CHAR_UNSIGNED__.
0670: 23 75 6e 64 65 66 20 5f 5f 43 48 41 52 5f 55 4e  #undef __CHAR_UN
0680: 53 49 47 4e 45 44 5f 5f 0a 23 65 6e 64 69 66 0a  SIGNED__.#endif.
0690: 0a 2f 2a 20 45 6e 64 20 6f 66 20 64 65 66 69 6e  ./* End of defin
06a0: 69 74 69 6f 6e 73 20 61 64 6a 75 73 74 65 64 20  itions adjusted 
06b0: 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 2e 20  by `configure'. 
06c0: 2a 2f 0a 0a 0a 2f 2a 20 4d 61 78 20 23 20 77 6f  */.../* Max # wo
06d0: 72 64 73 20 69 6e 20 61 72 67 75 6d 65 6e 74 2d  rds in argument-
06e0: 6c 69 73 74 20 61 6e 64 20 74 65 6d 70 6f 72 61  list and tempora
06f0: 72 79 20 73 74 72 75 63 74 75 72 65 20 73 74 6f  ry structure sto
0700: 72 61 67 65 2e 0a 20 2a 2f 0a 23 69 66 6e 64 65  rage.. */.#ifnde
0710: 66 20 5f 5f 56 41 5f 41 4c 49 53 54 5f 57 4f 52  f __VA_ALIST_WOR
0720: 44 53 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f  DS.#define __VA_
0730: 41 4c 49 53 54 5f 57 4f 52 44 53 20 20 32 35 36  ALIST_WORDS  256
0740: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20  .#endif../* The 
0750: 60 73 69 67 6e 65 64 27 20 6b 65 79 77 6f 72 64  `signed' keyword
0760: 2e 0a 20 2a 2f 0a 23 69 66 20 21 64 65 66 69 6e  .. */.#if !defin
0770: 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20 26 26 20  ed(__STDC__) && 
0780: 21 64 65 66 69 6e 65 64 28 5f 5f 43 48 41 52 5f  !defined(__CHAR_
0790: 55 4e 53 49 47 4e 45 44 5f 5f 29 20 26 26 20 21  UNSIGNED__) && !
07a0: 64 65 66 69 6e 65 64 28 73 69 67 6e 65 64 29 0a  defined(signed).
07b0: 23 64 65 66 69 6e 65 20 73 69 67 6e 65 64 0a 23  #define signed.#
07c0: 65 6e 64 69 66 0a 0a 2f 2a 20 44 65 74 65 72 6d  endif../* Determ
07d0: 69 6e 65 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e  ine the alignmen
07e0: 74 20 6f 66 20 61 20 74 79 70 65 20 61 74 20 63  t of a type at c
07f0: 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f  ompile time.. */
0800: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47  .#if defined(__G
0810: 4e 55 43 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f  NUC__).#define _
0820: 5f 56 41 5f 61 6c 69 67 6e 6f 66 20 5f 5f 61 6c  _VA_alignof __al
0830: 69 67 6e 6f 66 5f 5f 0a 23 65 6c 73 65 0a 23 69  ignof__.#else.#i
0840: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
0850: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
0860: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64  _mipsn32__) || d
0870: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
0880: 5f 29 20 2f 2a 20 53 47 49 20 63 6f 6d 70 69 6c  _) /* SGI compil
0890: 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  er */.#define __
08a0: 56 41 5f 61 6c 69 67 6e 6f 66 20 5f 5f 62 75 69  VA_alignof __bui
08b0: 6c 74 69 6e 5f 61 6c 69 67 6e 6f 66 0a 23 65 6c  ltin_alignof.#el
08c0: 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f  se.#define __VA_
08d0: 6f 66 66 73 65 74 6f 66 28 74 79 70 65 2c 69 64  offsetof(type,id
08e0: 65 6e 74 29 20 20 28 28 75 6e 73 69 67 6e 65 64  ent)  ((unsigned
08f0: 20 6c 6f 6e 67 29 26 28 28 28 74 79 70 65 2a 29   long)&(((type*)
0900: 30 29 2d 3e 69 64 65 6e 74 29 29 0a 23 64 65 66  0)->ident)).#def
0910: 69 6e 65 20 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66  ine __VA_alignof
0920: 28 74 79 70 65 29 20 20 5f 5f 56 41 5f 6f 66 66  (type)  __VA_off
0930: 73 65 74 6f 66 28 73 74 72 75 63 74 20 7b 20 63  setof(struct { c
0940: 68 61 72 20 5f 5f 73 6c 6f 74 31 3b 20 74 79 70  har __slot1; typ
0950: 65 20 5f 5f 73 6c 6f 74 32 3b 20 7d 2c 20 5f 5f  e __slot2; }, __
0960: 73 6c 6f 74 32 29 0a 23 65 6e 64 69 66 0a 23 65  slot2).#endif.#e
0970: 6e 64 69 66 0a 0a 2f 2a 20 43 20 62 75 69 6c 74  ndif../* C built
0980: 69 6e 20 74 79 70 65 73 2e 0a 20 2a 2f 0a 23 69  in types.. */.#i
0990: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
09a0: 6e 33 32 5f 5f 29 0a 74 79 70 65 64 65 66 20 6c  n32__).typedef l
09b0: 6f 6e 67 20 6c 6f 6e 67 20 5f 5f 76 61 77 6f 72  ong long __vawor
09c0: 64 3b 0a 23 65 6c 73 65 0a 74 79 70 65 64 65 66  d;.#else.typedef
09d0: 20 6c 6f 6e 67 20 5f 5f 76 61 77 6f 72 64 3b 0a   long __vaword;.
09e0: 23 65 6e 64 69 66 0a 0a 65 6e 75 6d 20 5f 5f 56  #endif..enum __V
09f0: 41 74 79 70 65 0a 7b 0a 20 20 5f 5f 56 41 76 6f  Atype.{.  __VAvo
0a00: 69 64 2c 0a 20 20 5f 5f 56 41 63 68 61 72 2c 0a  id,.  __VAchar,.
0a10: 20 20 5f 5f 56 41 73 63 68 61 72 2c 0a 20 20 5f    __VAschar,.  _
0a20: 5f 56 41 75 63 68 61 72 2c 0a 20 20 5f 5f 56 41  _VAuchar,.  __VA
0a30: 73 68 6f 72 74 2c 0a 20 20 5f 5f 56 41 75 73 68  short,.  __VAush
0a40: 6f 72 74 2c 0a 20 20 5f 5f 56 41 69 6e 74 2c 0a  ort,.  __VAint,.
0a50: 20 20 5f 5f 56 41 75 69 6e 74 2c 0a 20 20 5f 5f    __VAuint,.  __
0a60: 56 41 6c 6f 6e 67 2c 0a 20 20 5f 5f 56 41 75 6c  VAlong,.  __VAul
0a70: 6f 6e 67 2c 0a 20 20 5f 5f 56 41 6c 6f 6e 67 6c  ong,.  __VAlongl
0a80: 6f 6e 67 2c 0a 20 20 5f 5f 56 41 75 6c 6f 6e 67  ong,.  __VAulong
0a90: 6c 6f 6e 67 2c 0a 20 20 5f 5f 56 41 66 6c 6f 61  long,.  __VAfloa
0aa0: 74 2c 0a 20 20 5f 5f 56 41 64 6f 75 62 6c 65 2c  t,.  __VAdouble,
0ab0: 0a 20 20 5f 5f 56 41 76 6f 69 64 70 2c 0a 20 20  .  __VAvoidp,.  
0ac0: 5f 5f 56 41 73 74 72 75 63 74 0a 7d 3b 0a 0a 65  __VAstruct.};..e
0ad0: 6e 75 6d 20 5f 5f 56 41 5f 61 6c 69 73 74 5f 66  num __VA_alist_f
0ae0: 6c 61 67 73 0a 7b 0a 0a 20 20 2f 2a 20 68 6f 77  lags.{..  /* how
0af0: 20 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63   to return struc
0b00: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 65 72 65  ts */.  /* There
0b10: 20 61 72 65 20 62 61 73 69 63 61 6c 6c 79 20 33   are basically 3
0b20: 20 77 61 79 73 20 74 6f 20 72 65 74 75 72 6e 20   ways to return 
0b30: 73 74 72 75 63 74 73 3a 0a 20 20 20 2a 20 61 2e  structs:.   * a.
0b40: 20 54 68 65 20 63 61 6c 6c 65 64 20 66 75 6e 63   The called func
0b50: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70  tion returns a p
0b60: 6f 69 6e 74 65 72 20 74 6f 20 73 74 61 74 69 63  ointer to static
0b70: 20 64 61 74 61 2e 20 4e 6f 74 20 72 65 65 6e 74   data. Not reent
0b80: 72 61 6e 74 2e 0a 20 20 20 2a 20 62 2e 20 54 68  rant..   * b. Th
0b90: 65 20 63 61 6c 6c 65 72 20 70 61 73 73 65 73 20  e caller passes 
0ba0: 74 68 65 20 72 65 74 75 72 6e 20 73 74 72 75 63  the return struc
0bb0: 74 75 72 65 20 61 64 64 72 65 73 73 20 69 6e 20  ture address in 
0bc0: 61 20 64 65 64 69 63 61 74 65 64 20 72 65 67 69  a dedicated regi
0bd0: 73 74 65 72 0a 20 20 20 2a 20 20 20 20 6f 72 20  ster.   *    or 
0be0: 61 73 20 61 20 66 69 72 73 74 20 28 6f 72 20 6c  as a first (or l
0bf0: 61 73 74 29 2c 20 69 6e 76 69 73 69 62 6c 65 20  ast), invisible 
0c00: 61 72 67 75 6d 65 6e 74 2e 20 54 68 65 20 63 61  argument. The ca
0c10: 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 73 74  lled function st
0c20: 6f 72 65 73 0a 20 20 20 2a 20 20 20 20 69 74 73  ores.   *    its
0c30: 20 72 65 73 75 6c 74 20 74 68 65 72 65 2e 0a 20   result there.. 
0c40: 20 20 2a 20 63 2e 20 4c 69 6b 65 20 62 2c 20 61    * c. Like b, a
0c50: 6e 64 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75  nd the called fu
0c60: 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 72 65 74 75  nction also retu
0c70: 72 6e 73 20 74 68 65 20 72 65 74 75 72 6e 20 73  rns the return s
0c80: 74 72 75 63 74 75 72 65 0a 20 20 20 2a 20 20 20  tructure.   *   
0c90: 20 61 64 64 72 65 73 73 20 69 6e 20 74 68 65 20   address in the 
0ca0: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 72 65 67  return value reg
0cb0: 69 73 74 65 72 2e 20 28 54 68 69 73 20 69 73 20  ister. (This is 
0cc0: 6e 6f 74 20 76 65 72 79 20 64 69 73 74 69 6e 67  not very disting
0cd0: 75 69 73 68 61 62 6c 65 0a 20 20 20 2a 20 20 20  uishable.   *   
0ce0: 20 66 72 6f 6d 20 62 2e 29 0a 20 20 20 2a 20 49   from b.).   * I
0cf0: 6e 64 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20  ndependently of 
0d00: 74 68 69 73 2c 0a 20 20 20 2a 20 72 2e 20 73 6d  this,.   * r. sm
0d10: 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 28  all structures (
0d20: 3c 3d 20 34 20 6f 72 20 3c 3d 20 38 20 62 79 74  <= 4 or <= 8 byt
0d30: 65 73 29 20 6d 61 79 20 62 65 20 72 65 74 75 72  es) may be retur
0d40: 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 75 72  ned in the retur
0d50: 6e 0a 20 20 20 2a 20 20 20 20 76 61 6c 75 65 20  n.   *    value 
0d60: 72 65 67 69 73 74 65 72 28 73 29 2c 20 6f 72 0a  register(s), or.
0d70: 20 20 20 2a 20 6d 2e 20 65 76 65 6e 20 73 6d 61     * m. even sma
0d80: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 61 72  ll structures ar
0d90: 65 20 70 61 73 73 65 64 20 69 6e 20 6d 65 6d 6f  e passed in memo
0da0: 72 79 2e 0a 20 20 20 2a 2f 0a 20 20 2f 2a 20 67  ry..   */.  /* g
0db0: 63 63 2d 32 2e 36 2e 33 20 65 6d 70 6c 6f 79 73  cc-2.6.3 employs
0dc0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
0dd0: 74 72 61 74 65 67 79 3a 0a 20 20 20 2a 20 20 20  trategy:.   *   
0de0: 2d 20 49 66 20 50 43 43 5f 53 54 41 54 49 43 5f  - If PCC_STATIC_
0df0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73  STRUCT_RETURN is
0e00: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
0e10: 6d 61 63 68 69 6e 65 20 64 65 73 63 72 69 70 74  machine descript
0e20: 69 6f 6e 0a 20 20 20 2a 20 20 20 20 20 69 74 20  ion.   *     it 
0e30: 75 73 65 73 20 6d 65 74 68 6f 64 20 61 2c 20 65  uses method a, e
0e40: 6c 73 65 20 6d 65 74 68 6f 64 20 63 2e 0a 20 20  lse method c..  
0e50: 20 2a 20 20 20 2d 20 49 66 20 66 6c 61 67 5f 70   *   - If flag_p
0e60: 63 63 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  cc_struct_return
0e70: 20 69 73 20 73 65 74 20 28 65 69 74 68 65 72 20   is set (either 
0e80: 62 79 20 2d 66 70 63 63 2d 73 74 72 75 63 74 2d  by -fpcc-struct-
0e90: 72 65 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20  return or if.   
0ea0: 2a 20 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43  *     DEFAULT_PC
0eb0: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
0ec0: 69 73 20 64 65 66 69 6e 65 64 20 74 6f 20 31 20  is defined to 1 
0ed0: 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64  in the machine d
0ee0: 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a  escription).   *
0ef0: 20 20 20 20 20 69 74 20 75 73 65 73 20 6d 65 74       it uses met
0f00: 68 6f 64 20 6d 2c 20 65 6c 73 65 20 28 65 69 74  hod m, else (eit
0f10: 68 65 72 20 62 79 20 2d 66 72 65 67 2d 73 74 72  her by -freg-str
0f20: 75 63 74 2d 72 65 74 75 72 6e 20 6f 72 20 69 66  uct-return or if
0f30: 0a 20 20 20 2a 20 20 20 20 20 44 45 46 41 55 4c  .   *     DEFAUL
0f40: 54 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54  T_PCC_STRUCT_RET
0f50: 55 52 4e 20 69 73 20 64 65 66 69 6e 65 64 20 74  URN is defined t
0f60: 6f 20 30 20 69 6e 20 74 68 65 20 6d 61 63 68 69  o 0 in the machi
0f70: 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a  ne description).
0f80: 20 20 20 2a 20 20 20 20 20 6d 65 74 68 6f 64 20     *     method 
0f90: 72 2e 0a 20 20 20 2a 2f 0a 20 20 5f 5f 56 41 5f  r..   */.  __VA_
0fa0: 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  PCC_STRUCT_RETUR
0fb0: 4e 09 3d 20 31 3c 3c 30 2c 09 2f 2a 20 61 3a 20  N.= 1<<0,./* a: 
0fc0: 6e 65 65 64 20 74 6f 20 63 6f 70 79 20 74 68 65  need to copy the
0fd0: 20 73 74 72 75 63 74 20 2a 2f 0a 20 20 5f 5f 56   struct */.  __V
0fe0: 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  A_SMALL_STRUCT_R
0ff0: 45 54 55 52 4e 09 3d 20 31 3c 3c 31 2c 09 2f 2a  ETURN.= 1<<1,./*
1000: 20 72 3a 20 73 70 65 63 69 61 6c 20 63 61 73 65   r: special case
1010: 20 66 6f 72 20 73 6d 61 6c 6c 20 73 74 72 75 63   for small struc
1020: 74 73 20 2a 2f 0a 20 20 5f 5f 56 41 5f 47 43 43  ts */.  __VA_GCC
1030: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
1040: 20 31 3c 3c 32 2c 09 2f 2a 20 63 6f 6e 73 69 64   1<<2,./* consid
1050: 65 72 20 38 20 62 79 74 65 20 73 74 72 75 63 74  er 8 byte struct
1060: 73 20 61 73 20 73 6d 61 6c 6c 20 2a 2f 0a 23 69  s as small */.#i
1070: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  f defined(__spar
1080: 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  c__) && !defined
1090: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 20 20  (__sparc64__).  
10a0: 5f 5f 56 41 5f 53 55 4e 43 43 5f 53 54 52 55 43  __VA_SUNCC_STRUC
10b0: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c  T_RETURN.= 1<<3,
10c0: 0a 20 20 5f 5f 56 41 5f 53 55 4e 50 52 4f 43 43  .  __VA_SUNPROCC
10d0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
10e0: 20 31 3c 3c 34 2c 0a 23 65 6c 73 65 0a 20 20 5f   1<<4,.#else.  _
10f0: 5f 56 41 5f 53 55 4e 43 43 5f 53 54 52 55 43 54  _VA_SUNCC_STRUCT
1100: 5f 52 45 54 55 52 4e 09 3d 20 30 2c 0a 20 20 5f  _RETURN.= 0,.  _
1110: 5f 56 41 5f 53 55 4e 50 52 4f 43 43 5f 53 54 52  _VA_SUNPROCC_STR
1120: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 30 2c 0a  UCT_RETURN.= 0,.
1130: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
1140: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 0a 20 20 5f  ed(__i386__).  _
1150: 5f 56 41 5f 4e 45 58 54 47 43 43 5f 53 54 52 55  _VA_NEXTGCC_STRU
1160: 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33  CT_RETURN.= 1<<3
1170: 2c 0a 20 20 5f 5f 56 41 5f 4d 53 56 43 5f 53 54  ,.  __VA_MSVC_ST
1180: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
1190: 3c 34 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  <4,.#endif.#if d
11a0: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29  efined(__hppa__)
11b0: 0a 20 20 5f 5f 56 41 5f 4f 4c 44 47 43 43 5f 53  .  __VA_OLDGCC_S
11c0: 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31  TRUCT_RETURN.= 1
11d0: 3c 3c 33 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a  <<3,.#endif.  /*
11e0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79   the default way
11f0: 20 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63   to return struc
1200: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20  ts */.  /* This 
1210: 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62  choice here is b
1220: 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75  ased on the assu
1230: 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  mption that the 
1240: 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65  function you are
1250: 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63  .   * going to c
1260: 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  all has been com
1270: 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73  piled with the s
1280: 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75  ame compiler you
1290: 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20   are using to.  
12a0: 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20   * include this 
12b0: 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f  file..   * If yo
12c0: 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66  u want to call f
12d0: 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e  unctions with an
12e0: 6f 74 68 65 72 20 73 74 72 75 63 74 20 72 65 74  other struct ret
12f0: 75 72 6e 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  urning conventio
1300: 6e 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64  n,.   * just  #d
1310: 65 66 69 6e 65 20 5f 5f 56 41 5f 53 54 52 55 43  efine __VA_STRUC
1320: 54 5f 52 45 54 55 52 4e 20 2e 2e 2e 0a 20 20 20  T_RETURN ....   
1330: 2a 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65  * before or afte
1340: 72 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 76 61  r #including <va
1350: 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23  call.h>..   */.#
1360: 69 66 6e 64 65 66 20 5f 5f 56 41 5f 53 54 52 55  ifndef __VA_STRU
1370: 43 54 5f 52 45 54 55 52 4e 0a 20 20 5f 5f 56 41  CT_RETURN.  __VA
1380: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09  _STRUCT_RETURN..
1390: 3d 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  =.#if defined(__
13a0: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66  sparc__) && !def
13b0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
13c0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e  ) && defined(sun
13d0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 53  ) && defined(__S
13e0: 55 4e 50 52 4f 5f 43 29 20 2f 2a 20 53 55 4e 57  UNPRO_C) /* SUNW
13f0: 73 70 72 6f 20 63 63 20 2a 2f 0a 09 09 09 09 20  spro cc */..... 
1400: 20 5f 5f 56 41 5f 53 55 4e 50 52 4f 43 43 5f 53   __VA_SUNPROCC_S
1410: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 0a 23 65  TRUCT_RETURN,.#e
1420: 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28  lse.#if defined(
1430: 5f 5f 50 43 43 5f 53 54 52 55 43 54 5f 52 45 54  __PCC_STRUCT_RET
1440: 55 52 4e 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65  URN__) /* define
1450: 64 20 74 68 72 6f 75 67 68 20 63 6f 6e 66 69 67  d through config
1460: 75 72 65 2c 20 73 65 65 20 61 62 6f 76 65 20 2a  ure, see above *
1470: 2f 0a 09 09 09 09 20 20 5f 5f 56 41 5f 50 43 43  /.....  __VA_PCC
1480: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c  _STRUCT_RETURN |
1490: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
14a0: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
14b0: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
14c0: 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e 29   && defined(sun)
14d0: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 5f   && !(defined(__
14e0: 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  STDC__) || defin
14f0: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 29 20 2f 2a  ed(__GNUC__)) /*
1500: 20 73 75 6e 20 63 63 20 2a 2f 0a 20 20 09 09 09   sun cc */.  ...
1510: 09 20 20 5f 5f 56 41 5f 53 55 4e 43 43 5f 53 54  .  __VA_SUNCC_ST
1520: 52 55 43 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c  RUCT_RETURN,.#el
1530: 73 65 0a 20 20 09 09 09 09 20 20 30 2c 0a 23 65  se.  ....  0,.#e
1540: 6e 64 69 66 0a 23 65 6c 73 65 0a 23 69 66 20 64  ndif.#else.#if d
1550: 65 66 69 6e 65 64 28 5f 5f 53 4d 41 4c 4c 5f 53  efined(__SMALL_S
1560: 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29 20  TRUCT_RETURN__) 
1570: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
1580: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
1590: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 2f  ed(__mips64__) /
15a0: 2a 20 64 65 66 69 6e 65 64 20 74 68 72 6f 75 67  * defined throug
15b0: 68 20 63 6f 6e 66 69 67 75 72 65 2c 20 73 65 65  h configure, see
15c0: 20 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20   above */.....  
15d0: 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __VA_SMALL_STRUC
15e0: 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69  T_RETURN |.#endi
15f0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
1600: 47 4e 55 43 5f 5f 29 0a 09 09 09 09 20 20 5f 5f  GNUC__).....  __
1610: 56 41 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45  VA_GCC_STRUCT_RE
1620: 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69  TURN |.#endif.#i
1630: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
1640: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 4e  __) && defined(N
1650: 65 58 54 29 20 26 26 20 64 65 66 69 6e 65 64 28  eXT) && defined(
1660: 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20 4e 65 58  __GNUC__) /* NeX
1670: 54 20 67 63 63 2d 32 2e 35 2e 38 20 2a 2f 0a 09  T gcc-2.5.8 */..
1680: 09 09 09 20 20 5f 5f 56 41 5f 4e 45 58 54 47 43  ...  __VA_NEXTGC
1690: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
16a0: 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  |.#endif.#if def
16b0: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26  ined(__i386__) &
16c0: 26 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56  & defined(_MSC_V
16d0: 45 52 29 20 2f 2a 20 4d 53 56 43 20 34 2e 30 20  ER) /* MSVC 4.0 
16e0: 2a 2f 0a 09 09 09 09 20 20 5f 5f 56 41 5f 4d 53  */.....  __VA_MS
16f0: 56 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  VC_STRUCT_RETURN
1700: 20 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65   |.#endif.#if de
1710: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
1720: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55  && defined(__GNU
1730: 43 5f 5f 29 20 26 26 20 28 5f 5f 47 4e 55 43 5f  C__) && (__GNUC_
1740: 5f 20 3c 20 33 29 20 26 26 20 28 5f 5f 47 4e 55  _ < 3) && (__GNU
1750: 43 5f 4d 49 4e 4f 52 5f 5f 20 3c 20 37 29 0a 09  C_MINOR__ < 7)..
1760: 09 09 09 20 20 5f 5f 56 41 5f 4f 4c 44 47 43 43  ...  __VA_OLDGCC
1770: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c  _STRUCT_RETURN |
1780: 0a 23 65 6e 64 69 66 0a 20 20 09 09 09 09 20 20  .#endif.  ....  
1790: 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  0,.#endif.#endif
17a0: 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f  .#endif..  /* ho
17b0: 77 20 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f 61  w to return floa
17c0: 74 73 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  ts */.#if define
17d0: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28  d(__m68k__) || (
17e0: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
17f0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
1800: 5f 73 70 61 72 63 36 34 5f 5f 29 29 0a 20 20 5f  _sparc64__)).  _
1810: 5f 56 41 5f 53 55 4e 43 43 5f 46 4c 4f 41 54 5f  _VA_SUNCC_FLOAT_
1820: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 35 2c 0a 23  RETURN.= 1<<5,.#
1830: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
1840: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 0a 20 20 5f 5f  d(__m68k__).  __
1850: 56 41 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52 45  VA_FREG_FLOAT_RE
1860: 54 55 52 4e 09 3d 20 31 3c 3c 36 2c 0a 23 65 6e  TURN.= 1<<6,.#en
1870: 64 69 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66  dif.  /* the def
1880: 61 75 6c 74 20 77 61 79 20 74 6f 20 72 65 74 75  ault way to retu
1890: 72 6e 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f  rn floats */.  /
18a0: 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68 65  * This choice he
18b0: 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74  re is based on t
18c0: 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68  he assumption th
18d0: 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  at the function 
18e0: 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f 69  you are.   * goi
18f0: 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20 62  ng to call has b
1900: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
1910: 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70 69  h the same compi
1920: 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69 6e  ler you are usin
1930: 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64  g to.   * includ
1940: 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 20  e this file..   
1950: 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f  * If you want to
1960: 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20   call functions 
1970: 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66 6c 6f  with another flo
1980: 61 74 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6e  at returning con
1990: 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75  vention,.   * ju
19a0: 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 56 41  st  #define __VA
19b0: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 20 2e 2e  _FLOAT_RETURN ..
19c0: 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72  ..   * before or
19d0: 20 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e   after #includin
19e0: 67 20 3c 76 61 63 61 6c 6c 2e 68 3e 2e 0a 20 20  g <vacall.h>..  
19f0: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41   */.#ifndef __VA
1a00: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 0a 23 69  _FLOAT_RETURN.#i
1a10: 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  f (defined(__m68
1a20: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  k__) || (defined
1a30: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
1a40: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
1a50: 34 5f 5f 29 29 29 20 26 26 20 21 64 65 66 69 6e  4__))) && !defin
1a60: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20  ed(__GNUC__) && 
1a70: 64 65 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20  defined(sun) && 
1a80: 21 64 65 66 69 6e 65 64 28 5f 5f 53 55 4e 50 52  !defined(__SUNPR
1a90: 4f 5f 43 29 20 20 2f 2a 20 73 75 6e 20 63 63 20  O_C)  /* sun cc 
1aa0: 2a 2f 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  */.  __VA_FLOAT_
1ab0: 52 45 54 55 52 4e 09 09 3d 20 5f 5f 56 41 5f 53  RETURN..= __VA_S
1ac0: 55 4e 43 43 5f 46 4c 4f 41 54 5f 52 45 54 55 52  UNCC_FLOAT_RETUR
1ad0: 4e 2c 0a 23 65 6c 69 66 20 28 64 65 66 69 6e 65  N,.#elif (define
1ae0: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 26 26 20 21  d(__m68k__) && !
1af0: 64 65 66 69 6e 65 64 28 5f 5f 49 52 45 47 5f 46  defined(__IREG_F
1b00: 4c 4f 41 54 5f 52 45 54 55 52 4e 5f 5f 29 29 0a  LOAT_RETURN__)).
1b10: 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54    __VA_FLOAT_RET
1b20: 55 52 4e 09 09 3d 20 5f 5f 56 41 5f 46 52 45 47  URN..= __VA_FREG
1b30: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 2c 0a 23  _FLOAT_RETURN,.#
1b40: 65 6c 73 65 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41  else.  __VA_FLOA
1b50: 54 5f 52 45 54 55 52 4e 09 09 3d 20 30 2c 0a 23  T_RETURN..= 0,.#
1b60: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20  endif.#endif..  
1b70: 2f 2a 20 68 6f 77 20 74 6f 20 70 61 73 73 20 73  /* how to pass s
1b80: 74 72 75 63 74 73 20 2a 2f 0a 23 69 66 20 64 65  tructs */.#if de
1b90: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
1ba0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
1bb0: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
1bc0: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20  ed(__mips64__). 
1bd0: 20 5f 5f 56 41 5f 53 47 49 43 43 5f 53 54 52 55   __VA_SGICC_STRU
1be0: 43 54 5f 41 52 47 53 09 3d 20 31 3c 3c 37 2c 0a  CT_ARGS.= 1<<7,.
1bf0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
1c00: 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 20  ed(__rs6000__). 
1c10: 20 5f 5f 56 41 5f 41 49 58 43 43 5f 53 54 52 55   __VA_AIXCC_STRU
1c20: 43 54 5f 41 52 47 53 09 3d 20 31 3c 3c 37 2c 0a  CT_ARGS.= 1<<7,.
1c30: 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 65 20  #endif.  /* the 
1c40: 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20 70  default way to p
1c50: 61 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20  ass floats */.  
1c60: 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68  /* This choice h
1c70: 65 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20  ere is based on 
1c80: 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74  the assumption t
1c90: 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  hat the function
1ca0: 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f   you are.   * go
1cb0: 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20  ing to call has 
1cc0: 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  been compiled wi
1cd0: 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70  th the same comp
1ce0: 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69  iler you are usi
1cf0: 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75  ng to.   * inclu
1d00: 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20  de this file..  
1d10: 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74   * If you want t
1d20: 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73  o call functions
1d30: 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66 6c   with another fl
1d40: 6f 61 74 20 70 61 73 73 69 6e 67 20 63 6f 6e 76  oat passing conv
1d50: 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73  ention,.   * jus
1d60: 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f  t  #define __VA_
1d70: 53 54 52 55 43 54 5f 41 52 47 53 20 2e 2e 2e 0a  STRUCT_ARGS ....
1d80: 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20 61     * before or a
1d90: 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67 20  fter #including 
1da0: 3c 76 61 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a  <vacall.h>..   *
1db0: 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41 5f 53  /.#ifndef __VA_S
1dc0: 54 52 55 43 54 5f 41 52 47 53 0a 23 69 66 20 28  TRUCT_ARGS.#if (
1dd0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f  defined(__mips__
1de0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
1df0: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
1e00: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
1e10: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
1e20: 47 4e 55 43 5f 5f 29 20 2f 2a 20 53 47 49 20 6d  GNUC__) /* SGI m
1e30: 69 70 73 20 63 63 20 2a 2f 0a 20 20 5f 5f 56 41  ips cc */.  __VA
1e40: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20  _STRUCT_ARGS..= 
1e50: 5f 5f 56 41 5f 53 47 49 43 43 5f 53 54 52 55 43  __VA_SGICC_STRUC
1e60: 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 23 69  T_ARGS,.#else.#i
1e70: 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30  f defined(__rs60
1e80: 30 30 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  00__) && defined
1e90: 28 5f 41 49 58 29 20 26 26 20 21 64 65 66 69 6e  (_AIX) && !defin
1ea0: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a 20  ed(__GNUC__) /* 
1eb0: 41 49 58 20 63 63 2c 20 78 6c 63 20 2a 2f 0a 20  AIX cc, xlc */. 
1ec0: 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 41 52 47   __VA_STRUCT_ARG
1ed0: 53 09 09 3d 20 5f 5f 56 41 5f 41 49 58 43 43 5f  S..= __VA_AIXCC_
1ee0: 53 54 52 55 43 54 5f 41 52 47 53 2c 0a 23 65 6c  STRUCT_ARGS,.#el
1ef0: 73 65 0a 20 20 5f 5f 56 41 5f 53 54 52 55 43 54  se.  __VA_STRUCT
1f00: 5f 41 52 47 53 09 09 3d 20 30 2c 0a 23 65 6e 64  _ARGS..= 0,.#end
1f10: 69 66 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  if.#endif.#endif
1f20: 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61  ..  /* how to pa
1f30: 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f  ss floats */.  /
1f40: 2a 20 41 4e 53 49 20 43 20 63 6f 6d 70 69 6c 65  * ANSI C compile
1f50: 72 73 20 61 6e 64 20 47 4e 55 20 67 63 63 20 70  rs and GNU gcc p
1f60: 61 73 73 20 66 6c 6f 61 74 73 20 61 73 20 66 6c  ass floats as fl
1f70: 6f 61 74 73 2e 0a 20 20 20 2a 20 4b 26 52 20 43  oats..   * K&R C
1f80: 20 63 6f 6d 70 69 6c 65 72 73 20 70 61 73 73 20   compilers pass 
1f90: 66 6c 6f 61 74 73 20 61 73 20 64 6f 75 62 6c 65  floats as double
1fa0: 73 2e 0a 20 20 20 2a 20 28 45 78 63 65 70 74 20  s..   * (Except 
1fb0: 73 6f 6d 65 20 63 6f 6d 70 69 6c 65 72 73 20 6c  some compilers l
1fc0: 69 6b 65 20 53 47 49 20 4d 49 50 53 20 22 63 63  ike SGI MIPS "cc
1fd0: 22 20 61 6e 64 20 22 63 63 20 2d 63 63 6b 72 22  " and "cc -cckr"
1fe0: 20 69 66 20 61 20 70 72 6f 74 6f 74 79 70 65 20   if a prototype 
1ff0: 69 73 0a 20 20 20 2a 20 6b 6e 6f 77 6e 20 66 6f  is.   * known fo
2000: 72 20 74 68 65 20 63 61 6c 6c 65 64 20 66 75 6e  r the called fun
2010: 63 74 69 6f 6e 73 2e 20 42 75 74 20 74 6f 20 63  ctions. But to c
2020: 6f 6d 70 69 6c 65 20 61 20 70 72 6f 67 72 61 6d  ompile a program
2030: 20 77 69 74 68 20 70 72 6f 74 6f 74 79 70 65 73   with prototypes
2040: 2c 0a 20 20 20 2a 20 22 63 63 20 2d 61 6e 73 69  ,.   * "cc -ansi
2050: 22 20 69 73 20 62 65 74 74 65 72 20 61 6e 79 77  " is better anyw
2060: 61 79 2e 0a 20 20 20 2a 2f 0a 20 20 5f 5f 56 41  ay..   */.  __VA
2070: 5f 41 4e 53 49 5f 46 4c 4f 41 54 5f 41 52 47 53  _ANSI_FLOAT_ARGS
2080: 09 09 3d 20 30 2c 20 20 20 20 2f 2a 20 70 61 73  ..= 0,    /* pas
2090: 73 20 66 6c 6f 61 74 73 20 61 73 20 66 6c 6f 61  s floats as floa
20a0: 74 73 20 2a 2f 0a 20 20 5f 5f 56 41 5f 54 52 41  ts */.  __VA_TRA
20b0: 44 49 54 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41  DITIONAL_FLOAT_A
20c0: 52 47 53 09 3d 20 31 3c 3c 38 2c 20 2f 2a 20 70  RGS.= 1<<8, /* p
20d0: 61 73 73 20 66 6c 6f 61 74 73 20 61 73 20 64 6f  ass floats as do
20e0: 75 62 6c 65 73 20 2a 2f 0a 20 20 2f 2a 20 74 68  ubles */.  /* th
20f0: 65 20 64 65 66 61 75 6c 74 20 77 61 79 20 74 6f  e default way to
2100: 20 70 61 73 73 20 66 6c 6f 61 74 73 20 2a 2f 0a   pass floats */.
2110: 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65    /* This choice
2120: 20 68 65 72 65 20 69 73 20 62 61 73 65 64 20 6f   here is based o
2130: 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e  n the assumption
2140: 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69   that the functi
2150: 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20  on you are.   * 
2160: 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61  going to call ha
2170: 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20  s been compiled 
2180: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f  with the same co
2190: 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75  mpiler you are u
21a0: 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63  sing to.   * inc
21b0: 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a  lude this file..
21c0: 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74     * If you want
21d0: 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f   to call functio
21e0: 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20  ns with another 
21f0: 66 6c 6f 61 74 20 70 61 73 73 69 6e 67 20 63 6f  float passing co
2200: 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a  nvention,.   * j
2210: 75 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 56  ust  #define __V
2220: 41 5f 46 4c 4f 41 54 5f 41 52 47 53 20 2e 2e 2e  A_FLOAT_ARGS ...
2230: 0a 20 20 20 2a 20 62 65 66 6f 72 65 20 6f 72 20  .   * before or 
2240: 61 66 74 65 72 20 23 69 6e 63 6c 75 64 69 6e 67  after #including
2250: 20 3c 76 61 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20   <vacall.h>..   
2260: 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41 5f  */.#ifndef __VA_
2270: 46 4c 4f 41 54 5f 41 52 47 53 0a 23 69 66 20 64  FLOAT_ARGS.#if d
2280: 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29  efined(__STDC__)
2290: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e   || defined(__GN
22a0: 55 43 5f 5f 29 20 2f 2a 20 77 68 61 74 20 61 62  UC__) /* what ab
22b0: 6f 75 74 20 68 70 70 61 20 22 63 63 20 2d 41 61  out hppa "cc -Aa
22c0: 22 20 3f 3f 20 2a 2f 0a 20 20 5f 5f 56 41 5f 46  " ?? */.  __VA_F
22d0: 4c 4f 41 54 5f 41 52 47 53 09 09 3d 20 5f 5f 56  LOAT_ARGS..= __V
22e0: 41 5f 41 4e 53 49 5f 46 4c 4f 41 54 5f 41 52 47  A_ANSI_FLOAT_ARG
22f0: 53 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 56 41 5f  S,.#else.  __VA_
2300: 46 4c 4f 41 54 5f 41 52 47 53 09 09 3d 20 5f 5f  FLOAT_ARGS..= __
2310: 56 41 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 46  VA_TRADITIONAL_F
2320: 4c 4f 41 54 5f 41 52 47 53 2c 0a 23 65 6e 64 69  LOAT_ARGS,.#endi
2330: 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68  f.#endif..  /* h
2340: 6f 77 20 74 6f 20 70 61 73 73 20 61 6e 64 20 72  ow to pass and r
2350: 65 74 75 72 6e 20 73 6d 61 6c 6c 20 69 6e 74 65  eturn small inte
2360: 67 65 72 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f  ger arguments */
2370: 0a 20 20 5f 5f 56 41 5f 41 4e 53 49 5f 49 4e 54  .  __VA_ANSI_INT
2380: 45 47 45 52 53 09 09 3d 20 30 2c 20 2f 2a 20 6e  EGERS..= 0, /* n
2390: 6f 20 70 72 6f 6d 6f 74 69 6f 6e 73 20 2a 2f 0a  o promotions */.
23a0: 20 20 5f 5f 56 41 5f 54 52 41 44 49 54 49 4f 4e    __VA_TRADITION
23b0: 41 4c 5f 49 4e 54 45 47 45 52 53 09 3d 20 30 2c  AL_INTEGERS.= 0,
23c0: 20 2f 2a 20 70 72 6f 6d 6f 74 65 20 5b 75 5d 63   /* promote [u]c
23d0: 68 61 72 2c 20 5b 75 5d 73 68 6f 72 74 20 74 6f  har, [u]short to
23e0: 20 5b 75 5d 69 6e 74 20 2a 2f 0a 20 20 2f 2a 20   [u]int */.  /* 
23f0: 46 6f 72 74 75 6e 61 74 65 6c 79 20 74 68 65 73  Fortunately thes
2400: 65 20 74 77 6f 20 6d 65 74 68 6f 64 73 20 61 72  e two methods ar
2410: 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 4f 75  e compatible. Ou
2420: 72 20 6d 61 63 72 6f 73 20 77 6f 72 6b 20 77 69  r macros work wi
2430: 74 68 20 62 6f 74 68 2e 20 2a 2f 0a 20 20 2f 2a  th both. */.  /*
2440: 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79   the default way
2450: 20 74 6f 20 70 61 73 73 20 61 6e 64 20 72 65 74   to pass and ret
2460: 75 72 6e 20 73 6d 61 6c 6c 20 69 6e 74 65 67 65  urn small intege
2470: 72 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f 0a 20  r arguments */. 
2480: 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20   /* This choice 
2490: 68 65 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e  here is based on
24a0: 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20   the assumption 
24b0: 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f  that the functio
24c0: 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67  n you are.   * g
24d0: 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73  oing to call has
24e0: 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77   been compiled w
24f0: 69 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d  ith the same com
2500: 70 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73  piler you are us
2510: 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c  ing to.   * incl
2520: 75 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20  ude this file.. 
2530: 20 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20    * If you want 
2540: 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e  to call function
2550: 73 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20 66  s with another f
2560: 6c 6f 61 74 20 70 61 73 73 69 6e 67 20 63 6f 6e  loat passing con
2570: 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20 6a 75  vention,.   * ju
2580: 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f 56 41  st  #define __VA
2590: 5f 49 4e 54 45 47 45 52 53 20 2e 2e 2e 0a 20 20  _INTEGERS ....  
25a0: 20 2a 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74   * before or aft
25b0: 65 72 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 76  er #including <v
25c0: 61 63 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a  acall.h>..   */.
25d0: 23 69 66 6e 64 65 66 20 5f 5f 56 41 5f 49 4e 54  #ifndef __VA_INT
25e0: 45 47 45 52 53 0a 23 69 66 20 64 65 66 69 6e 65  EGERS.#if define
25f0: 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64  d(__STDC__) || d
2600: 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29  efined(__GNUC__)
2610: 0a 20 20 5f 5f 56 41 5f 49 4e 54 45 47 45 52 53  .  __VA_INTEGERS
2620: 09 09 09 3d 20 5f 5f 56 41 5f 41 4e 53 49 5f 49  ...= __VA_ANSI_I
2630: 4e 54 45 47 45 52 53 2c 0a 23 65 6c 73 65 0a 20  NTEGERS,.#else. 
2640: 20 5f 5f 56 41 5f 49 4e 54 45 47 45 52 53 09 09   __VA_INTEGERS..
2650: 09 3d 20 5f 5f 56 41 5f 54 52 41 44 49 54 49 4f  .= __VA_TRADITIO
2660: 4e 41 4c 5f 49 4e 54 45 47 45 52 53 2c 0a 23 65  NAL_INTEGERS,.#e
2670: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f  ndif.#endif..  /
2680: 2a 20 73 74 61 63 6b 20 63 6c 65 61 6e 75 70 20  * stack cleanup 
2690: 70 6f 6c 69 63 79 20 2a 2f 0a 20 20 5f 5f 56 41  policy */.  __VA
26a0: 5f 43 44 45 43 4c 5f 43 4c 45 41 4e 55 50 09 09  _CDECL_CLEANUP..
26b0: 3d 20 30 2c 20 2f 2a 20 63 61 6c 6c 65 72 20 70  = 0, /* caller p
26c0: 6f 70 73 20 61 72 67 73 20 61 66 74 65 72 20 72  ops args after r
26d0: 65 74 75 72 6e 20 2a 2f 0a 20 20 5f 5f 56 41 5f  eturn */.  __VA_
26e0: 53 54 44 43 41 4c 4c 5f 43 4c 45 41 4e 55 50 09  STDCALL_CLEANUP.
26f0: 09 3d 20 31 3c 3c 39 2c 20 2f 2a 20 63 61 6c 6c  .= 1<<9, /* call
2700: 65 65 20 70 6f 70 73 20 61 72 67 73 20 62 65 66  ee pops args bef
2710: 6f 72 65 20 72 65 74 75 72 6e 20 2a 2f 0a 09 09  ore return */...
2720: 09 09 20 20 20 20 20 2f 2a 20 63 75 72 72 65 6e  ..     /* curren
2730: 74 6c 79 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  tly only support
2740: 65 64 20 6f 6e 20 5f 5f 69 33 38 36 5f 5f 20 2a  ed on __i386__ *
2750: 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41 5f 43  /.#ifndef __VA_C
2760: 4c 45 41 4e 55 50 0a 20 20 5f 5f 56 41 5f 43 4c  LEANUP.  __VA_CL
2770: 45 41 4e 55 50 09 09 09 3d 20 5f 5f 56 41 5f 43  EANUP...= __VA_C
2780: 44 45 43 4c 5f 43 4c 45 41 4e 55 50 2c 0a 23 65  DECL_CLEANUP,.#e
2790: 6e 64 69 66 0a 0a 20 20 2f 2a 20 54 68 65 73 65  ndif..  /* These
27a0: 20 61 72 65 20 66 6f 72 20 69 6e 74 65 72 6e 61   are for interna
27b0: 6c 20 75 73 65 20 6f 6e 6c 79 20 2a 2f 0a 23 69  l use only */.#i
27c0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
27d0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
27e0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m68k__) || defi
27f0: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
2800: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
2810: 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ps64__) || defin
2820: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20  ed(__sparc64__) 
2830: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70  || defined(__alp
2840: 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ha__) || defined
2850: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66  (__arm__) || def
2860: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29  ined(__rs6000__)
2870: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f   || defined(__co
2880: 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  nvex__) || defin
2890: 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20  ed(__ia64__) || 
28a0: 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34  defined(__x86_64
28b0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
28c0: 5f 73 33 39 30 5f 5f 29 0a 20 20 5f 5f 56 41 5f  _s390__).  __VA_
28d0: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
28e0: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 31 30 2c 0a  RETURN.= 1<<10,.
28f0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
2900: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20  ed(__mips__) && 
2910: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e  !defined(__mipsn
2920: 33 32 5f 5f 29 0a 20 20 5f 5f 56 41 5f 46 4c 4f  32__).  __VA_FLO
2930: 41 54 5f 31 09 09 09 3d 20 31 3c 3c 31 31 2c 0a  AT_1...= 1<<11,.
2940: 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 32 09 09    __VA_FLOAT_2..
2950: 09 3d 20 31 3c 3c 31 32 2c 0a 23 65 6e 64 69 66  .= 1<<12,.#endif
2960: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
2970: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
2980: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
2990: 0a 20 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  .  __VA_REGISTER
29a0: 5f 46 4c 4f 41 54 53 54 52 55 43 54 5f 52 45 54  _FLOATSTRUCT_RET
29b0: 55 52 4e 09 3d 20 31 3c 3c 31 33 2c 0a 20 20 5f  URN.= 1<<13,.  _
29c0: 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 44 4f 55  _VA_REGISTER_DOU
29d0: 42 4c 45 53 54 52 55 43 54 5f 52 45 54 55 52 4e  BLESTRUCT_RETURN
29e0: 09 3d 20 31 3c 3c 31 34 2c 0a 23 65 6e 64 69 66  .= 1<<14,.#endif
29f0: 0a 0a 20 20 5f 5f 56 41 5f 66 6c 61 67 5f 66 6f  ..  __VA_flag_fo
2a00: 72 5f 62 72 6f 6b 65 6e 5f 63 6f 6d 70 69 6c 65  r_broken_compile
2a10: 72 73 5f 74 68 61 74 5f 64 6f 6e 74 5f 6c 69 6b  rs_that_dont_lik
2a20: 65 5f 74 72 61 69 6c 69 6e 67 5f 63 6f 6d 6d 61  e_trailing_comma
2a30: 73 0a 7d 3b 0a 0a 2f 2a 0a 20 2a 20 44 65 66 69  s.};../*. * Defi
2a40: 6e 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 60 76  nition of the `v
2a50: 61 5f 61 6c 69 73 74 27 20 74 79 70 65 2e 0a 20  a_alist' type.. 
2a60: 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
2a70: 74 0a 7b 0a 20 20 2f 2a 20 73 6f 6d 65 20 76 61  t.{.  /* some va
2a80: 5f 2e 2e 2e 20 6d 61 63 72 6f 73 20 6e 65 65 64  _... macros need
2a90: 20 74 68 65 73 65 20 66 6c 61 67 73 20 2a 2f 0a   these flags */.
2aa0: 20 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 20    int           
2ab0: 20 66 6c 61 67 73 3b 0a 20 20 2f 2a 20 63 75 72   flags;.  /* cur
2ac0: 72 65 6e 74 20 70 6f 69 6e 74 65 72 20 69 6e 74  rent pointer int
2ad0: 6f 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 61  o the argument a
2ae0: 72 72 61 79 20 2a 2f 0a 20 20 75 6e 73 69 67 6e  rray */.  unsign
2af0: 65 64 20 6c 6f 6e 67 20 20 61 70 74 72 3b 0a 20  ed long  aptr;. 
2b00: 20 2f 2a 20 73 74 72 75 63 74 75 72 65 20 72 65   /* structure re
2b10: 74 75 72 6e 20 70 6f 69 6e 74 65 72 2c 20 72 65  turn pointer, re
2b20: 74 75 72 6e 20 74 79 70 65 2c 20 72 65 74 75 72  turn type, retur
2b30: 6e 20 74 79 70 65 20 73 69 7a 65 20 2a 2f 0a 20  n type size */. 
2b40: 20 76 6f 69 64 2a 20 20 20 20 20 20 20 20 20 20   void*          
2b50: 72 61 64 64 72 3b 0a 20 20 65 6e 75 6d 20 5f 5f  raddr;.  enum __
2b60: 56 41 74 79 70 65 20 20 72 74 79 70 65 3b 0a 20  VAtype  rtype;. 
2b70: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20   unsigned long  
2b80: 72 73 69 7a 65 3b 0a 23 69 66 20 64 65 66 69 6e  rsize;.#if defin
2b90: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
2ba0: 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30  (defined(__rs600
2bb0: 30 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  0__) && defined(
2bc0: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
2bd0: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
2be0: 0a 20 20 2f 2a 20 46 69 6c 6c 65 72 20 77 6f 72  .  /* Filler wor
2bf0: 64 2c 20 6e 65 65 64 65 64 20 69 66 20 74 68 65  d, needed if the
2c00: 20 6e 75 6d 62 65 72 73 20 6f 66 20 77 6f 72 64   numbers of word
2c10: 73 20 75 70 20 74 6f 20 6e 6f 77 20 69 6e 20 74  s up to now in t
2c20: 68 69 73 20 73 74 72 75 63 74 75 72 65 20 2a 2f  his structure */
2c30: 0a 20 20 2f 2a 20 69 73 20 6f 64 64 20 28 62 65  .  /* is odd (be
2c40: 63 61 75 73 65 20 6f 6e 20 4d 53 56 43 2c 20 61  cause on MSVC, a
2c50: 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29 20 3d  lignof(double) =
2c60: 20 38 2c 20 6e 6f 72 6d 61 6c 6c 79 20 3d 20 34   8, normally = 4
2c70: 3b 20 73 69 6d 69 6c 61 72 6c 79 2c 20 20 2a 2f  ; similarly,  */
2c80: 0a 20 20 2f 2a 20 6f 6e 20 4d 61 63 4f 53 20 58  .  /* on MacOS X
2c90: 2c 20 74 68 65 20 41 70 70 6c 65 20 63 6f 6d 70  , the Apple comp
2ca0: 69 6c 65 72 20 68 61 73 20 61 6c 69 67 6e 6f 66  iler has alignof
2cb0: 28 64 6f 75 62 6c 65 29 20 3d 20 38 20 77 68 65  (double) = 8 whe
2cc0: 72 65 61 73 20 74 68 65 20 20 20 20 20 20 2a 2f  reas the      */
2cd0: 0a 20 20 2f 2a 20 73 74 61 6e 64 61 72 64 20 47  .  /* standard G
2ce0: 43 43 20 68 61 73 20 61 6c 69 67 6e 6f 66 28 64  CC has alignof(d
2cf0: 6f 75 62 6c 65 29 20 3d 20 34 2e 20 20 20 20 20  ouble) = 4.     
2d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f                */
2d20: 0a 20 20 5f 5f 76 61 77 6f 72 64 20 20 20 20 20  .  __vaword     
2d30: 20 20 66 69 6c 6c 65 72 31 3b 0a 23 65 6e 64 69    filler1;.#endi
2d40: 66 0a 20 20 2f 2a 20 74 65 6d 70 6f 72 61 72 79  f.  /* temporary
2d50: 20 73 74 6f 72 61 67 65 20 66 6f 72 20 72 65 74   storage for ret
2d60: 75 72 6e 20 76 61 6c 75 65 20 2a 2f 0a 20 20 75  urn value */.  u
2d70: 6e 69 6f 6e 20 7b 0a 20 20 20 20 63 68 61 72 20  nion {.    char 
2d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
2d90: 63 68 61 72 3b 0a 20 20 20 20 73 69 67 6e 65 64  char;.    signed
2da0: 20 63 68 61 72 20 20 20 20 20 20 20 20 20 5f 73   char         _s
2db0: 63 68 61 72 3b 0a 20 20 20 20 75 6e 73 69 67 6e  char;.    unsign
2dc0: 65 64 20 63 68 61 72 20 20 20 20 20 20 20 5f 75  ed char       _u
2dd0: 63 68 61 72 3b 0a 20 20 20 20 73 68 6f 72 74 20  char;.    short 
2de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 73                _s
2df0: 68 6f 72 74 3b 0a 20 20 20 20 75 6e 73 69 67 6e  hort;.    unsign
2e00: 65 64 20 73 68 6f 72 74 20 20 20 20 20 20 5f 75  ed short      _u
2e10: 73 68 6f 72 74 3b 0a 20 20 20 20 69 6e 74 20 20  short;.    int  
2e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
2e30: 69 6e 74 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65  int;.    unsigne
2e40: 64 20 69 6e 74 20 20 20 20 20 20 20 20 5f 75 69  d int        _ui
2e50: 6e 74 3b 0a 20 20 20 20 6c 6f 6e 67 20 20 20 20  nt;.    long    
2e60: 20 20 20 20 20 20 20 20 20 20 20 20 5f 6c 6f 6e              _lon
2e70: 67 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20  g;.    unsigned 
2e80: 6c 6f 6e 67 20 20 20 20 20 20 20 5f 75 6c 6f 6e  long       _ulon
2e90: 67 3b 0a 23 69 66 20 21 28 64 65 66 69 6e 65 64  g;.#if !(defined
2ea0: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20  (__mips64__) || 
2eb0: 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f  defined(__alpha_
2ec0: 5f 29 29 20 26 26 20 64 65 66 69 6e 65 64 28 48  _)) && defined(H
2ed0: 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 29 0a 20 20  AVE_LONGLONG).  
2ee0: 20 20 6c 6f 6e 67 20 6c 6f 6e 67 20 20 20 20 20    long long     
2ef0: 20 20 20 20 20 20 5f 6c 6f 6e 67 6c 6f 6e 67 3b        _longlong;
2f00: 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f  .    unsigned lo
2f10: 6e 67 20 6c 6f 6e 67 20 20 5f 75 6c 6f 6e 67 6c  ng long  _ulongl
2f20: 6f 6e 67 3b 0a 23 65 6e 64 69 66 0a 20 20 20 20  ong;.#endif.    
2f30: 66 6c 6f 61 74 20 20 20 20 20 20 20 20 20 20 20  float           
2f40: 20 20 20 20 5f 66 6c 6f 61 74 3b 0a 20 20 20 20      _float;.    
2f50: 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 20  double          
2f60: 20 20 20 20 5f 64 6f 75 62 6c 65 3b 0a 20 20 20      _double;.   
2f70: 20 76 6f 69 64 2a 20 20 20 20 20 20 20 20 20 20   void*          
2f80: 20 20 20 20 20 5f 70 74 72 3b 0a 20 20 20 20 5f       _ptr;.    _
2f90: 5f 76 61 77 6f 72 64 20 20 20 20 20 20 20 20 20  _vaword         
2fa0: 20 20 20 5f 77 6f 72 64 73 5b 32 5d 3b 0a 20 20     _words[2];.  
2fb0: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  }              t
2fc0: 6d 70 3b 0a 23 69 66 20 64 65 66 69 6e 65 64 28  mp;.#if defined(
2fd0: 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66  __i386__) || def
2fe0: 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c  ined(__m68k__) |
2ff0: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  | (defined(__spa
3000: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
3010: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20  d(__sparc64__)) 
3020: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  || defined(__hpp
3030: 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  a__) || defined(
3040: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
3050: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 20  ined(__ia64__). 
3060: 20 76 6f 69 64 2a 20 20 20 20 20 20 20 20 20 20   void*          
3070: 73 74 72 75 63 74 72 61 64 64 72 3b 0a 23 65 6e  structraddr;.#en
3080: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
3090: 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66  __mips__) || def
30a0: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
30b0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
30c0: 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  ips64__) || defi
30d0: 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c  ned(__alpha__) |
30e0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  | defined(__hppa
30f0: 5f 5f 29 0a 20 20 6c 6f 6e 67 20 20 20 20 20 20  __).  long      
3100: 20 20 20 20 20 6d 65 6d 61 72 67 70 74 72 3b 0a       memargptr;.
3110: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
3120: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 20 20 6c  ed(__hppa__).  l
3130: 6f 6e 67 20 20 20 20 20 20 20 20 20 20 20 66 61  ong           fa
3140: 72 67 5f 6f 66 66 73 65 74 3b 0a 20 20 6c 6f 6e  rg_offset;.  lon
3150: 67 20 20 20 20 20 20 20 20 20 20 20 64 61 72 67  g           darg
3160: 5f 6f 66 66 73 65 74 3b 0a 20 20 66 6c 6f 61 74  _offset;.  float
3170: 20 20 20 20 20 20 20 20 20 20 66 61 72 67 5b 34            farg[4
3180: 5d 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20 20  ];.  double     
3190: 20 20 20 20 64 61 72 67 5b 32 5d 3b 0a 23 65 6e      darg[2];.#en
31a0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
31b0: 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65  __mips__) && !de
31c0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
31d0: 5f 29 0a 20 20 69 6e 74 20 20 20 20 20 20 20 20  _).  int        
31e0: 20 20 20 20 61 6e 75 6d 3b 0a 20 20 66 6c 6f 61      anum;.  floa
31f0: 74 20 20 20 20 20 20 20 20 20 20 66 61 72 67 5b  t          farg[
3200: 32 5d 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20  2];.  double    
3210: 20 20 20 20 20 64 61 72 67 5b 32 5d 3b 0a 23 65       darg[2];.#e
3220: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
3230: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
3240: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
3250: 34 5f 5f 29 0a 20 20 69 6e 74 20 20 20 20 20 20  4__).  int      
3260: 20 20 20 20 20 20 61 6e 75 6d 3b 0a 20 20 66 6c        anum;.  fl
3270: 6f 61 74 20 20 20 20 20 20 20 20 20 20 66 61 72  oat          far
3280: 67 5b 38 5d 3b 0a 20 20 64 6f 75 62 6c 65 20 20  g[8];.  double  
3290: 20 20 20 20 20 20 20 64 61 72 67 5b 38 5d 3b 0a         darg[8];.
32a0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
32b0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a  ed(__sparc64__).
32c0: 20 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 20    int           
32d0: 20 61 6e 75 6d 3b 0a 20 20 66 6c 6f 61 74 20 20   anum;.  float  
32e0: 20 20 20 20 20 20 20 20 66 61 72 67 5b 31 36 5d          farg[16]
32f0: 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20 20 20  ;.  double      
3300: 20 20 20 64 61 72 67 5b 31 36 5d 3b 0a 23 65 6e     darg[16];.#en
3310: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
3320: 5f 5f 72 73 36 30 30 30 5f 5f 29 0a 20 20 64 6f  __rs6000__).  do
3330: 75 62 6c 65 2a 20 20 20 20 20 20 20 20 6d 65 6d  uble*        mem
3340: 66 61 72 67 70 74 72 3b 0a 20 20 64 6f 75 62 6c  fargptr;.  doubl
3350: 65 20 20 20 20 20 20 20 20 20 66 61 72 67 5b 31  e         farg[1
3360: 33 5d 3b 0a 23 69 66 20 21 28 64 65 66 69 6e 65  3];.#if !(define
3370: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
3380: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
3390: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
33a0: 5f 5f 29 29 29 0a 20 20 5f 5f 76 61 77 6f 72 64  __))).  __vaword
33b0: 20 20 20 20 20 20 20 72 65 67 61 72 67 5b 38 5d         regarg[8]
33c0: 3b 0a 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e  ;.  unsigned lon
33d0: 67 20 20 73 61 70 74 72 3b 0a 20 20 69 6e 74 20  g  saptr;.  int 
33e0: 20 20 20 20 20 20 20 20 20 20 20 6f 6e 73 74 61             onsta
33f0: 63 6b 3b 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  ck;.#endif.#endi
3400: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
3410: 73 33 39 30 5f 5f 29 0a 20 20 66 6c 6f 61 74 2a  s390__).  float*
3420: 20 20 20 20 20 20 20 20 20 6d 65 6d 66 61 72 67           memfarg
3430: 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65 2a 20 20  ptr;.  double*  
3440: 20 20 20 20 20 20 6d 65 6d 64 61 72 67 70 74 72        memdargptr
3450: 3b 0a 20 20 66 6c 6f 61 74 20 20 20 20 20 20 20  ;.  float       
3460: 20 20 20 66 61 72 67 5b 32 5d 3b 0a 20 20 64 6f     farg[2];.  do
3470: 75 62 6c 65 20 20 20 20 20 20 20 20 20 64 61 72  uble         dar
3480: 67 5b 32 5d 3b 0a 20 20 5f 5f 76 61 77 6f 72 64  g[2];.  __vaword
3490: 20 20 20 20 20 20 20 72 65 67 61 72 67 5b 35 5d         regarg[5]
34a0: 3b 0a 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e  ;.  unsigned lon
34b0: 67 20 20 73 61 70 74 72 3b 0a 20 20 69 6e 74 20  g  saptr;.  int 
34c0: 20 20 20 20 20 20 20 20 20 20 20 6f 6e 73 74 61             onsta
34d0: 63 6b 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  ck;.#endif.#if d
34e0: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
34f0: 0a 20 20 5f 5f 76 61 77 6f 72 64 2a 20 20 20 20  .  __vaword*    
3500: 20 20 73 61 70 74 72 3b 0a 20 20 64 6f 75 62 6c    saptr;.  doubl
3510: 65 2a 20 20 20 20 20 20 20 20 6d 65 6d 66 61 72  e*        memfar
3520: 67 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65 20 20  gptr;.  double  
3530: 20 20 20 20 20 20 20 66 61 72 67 5b 38 5d 3b 0a         farg[8];.
3540: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
3550: 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 20  ed(__x86_64__). 
3560: 20 64 6f 75 62 6c 65 2a 20 20 20 20 20 20 20 20   double*        
3570: 6d 65 6d 66 61 72 67 70 74 72 3b 0a 20 20 64 6f  memfargptr;.  do
3580: 75 62 6c 65 20 20 20 20 20 20 20 20 20 66 61 72  uble         far
3590: 67 5b 38 5d 3b 0a 20 20 5f 5f 76 61 77 6f 72 64  g[8];.  __vaword
35a0: 2a 20 20 20 20 20 20 6d 65 6d 69 61 72 67 70 74  *      memiargpt
35b0: 72 3b 0a 20 20 5f 5f 76 61 77 6f 72 64 20 20 20  r;.  __vaword   
35c0: 20 20 20 20 69 61 72 67 5b 36 5d 3b 0a 23 65 6e      iarg[6];.#en
35d0: 64 69 66 0a 7d 20 5f 5f 76 61 5f 61 6c 69 73 74  dif.} __va_alist
35e0: 3b 0a 0a 74 79 70 65 64 65 66 20 5f 5f 76 61 5f  ;..typedef __va_
35f0: 61 6c 69 73 74 2a 20 76 61 5f 61 6c 69 73 74 3b  alist* va_alist;
3600: 0a 0a 0a 2f 2a 0a 20 2a 20 44 65 66 69 6e 69 74  .../*. * Definit
3610: 69 6f 6e 20 6f 66 20 74 68 65 20 76 61 5f 73 74  ion of the va_st
3620: 61 72 74 5f 78 78 78 20 6d 61 63 72 6f 73 2e 0a  art_xxx macros..
3630: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41   */.#define __VA
3640: 5f 53 54 41 52 54 5f 46 4c 41 47 53 20 20 5c 0a  _START_FLAGS  \.
3650: 20 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 52 45    __VA_STRUCT_RE
3660: 54 55 52 4e 20 7c 20 5f 5f 56 41 5f 46 4c 4f 41  TURN | __VA_FLOA
3670: 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 56 41 5f  T_RETURN | __VA_
3680: 53 54 52 55 43 54 5f 41 52 47 53 20 7c 20 5f 5f  STRUCT_ARGS | __
3690: 56 41 5f 46 4c 4f 41 54 5f 41 52 47 53 20 7c 20  VA_FLOAT_ARGS | 
36a0: 5f 5f 56 41 5f 49 4e 54 45 47 45 52 53 20 7c 20  __VA_INTEGERS | 
36b0: 5f 5f 56 41 5f 43 4c 45 41 4e 55 50 0a 23 64 65  __VA_CLEANUP.#de
36c0: 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 28  fine __va_start(
36d0: 4c 49 53 54 2c 52 45 54 54 59 50 45 29 20 20 5c  LIST,RETTYPE)  \
36e0: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  .  ((LIST)->flag
36f0: 73 20 3d 20 5f 5f 56 41 5f 53 54 41 52 54 5f 46  s = __VA_START_F
3700: 4c 41 47 53 2c 09 09 09 09 09 5c 0a 20 20 20 28  LAGS,.....\.   (
3710: 4c 49 53 54 29 2d 3e 72 74 79 70 65 20 3d 20 28  LIST)->rtype = (
3720: 52 45 54 54 59 50 45 29 09 09 09 09 09 09 5c 0a  RETTYPE)......\.
3730: 20 20 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73    ).#define va_s
3740: 74 61 72 74 5f 76 6f 69 64 28 4c 49 53 54 29 09  tart_void(LIST).
3750: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
3760: 2c 5f 5f 56 41 76 6f 69 64 29 0a 23 64 65 66 69  ,__VAvoid).#defi
3770: 6e 65 20 76 61 5f 73 74 61 72 74 5f 63 68 61 72  ne va_start_char
3780: 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74 61  (LIST). __va_sta
3790: 72 74 28 4c 49 53 54 2c 5f 5f 56 41 63 68 61 72  rt(LIST,__VAchar
37a0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61  ).#define va_sta
37b0: 72 74 5f 73 63 68 61 72 28 4c 49 53 54 29 09 20  rt_schar(LIST). 
37c0: 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c  __va_start(LIST,
37d0: 5f 5f 56 41 73 63 68 61 72 29 0a 23 64 65 66 69  __VAschar).#defi
37e0: 6e 65 20 76 61 5f 73 74 61 72 74 5f 75 63 68 61  ne va_start_ucha
37f0: 72 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74  r(LIST). __va_st
3800: 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 75 63 68  art(LIST,__VAuch
3810: 61 72 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73  ar).#define va_s
3820: 74 61 72 74 5f 73 68 6f 72 74 28 4c 49 53 54 29  tart_short(LIST)
3830: 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53  . __va_start(LIS
3840: 54 2c 5f 5f 56 41 73 68 6f 72 74 29 0a 23 64 65  T,__VAshort).#de
3850: 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 75 73  fine va_start_us
3860: 68 6f 72 74 28 4c 49 53 54 29 09 20 5f 5f 76 61  hort(LIST). __va
3870: 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41  _start(LIST,__VA
3880: 75 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20  ushort).#define 
3890: 76 61 5f 73 74 61 72 74 5f 69 6e 74 28 4c 49 53  va_start_int(LIS
38a0: 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c  T). __va_start(L
38b0: 49 53 54 2c 5f 5f 56 41 69 6e 74 29 0a 23 64 65  IST,__VAint).#de
38c0: 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 75 69  fine va_start_ui
38d0: 6e 74 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73  nt(LIST). __va_s
38e0: 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 75 69  tart(LIST,__VAui
38f0: 6e 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73  nt).#define va_s
3900: 74 61 72 74 5f 6c 6f 6e 67 28 4c 49 53 54 29 09  tart_long(LIST).
3910: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
3920: 2c 5f 5f 56 41 6c 6f 6e 67 29 0a 23 64 65 66 69  ,__VAlong).#defi
3930: 6e 65 20 76 61 5f 73 74 61 72 74 5f 75 6c 6f 6e  ne va_start_ulon
3940: 67 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74  g(LIST). __va_st
3950: 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f  art(LIST,__VAulo
3960: 6e 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73  ng).#define va_s
3970: 74 61 72 74 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  tart_longlong(LI
3980: 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28  ST). __va_start(
3990: 4c 49 53 54 2c 5f 5f 56 41 6c 6f 6e 67 6c 6f 6e  LIST,__VAlonglon
39a0: 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  g).#define va_st
39b0: 61 72 74 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  art_ulonglong(LI
39c0: 53 54 29 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c  ST) __va_start(L
39d0: 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67 6c 6f 6e  IST,__VAulonglon
39e0: 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  g).#define va_st
39f0: 61 72 74 5f 66 6c 6f 61 74 28 4c 49 53 54 29 09  art_float(LIST).
3a00: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
3a10: 2c 5f 5f 56 41 66 6c 6f 61 74 29 0a 23 64 65 66  ,__VAfloat).#def
3a20: 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 64 6f 75  ine va_start_dou
3a30: 62 6c 65 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f  ble(LIST). __va_
3a40: 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 64  start(LIST,__VAd
3a50: 6f 75 62 6c 65 29 0a 23 64 65 66 69 6e 65 20 76  ouble).#define v
3a60: 61 5f 73 74 61 72 74 5f 70 74 72 28 4c 49 53 54  a_start_ptr(LIST
3a70: 2c 54 59 50 45 29 09 20 5f 5f 76 61 5f 73 74 61  ,TYPE). __va_sta
3a80: 72 74 28 4c 49 53 54 2c 5f 5f 56 41 76 6f 69 64  rt(LIST,__VAvoid
3a90: 70 29 0a 0a 2f 2a 0a 20 2a 20 76 61 5f 73 74 61  p)../*. * va_sta
3aa0: 72 74 5f 73 74 72 75 63 74 3a 20 50 72 65 70 61  rt_struct: Prepa
3ab0: 72 69 6e 67 20 73 74 72 75 63 74 75 72 65 20 72  ring structure r
3ac0: 65 74 75 72 6e 2e 0a 20 2a 2f 0a 23 64 65 66 69  eturn.. */.#defi
3ad0: 6e 65 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75  ne va_start_stru
3ae0: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 54 59 50  ct(LIST,TYPE,TYP
3af0: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
3b00: 0a 20 20 5f 76 61 5f 73 74 61 72 74 5f 73 74 72  .  _va_start_str
3b10: 75 63 74 28 4c 49 53 54 2c 73 69 7a 65 6f 66 28  uct(LIST,sizeof(
3b20: 54 59 50 45 29 2c 5f 5f 56 41 5f 61 6c 69 67 6e  TYPE),__VA_align
3b30: 6f 66 28 54 59 50 45 29 2c 54 59 50 45 5f 53 50  of(TYPE),TYPE_SP
3b40: 4c 49 54 54 41 42 4c 45 29 0a 2f 2a 20 5f 76 61  LITTABLE)./* _va
3b50: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 29 20  _start_struct() 
3b60: 69 73 20 6c 69 6b 65 20 76 61 5f 73 74 61 72 74  is like va_start
3b70: 5f 73 74 72 75 63 74 28 29 2c 20 65 78 63 65 70  _struct(), excep
3b80: 74 20 74 68 61 74 20 79 6f 75 20 70 61 73 73 0a  t that you pass.
3b90: 20 2a 20 74 68 65 20 74 79 70 65 27 73 20 73 69   * the type's si
3ba0: 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65 6e 74  ze and alignment
3bb0: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
3bc0: 74 79 70 65 20 69 74 73 65 6c 66 2e 0a 20 2a 2f  type itself.. */
3bd0: 0a 23 64 65 66 69 6e 65 20 5f 76 61 5f 73 74 61  .#define _va_sta
3be0: 72 74 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  rt_struct(LIST,T
3bf0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
3c00: 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IGN,TYPE_SPLITTA
3c10: 42 4c 45 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  BLE)  \.  (__va_
3c20: 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 73  start(LIST,__VAs
3c30: 74 72 75 63 74 29 2c 09 09 09 09 09 09 5c 0a 20  truct),......\. 
3c40: 20 20 28 4c 49 53 54 29 2d 3e 72 73 69 7a 65 20    (LIST)->rsize 
3c50: 3d 20 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09  = (TYPE_SIZE),..
3c60: 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29  ....\.   ((LIST)
3c70: 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 53  ->flags & __VA_S
3c80: 55 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f 52  UNPROCC_STRUCT_R
3c90: 45 54 55 52 4e 09 09 09 09 5c 0a 20 20 20 20 3f  ETURN....\.    ?
3ca0: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
3cb0: 63 74 32 28 4c 49 53 54 29 09 09 09 09 09 09 5c  ct2(LIST)......\
3cc0: 0a 20 20 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e  .    : ((LIST)->
3cd0: 66 6c 61 67 73 20 26 20 28 5f 5f 56 41 5f 50 43  flags & (__VA_PC
3ce0: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  C_STRUCT_RETURN 
3cf0: 7c 20 5f 5f 56 41 5f 53 55 4e 43 43 5f 53 54 52  | __VA_SUNCC_STR
3d00: 55 43 54 5f 52 45 54 55 52 4e 29 20 5c 0a 20 20  UCT_RETURN) \.  
3d10: 20 20 20 20 20 3f 20 28 28 54 59 50 45 5f 53 49       ? ((TYPE_SI
3d20: 5a 45 29 20 3c 3d 20 73 69 7a 65 6f 66 28 5f 5f  ZE) <= sizeof(__
3d30: 76 61 5f 73 74 72 75 63 74 5f 62 75 66 66 65 72  va_struct_buffer
3d40: 29 20 7c 7c 20 5f 5f 76 61 5f 65 72 72 6f 72 32  ) || __va_error2
3d50: 28 54 59 50 45 5f 53 49 5a 45 29 2c 20 5c 0a 20  (TYPE_SIZE), \. 
3d60: 20 20 20 20 20 20 20 20 20 28 4c 49 53 54 29 2d           (LIST)-
3d70: 3e 72 61 64 64 72 20 3d 20 26 5f 5f 76 61 5f 73  >raddr = &__va_s
3d80: 74 72 75 63 74 5f 62 75 66 66 65 72 2c 09 09 09  truct_buffer,...
3d90: 09 5c 0a 20 20 20 20 20 20 20 20 20 20 30 09 09  .\.          0..
3da0: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 20  ......\.        
3db0: 20 29 09 09 09 09 09 09 09 09 5c 0a 20 20 20 20   )........\.    
3dc0: 20 20 20 3a 20 28 28 28 4c 49 53 54 29 2d 3e 66     : (((LIST)->f
3dd0: 6c 61 67 73 20 26 20 5f 5f 56 41 5f 53 4d 41 4c  lags & __VA_SMAL
3de0: 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29  L_STRUCT_RETURN)
3df0: 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 26  ...\.          &
3e00: 26 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75 63  & __va_reg_struc
3e10: 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59  t_return(LIST,TY
3e20: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c  PE_SIZE,TYPE_SPL
3e30: 49 54 54 41 42 4c 45 29 09 5c 0a 20 20 20 20 20  ITTABLE).\.     
3e40: 20 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e       ? ((LIST)->
3e50: 72 61 64 64 72 20 3d 20 26 28 4c 49 53 54 29 2d  raddr = &(LIST)-
3e60: 3e 74 6d 70 2c 09 09 09 09 5c 0a 20 20 20 20 20  >tmp,....\.     
3e70: 20 20 20 20 20 20 20 20 5f 5f 76 61 5f 73 74 61          __va_sta
3e80: 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c  rt_struct1(LIST,
3e90: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
3ea0: 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54  LIGN,TYPE_SPLITT
3eb0: 41 42 4c 45 29 20 5c 0a 20 20 20 20 20 20 20 20  ABLE) \.        
3ec0: 20 20 20 20 29 09 09 09 09 09 09 09 09 5c 0a 20      )........\. 
3ed0: 20 20 20 20 20 20 20 20 20 3a 20 5f 5f 76 61 5f           : __va_
3ee0: 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49  start_struct2(LI
3ef0: 53 54 29 09 09 09 09 09 5c 0a 20 20 29 29 20 20  ST).....\.  ))  
3f00: 29 20 20 29 0a 2f 2a 20 44 65 74 65 72 6d 69 6e  )  )./* Determin
3f10: 65 73 20 77 68 65 74 68 65 72 20 61 20 73 74 72  es whether a str
3f20: 75 63 74 75 72 65 20 69 73 20 72 65 74 75 72 6e  ucture is return
3f30: 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2c  ed in registers,
3f40: 0a 20 2a 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  . * depending on
3f50: 20 69 74 73 20 73 69 7a 65 20 61 6e 64 20 69 74   its size and it
3f60: 73 20 77 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c  s word-splittabl
3f70: 65 20 66 6c 61 67 2e 0a 20 2a 2f 0a 23 69 66 20  e flag.. */.#if 
3f80: 28 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f  (defined(__i386_
3f90: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 57  _) && defined(_W
3fa0: 49 4e 33 32 29 29 0a 23 64 65 66 69 6e 65 20 5f  IN32)).#define _
3fb0: 5f 76 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72  _va_reg_struct_r
3fc0: 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f  eturn(LIST,TYPE_
3fd0: 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  SIZE,TYPE_SPLITT
3fe0: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50  ABLE)  \.  ((TYP
3ff0: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20  E_SIZE) == 1 || 
4000: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32  (TYPE_SIZE) == 2
4010: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
4020: 3d 3d 20 34 09 09 5c 0a 20 20 20 7c 7c 20 28 28  == 4..\.   || ((
4030: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09  TYPE_SIZE) == 8.
4040: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26  ......\.       &
4050: 26 20 28 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  & (((LIST)->flag
4060: 73 20 26 20 5f 5f 56 41 5f 4d 53 56 43 5f 53 54  s & __VA_MSVC_ST
4070: 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c  RUCT_RETURN)...\
4080: 0a 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 28  .           || (
4090: 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  (TYPE_SPLITTABLE
40a0: 29 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 20  ).....\.        
40b0: 20 20 20 20 20 20 20 26 26 20 28 28 4c 49 53 54         && ((LIST
40c0: 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f  )->flags & __VA_
40d0: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
40e0: 4e 29 09 09 5c 0a 20 20 29 20 20 20 29 20 20 20  N)..\.  )   )   
40f0: 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e  )   )./* Turn on
4100: 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 53   __VA_REGISTER_S
4110: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20  TRUCT_RETURN if 
4120: 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __VA_SMALL_STRUC
4130: 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74  T_RETURN was set
4140: 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75  . * and the stru
4150: 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79  ct will actually
4160: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20   be returned in 
4170: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23  registers.. */.#
4180: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72  define __va_star
4190: 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c 54  t_struct1(LIST,T
41a0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
41b0: 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IGN,TYPE_SPLITTA
41c0: 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  BLE)  \.  ((LIST
41d0: 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41  )->flags |= __VA
41e0: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
41f0: 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64  _RETURN, 0).#end
4200: 69 66 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  if.#if (defined(
4210: 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 21 64 65  __i386__) && !de
4220: 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 29 20 7c  fined(_WIN32)) |
4230: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
4240: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
4250: 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  _arm__) || defin
4260: 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c  ed(__rs6000__) |
4270: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
4280: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
4290: 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69  (__s390__).#defi
42a0: 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75  ne __va_reg_stru
42b0: 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54  ct_return(LIST,T
42c0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
42d0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
42e0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31  (TYPE_SIZE) == 1
42f0: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
4300: 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 2 || (TYPE_SI
4310: 5a 45 29 20 3d 3d 20 34 09 09 5c 0a 20 20 20 7c  ZE) == 4..\.   |
4320: 7c 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  | ((TYPE_SIZE) =
4330: 3d 20 38 20 26 26 20 28 54 59 50 45 5f 53 50 4c  = 8 && (TYPE_SPL
4340: 49 54 54 41 42 4c 45 29 09 09 09 09 5c 0a 20 20  ITTABLE)....\.  
4350: 20 20 20 20 20 26 26 20 28 28 4c 49 53 54 29 2d       && ((LIST)-
4360: 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 47 43  >flags & __VA_GC
4370: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29  C_STRUCT_RETURN)
4380: 09 09 09 5c 0a 20 20 29 20 20 20 29 0a 2f 2a 20  ...\.  )   )./* 
4390: 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45 47  Turn on __VA_REG
43a0: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
43b0: 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d 41 4c  URN if __VA_SMAL
43c0: 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  L_STRUCT_RETURN 
43d0: 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74  was set. * and t
43e0: 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61  he struct will a
43f0: 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72  ctually be retur
4400: 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73  ned in registers
4410: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
4420: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31  va_start_struct1
4430: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
4440: 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f  TYPE_ALIGN,TYPE_
4450: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
4460: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
4470: 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  |= __VA_REGISTER
4480: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 20  _STRUCT_RETURN, 
4490: 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  0).#endif.#if de
44a0: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
44b0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65  .#define __va_re
44c0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
44d0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
44e0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
44f0: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45   \.  ((TYPE_SIZE
4500: 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f  ) == 1 || (TYPE_
4510: 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54  SIZE) == 2 || (T
4520: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c  YPE_SIZE) == 4 |
4530: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
4540: 20 38 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50   8.\.   || ((TYP
4550: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 36 20 26 26  E_SIZE) == 16 &&
4560: 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c   (TYPE_SPLITTABL
4570: 45 29 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26  E)....\.       &
4580: 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73  & ((LIST)->flags
4590: 20 26 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55   & __VA_GCC_STRU
45a0: 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20  CT_RETURN)...\. 
45b0: 20 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f   )   )./* Turn o
45c0: 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f  n __VA_REGISTER_
45d0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66  STRUCT_RETURN if
45e0: 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55   __VA_SMALL_STRU
45f0: 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65  CT_RETURN was se
4600: 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72  t. * and the str
4610: 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c  uct will actuall
4620: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e  y be returned in
4630: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a   registers.. */.
4640: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61  #define __va_sta
4650: 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c  rt_struct1(LIST,
4660: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
4670: 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54  LIGN,TYPE_SPLITT
4680: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53  ABLE)  \.  ((LIS
4690: 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56  T)->flags |= __V
46a0: 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  A_REGISTER_STRUC
46b0: 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e  T_RETURN, 0).#en
46c0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
46d0: 5f 5f 68 70 70 61 5f 5f 29 0a 23 64 65 66 69 6e  __hppa__).#defin
46e0: 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75 63  e __va_reg_struc
46f0: 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59  t_return(LIST,TY
4700: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c  PE_SIZE,TYPE_SPL
4710: 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28  ITTABLE)  \.  ((
4720: 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f  LIST)->flags & _
4730: 5f 56 41 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43  _VA_OLDGCC_STRUC
4740: 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20  T_RETURN....\.  
4750: 20 3f 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   ? ((TYPE_SIZE) 
4760: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 1 || (TYPE_SI
4770: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50  ZE) == 2 || (TYP
4780: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 29 09 09 5c  E_SIZE) == 4)..\
4790: 0a 20 20 20 3a 20 28 28 54 59 50 45 5f 53 49 5a  .   : ((TYPE_SIZ
47a0: 45 29 20 3c 3d 20 38 29 09 09 09 09 09 09 09 5c  E) <= 8).......\
47b0: 0a 20 20 29 0a 2f 2a 20 54 65 73 74 20 62 6f 74  .  )./* Test bot
47c0: 68 20 5f 5f 56 41 5f 4f 4c 44 47 43 43 5f 53 54  h __VA_OLDGCC_ST
47d0: 52 55 43 54 5f 52 45 54 55 52 4e 20 61 6e 64 20  RUCT_RETURN and 
47e0: 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __VA_SMALL_STRUC
47f0: 54 5f 52 45 54 55 52 4e 20 61 74 20 72 75 6e 20  T_RETURN at run 
4800: 74 69 6d 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  time. */.#define
4810: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
4820: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct1(LIST,TYPE_SI
4830: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59  ZE,TYPE_ALIGN,TY
4840: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
4850: 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 69 66  \.  0.#endif.#if
4860: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
4870: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
4880: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 28  _mipsn32__) || (
4890: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
48a0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
48b0: 5f 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20  _sparc64__)) || 
48c0: 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f  defined(__m88k__
48d0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72  ).#define __va_r
48e0: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  eg_struct_return
48f0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
4900: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4910: 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a    \.  ((TYPE_SIZ
4920: 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45  E) == 1 || (TYPE
4930: 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28  _SIZE) == 2 || (
4940: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 29  TYPE_SIZE) == 4)
4950: 0a 2f 2a 20 54 65 73 74 20 5f 5f 56 41 5f 53 4d  ./* Test __VA_SM
4960: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
4970: 4e 20 69 6e 73 74 65 61 64 20 6f 66 20 5f 5f 56  N instead of __V
4980: 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  A_REGISTER_STRUC
4990: 54 5f 52 45 54 55 52 4e 2e 20 2a 2f 0a 23 69 66  T_RETURN. */.#if
49a0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
49b0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
49c0: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 23 64 65 66  _mipsn32__).#def
49d0: 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73  ine __va_start_s
49e0: 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45  truct1(LIST,TYPE
49f0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
4a00: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
4a10: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
4a20: 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a  anum++,.......\.
4a30: 20 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20     0.........\. 
4a40: 20 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65   ).#else.#define
4a50: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
4a60: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct1(LIST,TYPE_SI
4a70: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59  ZE,TYPE_ALIGN,TY
4a80: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
4a90: 5c 0a 20 20 30 0a 23 65 6e 64 69 66 0a 23 65 6e  \.  0.#endif.#en
4aa0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
4ab0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
4ac0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
4ad0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61  __).#define __va
4ae0: 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75  _reg_struct_retu
4af0: 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  rn(LIST,TYPE_SIZ
4b00: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  E,TYPE_SPLITTABL
4b10: 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  E)  \.  ((LIST)-
4b20: 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 47 43  >flags & __VA_GC
4b30: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
4b40: 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50 45  ...\.   ? ((TYPE
4b50: 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28  _SIZE) == 1 || (
4b60: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20  TYPE_SIZE) == 2 
4b70: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
4b80: 3d 20 34 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 4 || (TYPE_SIZ
4b90: 45 29 20 3d 3d 20 38 29 20 5c 0a 20 20 20 3a 20  E) == 8) \.   : 
4ba0: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20  ((TYPE_SIZE) <= 
4bb0: 31 36 29 09 09 09 09 09 09 5c 0a 20 20 29 0a 2f  16)......\.  )./
4bc0: 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52  * Turn on __VA_R
4bd0: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
4be0: 45 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d  ETURN if __VA_SM
4bf0: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
4c00: 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64  N was set. * and
4c10: 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c   the struct will
4c20: 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74   actually be ret
4c30: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65  urned in registe
4c40: 72 73 2e 20 41 6c 73 6f 20 74 75 72 6e 20 6f 6e  rs. Also turn on
4c50: 0a 20 2a 20 5f 5f 56 41 5f 52 45 47 49 53 54 45  . * __VA_REGISTE
4c60: 52 5f 46 4c 4f 41 54 53 54 52 55 43 54 5f 52 45  R_FLOATSTRUCT_RE
4c70: 54 55 52 4e 20 6f 72 20 5f 5f 56 41 5f 52 45 47  TURN or __VA_REG
4c80: 49 53 54 45 52 5f 44 4f 55 42 4c 45 53 54 52 55  ISTER_DOUBLESTRU
4c90: 43 54 5f 52 45 54 55 52 4e 20 69 66 0a 20 2a 20  CT_RETURN if. * 
4ca0: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20  the struct will 
4cb0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 66  be returned in f
4cc0: 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 72 65  loating-point re
4cd0: 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65  gisters.. */.#de
4ce0: 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f  fine __va_start_
4cf0: 73 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50  struct1(LIST,TYP
4d00: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
4d10: 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  N,TYPE_SPLITTABL
4d20: 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  E)  \.  ((LIST)-
4d30: 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 52  >flags |= __VA_R
4d40: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
4d50: 45 54 55 52 4e 2c 09 09 09 09 5c 0a 20 20 20 28  ETURN,....\.   (
4d60: 54 59 50 45 5f 41 4c 49 47 4e 29 20 3d 3d 20 73  TYPE_ALIGN) == s
4d70: 69 7a 65 6f 66 28 66 6c 6f 61 74 29 20 26 26 20  izeof(float) && 
4d80: 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  (TYPE_SPLITTABLE
4d90: 29 09 09 09 09 5c 0a 20 20 20 20 26 26 20 28 28  )....\.    && ((
4da0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 73 69  TYPE_SIZE) == si
4db0: 7a 65 6f 66 28 66 6c 6f 61 74 29 20 7c 7c 20 28  zeof(float) || (
4dc0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 2a  TYPE_SIZE) == 2*
4dd0: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09  sizeof(float))..
4de0: 5c 0a 20 20 20 20 26 26 20 28 28 4c 49 53 54 29  \.    && ((LIST)
4df0: 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f  ->flags |= __VA_
4e00: 52 45 47 49 53 54 45 52 5f 46 4c 4f 41 54 53 54  REGISTER_FLOATST
4e10: 52 55 43 54 5f 52 45 54 55 52 4e 29 2c 09 09 09  RUCT_RETURN),...
4e20: 5c 0a 20 20 20 28 54 59 50 45 5f 41 4c 49 47 4e  \.   (TYPE_ALIGN
4e30: 29 20 3d 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62  ) == sizeof(doub
4e40: 6c 65 29 20 26 26 20 28 54 59 50 45 5f 53 50 4c  le) && (TYPE_SPL
4e50: 49 54 54 41 42 4c 45 29 09 09 09 09 5c 0a 20 20  ITTABLE)....\.  
4e60: 20 20 26 26 20 28 28 54 59 50 45 5f 53 49 5a 45    && ((TYPE_SIZE
4e70: 29 20 3d 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62  ) == sizeof(doub
4e80: 6c 65 29 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  le) || (TYPE_SIZ
4e90: 45 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28 64  E) == 2*sizeof(d
4ea0: 6f 75 62 6c 65 29 29 09 5c 0a 20 20 20 20 26 26  ouble)).\.    &&
4eb0: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
4ec0: 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  |= __VA_REGISTER
4ed0: 5f 44 4f 55 42 4c 45 53 54 52 55 43 54 5f 52 45  _DOUBLESTRUCT_RE
4ee0: 54 55 52 4e 29 2c 09 09 09 5c 0a 20 20 20 30 29  TURN),...\.   0)
4ef0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
4f00: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
4f10: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
4f20: 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  64__).#define __
4f30: 76 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65  va_reg_struct_re
4f40: 74 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53  turn(LIST,TYPE_S
4f50: 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IZE,TYPE_SPLITTA
4f60: 42 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45  BLE)  \.  ((TYPE
4f70: 5f 53 49 5a 45 29 20 3c 3d 20 33 32 29 0a 2f 2a  _SIZE) <= 32)./*
4f80: 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45   Turn on __VA_RE
4f90: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
4fa0: 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d 41  TURN if __VA_SMA
4fb0: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
4fc0: 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20   was set. * and 
4fd0: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20  the struct will 
4fe0: 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75  actually be retu
4ff0: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  rned in register
5000: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
5010: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
5020: 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  1(LIST,TYPE_SIZE
5030: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45  ,TYPE_ALIGN,TYPE
5040: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
5050: 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73    ((LIST)->flags
5060: 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45   |= __VA_REGISTE
5070: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c  R_STRUCT_RETURN,
5080: 09 09 09 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64  ....\.   0).#end
5090: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
50a0: 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69  _x86_64__).#defi
50b0: 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75  ne __va_reg_stru
50c0: 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54  ct_return(LIST,T
50d0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
50e0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
50f0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 31  (TYPE_SIZE) <= 1
5100: 36 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f  6)./* Turn on __
5110: 56 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  VA_REGISTER_STRU
5120: 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 56  CT_RETURN if __V
5130: 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  A_SMALL_STRUCT_R
5140: 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a  ETURN was set. *
5150: 20 61 6e 64 20 74 68 65 20 73 74 72 75 63 74 20   and the struct 
5160: 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65  will actually be
5170: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67   returned in reg
5180: 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66  isters.. */.#def
5190: 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73  ine __va_start_s
51a0: 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45  truct1(LIST,TYPE
51b0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
51c0: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
51d0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
51e0: 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45  flags |= __VA_RE
51f0: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
5200: 54 55 52 4e 2c 09 09 09 09 5c 0a 20 20 20 30 29  TURN,....\.   0)
5210: 0a 23 65 6e 64 69 66 0a 2f 2a 0a 20 2a 20 50 72  .#endif./*. * Pr
5220: 65 70 61 72 69 6e 67 20 73 74 72 75 63 74 75 72  eparing structur
5230: 65 20 72 65 74 75 72 6e 20 69 6e 20 6d 65 6d 6f  e return in memo
5240: 72 79 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69  ry.. */.#if defi
5250: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 0a 2f 2a  ned(__i386__)./*
5260: 20 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72   Return structur
5270: 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73  e pointer is pas
5280: 73 65 64 20 69 6e 20 61 20 73 70 65 63 69 61 6c  sed in a special
5290: 20 72 65 67 69 73 74 65 72 20 6f 72 20 61 73 20   register or as 
52a0: 66 69 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64  first arg. */.#d
52b0: 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74  efine __va_start
52c0: 5f 73 74 72 75 63 74 32 28 4c 49 53 54 29 20 20  _struct2(LIST)  
52d0: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61  \.  ((LIST)->fla
52e0: 67 73 20 26 20 5f 5f 56 41 5f 4e 45 58 54 47 43  gs & __VA_NEXTGC
52f0: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
5300: 09 09 09 5c 0a 20 20 20 3f 20 28 28 4c 49 53 54  ...\.   ? ((LIST
5310: 29 2d 3e 72 61 64 64 72 20 3d 20 28 4c 49 53 54  )->raddr = (LIST
5320: 29 2d 3e 73 74 72 75 63 74 72 61 64 64 72 2c 20  )->structraddr, 
5330: 30 29 09 20 2f 2a 20 73 70 65 63 69 61 6c 20 72  0). /* special r
5340: 65 67 69 73 74 65 72 20 2a 2f 09 5c 0a 20 20 20  egister */.\.   
5350: 3a 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72  : ((LIST)->raddr
5360: 20 3d 20 2a 28 76 6f 69 64 2a 20 2a 29 28 28 4c   = *(void* *)((L
5370: 49 53 54 29 2d 3e 61 70 74 72 29 2c 09 09 2f 2a  IST)->aptr),../*
5380: 20 66 69 72 73 74 20 61 72 67 20 2a 2f 09 5c 0a   first arg */.\.
5390: 20 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 61 70        (LIST)->ap
53a0: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 76 6f 69  tr += sizeof(voi
53b0: 64 2a 29 2c 09 09 09 09 09 5c 0a 20 20 20 20 20  d*),.....\.     
53c0: 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 29   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 61 6c 70 68 61 5f 5f  efined(__alpha__
53f0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
5400: 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  rm__) || defined
5410: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20  (__rs6000__) || 
5420: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78  defined(__convex
5430: 5f 5f 29 20 20 7c 7c 20 64 65 66 69 6e 65 64 28  __)  || defined(
5440: 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 52 65 74  __s390__)./* Ret
5450: 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70 6f  urn structure po
5460: 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64 20  inter is passed 
5470: 61 73 20 66 69 72 73 74 20 61 72 67 2e 20 2a 2f  as first arg. */
5480: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74  .#define __va_st
5490: 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54  art_struct2(LIST
54a0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
54b0: 72 61 64 64 72 20 3d 20 2a 28 76 6f 69 64 2a 20  raddr = *(void* 
54c0: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 29  *)((LIST)->aptr)
54d0: 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  ,....\.   (LIST)
54e0: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
54f0: 28 76 6f 69 64 2a 29 2c 09 09 09 09 09 5c 0a 20  (void*),.....\. 
5500: 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20    0.........\.  
5510: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
5520: 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c  ined(__mips__) |
5530: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
5540: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
5550: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c  d(__mips64__) ||
5560: 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63   defined(__sparc
5570: 36 34 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20  64__)./* Return 
5580: 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65  structure pointe
5590: 72 20 69 73 20 70 61 73 73 65 64 20 61 73 20 66  r is passed as f
55a0: 69 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64 65  irst arg. */.#de
55b0: 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f  fine __va_start_
55c0: 73 74 72 75 63 74 32 28 4c 49 53 54 29 20 20 5c  struct2(LIST)  \
55d0: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64  .  ((LIST)->radd
55e0: 72 20 3d 20 2a 28 76 6f 69 64 2a 20 2a 29 28 28  r = *(void* *)((
55f0: 4c 49 53 54 29 2d 3e 61 70 74 72 29 2c 09 09 09  LIST)->aptr),...
5600: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70  .\.   (LIST)->ap
5610: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 76 6f 69  tr += sizeof(voi
5620: 64 2a 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c  d*),.....\.   (L
5630: 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 09 09 09  IST)->anum++,...
5640: 09 09 09 09 5c 0a 20 20 20 30 09 09 09 09 09 09  ....\.   0......
5650: 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a  ...\.  ).#endif.
5660: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38  #if defined(__x8
5670: 36 5f 36 34 5f 5f 29 0a 2f 2a 20 52 65 74 75 72  6_64__)./* Retur
5680: 6e 20 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e  n structure poin
5690: 74 65 72 20 69 73 20 70 61 73 73 65 64 20 61 73  ter is passed as
56a0: 20 66 69 72 73 74 20 61 72 67 2e 20 2a 2f 0a 23   first arg. */.#
56b0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72  define __va_star
56c0: 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54 29 20  t_struct2(LIST) 
56d0: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 72 61   \.  ((LIST)->ra
56e0: 64 64 72 20 3d 20 28 76 6f 69 64 20 2a 29 28 2a  ddr = (void *)(*
56f0: 28 4c 49 53 54 29 2d 3e 6d 65 6d 69 61 72 67 70  (LIST)->memiargp
5700: 74 72 2b 2b 29 2c 09 09 09 5c 0a 20 20 20 30 09  tr++),...\.   0.
5710: 09 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65  ........\.  ).#e
5720: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
5730: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64  (__m68k__) || (d
5740: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
5750: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
5760: 73 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64  sparc64__)) || d
5770: 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29  efined(__hppa__)
5780: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38   || defined(__m8
5790: 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  8k__) || defined
57a0: 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 52 65  (__ia64__)./* Re
57b0: 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 70  turn structure p
57c0: 6f 69 6e 74 65 72 20 69 73 20 70 61 73 73 65 64  ointer is passed
57d0: 20 69 6e 20 61 20 73 70 65 63 69 61 6c 20 72 65   in a special re
57e0: 67 69 73 74 65 72 2e 20 2a 2f 0a 23 64 65 66 69  gister. */.#defi
57f0: 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74  ne __va_start_st
5800: 72 75 63 74 32 28 4c 49 53 54 29 20 20 5c 0a 20  ruct2(LIST)  \. 
5810: 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20   ((LIST)->raddr 
5820: 3d 20 28 4c 49 53 54 29 2d 3e 73 74 72 75 63 74  = (LIST)->struct
5830: 72 61 64 64 72 2c 20 30 29 0a 23 65 6e 64 69 66  raddr, 0).#endif
5840: 0a 0a 0a 2f 2a 0a 20 2a 20 44 65 66 69 6e 69 74  .../*. * Definit
5850: 69 6f 6e 20 6f 66 20 74 68 65 20 76 61 5f 61 72  ion of the va_ar
5860: 67 5f 78 78 78 20 6d 61 63 72 6f 73 2e 0a 20 2a  g_xxx macros.. *
5870: 2f 0a 0a 2f 2a 20 50 61 64 64 69 6e 67 20 6f 66  /../* Padding of
5880: 20 6e 6f 6e 2d 73 74 72 75 63 74 20 61 72 67 75   non-struct argu
5890: 6d 65 6e 74 73 2e 20 2a 2f 0a 23 64 65 66 69 6e  ments. */.#defin
58a0: 65 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  e __va_argsize(T
58b0: 59 50 45 5f 53 49 5a 45 29 20 20 5c 0a 20 20 28  YPE_SIZE)  \.  (
58c0: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 73  ((TYPE_SIZE) + s
58d0: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2d  izeof(__vaword)-
58e0: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  1) & -(long)size
58f0: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 0a 23 69  of(__vaword)).#i
5900: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
5910: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5920: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69  _m68k__) || defi
5930: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26  ned(__mips__) &&
5940: 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73   !defined(__mips
5950: 6e 33 32 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  n32__) || (defin
5960: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
5970: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
5980: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e  c64__)) || defin
5990: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c  ed(__alpha__) ||
59a0: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f   defined(__arm__
59b0: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
59c0: 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65  rs6000__) && (de
59d0: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
59e0: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
59f0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
5a00: 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20 64 65  PPLE__)))) || de
5a10: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20  fined(__m88k__) 
5a20: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e  || defined(__con
5a30: 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  vex__) || define
5a40: 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64  d(__ia64__) || d
5a50: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
5a60: 5f 29 0a 2f 2a 20 61 72 67 73 20 67 72 6f 77 20  _)./* args grow 
5a70: 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61 6c 6c 20 73  up */./* small s
5a80: 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f  tructures < 1 wo
5a90: 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20  rd are adjusted 
5aa0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d  depending on com
5ab0: 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65  piler */.#define
5ac0: 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64   __va_arg_leftad
5ad0: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
5ae0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
5af0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
5b00: 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61 72 67  aptr += __va_arg
5b10: 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 2c  size(TYPE_SIZE),
5b20: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d  ....\.   (LIST)-
5b30: 3e 61 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72 67  >aptr - __va_arg
5b40: 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09  size(TYPE_SIZE).
5b50: 09 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65  ...\.  ).#define
5b60: 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61   __va_arg_righta
5b70: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
5b80: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
5b90: 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  N)  \.  ((LIST)-
5ba0: 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61 72  >aptr += __va_ar
5bb0: 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29  gsize(TYPE_SIZE)
5bc0: 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  ,....\.   (LIST)
5bd0: 2d 3e 61 70 74 72 20 2d 20 28 28 54 59 50 45 5f  ->aptr - ((TYPE_
5be0: 53 49 5a 45 29 20 3c 20 73 69 7a 65 6f 66 28 5f  SIZE) < sizeof(_
5bf0: 5f 76 61 77 6f 72 64 29 09 09 09 5c 0a 09 09 20  _vaword)...\... 
5c00: 20 20 3f 20 28 54 59 50 45 5f 53 49 5a 45 29 09    ? (TYPE_SIZE).
5c10: 09 09 09 09 5c 0a 09 09 20 20 20 3a 20 5f 5f 76  ....\...   : __v
5c20: 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53  a_argsize(TYPE_S
5c30: 49 5a 45 29 09 09 09 09 5c 0a 09 09 20 20 29 09  IZE)....\...  ).
5c40: 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64  ......\.  ).#end
5c50: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
5c60: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28  _rs6000__) && !(
5c70: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c  defined(_AIX) ||
5c80: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48   (defined(__MACH
5c90: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
5ca0: 5f 41 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 61  _APPLE__)))./* a
5cb0: 72 67 73 20 67 72 6f 77 20 75 70 20 2a 2f 0a 2f  rgs grow up */./
5cc0: 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72  * small structur
5cd0: 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20  es < 1 word are 
5ce0: 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64 69  adjusted dependi
5cf0: 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 2a  ng on compiler *
5d00: 2f 0a 2f 2a 20 41 6c 73 6f 20 6d 61 6b 65 20 73  /./* Also make s
5d10: 75 72 65 20 77 65 20 73 77 69 74 63 68 20 74 6f  ure we switch to
5d20: 20 74 68 65 20 73 74 61 63 6b 20 70 6f 69 6e 74   the stack point
5d30: 65 72 20 61 66 74 65 72 20 38 20 61 72 67 73 20  er after 8 args 
5d40: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
5d50: 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64  arg_leftadjusted
5d60: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
5d70: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
5d80: 20 28 28 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74   ((((LIST)->onst
5d90: 61 63 6b 20 3d 3d 20 30 20 26 26 20 28 4c 49 53  ack == 0 && (LIS
5da0: 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28 6c 6f 6e  T)->aptr >= (lon
5db0: 67 29 26 28 4c 49 53 54 29 2d 3e 72 65 67 61 72  g)&(LIST)->regar
5dc0: 67 5b 38 5d 29 09 5c 0a 20 20 20 20 3f 20 28 28  g[8]).\.    ? ((
5dd0: 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d 31  LIST)->onstack=1
5de0: 2c 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d  , (LIST)->aptr =
5df0: 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72 29 20   (LIST)->saptr) 
5e00: 3a 20 30 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53  : 0),..\.   (LIS
5e10: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61  T)->aptr += __va
5e20: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
5e30: 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49  ZE),....\.   (LI
5e40: 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f 5f 76 61  ST)->aptr - __va
5e50: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
5e60: 5a 45 29 09 09 09 09 5c 0a 20 20 29 0a 23 64 65  ZE)....\.  ).#de
5e70: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 72 69  fine __va_arg_ri
5e80: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
5e90: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
5ea0: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 28 28  ALIGN)  \.  ((((
5eb0: 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d  LIST)->onstack =
5ec0: 3d 20 30 20 26 26 20 28 4c 49 53 54 29 2d 3e 61  = 0 && (LIST)->a
5ed0: 70 74 72 20 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c  ptr >= (long)&(L
5ee0: 49 53 54 29 2d 3e 72 65 67 61 72 67 5b 38 5d 29  IST)->regarg[8])
5ef0: 09 5c 0a 20 20 20 20 3f 20 28 28 4c 49 53 54 29  .\.    ? ((LIST)
5f00: 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49  ->onstack=1, (LI
5f10: 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53  ST)->aptr = (LIS
5f20: 54 29 2d 3e 73 61 70 74 72 29 20 3a 20 30 29 2c  T)->saptr) : 0),
5f30: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61  ..\.   (LIST)->a
5f40: 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61 72 67 73  ptr += __va_args
5f50: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09  ize(TYPE_SIZE),.
5f60: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
5f70: 61 70 74 72 20 2d 20 28 28 54 59 50 45 5f 53 49  aptr - ((TYPE_SI
5f80: 5a 45 29 20 3c 20 73 69 7a 65 6f 66 28 5f 5f 76  ZE) < sizeof(__v
5f90: 61 77 6f 72 64 29 09 09 09 5c 0a 09 09 20 20 20  aword)...\...   
5fa0: 3f 20 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09  ? (TYPE_SIZE)...
5fb0: 09 09 5c 0a 09 09 20 20 20 3a 20 5f 5f 76 61 5f  ..\...   : __va_
5fc0: 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a  argsize(TYPE_SIZ
5fd0: 45 29 09 09 09 09 5c 0a 09 09 20 20 29 09 09 09  E)....\...  )...
5fe0: 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66  ....\.  ).#endif
5ff0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
6000: 33 39 30 5f 5f 29 0a 2f 2a 20 61 72 67 73 20 67  390__)./* args g
6010: 72 6f 77 20 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61  row up */./* sma
6020: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20  ll structures < 
6030: 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73  1 word are adjus
6040: 74 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ted depending on
6050: 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 2f 2a 20   compiler */./* 
6060: 41 6c 73 6f 20 6d 61 6b 65 20 73 75 72 65 20 77  Also make sure w
6070: 65 20 73 77 69 74 63 68 20 74 6f 20 74 68 65 20  e switch to the 
6080: 73 74 61 63 6b 20 70 6f 69 6e 74 65 72 20 61 66  stack pointer af
6090: 74 65 72 20 35 20 61 72 67 73 20 2a 2f 0a 23 64  ter 5 args */.#d
60a0: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c  efine __va_arg_l
60b0: 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  eftadjusted(LIST
60c0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
60d0: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 28 28  ALIGN)  \.  ((((
60e0: 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d  LIST)->onstack =
60f0: 3d 20 30 20 26 26 20 28 4c 49 53 54 29 2d 3e 61  = 0 && (LIST)->a
6100: 70 74 72 20 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c  ptr >= (long)&(L
6110: 49 53 54 29 2d 3e 72 65 67 61 72 67 5b 35 5d 29  IST)->regarg[5])
6120: 09 5c 0a 20 20 20 20 3f 20 28 28 4c 49 53 54 29  .\.    ? ((LIST)
6130: 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49  ->onstack=1, (LI
6140: 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53  ST)->aptr = (LIS
6150: 54 29 2d 3e 73 61 70 74 72 29 20 3a 20 30 29 2c  T)->saptr) : 0),
6160: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61  ..\.   (LIST)->a
6170: 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61 72 67 73  ptr += __va_args
6180: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09  ize(TYPE_SIZE),.
6190: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
61a0: 61 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72 67 73  aptr - __va_args
61b0: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09  ize(TYPE_SIZE)..
61c0: 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20  ..\.  ).#define 
61d0: 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64  __va_arg_rightad
61e0: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
61f0: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
6200: 29 20 20 5c 0a 20 20 28 28 28 28 28 4c 49 53 54  )  \.  (((((LIST
6210: 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20  )->onstack == 0 
6220: 26 26 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  && ((LIST)->aptr
6230: 20 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54   >= (long)&(LIST
6240: 29 2d 3e 72 65 67 61 72 67 5b 35 5d 29 29 20 5c  )->regarg[5])) \
6250: 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49  .   || ((TYPE_SI
6260: 5a 45 29 20 3e 20 73 69 7a 65 6f 66 28 5f 5f 76  ZE) > sizeof(__v
6270: 61 77 6f 72 64 29 20 26 26 20 28 4c 49 53 54 29  aword) && (LIST)
6280: 2d 3e 61 70 74 72 20 3e 3d 20 28 6c 6f 6e 67 29  ->aptr >= (long)
6290: 26 28 4c 49 53 54 29 2d 3e 72 65 67 61 72 67 5b  &(LIST)->regarg[
62a0: 34 5d 29 29 20 5c 0a 20 20 20 20 3f 20 28 28 4c  4])) \.    ? ((L
62b0: 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c  IST)->onstack=1,
62c0: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20   (LIST)->aptr = 
62d0: 28 4c 49 53 54 29 2d 3e 73 61 70 74 72 29 20 3a  (LIST)->saptr) :
62e0: 20 30 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54   0),..\.   (LIST
62f0: 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f  )->aptr += __va_
6300: 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a  argsize(TYPE_SIZ
6310: 45 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  E),....\.   (LIS
6320: 54 29 2d 3e 61 70 74 72 20 2d 20 28 28 54 59 50  T)->aptr - ((TYP
6330: 45 5f 53 49 5a 45 29 20 3c 20 73 69 7a 65 6f 66  E_SIZE) < sizeof
6340: 28 5f 5f 76 61 77 6f 72 64 29 09 09 09 5c 0a 09  (__vaword)...\..
6350: 09 20 20 20 3f 20 28 54 59 50 45 5f 53 49 5a 45  .   ? (TYPE_SIZE
6360: 29 09 09 09 09 09 5c 0a 09 09 20 20 20 3a 20 5f  ).....\...   : _
6370: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
6380: 5f 53 49 5a 45 29 09 09 09 09 5c 0a 09 09 20 20  _SIZE)....\...  
6390: 29 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65  ).......\.  ).#e
63a0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
63b0: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c  (__mipsn32__) ||
63c0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36   defined(__mips6
63d0: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
63e0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20  __sparc64__)./* 
63f0: 61 72 67 73 20 67 72 6f 77 20 75 70 20 2a 2f 0a  args grow up */.
6400: 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  /* small structu
6410: 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65  res < 1 word are
6420: 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64   adjusted depend
6430: 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20  ing on compiler 
6440: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
6450: 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64  arg_leftadjusted
6460: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
6470: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
6480: 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 2b   ((LIST)->anum +
6490: 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  = __va_argsize(T
64a0: 59 50 45 5f 53 49 5a 45 29 2f 73 69 7a 65 6f 66  YPE_SIZE)/sizeof
64b0: 28 5f 5f 76 61 77 6f 72 64 29 2c 09 09 5c 0a 20  (__vaword),..\. 
64c0: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
64d0: 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  = __va_argsize(T
64e0: 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a  YPE_SIZE),....\.
64f0: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
6500: 2d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  - __va_argsize(T
6510: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20  YPE_SIZE)....\. 
6520: 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f   ).#define __va_
6530: 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65  arg_rightadjuste
6540: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
6550: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a  ,TYPE_ALIGN)  \.
6560: 20 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20    ((LIST)->anum 
6570: 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28  += __va_argsize(
6580: 54 59 50 45 5f 53 49 5a 45 29 2f 73 69 7a 65 6f  TYPE_SIZE)/sizeo
6590: 66 28 5f 5f 76 61 77 6f 72 64 29 2c 09 09 5c 0a  f(__vaword),..\.
65a0: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
65b0: 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28  += __va_argsize(
65c0: 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c  TYPE_SIZE),....\
65d0: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
65e0: 20 2d 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   - ((TYPE_SIZE) 
65f0: 3c 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  < sizeof(__vawor
6600: 64 29 09 09 09 5c 0a 09 09 20 20 20 3f 20 28 54  d)...\...   ? (T
6610: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a  YPE_SIZE).....\.
6620: 09 09 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 73  ..   : __va_args
6630: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09  ize(TYPE_SIZE)..
6640: 09 09 5c 0a 09 09 20 20 29 09 09 09 09 09 09 09  ..\...  ).......
6650: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
6660: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f   defined(__hppa_
6670: 5f 29 0a 2f 2a 20 61 72 67 73 20 67 72 6f 77 20  _)./* args grow 
6680: 64 6f 77 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  down */.#define 
6690: 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a  __va_arg_leftadj
66a0: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
66b0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
66c0: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 61    \.  ((LIST)->a
66d0: 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e 61 70  ptr = (LIST)->ap
66e0: 74 72 20 2d 20 5f 5f 76 61 5f 61 72 67 73 69 7a  tr - __va_argsiz
66f0: 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 5c  e(TYPE_SIZE),..\
6700: 0a 20 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  .   ((TYPE_SIZE)
6710: 20 3e 20 34 20 26 26 20 28 28 4c 49 53 54 29 2d   > 4 && ((LIST)-
6720: 3e 61 70 74 72 20 26 3d 20 2d 38 29 29 2c 09 09  >aptr &= -8)),..
6730: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61  ..\.   (LIST)->a
6740: 70 74 72 09 09 09 09 09 09 09 09 5c 0a 20 20 29  ptr........\.  )
6750: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
6760: 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28  g_rightadjusted(
6770: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
6780: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
6790: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20  ((LIST)->aptr = 
67a0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f  (LIST)->aptr - _
67b0: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
67c0: 5f 53 49 5a 45 29 2c 09 09 5c 0a 20 20 20 28 28  _SIZE),..\.   ((
67d0: 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 34 20 26  TYPE_SIZE) > 4 &
67e0: 26 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  & ((LIST)->aptr 
67f0: 26 3d 20 2d 38 29 29 2c 09 09 09 09 5c 0a 20 20  &= -8)),....\.  
6800: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 20   (LIST)->aptr + 
6810: 28 28 2d 28 54 59 50 45 5f 53 49 5a 45 29 29 20  ((-(TYPE_SIZE)) 
6820: 26 20 33 29 09 09 09 09 09 5c 0a 20 20 29 0a 23  & 3).....\.  ).#
6830: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
6840: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64  d(__i386__) || d
6850: 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f  efined(__alpha__
6860: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69  ) || defined(__i
6870: 61 36 34 5f 5f 29 0a 2f 2a 20 6c 69 74 74 6c 65  a64__)./* little
6880: 20 65 6e 64 69 61 6e 20 2d 3e 20 73 6d 61 6c 6c   endian -> small
6890: 20 61 72 67 73 20 3c 20 31 20 77 6f 72 64 20 61   args < 1 word a
68a0: 72 65 20 61 64 6a 75 73 74 65 64 20 74 6f 20 74  re adjusted to t
68b0: 68 65 20 6c 65 66 74 20 2a 2f 0a 23 64 65 66 69  he left */.#defi
68c0: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 61 64 6a 75  ne __va_arg_adju
68d0: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53  sted(LIST,TYPE_S
68e0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
68f0: 20 5c 0a 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65   \.  __va_arg_le
6900: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
6910: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
6920: 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a 23 69 66  LIGN).#endif.#if
6930: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
6940: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
6950: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
6960: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
6970: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
6980: 70 61 72 63 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  parc__) || defin
6990: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20  ed(__sparc64__) 
69a0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  || defined(__hpp
69b0: 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  a__) || defined(
69c0: 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64 65 66 69  __arm__) || defi
69d0: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
69e0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38  || defined(__m88
69f0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
6a00: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
6a10: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
6a20: 0a 2f 2a 20 62 69 67 20 65 6e 64 69 61 6e 20 2d  ./* big endian -
6a30: 3e 20 73 6d 61 6c 6c 20 61 72 67 73 20 3c 20 31  > small args < 1
6a40: 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74   word are adjust
6a50: 65 64 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  ed to the right 
6a60: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
6a70: 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c 49 53  arg_adjusted(LIS
6a80: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
6a90: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 5f 5f 76  _ALIGN)  \.  __v
6aa0: 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73  a_arg_rightadjus
6ab0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
6ac0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a 23  ZE,TYPE_ALIGN).#
6ad0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
6ae0: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21  d(__mips__) && !
6af0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
6b00: 32 5f 5f 29 0a 2f 2a 20 62 69 67 20 65 6e 64 69  2__)./* big endi
6b10: 61 6e 20 2d 3e 20 73 6d 61 6c 6c 20 61 72 67 73  an -> small args
6b20: 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64   < 1 word are ad
6b30: 6a 75 73 74 65 64 20 74 6f 20 74 68 65 20 72 69  justed to the ri
6b40: 67 68 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  ght */.#define _
6b50: 5f 76 61 5f 61 72 67 5f 61 64 6a 75 73 74 65 64  _va_arg_adjusted
6b60: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
6b70: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
6b80: 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b   ((LIST)->anum++
6b90: 2c 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74  , __va_arg_right
6ba0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
6bb0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
6bc0: 47 4e 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  GN)).#endif.#if 
6bd0: 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34  defined(__x86_64
6be0: 5f 5f 29 0a 2f 2a 20 74 68 65 20 66 69 72 73 74  __)./* the first
6bf0: 20 36 20 61 72 67 75 6d 65 6e 74 20 77 6f 72 64   6 argument word
6c00: 73 20 61 72 65 20 70 61 73 73 65 64 20 69 6e 20  s are passed in 
6c10: 72 65 67 69 73 74 65 72 73 20 2a 2f 0a 23 64 65  registers */.#de
6c20: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 61 64  fine __va_arg_ad
6c30: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
6c40: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
6c50: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
6c60: 6d 65 6d 69 61 72 67 70 74 72 20 2b 20 28 28 54  memiargptr + ((T
6c70: 59 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65  YPE_SIZE) + size
6c80: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2d 31 29 20  of(__vaword)-1) 
6c90: 2f 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  / sizeof(__vawor
6ca0: 64 29 20 3c 3d 20 26 28 4c 49 53 54 29 2d 3e 69  d) <= &(LIST)->i
6cb0: 61 72 67 5b 36 5d 20 5c 0a 20 20 20 3f 20 28 28  arg[6] \.   ? ((
6cc0: 4c 49 53 54 29 2d 3e 6d 65 6d 69 61 72 67 70 74  LIST)->memiargpt
6cd0: 72 20 2b 3d 20 28 28 54 59 50 45 5f 53 49 5a 45  r += ((TYPE_SIZE
6ce0: 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77  ) + sizeof(__vaw
6cf0: 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f 66  ord)-1) / sizeof
6d00: 28 5f 5f 76 61 77 6f 72 64 29 2c 20 5c 0a 20 20  (__vaword), \.  
6d10: 20 20 20 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 69      (LIST)->memi
6d20: 61 72 67 70 74 72 20 2d 20 28 28 54 59 50 45 5f  argptr - ((TYPE_
6d30: 53 49 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f  SIZE) + sizeof(_
6d40: 5f 76 61 77 6f 72 64 29 2d 31 29 20 2f 20 73 69  _vaword)-1) / si
6d50: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 5c  zeof(__vaword) \
6d60: 0a 20 20 20 20 20 29 09 09 09 09 09 09 09 09 09  .     ).........
6d70: 5c 0a 20 20 20 3a 20 28 76 6f 69 64 2a 29 5f 5f  \.   : (void*)__
6d80: 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73  va_arg_leftadjus
6d90: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
6da0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
6db0: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 64 65  \.  ).#endif.#de
6dc0: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 28 4c 49  fine __va_arg(LI
6dd0: 53 54 2c 54 59 50 45 29 20 20 5c 0a 20 20 2a 28  ST,TYPE)  \.  *(
6de0: 54 59 50 45 2a 29 5f 5f 76 61 5f 61 72 67 5f 61  TYPE*)__va_arg_a
6df0: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 73 69 7a  djusted(LIST,siz
6e00: 65 6f 66 28 54 59 50 45 29 2c 5f 5f 56 41 5f 61  eof(TYPE),__VA_a
6e10: 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 0a 0a 2f  lignof(TYPE))../
6e20: 2a 20 49 6e 74 65 67 65 72 20 61 72 67 75 6d 65  * Integer argume
6e30: 6e 74 73 2e 20 2a 2f 0a 0a 23 64 65 66 69 6e 65  nts. */..#define
6e40: 20 76 61 5f 61 72 67 5f 63 68 61 72 28 4c 49 53   va_arg_char(LIS
6e50: 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54  T).__va_arg(LIST
6e60: 2c 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20 76  ,char).#define v
6e70: 61 5f 61 72 67 5f 73 63 68 61 72 28 4c 49 53 54  a_arg_schar(LIST
6e80: 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c  ).__va_arg(LIST,
6e90: 73 69 67 6e 65 64 20 63 68 61 72 29 0a 23 64 65  signed char).#de
6ea0: 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 63 68 61  fine va_arg_ucha
6eb0: 72 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67  r(LIST).__va_arg
6ec0: 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 63  (LIST,unsigned c
6ed0: 68 61 72 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  har).#define va_
6ee0: 61 72 67 5f 73 68 6f 72 74 28 4c 49 53 54 29 09  arg_short(LIST).
6ef0: 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 73 68  __va_arg(LIST,sh
6f00: 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  ort).#define va_
6f10: 61 72 67 5f 75 73 68 6f 72 74 28 4c 49 53 54 29  arg_ushort(LIST)
6f20: 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 75  .__va_arg(LIST,u
6f30: 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 29 0a 23  nsigned short).#
6f40: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 69 6e  define va_arg_in
6f50: 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67  t(LIST).__va_arg
6f60: 28 4c 49 53 54 2c 69 6e 74 29 0a 23 64 65 66 69  (LIST,int).#defi
6f70: 6e 65 20 76 61 5f 61 72 67 5f 75 69 6e 74 28 4c  ne va_arg_uint(L
6f80: 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49  IST).__va_arg(LI
6f90: 53 54 2c 75 6e 73 69 67 6e 65 64 20 69 6e 74 29  ST,unsigned int)
6fa0: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
6fb0: 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76 61 5f  long(LIST).__va_
6fc0: 61 72 67 28 4c 49 53 54 2c 6c 6f 6e 67 29 0a 23  arg(LIST,long).#
6fd0: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 6c  define va_arg_ul
6fe0: 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61  ong(LIST).__va_a
6ff0: 72 67 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64  rg(LIST,unsigned
7000: 20 6c 6f 6e 67 29 0a 0a 23 69 66 20 64 65 66 69   long)..#if defi
7010: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20  ned(__mips64__) 
7020: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  || defined(__spa
7030: 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  rc64__) || defin
7040: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c  ed(__alpha__) ||
7050: 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f   defined(__ia64_
7060: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
7070: 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 60 6c 6f  x86_64__)./* `lo
7080: 6e 67 20 6c 6f 6e 67 27 20 61 6e 64 20 60 6c 6f  ng long' and `lo
7090: 6e 67 27 20 61 72 65 20 69 64 65 6e 74 69 63 61  ng' are identica
70a0: 6c 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61  l. */.#define va
70b0: 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 09 09 76  _arg_longlong..v
70c0: 61 5f 61 72 67 5f 6c 6f 6e 67 0a 23 64 65 66 69  a_arg_long.#defi
70d0: 6e 65 20 76 61 5f 61 72 67 5f 75 6c 6f 6e 67 6c  ne va_arg_ulongl
70e0: 6f 6e 67 09 76 61 5f 61 72 67 5f 75 6c 6f 6e 67  ong.va_arg_ulong
70f0: 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f  .#elif defined(_
7100: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 60  _mipsn32__)./* `
7110: 6c 6f 6e 67 20 6c 6f 6e 67 27 20 66 69 74 73 20  long long' fits 
7120: 69 6e 20 5f 5f 76 61 77 6f 72 64 2e 20 2a 2f 0a  in __vaword. */.
7130: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 6c  #define va_arg_l
7140: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f  onglong(LIST).__
7150: 76 61 5f 61 72 67 28 4c 49 53 54 2c 6c 6f 6e 67  va_arg(LIST,long
7160: 20 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 76   long).#define v
7170: 61 5f 61 72 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 28  a_arg_ulonglong(
7180: 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c  LIST).__va_arg(L
7190: 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c 6f 6e  IST,unsigned lon
71a0: 67 20 6c 6f 6e 67 29 0a 23 65 6c 69 66 20 64 65  g long).#elif de
71b0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
71c0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  || defined(__m68
71d0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
71e0: 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 28 64 65  __mips__) || (de
71f0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
7200: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
7210: 70 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65  parc64__)) || de
7220: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20  fined(__hppa__) 
7230: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
7240: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
7250: 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65  _rs6000__) || de
7260: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20  fined(__m88k__) 
7270: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e  || defined(__con
7280: 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  vex__) || define
7290: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 60  d(__s390__)./* `
72a0: 6c 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72 65 20  long long's are 
72b0: 70 61 73 73 65 64 20 65 6d 62 65 64 64 65 64 20  passed embedded 
72c0: 6f 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b  on the arg stack
72d0: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f  . */.#define va_
72e0: 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  arg_longlong(LIS
72f0: 54 29 09 5f 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67  T).__va_arg_long
7300: 6c 6f 6e 67 28 4c 49 53 54 2c 6c 6f 6e 67 20 6c  long(LIST,long l
7310: 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  ong).#define va_
7320: 61 72 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  arg_ulonglong(LI
7330: 53 54 29 09 5f 5f 76 61 5f 61 72 67 5f 6c 6f 6e  ST).__va_arg_lon
7340: 67 6c 6f 6e 67 28 4c 49 53 54 2c 75 6e 73 69 67  glong(LIST,unsig
7350: 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 0a 23  ned long long).#
7360: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
7370: 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  6__) || defined(
7380: 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m68k__) || def
7390: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
73a0: 20 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30   (defined(__rs60
73b0: 30 30 5f 5f 29 20 26 26 20 28 64 65 66 69 6e 65  00__) && (define
73c0: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
73d0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
73e0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
73f0: 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65  __)))) || define
7400: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 0a 2f 2a  d(__convex__)./*
7410: 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27 73 20 61 72   `long long's ar
7420: 65 20 28 61 74 20 6d 6f 73 74 29 20 77 6f 72 64  e (at most) word
7430: 2d 61 6c 69 67 6e 65 64 2e 20 2a 2f 0a 23 64 65  -aligned. */.#de
7440: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 6f  fine __va_arg_lo
7450: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45  nglong(LIST,TYPE
7460: 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c  ).__va_arg(LIST,
7470: 54 59 50 45 29 0a 23 65 6e 64 69 66 0a 23 69 66  TYPE).#endif.#if
7480: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
7490: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  _) || (defined(_
74a0: 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28  _rs6000__) && !(
74b0: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c  defined(_AIX) ||
74c0: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48   (defined(__MACH
74d0: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
74e0: 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c 7c 20  _APPLE__)))) || 
74f0: 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f  defined(__m88k__
7500: 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27  )./* `long long'
7510: 73 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74  s have alignment
7520: 20 38 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f   8. */.#define _
7530: 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67  _va_arg_longlong
7540: 28 4c 49 53 54 2c 54 59 50 45 29 09 09 09 09 09  (LIST,TYPE).....
7550: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74  \.  ((LIST)->apt
7560: 72 20 3d 20 28 28 28 4c 49 53 54 29 2d 3e 61 70  r = (((LIST)->ap
7570: 74 72 2b 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28  tr+__VA_alignof(
7580: 54 59 50 45 29 2d 31 29 20 26 20 2d 28 6c 6f 6e  TYPE)-1) & -(lon
7590: 67 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54  g)__VA_alignof(T
75a0: 59 50 45 29 29 2c 20 5c 0a 20 20 20 5f 5f 76 61  YPE)), \.   __va
75b0: 5f 61 72 67 28 4c 49 53 54 2c 54 59 50 45 29 29  _arg(LIST,TYPE))
75c0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 28 64 65 66  .#endif.#if (def
75d0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
75e0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
75f0: 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66  arc64__)) || def
7600: 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f  ined(__s390__)./
7610: 2a 20 57 69 74 68 69 6e 20 74 68 65 20 61 72 67  * Within the arg
7620: 20 73 74 61 63 6b 2c 20 74 68 65 20 61 6c 69 67   stack, the alig
7630: 6e 6d 65 6e 74 20 69 73 20 6f 6e 6c 79 20 34 2c  nment is only 4,
7640: 20 6e 6f 74 20 38 2e 20 2a 2f 0a 2f 2a 20 42 65   not 8. */./* Be
7650: 77 61 72 65 20 61 67 61 69 6e 73 74 20 75 6e 61  ware against una
7660: 6c 69 67 6e 65 64 20 61 63 63 65 73 73 65 73 21  ligned accesses!
7670: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
7680: 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  _arg_longlong(LI
7690: 53 54 2c 54 59 50 45 29 09 09 09 09 09 5c 0a 20  ST,TYPE).....\. 
76a0: 20 28 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77   ((LIST)->tmp._w
76b0: 6f 72 64 73 5b 30 5d 20 3d 20 28 28 5f 5f 76 61  ords[0] = ((__va
76c0: 77 6f 72 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61  word*)((LIST)->a
76d0: 70 74 72 29 29 5b 30 5d 2c 09 09 5c 0a 20 20 20  ptr))[0],..\.   
76e0: 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77 6f 72  (LIST)->tmp._wor
76f0: 64 73 5b 31 5d 20 3d 20 28 28 5f 5f 76 61 77 6f  ds[1] = ((__vawo
7700: 72 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  rd*)((LIST)->apt
7710: 72 29 29 5b 31 5d 2c 09 09 5c 0a 20 20 20 28 4c  r))[1],..\.   (L
7720: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
7730: 7a 65 6f 66 28 54 59 50 45 29 2c 09 09 09 09 09  zeof(TYPE),.....
7740: 5c 0a 20 20 20 28 54 59 50 45 29 28 28 4c 49 53  \.   (TYPE)((LIS
7750: 54 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f 6e  T)->tmp._longlon
7760: 67 29 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e  g).....\.  ).#en
7770: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
7780: 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 60 6c 6f  __hppa__)./* `lo
7790: 6e 67 20 6c 6f 6e 67 27 73 20 68 61 76 65 20 61  ng long's have a
77a0: 6c 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f 0a 23  lignment 8. */.#
77b0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
77c0: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59  longlong(LIST,TY
77d0: 50 45 29 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  PE).....\.  ((LI
77e0: 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49  ST)->aptr = ((LI
77f0: 53 54 29 2d 3e 61 70 74 72 20 26 20 2d 28 6c 6f  ST)->aptr & -(lo
7800: 6e 67 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28  ng)__VA_alignof(
7810: 54 59 50 45 29 29 2c 09 09 5c 0a 20 20 20 5f 5f  TYPE)),..\.   __
7820: 76 61 5f 61 72 67 28 4c 49 53 54 2c 54 59 50 45  va_arg(LIST,TYPE
7830: 29 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  )).#endif.#endif
7840: 0a 0a 2f 2a 20 46 6c 6f 61 74 69 6e 67 20 70 6f  ../* Floating po
7850: 69 6e 74 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a  int arguments. *
7860: 2f 0a 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  /..#define va_ar
7870: 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c  g_float(LIST)  \
7880: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  .  ((LIST)->flag
7890: 73 20 26 20 5f 5f 56 41 5f 54 52 41 44 49 54 49  s & __VA_TRADITI
78a0: 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 09  ONAL_FLOAT_ARGS.
78b0: 09 09 09 5c 0a 20 20 20 3f 20 28 66 6c 6f 61 74  ...\.   ? (float
78c0: 29 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c  )va_arg_double(L
78d0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 3a  IST)......\.   :
78e0: 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28   __va_arg_float(
78f0: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 29  LIST)......\.  )
7900: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
7910: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
7920: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
7930: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
7940: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
7950: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
7960: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
7970: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
7980: 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66  parc64__) || def
7990: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
79a0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
79b0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
79c0: 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65  _rs6000__) || de
79d0: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f  fined(__convex__
79e0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69  ) || defined(__i
79f0: 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  a64__) || define
7a00: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c  d(__x86_64__) ||
7a10: 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f   defined(__s390_
7a20: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  _).#define __va_
7a30: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
7a40: 54 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  T).#endif.#if de
7a50: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20  fined(__mips__) 
7a60: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69  && !defined(__mi
7a70: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69  psn32__) || defi
7a80: 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 2f 2a  ned(__m88k__)./*
7a90: 20 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 64 6f   __VA_alignof(do
7aa0: 75 62 6c 65 29 20 3e 20 73 69 7a 65 6f 66 28 5f  uble) > sizeof(_
7ab0: 5f 76 61 77 6f 72 64 29 20 2a 2f 0a 23 64 65 66  _vaword) */.#def
7ac0: 69 6e 65 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64  ine __va_align_d
7ad0: 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20  ouble(LIST)  \. 
7ae0: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20   (LIST)->aptr = 
7af0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 20  ((LIST)->aptr + 
7b00: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2d 31  sizeof(double)-1
7b10: 29 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f  ) & -(long)sizeo
7b20: 66 28 64 6f 75 62 6c 65 29 2c 0a 23 65 6e 64 69  f(double),.#endi
7b30: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
7b40: 68 70 70 61 5f 5f 29 0a 23 64 65 66 69 6e 65 20  hppa__).#define 
7b50: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
7b60: 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 4c 49  e(LIST)  \.  (LI
7b70: 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53  ST)->aptr = (LIS
7b80: 54 29 2d 3e 61 70 74 72 20 26 20 2d 28 6c 6f 6e  T)->aptr & -(lon
7b90: 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  g)sizeof(double)
7ba0: 2c 0a 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65  ,.#endif..#if de
7bb0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
7bc0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
7bd0: 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 42 65 77  parc64__)./* Bew
7be0: 61 72 65 20 61 67 61 69 6e 73 74 20 75 6e 61 6c  are against unal
7bf0: 69 67 6e 65 64 20 60 64 6f 75 62 6c 65 27 20 61  igned `double' a
7c00: 63 63 65 73 73 65 73 21 20 2a 2f 0a 23 64 65 66  ccesses! */.#def
7c10: 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c  ine va_arg_doubl
7c20: 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f  e(LIST)  \.  (__
7c30: 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28  va_align_double(
7c40: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
7c50: 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 77 6f 72  (LIST)->tmp._wor
7c60: 64 73 5b 30 5d 20 3d 20 28 28 5f 5f 76 61 77 6f  ds[0] = ((__vawo
7c70: 72 64 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  rd*)((LIST)->apt
7c80: 72 29 29 5b 30 5d 2c 09 09 5c 0a 20 20 20 28 4c  r))[0],..\.   (L
7c90: 49 53 54 29 2d 3e 74 6d 70 2e 5f 77 6f 72 64 73  IST)->tmp._words
7ca0: 5b 31 5d 20 3d 20 28 28 5f 5f 76 61 77 6f 72 64  [1] = ((__vaword
7cb0: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 29  *)((LIST)->aptr)
7cc0: 29 5b 31 5d 2c 09 09 5c 0a 20 20 20 28 4c 49 53  )[1],..\.   (LIS
7cd0: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65  T)->aptr += size
7ce0: 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09 09 09 09  of(double),.....
7cf0: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 74 6d 70  \.   (LIST)->tmp
7d00: 2e 5f 64 6f 75 62 6c 65 09 09 09 09 09 09 09 5c  ._double.......\
7d10: 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  .  ).#endif.#if 
7d20: 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f  defined(__alpha_
7d30: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
7d40: 36 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  6 floating point
7d50: 20 72 65 67 69 73 74 65 72 73 20 68 61 76 65 20   registers have 
7d60: 62 65 65 6e 20 73 74 6f 72 65 64 20 69 6e 20 61  been stored in a
7d70: 6e 6f 74 68 65 72 20 70 6c 61 63 65 2e 20 2a 2f  nother place. */
7d80: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
7d90: 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a  double(LIST)  \.
7da0: 20 20 28 28 28 4c 49 53 54 29 2d 3e 61 70 74 72    (((LIST)->aptr
7db0: 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   += sizeof(doubl
7dc0: 65 29 29 20 3c 3d 20 28 4c 49 53 54 29 2d 3e 6d  e)) <= (LIST)->m
7dd0: 65 6d 61 72 67 70 74 72 09 09 5c 0a 20 20 20 3f  emargptr..\.   ?
7de0: 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53   *(double*)((LIS
7df0: 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f  T)->aptr - sizeo
7e00: 66 28 64 6f 75 62 6c 65 29 20 2d 20 36 2a 73 69  f(double) - 6*si
7e10: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 5c 0a  zeof(double)).\.
7e20: 20 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a 29 28     : *(double*)(
7e30: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73  (LIST)->aptr - s
7e40: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09  izeof(double))..
7e50: 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20  ..\.  ).#define 
7e60: 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c  __va_arg_float(L
7e70: 49 53 54 29 20 20 5c 0a 20 20 28 28 28 4c 49 53  IST)  \.  (((LIS
7e80: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65  T)->aptr += size
7e90: 6f 66 28 64 6f 75 62 6c 65 29 29 20 3c 3d 20 28  of(double)) <= (
7ea0: 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70 74 72  LIST)->memargptr
7eb0: 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 54 68 65 20  ..\.   ? /* The 
7ec0: 66 69 72 73 74 20 36 20 61 72 67 73 20 68 61 76  first 6 args hav
7ed0: 65 20 62 65 65 6e 20 70 75 74 20 69 6e 74 6f 20  e been put into 
7ee0: 6d 65 6d 6f 72 79 20 62 79 20 22 73 74 74 22 20  memory by "stt" 
7ef0: 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 2a 2f 5c  instructions */\
7f00: 0a 20 20 20 20 20 2f 2a 20 28 73 65 65 20 76 61  .     /* (see va
7f10: 63 61 6c 6c 2d 61 6c 70 68 61 2e 73 21 29 2e 20  call-alpha.s!). 
7f20: 54 68 65 72 65 66 6f 72 65 20 6c 6f 61 64 20 74  Therefore load t
7f30: 68 65 6d 20 61 73 20 64 6f 75 62 6c 65 73 2e 20  hem as doubles. 
7f40: 2a 2f 09 5c 0a 20 20 20 20 20 2f 2a 20 57 68 65  */.\.     /* Whe
7f50: 6e 20 76 69 65 77 65 64 20 61 73 20 66 6c 6f 61  n viewed as floa
7f60: 74 73 2c 20 74 68 65 20 76 61 6c 75 65 20 77 69  ts, the value wi
7f70: 6c 6c 20 62 65 20 74 68 65 20 63 6f 72 72 65 63  ll be the correc
7f80: 74 20 6f 6e 65 2e 20 2a 2f 09 5c 0a 20 20 20 20  t one. */.\.    
7f90: 20 28 66 6c 6f 61 74 29 2a 28 64 6f 75 62 6c 65   (float)*(double
7fa0: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
7fb0: 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  - sizeof(double)
7fc0: 20 2d 20 36 2a 73 69 7a 65 6f 66 28 64 6f 75 62   - 6*sizeof(doub
7fd0: 6c 65 29 29 20 5c 0a 20 20 20 3a 20 2f 2a 20 54  le)) \.   : /* T
7fe0: 68 65 73 65 20 61 72 67 73 20 68 61 76 65 20 62  hese args have b
7ff0: 65 65 6e 20 70 75 74 20 69 6e 74 6f 20 6d 65 6d  een put into mem
8000: 6f 72 79 20 62 79 20 22 73 74 73 22 20 69 6e 73  ory by "sts" ins
8010: 74 72 75 63 74 69 6f 6e 73 2c 20 2a 2f 09 5c 0a  tructions, */.\.
8020: 20 20 20 20 20 2f 2a 20 74 68 65 72 65 66 6f 72       /* therefor
8030: 65 20 6c 6f 61 64 20 74 68 65 6d 20 61 73 20 66  e load them as f
8040: 6c 6f 61 74 73 2e 20 2a 2f 09 09 09 09 5c 0a 20  loats. */....\. 
8050: 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c      *(float*)((L
8060: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a  IST)->aptr - siz
8070: 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09 09  eof(double))....
8080: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
8090: 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f   defined(__hppa_
80a0: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
80b0: 34 20 66 6c 6f 61 74 20 72 65 67 69 73 74 65 72  4 float register
80c0: 73 20 61 6e 64 20 74 68 65 20 66 69 72 73 74 20  s and the first 
80d0: 32 20 64 6f 75 62 6c 65 20 72 65 67 69 73 74 65  2 double registe
80e0: 72 73 20 61 72 65 20 73 74 6f 72 65 64 0a 20 2a  rs are stored. *
80f0: 20 65 6c 73 65 77 68 65 72 65 2e 0a 20 2a 2f 0a   elsewhere.. */.
8100: 23 69 66 20 31 20 2f 2a 20 67 63 63 2d 32 2e 35  #if 1 /* gcc-2.5
8110: 2e 32 20 70 61 73 73 65 73 20 74 68 65 73 65 20  .2 passes these 
8120: 61 72 67 73 20 69 6e 20 67 65 6e 65 72 61 6c 20  args in general 
8130: 72 65 67 69 73 74 65 72 73 21 20 41 20 62 75 67  registers! A bug
8140: 2c 20 49 20 74 68 69 6e 6b 2e 20 2a 2f 0a 23 64  , I think. */.#d
8150: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66  efine __va_arg_f
8160: 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20  loat(LIST)  \.  
8170: 28 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54  (*(float*)((LIST
8180: 29 2d 3e 61 70 74 72 20 2d 3d 20 73 69 7a 65 6f  )->aptr -= sizeo
8190: 66 28 66 6c 6f 61 74 29 29 29 0a 23 64 65 66 69  f(float))).#defi
81a0: 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65  ne va_arg_double
81b0: 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76  (LIST)  \.  (__v
81c0: 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c  a_align_double(L
81d0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 2a  IST)......\.   *
81e0: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
81f0: 2d 3e 61 70 74 72 20 2d 3d 20 73 69 7a 65 6f 66  ->aptr -= sizeof
8200: 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20  (double))....\. 
8210: 20 29 0a 23 65 6c 73 65 20 2f 2a 20 74 68 69 73   ).#else /* this
8220: 20 77 6f 75 6c 64 20 62 65 20 63 6f 72 72 65 63   would be correc
8230: 74 20 69 66 20 74 68 65 20 61 72 67 73 20 77 65  t if the args we
8240: 72 65 20 70 61 73 73 65 64 20 69 6e 20 66 6c 6f  re passed in flo
8250: 61 74 20 72 65 67 69 73 74 65 72 73 2e 20 2a 2f  at registers. */
8260: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
8270: 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c  g_float(LIST)  \
8280: 0a 20 20 28 28 28 4c 49 53 54 29 2d 3e 61 70 74  .  (((LIST)->apt
8290: 72 20 2d 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61  r -= sizeof(floa
82a0: 74 29 29 20 3e 3d 20 28 4c 49 53 54 29 2d 3e 6d  t)) >= (LIST)->m
82b0: 65 6d 61 72 67 70 74 72 09 09 09 5c 0a 20 20 20  emargptr...\.   
82c0: 3f 20 2f 2a 20 54 68 65 20 66 69 72 73 74 20 34  ? /* The first 4
82d0: 20 66 6c 6f 61 74 20 61 72 67 73 20 61 72 65 20   float args are 
82e0: 73 74 6f 72 65 64 20 73 65 70 61 72 61 74 65 6c  stored separatel
82f0: 79 2e 20 2a 2f 09 09 5c 0a 20 20 20 20 20 2a 28  y. */..\.     *(
8300: 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e  float*)((LIST)->
8310: 61 70 74 72 20 2b 20 28 4c 49 53 54 29 2d 3e 66  aptr + (LIST)->f
8320: 61 72 67 5f 6f 66 66 73 65 74 29 09 09 09 5c 0a  arg_offset)...\.
8330: 20 20 20 3a 20 2a 28 66 6c 6f 61 74 2a 29 28 28     : *(float*)((
8340: 4c 49 53 54 29 2d 3e 61 70 74 72 29 09 09 09 09  LIST)->aptr)....
8350: 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20  ..\.  ).#define 
8360: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49  va_arg_double(LI
8370: 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61  ST)  \.  (__va_a
8380: 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54  lign_double(LIST
8390: 29 09 09 09 09 09 09 5c 0a 20 20 20 28 28 28 4c  )......\.   (((L
83a0: 49 53 54 29 2d 3e 61 70 74 72 20 2d 3d 20 73 69  IST)->aptr -= si
83b0: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 3e 3d  zeof(double)) >=
83c0: 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70   (LIST)->memargp
83d0: 74 72 09 09 5c 0a 20 20 20 20 3f 20 2f 2a 20 54  tr..\.    ? /* T
83e0: 68 65 20 66 69 72 73 74 20 32 20 64 6f 75 62 6c  he first 2 doubl
83f0: 65 20 61 72 67 73 20 61 72 65 20 73 74 6f 72 65  e args are store
8400: 64 20 73 65 70 61 72 61 74 65 6c 79 2e 20 2a 2f  d separately. */
8410: 09 09 5c 0a 20 20 20 20 20 20 2a 28 64 6f 75 62  ..\.      *(doub
8420: 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  le*)((LIST)->apt
8430: 72 20 2b 20 28 4c 49 53 54 29 2d 3e 64 61 72 67  r + (LIST)->darg
8440: 5f 6f 66 66 73 65 74 29 09 09 09 5c 0a 20 20 20  _offset)...\.   
8450: 20 3a 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c   : *(double*)((L
8460: 49 53 54 29 2d 3e 61 70 74 72 29 09 09 09 09 09  IST)->aptr).....
8470: 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23  .\.  )).#endif.#
8480: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
8490: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21  d(__mips__) && !
84a0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
84b0: 32 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73  2__)./* The firs
84c0: 74 20 30 2c 31 2c 32 20 72 65 67 69 73 74 65 72  t 0,1,2 register
84d0: 73 20 61 72 65 20 73 74 6f 72 65 64 20 65 6c 73  s are stored els
84e0: 65 77 68 65 72 65 20 69 66 20 74 68 65 79 20 61  ewhere if they a
84f0: 72 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  re floating-poin
8500: 74 0a 20 2a 20 70 61 72 61 6d 65 74 65 72 73 2e  t. * parameters.
8510: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
8520: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54  a_arg_float(LIST
8530: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
8540: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 66  aptr += sizeof(f
8550: 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a 20 20 20  loat),.....\.   
8560: 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 09  (LIST)->anum++,.
8570: 09 09 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53  ......\.   ((LIS
8580: 54 29 2d 3e 61 6e 75 6d 20 3d 3d 20 31 09 09 09  T)->anum == 1...
8590: 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 28 4c 49  ....\.    ? ((LI
85a0: 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f  ST)->flags |= __
85b0: 56 41 5f 46 4c 4f 41 54 5f 31 2c 20 28 4c 49 53  VA_FLOAT_1, (LIS
85c0: 54 29 2d 3e 66 61 72 67 5b 30 5d 29 09 09 09 5c  T)->farg[0])...\
85d0: 0a 20 20 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e  .    : ((LIST)->
85e0: 61 6e 75 6d 20 3d 3d 20 32 20 26 26 20 28 28 4c  anum == 2 && ((L
85f0: 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f  IST)->flags & __
8600: 56 41 5f 46 4c 4f 41 54 5f 31 29 09 09 5c 0a 20  VA_FLOAT_1)..\. 
8610: 20 20 20 20 20 20 3f 20 28 2f 2a 20 28 4c 49 53        ? (/* (LIS
8620: 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56  T)->flags |= __V
8630: 41 5f 46 4c 4f 41 54 5f 32 2c 20 2a 2f 20 28 4c  A_FLOAT_2, */ (L
8640: 49 53 54 29 2d 3e 66 61 72 67 5b 31 5d 29 09 09  IST)->farg[1])..
8650: 5c 0a 20 20 20 20 20 20 20 3a 20 2a 28 66 6c 6f  \.       : *(flo
8660: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
8670: 72 20 2d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74  r - sizeof(float
8680: 29 29 09 09 09 5c 0a 20 20 29 29 20 20 29 0a 23  ))...\.  ))  ).#
8690: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f  define va_arg_do
86a0: 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20  uble(LIST)  \.  
86b0: 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62  (__va_align_doub
86c0: 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  le(LIST)......\.
86d0: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
86e0: 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  += sizeof(double
86f0: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ),.....\.   (LIS
8700: 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09  T)->anum++,.....
8710: 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e  ..\.   ((LIST)->
8720: 61 6e 75 6d 20 3d 3d 20 31 09 09 09 09 09 09 09  anum == 1.......
8730: 5c 0a 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d  \.    ? ((LIST)-
8740: 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 46  >flags |= __VA_F
8750: 4c 4f 41 54 5f 31 2c 20 28 4c 49 53 54 29 2d 3e  LOAT_1, (LIST)->
8760: 64 61 72 67 5b 30 5d 29 09 09 09 5c 0a 20 20 20  darg[0])...\.   
8770: 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d   : ((LIST)->anum
8780: 20 3d 3d 20 32 20 26 26 20 28 28 4c 49 53 54 29   == 2 && ((LIST)
8790: 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 46  ->flags & __VA_F
87a0: 4c 4f 41 54 5f 31 29 09 09 5c 0a 20 20 20 20 20  LOAT_1)..\.     
87b0: 20 20 3f 20 28 2f 2a 20 28 4c 49 53 54 29 2d 3e    ? (/* (LIST)->
87c0: 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 46 4c  flags |= __VA_FL
87d0: 4f 41 54 5f 32 2c 20 2a 2f 20 28 4c 49 53 54 29  OAT_2, */ (LIST)
87e0: 2d 3e 64 61 72 67 5b 31 5d 29 09 09 5c 0a 20 20  ->darg[1])..\.  
87f0: 20 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a       : *(double*
8800: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d  )((LIST)->aptr -
8810: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29   sizeof(double))
8820: 09 09 09 5c 0a 20 20 29 29 20 20 29 0a 23 65 6e  ...\.  ))  ).#en
8830: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
8840: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
8850: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
8860: 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74  __)./* The first
8870: 20 30 2c 2e 2e 2c 38 20 72 65 67 69 73 74 65 72   0,..,8 register
8880: 73 20 61 72 65 20 73 74 6f 72 65 64 20 65 6c 73  s are stored els
8890: 65 77 68 65 72 65 20 69 66 20 74 68 65 79 20 61  ewhere if they a
88a0: 72 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  re floating-poin
88b0: 74 0a 20 2a 20 70 61 72 61 6d 65 74 65 72 73 2e  t. * parameters.
88c0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
88d0: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54  a_arg_float(LIST
88e0: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69  )  \.  (__va_ali
88f0: 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09  gn_double(LIST).
8900: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
8910: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
8920: 28 64 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a  (double),.....\.
8930: 20 20 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e     (++(LIST)->an
8940: 75 6d 20 3c 3d 20 38 09 09 09 09 09 09 09 5c 0a  um <= 8.......\.
8950: 20 20 20 20 3f 20 28 4c 49 53 54 29 2d 3e 66 61      ? (LIST)->fa
8960: 72 67 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20  rg[(LIST)->anum 
8970: 2d 20 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a  - 1].....\.    :
8980: 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54   *(float*)((LIST
8990: 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66  )->aptr - sizeof
89a0: 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20  (double))....\. 
89b0: 20 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61   )).#define va_a
89c0: 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20  rg_double(LIST) 
89d0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
89e0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09  _double(LIST)...
89f0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
8a00: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64  aptr += sizeof(d
8a10: 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20  ouble),.....\.  
8a20: 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d   (++(LIST)->anum
8a30: 20 3c 3d 20 38 09 09 09 09 09 09 09 5c 0a 20 20   <= 8.......\.  
8a40: 20 20 3f 20 28 4c 49 53 54 29 2d 3e 64 61 72 67    ? (LIST)->darg
8a50: 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 2d 20  [(LIST)->anum - 
8a60: 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a  1].....\.    : *
8a70: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
8a80: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
8a90: 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20  double))....\.  
8aa0: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
8ab0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
8ac0: 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20  _)./* The first 
8ad0: 30 2c 2e 2e 2c 31 36 20 72 65 67 69 73 74 65 72  0,..,16 register
8ae0: 73 20 61 72 65 20 73 74 6f 72 65 64 20 65 6c 73  s are stored els
8af0: 65 77 68 65 72 65 20 69 66 20 74 68 65 79 20 61  ewhere if they a
8b00: 72 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  re floating-poin
8b10: 74 0a 20 2a 20 70 61 72 61 6d 65 74 65 72 73 2e  t. * parameters.
8b20: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
8b30: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54  a_arg_float(LIST
8b40: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69  )  \.  (__va_ali
8b50: 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09  gn_double(LIST).
8b60: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
8b70: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
8b80: 28 64 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a  (double),.....\.
8b90: 20 20 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e     (++(LIST)->an
8ba0: 75 6d 20 3c 3d 20 31 36 09 09 09 09 09 09 5c 0a  um <= 16......\.
8bb0: 20 20 20 20 3f 20 28 4c 49 53 54 29 2d 3e 66 61      ? (LIST)->fa
8bc0: 72 67 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20  rg[(LIST)->anum 
8bd0: 2d 20 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a  - 1].....\.    :
8be0: 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54   *(float*)((LIST
8bf0: 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66  )->aptr - sizeof
8c00: 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20  (double))....\. 
8c10: 20 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61   )).#define va_a
8c20: 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20  rg_double(LIST) 
8c30: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
8c40: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09  _double(LIST)...
8c50: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
8c60: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64  aptr += sizeof(d
8c70: 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20  ouble),.....\.  
8c80: 20 28 2b 2b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d   (++(LIST)->anum
8c90: 20 3c 3d 20 31 36 09 09 09 09 09 09 5c 0a 20 20   <= 16......\.  
8ca0: 20 20 3f 20 28 4c 49 53 54 29 2d 3e 64 61 72 67    ? (LIST)->darg
8cb0: 5b 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 2d 20  [(LIST)->anum - 
8cc0: 31 5d 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a  1].....\.    : *
8cd0: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
8ce0: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
8cf0: 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20  double))....\.  
8d00: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
8d10: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
8d20: 29 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41  ) && (defined(_A
8d30: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
8d40: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
8d50: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
8d60: 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 31  )./* The first 1
8d70: 33 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  3 floating-point
8d80: 20 61 72 67 73 20 68 61 76 65 20 62 65 65 6e 20   args have been 
8d90: 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65  stored elsewhere
8da0: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
8db0: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54  a_arg_float(LIST
8dc0: 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e  )  \.  ((LIST)->
8dd0: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 66  aptr += sizeof(f
8de0: 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a 20 20 20  loat),.....\.   
8df0: 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67  ((LIST)->memfarg
8e00: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66  ptr < &(LIST)->f
8e10: 61 72 67 5b 31 33 5d 09 09 09 09 5c 0a 20 20 20  arg[13]....\.   
8e20: 20 3f 20 28 66 6c 6f 61 74 29 20 2a 28 28 4c 49   ? (float) *((LI
8e30: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b  ST)->memfargptr+
8e40: 2b 29 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a  +).....\.    : *
8e50: 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d  (float*)((LIST)-
8e60: 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 66  >aptr - sizeof(f
8e70: 6c 6f 61 74 29 29 09 09 09 09 5c 0a 20 20 29 29  loat))....\.  ))
8e80: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
8e90: 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a  double(LIST)  \.
8ea0: 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f    (__va_align_do
8eb0: 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09  uble(LIST)......
8ec0: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74  \.   (LIST)->apt
8ed0: 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62  r += sizeof(doub
8ee0: 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 28  le),.....\.   ((
8ef0: 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74  LIST)->memfargpt
8f00: 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72  r < &(LIST)->far
8f10: 67 5b 31 33 5d 09 09 09 09 5c 0a 20 20 20 20 3f  g[13]....\.    ?
8f20: 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61   *((LIST)->memfa
8f30: 72 67 70 74 72 2b 2b 29 09 09 09 09 09 09 5c 0a  rgptr++)......\.
8f40: 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a 29      : *(double*)
8f50: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20  ((LIST)->aptr - 
8f60: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09  sizeof(double)).
8f70: 09 09 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66  ...\.  )).#endif
8f80: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72  .#if defined(__r
8f90: 73 36 30 30 30 5f 5f 29 20 26 26 20 21 28 64 65  s6000__) && !(de
8fa0: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
8fb0: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
8fc0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
8fd0: 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 54 68 65  PPLE__)))./* The
8fe0: 20 66 69 72 73 74 20 38 20 66 6c 6f 61 74 69 6e   first 8 floatin
8ff0: 67 2d 70 6f 69 6e 74 20 61 72 67 73 20 68 61 76  g-point args hav
9000: 65 20 62 65 65 6e 20 73 74 6f 72 65 64 20 65 6c  e been stored el
9010: 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23 64 65 66  sewhere. */.#def
9020: 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f  ine __va_arg_flo
9030: 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  at(LIST)  \.  ((
9040: 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74  LIST)->memfargpt
9050: 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72  r < &(LIST)->far
9060: 67 5b 38 5d 09 09 09 09 5c 0a 20 20 20 3f 20 28  g[8]....\.   ? (
9070: 66 6c 6f 61 74 29 20 2a 28 28 4c 49 53 54 29 2d  float) *((LIST)-
9080: 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09  >memfargptr++)..
9090: 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54  ...\.   : ((LIST
90a0: 29 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54  )->aptr = ((LIST
90b0: 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20  )->onstack == 0 
90c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
90e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90f0: 20 20 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d        ? ((LIST)-
9100: 3e 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53  >onstack=1, (LIS
9110: 54 29 2d 3e 73 61 70 74 72 29 20 20 20 20 20 20  T)->saptr)      
9120: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20         \.       
9130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9140: 3a 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 20  : (LIST)->aptr  
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9170: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
9180: 20 20 20 20 20 20 20 20 20 29 2c 20 20 20 20 20           ),     
9190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91b0: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
91c0: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
91d0: 2b 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29  += sizeof(float)
91e0: 2c 09 09 09 09 09 5c 0a 20 20 20 20 20 20 2a 28  ,.....\.      *(
91f0: 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e  float*)((LIST)->
9200: 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 66 6c  aptr - sizeof(fl
9210: 6f 61 74 29 29 09 09 09 09 5c 0a 20 20 29 29 0a  oat))....\.  )).
9220: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64  #define va_arg_d
9230: 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20  ouble(LIST)  \. 
9240: 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72   ((LIST)->memfar
9250: 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e  gptr < &(LIST)->
9260: 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20 20 20  farg[8]....\.   
9270: 20 3f 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d   ? *((LIST)->mem
9280: 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09 09 09  fargptr++)......
9290: 5c 0a 20 20 20 20 3a 20 28 28 4c 49 53 54 29 2d  \.    : ((LIST)-
92a0: 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54 29 2d  >aptr = ((LIST)-
92b0: 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20 20 20  >onstack == 0   
92c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92d0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
92e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92f0: 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e     ? ((LIST)->on
9300: 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d  stack=1, (LIST)-
9310: 3e 73 61 70 74 72 29 20 20 20 20 20 20 20 20 20  >saptr)         
9320: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20      \.          
9330: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 28               : (
9340: 4c 49 53 54 29 2d 3e 61 70 74 72 20 20 20 20 20  LIST)->aptr     
9350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 20 20 20 20 20 20 29 2c 20 20 20 20 20 20 20 20        ),        
9390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93b0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
93c0: 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62   __va_align_doub
93d0: 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  le(LIST)......\.
93e0: 20 20 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 61         (LIST)->a
93f0: 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f  ptr += sizeof(do
9400: 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20 20  uble),.....\.   
9410: 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28      *(double*)((
9420: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69  LIST)->aptr - si
9430: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09  zeof(double))...
9440: 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69  \.  )).#endif.#i
9450: 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  f defined(__s390
9460: 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74  __)./* The first
9470: 20 32 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e   2 floating-poin
9480: 74 20 61 72 67 73 20 68 61 76 65 20 62 65 65 6e  t args have been
9490: 20 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72   stored elsewher
94a0: 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  e. */.#define __
94b0: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53  va_arg_float(LIS
94c0: 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  T)  \.  ((LIST)-
94d0: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
94e0: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 32 5d 09 09  LIST)->farg[2]..
94f0: 09 09 5c 0a 20 20 20 3f 20 28 4c 49 53 54 29 2d  ..\.   ? (LIST)-
9500: 3e 6d 65 6d 64 61 72 67 70 74 72 2b 2b 2c 20 28  >memdargptr++, (
9510: 66 6c 6f 61 74 29 20 2a 28 28 4c 49 53 54 29 2d  float) *((LIST)-
9520: 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09  >memfargptr++)..
9530: 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e  \.   : ((LIST)->
9540: 61 70 74 72 20 3d 20 28 28 4c 49 53 54 29 2d 3e  aptr = ((LIST)->
9550: 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20 20 20 20  onstack == 0    
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9570: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9590: 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e     ? ((LIST)->on
95a0: 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d  stack=1, (LIST)-
95b0: 3e 73 61 70 74 72 29 20 20 20 20 20 20 20 20 20  >saptr)         
95c0: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20      \.          
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 28               : (
95e0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 20 20 20 20  LIST)->aptr     
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
9610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9620: 20 20 20 20 20 20 29 2c 20 20 20 20 20 20 20 20        ),        
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9650: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
9660: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
9670: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 2c 09 09  sizeof(float),..
9680: 09 09 09 5c 0a 20 20 20 20 20 20 2a 28 66 6c 6f  ...\.      *(flo
9690: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
96a0: 72 20 2d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74  r - sizeof(float
96b0: 29 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 64 65  ))....\.  )).#de
96c0: 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62  fine va_arg_doub
96d0: 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  le(LIST)  \.  ((
96e0: 4c 49 53 54 29 2d 3e 6d 65 6d 64 61 72 67 70 74  LIST)->memdargpt
96f0: 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 64 61 72  r < &(LIST)->dar
9700: 67 5b 32 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20  g[2]....\.    ? 
9710: 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70  (LIST)->memfargp
9720: 74 72 2b 2b 2c 20 2a 28 28 4c 49 53 54 29 2d 3e  tr++, *((LIST)->
9730: 6d 65 6d 64 61 72 67 70 74 72 2b 2b 29 09 09 09  memdargptr++)...
9740: 5c 0a 20 20 20 20 3a 20 28 28 4c 49 53 54 29 2d  \.    : ((LIST)-
9750: 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54 29 2d  >aptr = ((LIST)-
9760: 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20 20 20  >onstack == 0   
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9780: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97a0: 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e     ? ((LIST)->on
97b0: 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d  stack=1, (LIST)-
97c0: 3e 73 61 70 74 72 29 20 20 20 20 20 20 20 20 20  >saptr)         
97d0: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20      \.          
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 28               : (
97f0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 20 20 20 20  LIST)->aptr     
9800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9830: 20 20 20 20 20 20 29 2c 20 20 20 20 20 20 20 20        ),        
9840: 20 20 20 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 5c 0a 20 20 20 20 20 20          \.      
9870: 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62   __va_align_doub
9880: 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a  le(LIST)......\.
9890: 20 20 20 20 20 20 20 28 4c 49 53 54 29 2d 3e 61         (LIST)->a
98a0: 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f  ptr += sizeof(do
98b0: 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20 20  uble),.....\.   
98c0: 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28      *(double*)((
98d0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69  LIST)->aptr - si
98e0: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09  zeof(double))...
98f0: 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69  \.  )).#endif.#i
9900: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34  f defined(__ia64
9910: 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74  __)./* The first
9920: 20 38 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e   8 floating-poin
9930: 74 20 61 72 67 73 20 68 61 76 65 20 62 65 65 6e  t args have been
9940: 20 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72   stored elsewher
9950: 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  e. */.#define __
9960: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53  va_arg_float(LIS
9970: 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  T)  \.  ((LIST)-
9980: 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28  >aptr += sizeof(
9990: 5f 5f 76 61 77 6f 72 64 29 2c 09 09 09 09 09 5c  __vaword),.....\
99a0: 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d  .   ((LIST)->mem
99b0: 66 61 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54  fargptr < &(LIST
99c0: 29 2d 3e 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a  )->farg[8]....\.
99d0: 20 20 20 20 3f 20 28 66 6c 6f 61 74 29 20 2a 28      ? (float) *(
99e0: 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70  (LIST)->memfargp
99f0: 74 72 2b 2b 29 09 09 09 09 09 5c 0a 20 20 20 20  tr++).....\.    
9a00: 3a 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53  : *(float*)((LIS
9a10: 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f  T)->aptr - sizeo
9a20: 66 28 5f 5f 76 61 77 6f 72 64 29 29 09 09 09 5c  f(__vaword))...\
9a30: 0a 20 20 29 29 0a 23 64 65 66 69 6e 65 20 76 61  .  )).#define va
9a40: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54  _arg_double(LIST
9a50: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69  )  \.  (__va_ali
9a60: 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09  gn_double(LIST).
9a70: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
9a80: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
9a90: 28 64 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c 0a  (double),.....\.
9aa0: 20 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66     ((LIST)->memf
9ab0: 61 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29  argptr < &(LIST)
9ac0: 2d 3e 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20  ->farg[8]....\. 
9ad0: 20 20 20 3f 20 2a 28 28 4c 49 53 54 29 2d 3e 6d     ? *((LIST)->m
9ae0: 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09  emfargptr++)....
9af0: 09 09 5c 0a 20 20 20 20 3a 20 2a 28 64 6f 75 62  ..\.    : *(doub
9b00: 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  le*)((LIST)->apt
9b10: 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  r - sizeof(doubl
9b20: 65 29 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 65  e))....\.  )).#e
9b30: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
9b40: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20  (__x86_64__)./* 
9b50: 54 68 65 20 66 69 72 73 74 20 38 20 66 6c 6f 61  The first 8 floa
9b60: 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20  ting-point args 
9b70: 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64  have been stored
9b80: 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23   elsewhere. */.#
9b90: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
9ba0: 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20  float(LIST)  \. 
9bb0: 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72   ((LIST)->memfar
9bc0: 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e  gptr < &(LIST)->
9bd0: 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20 20 20  farg[8]....\.   
9be0: 3f 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61  ? ((LIST)->memfa
9bf0: 72 67 70 74 72 2b 2b 2c 09 09 09 09 09 09 5c 0a  rgptr++,......\.
9c00: 20 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28        *(float*)(
9c10: 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70  (LIST)->memfargp
9c20: 74 72 20 2d 20 31 29 09 09 09 09 09 5c 0a 20 20  tr - 1).....\.  
9c30: 20 20 20 29 09 09 09 09 09 09 09 09 09 5c 0a 20     ).........\. 
9c40: 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74    : ((LIST)->apt
9c50: 72 20 2b 3d 20 73 69 7a 65 6f 66 28 5f 5f 76 61  r += sizeof(__va
9c60: 77 6f 72 64 29 2c 09 09 09 09 09 5c 0a 20 20 20  word),.....\.   
9c70: 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49     *(float*)((LI
9c80: 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65  ST)->aptr - size
9c90: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 09 09 09  of(__vaword))...
9ca0: 5c 0a 20 20 29 20 20 29 0a 23 64 65 66 69 6e 65  \.  )  ).#define
9cb0: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c   va_arg_double(L
9cc0: 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IST)  \.  ((LIST
9cd0: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20  )->memfargptr < 
9ce0: 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38 5d  &(LIST)->farg[8]
9cf0: 09 09 09 09 5c 0a 20 20 20 3f 20 2a 28 4c 49 53  ....\.   ? *(LIS
9d00: 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b  T)->memfargptr++
9d10: 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c  ......\.   : ((L
9d20: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
9d30: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2c 09  zeof(__vaword),.
9d40: 09 09 09 09 5c 0a 20 20 20 20 20 20 2a 28 64 6f  ....\.      *(do
9d50: 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61  uble*)((LIST)->a
9d60: 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76  ptr - sizeof(__v
9d70: 61 77 6f 72 64 29 29 09 09 09 5c 0a 20 20 29 20  aword))...\.  ) 
9d80: 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65   ).#endif.#ifnde
9d90: 66 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74  f __va_arg_float
9da0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
9db0: 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 09 5f 5f  g_float(LIST).__
9dc0: 76 61 5f 61 72 67 28 4c 49 53 54 2c 66 6c 6f 61  va_arg(LIST,floa
9dd0: 74 29 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  t).#endif.#ifnde
9de0: 66 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 0a  f va_arg_double.
9df0: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64  #define va_arg_d
9e00: 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20  ouble(LIST)  \. 
9e10: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75   (__va_align_dou
9e20: 62 6c 65 28 4c 49 53 54 29 20 5f 5f 76 61 5f 61  ble(LIST) __va_a
9e30: 72 67 28 4c 49 53 54 2c 64 6f 75 62 6c 65 29 29  rg(LIST,double))
9e40: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 50 6f 69 6e  .#endif../* Poin
9e50: 74 65 72 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a  ter arguments. *
9e60: 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67  /.#define va_arg
9e70: 5f 70 74 72 28 4c 49 53 54 2c 54 59 50 45 29 09  _ptr(LIST,TYPE).
9e80: 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 54 59  __va_arg(LIST,TY
9e90: 50 45 29 0a 0a 2f 2a 20 53 74 72 75 63 74 75 72  PE)../* Structur
9ea0: 65 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a  e arguments. */.
9eb0: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 73  #define va_arg_s
9ec0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 29  truct(LIST,TYPE)
9ed0: 20 20 5c 0a 20 20 2a 28 54 59 50 45 2a 29 5f 5f    \.  *(TYPE*)__
9ee0: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49  va_arg_struct(LI
9ef0: 53 54 2c 73 69 7a 65 6f 66 28 54 59 50 45 29 2c  ST,sizeof(TYPE),
9f00: 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54 59 50  __VA_alignof(TYP
9f10: 45 29 29 0a 2f 2a 20 5f 76 61 5f 61 72 67 5f 73  E))./* _va_arg_s
9f20: 74 72 75 63 74 28 29 20 69 73 20 6c 69 6b 65 20  truct() is like 
9f30: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 29 2c  va_arg_struct(),
9f40: 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75   except that you
9f50: 20 70 61 73 73 20 74 68 65 20 74 79 70 65 27 73   pass the type's
9f60: 0a 20 2a 20 73 69 7a 65 20 61 6e 64 20 61 6c 69  . * size and ali
9f70: 67 6e 6d 65 6e 74 20 69 6e 73 74 65 61 64 20 6f  gnment instead o
9f80: 66 20 74 68 65 20 74 79 70 65 20 61 6e 64 20 67  f the type and g
9f90: 65 74 20 74 68 65 20 76 61 6c 75 65 27 73 20 61  et the value's a
9fa0: 64 64 72 65 73 73 20 69 6e 73 74 65 61 64 0a 20  ddress instead. 
9fb0: 2a 20 6f 66 20 74 68 65 20 76 61 6c 75 65 20 69  * of the value i
9fc0: 74 73 65 6c 66 2e 0a 20 2a 2f 0a 23 64 65 66 69  tself.. */.#defi
9fd0: 6e 65 20 5f 76 61 5f 61 72 67 5f 73 74 72 75 63  ne _va_arg_struc
9fe0: 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  t(LIST,TYPE_SIZE
9ff0: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a  ,TYPE_ALIGN)  \.
a000: 20 20 28 76 6f 69 64 2a 29 5f 5f 76 61 5f 61 72    (void*)__va_ar
a010: 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  g_struct(LIST,TY
a020: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
a030: 47 4e 29 0a 2f 2a 20 53 74 72 75 63 74 75 72 65  GN)./* Structure
a040: 20 61 72 67 75 6d 65 6e 74 20 61 6c 69 67 6e 6d   argument alignm
a050: 65 6e 74 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69  ent. */.#if defi
a060: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26  ned(__i386__) &&
a070: 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45   defined(_MSC_VE
a080: 52 29 0a 2f 2a 20 49 6e 20 4d 53 56 43 2c 20 64  R)./* In MSVC, d
a090: 6f 75 62 6c 65 73 20 69 6e 73 69 64 65 20 73 74  oubles inside st
a0a0: 72 75 63 74 75 72 65 73 20 68 61 76 65 20 61 6c  ructures have al
a0b0: 69 67 6e 6d 65 6e 74 20 38 2c 20 69 2e 65 2e 0a  ignment 8, i.e..
a0c0: 20 2a 20 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28   * __VA_alignof(
a0d0: 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20 62 75 74  double) = 8, but
a0e0: 20 64 6f 75 62 6c 65 73 20 28 61 6e 64 20 61 6c   doubles (and al
a0f0: 73 6f 20 73 74 72 75 63 74 75 72 65 73 20 63 6f  so structures co
a100: 6e 74 61 69 6e 69 6e 67 0a 20 2a 20 64 6f 75 62  ntaining. * doub
a110: 6c 65 73 29 20 61 72 65 20 70 61 73 73 65 64 20  les) are passed 
a120: 6f 6e 20 74 68 65 20 73 74 61 63 6b 20 77 69 74  on the stack wit
a130: 68 20 61 6c 69 67 6e 6d 65 6e 74 20 34 2e 20 4c  h alignment 4. L
a140: 6f 6f 6b 73 20 72 65 61 6c 6c 79 20 77 65 69 72  ooks really weir
a150: 64 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  d.. */.#define _
a160: 5f 76 61 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e  _va_struct_align
a170: 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29  ment(TYPE_ALIGN)
a180: 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 41 4c 49    \.  ((TYPE_ALI
a190: 47 4e 29 20 3c 3d 20 34 20 3f 20 28 54 59 50 45  GN) <= 4 ? (TYPE
a1a0: 5f 41 4c 49 47 4e 29 20 3a 20 34 29 0a 23 65 6c  _ALIGN) : 4).#el
a1b0: 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  se.#define __va_
a1c0: 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74  struct_alignment
a1d0: 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a  (TYPE_ALIGN)  \.
a1e0: 20 20 28 54 59 50 45 5f 41 4c 49 47 4e 29 0a 23    (TYPE_ALIGN).#
a1f0: 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 5f 5f  endif.#define __
a200: 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28  va_align_struct(
a210: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
a220: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
a230: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20 28  (LIST)->aptr = (
a240: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 20 5f  (LIST)->aptr + _
a250: 5f 76 61 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e  _va_struct_align
a260: 6d 65 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29  ment(TYPE_ALIGN)
a270: 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 76  -1) & -(long)__v
a280: 61 5f 73 74 72 75 63 74 5f 61 6c 69 67 6e 6d 65  a_struct_alignme
a290: 6e 74 28 54 59 50 45 5f 41 4c 49 47 4e 29 2c 0a  nt(TYPE_ALIGN),.
a2a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
a2b0: 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  86__) || defined
a2c0: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m68k__) || de
a2d0: 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29  fined(__alpha__)
a2e0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72   || defined(__ar
a2f0: 6d 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  m__) || defined(
a300: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
a310: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29  ined(__convex__)
a320: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
a330: 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20  6_64__).#define 
a340: 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28  __va_arg_struct(
a350: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
a360: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
a370: 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75  (__va_align_stru
a380: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
a390: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09  E,TYPE_ALIGN)...
a3a0: 09 5c 0a 20 20 20 5f 5f 76 61 5f 61 72 67 5f 61  .\.   __va_arg_a
a3b0: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
a3c0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a3d0: 4e 29 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64  N)....\.  ).#end
a3e0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
a3f0: 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66  _mips__) && !def
a400: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
a410: 29 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63  )./* small struc
a420: 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61  tures < 1 word a
a430: 72 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65  re adjusted depe
a440: 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65  nding on compile
a450: 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  r */.#define __v
a460: 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53  a_arg_struct(LIS
a470: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
a480: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 5f 5f  _ALIGN)  \.  (__
a490: 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28  va_align_struct(
a4a0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
a4b0: 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a  YPE_ALIGN)....\.
a4c0: 20 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67     ((LIST)->flag
a4d0: 73 20 26 20 5f 5f 56 41 5f 53 47 49 43 43 5f 53  s & __VA_SGICC_S
a4e0: 54 52 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a  TRUCT_ARGS....\.
a4f0: 20 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49 50      ? /* SGI MIP
a500: 53 20 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c  S cc passes smal
a510: 6c 20 73 74 72 75 63 74 75 72 65 73 20 6c 65 66  l structures lef
a520: 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68  t-adjusted, alth
a530: 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21  ough big-endian!
a540: 20 2a 2f 5c 0a 20 20 20 20 20 20 5f 5f 76 61 5f   */\.      __va_
a550: 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64  arg_leftadjusted
a560: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
a570: 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c 0a  TYPE_ALIGN)...\.
a580: 20 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50      : /* SGI MIP
a590: 53 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61  S gcc passes sma
a5a0: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 77 69  ll structures wi
a5b0: 74 68 69 6e 20 74 68 65 20 66 69 72 73 74 20 66  thin the first f
a5c0: 6f 75 72 20 77 6f 72 64 73 20 6c 65 66 74 2d 09  our words left-.
a5d0: 20 20 20 5c 0a 20 20 20 20 20 20 20 2a 20 61 64     \.       * ad
a5e0: 6a 75 73 74 65 64 2c 20 66 6f 72 20 63 6f 6d 70  justed, for comp
a5f0: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 63  atibility with c
a600: 63 2e 20 42 75 74 20 73 74 72 75 63 74 75 72 65  c. But structure
a610: 73 20 69 6e 20 6d 65 6d 6f 72 79 20 61 72 65 20  s in memory are 
a620: 70 61 73 73 65 64 20 20 5c 0a 20 20 20 20 20 20  passed  \.      
a630: 20 2a 20 72 69 67 68 74 2d 61 64 6a 75 73 74 65   * right-adjuste
a640: 64 21 21 20 53 65 65 20 67 63 63 2d 32 2e 36 2e  d!! See gcc-2.6.
a650: 33 2f 63 6f 6e 66 69 67 2f 6d 69 70 73 2f 6d 69  3/config/mips/mi
a660: 70 73 2e 63 3a 66 75 6e 63 74 69 6f 6e 5f 61 72  ps.c:function_ar
a670: 67 28 29 2e 09 20 20 20 5c 0a 20 20 20 20 20 20  g()..   \.      
a680: 20 2a 2f 09 09 09 09 09 09 09 09 09 20 20 20 5c   */.........   \
a690: 0a 20 20 20 20 20 20 28 28 4c 49 53 54 29 2d 3e  .      ((LIST)->
a6a0: 61 70 74 72 20 3c 20 28 4c 49 53 54 29 2d 3e 6d  aptr < (LIST)->m
a6b0: 65 6d 61 72 67 70 74 72 09 09 09 09 09 5c 0a 20  emargptr.....\. 
a6c0: 20 20 20 20 20 20 3f 20 5f 5f 76 61 5f 61 72 67        ? __va_arg
a6d0: 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49  _leftadjusted(LI
a6e0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
a6f0: 45 5f 41 4c 49 47 4e 29 09 09 5c 0a 20 20 20 20  E_ALIGN)..\.    
a700: 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 5f 72 69     : __va_arg_ri
a710: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
a720: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
a730: 41 4c 49 47 4e 29 09 09 5c 0a 20 20 29 29 20 20  ALIGN)..\.  ))  
a740: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
a750: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
a760: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
a770: 69 70 73 36 34 5f 5f 29 0a 2f 2a 20 73 6d 61 6c  ips64__)./* smal
a780: 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31  l structures < 1
a790: 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74   word are adjust
a7a0: 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  ed depending on 
a7b0: 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66  compiler */.#def
a7c0: 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72  ine __va_arg_str
a7d0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  uct(LIST,TYPE_SI
a7e0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20  ZE,TYPE_ALIGN)  
a7f0: 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f  \.  (__va_align_
a800: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45  struct(LIST,TYPE
a810: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
a820: 29 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54  )....\.   ((LIST
a830: 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f  )->flags & __VA_
a840: 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52 47  SGICC_STRUCT_ARG
a850: 53 09 09 09 09 5c 0a 20 20 20 20 3f 20 2f 2a 20  S....\.    ? /* 
a860: 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 73 73  SGI MIPS cc pass
a870: 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  es small structu
a880: 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74 65  res left-adjuste
a890: 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d  d, although big-
a8a0: 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20 20  endian! */\.    
a8b0: 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61    __va_arg_lefta
a8c0: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
a8d0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a8e0: 4e 29 09 09 09 5c 0a 20 20 20 20 3a 20 2f 2a 20  N)...\.    : /* 
a8f0: 53 47 49 20 4d 49 50 53 20 67 63 63 20 70 61 73  SGI MIPS gcc pas
a900: 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74  ses small struct
a910: 75 72 65 73 20 72 69 67 68 74 2d 61 64 6a 75 73  ures right-adjus
a920: 74 65 64 2e 20 2a 2f 09 5c 0a 20 20 20 20 20 20  ted. */.\.      
a930: 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64  __va_arg_rightad
a940: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
a950: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
a960: 29 09 09 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69  )...\.  )).#endi
a970: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
a980: 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65  rs6000__) && (de
a990: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
a9a0: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
a9b0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
a9c0: 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 73 6d 61  PPLE__)))./* sma
a9d0: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20  ll structures < 
a9e0: 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73  1 word are adjus
a9f0: 74 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ted depending on
aa00: 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65   compiler */.#de
aa10: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74  fine __va_arg_st
aa20: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
aa30: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
aa40: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
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 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53  N)....\.   ((LIS
aa80: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
aa90: 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52  _AIXCC_STRUCT_AR
aaa0: 47 53 09 09 09 09 5c 0a 20 20 20 20 3f 20 2f 2a  GS....\.    ? /*
aab0: 20 41 49 58 20 63 63 20 61 6e 64 20 78 6c 63 20   AIX cc and xlc 
aac0: 70 61 73 73 20 73 6d 61 6c 6c 20 73 74 72 75 63  pass small struc
aad0: 74 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73  tures left-adjus
aae0: 74 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69  ted, although bi
aaf0: 67 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20  g-endian! */\.  
ab00: 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66      __va_arg_lef
ab10: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
ab20: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
ab30: 49 47 4e 29 09 09 09 5c 0a 20 20 20 20 3a 20 2f  IGN)...\.    : /
ab40: 2a 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61  * gcc passes sma
ab50: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 72 69  ll structures ri
ab60: 67 68 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f  ght-adjusted. */
ab70: 09 09 09 5c 0a 20 20 20 20 20 20 5f 5f 76 61 5f  ...\.      __va_
ab80: 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65  arg_rightadjuste
ab90: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
aba0: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c  ,TYPE_ALIGN)...\
abb0: 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69 66  .  )).#endif.#if
abc0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
abd0: 30 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65  0__) && !(define
abe0: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
abf0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
ac00: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
ac10: 5f 5f 29 29 29 0a 2f 2a 20 53 74 72 75 63 74 75  __)))./* Structu
ac20: 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61  res are passed a
ac30: 73 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61  s pointers to ca
ac40: 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20  ller-made local 
ac50: 63 6f 70 69 65 73 2e 20 2a 2f 0a 23 64 65 66 69  copies. */.#defi
ac60: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75  ne __va_arg_stru
ac70: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
ac80: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
ac90: 0a 20 20 76 61 5f 61 72 67 5f 70 74 72 28 4c 49  .  va_arg_ptr(LI
aca0: 53 54 2c 76 6f 69 64 2a 29 0a 23 65 6e 64 69 66  ST,void*).#endif
acb0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
acc0: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
acd0: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
ace0: 0a 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61  ./* Structures a
acf0: 72 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69  re passed as poi
ad00: 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d  nters to caller-
ad10: 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65  made local copie
ad20: 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  s. */.#define __
ad30: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49  va_arg_struct(LI
ad40: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
ad50: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 76 61  E_ALIGN)  \.  va
ad60: 5f 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 76 6f  _arg_ptr(LIST,vo
ad70: 69 64 2a 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  id*).#endif.#if 
ad80: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
ad90: 34 5f 5f 29 0a 2f 2a 20 53 6d 61 6c 6c 20 73 74  4__)./* Small st
ada0: 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73  ructures are pas
adb0: 73 65 64 20 6c 65 66 74 2d 61 64 6a 75 73 74 65  sed left-adjuste
adc0: 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67 2d  d, although big-
add0: 65 6e 64 69 61 6e 21 20 2a 2f 0a 2f 2a 20 42 69  endian! */./* Bi
ade0: 67 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65  g structures are
adf0: 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74   passed as point
ae00: 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61  ers to caller-ma
ae10: 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e  de local copies.
ae20: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
ae30: 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54  _arg_struct(LIST
ae40: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
ae50: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 54 59  ALIGN)  \.  ((TY
ae60: 50 45 5f 53 49 5a 45 29 20 3c 3d 20 31 36 09 09  PE_SIZE) <= 16..
ae70: 09 09 09 09 09 5c 0a 20 20 20 3f 20 28 5f 5f 76  .....\.   ? (__v
ae80: 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28 4c  a_align_struct(L
ae90: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
aea0: 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c 0a 20 20  PE_ALIGN)...\.  
aeb0: 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66      __va_arg_lef
aec0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
aed0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
aee0: 49 47 4e 29 29 09 09 09 5c 0a 20 20 20 3a 20 76  IGN))...\.   : v
aef0: 61 5f 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 76  a_arg_ptr(LIST,v
af00: 6f 69 64 2a 29 09 09 09 09 09 09 5c 0a 20 20 29  oid*)......\.  )
af10: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
af20: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a  ned(__s390__)./*
af30: 20 53 74 72 75 63 74 75 72 65 73 20 3c 3d 20 38   Structures <= 8
af40: 20 62 79 74 65 73 20 61 72 65 20 70 61 73 73 65   bytes are passe
af50: 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f  d as embedded co
af60: 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20  pies on the arg 
af70: 73 74 61 63 6b 2e 0a 20 2a 20 42 69 67 20 73 74  stack.. * Big st
af80: 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73  ructures are pas
af90: 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 73 20  sed as pointers 
afa0: 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c  to caller-made l
afb0: 6f 63 61 6c 20 63 6f 70 69 65 73 2e 0a 20 2a 2f  ocal copies.. */
afc0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
afd0: 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  g_struct(LIST,TY
afe0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
aff0: 47 4e 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f  GN)  \.  ((TYPE_
b000: 53 49 5a 45 29 20 21 3d 20 31 20 26 26 20 28 54  SIZE) != 1 && (T
b010: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 32 20 26  YPE_SIZE) != 2 &
b020: 26 20 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d  & (TYPE_SIZE) !=
b030: 20 34 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45   4 && (TYPE_SIZE
b040: 29 20 21 3d 20 38 20 5c 0a 20 20 20 3f 20 76 61  ) != 8 \.   ? va
b050: 5f 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 76 6f  _arg_ptr(LIST,vo
b060: 69 64 2a 29 09 09 09 09 09 09 5c 0a 20 20 20 3a  id*)......\.   :
b070: 20 28 76 6f 69 64 2a 29 5f 5f 76 61 5f 61 72 67   (void*)__va_arg
b080: 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c  _rightadjusted(L
b090: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
b0a0: 50 45 5f 41 4c 49 47 4e 29 09 09 5c 0a 20 20 29  PE_ALIGN)..\.  )
b0b0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
b0c0: 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a  ned(__hppa__)./*
b0d0: 20 53 74 72 75 63 74 75 72 65 73 20 3c 3d 20 38   Structures <= 8
b0e0: 20 62 79 74 65 73 20 61 72 65 20 70 61 73 73 65   bytes are passe
b0f0: 64 20 61 73 20 65 6d 62 65 64 64 65 64 20 63 6f  d as embedded co
b100: 70 69 65 73 20 6f 6e 20 74 68 65 20 61 72 67 20  pies on the arg 
b110: 73 74 61 63 6b 2e 0a 20 2a 20 42 69 67 20 73 74  stack.. * Big st
b120: 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73  ructures are pas
b130: 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 73 20  sed as pointers 
b140: 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c  to caller-made l
b150: 6f 63 61 6c 20 63 6f 70 69 65 73 2e 0a 20 2a 2f  ocal copies.. */
b160: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
b170: 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  g_struct(LIST,TY
b180: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
b190: 47 4e 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f  GN)  \.  ((TYPE_
b1a0: 53 49 5a 45 29 20 3e 20 38 09 09 09 09 09 09 09  SIZE) > 8.......
b1b0: 5c 0a 20 20 20 3f 20 76 61 5f 61 72 67 5f 70 74  \.   ? va_arg_pt
b1c0: 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29 09 09 09  r(LIST,void*)...
b1d0: 09 09 09 5c 0a 20 20 20 3a 20 2f 2a 20 46 49 58  ...\.   : /* FIX
b1e0: 4d 45 3a 20 67 63 63 2d 32 2e 36 2e 33 20 70 61  ME: gcc-2.6.3 pa
b1f0: 73 73 65 73 20 73 74 72 75 63 74 75 72 65 73 20  sses structures 
b200: 3c 3d 20 34 20 62 79 74 65 73 20 69 6e 20 6d 65  <= 4 bytes in me
b210: 6d 6f 72 79 20 6c 65 66 74 2d 61 64 6a 75 73 74  mory left-adjust
b220: 65 64 21 20 3f 3f 20 2a 2f 5c 0a 20 20 20 20 20  ed! ?? */\.     
b230: 28 76 6f 69 64 2a 29 5f 5f 76 61 5f 61 72 67 5f  (void*)__va_arg_
b240: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49  rightadjusted(LI
b250: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
b260: 45 5f 41 4c 49 47 4e 29 09 09 5c 0a 20 20 29 0a  E_ALIGN)..\.  ).
b270: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
b280: 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20  ed(__ia64__)./* 
b290: 54 79 70 65 73 20 6c 61 72 67 65 72 20 74 68 61  Types larger tha
b2a0: 6e 20 61 20 77 6f 72 64 20 68 61 76 65 20 32 2d  n a word have 2-
b2b0: 77 6f 72 64 20 61 6c 69 67 6e 6d 65 6e 74 2e 20  word alignment. 
b2c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
b2d0: 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  arg_struct(LIST,
b2e0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
b2f0: 4c 49 47 4e 29 20 20 5c 0a 20 20 28 5f 5f 76 61  LIGN)  \.  (__va
b300: 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28 4c 49  _align_struct(LI
b310: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
b320: 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a 20 20  E_ALIGN)....\.  
b330: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20   ((TYPE_SIZE) > 
b340: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
b350: 20 26 26 20 28 28 28 5f 5f 76 61 77 6f 72 64 2a   && (((__vaword*
b360: 29 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20  )(LIST)->aptr - 
b370: 28 4c 49 53 54 29 2d 3e 73 61 70 74 72 29 20 26  (LIST)->saptr) &
b380: 20 31 29 20 3f 20 28 4c 49 53 54 29 2d 3e 61 70   1) ? (LIST)->ap
b390: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 5f 5f 76  tr += sizeof(__v
b3a0: 61 77 6f 72 64 29 20 3a 20 30 29 2c 20 5c 0a 20  aword) : 0), \. 
b3b0: 20 20 5f 5f 76 61 5f 61 72 67 5f 61 64 6a 75 73    __va_arg_adjus
b3c0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
b3d0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
b3e0: 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 0a  ..\.  ).#endif..
b3f0: 0a 2f 2a 0a 20 2a 20 44 65 66 69 6e 69 74 69 6f  ./*. * Definitio
b400: 6e 20 6f 66 20 74 68 65 20 76 61 5f 72 65 74 75  n of the va_retu
b410: 72 6e 5f 78 78 78 20 6d 61 63 72 6f 73 2e 0a 20  rn_xxx macros.. 
b420: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
b430: 72 65 74 75 72 6e 28 4c 49 53 54 2c 52 45 54 54  return(LIST,RETT
b440: 59 50 45 29 20 20 5c 0a 20 20 28 28 28 4c 49 53  YPE)  \.  (((LIS
b450: 54 29 2d 3e 72 74 79 70 65 20 3d 3d 20 28 52 45  T)->rtype == (RE
b460: 54 54 59 50 45 29 29 20 7c 7c 20 5f 5f 76 61 5f  TTYPE)) || __va_
b470: 65 72 72 6f 72 31 28 28 4c 49 53 54 29 2d 3e 72  error1((LIST)->r
b480: 74 79 70 65 2c 52 45 54 54 59 50 45 29 29 0a 23  type,RETTYPE)).#
b490: 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e  define va_return
b4a0: 5f 76 6f 69 64 28 4c 49 53 54 29 20 20 5c 0a 20  _void(LIST)  \. 
b4b0: 20 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53   __va_return(LIS
b4c0: 54 2c 5f 5f 56 41 76 6f 69 64 29 0a 23 64 65 66  T,__VAvoid).#def
b4d0: 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 63 68  ine va_return_ch
b4e0: 61 72 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a  ar(LIST,VAL)  \.
b4f0: 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c    (__va_return(L
b500: 49 53 54 2c 5f 5f 56 41 63 68 61 72 29 2c 20 28  IST,__VAchar), (
b510: 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 63 68 61 72  LIST)->tmp._char
b520: 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e   = (VAL)).#defin
b530: 65 20 76 61 5f 72 65 74 75 72 6e 5f 73 63 68 61  e va_return_scha
b540: 72 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20  r(LIST,VAL)  \. 
b550: 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49   (__va_return(LI
b560: 53 54 2c 5f 5f 56 41 73 63 68 61 72 29 2c 20 28  ST,__VAschar), (
b570: 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 73 63 68 61  LIST)->tmp._scha
b580: 72 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69  r = (VAL)).#defi
b590: 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 75 63 68  ne va_return_uch
b5a0: 61 72 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a  ar(LIST,VAL)  \.
b5b0: 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c    (__va_return(L
b5c0: 49 53 54 2c 5f 5f 56 41 75 63 68 61 72 29 2c 20  IST,__VAuchar), 
b5d0: 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 63 68  (LIST)->tmp._uch
b5e0: 61 72 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66  ar = (VAL)).#def
b5f0: 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 73 68  ine va_return_sh
b600: 6f 72 74 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c  ort(LIST,VAL)  \
b610: 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28  .  (__va_return(
b620: 4c 49 53 54 2c 5f 5f 56 41 73 68 6f 72 74 29 2c  LIST,__VAshort),
b630: 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 73 68   (LIST)->tmp._sh
b640: 6f 72 74 20 3d 20 28 56 41 4c 29 29 0a 23 64 65  ort = (VAL)).#de
b650: 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 75  fine va_return_u
b660: 73 68 6f 72 74 28 4c 49 53 54 2c 56 41 4c 29 20  short(LIST,VAL) 
b670: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
b680: 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 73 68 6f 72  n(LIST,__VAushor
b690: 74 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e  t), (LIST)->tmp.
b6a0: 5f 75 73 68 6f 72 74 20 3d 20 28 56 41 4c 29 29  _ushort = (VAL))
b6b0: 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75  .#define va_retu
b6c0: 72 6e 5f 69 6e 74 28 4c 49 53 54 2c 56 41 4c 29  rn_int(LIST,VAL)
b6d0: 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75    \.  (__va_retu
b6e0: 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 69 6e 74 29  rn(LIST,__VAint)
b6f0: 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 69  , (LIST)->tmp._i
b700: 6e 74 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66  nt = (VAL)).#def
b710: 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 75 69  ine va_return_ui
b720: 6e 74 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a  nt(LIST,VAL)  \.
b730: 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c    (__va_return(L
b740: 49 53 54 2c 5f 5f 56 41 75 69 6e 74 29 2c 20 28  IST,__VAuint), (
b750: 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 69 6e 74  LIST)->tmp._uint
b760: 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e   = (VAL)).#defin
b770: 65 20 76 61 5f 72 65 74 75 72 6e 5f 6c 6f 6e 67  e va_return_long
b780: 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20  (LIST,VAL)  \.  
b790: 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53  (__va_return(LIS
b7a0: 54 2c 5f 5f 56 41 6c 6f 6e 67 29 2c 20 28 4c 49  T,__VAlong), (LI
b7b0: 53 54 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e 67 20 3d  ST)->tmp._long =
b7c0: 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20   (VAL)).#define 
b7d0: 76 61 5f 72 65 74 75 72 6e 5f 75 6c 6f 6e 67 28  va_return_ulong(
b7e0: 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28  LIST,VAL)  \.  (
b7f0: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
b800: 2c 5f 5f 56 41 75 6c 6f 6e 67 29 2c 20 28 4c 49  ,__VAulong), (LI
b810: 53 54 29 2d 3e 74 6d 70 2e 5f 75 6c 6f 6e 67 20  ST)->tmp._ulong 
b820: 3d 20 28 56 41 4c 29 29 0a 23 69 66 20 64 65 66  = (VAL)).#if def
b830: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
b840: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70   || defined(__sp
b850: 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  arc64__) || defi
b860: 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c  ned(__alpha__) |
b870: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34  | defined(__ia64
b880: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
b890: 5f 78 38 36 5f 36 34 5f 5f 29 0a 23 64 65 66 69  _x86_64__).#defi
b8a0: 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 6c 6f 6e  ne va_return_lon
b8b0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20  glong(LIST,VAL) 
b8c0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
b8d0: 6e 28 4c 49 53 54 2c 5f 5f 56 41 6c 6f 6e 67 6c  n(LIST,__VAlongl
b8e0: 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d  ong), (LIST)->tm
b8f0: 70 2e 5f 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29  p._long = (VAL))
b900: 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75  .#define va_retu
b910: 72 6e 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  rn_ulonglong(LIS
b920: 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76  T,VAL)  \.  (__v
b930: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
b940: 56 41 75 6c 6f 6e 67 6c 6f 6e 67 29 2c 20 28 4c  VAulonglong), (L
b950: 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 6c 6f 6e 67  IST)->tmp._ulong
b960: 20 3d 20 28 56 41 4c 29 29 0a 23 65 6c 73 65 0a   = (VAL)).#else.
b970: 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72  #define va_retur
b980: 6e 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c  n_longlong(LIST,
b990: 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  VAL)  \.  (__va_
b9a0: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
b9b0: 6c 6f 6e 67 6c 6f 6e 67 29 2c 20 28 4c 49 53 54  longlong), (LIST
b9c0: 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e 67 6c 6f 6e 67  )->tmp._longlong
b9d0: 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e   = (VAL)).#defin
b9e0: 65 20 76 61 5f 72 65 74 75 72 6e 5f 75 6c 6f 6e  e va_return_ulon
b9f0: 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20  glong(LIST,VAL) 
ba00: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
ba10: 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67  n(LIST,__VAulong
ba20: 6c 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74  long), (LIST)->t
ba30: 6d 70 2e 5f 75 6c 6f 6e 67 6c 6f 6e 67 20 3d 20  mp._ulonglong = 
ba40: 28 56 41 4c 29 29 0a 23 65 6e 64 69 66 0a 23 64  (VAL)).#endif.#d
ba50: 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f  efine va_return_
ba60: 66 6c 6f 61 74 28 4c 49 53 54 2c 56 41 4c 29 20  float(LIST,VAL) 
ba70: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
ba80: 6e 28 4c 49 53 54 2c 5f 5f 56 41 66 6c 6f 61 74  n(LIST,__VAfloat
ba90: 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f  ), (LIST)->tmp._
baa0: 66 6c 6f 61 74 20 3d 20 28 56 41 4c 29 29 0a 23  float = (VAL)).#
bab0: 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e  define va_return
bac0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 2c 56 41 4c  _double(LIST,VAL
bad0: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74  )  \.  (__va_ret
bae0: 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 64 6f 75  urn(LIST,__VAdou
baf0: 62 6c 65 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d  ble), (LIST)->tm
bb00: 70 2e 5f 64 6f 75 62 6c 65 20 3d 20 28 56 41 4c  p._double = (VAL
bb10: 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65  )).#define va_re
bb20: 74 75 72 6e 5f 70 74 72 28 4c 49 53 54 2c 54 59  turn_ptr(LIST,TY
bb30: 50 45 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  PE,VAL)  \.  (__
bb40: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
bb50: 5f 56 41 76 6f 69 64 70 29 2c 20 28 4c 49 53 54  _VAvoidp), (LIST
bb60: 29 2d 3e 74 6d 70 2e 5f 70 74 72 20 3d 20 28 76  )->tmp._ptr = (v
bb70: 6f 69 64 2a 29 28 54 59 50 45 29 28 56 41 4c 29  oid*)(TYPE)(VAL)
bb80: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
bb90: 75 72 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  urn_struct(LIST,
bba0: 54 59 50 45 2c 56 41 4c 29 20 20 5c 0a 20 20 28  TYPE,VAL)  \.  (
bbb0: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
bbc0: 2c 5f 5f 56 41 73 74 72 75 63 74 29 2c 20 2a 28  ,__VAstruct), *(
bbd0: 54 59 50 45 2a 29 28 28 4c 49 53 54 29 2d 3e 72  TYPE*)((LIST)->r
bbe0: 61 64 64 72 29 20 3d 20 28 56 41 4c 29 29 0a 23  addr) = (VAL)).#
bbf0: 64 65 66 69 6e 65 20 5f 76 61 5f 72 65 74 75 72  define _va_retur
bc00: 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  n_struct(LIST,TY
bc10: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
bc20: 47 4e 2c 56 41 4c 5f 41 44 44 52 29 20 20 5c 0a  GN,VAL_ADDR)  \.
bc30: 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c    (__va_return(L
bc40: 49 53 54 2c 5f 5f 56 41 73 74 72 75 63 74 29 2c  IST,__VAstruct),
bc50: 09 09 09 09 09 5c 0a 20 20 20 5f 5f 73 74 72 75  .....\.   __stru
bc60: 63 74 63 70 79 28 28 76 6f 69 64 2a 29 28 28 4c  ctcpy((void*)((L
bc70: 49 53 54 29 2d 3e 72 61 64 64 72 29 2c 56 41 4c  IST)->raddr),VAL
bc80: 5f 41 44 44 52 2c 54 59 50 45 5f 53 49 5a 45 2c  _ADDR,TYPE_SIZE,
bc90: 54 59 50 45 5f 41 4c 49 47 4e 29 09 5c 0a 20 20  TYPE_ALIGN).\.  
bca0: 29 0a 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65  ).../* Determine
bcb0: 20 77 68 65 74 68 65 72 20 61 20 73 74 72 75 63   whether a struc
bcc0: 74 20 74 79 70 65 20 69 73 20 77 6f 72 64 2d 73  t type is word-s
bcd0: 70 6c 69 74 74 61 62 6c 65 2c 20 69 2e 65 2e 20  plittable, i.e. 
bce0: 77 68 65 74 68 65 72 20 65 61 63 68 20 6f 66 0a  whether each of.
bcf0: 20 2a 20 69 74 73 20 63 6f 6d 70 6f 6e 65 6e 74   * its component
bd00: 73 20 66 69 74 20 69 6e 74 6f 20 61 20 72 65 67  s fit into a reg
bd10: 69 73 74 65 72 2e 0a 20 2a 20 54 68 65 20 65 6e  ister.. * The en
bd20: 74 69 72 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e  tire computation
bd30: 20 69 73 20 64 6f 6e 65 20 61 74 20 63 6f 6d 70   is done at comp
bd40: 69 6c 65 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23 64  ile time.. */.#d
bd50: 65 66 69 6e 65 20 76 61 5f 77 6f 72 64 5f 73 70  efine va_word_sp
bd60: 6c 69 74 74 61 62 6c 65 5f 31 28 73 6c 6f 74 31  littable_1(slot1
bd70: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 6f 66 66  )  \.  (__va_off
bd80: 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65  set1(slot1)/size
bd90: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20  of(__vaword) == 
bda0: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73 6c  (__va_offset1(sl
bdb0: 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot1)+sizeof(slot
bdc0: 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  1)-1)/sizeof(__v
bdd0: 61 77 6f 72 64 29 29 0a 23 64 65 66 69 6e 65 20  aword)).#define 
bde0: 76 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62  va_word_splittab
bdf0: 6c 65 5f 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  le_2(slot1,slot2
be00: 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66  )  \.  ((__va_of
be10: 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73 69 7a  fset1(slot1)/siz
be20: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d  eof(__vaword) ==
be30: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73   (__va_offset1(s
be40: 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot1)+sizeof(slo
be50: 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t1)-1)/sizeof(__
be60: 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26  vaword)) \.   &&
be70: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28 73   (__va_offset2(s
be80: 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69 7a 65  lot1,slot2)/size
be90: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20  of(__vaword) == 
bea0: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28 73 6c  (__va_offset2(sl
beb0: 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f  ot1,slot2)+sizeo
bec0: 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69 7a 65  f(slot2)-1)/size
bed0: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a  of(__vaword)) \.
bee0: 20 20 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 77    ).#define va_w
bef0: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 33  ord_splittable_3
bf00: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f  (slot1,slot2,slo
bf10: 74 33 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f  t3)  \.  ((__va_
bf20: 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f 73  offset1(slot1)/s
bf30: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20  izeof(__vaword) 
bf40: 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31  == (__va_offset1
bf50: 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73  (slot1)+sizeof(s
bf60: 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66 28  lot1)-1)/sizeof(
bf70: 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20  __vaword)) \.   
bf80: 26 26 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32  && (__va_offset2
bf90: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73 69  (slot1,slot2)/si
bfa0: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d  zeof(__vaword) =
bfb0: 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28  = (__va_offset2(
bfc0: 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69 7a  slot1,slot2)+siz
bfd0: 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73 69  eof(slot2)-1)/si
bfe0: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 20  zeof(__vaword)) 
bff0: 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61 5f 6f 66  \.   && (__va_of
c000: 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset3(slot1,slot
c010: 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f 66 28  2,slot3)/sizeof(
c020: 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f  __vaword) == (__
c030: 76 61 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31  va_offset3(slot1
c040: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b 73 69  ,slot2,slot3)+si
c050: 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29 2f 73  zeof(slot3)-1)/s
c060: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29  izeof(__vaword))
c070: 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 76   \.  ).#define v
c080: 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c  a_word_splittabl
c090: 65 5f 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  e_4(slot1,slot2,
c0a0: 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a  slot3,slot4)  \.
c0b0: 20 20 28 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31    ((__va_offset1
c0c0: 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f  (slot1)/sizeof(_
c0d0: 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76  _vaword) == (__v
c0e0: 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  a_offset1(slot1)
c0f0: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31  +sizeof(slot1)-1
c100: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
c110: 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76  d)) \.   && (__v
c120: 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c  a_offset2(slot1,
c130: 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f  slot2)/sizeof(__
c140: 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61  vaword) == (__va
c150: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73  _offset2(slot1,s
c160: 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot2)+sizeof(slo
c170: 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t2)-1)/sizeof(__
c180: 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26  vaword)) \.   &&
c190: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73   (__va_offset3(s
c1a0: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
c1b0: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
c1c0: 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73  d) == (__va_offs
c1d0: 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c  et3(slot1,slot2,
c1e0: 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c  slot3)+sizeof(sl
c1f0: 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot3)-1)/sizeof(_
c200: 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26  _vaword)) \.   &
c210: 26 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 34 28  & (__va_offset4(
c220: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74  slot1,slot2,slot
c230: 33 2c 73 6c 6f 74 34 29 2f 73 69 7a 65 6f 66 28  3,slot4)/sizeof(
c240: 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f  __vaword) == (__
c250: 76 61 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31  va_offset4(slot1
c260: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f  ,slot2,slot3,slo
c270: 74 34 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 34  t4)+sizeof(slot4
c280: 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61  )-1)/sizeof(__va
c290: 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65  word)) \.  ).#de
c2a0: 66 69 6e 65 20 5f 5f 76 61 5f 6f 66 66 73 65 74  fine __va_offset
c2b0: 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20 30 0a  1(slot1)  \.  0.
c2c0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 6f 66 66  #define __va_off
c2d0: 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set2(slot1,slot2
c2e0: 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66  )  \.  ((__va_of
c2f0: 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a  fset1(slot1)+siz
c300: 65 6f 66 28 73 6c 6f 74 31 29 2b 5f 5f 56 41 5f  eof(slot1)+__VA_
c310: 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 2d 31  alignof(slot2)-1
c320: 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f  ) & -(long)__VA_
c330: 61 6c 69 67 6e 6f 66 28 73 6c 6f 74 32 29 29 0a  alignof(slot2)).
c340: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 6f 66 66  #define __va_off
c350: 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set3(slot1,slot2
c360: 2c 73 6c 6f 74 33 29 20 20 5c 0a 20 20 28 28 5f  ,slot3)  \.  ((_
c370: 5f 76 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74  _va_offset2(slot
c380: 31 2c 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28  1,slot2)+sizeof(
c390: 73 6c 6f 74 32 29 2b 5f 5f 56 41 5f 61 6c 69 67  slot2)+__VA_alig
c3a0: 6e 6f 66 28 73 6c 6f 74 33 29 2d 31 29 20 26 20  nof(slot3)-1) & 
c3b0: 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f 61 6c 69 67  -(long)__VA_alig
c3c0: 6e 6f 66 28 73 6c 6f 74 33 29 29 0a 23 64 65 66  nof(slot3)).#def
c3d0: 69 6e 65 20 5f 5f 76 61 5f 6f 66 66 73 65 74 34  ine __va_offset4
c3e0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f  (slot1,slot2,slo
c3f0: 74 33 2c 73 6c 6f 74 34 29 20 20 5c 0a 20 20 28  t3,slot4)  \.  (
c400: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73 6c  (__va_offset3(sl
c410: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29  ot1,slot2,slot3)
c420: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2b 5f  +sizeof(slot3)+_
c430: 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _VA_alignof(slot
c440: 34 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f  4)-1) & -(long)_
c450: 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _VA_alignof(slot
c460: 34 29 29 0a 0a 0a 2f 2a 0a 20 2a 20 4d 69 73 63  4)).../*. * Misc
c470: 65 6c 6c 61 6e 65 6f 75 73 20 64 65 63 6c 61 72  ellaneous declar
c480: 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 23 69 66 64  ations.. */.#ifd
c490: 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 65  ef __cplusplus.e
c4a0: 78 74 65 72 6e 20 22 43 22 20 76 6f 69 64 20 28  xtern "C" void (
c4b0: 2a 76 61 63 61 6c 6c 29 20 28 29 3b 20 2f 2a 20  *vacall) (); /* 
c4c0: 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20  the return type 
c4d0: 69 73 20 76 61 72 69 61 62 6c 65 2c 20 6e 6f 74  is variable, not
c4e0: 20 76 6f 69 64 21 20 2a 2f 0a 23 65 6c 73 65 0a   void! */.#else.
c4f0: 65 78 74 65 72 6e 20 76 6f 69 64 20 28 2a 76 61  extern void (*va
c500: 63 61 6c 6c 29 20 28 29 3b 20 2f 2a 20 74 68 65  call) (); /* the
c510: 20 72 65 74 75 72 6e 20 74 79 70 65 20 69 73 20   return type is 
c520: 76 61 72 69 61 62 6c 65 2c 20 6e 6f 74 20 76 6f  variable, not vo
c530: 69 64 21 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 69  id! */.#endif.#i
c540: 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43  f defined(__STDC
c550: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
c560: 5f 47 4e 55 43 5f 5f 29 20 7c 7c 20 64 65 66 69  _GNUC__) || defi
c570: 6e 65 64 28 5f 5f 63 70 6c 75 73 70 6c 75 73 29  ned(__cplusplus)
c580: 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 28 2a 20  .extern void (* 
c590: 76 61 63 61 6c 6c 5f 66 75 6e 63 74 69 6f 6e 29  vacall_function)
c5a0: 20 28 76 61 5f 61 6c 69 73 74 29 3b 0a 65 78 74   (va_alist);.ext
c5b0: 65 72 6e 20 69 6e 74 20 5f 5f 76 61 5f 65 72 72  ern int __va_err
c5c0: 6f 72 31 20 28 65 6e 75 6d 20 5f 5f 56 41 74 79  or1 (enum __VAty
c5d0: 70 65 2c 20 65 6e 75 6d 20 5f 5f 56 41 74 79 70  pe, enum __VAtyp
c5e0: 65 29 3b 0a 65 78 74 65 72 6e 20 69 6e 74 20 5f  e);.extern int _
c5f0: 5f 76 61 5f 65 72 72 6f 72 32 20 28 75 6e 73 69  _va_error2 (unsi
c600: 67 6e 65 64 20 69 6e 74 29 3b 0a 65 78 74 65 72  gned int);.exter
c610: 6e 20 76 6f 69 64 20 5f 5f 73 74 72 75 63 74 63  n void __structc
c620: 70 79 20 28 76 6f 69 64 2a 20 64 65 73 74 2c 20  py (void* dest, 
c630: 76 6f 69 64 2a 20 73 72 63 2c 20 75 6e 73 69 67  void* src, unsig
c640: 6e 65 64 20 6c 6f 6e 67 20 73 69 7a 65 2c 20 75  ned long size, u
c650: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 6c 69  nsigned long ali
c660: 67 6e 6d 65 6e 74 29 3b 0a 23 65 6c 73 65 0a 65  gnment);.#else.e
c670: 78 74 65 72 6e 20 76 6f 69 64 20 28 2a 20 76 61  xtern void (* va
c680: 63 61 6c 6c 5f 66 75 6e 63 74 69 6f 6e 29 20 28  call_function) (
c690: 29 3b 0a 65 78 74 65 72 6e 20 69 6e 74 20 5f 5f  );.extern int __
c6a0: 76 61 5f 65 72 72 6f 72 31 20 28 29 3b 0a 65 78  va_error1 ();.ex
c6b0: 74 65 72 6e 20 69 6e 74 20 5f 5f 76 61 5f 65 72  tern int __va_er
c6c0: 72 6f 72 32 20 28 29 3b 0a 65 78 74 65 72 6e 20  ror2 ();.extern 
c6d0: 76 6f 69 64 20 5f 5f 73 74 72 75 63 74 63 70 79  void __structcpy
c6e0: 20 28 29 3b 0a 23 65 6e 64 69 66 0a 74 79 70 65   ();.#endif.type
c6f0: 64 65 66 20 75 6e 69 6f 6e 20 7b 20 5f 5f 76 61  def union { __va
c700: 77 6f 72 64 20 72 6f 6f 6d 5b 5f 5f 56 41 5f 41  word room[__VA_A
c710: 4c 49 53 54 5f 57 4f 52 44 53 5d 3b 20 64 6f 75  LIST_WORDS]; dou
c720: 62 6c 65 20 61 6c 69 67 6e 3b 20 7d 20 5f 5f 76  ble align; } __v
c730: 61 5f 73 74 72 75 63 74 5f 62 75 66 66 65 72 5f  a_struct_buffer_
c740: 74 3b 0a 65 78 74 65 72 6e 20 5f 5f 76 61 5f 73  t;.extern __va_s
c750: 74 72 75 63 74 5f 62 75 66 66 65 72 5f 74 20 5f  truct_buffer_t _
c760: 5f 76 61 5f 73 74 72 75 63 74 5f 62 75 66 66 65  _va_struct_buffe
c770: 72 3b 0a 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f  r;...#endif /* _
c780: 56 41 43 41 4c 4c 5f 48 20 2a 2f 0a              VACALL_H */.