Artifact fdc4f9aa990dc0b374768ce70c1292dacaecb3c1:


0000: 2f 2a 20 76 61 63 61 6c 6c 2e 68 2e 20 20 47 65  /* vacall.h.  Ge
0010: 6e 65 72 61 74 65 64 20 62 79 20 63 6f 6e 66 69  nerated by confi
0020: 67 75 72 65 2e 20 20 2a 2f 0a 23 69 66 6e 64 65  gure.  */.#ifnde
0030: 66 20 5f 56 41 43 41 4c 4c 5f 48 20 20 20 20 20  f _VACALL_H     
0040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0050: 20 20 20 20 20 20 20 20 20 20 2f 2a 2d 2a 2d 20            /*-*- 
0060: 43 20 2d 2a 2d 2a 2f 0a 23 64 65 66 69 6e 65 20  C -*-*/.#define 
0070: 5f 56 41 43 41 4c 4c 5f 48 0a 0a 2f 2a 0a 20 2a  _VACALL_H../*. *
0080: 20 43 6f 70 79 72 69 67 68 74 20 31 39 39 35 2d   Copyright 1995-
0090: 32 30 30 34 20 42 72 75 6e 6f 20 48 61 69 62 6c  2004 Bruno Haibl
00a0: 65 2c 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 2e  e, <bruno@clisp.
00b0: 6f 72 67 3e 0a 20 2a 0a 20 2a 20 54 68 69 73 20  org>. *. * This 
00c0: 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65  is free software
00d0: 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64   distributed und
00e0: 65 72 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72  er the GNU Gener
00f0: 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 63  al Public Licenc
0100: 65 0a 20 2a 20 64 65 73 63 72 69 62 65 64 20 69  e. * described i
0110: 6e 20 74 68 65 20 66 69 6c 65 20 43 4f 50 59 49  n the file COPYI
0120: 4e 47 2e 20 43 6f 6e 74 61 63 74 20 74 68 65 20  NG. Contact the 
0130: 61 75 74 68 6f 72 20 69 66 20 79 6f 75 20 64 6f  author if you do
0140: 6e 27 74 20 68 61 76 65 20 74 68 69 73 0a 20 2a  n't have this. *
0150: 20 6f 72 20 63 61 6e 27 74 20 6c 69 76 65 20 77   or can't live w
0160: 69 74 68 20 69 74 2e 20 54 68 65 72 65 20 69 73  ith it. There is
0170: 20 41 42 53 4f 4c 55 54 45 4c 59 20 4e 4f 20 57   ABSOLUTELY NO W
0180: 41 52 52 41 4e 54 59 2c 20 65 78 70 6c 69 63 69  ARRANTY, explici
0190: 74 20 6f 72 20 69 6d 70 6c 69 65 64 2c 0a 20 2a  t or implied,. *
01a0: 20 6f 6e 20 74 68 69 73 20 73 6f 66 74 77 61 72   on this softwar
01b0: 65 2e 0a 20 2a 2f 0a 0a 0a 2f 2a 20 54 68 65 73  e.. */.../* Thes
01c0: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 72  e definitions ar
01d0: 65 20 61 64 6a 75 73 74 65 64 20 62 79 20 60 63  e adjusted by `c
01e0: 6f 6e 66 69 67 75 72 65 27 20 61 75 74 6f 6d 61  onfigure' automa
01f0: 74 69 63 61 6c 6c 79 2e 20 2a 2f 0a 0a 2f 2a 20  tically. */../* 
0200: 43 50 55 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f  CPU */.#ifndef _
0210: 5f 69 33 38 36 5f 5f 0a 23 64 65 66 69 6e 65 20  _i386__.#define 
0220: 5f 5f 69 33 38 36 5f 5f 20 31 0a 23 65 6e 64 69  __i386__ 1.#endi
0230: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 36 38 6b  f.#ifndef __m68k
0240: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d  __./* #undef __m
0250: 36 38 6b 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 0a  68k__ */.#endif.
0260: 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f  #ifndef __mips__
0270: 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d 69 70  ./* #undef __mip
0280: 73 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 69  s__ */.#endif.#i
0290: 66 6e 64 65 66 20 5f 5f 6d 69 70 73 6e 33 32 5f  fndef __mipsn32_
02a0: 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d 69  _./* #undef __mi
02b0: 70 73 6e 33 32 5f 5f 20 2a 2f 0a 23 65 6e 64 69  psn32__ */.#endi
02c0: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70 73  f.#ifndef __mips
02d0: 36 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f  64__./* #undef _
02e0: 5f 6d 69 70 73 36 34 5f 5f 20 2a 2f 0a 23 65 6e  _mips64__ */.#en
02f0: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70  dif.#ifndef __sp
0300: 61 72 63 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20  arc__./* #undef 
0310: 5f 5f 73 70 61 72 63 5f 5f 20 2a 2f 0a 23 65 6e  __sparc__ */.#en
0320: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 70  dif.#ifndef __sp
0330: 61 72 63 36 34 5f 5f 0a 2f 2a 20 23 75 6e 64 65  arc64__./* #unde
0340: 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f 20 2a 2f  f __sparc64__ */
0350: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
0360: 5f 5f 61 6c 70 68 61 5f 5f 0a 2f 2a 20 23 75 6e  __alpha__./* #un
0370: 64 65 66 20 5f 5f 61 6c 70 68 61 5f 5f 20 2a 2f  def __alpha__ */
0380: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
0390: 5f 5f 68 70 70 61 5f 5f 0a 2f 2a 20 23 75 6e 64  __hppa__./* #und
03a0: 65 66 20 5f 5f 68 70 70 61 5f 5f 20 2a 2f 0a 23  ef __hppa__ */.#
03b0: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f  endif.#ifndef __
03c0: 61 72 6d 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20  arm__./* #undef 
03d0: 5f 5f 61 72 6d 5f 5f 20 2a 2f 0a 23 65 6e 64 69  __arm__ */.#endi
03e0: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 72 73 36 30  f.#ifndef __rs60
03f0: 30 30 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f  00__./* #undef _
0400: 5f 72 73 36 30 30 30 5f 5f 20 2a 2f 0a 23 65 6e  _rs6000__ */.#en
0410: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 73 33  dif.#ifndef __s3
0420: 39 30 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f  90__./* #undef _
0430: 5f 73 33 39 30 5f 5f 20 2a 2f 0a 23 65 6e 64 69  _s390__ */.#endi
0440: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 38 38 6b  f.#ifndef __m88k
0450: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 6d  __./* #undef __m
0460: 38 38 6b 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 0a  88k__ */.#endif.
0470: 23 69 66 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78  #ifndef __convex
0480: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 63  __./* #undef __c
0490: 6f 6e 76 65 78 5f 5f 20 2a 2f 0a 23 65 6e 64 69  onvex__ */.#endi
04a0: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 69 61 36 34  f.#ifndef __ia64
04b0: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 69  __./* #undef __i
04c0: 61 36 34 5f 5f 20 2a 2f 0a 23 65 6e 64 69 66 0a  a64__ */.#endif.
04d0: 23 69 66 6e 64 65 66 20 5f 5f 78 38 36 5f 36 34  #ifndef __x86_64
04e0: 5f 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 78  __./* #undef __x
04f0: 38 36 5f 36 34 5f 5f 20 2a 2f 0a 23 65 6e 64 69  86_64__ */.#endi
0500: 66 0a 0a 2f 2a 20 43 61 6c 6c 69 6e 67 20 63 6f  f../* Calling co
0510: 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a 20 44  nvention */./* D
0520: 65 66 69 6e 65 20 69 66 20 75 73 69 6e 67 20 70  efine if using p
0530: 63 63 20 6e 6f 6e 2d 72 65 65 6e 74 72 61 6e 74  cc non-reentrant
0540: 20 73 74 72 75 63 74 20 72 65 74 75 72 6e 20 63   struct return c
0550: 6f 6e 76 65 6e 74 69 6f 6e 20 2a 2f 0a 2f 2a 20  onvention */./* 
0560: 23 75 6e 64 65 66 20 5f 5f 50 43 43 5f 53 54 52  #undef __PCC_STR
0570: 55 43 54 5f 52 45 54 55 52 4e 5f 5f 20 2a 2f 0a  UCT_RETURN__ */.
0580: 2f 2a 20 44 65 66 69 6e 65 20 69 66 20 73 6d 61  /* Define if sma
0590: 6c 6c 20 73 74 72 75 63 74 73 20 61 72 65 20 72  ll structs are r
05a0: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73  eturned in regis
05b0: 74 65 72 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ters */.#define 
05c0: 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52  __SMALL_STRUCT_R
05d0: 45 54 55 52 4e 5f 5f 20 31 0a 2f 2a 20 44 65 66  ETURN__ 1./* Def
05e0: 69 6e 65 20 69 66 20 66 6c 6f 61 74 69 6e 67 2d  ine if floating-
05f0: 70 6f 69 6e 74 20 72 65 73 75 6c 74 73 20 61 72  point results ar
0600: 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68  e returned in th
0610: 65 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 74  e integer regist
0620: 65 72 73 20 2a 2f 0a 2f 2a 20 23 75 6e 64 65 66  ers */./* #undef
0630: 20 5f 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45   __IREG_FLOAT_RE
0640: 54 55 52 4e 5f 5f 20 2a 2f 0a 0a 2f 2a 20 43 4c  TURN__ */../* CL
0650: 5f 4c 4f 4e 47 4c 4f 4e 47 20 2a 2f 0a 2f 2a 20  _LONGLONG */./* 
0660: 44 65 66 69 6e 65 20 69 66 20 79 6f 75 72 20 63  Define if your c
0670: 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 73  ompiler supports
0680: 20 74 68 65 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27   the `long long'
0690: 20 74 79 70 65 2e 20 2a 2f 0a 23 69 66 6e 64 65   type. */.#ifnde
06a0: 66 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 0a  f HAVE_LONGLONG.
06b0: 23 64 65 66 69 6e 65 20 48 41 56 45 5f 4c 4f 4e  #define HAVE_LON
06c0: 47 4c 4f 4e 47 20 0a 23 65 6e 64 69 66 0a 0a 2f  GLONG .#endif../
06d0: 2a 20 41 43 5f 43 5f 43 48 41 52 5f 55 4e 53 49  * AC_C_CHAR_UNSI
06e0: 47 4e 45 44 20 2a 2f 0a 23 69 66 6e 64 65 66 20  GNED */.#ifndef 
06f0: 5f 5f 43 48 41 52 5f 55 4e 53 49 47 4e 45 44 5f  __CHAR_UNSIGNED_
0700: 5f 0a 2f 2a 20 23 75 6e 64 65 66 20 5f 5f 43 48  _./* #undef __CH
0710: 41 52 5f 55 4e 53 49 47 4e 45 44 5f 5f 20 2a 2f  AR_UNSIGNED__ */
0720: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 45 6e 64 20  .#endif../* End 
0730: 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 61  of definitions a
0740: 64 6a 75 73 74 65 64 20 62 79 20 60 63 6f 6e 66  djusted by `conf
0750: 69 67 75 72 65 27 2e 20 2a 2f 0a 0a 0a 2f 2a 20  igure'. */.../* 
0760: 4d 61 78 20 23 20 77 6f 72 64 73 20 69 6e 20 61  Max # words in a
0770: 72 67 75 6d 65 6e 74 2d 6c 69 73 74 20 61 6e 64  rgument-list and
0780: 20 74 65 6d 70 6f 72 61 72 79 20 73 74 72 75 63   temporary struc
0790: 74 75 72 65 20 73 74 6f 72 61 67 65 2e 0a 20 2a  ture storage.. *
07a0: 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41 5f 41  /.#ifndef __VA_A
07b0: 4c 49 53 54 5f 57 4f 52 44 53 0a 23 64 65 66 69  LIST_WORDS.#defi
07c0: 6e 65 20 5f 5f 56 41 5f 41 4c 49 53 54 5f 57 4f  ne __VA_ALIST_WO
07d0: 52 44 53 20 20 32 35 36 0a 23 65 6e 64 69 66 0a  RDS  256.#endif.
07e0: 0a 2f 2a 20 54 68 65 20 60 73 69 67 6e 65 64 27  ./* The `signed'
07f0: 20 6b 65 79 77 6f 72 64 2e 0a 20 2a 2f 0a 23 69   keyword.. */.#i
0800: 66 20 21 64 65 66 69 6e 65 64 28 5f 5f 53 54 44  f !defined(__STD
0810: 43 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  C__) && !defined
0820: 28 5f 5f 43 48 41 52 5f 55 4e 53 49 47 4e 45 44  (__CHAR_UNSIGNED
0830: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
0840: 73 69 67 6e 65 64 29 0a 23 64 65 66 69 6e 65 20  signed).#define 
0850: 73 69 67 6e 65 64 0a 23 65 6e 64 69 66 0a 0a 2f  signed.#endif../
0860: 2a 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20  * Determine the 
0870: 61 6c 69 67 6e 6d 65 6e 74 20 6f 66 20 61 20 74  alignment of a t
0880: 79 70 65 20 61 74 20 63 6f 6d 70 69 6c 65 20 74  ype at compile t
0890: 69 6d 65 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66  ime.. */.#if def
08a0: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 23  ined(__GNUC__).#
08b0: 64 65 66 69 6e 65 20 5f 5f 56 41 5f 61 6c 69 67  define __VA_alig
08c0: 6e 6f 66 20 5f 5f 61 6c 69 67 6e 6f 66 5f 5f 0a  nof __alignof__.
08d0: 23 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65  #else.#if define
08e0: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64  d(__mips__) || d
08f0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
0900: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
0910: 5f 6d 69 70 73 36 34 5f 5f 29 20 2f 2a 20 53 47  _mips64__) /* SG
0920: 49 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64  I compiler */.#d
0930: 65 66 69 6e 65 20 5f 5f 56 41 5f 61 6c 69 67 6e  efine __VA_align
0940: 6f 66 20 5f 5f 62 75 69 6c 74 69 6e 5f 61 6c 69  of __builtin_ali
0950: 67 6e 6f 66 0a 23 65 6c 73 65 0a 23 64 65 66 69  gnof.#else.#defi
0960: 6e 65 20 5f 5f 56 41 5f 6f 66 66 73 65 74 6f 66  ne __VA_offsetof
0970: 28 74 79 70 65 2c 69 64 65 6e 74 29 20 20 28 28  (type,ident)  ((
0980: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 26 28  unsigned long)&(
0990: 28 28 74 79 70 65 2a 29 30 29 2d 3e 69 64 65 6e  ((type*)0)->iden
09a0: 74 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41  t)).#define __VA
09b0: 5f 61 6c 69 67 6e 6f 66 28 74 79 70 65 29 20 20  _alignof(type)  
09c0: 5f 5f 56 41 5f 6f 66 66 73 65 74 6f 66 28 73 74  __VA_offsetof(st
09d0: 72 75 63 74 20 7b 20 63 68 61 72 20 5f 5f 73 6c  ruct { char __sl
09e0: 6f 74 31 3b 20 74 79 70 65 20 5f 5f 73 6c 6f 74  ot1; type __slot
09f0: 32 3b 20 7d 2c 20 5f 5f 73 6c 6f 74 32 29 0a 23  2; }, __slot2).#
0a00: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a  endif.#endif../*
0a10: 20 43 20 62 75 69 6c 74 69 6e 20 74 79 70 65 73   C builtin types
0a20: 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  .. */.#if define
0a30: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 74  d(__mipsn32__).t
0a40: 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67  ypedef long long
0a50: 20 5f 5f 76 61 77 6f 72 64 3b 0a 23 65 6c 73 65   __vaword;.#else
0a60: 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 5f 5f  .typedef long __
0a70: 76 61 77 6f 72 64 3b 0a 23 65 6e 64 69 66 0a 0a  vaword;.#endif..
0a80: 65 6e 75 6d 20 5f 5f 56 41 74 79 70 65 0a 7b 0a  enum __VAtype.{.
0a90: 20 20 5f 5f 56 41 76 6f 69 64 2c 0a 20 20 5f 5f    __VAvoid,.  __
0aa0: 56 41 63 68 61 72 2c 0a 20 20 5f 5f 56 41 73 63  VAchar,.  __VAsc
0ab0: 68 61 72 2c 0a 20 20 5f 5f 56 41 75 63 68 61 72  har,.  __VAuchar
0ac0: 2c 0a 20 20 5f 5f 56 41 73 68 6f 72 74 2c 0a 20  ,.  __VAshort,. 
0ad0: 20 5f 5f 56 41 75 73 68 6f 72 74 2c 0a 20 20 5f   __VAushort,.  _
0ae0: 5f 56 41 69 6e 74 2c 0a 20 20 5f 5f 56 41 75 69  _VAint,.  __VAui
0af0: 6e 74 2c 0a 20 20 5f 5f 56 41 6c 6f 6e 67 2c 0a  nt,.  __VAlong,.
0b00: 20 20 5f 5f 56 41 75 6c 6f 6e 67 2c 0a 20 20 5f    __VAulong,.  _
0b10: 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 2c 0a 20 20 5f  _VAlonglong,.  _
0b20: 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67 2c 0a 20 20  _VAulonglong,.  
0b30: 5f 5f 56 41 66 6c 6f 61 74 2c 0a 20 20 5f 5f 56  __VAfloat,.  __V
0b40: 41 64 6f 75 62 6c 65 2c 0a 20 20 5f 5f 56 41 76  Adouble,.  __VAv
0b50: 6f 69 64 70 2c 0a 20 20 5f 5f 56 41 73 74 72 75  oidp,.  __VAstru
0b60: 63 74 0a 7d 3b 0a 0a 65 6e 75 6d 20 5f 5f 56 41  ct.};..enum __VA
0b70: 5f 61 6c 69 73 74 5f 66 6c 61 67 73 0a 7b 0a 0a  _alist_flags.{..
0b80: 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74 75    /* how to retu
0b90: 72 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20  rn structs */.  
0ba0: 2f 2a 20 54 68 65 72 65 20 61 72 65 20 62 61 73  /* There are bas
0bb0: 69 63 61 6c 6c 79 20 33 20 77 61 79 73 20 74 6f  ically 3 ways to
0bc0: 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 73 3a   return structs:
0bd0: 0a 20 20 20 2a 20 61 2e 20 54 68 65 20 63 61 6c  .   * a. The cal
0be0: 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  led function ret
0bf0: 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
0c00: 6f 20 73 74 61 74 69 63 20 64 61 74 61 2e 20 4e  o static data. N
0c10: 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e 0a 20 20  ot reentrant..  
0c20: 20 2a 20 62 2e 20 54 68 65 20 63 61 6c 6c 65 72   * b. The caller
0c30: 20 70 61 73 73 65 73 20 74 68 65 20 72 65 74 75   passes the retu
0c40: 72 6e 20 73 74 72 75 63 74 75 72 65 20 61 64 64  rn structure add
0c50: 72 65 73 73 20 69 6e 20 61 20 64 65 64 69 63 61  ress in a dedica
0c60: 74 65 64 20 72 65 67 69 73 74 65 72 0a 20 20 20  ted register.   
0c70: 2a 20 20 20 20 6f 72 20 61 73 20 61 20 66 69 72  *    or as a fir
0c80: 73 74 20 28 6f 72 20 6c 61 73 74 29 2c 20 69 6e  st (or last), in
0c90: 76 69 73 69 62 6c 65 20 61 72 67 75 6d 65 6e 74  visible argument
0ca0: 2e 20 54 68 65 20 63 61 6c 6c 65 64 20 66 75 6e  . The called fun
0cb0: 63 74 69 6f 6e 20 73 74 6f 72 65 73 0a 20 20 20  ction stores.   
0cc0: 2a 20 20 20 20 69 74 73 20 72 65 73 75 6c 74 20  *    its result 
0cd0: 74 68 65 72 65 2e 0a 20 20 20 2a 20 63 2e 20 4c  there..   * c. L
0ce0: 69 6b 65 20 62 2c 20 61 6e 64 20 74 68 65 20 63  ike b, and the c
0cf0: 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 61  alled function a
0d00: 6c 73 6f 20 72 65 74 75 72 6e 73 20 74 68 65 20  lso returns the 
0d10: 72 65 74 75 72 6e 20 73 74 72 75 63 74 75 72 65  return structure
0d20: 0a 20 20 20 2a 20 20 20 20 61 64 64 72 65 73 73  .   *    address
0d30: 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e 20 76   in the return v
0d40: 61 6c 75 65 20 72 65 67 69 73 74 65 72 2e 20 28  alue register. (
0d50: 54 68 69 73 20 69 73 20 6e 6f 74 20 76 65 72 79  This is not very
0d60: 20 64 69 73 74 69 6e 67 75 69 73 68 61 62 6c 65   distinguishable
0d70: 0a 20 20 20 2a 20 20 20 20 66 72 6f 6d 20 62 2e  .   *    from b.
0d80: 29 0a 20 20 20 2a 20 49 6e 64 65 70 65 6e 64 65  ).   * Independe
0d90: 6e 74 6c 79 20 6f 66 20 74 68 69 73 2c 0a 20 20  ntly of this,.  
0da0: 20 2a 20 72 2e 20 73 6d 61 6c 6c 20 73 74 72 75   * r. small stru
0db0: 63 74 75 72 65 73 20 28 3c 3d 20 34 20 6f 72 20  ctures (<= 4 or 
0dc0: 3c 3d 20 38 20 62 79 74 65 73 29 20 6d 61 79 20  <= 8 bytes) may 
0dd0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74  be returned in t
0de0: 68 65 20 72 65 74 75 72 6e 0a 20 20 20 2a 20 20  he return.   *  
0df0: 20 20 76 61 6c 75 65 20 72 65 67 69 73 74 65 72    value register
0e00: 28 73 29 2c 20 6f 72 0a 20 20 20 2a 20 6d 2e 20  (s), or.   * m. 
0e10: 65 76 65 6e 20 73 6d 61 6c 6c 20 73 74 72 75 63  even small struc
0e20: 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64  tures are passed
0e30: 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 2a   in memory..   *
0e40: 2f 0a 20 20 2f 2a 20 67 63 63 2d 32 2e 36 2e 33  /.  /* gcc-2.6.3
0e50: 20 65 6d 70 6c 6f 79 73 20 74 68 65 20 66 6f 6c   employs the fol
0e60: 6c 6f 77 69 6e 67 20 73 74 72 61 74 65 67 79 3a  lowing strategy:
0e70: 0a 20 20 20 2a 20 20 20 2d 20 49 66 20 50 43 43  .   *   - If PCC
0e80: 5f 53 54 41 54 49 43 5f 53 54 52 55 43 54 5f 52  _STATIC_STRUCT_R
0e90: 45 54 55 52 4e 20 69 73 20 64 65 66 69 6e 65 64  ETURN is defined
0ea0: 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20   in the machine 
0eb0: 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 2a  description.   *
0ec0: 20 20 20 20 20 69 74 20 75 73 65 73 20 6d 65 74       it uses met
0ed0: 68 6f 64 20 61 2c 20 65 6c 73 65 20 6d 65 74 68  hod a, else meth
0ee0: 6f 64 20 63 2e 0a 20 20 20 2a 20 20 20 2d 20 49  od c..   *   - I
0ef0: 66 20 66 6c 61 67 5f 70 63 63 5f 73 74 72 75 63  f flag_pcc_struc
0f00: 74 5f 72 65 74 75 72 6e 20 69 73 20 73 65 74 20  t_return is set 
0f10: 28 65 69 74 68 65 72 20 62 79 20 2d 66 70 63 63  (either by -fpcc
0f20: 2d 73 74 72 75 63 74 2d 72 65 74 75 72 6e 20 6f  -struct-return o
0f30: 72 20 69 66 0a 20 20 20 2a 20 20 20 20 20 44 45  r if.   *     DE
0f40: 46 41 55 4c 54 5f 50 43 43 5f 53 54 52 55 43 54  FAULT_PCC_STRUCT
0f50: 5f 52 45 54 55 52 4e 20 69 73 20 64 65 66 69 6e  _RETURN is defin
0f60: 65 64 20 74 6f 20 31 20 69 6e 20 74 68 65 20 6d  ed to 1 in the m
0f70: 61 63 68 69 6e 65 20 64 65 73 63 72 69 70 74 69  achine descripti
0f80: 6f 6e 29 0a 20 20 20 2a 20 20 20 20 20 69 74 20  on).   *     it 
0f90: 75 73 65 73 20 6d 65 74 68 6f 64 20 6d 2c 20 65  uses method m, e
0fa0: 6c 73 65 20 28 65 69 74 68 65 72 20 62 79 20 2d  lse (either by -
0fb0: 66 72 65 67 2d 73 74 72 75 63 74 2d 72 65 74 75  freg-struct-retu
0fc0: 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20 20 20  rn or if.   *   
0fd0: 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f 53 54    DEFAULT_PCC_ST
0fe0: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64  RUCT_RETURN is d
0ff0: 65 66 69 6e 65 64 20 74 6f 20 30 20 69 6e 20 74  efined to 0 in t
1000: 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73 63 72  he machine descr
1010: 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20 20 20  iption).   *    
1020: 20 6d 65 74 68 6f 64 20 72 2e 0a 20 20 20 2a 2f   method r..   */
1030: 0a 20 20 5f 5f 56 41 5f 50 43 43 5f 53 54 52 55  .  __VA_PCC_STRU
1040: 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 30  CT_RETURN.= 1<<0
1050: 2c 09 2f 2a 20 61 3a 20 6e 65 65 64 20 74 6f 20  ,./* a: need to 
1060: 63 6f 70 79 20 74 68 65 20 73 74 72 75 63 74 20  copy the struct 
1070: 2a 2f 0a 20 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f  */.  __VA_SMALL_
1080: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20  STRUCT_RETURN.= 
1090: 31 3c 3c 31 2c 09 2f 2a 20 72 3a 20 73 70 65 63  1<<1,./* r: spec
10a0: 69 61 6c 20 63 61 73 65 20 66 6f 72 20 73 6d 61  ial case for sma
10b0: 6c 6c 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20  ll structs */.  
10c0: 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55 43 54 5f  __VA_GCC_STRUCT_
10d0: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 32 2c 09 2f  RETURN.= 1<<2,./
10e0: 2a 20 63 6f 6e 73 69 64 65 72 20 38 20 62 79 74  * consider 8 byt
10f0: 65 20 73 74 72 75 63 74 73 20 61 73 20 73 6d 61  e structs as sma
1100: 6c 6c 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  ll */.#if define
1110: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
1120: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
1130: 36 34 5f 5f 29 0a 20 20 5f 5f 56 41 5f 53 55 4e  64__).  __VA_SUN
1140: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
1150: 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f 56 41 5f  .= 1<<3,.  __VA_
1160: 53 55 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f  SUNPROCC_STRUCT_
1170: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23  RETURN.= 1<<4,.#
1180: 65 6c 73 65 0a 20 20 5f 5f 56 41 5f 53 55 4e 43  else.  __VA_SUNC
1190: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
11a0: 3d 20 30 2c 0a 20 20 5f 5f 56 41 5f 53 55 4e 50  = 0,.  __VA_SUNP
11b0: 52 4f 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  ROCC_STRUCT_RETU
11c0: 52 4e 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a 23  RN.= 0,.#endif.#
11d0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
11e0: 36 5f 5f 29 0a 20 20 5f 5f 56 41 5f 4e 45 58 54  6__).  __VA_NEXT
11f0: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
1200: 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f 56 41  N.= 1<<3,.  __VA
1210: 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52 45 54  _MSVC_STRUCT_RET
1220: 55 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23 65 6e 64  URN.= 1<<4,.#end
1230: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
1240: 5f 68 70 70 61 5f 5f 29 0a 20 20 5f 5f 56 41 5f  _hppa__).  __VA_
1250: 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45  OLDGCC_STRUCT_RE
1260: 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 23 65 6e  TURN.= 1<<3,.#en
1270: 64 69 66 0a 20 20 2f 2a 20 74 68 65 20 64 65 66  dif.  /* the def
1280: 61 75 6c 74 20 77 61 79 20 74 6f 20 72 65 74 75  ault way to retu
1290: 72 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a 20 20  rn structs */.  
12a0: 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65 20 68  /* This choice h
12b0: 65 72 65 20 69 73 20 62 61 73 65 64 20 6f 6e 20  ere is based on 
12c0: 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74  the assumption t
12d0: 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  hat the function
12e0: 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20 67 6f   you are.   * go
12f0: 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61 73 20  ing to call has 
1300: 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  been compiled wi
1310: 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f 6d 70  th the same comp
1320: 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75 73 69  iler you are usi
1330: 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63 6c 75  ng to.   * inclu
1340: 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20  de this file..  
1350: 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74   * If you want t
1360: 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 73  o call functions
1370: 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20 73 74   with another st
1380: 72 75 63 74 20 72 65 74 75 72 6e 69 6e 67 20 63  ruct returning c
1390: 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20 2a 20  onvention,.   * 
13a0: 6a 75 73 74 20 20 23 64 65 66 69 6e 65 20 5f 5f  just  #define __
13b0: 56 41 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  VA_STRUCT_RETURN
13c0: 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72 65   ....   * before
13d0: 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c 75   or after #inclu
13e0: 64 69 6e 67 20 3c 76 61 63 61 6c 6c 2e 68 3e 2e  ding <vacall.h>.
13f0: 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f  .   */.#ifndef _
1400: 5f 56 41 5f 53 54 52 55 43 54 5f 52 45 54 55 52  _VA_STRUCT_RETUR
1410: 4e 0a 20 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f  N.  __VA_STRUCT_
1420: 52 45 54 55 52 4e 09 09 3d 0a 23 69 66 20 64 65  RETURN..=.#if de
1430: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29  fined(__sparc__)
1440: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73   && !defined(__s
1450: 70 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66  parc64__) && def
1460: 69 6e 65 64 28 73 75 6e 29 20 26 26 20 64 65 66  ined(sun) && def
1470: 69 6e 65 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29  ined(__SUNPRO_C)
1480: 20 2f 2a 20 53 55 4e 57 73 70 72 6f 20 63 63 20   /* SUNWspro cc 
1490: 2a 2f 0a 09 09 09 09 20 20 5f 5f 56 41 5f 53 55  */.....  __VA_SU
14a0: 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f 52 45  NPROCC_STRUCT_RE
14b0: 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 23 69 66 20  TURN,.#else.#if 
14c0: 64 65 66 69 6e 65 64 28 5f 5f 50 43 43 5f 53 54  defined(__PCC_ST
14d0: 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29 20 2f  RUCT_RETURN__) /
14e0: 2a 20 64 65 66 69 6e 65 64 20 74 68 72 6f 75 67  * defined throug
14f0: 68 20 63 6f 6e 66 69 67 75 72 65 2c 20 73 65 65  h configure, see
1500: 20 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09 20 20   above */.....  
1510: 5f 5f 56 41 5f 50 43 43 5f 53 54 52 55 43 54 5f  __VA_PCC_STRUCT_
1520: 52 45 54 55 52 4e 20 7c 0a 23 69 66 20 64 65 66  RETURN |.#if def
1530: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
1540: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
1550: 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65 66 69  arc64__) && defi
1560: 6e 65 64 28 73 75 6e 29 20 26 26 20 21 28 64 65  ned(sun) && !(de
1570: 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20  fined(__STDC__) 
1580: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55  || defined(__GNU
1590: 43 5f 5f 29 29 20 2f 2a 20 73 75 6e 20 63 63 20  C__)) /* sun cc 
15a0: 2a 2f 0a 20 20 09 09 09 09 20 20 5f 5f 56 41 5f  */.  ....  __VA_
15b0: 53 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54  SUNCC_STRUCT_RET
15c0: 55 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 09 09 09  URN,.#else.  ...
15d0: 09 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6c  .  0,.#endif.#el
15e0: 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  se.#if defined(_
15f0: 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45  _SMALL_STRUCT_RE
1600: 54 55 52 4e 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  TURN__) || defin
1610: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
1620: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
1630: 73 36 34 5f 5f 29 20 2f 2a 20 64 65 66 69 6e 65  s64__) /* define
1640: 64 20 74 68 72 6f 75 67 68 20 63 6f 6e 66 69 67  d through config
1650: 75 72 65 2c 20 73 65 65 20 61 62 6f 76 65 20 2a  ure, see above *
1660: 2f 0a 09 09 09 09 20 20 5f 5f 56 41 5f 53 4d 41  /.....  __VA_SMA
1670: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
1680: 20 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65   |.#endif.#if de
1690: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a  fined(__GNUC__).
16a0: 09 09 09 09 20 20 5f 5f 56 41 5f 47 43 43 5f 53  ....  __VA_GCC_S
16b0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23  TRUCT_RETURN |.#
16c0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
16d0: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64  d(__i386__) && d
16e0: 65 66 69 6e 65 64 28 4e 65 58 54 29 20 26 26 20  efined(NeXT) && 
16f0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1700: 29 20 2f 2a 20 4e 65 58 54 20 67 63 63 2d 32 2e  ) /* NeXT gcc-2.
1710: 35 2e 38 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 56  5.8 */.....  __V
1720: 41 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43 54  A_NEXTGCC_STRUCT
1730: 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66  _RETURN |.#endif
1740: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
1750: 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e 65  386__) && define
1760: 64 28 5f 4d 53 43 5f 56 45 52 29 20 2f 2a 20 4d  d(_MSC_VER) /* M
1770: 53 56 43 20 34 2e 30 20 2a 2f 0a 09 09 09 09 20  SVC 4.0 */..... 
1780: 20 5f 5f 56 41 5f 4d 53 56 43 5f 53 54 52 55 43   __VA_MSVC_STRUC
1790: 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69  T_RETURN |.#endi
17a0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
17b0: 68 70 70 61 5f 5f 29 20 26 26 20 64 65 66 69 6e  hppa__) && defin
17c0: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20  ed(__GNUC__) && 
17d0: 28 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33 29 20 26  (__GNUC__ < 3) &
17e0: 26 20 28 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f  & (__GNUC_MINOR_
17f0: 5f 20 3c 20 37 29 0a 09 09 09 09 20 20 5f 5f 56  _ < 7).....  __V
1800: 41 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f  A_OLDGCC_STRUCT_
1810: 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69 66 0a  RETURN |.#endif.
1820: 20 20 09 09 09 09 20 20 30 2c 0a 23 65 6e 64 69    ....  0,.#endi
1830: 66 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  f.#endif.#endif.
1840: 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72 65 74  .  /* how to ret
1850: 75 72 6e 20 66 6c 6f 61 74 73 20 2a 2f 0a 23 69  urn floats */.#i
1860: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  f defined(__m68k
1870: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
1880: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
1890: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
18a0: 5f 5f 29 29 0a 20 20 5f 5f 56 41 5f 53 55 4e 43  __)).  __VA_SUNC
18b0: 43 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d  C_FLOAT_RETURN.=
18c0: 20 31 3c 3c 35 2c 0a 23 65 6e 64 69 66 0a 23 69   1<<5,.#endif.#i
18d0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  f defined(__m68k
18e0: 5f 5f 29 0a 20 20 5f 5f 56 41 5f 46 52 45 47 5f  __).  __VA_FREG_
18f0: 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d 20 31  FLOAT_RETURN.= 1
1900: 3c 3c 36 2c 0a 23 65 6e 64 69 66 0a 20 20 2f 2a  <<6,.#endif.  /*
1910: 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 61 79   the default way
1920: 20 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f 61 74   to return float
1930: 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20 63  s */.  /* This c
1940: 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62 61  hoice here is ba
1950: 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75 6d  sed on the assum
1960: 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 66  ption that the f
1970: 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65 0a  unction you are.
1980: 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63 61     * going to ca
1990: 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70  ll has been comp
19a0: 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73 61  iled with the sa
19b0: 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75 20  me compiler you 
19c0: 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20 20  are using to.   
19d0: 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 66  * include this f
19e0: 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f 75  ile..   * If you
19f0: 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66 75   want to call fu
1a00: 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e 6f  nctions with ano
1a10: 74 68 65 72 20 66 6c 6f 61 74 20 72 65 74 75 72  ther float retur
1a20: 6e 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c  ning convention,
1a30: 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66  .   * just  #def
1a40: 69 6e 65 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 52  ine __VA_FLOAT_R
1a50: 45 54 55 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62  ETURN ....   * b
1a60: 65 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23  efore or after #
1a70: 69 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c  including <vacal
1a80: 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e  l.h>..   */.#ifn
1a90: 64 65 66 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 52  def __VA_FLOAT_R
1aa0: 45 54 55 52 4e 0a 23 69 66 20 28 64 65 66 69 6e  ETURN.#if (defin
1ab0: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
1ac0: 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  (defined(__sparc
1ad0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
1ae0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 29 20 26  __sparc64__))) &
1af0: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55  & !defined(__GNU
1b00: 43 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28  C__) && defined(
1b10: 73 75 6e 29 20 26 26 20 21 64 65 66 69 6e 65 64  sun) && !defined
1b20: 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 20 2f 2a  (__SUNPRO_C)  /*
1b30: 20 73 75 6e 20 63 63 20 2a 2f 0a 20 20 5f 5f 56   sun cc */.  __V
1b40: 41 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09  A_FLOAT_RETURN..
1b50: 3d 20 5f 5f 56 41 5f 53 55 4e 43 43 5f 46 4c 4f  = __VA_SUNCC_FLO
1b60: 41 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 69 66  AT_RETURN,.#elif
1b70: 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b   (defined(__m68k
1b80: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
1b90: 5f 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54  __IREG_FLOAT_RET
1ba0: 55 52 4e 5f 5f 29 29 0a 20 20 5f 5f 56 41 5f 46  URN__)).  __VA_F
1bb0: 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d 20 5f  LOAT_RETURN..= _
1bc0: 5f 56 41 5f 46 52 45 47 5f 46 4c 4f 41 54 5f 52  _VA_FREG_FLOAT_R
1bd0: 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 5f  ETURN,.#else.  _
1be0: 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  _VA_FLOAT_RETURN
1bf0: 09 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65  ..= 0,.#endif.#e
1c00: 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74  ndif..  /* how t
1c10: 6f 20 70 61 73 73 20 73 74 72 75 63 74 73 20 2a  o pass structs *
1c20: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
1c30: 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  mips__) || defin
1c40: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20  ed(__mipsn32__) 
1c50: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  || defined(__mip
1c60: 73 36 34 5f 5f 29 0a 20 20 5f 5f 56 41 5f 53 47  s64__).  __VA_SG
1c70: 49 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09  ICC_STRUCT_ARGS.
1c80: 3d 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 23  = 1<<7,.#endif.#
1c90: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36  if defined(__rs6
1ca0: 30 30 30 5f 5f 29 0a 20 20 5f 5f 56 41 5f 41 49  000__).  __VA_AI
1cb0: 58 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 09  XCC_STRUCT_ARGS.
1cc0: 3d 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66 0a 20  = 1<<7,.#endif. 
1cd0: 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20   /* the default 
1ce0: 77 61 79 20 74 6f 20 70 61 73 73 20 66 6c 6f 61  way to pass floa
1cf0: 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73 20  ts */.  /* This 
1d00: 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20 62  choice here is b
1d10: 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73 75  ased on the assu
1d20: 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  mption that the 
1d30: 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72 65  function you are
1d40: 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20 63  .   * going to c
1d50: 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  all has been com
1d60: 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 73  piled with the s
1d70: 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f 75  ame compiler you
1d80: 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20 20   are using to.  
1d90: 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20   * include this 
1da0: 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79 6f  file..   * If yo
1db0: 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 66  u want to call f
1dc0: 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6e  unctions with an
1dd0: 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73 73  other float pass
1de0: 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a  ing convention,.
1df0: 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66 69     * just  #defi
1e00: 6e 65 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 41  ne __VA_STRUCT_A
1e10: 52 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66  RGS ....   * bef
1e20: 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e  ore or after #in
1e30: 63 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c 6c 2e  cluding <vacall.
1e40: 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65  h>..   */.#ifnde
1e50: 66 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 41 52  f __VA_STRUCT_AR
1e60: 47 53 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28  GS.#if (defined(
1e70: 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66  __mips__) || def
1e80: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
1e90: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
1ea0: 69 70 73 36 34 5f 5f 29 29 20 26 26 20 21 64 65  ips64__)) && !de
1eb0: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
1ec0: 2f 2a 20 53 47 49 20 6d 69 70 73 20 63 63 20 2a  /* SGI mips cc *
1ed0: 2f 0a 20 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f  /.  __VA_STRUCT_
1ee0: 41 52 47 53 09 09 3d 20 5f 5f 56 41 5f 53 47 49  ARGS..= __VA_SGI
1ef0: 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53 2c 0a  CC_STRUCT_ARGS,.
1f00: 23 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65  #else.#if define
1f10: 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26  d(__rs6000__) &&
1f20: 20 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 26   defined(_AIX) &
1f30: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55  & !defined(__GNU
1f40: 43 5f 5f 29 20 2f 2a 20 41 49 58 20 63 63 2c 20  C__) /* AIX cc, 
1f50: 78 6c 63 20 2a 2f 0a 20 20 5f 5f 56 41 5f 53 54  xlc */.  __VA_ST
1f60: 52 55 43 54 5f 41 52 47 53 09 09 3d 20 5f 5f 56  RUCT_ARGS..= __V
1f70: 41 5f 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41  A_AIXCC_STRUCT_A
1f80: 52 47 53 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 56  RGS,.#else.  __V
1f90: 41 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d  A_STRUCT_ARGS..=
1fa0: 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69   0,.#endif.#endi
1fb0: 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68  f.#endif..  /* h
1fc0: 6f 77 20 74 6f 20 70 61 73 73 20 66 6c 6f 61 74  ow to pass float
1fd0: 73 20 2a 2f 0a 20 20 2f 2a 20 41 4e 53 49 20 43  s */.  /* ANSI C
1fe0: 20 63 6f 6d 70 69 6c 65 72 73 20 61 6e 64 20 47   compilers and G
1ff0: 4e 55 20 67 63 63 20 70 61 73 73 20 66 6c 6f 61  NU gcc pass floa
2000: 74 73 20 61 73 20 66 6c 6f 61 74 73 2e 0a 20 20  ts as floats..  
2010: 20 2a 20 4b 26 52 20 43 20 63 6f 6d 70 69 6c 65   * K&R C compile
2020: 72 73 20 70 61 73 73 20 66 6c 6f 61 74 73 20 61  rs pass floats a
2030: 73 20 64 6f 75 62 6c 65 73 2e 0a 20 20 20 2a 20  s doubles..   * 
2040: 28 45 78 63 65 70 74 20 73 6f 6d 65 20 63 6f 6d  (Except some com
2050: 70 69 6c 65 72 73 20 6c 69 6b 65 20 53 47 49 20  pilers like SGI 
2060: 4d 49 50 53 20 22 63 63 22 20 61 6e 64 20 22 63  MIPS "cc" and "c
2070: 63 20 2d 63 63 6b 72 22 20 69 66 20 61 20 70 72  c -cckr" if a pr
2080: 6f 74 6f 74 79 70 65 20 69 73 0a 20 20 20 2a 20  ototype is.   * 
2090: 6b 6e 6f 77 6e 20 66 6f 72 20 74 68 65 20 63 61  known for the ca
20a0: 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 20  lled functions. 
20b0: 42 75 74 20 74 6f 20 63 6f 6d 70 69 6c 65 20 61  But to compile a
20c0: 20 70 72 6f 67 72 61 6d 20 77 69 74 68 20 70 72   program with pr
20d0: 6f 74 6f 74 79 70 65 73 2c 0a 20 20 20 2a 20 22  ototypes,.   * "
20e0: 63 63 20 2d 61 6e 73 69 22 20 69 73 20 62 65 74  cc -ansi" is bet
20f0: 74 65 72 20 61 6e 79 77 61 79 2e 0a 20 20 20 2a  ter anyway..   *
2100: 2f 0a 20 20 5f 5f 56 41 5f 41 4e 53 49 5f 46 4c  /.  __VA_ANSI_FL
2110: 4f 41 54 5f 41 52 47 53 09 09 3d 20 30 2c 20 20  OAT_ARGS..= 0,  
2120: 20 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61 74 73    /* pass floats
2130: 20 61 73 20 66 6c 6f 61 74 73 20 2a 2f 0a 20 20   as floats */.  
2140: 5f 5f 56 41 5f 54 52 41 44 49 54 49 4f 4e 41 4c  __VA_TRADITIONAL
2150: 5f 46 4c 4f 41 54 5f 41 52 47 53 09 3d 20 31 3c  _FLOAT_ARGS.= 1<
2160: 3c 38 2c 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61  <8, /* pass floa
2170: 74 73 20 61 73 20 64 6f 75 62 6c 65 73 20 2a 2f  ts as doubles */
2180: 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c  .  /* the defaul
2190: 74 20 77 61 79 20 74 6f 20 70 61 73 73 20 66 6c  t way to pass fl
21a0: 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69  oats */.  /* Thi
21b0: 73 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73  s choice here is
21c0: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73   based on the as
21d0: 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68  sumption that th
21e0: 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61  e function you a
21f0: 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f  re.   * going to
2200: 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63   call has been c
2210: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
2220: 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79   same compiler y
2230: 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a  ou are using to.
2240: 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69     * include thi
2250: 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20  s file..   * If 
2260: 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c  you want to call
2270: 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20   functions with 
2280: 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61  another float pa
2290: 73 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e  ssing convention
22a0: 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65  ,.   * just  #de
22b0: 66 69 6e 65 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  fine __VA_FLOAT_
22c0: 41 52 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65  ARGS ....   * be
22d0: 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69  fore or after #i
22e0: 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c 6c  ncluding <vacall
22f0: 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64  .h>..   */.#ifnd
2300: 65 66 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 41 52  ef __VA_FLOAT_AR
2310: 47 53 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  GS.#if defined(_
2320: 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69  _STDC__) || defi
2330: 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 2f 2a  ned(__GNUC__) /*
2340: 20 77 68 61 74 20 61 62 6f 75 74 20 68 70 70 61   what about hppa
2350: 20 22 63 63 20 2d 41 61 22 20 3f 3f 20 2a 2f 0a   "cc -Aa" ?? */.
2360: 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 41 52 47    __VA_FLOAT_ARG
2370: 53 09 09 3d 20 5f 5f 56 41 5f 41 4e 53 49 5f 46  S..= __VA_ANSI_F
2380: 4c 4f 41 54 5f 41 52 47 53 2c 0a 23 65 6c 73 65  LOAT_ARGS,.#else
2390: 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 41 52  .  __VA_FLOAT_AR
23a0: 47 53 09 09 3d 20 5f 5f 56 41 5f 54 52 41 44 49  GS..= __VA_TRADI
23b0: 54 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41 52 47  TIONAL_FLOAT_ARG
23c0: 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66  S,.#endif.#endif
23d0: 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 70 61  ..  /* how to pa
23e0: 73 73 20 61 6e 64 20 72 65 74 75 72 6e 20 73 6d  ss and return sm
23f0: 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 72 67 75  all integer argu
2400: 6d 65 6e 74 73 20 2a 2f 0a 20 20 5f 5f 56 41 5f  ments */.  __VA_
2410: 41 4e 53 49 5f 49 4e 54 45 47 45 52 53 09 09 3d  ANSI_INTEGERS..=
2420: 20 30 2c 20 2f 2a 20 6e 6f 20 70 72 6f 6d 6f 74   0, /* no promot
2430: 69 6f 6e 73 20 2a 2f 0a 20 20 5f 5f 56 41 5f 54  ions */.  __VA_T
2440: 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45 47  RADITIONAL_INTEG
2450: 45 52 53 09 3d 20 30 2c 20 2f 2a 20 70 72 6f 6d  ERS.= 0, /* prom
2460: 6f 74 65 20 5b 75 5d 63 68 61 72 2c 20 5b 75 5d  ote [u]char, [u]
2470: 73 68 6f 72 74 20 74 6f 20 5b 75 5d 69 6e 74 20  short to [u]int 
2480: 2a 2f 0a 20 20 2f 2a 20 46 6f 72 74 75 6e 61 74  */.  /* Fortunat
2490: 65 6c 79 20 74 68 65 73 65 20 74 77 6f 20 6d 65  ely these two me
24a0: 74 68 6f 64 73 20 61 72 65 20 63 6f 6d 70 61 74  thods are compat
24b0: 69 62 6c 65 2e 20 4f 75 72 20 6d 61 63 72 6f 73  ible. Our macros
24c0: 20 77 6f 72 6b 20 77 69 74 68 20 62 6f 74 68 2e   work with both.
24d0: 20 2a 2f 0a 20 20 2f 2a 20 74 68 65 20 64 65 66   */.  /* the def
24e0: 61 75 6c 74 20 77 61 79 20 74 6f 20 70 61 73 73  ault way to pass
24f0: 20 61 6e 64 20 72 65 74 75 72 6e 20 73 6d 61 6c   and return smal
2500: 6c 20 69 6e 74 65 67 65 72 20 61 72 67 75 6d 65  l integer argume
2510: 6e 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73  nts */.  /* This
2520: 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20   choice here is 
2530: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73  based on the ass
2540: 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65  umption that the
2550: 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72   function you ar
2560: 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20  e.   * going to 
2570: 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f  call has been co
2580: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20  mpiled with the 
2590: 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f  same compiler yo
25a0: 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20  u are using to. 
25b0: 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73    * include this
25c0: 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79   file..   * If y
25d0: 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20  ou want to call 
25e0: 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61  functions with a
25f0: 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61 73  nother float pas
2600: 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c  sing convention,
2610: 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65 66  .   * just  #def
2620: 69 6e 65 20 5f 5f 56 41 5f 49 4e 54 45 47 45 52  ine __VA_INTEGER
2630: 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f 72  S ....   * befor
2640: 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63 6c  e or after #incl
2650: 75 64 69 6e 67 20 3c 76 61 63 61 6c 6c 2e 68 3e  uding <vacall.h>
2660: 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66 20  ..   */.#ifndef 
2670: 5f 5f 56 41 5f 49 4e 54 45 47 45 52 53 0a 23 69  __VA_INTEGERS.#i
2680: 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43  f defined(__STDC
2690: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
26a0: 5f 47 4e 55 43 5f 5f 29 0a 20 20 5f 5f 56 41 5f  _GNUC__).  __VA_
26b0: 49 4e 54 45 47 45 52 53 09 09 09 3d 20 5f 5f 56  INTEGERS...= __V
26c0: 41 5f 41 4e 53 49 5f 49 4e 54 45 47 45 52 53 2c  A_ANSI_INTEGERS,
26d0: 0a 23 65 6c 73 65 0a 20 20 5f 5f 56 41 5f 49 4e  .#else.  __VA_IN
26e0: 54 45 47 45 52 53 09 09 09 3d 20 5f 5f 56 41 5f  TEGERS...= __VA_
26f0: 54 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54 45  TRADITIONAL_INTE
2700: 47 45 52 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e  GERS,.#endif.#en
2710: 64 69 66 0a 0a 20 20 2f 2a 20 73 74 61 63 6b 20  dif..  /* stack 
2720: 63 6c 65 61 6e 75 70 20 70 6f 6c 69 63 79 20 2a  cleanup policy *
2730: 2f 0a 20 20 5f 5f 56 41 5f 43 44 45 43 4c 5f 43  /.  __VA_CDECL_C
2740: 4c 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f 2a 20  LEANUP..= 0, /* 
2750: 63 61 6c 6c 65 72 20 70 6f 70 73 20 61 72 67 73  caller pops args
2760: 20 61 66 74 65 72 20 72 65 74 75 72 6e 20 2a 2f   after return */
2770: 0a 20 20 5f 5f 56 41 5f 53 54 44 43 41 4c 4c 5f  .  __VA_STDCALL_
2780: 43 4c 45 41 4e 55 50 09 09 3d 20 31 3c 3c 39 2c  CLEANUP..= 1<<9,
2790: 20 2f 2a 20 63 61 6c 6c 65 65 20 70 6f 70 73 20   /* callee pops 
27a0: 61 72 67 73 20 62 65 66 6f 72 65 20 72 65 74 75  args before retu
27b0: 72 6e 20 2a 2f 0a 09 09 09 09 20 20 20 20 20 2f  rn */.....     /
27c0: 2a 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79  * currently only
27d0: 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 5f 5f   supported on __
27e0: 69 33 38 36 5f 5f 20 2a 2f 0a 23 69 66 6e 64 65  i386__ */.#ifnde
27f0: 66 20 5f 5f 56 41 5f 43 4c 45 41 4e 55 50 0a 20  f __VA_CLEANUP. 
2800: 20 5f 5f 56 41 5f 43 4c 45 41 4e 55 50 09 09 09   __VA_CLEANUP...
2810: 3d 20 5f 5f 56 41 5f 43 44 45 43 4c 5f 43 4c 45  = __VA_CDECL_CLE
2820: 41 4e 55 50 2c 0a 23 65 6e 64 69 66 0a 0a 20 20  ANUP,.#endif..  
2830: 2f 2a 20 54 68 65 73 65 20 61 72 65 20 66 6f 72  /* These are for
2840: 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e   internal use on
2850: 6c 79 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65  ly */.#if define
2860: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64  d(__i386__) || d
2870: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
2880: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
2890: 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69  psn32__) || defi
28a0: 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20  ned(__mips64__) 
28b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  || defined(__spa
28c0: 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  rc64__) || defin
28d0: 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c  ed(__alpha__) ||
28e0: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f   defined(__arm__
28f0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72  ) || defined(__r
2900: 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69  s6000__) || defi
2910: 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20  ned(__convex__) 
2920: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
2930: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
2940: 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c 20 64  __x86_64__) || d
2950: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
2960: 0a 20 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  .  __VA_REGISTER
2970: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d  _STRUCT_RETURN.=
2980: 20 31 3c 3c 31 30 2c 0a 23 65 6e 64 69 66 0a 23   1<<10,.#endif.#
2990: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
29a0: 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64  s__) && !defined
29b0: 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20  (__mipsn32__).  
29c0: 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31 09 09 09 3d  __VA_FLOAT_1...=
29d0: 20 31 3c 3c 31 31 2c 0a 20 20 5f 5f 56 41 5f 46   1<<11,.  __VA_F
29e0: 4c 4f 41 54 5f 32 09 09 09 3d 20 31 3c 3c 31 32  LOAT_2...= 1<<12
29f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ,.#endif.#if def
2a00: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
2a10: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
2a20: 69 70 73 36 34 5f 5f 29 0a 20 20 5f 5f 56 41 5f  ips64__).  __VA_
2a30: 52 45 47 49 53 54 45 52 5f 46 4c 4f 41 54 53 54  REGISTER_FLOATST
2a40: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
2a50: 3c 31 33 2c 0a 20 20 5f 5f 56 41 5f 52 45 47 49  <13,.  __VA_REGI
2a60: 53 54 45 52 5f 44 4f 55 42 4c 45 53 54 52 55 43  STER_DOUBLESTRUC
2a70: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 31 34  T_RETURN.= 1<<14
2a80: 2c 0a 23 65 6e 64 69 66 0a 0a 20 20 5f 5f 56 41  ,.#endif..  __VA
2a90: 5f 66 6c 61 67 5f 66 6f 72 5f 62 72 6f 6b 65 6e  _flag_for_broken
2aa0: 5f 63 6f 6d 70 69 6c 65 72 73 5f 74 68 61 74 5f  _compilers_that_
2ab0: 64 6f 6e 74 5f 6c 69 6b 65 5f 74 72 61 69 6c 69  dont_like_traili
2ac0: 6e 67 5f 63 6f 6d 6d 61 73 0a 7d 3b 0a 0a 2f 2a  ng_commas.};../*
2ad0: 0a 20 2a 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f  . * Definition o
2ae0: 66 20 74 68 65 20 60 76 61 5f 61 6c 69 73 74 27  f the `va_alist'
2af0: 20 74 79 70 65 2e 0a 20 2a 2f 0a 74 79 70 65 64   type.. */.typed
2b00: 65 66 20 73 74 72 75 63 74 0a 7b 0a 20 20 2f 2a  ef struct.{.  /*
2b10: 20 73 6f 6d 65 20 76 61 5f 2e 2e 2e 20 6d 61 63   some va_... mac
2b20: 72 6f 73 20 6e 65 65 64 20 74 68 65 73 65 20 66  ros need these f
2b30: 6c 61 67 73 20 2a 2f 0a 20 20 69 6e 74 20 20 20  lags */.  int   
2b40: 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 3b 0a           flags;.
2b50: 20 20 2f 2a 20 63 75 72 72 65 6e 74 20 70 6f 69    /* current poi
2b60: 6e 74 65 72 20 69 6e 74 6f 20 74 68 65 20 61 72  nter into the ar
2b70: 67 75 6d 65 6e 74 20 61 72 72 61 79 20 2a 2f 0a  gument array */.
2b80: 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20    unsigned long 
2b90: 20 61 70 74 72 3b 0a 20 20 2f 2a 20 73 74 72 75   aptr;.  /* stru
2ba0: 63 74 75 72 65 20 72 65 74 75 72 6e 20 70 6f 69  cture return poi
2bb0: 6e 74 65 72 2c 20 72 65 74 75 72 6e 20 74 79 70  nter, return typ
2bc0: 65 2c 20 72 65 74 75 72 6e 20 74 79 70 65 20 73  e, return type s
2bd0: 69 7a 65 20 2a 2f 0a 20 20 76 6f 69 64 2a 20 20  ize */.  void*  
2be0: 20 20 20 20 20 20 20 20 72 61 64 64 72 3b 0a 20          raddr;. 
2bf0: 20 65 6e 75 6d 20 5f 5f 56 41 74 79 70 65 20 20   enum __VAtype  
2c00: 72 74 79 70 65 3b 0a 20 20 75 6e 73 69 67 6e 65  rtype;.  unsigne
2c10: 64 20 6c 6f 6e 67 20 20 72 73 69 7a 65 3b 0a 23  d long  rsize;.#
2c20: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38  if defined(__i38
2c30: 36 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  6__) || (defined
2c40: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20  (__rs6000__) && 
2c50: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
2c60: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
2c70: 50 50 4c 45 5f 5f 29 29 0a 20 20 2f 2a 20 46 69  PPLE__)).  /* Fi
2c80: 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65 64 65  ller word, neede
2c90: 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65 72 73  d if the numbers
2ca0: 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74 6f 20   of words up to 
2cb0: 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74 72 75  now in this stru
2cc0: 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20 69 73  cture */.  /* is
2cd0: 20 6f 64 64 20 28 62 65 63 61 75 73 65 20 6f 6e   odd (because on
2ce0: 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66 28 64   MSVC, alignof(d
2cf0: 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f 72 6d  ouble) = 8, norm
2d00: 61 6c 6c 79 20 3d 20 34 3b 20 73 69 6d 69 6c 61  ally = 4; simila
2d10: 72 6c 79 2c 20 20 2a 2f 0a 20 20 2f 2a 20 6f 6e  rly,  */.  /* on
2d20: 20 4d 61 63 4f 53 20 58 2c 20 74 68 65 20 41 70   MacOS X, the Ap
2d30: 70 6c 65 20 63 6f 6d 70 69 6c 65 72 20 68 61 73  ple compiler has
2d40: 20 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29   alignof(double)
2d50: 20 3d 20 38 20 77 68 65 72 65 61 73 20 74 68 65   = 8 whereas the
2d60: 20 20 20 20 20 20 2a 2f 0a 20 20 2f 2a 20 73 74        */.  /* st
2d70: 61 6e 64 61 72 64 20 47 43 43 20 68 61 73 20 61  andard GCC has a
2d80: 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29 20 3d  lignof(double) =
2d90: 20 34 2e 20 20 20 20 20 20 20 20 20 20 20 20 20   4.             
2da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db0: 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 76 61 77        */.  __vaw
2dc0: 6f 72 64 20 20 20 20 20 20 20 66 69 6c 6c 65 72  ord       filler
2dd0: 31 3b 0a 23 65 6e 64 69 66 0a 20 20 2f 2a 20 74  1;.#endif.  /* t
2de0: 65 6d 70 6f 72 61 72 79 20 73 74 6f 72 61 67 65  emporary storage
2df0: 20 66 6f 72 20 72 65 74 75 72 6e 20 76 61 6c 75   for return valu
2e00: 65 20 2a 2f 0a 20 20 75 6e 69 6f 6e 20 7b 0a 20  e */.  union {. 
2e10: 20 20 20 63 68 61 72 20 20 20 20 20 20 20 20 20     char         
2e20: 20 20 20 20 20 20 20 5f 63 68 61 72 3b 0a 20 20         _char;.  
2e30: 20 20 73 69 67 6e 65 64 20 63 68 61 72 20 20 20    signed char   
2e40: 20 20 20 20 20 20 5f 73 63 68 61 72 3b 0a 20 20        _schar;.  
2e50: 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20    unsigned char 
2e60: 20 20 20 20 20 20 5f 75 63 68 61 72 3b 0a 20 20        _uchar;.  
2e70: 20 20 73 68 6f 72 74 20 20 20 20 20 20 20 20 20    short         
2e80: 20 20 20 20 20 20 5f 73 68 6f 72 74 3b 0a 20 20        _short;.  
2e90: 20 20 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74    unsigned short
2ea0: 20 20 20 20 20 20 5f 75 73 68 6f 72 74 3b 0a 20        _ushort;. 
2eb0: 20 20 20 69 6e 74 20 20 20 20 20 20 20 20 20 20     int          
2ec0: 20 20 20 20 20 20 20 5f 69 6e 74 3b 0a 20 20 20         _int;.   
2ed0: 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 20 20   unsigned int   
2ee0: 20 20 20 20 20 5f 75 69 6e 74 3b 0a 20 20 20 20       _uint;.    
2ef0: 6c 6f 6e 67 20 20 20 20 20 20 20 20 20 20 20 20  long            
2f00: 20 20 20 20 5f 6c 6f 6e 67 3b 0a 20 20 20 20 75      _long;.    u
2f10: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20 20 20  nsigned long    
2f20: 20 20 20 5f 75 6c 6f 6e 67 3b 0a 23 69 66 20 21     _ulong;.#if !
2f30: 28 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36  (defined(__mips6
2f40: 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  4__) || defined(
2f50: 5f 5f 61 6c 70 68 61 5f 5f 29 29 20 26 26 20 64  __alpha__)) && d
2f60: 65 66 69 6e 65 64 28 48 41 56 45 5f 4c 4f 4e 47  efined(HAVE_LONG
2f70: 4c 4f 4e 47 29 0a 20 20 20 20 6c 6f 6e 67 20 6c  LONG).    long l
2f80: 6f 6e 67 20 20 20 20 20 20 20 20 20 20 20 5f 6c  ong           _l
2f90: 6f 6e 67 6c 6f 6e 67 3b 0a 20 20 20 20 75 6e 73  onglong;.    uns
2fa0: 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 20  igned long long 
2fb0: 20 5f 75 6c 6f 6e 67 6c 6f 6e 67 3b 0a 23 65 6e   _ulonglong;.#en
2fc0: 64 69 66 0a 20 20 20 20 66 6c 6f 61 74 20 20 20  dif.    float   
2fd0: 20 20 20 20 20 20 20 20 20 20 20 20 5f 66 6c 6f              _flo
2fe0: 61 74 3b 0a 20 20 20 20 64 6f 75 62 6c 65 20 20  at;.    double  
2ff0: 20 20 20 20 20 20 20 20 20 20 20 20 5f 64 6f 75              _dou
3000: 62 6c 65 3b 0a 20 20 20 20 76 6f 69 64 2a 20 20  ble;.    void*  
3010: 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 70 74               _pt
3020: 72 3b 0a 20 20 20 20 5f 5f 76 61 77 6f 72 64 20  r;.    __vaword 
3030: 20 20 20 20 20 20 20 20 20 20 20 5f 77 6f 72 64             _word
3040: 73 5b 32 5d 3b 0a 20 20 7d 20 20 20 20 20 20 20  s[2];.  }       
3050: 20 20 20 20 20 20 20 74 6d 70 3b 0a 23 69 66 20         tmp;.#if 
3060: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
3070: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
3080: 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  68k__) || (defin
3090: 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26  ed(__sparc__) &&
30a0: 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72   !defined(__spar
30b0: 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e  c64__)) || defin
30c0: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20  ed(__hppa__) || 
30d0: 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f  defined(__m88k__
30e0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69  ) || defined(__i
30f0: 61 36 34 5f 5f 29 0a 20 20 76 6f 69 64 2a 20 20  a64__).  void*  
3100: 20 20 20 20 20 20 20 20 73 74 72 75 63 74 72 61          structra
3110: 64 64 72 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20  ddr;.#endif.#if 
3120: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f  defined(__mips__
3130: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
3140: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
3150: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
3160: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c   || defined(__al
3170: 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  pha__) || define
3180: 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 20 20 6c 6f  d(__hppa__).  lo
3190: 6e 67 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d  ng           mem
31a0: 61 72 67 70 74 72 3b 0a 23 65 6e 64 69 66 0a 23  argptr;.#endif.#
31b0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70  if defined(__hpp
31c0: 61 5f 5f 29 0a 20 20 6c 6f 6e 67 20 20 20 20 20  a__).  long     
31d0: 20 20 20 20 20 20 66 61 72 67 5f 6f 66 66 73 65        farg_offse
31e0: 74 3b 0a 20 20 6c 6f 6e 67 20 20 20 20 20 20 20  t;.  long       
31f0: 20 20 20 20 64 61 72 67 5f 6f 66 66 73 65 74 3b      darg_offset;
3200: 0a 20 20 66 6c 6f 61 74 20 20 20 20 20 20 20 20  .  float        
3210: 20 20 66 61 72 67 5b 34 5d 3b 0a 20 20 64 6f 75    farg[4];.  dou
3220: 62 6c 65 20 20 20 20 20 20 20 20 20 64 61 72 67  ble         darg
3230: 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20  [2];.#endif.#if 
3240: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f  defined(__mips__
3250: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
3260: 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20 69 6e 74  mipsn32__).  int
3270: 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 75 6d              anum
3280: 3b 0a 20 20 66 6c 6f 61 74 20 20 20 20 20 20 20  ;.  float       
3290: 20 20 20 66 61 72 67 5b 32 5d 3b 0a 20 20 64 6f     farg[2];.  do
32a0: 75 62 6c 65 20 20 20 20 20 20 20 20 20 64 61 72  uble         dar
32b0: 67 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66  g[2];.#endif.#if
32c0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
32d0: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  32__) || defined
32e0: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20 20 69  (__mips64__).  i
32f0: 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 61 6e  nt            an
3300: 75 6d 3b 0a 20 20 66 6c 6f 61 74 20 20 20 20 20  um;.  float     
3310: 20 20 20 20 20 66 61 72 67 5b 38 5d 3b 0a 20 20       farg[8];.  
3320: 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 64  double         d
3330: 61 72 67 5b 38 5d 3b 0a 23 65 6e 64 69 66 0a 23  arg[8];.#endif.#
3340: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  if defined(__spa
3350: 72 63 36 34 5f 5f 29 0a 20 20 69 6e 74 20 20 20  rc64__).  int   
3360: 20 20 20 20 20 20 20 20 20 61 6e 75 6d 3b 0a 20           anum;. 
3370: 20 66 6c 6f 61 74 20 20 20 20 20 20 20 20 20 20   float          
3380: 66 61 72 67 5b 31 36 5d 3b 0a 20 20 64 6f 75 62  farg[16];.  doub
3390: 6c 65 20 20 20 20 20 20 20 20 20 64 61 72 67 5b  le         darg[
33a0: 31 36 5d 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20  16];.#endif.#if 
33b0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
33c0: 5f 5f 29 0a 20 20 64 6f 75 62 6c 65 2a 20 20 20  __).  double*   
33d0: 20 20 20 20 20 6d 65 6d 66 61 72 67 70 74 72 3b       memfargptr;
33e0: 0a 20 20 64 6f 75 62 6c 65 20 20 20 20 20 20 20  .  double       
33f0: 20 20 66 61 72 67 5b 31 33 5d 3b 0a 23 69 66 20    farg[13];.#if 
3400: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  !(defined(_AIX) 
3410: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
3420: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
3430: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a 20 20  (__APPLE__))).  
3440: 5f 5f 76 61 77 6f 72 64 20 20 20 20 20 20 20 72  __vaword       r
3450: 65 67 61 72 67 5b 38 5d 3b 0a 20 20 75 6e 73 69  egarg[8];.  unsi
3460: 67 6e 65 64 20 6c 6f 6e 67 20 20 73 61 70 74 72  gned long  saptr
3470: 3b 0a 20 20 69 6e 74 20 20 20 20 20 20 20 20 20  ;.  int         
3480: 20 20 20 6f 6e 73 74 61 63 6b 3b 0a 23 65 6e 64     onstack;.#end
3490: 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  if.#endif.#if de
34a0: 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a  fined(__s390__).
34b0: 20 20 66 6c 6f 61 74 2a 20 20 20 20 20 20 20 20    float*        
34c0: 20 6d 65 6d 66 61 72 67 70 74 72 3b 0a 20 20 64   memfargptr;.  d
34d0: 6f 75 62 6c 65 2a 20 20 20 20 20 20 20 20 6d 65  ouble*        me
34e0: 6d 64 61 72 67 70 74 72 3b 0a 20 20 66 6c 6f 61  mdargptr;.  floa
34f0: 74 20 20 20 20 20 20 20 20 20 20 66 61 72 67 5b  t          farg[
3500: 32 5d 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20  2];.  double    
3510: 20 20 20 20 20 64 61 72 67 5b 32 5d 3b 0a 20 20       darg[2];.  
3520: 5f 5f 76 61 77 6f 72 64 20 20 20 20 20 20 20 72  __vaword       r
3530: 65 67 61 72 67 5b 35 5d 3b 0a 20 20 75 6e 73 69  egarg[5];.  unsi
3540: 67 6e 65 64 20 6c 6f 6e 67 20 20 73 61 70 74 72  gned long  saptr
3550: 3b 0a 20 20 69 6e 74 20 20 20 20 20 20 20 20 20  ;.  int         
3560: 20 20 20 6f 6e 73 74 61 63 6b 3b 0a 23 65 6e 64     onstack;.#end
3570: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
3580: 5f 69 61 36 34 5f 5f 29 0a 20 20 5f 5f 76 61 77  _ia64__).  __vaw
3590: 6f 72 64 2a 20 20 20 20 20 20 73 61 70 74 72 3b  ord*      saptr;
35a0: 0a 20 20 64 6f 75 62 6c 65 2a 20 20 20 20 20 20  .  double*      
35b0: 20 20 6d 65 6d 66 61 72 67 70 74 72 3b 0a 20 20    memfargptr;.  
35c0: 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 66  double         f
35d0: 61 72 67 5b 38 5d 3b 0a 23 65 6e 64 69 66 0a 23  arg[8];.#endif.#
35e0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
35f0: 5f 36 34 5f 5f 29 0a 20 20 64 6f 75 62 6c 65 2a  _64__).  double*
3600: 20 20 20 20 20 20 20 20 6d 65 6d 66 61 72 67 70          memfargp
3610: 74 72 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20  tr;.  double    
3620: 20 20 20 20 20 66 61 72 67 5b 38 5d 3b 0a 20 20       farg[8];.  
3630: 5f 5f 76 61 77 6f 72 64 2a 20 20 20 20 20 20 6d  __vaword*      m
3640: 65 6d 69 61 72 67 70 74 72 3b 0a 20 20 5f 5f 76  emiargptr;.  __v
3650: 61 77 6f 72 64 20 20 20 20 20 20 20 69 61 72 67  aword       iarg
3660: 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a 7d 20 5f 5f  [6];.#endif.} __
3670: 76 61 5f 61 6c 69 73 74 3b 0a 0a 74 79 70 65 64  va_alist;..typed
3680: 65 66 20 5f 5f 76 61 5f 61 6c 69 73 74 2a 20 76  ef __va_alist* v
3690: 61 5f 61 6c 69 73 74 3b 0a 0a 0a 2f 2a 0a 20 2a  a_alist;.../*. *
36a0: 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 74   Definition of t
36b0: 68 65 20 76 61 5f 73 74 61 72 74 5f 78 78 78 20  he va_start_xxx 
36c0: 6d 61 63 72 6f 73 2e 0a 20 2a 2f 0a 23 64 65 66  macros.. */.#def
36d0: 69 6e 65 20 5f 5f 56 41 5f 53 54 41 52 54 5f 46  ine __VA_START_F
36e0: 4c 41 47 53 20 20 5c 0a 20 20 5f 5f 56 41 5f 53  LAGS  \.  __VA_S
36f0: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c 20 5f  TRUCT_RETURN | _
3700: 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  _VA_FLOAT_RETURN
3710: 20 7c 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 41   | __VA_STRUCT_A
3720: 52 47 53 20 7c 20 5f 5f 56 41 5f 46 4c 4f 41 54  RGS | __VA_FLOAT
3730: 5f 41 52 47 53 20 7c 20 5f 5f 56 41 5f 49 4e 54  _ARGS | __VA_INT
3740: 45 47 45 52 53 20 7c 20 5f 5f 56 41 5f 43 4c 45  EGERS | __VA_CLE
3750: 41 4e 55 50 0a 23 64 65 66 69 6e 65 20 5f 5f 76  ANUP.#define __v
3760: 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 52 45 54  a_start(LIST,RET
3770: 54 59 50 45 29 20 20 5c 0a 20 20 28 28 4c 49 53  TYPE)  \.  ((LIS
3780: 54 29 2d 3e 66 6c 61 67 73 20 3d 20 5f 5f 56 41  T)->flags = __VA
3790: 5f 53 54 41 52 54 5f 46 4c 41 47 53 2c 09 09 09  _START_FLAGS,...
37a0: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 72  ..\.   (LIST)->r
37b0: 74 79 70 65 20 3d 20 28 52 45 54 54 59 50 45 29  type = (RETTYPE)
37c0: 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 64 65 66  ......\.  ).#def
37d0: 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 76 6f 69  ine va_start_voi
37e0: 64 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74  d(LIST). __va_st
37f0: 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 76 6f 69  art(LIST,__VAvoi
3800: 64 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  d).#define va_st
3810: 61 72 74 5f 63 68 61 72 28 4c 49 53 54 29 09 20  art_char(LIST). 
3820: 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c  __va_start(LIST,
3830: 5f 5f 56 41 63 68 61 72 29 0a 23 64 65 66 69 6e  __VAchar).#defin
3840: 65 20 76 61 5f 73 74 61 72 74 5f 73 63 68 61 72  e va_start_schar
3850: 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74 61  (LIST). __va_sta
3860: 72 74 28 4c 49 53 54 2c 5f 5f 56 41 73 63 68 61  rt(LIST,__VAscha
3870: 72 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  r).#define va_st
3880: 61 72 74 5f 75 63 68 61 72 28 4c 49 53 54 29 09  art_uchar(LIST).
3890: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
38a0: 2c 5f 5f 56 41 75 63 68 61 72 29 0a 23 64 65 66  ,__VAuchar).#def
38b0: 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 73 68 6f  ine va_start_sho
38c0: 72 74 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73  rt(LIST). __va_s
38d0: 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 73 68  tart(LIST,__VAsh
38e0: 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  ort).#define va_
38f0: 73 74 61 72 74 5f 75 73 68 6f 72 74 28 4c 49 53  start_ushort(LIS
3900: 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c  T). __va_start(L
3910: 49 53 54 2c 5f 5f 56 41 75 73 68 6f 72 74 29 0a  IST,__VAushort).
3920: 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74  #define va_start
3930: 5f 69 6e 74 28 4c 49 53 54 29 09 20 5f 5f 76 61  _int(LIST). __va
3940: 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41  _start(LIST,__VA
3950: 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  int).#define va_
3960: 73 74 61 72 74 5f 75 69 6e 74 28 4c 49 53 54 29  start_uint(LIST)
3970: 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53  . __va_start(LIS
3980: 54 2c 5f 5f 56 41 75 69 6e 74 29 0a 23 64 65 66  T,__VAuint).#def
3990: 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 6c 6f 6e  ine va_start_lon
39a0: 67 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74  g(LIST). __va_st
39b0: 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 6c 6f 6e  art(LIST,__VAlon
39c0: 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  g).#define va_st
39d0: 61 72 74 5f 75 6c 6f 6e 67 28 4c 49 53 54 29 09  art_ulong(LIST).
39e0: 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54   __va_start(LIST
39f0: 2c 5f 5f 56 41 75 6c 6f 6e 67 29 0a 23 64 65 66  ,__VAulong).#def
3a00: 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 6c 6f 6e  ine va_start_lon
3a10: 67 6c 6f 6e 67 28 4c 49 53 54 29 09 20 5f 5f 76  glong(LIST). __v
3a20: 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56  a_start(LIST,__V
3a30: 41 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66 69  Alonglong).#defi
3a40: 6e 65 20 76 61 5f 73 74 61 72 74 5f 75 6c 6f 6e  ne va_start_ulon
3a50: 67 6c 6f 6e 67 28 4c 49 53 54 29 20 5f 5f 76 61  glong(LIST) __va
3a60: 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41  _start(LIST,__VA
3a70: 75 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65 66 69  ulonglong).#defi
3a80: 6e 65 20 76 61 5f 73 74 61 72 74 5f 66 6c 6f 61  ne va_start_floa
3a90: 74 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73 74  t(LIST). __va_st
3aa0: 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 66 6c 6f  art(LIST,__VAflo
3ab0: 61 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73  at).#define va_s
3ac0: 74 61 72 74 5f 64 6f 75 62 6c 65 28 4c 49 53 54  tart_double(LIST
3ad0: 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49  ). __va_start(LI
3ae0: 53 54 2c 5f 5f 56 41 64 6f 75 62 6c 65 29 0a 23  ST,__VAdouble).#
3af0: 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f  define va_start_
3b00: 70 74 72 28 4c 49 53 54 2c 54 59 50 45 29 09 20  ptr(LIST,TYPE). 
3b10: 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c  __va_start(LIST,
3b20: 5f 5f 56 41 76 6f 69 64 70 29 0a 0a 2f 2a 0a 20  __VAvoidp)../*. 
3b30: 2a 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  * va_start_struc
3b40: 74 3a 20 50 72 65 70 61 72 69 6e 67 20 73 74 72  t: Preparing str
3b50: 75 63 74 75 72 65 20 72 65 74 75 72 6e 2e 0a 20  ucture return.. 
3b60: 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74  */.#define va_st
3b70: 61 72 74 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  art_struct(LIST,
3b80: 54 59 50 45 2c 54 59 50 45 5f 53 50 4c 49 54 54  TYPE,TYPE_SPLITT
3b90: 41 42 4c 45 29 20 20 5c 0a 20 20 5f 76 61 5f 73  ABLE)  \.  _va_s
3ba0: 74 61 72 74 5f 73 74 72 75 63 74 28 4c 49 53 54  tart_struct(LIST
3bb0: 2c 73 69 7a 65 6f 66 28 54 59 50 45 29 2c 5f 5f  ,sizeof(TYPE),__
3bc0: 56 41 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29  VA_alignof(TYPE)
3bd0: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
3be0: 29 0a 2f 2a 20 5f 76 61 5f 73 74 61 72 74 5f 73  )./* _va_start_s
3bf0: 74 72 75 63 74 28 29 20 69 73 20 6c 69 6b 65 20  truct() is like 
3c00: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28  va_start_struct(
3c10: 29 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 79  ), except that y
3c20: 6f 75 20 70 61 73 73 0a 20 2a 20 74 68 65 20 74  ou pass. * the t
3c30: 79 70 65 27 73 20 73 69 7a 65 20 61 6e 64 20 61  ype's size and a
3c40: 6c 69 67 6e 6d 65 6e 74 20 69 6e 73 74 65 61 64  lignment instead
3c50: 20 6f 66 20 74 68 65 20 74 79 70 65 20 69 74 73   of the type its
3c60: 65 6c 66 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  elf.. */.#define
3c70: 20 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63   _va_start_struc
3c80: 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  t(LIST,TYPE_SIZE
3c90: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45  ,TYPE_ALIGN,TYPE
3ca0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
3cb0: 20 20 28 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49    (__va_start(LI
3cc0: 53 54 2c 5f 5f 56 41 73 74 72 75 63 74 29 2c 09  ST,__VAstruct),.
3cd0: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
3ce0: 2d 3e 72 73 69 7a 65 20 3d 20 28 54 59 50 45 5f  ->rsize = (TYPE_
3cf0: 53 49 5a 45 29 2c 09 09 09 09 09 09 5c 0a 20 20  SIZE),......\.  
3d00: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
3d10: 26 20 5f 5f 56 41 5f 53 55 4e 50 52 4f 43 43 5f  & __VA_SUNPROCC_
3d20: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 09 09  STRUCT_RETURN...
3d30: 09 5c 0a 20 20 20 20 3f 20 5f 5f 76 61 5f 73 74  .\.    ? __va_st
3d40: 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49 53 54  art_struct2(LIST
3d50: 29 09 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 28  )......\.    : (
3d60: 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20  (LIST)->flags & 
3d70: 28 5f 5f 56 41 5f 50 43 43 5f 53 54 52 55 43 54  (__VA_PCC_STRUCT
3d80: 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 56 41 5f 53  _RETURN | __VA_S
3d90: 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  UNCC_STRUCT_RETU
3da0: 52 4e 29 20 5c 0a 20 20 20 20 20 20 20 3f 20 28  RN) \.       ? (
3db0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 73  (TYPE_SIZE) <= s
3dc0: 69 7a 65 6f 66 28 5f 5f 76 61 5f 73 74 72 75 63  izeof(__va_struc
3dd0: 74 5f 62 75 66 66 65 72 29 20 7c 7c 20 5f 5f 76  t_buffer) || __v
3de0: 61 5f 65 72 72 6f 72 32 28 54 59 50 45 5f 53 49  a_error2(TYPE_SI
3df0: 5a 45 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20  ZE), \.         
3e00: 20 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20 3d   (LIST)->raddr =
3e10: 20 26 5f 5f 76 61 5f 73 74 72 75 63 74 5f 62 75   &__va_struct_bu
3e20: 66 66 65 72 2c 09 09 09 09 5c 0a 20 20 20 20 20  ffer,....\.     
3e30: 20 20 20 20 20 30 09 09 09 09 09 09 09 09 5c 0a       0........\.
3e40: 20 20 20 20 20 20 20 20 20 29 09 09 09 09 09 09           )......
3e50: 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 28 28 28  ..\.       : (((
3e60: 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f  LIST)->flags & _
3e70: 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54  _VA_SMALL_STRUCT
3e80: 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 20  _RETURN)...\.   
3e90: 20 20 20 20 20 20 20 26 26 20 5f 5f 76 61 5f 72         && __va_r
3ea0: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  eg_struct_return
3eb0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
3ec0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
3ed0: 09 5c 0a 20 20 20 20 20 20 20 20 20 20 3f 20 28  .\.          ? (
3ee0: 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20 3d 20  (LIST)->raddr = 
3ef0: 26 28 4c 49 53 54 29 2d 3e 74 6d 70 2c 09 09 09  &(LIST)->tmp,...
3f00: 09 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  .\.             
3f10: 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  __va_start_struc
3f20: 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t1(LIST,TYPE_SIZ
3f30: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50  E,TYPE_ALIGN,TYP
3f40: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 5c 0a  E_SPLITTABLE) \.
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 29 09 09 09              )...
3f60: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20  .....\.         
3f70: 20 3a 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74   : __va_start_st
3f80: 72 75 63 74 32 28 4c 49 53 54 29 09 09 09 09 09  ruct2(LIST).....
3f90: 5c 0a 20 20 29 29 20 20 29 20 20 29 0a 2f 2a 20  \.  ))  )  )./* 
3fa0: 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  Determines wheth
3fb0: 65 72 20 61 20 73 74 72 75 63 74 75 72 65 20 69  er a structure i
3fc0: 73 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65  s returned in re
3fd0: 67 69 73 74 65 72 73 2c 0a 20 2a 20 64 65 70 65  gisters,. * depe
3fe0: 6e 64 69 6e 67 20 6f 6e 20 69 74 73 20 73 69 7a  nding on its siz
3ff0: 65 20 61 6e 64 20 69 74 73 20 77 6f 72 64 2d 73  e and its word-s
4000: 70 6c 69 74 74 61 62 6c 65 20 66 6c 61 67 2e 0a  plittable flag..
4010: 20 2a 2f 0a 23 69 66 20 28 64 65 66 69 6e 65 64   */.#if (defined
4020: 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65  (__i386__) && de
4030: 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 29 0a 23  fined(_WIN32)).#
4040: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f  define __va_reg_
4050: 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49  struct_return(LI
4060: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4070: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
4080: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
4090: 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 1 || (TYPE_SI
40a0: 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50  ZE) == 2 || (TYP
40b0: 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09 5c 0a  E_SIZE) == 4..\.
40c0: 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a     || ((TYPE_SIZ
40d0: 45 29 20 3d 3d 20 38 09 09 09 09 09 09 09 5c 0a  E) == 8.......\.
40e0: 20 20 20 20 20 20 20 26 26 20 28 28 28 4c 49 53         && (((LIS
40f0: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
4100: 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52 45 54  _MSVC_STRUCT_RET
4110: 55 52 4e 29 09 09 09 5c 0a 20 20 20 20 20 20 20  URN)...\.       
4120: 20 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 50      || ((TYPE_SP
4130: 4c 49 54 54 41 42 4c 45 29 09 09 09 09 09 5c 0a  LITTABLE).....\.
4140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26                 &
4150: 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73  & ((LIST)->flags
4160: 20 26 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55   & __VA_GCC_STRU
4170: 43 54 5f 52 45 54 55 52 4e 29 09 09 5c 0a 20 20  CT_RETURN)..\.  
4180: 29 20 20 20 29 20 20 20 29 20 20 20 29 0a 2f 2a  )   )   )   )./*
4190: 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45   Turn on __VA_RE
41a0: 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45  GISTER_STRUCT_RE
41b0: 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d 41  TURN if __VA_SMA
41c0: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
41d0: 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20   was set. * and 
41e0: 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20  the struct will 
41f0: 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75  actually be retu
4200: 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  rned in register
4210: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
4220: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
4230: 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  1(LIST,TYPE_SIZE
4240: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45  ,TYPE_ALIGN,TYPE
4250: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4260: 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73    ((LIST)->flags
4270: 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45   |= __VA_REGISTE
4280: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c  R_STRUCT_RETURN,
4290: 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 28   0).#endif.#if (
42a0: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
42b0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 57  ) && !defined(_W
42c0: 49 4e 33 32 29 29 20 7c 7c 20 64 65 66 69 6e 65  IN32)) || define
42d0: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64  d(__m68k__) || d
42e0: 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20  efined(__arm__) 
42f0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36  || defined(__rs6
4300: 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  000__) || define
4310: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c  d(__convex__) ||
4320: 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f   defined(__s390_
4330: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  _).#define __va_
4340: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
4350: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
4360: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
4370: 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49  )  \.  ((TYPE_SI
4380: 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50  ZE) == 1 || (TYP
4390: 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20  E_SIZE) == 2 || 
43a0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34  (TYPE_SIZE) == 4
43b0: 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45  ..\.   || ((TYPE
43c0: 5f 53 49 5a 45 29 20 3d 3d 20 38 20 26 26 20 28  _SIZE) == 8 && (
43d0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
43e0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26 26 20  ....\.       && 
43f0: 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26  ((LIST)->flags &
4400: 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55 43 54   __VA_GCC_STRUCT
4410: 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 29  _RETURN)...\.  )
4420: 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20     )./* Turn on 
4430: 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 53 54  __VA_REGISTER_ST
4440: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20 5f  RUCT_RETURN if _
4450: 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54  _VA_SMALL_STRUCT
4460: 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74 0a  _RETURN was set.
4470: 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75 63   * and the struc
4480: 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 20  t will actually 
4490: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72  be returned in r
44a0: 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23 64  egisters.. */.#d
44b0: 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74  efine __va_start
44c0: 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c 54 59  _struct1(LIST,TY
44d0: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
44e0: 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  GN,TYPE_SPLITTAB
44f0: 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  LE)  \.  ((LIST)
4500: 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f  ->flags |= __VA_
4510: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
4520: 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e 64 69  RETURN, 0).#endi
4530: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
4540: 61 6c 70 68 61 5f 5f 29 0a 23 64 65 66 69 6e 65  alpha__).#define
4550: 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75 63 74   __va_reg_struct
4560: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59 50  _return(LIST,TYP
4570: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c 49  E_SIZE,TYPE_SPLI
4580: 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 54  TTABLE)  \.  ((T
4590: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c  YPE_SIZE) == 1 |
45a0: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
45b0: 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45   2 || (TYPE_SIZE
45c0: 29 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50 45 5f  ) == 4 || (TYPE_
45d0: 53 49 5a 45 29 20 3d 3d 20 38 09 5c 0a 20 20 20  SIZE) == 8.\.   
45e0: 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  || ((TYPE_SIZE) 
45f0: 3d 3d 20 31 36 20 26 26 20 28 54 59 50 45 5f 53  == 16 && (TYPE_S
4600: 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09 5c 0a  PLITTABLE)....\.
4610: 20 20 20 20 20 20 20 26 26 20 28 28 4c 49 53 54         && ((LIST
4620: 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f  )->flags & __VA_
4630: 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  GCC_STRUCT_RETUR
4640: 4e 29 09 09 09 5c 0a 20 20 29 20 20 20 29 0a 2f  N)...\.  )   )./
4650: 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52  * Turn on __VA_R
4660: 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52  EGISTER_STRUCT_R
4670: 45 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d  ETURN if __VA_SM
4680: 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52  ALL_STRUCT_RETUR
4690: 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64  N was set. * and
46a0: 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c   the struct will
46b0: 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74   actually be ret
46c0: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65  urned in registe
46d0: 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rs.. */.#define 
46e0: 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  __va_start_struc
46f0: 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  t1(LIST,TYPE_SIZ
4700: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50  E,TYPE_ALIGN,TYP
4710: 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c  E_SPLITTABLE)  \
4720: 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  .  ((LIST)->flag
4730: 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54  s |= __VA_REGIST
4740: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  ER_STRUCT_RETURN
4750: 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  , 0).#endif.#if 
4760: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
4770: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72  ).#define __va_r
4780: 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e  eg_struct_return
4790: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
47a0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
47b0: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66    \.  ((LIST)->f
47c0: 6c 61 67 73 20 26 20 5f 5f 56 41 5f 4f 4c 44 47  lags & __VA_OLDG
47d0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
47e0: 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54 59 50  ....\.   ? ((TYP
47f0: 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20  E_SIZE) == 1 || 
4800: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32  (TYPE_SIZE) == 2
4810: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
4820: 3d 3d 20 34 29 09 09 5c 0a 20 20 20 3a 20 28 28  == 4)..\.   : ((
4830: 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20 38 29  TYPE_SIZE) <= 8)
4840: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 2f 2a 20  .......\.  )./* 
4850: 54 65 73 74 20 62 6f 74 68 20 5f 5f 56 41 5f 4f  Test both __VA_O
4860: 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  LDGCC_STRUCT_RET
4870: 55 52 4e 20 61 6e 64 20 5f 5f 56 41 5f 53 4d 41  URN and __VA_SMA
4880: 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  LL_STRUCT_RETURN
4890: 20 61 74 20 72 75 6e 20 74 69 6d 65 2e 20 2a 2f   at run time. */
48a0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74  .#define __va_st
48b0: 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54  art_struct1(LIST
48c0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
48d0: 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54  ALIGN,TYPE_SPLIT
48e0: 54 41 42 4c 45 29 20 20 5c 0a 20 20 30 0a 23 65  TABLE)  \.  0.#e
48f0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
4900: 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64  (__mips__) && !d
4910: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
4920: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
4930: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
4940: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
4950: 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  __)) || defined(
4960: 5f 5f 6d 38 38 6b 5f 5f 29 0a 23 64 65 66 69 6e  __m88k__).#defin
4970: 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75 63  e __va_reg_struc
4980: 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54 59  t_return(LIST,TY
4990: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50 4c  PE_SIZE,TYPE_SPL
49a0: 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28  ITTABLE)  \.  ((
49b0: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20  TYPE_SIZE) == 1 
49c0: 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  || (TYPE_SIZE) =
49d0: 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 2 || (TYPE_SIZ
49e0: 45 29 20 3d 3d 20 34 29 0a 2f 2a 20 54 65 73 74  E) == 4)./* Test
49f0: 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55   __VA_SMALL_STRU
4a00: 43 54 5f 52 45 54 55 52 4e 20 69 6e 73 74 65 61  CT_RETURN instea
4a10: 64 20 6f 66 20 5f 5f 56 41 5f 52 45 47 49 53 54  d of __VA_REGIST
4a20: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  ER_STRUCT_RETURN
4a30: 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  . */.#if defined
4a40: 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64  (__mips__) && !d
4a50: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
4a60: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61  __).#define __va
4a70: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
4a80: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4a90: 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50  PE_ALIGN,TYPE_SP
4aa0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
4ab0: 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 09  (LIST)->anum++,.
4ac0: 09 09 09 09 09 09 5c 0a 20 20 20 30 09 09 09 09  ......\.   0....
4ad0: 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6c 73 65  .....\.  ).#else
4ae0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74  .#define __va_st
4af0: 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54  art_struct1(LIST
4b00: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
4b10: 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54  ALIGN,TYPE_SPLIT
4b20: 54 41 42 4c 45 29 20 20 5c 0a 20 20 30 0a 23 65  TABLE)  \.  0.#e
4b30: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20  ndif.#endif.#if 
4b40: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
4b50: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
4b60: 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 64 65 66  __mips64__).#def
4b70: 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72  ine __va_reg_str
4b80: 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c  uct_return(LIST,
4b90: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
4ba0: 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20  PLITTABLE)  \.  
4bb0: 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26  ((LIST)->flags &
4bc0: 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55 43 54   __VA_GCC_STRUCT
4bd0: 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20 20  _RETURN....\.   
4be0: 3f 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d  ? ((TYPE_SIZE) =
4bf0: 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  = 1 || (TYPE_SIZ
4c00: 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45  E) == 2 || (TYPE
4c10: 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c 7c 20 28  _SIZE) == 4 || (
4c20: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 29  TYPE_SIZE) == 8)
4c30: 20 5c 0a 20 20 20 3a 20 28 28 54 59 50 45 5f 53   \.   : ((TYPE_S
4c40: 49 5a 45 29 20 3c 3d 20 31 36 29 09 09 09 09 09  IZE) <= 16).....
4c50: 09 5c 0a 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f  .\.  )./* Turn o
4c60: 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f  n __VA_REGISTER_
4c70: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66  STRUCT_RETURN if
4c80: 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55   __VA_SMALL_STRU
4c90: 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65  CT_RETURN was se
4ca0: 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72  t. * and the str
4cb0: 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c  uct will actuall
4cc0: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e  y be returned in
4cd0: 20 72 65 67 69 73 74 65 72 73 2e 20 41 6c 73 6f   registers. Also
4ce0: 20 74 75 72 6e 20 6f 6e 0a 20 2a 20 5f 5f 56 41   turn on. * __VA
4cf0: 5f 52 45 47 49 53 54 45 52 5f 46 4c 4f 41 54 53  _REGISTER_FLOATS
4d00: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 6f 72 20  TRUCT_RETURN or 
4d10: 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 44 4f  __VA_REGISTER_DO
4d20: 55 42 4c 45 53 54 52 55 43 54 5f 52 45 54 55 52  UBLESTRUCT_RETUR
4d30: 4e 20 69 66 0a 20 2a 20 74 68 65 20 73 74 72 75  N if. * the stru
4d40: 63 74 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72  ct will be retur
4d50: 6e 65 64 20 69 6e 20 66 6c 6f 61 74 69 6e 67 2d  ned in floating-
4d60: 70 6f 69 6e 74 20 72 65 67 69 73 74 65 72 73 2e  point registers.
4d70: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
4d80: 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28  a_start_struct1(
4d90: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
4da0: 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53  YPE_ALIGN,TYPE_S
4db0: 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20  PLITTABLE)  \.  
4dc0: 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 7c  ((LIST)->flags |
4dd0: 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f  = __VA_REGISTER_
4de0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 09 09  STRUCT_RETURN,..
4df0: 09 09 5c 0a 20 20 20 28 54 59 50 45 5f 41 4c 49  ..\.   (TYPE_ALI
4e00: 47 4e 29 20 3d 3d 20 73 69 7a 65 6f 66 28 66 6c  GN) == sizeof(fl
4e10: 6f 61 74 29 20 26 26 20 28 54 59 50 45 5f 53 50  oat) && (TYPE_SP
4e20: 4c 49 54 54 41 42 4c 45 29 09 09 09 09 5c 0a 20  LITTABLE)....\. 
4e30: 20 20 20 26 26 20 28 28 54 59 50 45 5f 53 49 5a     && ((TYPE_SIZ
4e40: 45 29 20 3d 3d 20 73 69 7a 65 6f 66 28 66 6c 6f  E) == sizeof(flo
4e50: 61 74 29 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a  at) || (TYPE_SIZ
4e60: 45 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66 28 66  E) == 2*sizeof(f
4e70: 6c 6f 61 74 29 29 09 09 5c 0a 20 20 20 20 26 26  loat))..\.    &&
4e80: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
4e90: 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  |= __VA_REGISTER
4ea0: 5f 46 4c 4f 41 54 53 54 52 55 43 54 5f 52 45 54  _FLOATSTRUCT_RET
4eb0: 55 52 4e 29 2c 09 09 09 5c 0a 20 20 20 28 54 59  URN),...\.   (TY
4ec0: 50 45 5f 41 4c 49 47 4e 29 20 3d 3d 20 73 69 7a  PE_ALIGN) == siz
4ed0: 65 6f 66 28 64 6f 75 62 6c 65 29 20 26 26 20 28  eof(double) && (
4ee0: 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29  TYPE_SPLITTABLE)
4ef0: 09 09 09 09 5c 0a 20 20 20 20 26 26 20 28 28 54  ....\.    && ((T
4f00: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 73 69 7a  YPE_SIZE) == siz
4f10: 65 6f 66 28 64 6f 75 62 6c 65 29 20 7c 7c 20 28  eof(double) || (
4f20: 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 2a  TYPE_SIZE) == 2*
4f30: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09  sizeof(double)).
4f40: 5c 0a 20 20 20 20 26 26 20 28 28 4c 49 53 54 29  \.    && ((LIST)
4f50: 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f  ->flags |= __VA_
4f60: 52 45 47 49 53 54 45 52 5f 44 4f 55 42 4c 45 53  REGISTER_DOUBLES
4f70: 54 52 55 43 54 5f 52 45 54 55 52 4e 29 2c 09 09  TRUCT_RETURN),..
4f80: 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64 69 66 0a  .\.   0).#endif.
4f90: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 70  #if defined(__sp
4fa0: 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  arc64__) || defi
4fb0: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 23 64  ned(__ia64__).#d
4fc0: 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73  efine __va_reg_s
4fd0: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
4fe0: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4ff0: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
5000: 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c    ((TYPE_SIZE) <
5010: 3d 20 33 32 29 0a 2f 2a 20 54 75 72 6e 20 6f 6e  = 32)./* Turn on
5020: 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 53   __VA_REGISTER_S
5030: 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66 20  TRUCT_RETURN if 
5040: 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55 43  __VA_SMALL_STRUC
5050: 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65 74  T_RETURN was set
5060: 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72 75  . * and the stru
5070: 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79  ct will actually
5080: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20   be returned in 
5090: 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a 23  registers.. */.#
50a0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61 72  define __va_star
50b0: 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c 54  t_struct1(LIST,T
50c0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
50d0: 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54 41  IGN,TYPE_SPLITTA
50e0: 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  BLE)  \.  ((LIST
50f0: 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56 41  )->flags |= __VA
5100: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
5110: 5f 52 45 54 55 52 4e 2c 09 09 09 09 5c 0a 20 20  _RETURN,....\.  
5120: 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64   0).#endif.#if d
5130: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
5140: 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  _).#define __va_
5150: 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72  reg_struct_retur
5160: 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  n(LIST,TYPE_SIZE
5170: 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45  ,TYPE_SPLITTABLE
5180: 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49  )  \.  ((TYPE_SI
5190: 5a 45 29 20 3c 3d 20 31 36 29 0a 2f 2a 20 54 75  ZE) <= 16)./* Tu
51a0: 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45 47 49 53  rn on __VA_REGIS
51b0: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
51c0: 4e 20 69 66 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f  N if __VA_SMALL_
51d0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61  STRUCT_RETURN wa
51e0: 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65  s set. * and the
51f0: 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74   struct will act
5200: 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  ually be returne
5210: 64 20 69 6e 20 72 65 67 69 73 74 65 72 73 2e 0a  d in registers..
5220: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
5230: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c  _start_struct1(L
5240: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
5250: 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50  PE_ALIGN,TYPE_SP
5260: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
5270: 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d  (LIST)->flags |=
5280: 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f 53   __VA_REGISTER_S
5290: 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 09 09 09  TRUCT_RETURN,...
52a0: 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64 69 66 0a  .\.   0).#endif.
52b0: 2f 2a 0a 20 2a 20 50 72 65 70 61 72 69 6e 67 20  /*. * Preparing 
52c0: 73 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e  structure return
52d0: 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 2a 2f 0a   in memory.. */.
52e0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
52f0: 38 36 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20  86__)./* Return 
5300: 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65  structure pointe
5310: 72 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61  r is passed in a
5320: 20 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65   special registe
5330: 72 20 6f 72 20 61 73 20 66 69 72 73 74 20 61 72  r or as first ar
5340: 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  g. */.#define __
5350: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32  va_start_struct2
5360: 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49  (LIST)  \.  ((LI
5370: 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56  ST)->flags & __V
5380: 41 5f 4e 45 58 54 47 43 43 5f 53 54 52 55 43 54  A_NEXTGCC_STRUCT
5390: 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20 20 20  _RETURN....\.   
53a0: 3f 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72  ? ((LIST)->raddr
53b0: 20 3d 20 28 4c 49 53 54 29 2d 3e 73 74 72 75 63   = (LIST)->struc
53c0: 74 72 61 64 64 72 2c 20 30 29 09 20 2f 2a 20 73  traddr, 0). /* s
53d0: 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 20  pecial register 
53e0: 2a 2f 09 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54  */.\.   : ((LIST
53f0: 29 2d 3e 72 61 64 64 72 20 3d 20 2a 28 76 6f 69  )->raddr = *(voi
5400: 64 2a 20 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70  d* *)((LIST)->ap
5410: 74 72 29 2c 09 09 2f 2a 20 66 69 72 73 74 20 61  tr),../* first a
5420: 72 67 20 2a 2f 09 5c 0a 20 20 20 20 20 20 28 4c  rg */.\.      (L
5430: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
5440: 7a 65 6f 66 28 76 6f 69 64 2a 29 2c 09 09 09 09  zeof(void*),....
5450: 09 5c 0a 20 20 20 20 20 20 30 09 09 09 09 09 09  .\.      0......
5460: 09 09 09 5c 0a 20 20 29 20 20 29 0a 23 65 6e 64  ...\.  )  ).#end
5470: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
5480: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
5490: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
54a0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
54b0: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  0__) || defined(
54c0: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 20 7c 7c 20  __convex__)  || 
54d0: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
54e0: 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75  )./* Return stru
54f0: 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73  cture pointer is
5500: 20 70 61 73 73 65 64 20 61 73 20 66 69 72 73 74   passed as first
5510: 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65   arg. */.#define
5520: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
5530: 63 74 32 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ct2(LIST)  \.  (
5540: 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20 3d 20  (LIST)->raddr = 
5550: 2a 28 76 6f 69 64 2a 20 2a 29 28 28 4c 49 53 54  *(void* *)((LIST
5560: 29 2d 3e 61 70 74 72 29 2c 09 09 09 09 5c 0a 20  )->aptr),....\. 
5570: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
5580: 3d 20 73 69 7a 65 6f 66 28 76 6f 69 64 2a 29 2c  = sizeof(void*),
5590: 09 09 09 09 09 5c 0a 20 20 20 30 09 09 09 09 09  .....\.   0.....
55a0: 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66  ....\.  ).#endif
55b0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
55c0: 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  ips__) || define
55d0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
55e0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
55f0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
5600: 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a  (__sparc64__)./*
5610: 20 52 65 74 75 72 6e 20 73 74 72 75 63 74 75 72   Return structur
5620: 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70 61 73  e pointer is pas
5630: 73 65 64 20 61 73 20 66 69 72 73 74 20 61 72 67  sed as first arg
5640: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
5650: 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 28  a_start_struct2(
5660: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIST)  \.  ((LIS
5670: 54 29 2d 3e 72 61 64 64 72 20 3d 20 2a 28 76 6f  T)->raddr = *(vo
5680: 69 64 2a 20 2a 29 28 28 4c 49 53 54 29 2d 3e 61  id* *)((LIST)->a
5690: 70 74 72 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c  ptr),....\.   (L
56a0: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
56b0: 7a 65 6f 66 28 76 6f 69 64 2a 29 2c 09 09 09 09  zeof(void*),....
56c0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 6e  .\.   (LIST)->an
56d0: 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20  um++,.......\.  
56e0: 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20 20 29   0.........\.  )
56f0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
5700: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a  ned(__x86_64__).
5710: 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 63 74  /* Return struct
5720: 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70  ure pointer is p
5730: 61 73 73 65 64 20 61 73 20 66 69 72 73 74 20 61  assed as first a
5740: 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  rg. */.#define _
5750: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
5760: 32 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c  2(LIST)  \.  ((L
5770: 49 53 54 29 2d 3e 72 61 64 64 72 20 3d 20 28 76  IST)->raddr = (v
5780: 6f 69 64 20 2a 29 28 2a 28 4c 49 53 54 29 2d 3e  oid *)(*(LIST)->
5790: 6d 65 6d 69 61 72 67 70 74 72 2b 2b 29 2c 09 09  memiargptr++),..
57a0: 09 5c 0a 20 20 20 30 09 09 09 09 09 09 09 09 09  .\.   0.........
57b0: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
57c0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
57d0: 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f  _) || (defined(_
57e0: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65  _sparc__) && !de
57f0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
5800: 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  _)) || defined(_
5810: 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69  _hppa__) || defi
5820: 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c  ned(__m88k__) ||
5830: 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f   defined(__ia64_
5840: 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72  _)./* Return str
5850: 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69  ucture pointer i
5860: 73 20 70 61 73 73 65 64 20 69 6e 20 61 20 73 70  s passed in a sp
5870: 65 63 69 61 6c 20 72 65 67 69 73 74 65 72 2e 20  ecial register. 
5880: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
5890: 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49  start_struct2(LI
58a0: 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  ST)  \.  ((LIST)
58b0: 2d 3e 72 61 64 64 72 20 3d 20 28 4c 49 53 54 29  ->raddr = (LIST)
58c0: 2d 3e 73 74 72 75 63 74 72 61 64 64 72 2c 20 30  ->structraddr, 0
58d0: 29 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a  ).#endif.../*. *
58e0: 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 74   Definition of t
58f0: 68 65 20 76 61 5f 61 72 67 5f 78 78 78 20 6d 61  he va_arg_xxx ma
5900: 63 72 6f 73 2e 0a 20 2a 2f 0a 0a 2f 2a 20 50 61  cros.. */../* Pa
5910: 64 64 69 6e 67 20 6f 66 20 6e 6f 6e 2d 73 74 72  dding of non-str
5920: 75 63 74 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a  uct arguments. *
5930: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  /.#define __va_a
5940: 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45  rgsize(TYPE_SIZE
5950: 29 20 20 5c 0a 20 20 28 28 28 54 59 50 45 5f 53  )  \.  (((TYPE_S
5960: 49 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f  IZE) + sizeof(__
5970: 76 61 77 6f 72 64 29 2d 31 29 20 26 20 2d 28 6c  vaword)-1) & -(l
5980: 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 76 61 77  ong)sizeof(__vaw
5990: 6f 72 64 29 29 0a 23 69 66 20 64 65 66 69 6e 65  ord)).#if define
59a0: 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64  d(__i386__) || d
59b0: 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29  efined(__m68k__)
59c0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
59d0: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
59e0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
59f0: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  | (defined(__spa
5a00: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
5a10: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 20  d(__sparc64__)) 
5a20: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70  || defined(__alp
5a30: 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ha__) || defined
5a40: 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28 64 65  (__arm__) || (de
5a50: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
5a60: 29 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41  ) && (defined(_A
5a70: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
5a80: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
5a90: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
5aa0: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
5ab0: 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  m88k__) || defin
5ac0: 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c  ed(__convex__) |
5ad0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36 34  | defined(__ia64
5ae0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5af0: 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 61 72  _x86_64__)./* ar
5b00: 67 73 20 67 72 6f 77 20 75 70 20 2a 2f 0a 2f 2a  gs grow up */./*
5b10: 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65   small structure
5b20: 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61  s < 1 word are a
5b30: 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64 69 6e  djusted dependin
5b40: 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 2a 2f  g on compiler */
5b50: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
5b60: 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c  g_leftadjusted(L
5b70: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
5b80: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28  PE_ALIGN)  \.  (
5b90: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
5ba0: 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50  __va_argsize(TYP
5bb0: 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20 20  E_SIZE),....\.  
5bc0: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20   (LIST)->aptr - 
5bd0: 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50  __va_argsize(TYP
5be0: 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 29  E_SIZE)....\.  )
5bf0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
5c00: 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28  g_rightadjusted(
5c10: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
5c20: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
5c30: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d  ((LIST)->aptr +=
5c40: 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59   __va_argsize(TY
5c50: 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20  PE_SIZE),....\. 
5c60: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d    (LIST)->aptr -
5c70: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 20   ((TYPE_SIZE) < 
5c80: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
5c90: 09 09 09 5c 0a 09 09 20 20 20 3f 20 28 54 59 50  ...\...   ? (TYP
5ca0: 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a 09 09  E_SIZE).....\...
5cb0: 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 73 69 7a     : __va_argsiz
5cc0: 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09  e(TYPE_SIZE)....
5cd0: 5c 0a 09 09 20 20 29 09 09 09 09 09 09 09 5c 0a  \...  ).......\.
5ce0: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64    ).#endif.#if d
5cf0: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
5d00: 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28  _) && !(defined(
5d10: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
5d20: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
5d30: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
5d40: 29 29 29 0a 2f 2a 20 61 72 67 73 20 67 72 6f 77  )))./* args grow
5d50: 20 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61 6c 6c 20   up */./* small 
5d60: 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20 77  structures < 1 w
5d70: 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64  ord are adjusted
5d80: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f   depending on co
5d90: 6d 70 69 6c 65 72 20 2a 2f 0a 2f 2a 20 41 6c 73  mpiler */./* Als
5da0: 6f 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 73  o make sure we s
5db0: 77 69 74 63 68 20 74 6f 20 74 68 65 20 73 74 61  witch to the sta
5dc0: 63 6b 20 70 6f 69 6e 74 65 72 20 61 66 74 65 72  ck pointer after
5dd0: 20 38 20 61 72 67 73 20 2a 2f 0a 23 64 65 66 69   8 args */.#defi
5de0: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74  ne __va_arg_left
5df0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
5e00: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
5e10: 47 4e 29 20 20 5c 0a 20 20 28 28 28 28 4c 49 53  GN)  \.  ((((LIS
5e20: 54 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30  T)->onstack == 0
5e30: 20 26 26 20 28 4c 49 53 54 29 2d 3e 61 70 74 72   && (LIST)->aptr
5e40: 20 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54   >= (long)&(LIST
5e50: 29 2d 3e 72 65 67 61 72 67 5b 38 5d 29 09 5c 0a  )->regarg[8]).\.
5e60: 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f      ? ((LIST)->o
5e70: 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29  nstack=1, (LIST)
5e80: 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53 54 29 2d  ->aptr = (LIST)-
5e90: 3e 73 61 70 74 72 29 20 3a 20 30 29 2c 09 09 5c  >saptr) : 0),..\
5ea0: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
5eb0: 20 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65   += __va_argsize
5ec0: 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09  (TYPE_SIZE),....
5ed0: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74  \.   (LIST)->apt
5ee0: 72 20 2d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65  r - __va_argsize
5ef0: 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c  (TYPE_SIZE)....\
5f00: 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76  .  ).#define __v
5f10: 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73  a_arg_rightadjus
5f20: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
5f30: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20  ZE,TYPE_ALIGN)  
5f40: 5c 0a 20 20 28 28 28 28 4c 49 53 54 29 2d 3e 6f  \.  ((((LIST)->o
5f50: 6e 73 74 61 63 6b 20 3d 3d 20 30 20 26 26 20 28  nstack == 0 && (
5f60: 4c 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28  LIST)->aptr >= (
5f70: 6c 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e 72 65  long)&(LIST)->re
5f80: 67 61 72 67 5b 38 5d 29 09 5c 0a 20 20 20 20 3f  garg[8]).\.    ?
5f90: 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63   ((LIST)->onstac
5fa0: 6b 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 61 70 74  k=1, (LIST)->apt
5fb0: 72 20 3d 20 28 4c 49 53 54 29 2d 3e 73 61 70 74  r = (LIST)->sapt
5fc0: 72 29 20 3a 20 30 29 2c 09 09 5c 0a 20 20 20 28  r) : 0),..\.   (
5fd0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f  LIST)->aptr += _
5fe0: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
5ff0: 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20  _SIZE),....\.   
6000: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 28  (LIST)->aptr - (
6010: 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 20 73 69  (TYPE_SIZE) < si
6020: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 09 09  zeof(__vaword)..
6030: 09 5c 0a 09 09 20 20 20 3f 20 28 54 59 50 45 5f  .\...   ? (TYPE_
6040: 53 49 5a 45 29 09 09 09 09 09 5c 0a 09 09 20 20  SIZE).....\...  
6050: 20 3a 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28   : __va_argsize(
6060: 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a  TYPE_SIZE)....\.
6070: 09 09 20 20 29 09 09 09 09 09 09 09 5c 0a 20 20  ..  ).......\.  
6080: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
6090: 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f  ined(__s390__)./
60a0: 2a 20 61 72 67 73 20 67 72 6f 77 20 75 70 20 2a  * args grow up *
60b0: 2f 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63  /./* small struc
60c0: 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61  tures < 1 word a
60d0: 72 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65  re adjusted depe
60e0: 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65  nding on compile
60f0: 72 20 2a 2f 0a 2f 2a 20 41 6c 73 6f 20 6d 61 6b  r */./* Also mak
6100: 65 20 73 75 72 65 20 77 65 20 73 77 69 74 63 68  e sure we switch
6110: 20 74 6f 20 74 68 65 20 73 74 61 63 6b 20 70 6f   to the stack po
6120: 69 6e 74 65 72 20 61 66 74 65 72 20 35 20 61 72  inter after 5 ar
6130: 67 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  gs */.#define __
6140: 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73  va_arg_leftadjus
6150: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
6160: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20  ZE,TYPE_ALIGN)  
6170: 5c 0a 20 20 28 28 28 28 4c 49 53 54 29 2d 3e 6f  \.  ((((LIST)->o
6180: 6e 73 74 61 63 6b 20 3d 3d 20 30 20 26 26 20 28  nstack == 0 && (
6190: 4c 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28  LIST)->aptr >= (
61a0: 6c 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e 72 65  long)&(LIST)->re
61b0: 67 61 72 67 5b 35 5d 29 09 5c 0a 20 20 20 20 3f  garg[5]).\.    ?
61c0: 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63   ((LIST)->onstac
61d0: 6b 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 61 70 74  k=1, (LIST)->apt
61e0: 72 20 3d 20 28 4c 49 53 54 29 2d 3e 73 61 70 74  r = (LIST)->sapt
61f0: 72 29 20 3a 20 30 29 2c 09 09 5c 0a 20 20 20 28  r) : 0),..\.   (
6200: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f  LIST)->aptr += _
6210: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
6220: 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20  _SIZE),....\.   
6230: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f  (LIST)->aptr - _
6240: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
6250: 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20 29 0a  _SIZE)....\.  ).
6260: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
6270: 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c  _rightadjusted(L
6280: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
6290: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28  PE_ALIGN)  \.  (
62a0: 28 28 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61  ((((LIST)->onsta
62b0: 63 6b 20 3d 3d 20 30 20 26 26 20 28 28 4c 49 53  ck == 0 && ((LIS
62c0: 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28 6c 6f 6e  T)->aptr >= (lon
62d0: 67 29 26 28 4c 49 53 54 29 2d 3e 72 65 67 61 72  g)&(LIST)->regar
62e0: 67 5b 35 5d 29 29 20 5c 0a 20 20 20 7c 7c 20 28  g[5])) \.   || (
62f0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 73 69  (TYPE_SIZE) > si
6300: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 26  zeof(__vaword) &
6310: 26 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3e  & (LIST)->aptr >
6320: 3d 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54 29 2d  = (long)&(LIST)-
6330: 3e 72 65 67 61 72 67 5b 34 5d 29 29 20 5c 0a 20  >regarg[4])) \. 
6340: 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e     ? ((LIST)->on
6350: 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d  stack=1, (LIST)-
6360: 3e 61 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e  >aptr = (LIST)->
6370: 73 61 70 74 72 29 20 3a 20 30 29 2c 09 09 5c 0a  saptr) : 0),..\.
6380: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
6390: 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28  += __va_argsize(
63a0: 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c  TYPE_SIZE),....\
63b0: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
63c0: 20 2d 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   - ((TYPE_SIZE) 
63d0: 3c 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  < sizeof(__vawor
63e0: 64 29 09 09 09 5c 0a 09 09 20 20 20 3f 20 28 54  d)...\...   ? (T
63f0: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a  YPE_SIZE).....\.
6400: 09 09 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 73  ..   : __va_args
6410: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09  ize(TYPE_SIZE)..
6420: 09 09 5c 0a 09 09 20 20 29 09 09 09 09 09 09 09  ..\...  ).......
6430: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
6440: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
6450: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  32__) || defined
6460: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20  (__mips64__) || 
6470: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
6480: 34 5f 5f 29 0a 2f 2a 20 61 72 67 73 20 67 72 6f  4__)./* args gro
6490: 77 20 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61 6c 6c  w up */./* small
64a0: 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31 20   structures < 1 
64b0: 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65  word are adjuste
64c0: 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63  d depending on c
64d0: 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65 66 69  ompiler */.#defi
64e0: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74  ne __va_arg_left
64f0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
6500: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
6510: 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  GN)  \.  ((LIST)
6520: 2d 3e 61 6e 75 6d 20 2b 3d 20 5f 5f 76 61 5f 61  ->anum += __va_a
6530: 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45  rgsize(TYPE_SIZE
6540: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
6550: 64 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  d),..\.   (LIST)
6560: 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f 61  ->aptr += __va_a
6570: 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45  rgsize(TYPE_SIZE
6580: 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ),....\.   (LIST
6590: 29 2d 3e 61 70 74 72 20 2d 20 5f 5f 76 61 5f 61  )->aptr - __va_a
65a0: 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45  rgsize(TYPE_SIZE
65b0: 29 09 09 09 09 5c 0a 20 20 29 0a 23 64 65 66 69  )....\.  ).#defi
65c0: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68  ne __va_arg_righ
65d0: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
65e0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
65f0: 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IGN)  \.  ((LIST
6600: 29 2d 3e 61 6e 75 6d 20 2b 3d 20 5f 5f 76 61 5f  )->anum += __va_
6610: 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a  argsize(TYPE_SIZ
6620: 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f  E)/sizeof(__vawo
6630: 72 64 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54  rd),..\.   (LIST
6640: 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61 5f  )->aptr += __va_
6650: 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a  argsize(TYPE_SIZ
6660: 45 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  E),....\.   (LIS
6670: 54 29 2d 3e 61 70 74 72 20 2d 20 28 28 54 59 50  T)->aptr - ((TYP
6680: 45 5f 53 49 5a 45 29 20 3c 20 73 69 7a 65 6f 66  E_SIZE) < sizeof
6690: 28 5f 5f 76 61 77 6f 72 64 29 09 09 09 5c 0a 09  (__vaword)...\..
66a0: 09 20 20 20 3f 20 28 54 59 50 45 5f 53 49 5a 45  .   ? (TYPE_SIZE
66b0: 29 09 09 09 09 09 5c 0a 09 09 20 20 20 3a 20 5f  ).....\...   : _
66c0: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
66d0: 5f 53 49 5a 45 29 09 09 09 09 5c 0a 09 09 20 20  _SIZE)....\...  
66e0: 29 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65  ).......\.  ).#e
66f0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
6700: 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 61 72  (__hppa__)./* ar
6710: 67 73 20 67 72 6f 77 20 64 6f 77 6e 20 2a 2f 0a  gs grow down */.
6720: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
6730: 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49  _leftadjusted(LI
6740: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
6750: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28  E_ALIGN)  \.  ((
6760: 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c  LIST)->aptr = (L
6770: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f 5f 76  IST)->aptr - __v
6780: 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53  a_argsize(TYPE_S
6790: 49 5a 45 29 2c 09 09 5c 0a 20 20 20 28 28 54 59  IZE),..\.   ((TY
67a0: 50 45 5f 53 49 5a 45 29 20 3e 20 34 20 26 26 20  PE_SIZE) > 4 && 
67b0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 26 3d  ((LIST)->aptr &=
67c0: 20 2d 38 29 29 2c 09 09 09 09 5c 0a 20 20 20 28   -8)),....\.   (
67d0: 4c 49 53 54 29 2d 3e 61 70 74 72 09 09 09 09 09  LIST)->aptr.....
67e0: 09 09 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65  ...\.  ).#define
67f0: 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61   __va_arg_righta
6800: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
6810: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
6820: 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  N)  \.  ((LIST)-
6830: 3e 61 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e  >aptr = (LIST)->
6840: 61 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72 67 73  aptr - __va_args
6850: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09  ize(TYPE_SIZE),.
6860: 09 5c 0a 20 20 20 28 28 54 59 50 45 5f 53 49 5a  .\.   ((TYPE_SIZ
6870: 45 29 20 3e 20 34 20 26 26 20 28 28 4c 49 53 54  E) > 4 && ((LIST
6880: 29 2d 3e 61 70 74 72 20 26 3d 20 2d 38 29 29 2c  )->aptr &= -8)),
6890: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d  ....\.   (LIST)-
68a0: 3e 61 70 74 72 20 2b 20 28 28 2d 28 54 59 50 45  >aptr + ((-(TYPE
68b0: 5f 53 49 5a 45 29 29 20 26 20 33 29 09 09 09 09  _SIZE)) & 3)....
68c0: 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69  .\.  ).#endif.#i
68d0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
68e0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
68f0: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
6900: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f  ined(__ia64__)./
6910: 2a 20 6c 69 74 74 6c 65 20 65 6e 64 69 61 6e 20  * little endian 
6920: 2d 3e 20 73 6d 61 6c 6c 20 61 72 67 73 20 3c 20  -> small args < 
6930: 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73  1 word are adjus
6940: 74 65 64 20 74 6f 20 74 68 65 20 6c 65 66 74 20  ted to the left 
6950: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
6960: 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c 49 53  arg_adjusted(LIS
6970: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
6980: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 5f 5f 76  _ALIGN)  \.  __v
6990: 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74  a_arg_leftadjust
69a0: 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ed(LIST,TYPE_SIZ
69b0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a 23 65  E,TYPE_ALIGN).#e
69c0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
69d0: 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 64 65  (__m68k__) || de
69e0: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
69f0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
6a00: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66  mips64__) || def
6a10: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
6a20: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  || defined(__spa
6a30: 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  rc64__) || defin
6a40: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20  ed(__hppa__) || 
6a50: 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29  defined(__arm__)
6a60: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73   || defined(__rs
6a70: 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  6000__) || defin
6a80: 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20  ed(__m88k__) || 
6a90: 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78  defined(__convex
6aa0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
6ab0: 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 62 69 67 20  _s390__)./* big 
6ac0: 65 6e 64 69 61 6e 20 2d 3e 20 73 6d 61 6c 6c 20  endian -> small 
6ad0: 61 72 67 73 20 3c 20 31 20 77 6f 72 64 20 61 72  args < 1 word ar
6ae0: 65 20 61 64 6a 75 73 74 65 64 20 74 6f 20 74 68  e adjusted to th
6af0: 65 20 72 69 67 68 74 20 2a 2f 0a 23 64 65 66 69  e right */.#defi
6b00: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 61 64 6a 75  ne __va_arg_adju
6b10: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53  sted(LIST,TYPE_S
6b20: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
6b30: 20 5c 0a 20 20 5f 5f 76 61 5f 61 72 67 5f 72 69   \.  __va_arg_ri
6b40: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
6b50: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
6b60: 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a 23 69  ALIGN).#endif.#i
6b70: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
6b80: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
6b90: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20  __mipsn32__)./* 
6ba0: 62 69 67 20 65 6e 64 69 61 6e 20 2d 3e 20 73 6d  big endian -> sm
6bb0: 61 6c 6c 20 61 72 67 73 20 3c 20 31 20 77 6f 72  all args < 1 wor
6bc0: 64 20 61 72 65 20 61 64 6a 75 73 74 65 64 20 74  d are adjusted t
6bd0: 6f 20 74 68 65 20 72 69 67 68 74 20 2a 2f 0a 23  o the right */.#
6be0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
6bf0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
6c00: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
6c10: 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  GN)  \.  ((LIST)
6c20: 2d 3e 61 6e 75 6d 2b 2b 2c 20 5f 5f 76 61 5f 61  ->anum++, __va_a
6c30: 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64  rg_rightadjusted
6c40: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
6c50: 54 59 50 45 5f 41 4c 49 47 4e 29 29 0a 23 65 6e  TYPE_ALIGN)).#en
6c60: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
6c70: 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20 74  __x86_64__)./* t
6c80: 68 65 20 66 69 72 73 74 20 36 20 61 72 67 75 6d  he first 6 argum
6c90: 65 6e 74 20 77 6f 72 64 73 20 61 72 65 20 70 61  ent words are pa
6ca0: 73 73 65 64 20 69 6e 20 72 65 67 69 73 74 65 72  ssed in register
6cb0: 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  s */.#define __v
6cc0: 61 5f 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c  a_arg_adjusted(L
6cd0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
6ce0: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28  PE_ALIGN)  \.  (
6cf0: 28 4c 49 53 54 29 2d 3e 6d 65 6d 69 61 72 67 70  (LIST)->memiargp
6d00: 74 72 20 2b 20 28 28 54 59 50 45 5f 53 49 5a 45  tr + ((TYPE_SIZE
6d10: 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77  ) + sizeof(__vaw
6d20: 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f 66  ord)-1) / sizeof
6d30: 28 5f 5f 76 61 77 6f 72 64 29 20 3c 3d 20 26 28  (__vaword) <= &(
6d40: 4c 49 53 54 29 2d 3e 69 61 72 67 5b 36 5d 20 5c  LIST)->iarg[6] \
6d50: 0a 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6d  .   ? ((LIST)->m
6d60: 65 6d 69 61 72 67 70 74 72 20 2b 3d 20 28 28 54  emiargptr += ((T
6d70: 59 50 45 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65  YPE_SIZE) + size
6d80: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2d 31 29 20  of(__vaword)-1) 
6d90: 2f 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  / sizeof(__vawor
6da0: 64 29 2c 20 5c 0a 20 20 20 20 20 20 28 4c 49 53  d), \.      (LIS
6db0: 54 29 2d 3e 6d 65 6d 69 61 72 67 70 74 72 20 2d  T)->memiargptr -
6dc0: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20   ((TYPE_SIZE) + 
6dd0: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
6de0: 2d 31 29 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 76  -1) / sizeof(__v
6df0: 61 77 6f 72 64 29 20 5c 0a 20 20 20 20 20 29 09  aword) \.     ).
6e00: 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28  ........\.   : (
6e10: 76 6f 69 64 2a 29 5f 5f 76 61 5f 61 72 67 5f 6c  void*)__va_arg_l
6e20: 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  eftadjusted(LIST
6e30: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
6e40: 41 4c 49 47 4e 29 09 09 5c 0a 20 20 29 0a 23 65  ALIGN)..\.  ).#e
6e50: 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 5f 5f 76  ndif.#define __v
6e60: 61 5f 61 72 67 28 4c 49 53 54 2c 54 59 50 45 29  a_arg(LIST,TYPE)
6e70: 20 20 5c 0a 20 20 2a 28 54 59 50 45 2a 29 5f 5f    \.  *(TYPE*)__
6e80: 76 61 5f 61 72 67 5f 61 64 6a 75 73 74 65 64 28  va_arg_adjusted(
6e90: 4c 49 53 54 2c 73 69 7a 65 6f 66 28 54 59 50 45  LIST,sizeof(TYPE
6ea0: 29 2c 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54  ),__VA_alignof(T
6eb0: 59 50 45 29 29 0a 0a 2f 2a 20 49 6e 74 65 67 65  YPE))../* Intege
6ec0: 72 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a  r arguments. */.
6ed0: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
6ee0: 63 68 61 72 28 4c 49 53 54 29 09 5f 5f 76 61 5f  char(LIST).__va_
6ef0: 61 72 67 28 4c 49 53 54 2c 63 68 61 72 29 0a 23  arg(LIST,char).#
6f00: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 73 63  define va_arg_sc
6f10: 68 61 72 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61  har(LIST).__va_a
6f20: 72 67 28 4c 49 53 54 2c 73 69 67 6e 65 64 20 63  rg(LIST,signed c
6f30: 68 61 72 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  har).#define va_
6f40: 61 72 67 5f 75 63 68 61 72 28 4c 49 53 54 29 09  arg_uchar(LIST).
6f50: 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 75 6e  __va_arg(LIST,un
6f60: 73 69 67 6e 65 64 20 63 68 61 72 29 0a 23 64 65  signed char).#de
6f70: 66 69 6e 65 20 76 61 5f 61 72 67 5f 73 68 6f 72  fine va_arg_shor
6f80: 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67  t(LIST).__va_arg
6f90: 28 4c 49 53 54 2c 73 68 6f 72 74 29 0a 23 64 65  (LIST,short).#de
6fa0: 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 73 68 6f  fine va_arg_usho
6fb0: 72 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72  rt(LIST).__va_ar
6fc0: 67 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64 20  g(LIST,unsigned 
6fd0: 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 76  short).#define v
6fe0: 61 5f 61 72 67 5f 69 6e 74 28 4c 49 53 54 29 09  a_arg_int(LIST).
6ff0: 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 69 6e  __va_arg(LIST,in
7000: 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  t).#define va_ar
7010: 67 5f 75 69 6e 74 28 4c 49 53 54 29 09 5f 5f 76  g_uint(LIST).__v
7020: 61 5f 61 72 67 28 4c 49 53 54 2c 75 6e 73 69 67  a_arg(LIST,unsig
7030: 6e 65 64 20 69 6e 74 29 0a 23 64 65 66 69 6e 65  ned int).#define
7040: 20 76 61 5f 61 72 67 5f 6c 6f 6e 67 28 4c 49 53   va_arg_long(LIS
7050: 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54  T).__va_arg(LIST
7060: 2c 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 76  ,long).#define v
7070: 61 5f 61 72 67 5f 75 6c 6f 6e 67 28 4c 49 53 54  a_arg_ulong(LIST
7080: 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c  ).__va_arg(LIST,
7090: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 0a 0a  unsigned long)..
70a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
70b0: 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ps64__) || defin
70c0: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 20  ed(__sparc64__) 
70d0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70  || defined(__alp
70e0: 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ha__) || defined
70f0: 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64 65  (__ia64__) || de
7100: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
7110: 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27  )./* `long long'
7120: 20 61 6e 64 20 60 6c 6f 6e 67 27 20 61 72 65 20   and `long' are 
7130: 69 64 65 6e 74 69 63 61 6c 2e 20 2a 2f 0a 23 64  identical. */.#d
7140: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 6c 6f 6e  efine va_arg_lon
7150: 67 6c 6f 6e 67 09 09 76 61 5f 61 72 67 5f 6c 6f  glong..va_arg_lo
7160: 6e 67 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  ng.#define va_ar
7170: 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 09 76 61 5f 61  g_ulonglong.va_a
7180: 72 67 5f 75 6c 6f 6e 67 0a 23 65 6c 69 66 20 64  rg_ulong.#elif d
7190: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
71a0: 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e  __)./* `long lon
71b0: 67 27 20 66 69 74 73 20 69 6e 20 5f 5f 76 61 77  g' fits in __vaw
71c0: 6f 72 64 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ord. */.#define 
71d0: 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28  va_arg_longlong(
71e0: 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c  LIST).__va_arg(L
71f0: 49 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 29 0a 23  IST,long long).#
7200: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 6c  define va_arg_ul
7210: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f  onglong(LIST).__
7220: 76 61 5f 61 72 67 28 4c 49 53 54 2c 75 6e 73 69  va_arg(LIST,unsi
7230: 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 0a  gned long long).
7240: 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  #elif defined(__
7250: 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  i386__) || defin
7260: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
7270: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f  defined(__mips__
7280: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
7290: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66  sparc__) && !def
72a0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
72b0: 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  )) || defined(__
72c0: 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  hppa__) || defin
72d0: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
72e0: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
72f0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
7300: 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  m88k__) || defin
7310: 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c  ed(__convex__) |
7320: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  | defined(__s390
7330: 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e  __)./* `long lon
7340: 67 27 73 20 61 72 65 20 70 61 73 73 65 64 20 65  g's are passed e
7350: 6d 62 65 64 64 65 64 20 6f 6e 20 74 68 65 20 61  mbedded on the a
7360: 72 67 20 73 74 61 63 6b 2e 20 2a 2f 0a 23 64 65  rg stack. */.#de
7370: 66 69 6e 65 20 76 61 5f 61 72 67 5f 6c 6f 6e 67  fine va_arg_long
7380: 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76 61 5f  long(LIST).__va_
7390: 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53  arg_longlong(LIS
73a0: 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 29 0a 23 64 65  T,long long).#de
73b0: 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 6c 6f 6e  fine va_arg_ulon
73c0: 67 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76 61  glong(LIST).__va
73d0: 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  _arg_longlong(LI
73e0: 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  ST,unsigned long
73f0: 20 6c 6f 6e 67 29 0a 23 69 66 20 64 65 66 69 6e   long).#if defin
7400: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20  ed(__i386__) || 
7410: 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f  defined(__m68k__
7420: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
7430: 72 6d 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65  rm__) || (define
7440: 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26  d(__rs6000__) &&
7450: 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20   (defined(_AIX) 
7460: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
7470: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
7480: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29 20 7c  (__APPLE__)))) |
7490: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
74a0: 65 78 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c  ex__)./* `long l
74b0: 6f 6e 67 27 73 20 61 72 65 20 28 61 74 20 6d 6f  ong's are (at mo
74c0: 73 74 29 20 77 6f 72 64 2d 61 6c 69 67 6e 65 64  st) word-aligned
74d0: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
74e0: 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c  a_arg_longlong(L
74f0: 49 53 54 2c 54 59 50 45 29 09 5f 5f 76 61 5f 61  IST,TYPE).__va_a
7500: 72 67 28 4c 49 53 54 2c 54 59 50 45 29 0a 23 65  rg(LIST,TYPE).#e
7510: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
7520: 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 28 64  (__mips__) || (d
7530: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
7540: 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28  _) && !(defined(
7550: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
7560: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
7570: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
7580: 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  )))) || defined(
7590: 5f 5f 6d 38 38 6b 5f 5f 29 0a 2f 2a 20 60 6c 6f  __m88k__)./* `lo
75a0: 6e 67 20 6c 6f 6e 67 27 73 20 68 61 76 65 20 61  ng long's have a
75b0: 6c 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f 0a 23  lignment 8. */.#
75c0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
75d0: 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59  longlong(LIST,TY
75e0: 50 45 29 09 09 09 09 09 5c 0a 20 20 28 28 4c 49  PE).....\.  ((LI
75f0: 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 28 28 4c  ST)->aptr = (((L
7600: 49 53 54 29 2d 3e 61 70 74 72 2b 5f 5f 56 41 5f  IST)->aptr+__VA_
7610: 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2d 31 29  alignof(TYPE)-1)
7620: 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f 61   & -(long)__VA_a
7630: 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 2c 20 5c  lignof(TYPE)), \
7640: 0a 20 20 20 5f 5f 76 61 5f 61 72 67 28 4c 49 53  .   __va_arg(LIS
7650: 54 2c 54 59 50 45 29 29 0a 23 65 6e 64 69 66 0a  T,TYPE)).#endif.
7660: 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 73  #if (defined(__s
7670: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
7680: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
7690: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
76a0: 33 39 30 5f 5f 29 0a 2f 2a 20 57 69 74 68 69 6e  390__)./* Within
76b0: 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2c 20   the arg stack, 
76c0: 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 69 73  the alignment is
76d0: 20 6f 6e 6c 79 20 34 2c 20 6e 6f 74 20 38 2e 20   only 4, not 8. 
76e0: 2a 2f 0a 2f 2a 20 42 65 77 61 72 65 20 61 67 61  */./* Beware aga
76f0: 69 6e 73 74 20 75 6e 61 6c 69 67 6e 65 64 20 61  inst unaligned a
7700: 63 63 65 73 73 65 73 21 20 2a 2f 0a 23 64 65 66  ccesses! */.#def
7710: 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 6f 6e  ine __va_arg_lon
7720: 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50 45 29  glong(LIST,TYPE)
7730: 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53 54 29  .....\.  ((LIST)
7740: 2d 3e 74 6d 70 2e 5f 77 6f 72 64 73 5b 30 5d 20  ->tmp._words[0] 
7750: 3d 20 28 28 5f 5f 76 61 77 6f 72 64 2a 29 28 28  = ((__vaword*)((
7760: 4c 49 53 54 29 2d 3e 61 70 74 72 29 29 5b 30 5d  LIST)->aptr))[0]
7770: 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ,..\.   (LIST)->
7780: 74 6d 70 2e 5f 77 6f 72 64 73 5b 31 5d 20 3d 20  tmp._words[1] = 
7790: 28 28 5f 5f 76 61 77 6f 72 64 2a 29 28 28 4c 49  ((__vaword*)((LI
77a0: 53 54 29 2d 3e 61 70 74 72 29 29 5b 31 5d 2c 09  ST)->aptr))[1],.
77b0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70  .\.   (LIST)->ap
77c0: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 54 59 50  tr += sizeof(TYP
77d0: 45 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 54 59  E),.....\.   (TY
77e0: 50 45 29 28 28 4c 49 53 54 29 2d 3e 74 6d 70 2e  PE)((LIST)->tmp.
77f0: 5f 6c 6f 6e 67 6c 6f 6e 67 29 09 09 09 09 09 5c  _longlong).....\
7800: 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  .  ).#endif.#if 
7810: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
7820: 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e 67 27  )./* `long long'
7830: 73 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74  s have alignment
7840: 20 38 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f   8. */.#define _
7850: 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67  _va_arg_longlong
7860: 28 4c 49 53 54 2c 54 59 50 45 29 09 09 09 09 09  (LIST,TYPE).....
7870: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74  \.  ((LIST)->apt
7880: 72 20 3d 20 28 28 4c 49 53 54 29 2d 3e 61 70 74  r = ((LIST)->apt
7890: 72 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f  r & -(long)__VA_
78a0: 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 2c 09  alignof(TYPE)),.
78b0: 09 5c 0a 20 20 20 5f 5f 76 61 5f 61 72 67 28 4c  .\.   __va_arg(L
78c0: 49 53 54 2c 54 59 50 45 29 29 0a 23 65 6e 64 69  IST,TYPE)).#endi
78d0: 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 46 6c 6f  f.#endif../* Flo
78e0: 61 74 69 6e 67 20 70 6f 69 6e 74 20 61 72 67 75  ating point argu
78f0: 6d 65 6e 74 73 2e 20 2a 2f 0a 0a 23 64 65 66 69  ments. */..#defi
7900: 6e 65 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28  ne va_arg_float(
7910: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIST)  \.  ((LIS
7920: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
7930: 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 46 4c 4f  _TRADITIONAL_FLO
7940: 41 54 5f 41 52 47 53 09 09 09 09 5c 0a 20 20 20  AT_ARGS....\.   
7950: 3f 20 28 66 6c 6f 61 74 29 76 61 5f 61 72 67 5f  ? (float)va_arg_
7960: 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09  double(LIST)....
7970: 09 09 5c 0a 20 20 20 3a 20 5f 5f 76 61 5f 61 72  ..\.   : __va_ar
7980: 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 09 09 09  g_float(LIST)...
7990: 09 09 09 5c 0a 20 20 29 0a 0a 23 69 66 20 64 65  ...\.  )..#if de
79a0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
79b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  || defined(__m68
79c0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
79d0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20  __mipsn32__) || 
79e0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34  defined(__mips64
79f0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
7a00: 5f 73 70 61 72 63 5f 5f 29 20 7c 7c 20 64 65 66  _sparc__) || def
7a10: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
7a20: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
7a30: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  lpha__) || defin
7a40: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 64  ed(__arm__) || d
7a50: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
7a60: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
7a70: 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66  convex__) || def
7a80: 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c  ined(__ia64__) |
7a90: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f  | defined(__x86_
7aa0: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
7ab0: 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65 66 69  (__s390__).#defi
7ac0: 6e 65 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f  ne __va_align_do
7ad0: 75 62 6c 65 28 4c 49 53 54 29 0a 23 65 6e 64 69  uble(LIST).#endi
7ae0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
7af0: 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69  mips__) && !defi
7b00: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
7b10: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38   || defined(__m8
7b20: 38 6b 5f 5f 29 0a 2f 2a 20 5f 5f 56 41 5f 61 6c  8k__)./* __VA_al
7b30: 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29 20 3e 20  ignof(double) > 
7b40: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
7b50: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
7b60: 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49  _align_double(LI
7b70: 53 54 29 20 20 5c 0a 20 20 28 4c 49 53 54 29 2d  ST)  \.  (LIST)-
7b80: 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54 29 2d  >aptr = ((LIST)-
7b90: 3e 61 70 74 72 20 2b 20 73 69 7a 65 6f 66 28 64  >aptr + sizeof(d
7ba0: 6f 75 62 6c 65 29 2d 31 29 20 26 20 2d 28 6c 6f  ouble)-1) & -(lo
7bb0: 6e 67 29 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  ng)sizeof(double
7bc0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ),.#endif.#if de
7bd0: 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a  fined(__hppa__).
7be0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 6c 69  #define __va_ali
7bf0: 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20  gn_double(LIST) 
7c00: 20 5c 0a 20 20 28 4c 49 53 54 29 2d 3e 61 70 74   \.  (LIST)->apt
7c10: 72 20 3d 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  r = (LIST)->aptr
7c20: 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65 6f 66   & -(long)sizeof
7c30: 28 64 6f 75 62 6c 65 29 2c 0a 23 65 6e 64 69 66  (double),.#endif
7c40: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
7c50: 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66  sparc__) && !def
7c60: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
7c70: 29 0a 2f 2a 20 42 65 77 61 72 65 20 61 67 61 69  )./* Beware agai
7c80: 6e 73 74 20 75 6e 61 6c 69 67 6e 65 64 20 60 64  nst unaligned `d
7c90: 6f 75 62 6c 65 27 20 61 63 63 65 73 73 65 73 21  ouble' accesses!
7ca0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f 61   */.#define va_a
7cb0: 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20  rg_double(LIST) 
7cc0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
7cd0: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09  _double(LIST)...
7ce0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
7cf0: 74 6d 70 2e 5f 77 6f 72 64 73 5b 30 5d 20 3d 20  tmp._words[0] = 
7d00: 28 28 5f 5f 76 61 77 6f 72 64 2a 29 28 28 4c 49  ((__vaword*)((LI
7d10: 53 54 29 2d 3e 61 70 74 72 29 29 5b 30 5d 2c 09  ST)->aptr))[0],.
7d20: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 74 6d  .\.   (LIST)->tm
7d30: 70 2e 5f 77 6f 72 64 73 5b 31 5d 20 3d 20 28 28  p._words[1] = ((
7d40: 5f 5f 76 61 77 6f 72 64 2a 29 28 28 4c 49 53 54  __vaword*)((LIST
7d50: 29 2d 3e 61 70 74 72 29 29 5b 31 5d 2c 09 09 5c  )->aptr))[1],..\
7d60: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
7d70: 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   += sizeof(doubl
7d80: 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  e),.....\.   (LI
7d90: 53 54 29 2d 3e 74 6d 70 2e 5f 64 6f 75 62 6c 65  ST)->tmp._double
7da0: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e  .......\.  ).#en
7db0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
7dc0: 5f 5f 61 6c 70 68 61 5f 5f 29 0a 2f 2a 20 54 68  __alpha__)./* Th
7dd0: 65 20 66 69 72 73 74 20 36 20 66 6c 6f 61 74 69  e first 6 floati
7de0: 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73 74 65  ng point registe
7df0: 72 73 20 68 61 76 65 20 62 65 65 6e 20 73 74 6f  rs have been sto
7e00: 72 65 64 20 69 6e 20 61 6e 6f 74 68 65 72 20 70  red in another p
7e10: 6c 61 63 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  lace. */.#define
7e20: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c   va_arg_double(L
7e30: 49 53 54 29 20 20 5c 0a 20 20 28 28 28 4c 49 53  IST)  \.  (((LIS
7e40: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65  T)->aptr += size
7e50: 6f 66 28 64 6f 75 62 6c 65 29 29 20 3c 3d 20 28  of(double)) <= (
7e60: 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70 74 72  LIST)->memargptr
7e70: 09 09 5c 0a 20 20 20 3f 20 2a 28 64 6f 75 62 6c  ..\.   ? *(doubl
7e80: 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  e*)((LIST)->aptr
7e90: 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65   - sizeof(double
7ea0: 29 20 2d 20 36 2a 73 69 7a 65 6f 66 28 64 6f 75  ) - 6*sizeof(dou
7eb0: 62 6c 65 29 29 09 5c 0a 20 20 20 3a 20 2a 28 64  ble)).\.   : *(d
7ec0: 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e  ouble*)((LIST)->
7ed0: 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f  aptr - sizeof(do
7ee0: 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29 0a  uble))....\.  ).
7ef0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
7f00: 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a  _float(LIST)  \.
7f10: 20 20 28 28 28 4c 49 53 54 29 2d 3e 61 70 74 72    (((LIST)->aptr
7f20: 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   += sizeof(doubl
7f30: 65 29 29 20 3c 3d 20 28 4c 49 53 54 29 2d 3e 6d  e)) <= (LIST)->m
7f40: 65 6d 61 72 67 70 74 72 09 09 5c 0a 20 20 20 3f  emargptr..\.   ?
7f50: 20 2f 2a 20 54 68 65 20 66 69 72 73 74 20 36 20   /* The first 6 
7f60: 61 72 67 73 20 68 61 76 65 20 62 65 65 6e 20 70  args have been p
7f70: 75 74 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 62  ut into memory b
7f80: 79 20 22 73 74 74 22 20 69 6e 73 74 72 75 63 74  y "stt" instruct
7f90: 69 6f 6e 73 20 2a 2f 5c 0a 20 20 20 20 20 2f 2a  ions */\.     /*
7fa0: 20 28 73 65 65 20 76 61 63 61 6c 6c 2d 61 6c 70   (see vacall-alp
7fb0: 68 61 2e 73 21 29 2e 20 54 68 65 72 65 66 6f 72  ha.s!). Therefor
7fc0: 65 20 6c 6f 61 64 20 74 68 65 6d 20 61 73 20 64  e load them as d
7fd0: 6f 75 62 6c 65 73 2e 20 2a 2f 09 5c 0a 20 20 20  oubles. */.\.   
7fe0: 20 20 2f 2a 20 57 68 65 6e 20 76 69 65 77 65 64    /* When viewed
7ff0: 20 61 73 20 66 6c 6f 61 74 73 2c 20 74 68 65 20   as floats, the 
8000: 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 74 68  value will be th
8010: 65 20 63 6f 72 72 65 63 74 20 6f 6e 65 2e 20 2a  e correct one. *
8020: 2f 09 5c 0a 20 20 20 20 20 28 66 6c 6f 61 74 29  /.\.     (float)
8030: 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54  *(double*)((LIST
8040: 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66  )->aptr - sizeof
8050: 28 64 6f 75 62 6c 65 29 20 2d 20 36 2a 73 69 7a  (double) - 6*siz
8060: 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 5c 0a 20  eof(double)) \. 
8070: 20 20 3a 20 2f 2a 20 54 68 65 73 65 20 61 72 67    : /* These arg
8080: 73 20 68 61 76 65 20 62 65 65 6e 20 70 75 74 20  s have been put 
8090: 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 62 79 20 22  into memory by "
80a0: 73 74 73 22 20 69 6e 73 74 72 75 63 74 69 6f 6e  sts" instruction
80b0: 73 2c 20 2a 2f 09 5c 0a 20 20 20 20 20 2f 2a 20  s, */.\.     /* 
80c0: 74 68 65 72 65 66 6f 72 65 20 6c 6f 61 64 20 74  therefore load t
80d0: 68 65 6d 20 61 73 20 66 6c 6f 61 74 73 2e 20 2a  hem as floats. *
80e0: 2f 09 09 09 09 5c 0a 20 20 20 20 20 2a 28 66 6c  /....\.     *(fl
80f0: 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70  oat*)((LIST)->ap
8100: 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62  tr - sizeof(doub
8110: 6c 65 29 29 09 09 09 09 5c 0a 20 20 29 0a 23 65  le))....\.  ).#e
8120: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
8130: 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20 54 68  (__hppa__)./* Th
8140: 65 20 66 69 72 73 74 20 34 20 66 6c 6f 61 74 20  e first 4 float 
8150: 72 65 67 69 73 74 65 72 73 20 61 6e 64 20 74 68  registers and th
8160: 65 20 66 69 72 73 74 20 32 20 64 6f 75 62 6c 65  e first 2 double
8170: 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20 73   registers are s
8180: 74 6f 72 65 64 0a 20 2a 20 65 6c 73 65 77 68 65  tored. * elsewhe
8190: 72 65 2e 0a 20 2a 2f 0a 23 69 66 20 31 20 2f 2a  re.. */.#if 1 /*
81a0: 20 67 63 63 2d 32 2e 35 2e 32 20 70 61 73 73 65   gcc-2.5.2 passe
81b0: 73 20 74 68 65 73 65 20 61 72 67 73 20 69 6e 20  s these args in 
81c0: 67 65 6e 65 72 61 6c 20 72 65 67 69 73 74 65 72  general register
81d0: 73 21 20 41 20 62 75 67 2c 20 49 20 74 68 69 6e  s! A bug, I thin
81e0: 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  k. */.#define __
81f0: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53  va_arg_float(LIS
8200: 54 29 20 20 5c 0a 20 20 28 2a 28 66 6c 6f 61 74  T)  \.  (*(float
8210: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
8220: 2d 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29  -= sizeof(float)
8230: 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  )).#define va_ar
8240: 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20  g_double(LIST)  
8250: 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f  \.  (__va_align_
8260: 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09  double(LIST)....
8270: 09 09 5c 0a 20 20 20 2a 28 64 6f 75 62 6c 65 2a  ..\.   *(double*
8280: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d  )((LIST)->aptr -
8290: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
82a0: 29 09 09 09 09 5c 0a 20 20 29 0a 23 65 6c 73 65  )....\.  ).#else
82b0: 20 2f 2a 20 74 68 69 73 20 77 6f 75 6c 64 20 62   /* this would b
82c0: 65 20 63 6f 72 72 65 63 74 20 69 66 20 74 68 65  e correct if the
82d0: 20 61 72 67 73 20 77 65 72 65 20 70 61 73 73 65   args were passe
82e0: 64 20 69 6e 20 66 6c 6f 61 74 20 72 65 67 69 73  d in float regis
82f0: 74 65 72 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  ters. */.#define
8300: 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28   __va_arg_float(
8310: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 28 4c 49  LIST)  \.  (((LI
8320: 53 54 29 2d 3e 61 70 74 72 20 2d 3d 20 73 69 7a  ST)->aptr -= siz
8330: 65 6f 66 28 66 6c 6f 61 74 29 29 20 3e 3d 20 28  eof(float)) >= (
8340: 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70 74 72  LIST)->memargptr
8350: 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 54 68 65  ...\.   ? /* The
8360: 20 66 69 72 73 74 20 34 20 66 6c 6f 61 74 20 61   first 4 float a
8370: 72 67 73 20 61 72 65 20 73 74 6f 72 65 64 20 73  rgs are stored s
8380: 65 70 61 72 61 74 65 6c 79 2e 20 2a 2f 09 09 5c  eparately. */..\
8390: 0a 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28  .     *(float*)(
83a0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 20 28  (LIST)->aptr + (
83b0: 4c 49 53 54 29 2d 3e 66 61 72 67 5f 6f 66 66 73  LIST)->farg_offs
83c0: 65 74 29 09 09 09 5c 0a 20 20 20 3a 20 2a 28 66  et)...\.   : *(f
83d0: 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61  loat*)((LIST)->a
83e0: 70 74 72 29 09 09 09 09 09 09 5c 0a 20 20 29 0a  ptr)......\.  ).
83f0: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64  #define va_arg_d
8400: 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20  ouble(LIST)  \. 
8410: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75   (__va_align_dou
8420: 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c  ble(LIST)......\
8430: 0a 20 20 20 28 28 28 4c 49 53 54 29 2d 3e 61 70  .   (((LIST)->ap
8440: 74 72 20 2d 3d 20 73 69 7a 65 6f 66 28 64 6f 75  tr -= sizeof(dou
8450: 62 6c 65 29 29 20 3e 3d 20 28 4c 49 53 54 29 2d  ble)) >= (LIST)-
8460: 3e 6d 65 6d 61 72 67 70 74 72 09 09 5c 0a 20 20  >memargptr..\.  
8470: 20 20 3f 20 2f 2a 20 54 68 65 20 66 69 72 73 74    ? /* The first
8480: 20 32 20 64 6f 75 62 6c 65 20 61 72 67 73 20 61   2 double args a
8490: 72 65 20 73 74 6f 72 65 64 20 73 65 70 61 72 61  re stored separa
84a0: 74 65 6c 79 2e 20 2a 2f 09 09 5c 0a 20 20 20 20  tely. */..\.    
84b0: 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49    *(double*)((LI
84c0: 53 54 29 2d 3e 61 70 74 72 20 2b 20 28 4c 49 53  ST)->aptr + (LIS
84d0: 54 29 2d 3e 64 61 72 67 5f 6f 66 66 73 65 74 29  T)->darg_offset)
84e0: 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 64 6f 75  ...\.    : *(dou
84f0: 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70  ble*)((LIST)->ap
8500: 74 72 29 09 09 09 09 09 09 5c 0a 20 20 29 29 0a  tr)......\.  )).
8510: 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 69  #endif.#endif.#i
8520: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
8530: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
8540: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20  __mipsn32__)./* 
8550: 54 68 65 20 66 69 72 73 74 20 30 2c 31 2c 32 20  The first 0,1,2 
8560: 72 65 67 69 73 74 65 72 73 20 61 72 65 20 73 74  registers are st
8570: 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65 20 69  ored elsewhere i
8580: 66 20 74 68 65 79 20 61 72 65 20 66 6c 6f 61 74  f they are float
8590: 69 6e 67 2d 70 6f 69 6e 74 0a 20 2a 20 70 61 72  ing-point. * par
85a0: 61 6d 65 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65  ameters.. */.#de
85b0: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c  fine __va_arg_fl
85c0: 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  oat(LIST)  \.  (
85d0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
85e0: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 2c 09 09  sizeof(float),..
85f0: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
8600: 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a  anum++,.......\.
8610: 20 20 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d     ((LIST)->anum
8620: 20 3d 3d 20 31 09 09 09 09 09 09 09 5c 0a 20 20   == 1.......\.  
8630: 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61    ? ((LIST)->fla
8640: 67 73 20 7c 3d 20 5f 5f 56 41 5f 46 4c 4f 41 54  gs |= __VA_FLOAT
8650: 5f 31 2c 20 28 4c 49 53 54 29 2d 3e 66 61 72 67  _1, (LIST)->farg
8660: 5b 30 5d 29 09 09 09 5c 0a 20 20 20 20 3a 20 28  [0])...\.    : (
8670: 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3d 3d 20  (LIST)->anum == 
8680: 32 20 26 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c  2 && ((LIST)->fl
8690: 61 67 73 20 26 20 5f 5f 56 41 5f 46 4c 4f 41 54  ags & __VA_FLOAT
86a0: 5f 31 29 09 09 5c 0a 20 20 20 20 20 20 20 3f 20  _1)..\.       ? 
86b0: 28 2f 2a 20 28 4c 49 53 54 29 2d 3e 66 6c 61 67  (/* (LIST)->flag
86c0: 73 20 7c 3d 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  s |= __VA_FLOAT_
86d0: 32 2c 20 2a 2f 20 28 4c 49 53 54 29 2d 3e 66 61  2, */ (LIST)->fa
86e0: 72 67 5b 31 5d 29 09 09 5c 0a 20 20 20 20 20 20  rg[1])..\.      
86f0: 20 3a 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49   : *(float*)((LI
8700: 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65  ST)->aptr - size
8710: 6f 66 28 66 6c 6f 61 74 29 29 09 09 09 5c 0a 20  of(float))...\. 
8720: 20 29 29 20 20 29 0a 23 64 65 66 69 6e 65 20 76   ))  ).#define v
8730: 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53  a_arg_double(LIS
8740: 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c  T)  \.  (__va_al
8750: 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29  ign_double(LIST)
8760: 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ......\.   (LIST
8770: 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f  )->aptr += sizeo
8780: 66 28 64 6f 75 62 6c 65 29 2c 09 09 09 09 09 5c  f(double),.....\
8790: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 6e 75 6d  .   (LIST)->anum
87a0: 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 28  ++,.......\.   (
87b0: 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3d 3d 20  (LIST)->anum == 
87c0: 31 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  1.......\.    ? 
87d0: 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 7c  ((LIST)->flags |
87e0: 3d 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31 2c 20  = __VA_FLOAT_1, 
87f0: 28 4c 49 53 54 29 2d 3e 64 61 72 67 5b 30 5d 29  (LIST)->darg[0])
8800: 09 09 09 5c 0a 20 20 20 20 3a 20 28 28 4c 49 53  ...\.    : ((LIS
8810: 54 29 2d 3e 61 6e 75 6d 20 3d 3d 20 32 20 26 26  T)->anum == 2 &&
8820: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
8830: 26 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31 29 09  & __VA_FLOAT_1).
8840: 09 5c 0a 20 20 20 20 20 20 20 3f 20 28 2f 2a 20  .\.       ? (/* 
8850: 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d  (LIST)->flags |=
8860: 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 32 2c 20 2a   __VA_FLOAT_2, *
8870: 2f 20 28 4c 49 53 54 29 2d 3e 64 61 72 67 5b 31  / (LIST)->darg[1
8880: 5d 29 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 2a  ])..\.       : *
8890: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
88a0: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
88b0: 64 6f 75 62 6c 65 29 29 09 09 09 5c 0a 20 20 29  double))...\.  )
88c0: 29 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20  )  ).#endif.#if 
88d0: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
88e0: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
88f0: 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 2f 2a 20 54  __mips64__)./* T
8900: 68 65 20 66 69 72 73 74 20 30 2c 2e 2e 2c 38 20  he first 0,..,8 
8910: 72 65 67 69 73 74 65 72 73 20 61 72 65 20 73 74  registers are st
8920: 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65 20 69  ored elsewhere i
8930: 66 20 74 68 65 79 20 61 72 65 20 66 6c 6f 61 74  f they are float
8940: 69 6e 67 2d 70 6f 69 6e 74 0a 20 2a 20 70 61 72  ing-point. * par
8950: 61 6d 65 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65  ameters.. */.#de
8960: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c  fine __va_arg_fl
8970: 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  oat(LIST)  \.  (
8980: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
8990: 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  e(LIST)......\. 
89a0: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
89b0: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
89c0: 2c 09 09 09 09 09 5c 0a 20 20 20 28 2b 2b 28 4c  ,.....\.   (++(L
89d0: 49 53 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20 38 09  IST)->anum <= 8.
89e0: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c  ......\.    ? (L
89f0: 49 53 54 29 2d 3e 66 61 72 67 5b 28 4c 49 53 54  IST)->farg[(LIST
8a00: 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d 09 09 09 09  )->anum - 1]....
8a10: 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61 74  .\.    : *(float
8a20: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
8a30: 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  - sizeof(double)
8a40: 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 64 65 66  )....\.  )).#def
8a50: 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c  ine va_arg_doubl
8a60: 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f  e(LIST)  \.  (__
8a70: 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28  va_align_double(
8a80: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
8a90: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
8aa0: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09  sizeof(double),.
8ab0: 09 09 09 09 5c 0a 20 20 20 28 2b 2b 28 4c 49 53  ....\.   (++(LIS
8ac0: 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20 38 09 09 09  T)->anum <= 8...
8ad0: 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c 49 53  ....\.    ? (LIS
8ae0: 54 29 2d 3e 64 61 72 67 5b 28 4c 49 53 54 29 2d  T)->darg[(LIST)-
8af0: 3e 61 6e 75 6d 20 2d 20 31 5d 09 09 09 09 09 5c  >anum - 1].....\
8b00: 0a 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a  .    : *(double*
8b10: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d  )((LIST)->aptr -
8b20: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29   sizeof(double))
8b30: 09 09 09 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69  ....\.  )).#endi
8b40: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
8b50: 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 54 68  sparc64__)./* Th
8b60: 65 20 66 69 72 73 74 20 30 2c 2e 2e 2c 31 36 20  e first 0,..,16 
8b70: 72 65 67 69 73 74 65 72 73 20 61 72 65 20 73 74  registers are st
8b80: 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65 20 69  ored elsewhere i
8b90: 66 20 74 68 65 79 20 61 72 65 20 66 6c 6f 61 74  f they are float
8ba0: 69 6e 67 2d 70 6f 69 6e 74 0a 20 2a 20 70 61 72  ing-point. * par
8bb0: 61 6d 65 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65  ameters.. */.#de
8bc0: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c  fine __va_arg_fl
8bd0: 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  oat(LIST)  \.  (
8be0: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
8bf0: 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  e(LIST)......\. 
8c00: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
8c10: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
8c20: 2c 09 09 09 09 09 5c 0a 20 20 20 28 2b 2b 28 4c  ,.....\.   (++(L
8c30: 49 53 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20 31 36  IST)->anum <= 16
8c40: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c  ......\.    ? (L
8c50: 49 53 54 29 2d 3e 66 61 72 67 5b 28 4c 49 53 54  IST)->farg[(LIST
8c60: 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d 09 09 09 09  )->anum - 1]....
8c70: 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61 74  .\.    : *(float
8c80: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
8c90: 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  - sizeof(double)
8ca0: 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 64 65 66  )....\.  )).#def
8cb0: 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c  ine va_arg_doubl
8cc0: 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f  e(LIST)  \.  (__
8cd0: 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28  va_align_double(
8ce0: 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20  LIST)......\.   
8cf0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
8d00: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09  sizeof(double),.
8d10: 09 09 09 09 5c 0a 20 20 20 28 2b 2b 28 4c 49 53  ....\.   (++(LIS
8d20: 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20 31 36 09 09  T)->anum <= 16..
8d30: 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c 49 53  ....\.    ? (LIS
8d40: 54 29 2d 3e 64 61 72 67 5b 28 4c 49 53 54 29 2d  T)->darg[(LIST)-
8d50: 3e 61 6e 75 6d 20 2d 20 31 5d 09 09 09 09 09 5c  >anum - 1].....\
8d60: 0a 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a  .    : *(double*
8d70: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d  )((LIST)->aptr -
8d80: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29   sizeof(double))
8d90: 09 09 09 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69  ....\.  )).#endi
8da0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
8db0: 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28 64 65  rs6000__) && (de
8dc0: 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c 20 28  fined(_AIX) || (
8dd0: 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f  defined(__MACH__
8de0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 41  ) && defined(__A
8df0: 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 54 68 65  PPLE__)))./* The
8e00: 20 66 69 72 73 74 20 31 33 20 66 6c 6f 61 74 69   first 13 floati
8e10: 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20 68 61  ng-point args ha
8e20: 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64 20 65  ve been stored e
8e30: 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23 64 65  lsewhere. */.#de
8e40: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c  fine __va_arg_fl
8e50: 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  oat(LIST)  \.  (
8e60: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
8e70: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 2c 09 09  sizeof(float),..
8e80: 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d  ...\.   ((LIST)-
8e90: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
8ea0: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 33 5d 09  LIST)->farg[13].
8eb0: 09 09 09 5c 0a 20 20 20 20 3f 20 28 66 6c 6f 61  ...\.    ? (floa
8ec0: 74 29 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d  t) *((LIST)->mem
8ed0: 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09 09 5c  fargptr++).....\
8ee0: 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61 74 2a 29  .    : *(float*)
8ef0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20  ((LIST)->aptr - 
8f00: 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09  sizeof(float))..
8f10: 09 09 5c 0a 20 20 29 29 0a 23 64 65 66 69 6e 65  ..\.  )).#define
8f20: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c   va_arg_double(L
8f30: 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  IST)  \.  (__va_
8f40: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
8f50: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
8f60: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a  ST)->aptr += siz
8f70: 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09 09 09  eof(double),....
8f80: 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 6d  .\.   ((LIST)->m
8f90: 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28 4c 49  emfargptr < &(LI
8fa0: 53 54 29 2d 3e 66 61 72 67 5b 31 33 5d 09 09 09  ST)->farg[13]...
8fb0: 09 5c 0a 20 20 20 20 3f 20 2a 28 28 4c 49 53 54  .\.    ? *((LIST
8fc0: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29  )->memfargptr++)
8fd0: 09 09 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28  ......\.    : *(
8fe0: 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d  double*)((LIST)-
8ff0: 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64  >aptr - sizeof(d
9000: 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29  ouble))....\.  )
9010: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
9020: 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29  ined(__rs6000__)
9030: 20 26 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41   && !(defined(_A
9040: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
9050: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
9060: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
9070: 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74 20 38  )./* The first 8
9080: 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20   floating-point 
9090: 61 72 67 73 20 68 61 76 65 20 62 65 65 6e 20 73  args have been s
90a0: 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65 2e  tored elsewhere.
90b0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
90c0: 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29  _arg_float(LIST)
90d0: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 6d    \.  ((LIST)->m
90e0: 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28 4c 49  emfargptr < &(LI
90f0: 53 54 29 2d 3e 66 61 72 67 5b 38 5d 09 09 09 09  ST)->farg[8]....
9100: 5c 0a 20 20 20 3f 20 28 66 6c 6f 61 74 29 20 2a  \.   ? (float) *
9110: 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67  ((LIST)->memfarg
9120: 70 74 72 2b 2b 29 09 09 09 09 09 5c 0a 20 20 20  ptr++).....\.   
9130: 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  : ((LIST)->aptr 
9140: 3d 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61  = ((LIST)->onsta
9150: 63 6b 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20  ck == 0         
9160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9170: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20       \.         
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20                ? 
9190: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
91a0: 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61 70 74  =1, (LIST)->sapt
91b0: 72 29 20 20 20 20 20 20 20 20 20 20 20 20 20 5c  r)             \
91c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
91d0: 20 20 20 20 20 20 20 20 3a 20 28 4c 49 53 54 29          : (LIST)
91e0: 2d 3e 61 70 74 72 20 20 20 20 20 20 20 20 20 20  ->aptr          
91f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9200: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
9210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9220: 20 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   ),             
9230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9250: 20 20 20 5c 0a 20 20 20 20 20 20 28 4c 49 53 54     \.      (LIST
9260: 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f  )->aptr += sizeo
9270: 66 28 66 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a  f(float),.....\.
9280: 20 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28        *(float*)(
9290: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73  (LIST)->aptr - s
92a0: 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09 09  izeof(float))...
92b0: 09 5c 0a 20 20 29 29 0a 23 64 65 66 69 6e 65 20  .\.  )).#define 
92c0: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49  va_arg_double(LI
92d0: 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  ST)  \.  ((LIST)
92e0: 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26  ->memfargptr < &
92f0: 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38 5d 09  (LIST)->farg[8].
9300: 09 09 09 5c 0a 20 20 20 20 3f 20 2a 28 28 4c 49  ...\.    ? *((LI
9310: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b  ST)->memfargptr+
9320: 2b 29 09 09 09 09 09 09 5c 0a 20 20 20 20 3a 20  +)......\.    : 
9330: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20  ((LIST)->aptr = 
9340: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
9350: 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20 20 20   == 0           
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20    \.            
9380: 20 20 20 20 20 20 20 20 20 20 20 3f 20 28 28 4c             ? ((L
9390: 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c  IST)->onstack=1,
93a0: 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72 29 20   (LIST)->saptr) 
93b0: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93d0: 20 20 20 20 20 3a 20 28 4c 49 53 54 29 2d 3e 61       : (LIST)->a
93e0: 70 74 72 20 20 20 20 20 20 20 20 20 20 20 20 20  ptr             
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9400: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20        \.        
9410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 2c                ),
9420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9450: 5c 0a 20 20 20 20 20 20 20 5f 5f 76 61 5f 61 6c  \.       __va_al
9460: 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29  ign_double(LIST)
9470: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28  ......\.       (
9480: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73  LIST)->aptr += s
9490: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09  izeof(double),..
94a0: 09 09 09 5c 0a 20 20 20 20 20 20 20 2a 28 64 6f  ...\.       *(do
94b0: 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61  uble*)((LIST)->a
94c0: 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75  ptr - sizeof(dou
94d0: 62 6c 65 29 29 09 09 09 5c 0a 20 20 29 29 0a 23  ble))...\.  )).#
94e0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
94f0: 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 54  d(__s390__)./* T
9500: 68 65 20 66 69 72 73 74 20 32 20 66 6c 6f 61 74  he first 2 float
9510: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20 68  ing-point args h
9520: 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64 20  ave been stored 
9530: 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23 64  elsewhere. */.#d
9540: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66  efine __va_arg_f
9550: 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20  loat(LIST)  \.  
9560: 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67  ((LIST)->memfarg
9570: 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66  ptr < &(LIST)->f
9580: 61 72 67 5b 32 5d 09 09 09 09 5c 0a 20 20 20 3f  arg[2]....\.   ?
9590: 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 64 61 72 67   (LIST)->memdarg
95a0: 70 74 72 2b 2b 2c 20 28 66 6c 6f 61 74 29 20 2a  ptr++, (float) *
95b0: 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67  ((LIST)->memfarg
95c0: 70 74 72 2b 2b 29 09 09 5c 0a 20 20 20 3a 20 28  ptr++)..\.   : (
95d0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20 28  (LIST)->aptr = (
95e0: 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 20  (LIST)->onstack 
95f0: 3d 3d 20 30 20 20 20 20 20 20 20 20 20 20 20 20  == 0            
9600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9610: 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20    \.            
9620: 20 20 20 20 20 20 20 20 20 20 20 3f 20 28 28 4c             ? ((L
9630: 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c  IST)->onstack=1,
9640: 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72 29 20   (LIST)->saptr) 
9650: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
9660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9670: 20 20 20 20 20 3a 20 28 4c 49 53 54 29 2d 3e 61       : (LIST)->a
9680: 70 74 72 20 20 20 20 20 20 20 20 20 20 20 20 20  ptr             
9690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96a0: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20        \.        
96b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 2c                ),
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96f0: 5c 0a 20 20 20 20 20 20 28 4c 49 53 54 29 2d 3e  \.      (LIST)->
9700: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 66  aptr += sizeof(f
9710: 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a 20 20 20  loat),.....\.   
9720: 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49     *(float*)((LI
9730: 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65  ST)->aptr - size
9740: 6f 66 28 66 6c 6f 61 74 29 29 09 09 09 09 5c 0a  of(float))....\.
9750: 20 20 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f    )).#define va_
9760: 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29  arg_double(LIST)
9770: 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 6d    \.  ((LIST)->m
9780: 65 6d 64 61 72 67 70 74 72 20 3c 20 26 28 4c 49  emdargptr < &(LI
9790: 53 54 29 2d 3e 64 61 72 67 5b 32 5d 09 09 09 09  ST)->darg[2]....
97a0: 5c 0a 20 20 20 20 3f 20 28 4c 49 53 54 29 2d 3e  \.    ? (LIST)->
97b0: 6d 65 6d 66 61 72 67 70 74 72 2b 2b 2c 20 2a 28  memfargptr++, *(
97c0: 28 4c 49 53 54 29 2d 3e 6d 65 6d 64 61 72 67 70  (LIST)->memdargp
97d0: 74 72 2b 2b 29 09 09 09 5c 0a 20 20 20 20 3a 20  tr++)...\.    : 
97e0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20  ((LIST)->aptr = 
97f0: 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b  ((LIST)->onstack
9800: 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20 20 20   == 0           
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9820: 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20    \.            
9830: 20 20 20 20 20 20 20 20 20 20 20 3f 20 28 28 4c             ? ((L
9840: 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d 31 2c  IST)->onstack=1,
9850: 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72 29 20   (LIST)->saptr) 
9860: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
9870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9880: 20 20 20 20 20 3a 20 28 4c 49 53 54 29 2d 3e 61       : (LIST)->a
9890: 70 74 72 20 20 20 20 20 20 20 20 20 20 20 20 20  ptr             
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98b0: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20        \.        
98c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 2c                ),
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9900: 5c 0a 20 20 20 20 20 20 20 5f 5f 76 61 5f 61 6c  \.       __va_al
9910: 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29  ign_double(LIST)
9920: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 28  ......\.       (
9930: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73  LIST)->aptr += s
9940: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09  izeof(double),..
9950: 09 09 09 5c 0a 20 20 20 20 20 20 20 2a 28 64 6f  ...\.       *(do
9960: 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61  uble*)((LIST)->a
9970: 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75  ptr - sizeof(dou
9980: 62 6c 65 29 29 09 09 09 5c 0a 20 20 29 29 0a 23  ble))...\.  )).#
9990: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
99a0: 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a 20 54  d(__ia64__)./* T
99b0: 68 65 20 66 69 72 73 74 20 38 20 66 6c 6f 61 74  he first 8 float
99c0: 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20 68  ing-point args h
99d0: 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64 20  ave been stored 
99e0: 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23 64  elsewhere. */.#d
99f0: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66  efine __va_arg_f
9a00: 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20 20  loat(LIST)  \.  
9a10: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d  ((LIST)->aptr +=
9a20: 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64   sizeof(__vaword
9a30: 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 28 4c 49  ),.....\.   ((LI
9a40: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20  ST)->memfargptr 
9a50: 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b  < &(LIST)->farg[
9a60: 38 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 66  8]....\.    ? (f
9a70: 6c 6f 61 74 29 20 2a 28 28 4c 49 53 54 29 2d 3e  loat) *((LIST)->
9a80: 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09 09  memfargptr++)...
9a90: 09 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61  ..\.    : *(floa
9aa0: 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  t*)((LIST)->aptr
9ab0: 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f   - sizeof(__vawo
9ac0: 72 64 29 29 09 09 09 5c 0a 20 20 29 29 0a 23 64  rd))...\.  )).#d
9ad0: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75  efine va_arg_dou
9ae0: 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ble(LIST)  \.  (
9af0: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
9b00: 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  e(LIST)......\. 
9b10: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
9b20: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
9b30: 2c 09 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53  ,.....\.   ((LIS
9b40: 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c  T)->memfargptr <
9b50: 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38   &(LIST)->farg[8
9b60: 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 2a 28 28  ]....\.    ? *((
9b70: 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74  LIST)->memfargpt
9b80: 72 2b 2b 29 09 09 09 09 09 09 5c 0a 20 20 20 20  r++)......\.    
9b90: 3a 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49  : *(double*)((LI
9ba0: 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65  ST)->aptr - size
9bb0: 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c  of(double))....\
9bc0: 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69 66  .  )).#endif.#if
9bd0: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
9be0: 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69 72 73  4__)./* The firs
9bf0: 74 20 38 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  t 8 floating-poi
9c00: 6e 74 20 61 72 67 73 20 68 61 76 65 20 62 65 65  nt args have bee
9c10: 6e 20 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65  n stored elsewhe
9c20: 72 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  re. */.#define _
9c30: 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49  _va_arg_float(LI
9c40: 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29  ST)  \.  ((LIST)
9c50: 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26  ->memfargptr < &
9c60: 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38 5d 09  (LIST)->farg[8].
9c70: 09 09 09 5c 0a 20 20 20 3f 20 28 28 4c 49 53 54  ...\.   ? ((LIST
9c80: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 2c  )->memfargptr++,
9c90: 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 2a 28  ......\.      *(
9ca0: 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e  float*)((LIST)->
9cb0: 6d 65 6d 66 61 72 67 70 74 72 20 2d 20 31 29 09  memfargptr - 1).
9cc0: 09 09 09 09 5c 0a 20 20 20 20 20 29 09 09 09 09  ....\.     )....
9cd0: 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28 4c 49  .....\.   : ((LI
9ce0: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a  ST)->aptr += siz
9cf0: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2c 09 09  eof(__vaword),..
9d00: 09 09 09 5c 0a 20 20 20 20 20 20 2a 28 66 6c 6f  ...\.      *(flo
9d10: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
9d20: 72 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77  r - sizeof(__vaw
9d30: 6f 72 64 29 29 09 09 09 5c 0a 20 20 29 20 20 29  ord))...\.  )  )
9d40: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
9d50: 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a  double(LIST)  \.
9d60: 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61    ((LIST)->memfa
9d70: 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d  rgptr < &(LIST)-
9d80: 3e 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a 20 20  >farg[8]....\.  
9d90: 20 3f 20 2a 28 4c 49 53 54 29 2d 3e 6d 65 6d 66   ? *(LIST)->memf
9da0: 61 72 67 70 74 72 2b 2b 09 09 09 09 09 09 5c 0a  argptr++......\.
9db0: 20 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70     : ((LIST)->ap
9dc0: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 5f 5f 76  tr += sizeof(__v
9dd0: 61 77 6f 72 64 29 2c 09 09 09 09 09 5c 0a 20 20  aword),.....\.  
9de0: 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28      *(double*)((
9df0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69  LIST)->aptr - si
9e00: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 09  zeof(__vaword)).
9e10: 09 09 5c 0a 20 20 29 20 20 29 0a 23 65 6e 64 69  ..\.  )  ).#endi
9e20: 66 0a 23 69 66 6e 64 65 66 20 5f 5f 76 61 5f 61  f.#ifndef __va_a
9e30: 72 67 5f 66 6c 6f 61 74 0a 23 64 65 66 69 6e 65  rg_float.#define
9e40: 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28   __va_arg_float(
9e50: 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c  LIST).__va_arg(L
9e60: 49 53 54 2c 66 6c 6f 61 74 29 0a 23 65 6e 64 69  IST,float).#endi
9e70: 66 0a 23 69 66 6e 64 65 66 20 76 61 5f 61 72 67  f.#ifndef va_arg
9e80: 5f 64 6f 75 62 6c 65 0a 23 64 65 66 69 6e 65 20  _double.#define 
9e90: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49  va_arg_double(LI
9ea0: 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61  ST)  \.  (__va_a
9eb0: 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54  lign_double(LIST
9ec0: 29 20 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c  ) __va_arg(LIST,
9ed0: 64 6f 75 62 6c 65 29 29 0a 23 65 6e 64 69 66 0a  double)).#endif.
9ee0: 0a 2f 2a 20 50 6f 69 6e 74 65 72 20 61 72 67 75  ./* Pointer argu
9ef0: 6d 65 6e 74 73 2e 20 2a 2f 0a 23 64 65 66 69 6e  ments. */.#defin
9f00: 65 20 76 61 5f 61 72 67 5f 70 74 72 28 4c 49 53  e va_arg_ptr(LIS
9f10: 54 2c 54 59 50 45 29 09 5f 5f 76 61 5f 61 72 67  T,TYPE).__va_arg
9f20: 28 4c 49 53 54 2c 54 59 50 45 29 0a 0a 2f 2a 20  (LIST,TYPE)../* 
9f30: 53 74 72 75 63 74 75 72 65 20 61 72 67 75 6d 65  Structure argume
9f40: 6e 74 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  nts. */.#define 
9f50: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49  va_arg_struct(LI
9f60: 53 54 2c 54 59 50 45 29 20 20 5c 0a 20 20 2a 28  ST,TYPE)  \.  *(
9f70: 54 59 50 45 2a 29 5f 5f 76 61 5f 61 72 67 5f 73  TYPE*)__va_arg_s
9f80: 74 72 75 63 74 28 4c 49 53 54 2c 73 69 7a 65 6f  truct(LIST,sizeo
9f90: 66 28 54 59 50 45 29 2c 5f 5f 56 41 5f 61 6c 69  f(TYPE),__VA_ali
9fa0: 67 6e 6f 66 28 54 59 50 45 29 29 0a 2f 2a 20 5f  gnof(TYPE))./* _
9fb0: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 29 20  va_arg_struct() 
9fc0: 69 73 20 6c 69 6b 65 20 76 61 5f 61 72 67 5f 73  is like va_arg_s
9fd0: 74 72 75 63 74 28 29 2c 20 65 78 63 65 70 74 20  truct(), except 
9fe0: 74 68 61 74 20 79 6f 75 20 70 61 73 73 20 74 68  that you pass th
9ff0: 65 20 74 79 70 65 27 73 0a 20 2a 20 73 69 7a 65  e type's. * size
a000: 20 61 6e 64 20 61 6c 69 67 6e 6d 65 6e 74 20 69   and alignment i
a010: 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 74 79  nstead of the ty
a020: 70 65 20 61 6e 64 20 67 65 74 20 74 68 65 20 76  pe and get the v
a030: 61 6c 75 65 27 73 20 61 64 64 72 65 73 73 20 69  alue's address i
a040: 6e 73 74 65 61 64 0a 20 2a 20 6f 66 20 74 68 65  nstead. * of the
a050: 20 76 61 6c 75 65 20 69 74 73 65 6c 66 2e 0a 20   value itself.. 
a060: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 76 61 5f 61  */.#define _va_a
a070: 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  rg_struct(LIST,T
a080: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a090: 49 47 4e 29 20 20 5c 0a 20 20 28 76 6f 69 64 2a  IGN)  \.  (void*
a0a0: 29 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74  )__va_arg_struct
a0b0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
a0c0: 54 59 50 45 5f 41 4c 49 47 4e 29 0a 2f 2a 20 53  TYPE_ALIGN)./* S
a0d0: 74 72 75 63 74 75 72 65 20 61 72 67 75 6d 65 6e  tructure argumen
a0e0: 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 2a 2f 0a  t alignment. */.
a0f0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
a100: 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  86__) && defined
a110: 28 5f 4d 53 43 5f 56 45 52 29 0a 2f 2a 20 49 6e  (_MSC_VER)./* In
a120: 20 4d 53 56 43 2c 20 64 6f 75 62 6c 65 73 20 69   MSVC, doubles i
a130: 6e 73 69 64 65 20 73 74 72 75 63 74 75 72 65 73  nside structures
a140: 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e 74 20   have alignment 
a150: 38 2c 20 69 2e 65 2e 0a 20 2a 20 5f 5f 56 41 5f  8, i.e.. * __VA_
a160: 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29 20  alignof(double) 
a170: 3d 20 38 2c 20 62 75 74 20 64 6f 75 62 6c 65 73  = 8, but doubles
a180: 20 28 61 6e 64 20 61 6c 73 6f 20 73 74 72 75 63   (and also struc
a190: 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  tures containing
a1a0: 0a 20 2a 20 64 6f 75 62 6c 65 73 29 20 61 72 65  . * doubles) are
a1b0: 20 70 61 73 73 65 64 20 6f 6e 20 74 68 65 20 73   passed on the s
a1c0: 74 61 63 6b 20 77 69 74 68 20 61 6c 69 67 6e 6d  tack with alignm
a1d0: 65 6e 74 20 34 2e 20 4c 6f 6f 6b 73 20 72 65 61  ent 4. Looks rea
a1e0: 6c 6c 79 20 77 65 69 72 64 2e 0a 20 2a 2f 0a 23  lly weird.. */.#
a1f0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 72 75  define __va_stru
a200: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
a210: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28  E_ALIGN)  \.  ((
a220: 54 59 50 45 5f 41 4c 49 47 4e 29 20 3c 3d 20 34  TYPE_ALIGN) <= 4
a230: 20 3f 20 28 54 59 50 45 5f 41 4c 49 47 4e 29 20   ? (TYPE_ALIGN) 
a240: 3a 20 34 29 0a 23 65 6c 73 65 0a 23 64 65 66 69  : 4).#else.#defi
a250: 6e 65 20 5f 5f 76 61 5f 73 74 72 75 63 74 5f 61  ne __va_struct_a
a260: 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f 41 4c  lignment(TYPE_AL
a270: 49 47 4e 29 20 20 5c 0a 20 20 28 54 59 50 45 5f  IGN)  \.  (TYPE_
a280: 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a 23 64  ALIGN).#endif.#d
a290: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 6c 69 67 6e  efine __va_align
a2a0: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
a2b0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a2c0: 4e 29 20 20 5c 0a 20 20 28 4c 49 53 54 29 2d 3e  N)  \.  (LIST)->
a2d0: 61 70 74 72 20 3d 20 28 28 4c 49 53 54 29 2d 3e  aptr = ((LIST)->
a2e0: 61 70 74 72 20 2b 20 5f 5f 76 61 5f 73 74 72 75  aptr + __va_stru
a2f0: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
a300: 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20 2d 28  E_ALIGN)-1) & -(
a310: 6c 6f 6e 67 29 5f 5f 76 61 5f 73 74 72 75 63 74  long)__va_struct
a320: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
a330: 41 4c 49 47 4e 29 2c 0a 23 69 66 20 64 65 66 69  ALIGN),.#if defi
a340: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
a350: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
a360: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
a370: 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69  alpha__) || defi
a380: 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20  ned(__arm__) || 
a390: 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f  defined(__m88k__
a3a0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63  ) || defined(__c
a3b0: 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69  onvex__) || defi
a3c0: 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a  ned(__x86_64__).
a3d0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
a3e0: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
a3f0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a400: 4e 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c  N)  \.  (__va_al
a410: 69 67 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  ign_struct(LIST,
a420: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
a430: 4c 49 47 4e 29 09 09 09 09 5c 0a 20 20 20 5f 5f  LIGN)....\.   __
a440: 76 61 5f 61 72 67 5f 61 64 6a 75 73 74 65 64 28  va_arg_adjusted(
a450: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
a460: 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a  YPE_ALIGN)....\.
a470: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64    ).#endif.#if d
a480: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29  efined(__mips__)
a490: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 6d   && !defined(__m
a4a0: 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 73 6d 61  ipsn32__)./* sma
a4b0: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20  ll structures < 
a4c0: 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73  1 word are adjus
a4d0: 74 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ted depending on
a4e0: 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65   compiler */.#de
a4f0: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74  fine __va_arg_st
a500: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
a510: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
a520: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
a530: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
a540: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a550: 4e 29 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53  N)....\.   ((LIS
a560: 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41  T)->flags & __VA
a570: 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52  _SGICC_STRUCT_AR
a580: 47 53 09 09 09 09 5c 0a 20 20 20 20 3f 20 2f 2a  GS....\.    ? /*
a590: 20 53 47 49 20 4d 49 50 53 20 63 63 20 70 61 73   SGI MIPS cc pas
a5a0: 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63 74  ses small struct
a5b0: 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75 73 74  ures left-adjust
a5c0: 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62 69 67  ed, although big
a5d0: 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20 20 20  -endian! */\.   
a5e0: 20 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74     __va_arg_left
a5f0: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
a600: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
a610: 47 4e 29 09 09 09 5c 0a 20 20 20 20 3a 20 2f 2a  GN)...\.    : /*
a620: 20 53 47 49 20 4d 49 50 53 20 67 63 63 20 70 61   SGI MIPS gcc pa
a630: 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63  sses small struc
a640: 74 75 72 65 73 20 77 69 74 68 69 6e 20 74 68 65  tures within the
a650: 20 66 69 72 73 74 20 66 6f 75 72 20 77 6f 72 64   first four word
a660: 73 20 6c 65 66 74 2d 09 20 20 20 5c 0a 20 20 20  s left-.   \.   
a670: 20 20 20 20 2a 20 61 64 6a 75 73 74 65 64 2c 20      * adjusted, 
a680: 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  for compatibilit
a690: 79 20 77 69 74 68 20 63 63 2e 20 42 75 74 20 73  y with cc. But s
a6a0: 74 72 75 63 74 75 72 65 73 20 69 6e 20 6d 65 6d  tructures in mem
a6b0: 6f 72 79 20 61 72 65 20 70 61 73 73 65 64 20 20  ory are passed  
a6c0: 5c 0a 20 20 20 20 20 20 20 2a 20 72 69 67 68 74  \.       * right
a6d0: 2d 61 64 6a 75 73 74 65 64 21 21 20 53 65 65 20  -adjusted!! See 
a6e0: 67 63 63 2d 32 2e 36 2e 33 2f 63 6f 6e 66 69 67  gcc-2.6.3/config
a6f0: 2f 6d 69 70 73 2f 6d 69 70 73 2e 63 3a 66 75 6e  /mips/mips.c:fun
a700: 63 74 69 6f 6e 5f 61 72 67 28 29 2e 09 20 20 20  ction_arg()..   
a710: 5c 0a 20 20 20 20 20 20 20 2a 2f 09 09 09 09 09  \.       */.....
a720: 09 09 09 09 20 20 20 5c 0a 20 20 20 20 20 20 28  ....   \.      (
a730: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3c 20 28  (LIST)->aptr < (
a740: 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70 74 72  LIST)->memargptr
a750: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3f 20  .....\.       ? 
a760: 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a  __va_arg_leftadj
a770: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
a780: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
a790: 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 5f 5f 76  ..\.       : __v
a7a0: 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73  a_arg_rightadjus
a7b0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
a7c0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
a7d0: 5c 0a 20 20 29 29 20 20 29 0a 23 65 6e 64 69 66  \.  ))  ).#endif
a7e0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
a7f0: 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66  ipsn32__) || def
a800: 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29  ined(__mips64__)
a810: 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74  ./* small struct
a820: 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72  ures < 1 word ar
a830: 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e  e adjusted depen
a840: 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72  ding on compiler
a850: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
a860: 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54  _arg_struct(LIST
a870: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
a880: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 5f 5f 76  ALIGN)  \.  (__v
a890: 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28 4c  a_align_struct(L
a8a0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
a8b0: 50 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a 20  PE_ALIGN)....\. 
a8c0: 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73    ((LIST)->flags
a8d0: 20 26 20 5f 5f 56 41 5f 53 47 49 43 43 5f 53 54   & __VA_SGICC_ST
a8e0: 52 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a 20  RUCT_ARGS....\. 
a8f0: 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49 50 53     ? /* SGI MIPS
a900: 20 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c 6c   cc passes small
a910: 20 73 74 72 75 63 74 75 72 65 73 20 6c 65 66 74   structures left
a920: 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68 6f  -adjusted, altho
a930: 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21 20  ugh big-endian! 
a940: 2a 2f 5c 0a 20 20 20 20 20 20 5f 5f 76 61 5f 61  */\.      __va_a
a950: 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28  rg_leftadjusted(
a960: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
a970: 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c 0a 20  YPE_ALIGN)...\. 
a980: 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49 50 53     : /* SGI MIPS
a990: 20 67 63 63 20 70 61 73 73 65 73 20 73 6d 61 6c   gcc passes smal
a9a0: 6c 20 73 74 72 75 63 74 75 72 65 73 20 72 69 67  l structures rig
a9b0: 68 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a 2f 09  ht-adjusted. */.
a9c0: 5c 0a 20 20 20 20 20 20 5f 5f 76 61 5f 61 72 67  \.      __va_arg
a9d0: 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c  _rightadjusted(L
a9e0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
a9f0: 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c 0a 20 20  PE_ALIGN)...\.  
aa00: 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  )).#endif.#if de
aa10: 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f  fined(__rs6000__
aa20: 29 20 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41  ) && (defined(_A
aa30: 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  IX) || (defined(
aa40: 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66  __MACH__) && def
aa50: 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29  ined(__APPLE__))
aa60: 29 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63  )./* small struc
aa70: 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61  tures < 1 word a
aa80: 72 65 20 61 64 6a 75 73 74 65 64 20 64 65 70 65  re adjusted depe
aa90: 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65  nding on compile
aaa0: 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  r */.#define __v
aab0: 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53  a_arg_struct(LIS
aac0: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
aad0: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 5f 5f  _ALIGN)  \.  (__
aae0: 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74 28  va_align_struct(
aaf0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
ab00: 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a  YPE_ALIGN)....\.
ab10: 20 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67     ((LIST)->flag
ab20: 73 20 26 20 5f 5f 56 41 5f 41 49 58 43 43 5f 53  s & __VA_AIXCC_S
ab30: 54 52 55 43 54 5f 41 52 47 53 09 09 09 09 5c 0a  TRUCT_ARGS....\.
ab40: 20 20 20 20 3f 20 2f 2a 20 41 49 58 20 63 63 20      ? /* AIX cc 
ab50: 61 6e 64 20 78 6c 63 20 70 61 73 73 20 73 6d 61  and xlc pass sma
ab60: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 6c 65  ll structures le
ab70: 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74  ft-adjusted, alt
ab80: 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e  hough big-endian
ab90: 21 20 2a 2f 5c 0a 20 20 20 20 20 20 5f 5f 76 61  ! */\.      __va
aba0: 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65  _arg_leftadjuste
abb0: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
abc0: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c  ,TYPE_ALIGN)...\
abd0: 0a 20 20 20 20 3a 20 2f 2a 20 67 63 63 20 70 61  .    : /* gcc pa
abe0: 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75 63  sses small struc
abf0: 74 75 72 65 73 20 72 69 67 68 74 2d 61 64 6a 75  tures right-adju
ac00: 73 74 65 64 2e 20 2a 2f 09 09 09 5c 0a 20 20 20  sted. */...\.   
ac10: 20 20 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68     __va_arg_righ
ac20: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
ac30: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
ac40: 49 47 4e 29 09 09 09 5c 0a 20 20 29 29 0a 23 65  IGN)...\.  )).#e
ac50: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
ac60: 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20  (__rs6000__) && 
ac70: 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20  !(defined(_AIX) 
ac80: 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41  || (defined(__MA
ac90: 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  CH__) && defined
aca0: 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a  (__APPLE__)))./*
acb0: 20 53 74 72 75 63 74 75 72 65 73 20 61 72 65 20   Structures are 
acc0: 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e 74 65  passed as pointe
acd0: 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64  rs to caller-mad
ace0: 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73 2e 20  e local copies. 
acf0: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
ad00: 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c  arg_struct(LIST,
ad10: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
ad20: 4c 49 47 4e 29 20 20 5c 0a 20 20 76 61 5f 61 72  LIGN)  \.  va_ar
ad30: 67 5f 70 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a  g_ptr(LIST,void*
ad40: 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  ).#endif.#if def
ad50: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
ad60: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
ad70: 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 53 74 72 75  arc64__)./* Stru
ad80: 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65  ctures are passe
ad90: 64 20 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f  d as pointers to
ada0: 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63   caller-made loc
adb0: 61 6c 20 63 6f 70 69 65 73 2e 20 2a 2f 0a 23 64  al copies. */.#d
adc0: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73  efine __va_arg_s
add0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f  truct(LIST,TYPE_
ade0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
adf0: 20 20 5c 0a 20 20 76 61 5f 61 72 67 5f 70 74 72    \.  va_arg_ptr
ae00: 28 4c 49 53 54 2c 76 6f 69 64 2a 29 0a 23 65 6e  (LIST,void*).#en
ae10: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
ae20: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20  __sparc64__)./* 
ae30: 53 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73  Small structures
ae40: 20 61 72 65 20 70 61 73 73 65 64 20 6c 65 66 74   are passed left
ae50: 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74 68 6f  -adjusted, altho
ae60: 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e 21 20  ugh big-endian! 
ae70: 2a 2f 0a 2f 2a 20 42 69 67 20 73 74 72 75 63 74  */./* Big struct
ae80: 75 72 65 73 20 61 72 65 20 70 61 73 73 65 64 20  ures are passed 
ae90: 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63  as pointers to c
aea0: 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c  aller-made local
aeb0: 20 63 6f 70 69 65 73 2e 20 2a 2f 0a 23 64 65 66   copies. */.#def
aec0: 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72  ine __va_arg_str
aed0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  uct(LIST,TYPE_SI
aee0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20  ZE,TYPE_ALIGN)  
aef0: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  \.  ((TYPE_SIZE)
af00: 20 3c 3d 20 31 36 09 09 09 09 09 09 09 5c 0a 20   <= 16.......\. 
af10: 20 20 3f 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f    ? (__va_align_
af20: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45  struct(LIST,TYPE
af30: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
af40: 29 09 09 09 5c 0a 20 20 20 20 20 20 5f 5f 76 61  )...\.      __va
af50: 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65  _arg_leftadjuste
af60: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
af70: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 29 09 09 09  ,TYPE_ALIGN))...
af80: 5c 0a 20 20 20 3a 20 76 61 5f 61 72 67 5f 70 74  \.   : va_arg_pt
af90: 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29 09 09 09  r(LIST,void*)...
afa0: 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a  ...\.  ).#endif.
afb0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73 33  #if defined(__s3
afc0: 39 30 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75  90__)./* Structu
afd0: 72 65 73 20 3c 3d 20 38 20 62 79 74 65 73 20 61  res <= 8 bytes a
afe0: 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d 62  re passed as emb
aff0: 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e 20  edded copies on 
b000: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20  the arg stack.. 
b010: 2a 20 42 69 67 20 73 74 72 75 63 74 75 72 65 73  * Big structures
b020: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 70   are passed as p
b030: 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65  ointers to calle
b040: 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70  r-made local cop
b050: 69 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ies.. */.#define
b060: 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74   __va_arg_struct
b070: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
b080: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
b090: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d   ((TYPE_SIZE) !=
b0a0: 20 31 20 26 26 20 28 54 59 50 45 5f 53 49 5a 45   1 && (TYPE_SIZE
b0b0: 29 20 21 3d 20 32 20 26 26 20 28 54 59 50 45 5f  ) != 2 && (TYPE_
b0c0: 53 49 5a 45 29 20 21 3d 20 34 20 26 26 20 28 54  SIZE) != 4 && (T
b0d0: 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 38 20 5c  YPE_SIZE) != 8 \
b0e0: 0a 20 20 20 3f 20 76 61 5f 61 72 67 5f 70 74 72  .   ? va_arg_ptr
b0f0: 28 4c 49 53 54 2c 76 6f 69 64 2a 29 09 09 09 09  (LIST,void*)....
b100: 09 09 5c 0a 20 20 20 3a 20 28 76 6f 69 64 2a 29  ..\.   : (void*)
b110: 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64  __va_arg_rightad
b120: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
b130: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
b140: 29 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a  )..\.  ).#endif.
b150: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70  #if defined(__hp
b160: 70 61 5f 5f 29 0a 2f 2a 20 53 74 72 75 63 74 75  pa__)./* Structu
b170: 72 65 73 20 3c 3d 20 38 20 62 79 74 65 73 20 61  res <= 8 bytes a
b180: 72 65 20 70 61 73 73 65 64 20 61 73 20 65 6d 62  re passed as emb
b190: 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f 6e 20  edded copies on 
b1a0: 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e 0a 20  the arg stack.. 
b1b0: 2a 20 42 69 67 20 73 74 72 75 63 74 75 72 65 73  * Big structures
b1c0: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 70   are passed as p
b1d0: 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c 6c 65  ointers to calle
b1e0: 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70  r-made local cop
b1f0: 69 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ies.. */.#define
b200: 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74   __va_arg_struct
b210: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
b220: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
b230: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20   ((TYPE_SIZE) > 
b240: 38 09 09 09 09 09 09 09 5c 0a 20 20 20 3f 20 76  8.......\.   ? v
b250: 61 5f 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 76  a_arg_ptr(LIST,v
b260: 6f 69 64 2a 29 09 09 09 09 09 09 5c 0a 20 20 20  oid*)......\.   
b270: 3a 20 2f 2a 20 46 49 58 4d 45 3a 20 67 63 63 2d  : /* FIXME: gcc-
b280: 32 2e 36 2e 33 20 70 61 73 73 65 73 20 73 74 72  2.6.3 passes str
b290: 75 63 74 75 72 65 73 20 3c 3d 20 34 20 62 79 74  uctures <= 4 byt
b2a0: 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20 6c 65 66  es in memory lef
b2b0: 74 2d 61 64 6a 75 73 74 65 64 21 20 3f 3f 20 2a  t-adjusted! ?? *
b2c0: 2f 5c 0a 20 20 20 20 20 28 76 6f 69 64 2a 29 5f  /\.     (void*)_
b2d0: 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a  _va_arg_rightadj
b2e0: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
b2f0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
b300: 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23  ..\.  ).#endif.#
b310: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  if defined(__ia6
b320: 34 5f 5f 29 0a 2f 2a 20 54 79 70 65 73 20 6c 61  4__)./* Types la
b330: 72 67 65 72 20 74 68 61 6e 20 61 20 77 6f 72 64  rger than a word
b340: 20 68 61 76 65 20 32 2d 77 6f 72 64 20 61 6c 69   have 2-word ali
b350: 67 6e 6d 65 6e 74 2e 20 2a 2f 0a 23 64 65 66 69  gnment. */.#defi
b360: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75  ne __va_arg_stru
b370: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
b380: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
b390: 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 73  .  (__va_align_s
b3a0: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f  truct(LIST,TYPE_
b3b0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
b3c0: 09 09 09 09 5c 0a 20 20 20 28 28 54 59 50 45 5f  ....\.   ((TYPE_
b3d0: 53 49 5a 45 29 20 3e 20 73 69 7a 65 6f 66 28 5f  SIZE) > sizeof(_
b3e0: 5f 76 61 77 6f 72 64 29 20 26 26 20 28 28 28 5f  _vaword) && (((_
b3f0: 5f 76 61 77 6f 72 64 2a 29 28 4c 49 53 54 29 2d  _vaword*)(LIST)-
b400: 3e 61 70 74 72 20 2d 20 28 4c 49 53 54 29 2d 3e  >aptr - (LIST)->
b410: 73 61 70 74 72 29 20 26 20 31 29 20 3f 20 28 4c  saptr) & 1) ? (L
b420: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
b430: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3a  zeof(__vaword) :
b440: 20 30 29 2c 20 5c 0a 20 20 20 5f 5f 76 61 5f 61   0), \.   __va_a
b450: 72 67 5f 61 64 6a 75 73 74 65 64 28 4c 49 53 54  rg_adjusted(LIST
b460: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
b470: 41 4c 49 47 4e 29 09 09 09 09 5c 0a 20 20 29 0a  ALIGN)....\.  ).
b480: 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a 20 44  #endif.../*. * D
b490: 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 74 68 65  efinition of the
b4a0: 20 76 61 5f 72 65 74 75 72 6e 5f 78 78 78 20 6d   va_return_xxx m
b4b0: 61 63 72 6f 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  acros.. */.#defi
b4c0: 6e 65 20 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c  ne __va_return(L
b4d0: 49 53 54 2c 52 45 54 54 59 50 45 29 20 20 5c 0a  IST,RETTYPE)  \.
b4e0: 20 20 28 28 28 4c 49 53 54 29 2d 3e 72 74 79 70    (((LIST)->rtyp
b4f0: 65 20 3d 3d 20 28 52 45 54 54 59 50 45 29 29 20  e == (RETTYPE)) 
b500: 7c 7c 20 5f 5f 76 61 5f 65 72 72 6f 72 31 28 28  || __va_error1((
b510: 4c 49 53 54 29 2d 3e 72 74 79 70 65 2c 52 45 54  LIST)->rtype,RET
b520: 54 59 50 45 29 29 0a 23 64 65 66 69 6e 65 20 76  TYPE)).#define v
b530: 61 5f 72 65 74 75 72 6e 5f 76 6f 69 64 28 4c 49  a_return_void(LI
b540: 53 54 29 20 20 5c 0a 20 20 5f 5f 76 61 5f 72 65  ST)  \.  __va_re
b550: 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 76 6f  turn(LIST,__VAvo
b560: 69 64 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72  id).#define va_r
b570: 65 74 75 72 6e 5f 63 68 61 72 28 4c 49 53 54 2c  eturn_char(LIST,
b580: 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  VAL)  \.  (__va_
b590: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
b5a0: 63 68 61 72 29 2c 20 28 4c 49 53 54 29 2d 3e 74  char), (LIST)->t
b5b0: 6d 70 2e 5f 63 68 61 72 20 3d 20 28 56 41 4c 29  mp._char = (VAL)
b5c0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
b5d0: 75 72 6e 5f 73 63 68 61 72 28 4c 49 53 54 2c 56  urn_schar(LIST,V
b5e0: 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72  AL)  \.  (__va_r
b5f0: 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 73  eturn(LIST,__VAs
b600: 63 68 61 72 29 2c 20 28 4c 49 53 54 29 2d 3e 74  char), (LIST)->t
b610: 6d 70 2e 5f 73 63 68 61 72 20 3d 20 28 56 41 4c  mp._schar = (VAL
b620: 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65  )).#define va_re
b630: 74 75 72 6e 5f 75 63 68 61 72 28 4c 49 53 54 2c  turn_uchar(LIST,
b640: 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  VAL)  \.  (__va_
b650: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
b660: 75 63 68 61 72 29 2c 20 28 4c 49 53 54 29 2d 3e  uchar), (LIST)->
b670: 74 6d 70 2e 5f 75 63 68 61 72 20 3d 20 28 56 41  tmp._uchar = (VA
b680: 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72  L)).#define va_r
b690: 65 74 75 72 6e 5f 73 68 6f 72 74 28 4c 49 53 54  eturn_short(LIST
b6a0: 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61  ,VAL)  \.  (__va
b6b0: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56  _return(LIST,__V
b6c0: 41 73 68 6f 72 74 29 2c 20 28 4c 49 53 54 29 2d  Ashort), (LIST)-
b6d0: 3e 74 6d 70 2e 5f 73 68 6f 72 74 20 3d 20 28 56  >tmp._short = (V
b6e0: 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  AL)).#define va_
b6f0: 72 65 74 75 72 6e 5f 75 73 68 6f 72 74 28 4c 49  return_ushort(LI
b700: 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  ST,VAL)  \.  (__
b710: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
b720: 5f 56 41 75 73 68 6f 72 74 29 2c 20 28 4c 49 53  _VAushort), (LIS
b730: 54 29 2d 3e 74 6d 70 2e 5f 75 73 68 6f 72 74 20  T)->tmp._ushort 
b740: 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65  = (VAL)).#define
b750: 20 76 61 5f 72 65 74 75 72 6e 5f 69 6e 74 28 4c   va_return_int(L
b760: 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f  IST,VAL)  \.  (_
b770: 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c  _va_return(LIST,
b780: 5f 5f 56 41 69 6e 74 29 2c 20 28 4c 49 53 54 29  __VAint), (LIST)
b790: 2d 3e 74 6d 70 2e 5f 69 6e 74 20 3d 20 28 56 41  ->tmp._int = (VA
b7a0: 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72  L)).#define va_r
b7b0: 65 74 75 72 6e 5f 75 69 6e 74 28 4c 49 53 54 2c  eturn_uint(LIST,
b7c0: 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  VAL)  \.  (__va_
b7d0: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
b7e0: 75 69 6e 74 29 2c 20 28 4c 49 53 54 29 2d 3e 74  uint), (LIST)->t
b7f0: 6d 70 2e 5f 75 69 6e 74 20 3d 20 28 56 41 4c 29  mp._uint = (VAL)
b800: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
b810: 75 72 6e 5f 6c 6f 6e 67 28 4c 49 53 54 2c 56 41  urn_long(LIST,VA
b820: 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65  L)  \.  (__va_re
b830: 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 6c 6f  turn(LIST,__VAlo
b840: 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  ng), (LIST)->tmp
b850: 2e 5f 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29 0a  ._long = (VAL)).
b860: 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74 75 72  #define va_retur
b870: 6e 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c  n_ulong(LIST,VAL
b880: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74  )  \.  (__va_ret
b890: 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f  urn(LIST,__VAulo
b8a0: 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  ng), (LIST)->tmp
b8b0: 2e 5f 75 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29  ._ulong = (VAL))
b8c0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
b8d0: 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69  ips64__) || defi
b8e0: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
b8f0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c   || defined(__al
b900: 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  pha__) || define
b910: 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20 64  d(__ia64__) || d
b920: 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f  efined(__x86_64_
b930: 5f 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65  _).#define va_re
b940: 74 75 72 6e 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  turn_longlong(LI
b950: 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  ST,VAL)  \.  (__
b960: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
b970: 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 29 2c 20 28 4c  _VAlonglong), (L
b980: 49 53 54 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e 67 20  IST)->tmp._long 
b990: 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65  = (VAL)).#define
b9a0: 20 76 61 5f 72 65 74 75 72 6e 5f 75 6c 6f 6e 67   va_return_ulong
b9b0: 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20 20  long(LIST,VAL)  
b9c0: 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e  \.  (__va_return
b9d0: 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67 6c  (LIST,__VAulongl
b9e0: 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d  ong), (LIST)->tm
b9f0: 70 2e 5f 75 6c 6f 6e 67 20 3d 20 28 56 41 4c 29  p._ulong = (VAL)
ba00: 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20  ).#else.#define 
ba10: 76 61 5f 72 65 74 75 72 6e 5f 6c 6f 6e 67 6c 6f  va_return_longlo
ba20: 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a  ng(LIST,VAL)  \.
ba30: 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c    (__va_return(L
ba40: 49 53 54 2c 5f 5f 56 41 6c 6f 6e 67 6c 6f 6e 67  IST,__VAlonglong
ba50: 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f  ), (LIST)->tmp._
ba60: 6c 6f 6e 67 6c 6f 6e 67 20 3d 20 28 56 41 4c 29  longlong = (VAL)
ba70: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
ba80: 75 72 6e 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49  urn_ulonglong(LI
ba90: 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  ST,VAL)  \.  (__
baa0: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
bab0: 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67 29 2c 20 28  _VAulonglong), (
bac0: 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 6c 6f 6e  LIST)->tmp._ulon
bad0: 67 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29 0a 23  glong = (VAL)).#
bae0: 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 76 61  endif.#define va
baf0: 5f 72 65 74 75 72 6e 5f 66 6c 6f 61 74 28 4c 49  _return_float(LI
bb00: 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  ST,VAL)  \.  (__
bb10: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
bb20: 5f 56 41 66 6c 6f 61 74 29 2c 20 28 4c 49 53 54  _VAfloat), (LIST
bb30: 29 2d 3e 74 6d 70 2e 5f 66 6c 6f 61 74 20 3d 20  )->tmp._float = 
bb40: 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76  (VAL)).#define v
bb50: 61 5f 72 65 74 75 72 6e 5f 64 6f 75 62 6c 65 28  a_return_double(
bb60: 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28  LIST,VAL)  \.  (
bb70: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
bb80: 2c 5f 5f 56 41 64 6f 75 62 6c 65 29 2c 20 28 4c  ,__VAdouble), (L
bb90: 49 53 54 29 2d 3e 74 6d 70 2e 5f 64 6f 75 62 6c  IST)->tmp._doubl
bba0: 65 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69  e = (VAL)).#defi
bbb0: 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 70 74 72  ne va_return_ptr
bbc0: 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c 29 20  (LIST,TYPE,VAL) 
bbd0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72   \.  (__va_retur
bbe0: 6e 28 4c 49 53 54 2c 5f 5f 56 41 76 6f 69 64 70  n(LIST,__VAvoidp
bbf0: 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f  ), (LIST)->tmp._
bc00: 70 74 72 20 3d 20 28 76 6f 69 64 2a 29 28 54 59  ptr = (void*)(TY
bc10: 50 45 29 28 56 41 4c 29 29 0a 23 64 65 66 69 6e  PE)(VAL)).#defin
bc20: 65 20 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75  e va_return_stru
bc30: 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  ct(LIST,TYPE,VAL
bc40: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74  )  \.  (__va_ret
bc50: 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 73 74 72  urn(LIST,__VAstr
bc60: 75 63 74 29 2c 20 2a 28 54 59 50 45 2a 29 28 28  uct), *(TYPE*)((
bc70: 4c 49 53 54 29 2d 3e 72 61 64 64 72 29 20 3d 20  LIST)->raddr) = 
bc80: 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 5f  (VAL)).#define _
bc90: 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 74  va_return_struct
bca0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
bcb0: 54 59 50 45 5f 41 4c 49 47 4e 2c 56 41 4c 5f 41  TYPE_ALIGN,VAL_A
bcc0: 44 44 52 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  DDR)  \.  (__va_
bcd0: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
bce0: 73 74 72 75 63 74 29 2c 09 09 09 09 09 5c 0a 20  struct),.....\. 
bcf0: 20 20 5f 5f 73 74 72 75 63 74 63 70 79 28 28 76    __structcpy((v
bd00: 6f 69 64 2a 29 28 28 4c 49 53 54 29 2d 3e 72 61  oid*)((LIST)->ra
bd10: 64 64 72 29 2c 56 41 4c 5f 41 44 44 52 2c 54 59  ddr),VAL_ADDR,TY
bd20: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
bd30: 47 4e 29 09 5c 0a 20 20 29 0a 0a 0a 2f 2a 20 44  GN).\.  ).../* D
bd40: 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72  etermine whether
bd50: 20 61 20 73 74 72 75 63 74 20 74 79 70 65 20 69   a struct type i
bd60: 73 20 77 6f 72 64 2d 73 70 6c 69 74 74 61 62 6c  s word-splittabl
bd70: 65 2c 20 69 2e 65 2e 20 77 68 65 74 68 65 72 20  e, i.e. whether 
bd80: 65 61 63 68 20 6f 66 0a 20 2a 20 69 74 73 20 63  each of. * its c
bd90: 6f 6d 70 6f 6e 65 6e 74 73 20 66 69 74 20 69 6e  omponents fit in
bda0: 74 6f 20 61 20 72 65 67 69 73 74 65 72 2e 0a 20  to a register.. 
bdb0: 2a 20 54 68 65 20 65 6e 74 69 72 65 20 63 6f 6d  * The entire com
bdc0: 70 75 74 61 74 69 6f 6e 20 69 73 20 64 6f 6e 65  putation is done
bdd0: 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65   at compile time
bde0: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61  .. */.#define va
bdf0: 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65  _word_splittable
be00: 5f 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20 20 28  _1(slot1)  \.  (
be10: 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f  __va_offset1(slo
be20: 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77  t1)/sizeof(__vaw
be30: 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66  ord) == (__va_of
be40: 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a  fset1(slot1)+siz
be50: 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69  eof(slot1)-1)/si
be60: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 0a  zeof(__vaword)).
be70: 23 64 65 66 69 6e 65 20 76 61 5f 77 6f 72 64 5f  #define va_word_
be80: 73 70 6c 69 74 74 61 62 6c 65 5f 32 28 73 6c 6f  splittable_2(slo
be90: 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20 20 28  t1,slot2)  \.  (
bea0: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73 6c  (__va_offset1(sl
beb0: 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61  ot1)/sizeof(__va
bec0: 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f  word) == (__va_o
bed0: 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73 69  ffset1(slot1)+si
bee0: 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73  zeof(slot1)-1)/s
bef0: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29  izeof(__vaword))
bf00: 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61 5f 6f   \.   && (__va_o
bf10: 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f  ffset2(slot1,slo
bf20: 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77  t2)/sizeof(__vaw
bf30: 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66  ord) == (__va_of
bf40: 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset2(slot1,slot
bf50: 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29  2)+sizeof(slot2)
bf60: 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77  -1)/sizeof(__vaw
bf70: 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64 65 66  ord)) \.  ).#def
bf80: 69 6e 65 20 76 61 5f 77 6f 72 64 5f 73 70 6c 69  ine va_word_spli
bf90: 74 74 61 62 6c 65 5f 33 28 73 6c 6f 74 31 2c 73  ttable_3(slot1,s
bfa0: 6c 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c 0a 20  lot2,slot3)  \. 
bfb0: 20 28 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28   ((__va_offset1(
bfc0: 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  slot1)/sizeof(__
bfd0: 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61  vaword) == (__va
bfe0: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b  _offset1(slot1)+
bff0: 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29  sizeof(slot1)-1)
c000: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
c010: 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61  )) \.   && (__va
c020: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73  _offset2(slot1,s
c030: 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  lot2)/sizeof(__v
c040: 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f  aword) == (__va_
c050: 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c  offset2(slot1,sl
c060: 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot2)+sizeof(slot
c070: 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  2)-1)/sizeof(__v
c080: 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26 26 20  aword)) \.   && 
c090: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73 6c  (__va_offset3(sl
c0a0: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29  ot1,slot2,slot3)
c0b0: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
c0c0: 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65  ) == (__va_offse
c0d0: 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73  t3(slot1,slot2,s
c0e0: 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73 6c 6f  lot3)+sizeof(slo
c0f0: 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  t3)-1)/sizeof(__
c100: 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23  vaword)) \.  ).#
c110: 64 65 66 69 6e 65 20 76 61 5f 77 6f 72 64 5f 73  define va_word_s
c120: 70 6c 69 74 74 61 62 6c 65 5f 34 28 73 6c 6f 74  plittable_4(slot
c130: 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c  1,slot2,slot3,sl
c140: 6f 74 34 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61  ot4)  \.  ((__va
c150: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2f  _offset1(slot1)/
c160: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
c170: 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74   == (__va_offset
c180: 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28  1(slot1)+sizeof(
c190: 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65 6f 66  slot1)-1)/sizeof
c1a0: 28 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20  (__vaword)) \.  
c1b0: 20 26 26 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74   && (__va_offset
c1c0: 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2f 73  2(slot1,slot2)/s
c1d0: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20  izeof(__vaword) 
c1e0: 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 32  == (__va_offset2
c1f0: 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b 73 69  (slot1,slot2)+si
c200: 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29 2f 73  zeof(slot2)-1)/s
c210: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29  izeof(__vaword))
c220: 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61 5f 6f   \.   && (__va_o
c230: 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f  ffset3(slot1,slo
c240: 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65 6f 66  t2,slot3)/sizeof
c250: 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f  (__vaword) == (_
c260: 5f 76 61 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74  _va_offset3(slot
c270: 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 2b 73  1,slot2,slot3)+s
c280: 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31 29 2f  izeof(slot3)-1)/
c290: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
c2a0: 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61 5f  ) \.   && (__va_
c2b0: 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c 73 6c  offset4(slot1,sl
c2c0: 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29  ot2,slot3,slot4)
c2d0: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
c2e0: 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65  ) == (__va_offse
c2f0: 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73  t4(slot1,slot2,s
c300: 6c 6f 74 33 2c 73 6c 6f 74 34 29 2b 73 69 7a 65  lot3,slot4)+size
c310: 6f 66 28 73 6c 6f 74 34 29 2d 31 29 2f 73 69 7a  of(slot4)-1)/siz
c320: 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 20 5c  eof(__vaword)) \
c330: 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76  .  ).#define __v
c340: 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29  a_offset1(slot1)
c350: 20 20 5c 0a 20 20 30 0a 23 64 65 66 69 6e 65 20    \.  0.#define 
c360: 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f  __va_offset2(slo
c370: 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20 20 28  t1,slot2)  \.  (
c380: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73 6c  (__va_offset1(sl
c390: 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot1)+sizeof(slot
c3a0: 31 29 2b 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28  1)+__VA_alignof(
c3b0: 73 6c 6f 74 32 29 2d 31 29 20 26 20 2d 28 6c 6f  slot2)-1) & -(lo
c3c0: 6e 67 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28  ng)__VA_alignof(
c3d0: 73 6c 6f 74 32 29 29 0a 23 64 65 66 69 6e 65 20  slot2)).#define 
c3e0: 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73 6c 6f  __va_offset3(slo
c3f0: 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 20  t1,slot2,slot3) 
c400: 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66 66 73   \.  ((__va_offs
c410: 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29  et2(slot1,slot2)
c420: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2b 5f  +sizeof(slot2)+_
c430: 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _VA_alignof(slot
c440: 33 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f  3)-1) & -(long)_
c450: 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c 6f 74  _VA_alignof(slot
c460: 33 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61  3)).#define __va
c470: 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c 73  _offset4(slot1,s
c480: 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34  lot2,slot3,slot4
c490: 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66  )  \.  ((__va_of
c4a0: 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset3(slot1,slot
c4b0: 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28  2,slot3)+sizeof(
c4c0: 73 6c 6f 74 33 29 2b 5f 5f 56 41 5f 61 6c 69 67  slot3)+__VA_alig
c4d0: 6e 6f 66 28 73 6c 6f 74 34 29 2d 31 29 20 26 20  nof(slot4)-1) & 
c4e0: 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f 61 6c 69 67  -(long)__VA_alig
c4f0: 6e 6f 66 28 73 6c 6f 74 34 29 29 0a 0a 0a 2f 2a  nof(slot4)).../*
c500: 0a 20 2a 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75  . * Miscellaneou
c510: 73 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 0a  s declarations..
c520: 20 2a 2f 0a 23 69 66 64 65 66 20 5f 5f 63 70 6c   */.#ifdef __cpl
c530: 75 73 70 6c 75 73 0a 65 78 74 65 72 6e 20 22 43  usplus.extern "C
c540: 22 20 76 6f 69 64 20 28 2a 76 61 63 61 6c 6c 29  " void (*vacall)
c550: 20 28 29 3b 20 2f 2a 20 74 68 65 20 72 65 74 75   (); /* the retu
c560: 72 6e 20 74 79 70 65 20 69 73 20 76 61 72 69 61  rn type is varia
c570: 62 6c 65 2c 20 6e 6f 74 20 76 6f 69 64 21 20 2a  ble, not void! *
c580: 2f 0a 23 65 6c 73 65 0a 65 78 74 65 72 6e 20 76  /.#else.extern v
c590: 6f 69 64 20 28 2a 76 61 63 61 6c 6c 29 20 28 29  oid (*vacall) ()
c5a0: 3b 20 2f 2a 20 74 68 65 20 72 65 74 75 72 6e 20  ; /* the return 
c5b0: 74 79 70 65 20 69 73 20 76 61 72 69 61 62 6c 65  type is variable
c5c0: 2c 20 6e 6f 74 20 76 6f 69 64 21 20 2a 2f 0a 23  , not void! */.#
c5d0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
c5e0: 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64  d(__STDC__) || d
c5f0: 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29  efined(__GNUC__)
c600: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 70   || defined(__cp
c610: 6c 75 73 70 6c 75 73 29 0a 65 78 74 65 72 6e 20  lusplus).extern 
c620: 76 6f 69 64 20 28 2a 20 76 61 63 61 6c 6c 5f 66  void (* vacall_f
c630: 75 6e 63 74 69 6f 6e 29 20 28 76 61 5f 61 6c 69  unction) (va_ali
c640: 73 74 29 3b 0a 65 78 74 65 72 6e 20 69 6e 74 20  st);.extern int 
c650: 5f 5f 76 61 5f 65 72 72 6f 72 31 20 28 65 6e 75  __va_error1 (enu
c660: 6d 20 5f 5f 56 41 74 79 70 65 2c 20 65 6e 75 6d  m __VAtype, enum
c670: 20 5f 5f 56 41 74 79 70 65 29 3b 0a 65 78 74 65   __VAtype);.exte
c680: 72 6e 20 69 6e 74 20 5f 5f 76 61 5f 65 72 72 6f  rn int __va_erro
c690: 72 32 20 28 75 6e 73 69 67 6e 65 64 20 69 6e 74  r2 (unsigned int
c6a0: 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f  );.extern void _
c6b0: 5f 73 74 72 75 63 74 63 70 79 20 28 76 6f 69 64  _structcpy (void
c6c0: 2a 20 64 65 73 74 2c 20 76 6f 69 64 2a 20 73 72  * dest, void* sr
c6d0: 63 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  c, unsigned long
c6e0: 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20   size, unsigned 
c6f0: 6c 6f 6e 67 20 61 6c 69 67 6e 6d 65 6e 74 29 3b  long alignment);
c700: 0a 23 65 6c 73 65 0a 65 78 74 65 72 6e 20 76 6f  .#else.extern vo
c710: 69 64 20 28 2a 20 76 61 63 61 6c 6c 5f 66 75 6e  id (* vacall_fun
c720: 63 74 69 6f 6e 29 20 28 29 3b 0a 65 78 74 65 72  ction) ();.exter
c730: 6e 20 69 6e 74 20 5f 5f 76 61 5f 65 72 72 6f 72  n int __va_error
c740: 31 20 28 29 3b 0a 65 78 74 65 72 6e 20 69 6e 74  1 ();.extern int
c750: 20 5f 5f 76 61 5f 65 72 72 6f 72 32 20 28 29 3b   __va_error2 ();
c760: 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f 5f 73  .extern void __s
c770: 74 72 75 63 74 63 70 79 20 28 29 3b 0a 23 65 6e  tructcpy ();.#en
c780: 64 69 66 0a 74 79 70 65 64 65 66 20 75 6e 69 6f  dif.typedef unio
c790: 6e 20 7b 20 5f 5f 76 61 77 6f 72 64 20 72 6f 6f  n { __vaword roo
c7a0: 6d 5b 5f 5f 56 41 5f 41 4c 49 53 54 5f 57 4f 52  m[__VA_ALIST_WOR
c7b0: 44 53 5d 3b 20 64 6f 75 62 6c 65 20 61 6c 69 67  DS]; double alig
c7c0: 6e 3b 20 7d 20 5f 5f 76 61 5f 73 74 72 75 63 74  n; } __va_struct
c7d0: 5f 62 75 66 66 65 72 5f 74 3b 0a 65 78 74 65 72  _buffer_t;.exter
c7e0: 6e 20 5f 5f 76 61 5f 73 74 72 75 63 74 5f 62 75  n __va_struct_bu
c7f0: 66 66 65 72 5f 74 20 5f 5f 76 61 5f 73 74 72 75  ffer_t __va_stru
c800: 63 74 5f 62 75 66 66 65 72 3b 0a 0a 0a 23 65 6e  ct_buffer;...#en
c810: 64 69 66 20 2f 2a 20 5f 56 41 43 41 4c 4c 5f 48  dif /* _VACALL_H
c820: 20 2a 2f 0a                                       */.