Artifact 0a50a36af340ea32fb0f60ad268a8b828d07bd97:


0000: 23 69 66 6e 64 65 66 20 5f 56 41 43 41 4c 4c 5f  #ifndef _VACALL_
0010: 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  H               
0020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0030: 2f 2a 2d 2a 2d 20 43 20 2d 2a 2d 2a 2f 0a 23 64  /*-*- C -*-*/.#d
0040: 65 66 69 6e 65 20 5f 56 41 43 41 4c 4c 5f 48 0a  efine _VACALL_H.
0050: 0a 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74  ./*. * Copyright
0060: 20 31 39 39 35 2d 32 30 30 34 20 42 72 75 6e 6f   1995-2004 Bruno
0070: 20 48 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f 40   Haible, <bruno@
0080: 63 6c 69 73 70 2e 6f 72 67 3e 0a 20 2a 0a 20 2a  clisp.org>. *. *
0090: 20 54 68 69 73 20 69 73 20 66 72 65 65 20 73 6f   This is free so
00a0: 66 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74  ftware distribut
00b0: 65 64 20 75 6e 64 65 72 20 74 68 65 20 47 4e 55  ed under the GNU
00c0: 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20   General Public 
00d0: 4c 69 63 65 6e 63 65 0a 20 2a 20 64 65 73 63 72  Licence. * descr
00e0: 69 62 65 64 20 69 6e 20 74 68 65 20 66 69 6c 65  ibed in the file
00f0: 20 43 4f 50 59 49 4e 47 2e 20 43 6f 6e 74 61 63   COPYING. Contac
0100: 74 20 74 68 65 20 61 75 74 68 6f 72 20 69 66 20  t the author if 
0110: 79 6f 75 20 64 6f 6e 27 74 20 68 61 76 65 20 74  you don't have t
0120: 68 69 73 0a 20 2a 20 6f 72 20 63 61 6e 27 74 20  his. * or can't 
0130: 6c 69 76 65 20 77 69 74 68 20 69 74 2e 20 54 68  live with it. Th
0140: 65 72 65 20 69 73 20 41 42 53 4f 4c 55 54 45 4c  ere is ABSOLUTEL
0150: 59 20 4e 4f 20 57 41 52 52 41 4e 54 59 2c 20 65  Y NO WARRANTY, e
0160: 78 70 6c 69 63 69 74 20 6f 72 20 69 6d 70 6c 69  xplicit or impli
0170: 65 64 2c 0a 20 2a 20 6f 6e 20 74 68 69 73 20 73  ed,. * on this s
0180: 6f 66 74 77 61 72 65 2e 0a 20 2a 2f 0a 0a 0a 2f  oftware.. */.../
0190: 2a 20 54 68 65 73 65 20 64 65 66 69 6e 69 74 69  * These definiti
01a0: 6f 6e 73 20 61 72 65 20 61 64 6a 75 73 74 65 64  ons are adjusted
01b0: 20 62 79 20 60 63 6f 6e 66 69 67 75 72 65 27 20   by `configure' 
01c0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 2a  automatically. *
01d0: 2f 0a 0a 2f 2a 20 43 50 55 20 2a 2f 0a 23 69 66  /../* CPU */.#if
01e0: 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23 75  ndef __i386__.#u
01f0: 6e 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23 65  ndef __i386__.#e
0200: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d  ndif.#ifndef __m
0210: 36 38 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d  68k__.#undef __m
0220: 36 38 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66  68k__.#endif.#if
0230: 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f 0a 23 75  ndef __mips__.#u
0240: 6e 64 65 66 20 5f 5f 6d 69 70 73 5f 5f 0a 23 65  ndef __mips__.#e
0250: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d  ndif.#ifndef __m
0260: 69 70 73 6e 33 32 5f 5f 0a 23 75 6e 64 65 66 20  ipsn32__.#undef 
0270: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 0a 23 65 6e 64  __mipsn32__.#end
0280: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 69 70  if.#ifndef __mip
0290: 73 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d  s64__.#undef __m
02a0: 69 70 73 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 23  ips64__.#endif.#
02b0: 69 66 6e 64 65 66 20 5f 5f 73 70 61 72 63 5f 5f  ifndef __sparc__
02c0: 0a 23 75 6e 64 65 66 20 5f 5f 73 70 61 72 63 5f  .#undef __sparc_
02d0: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
02e0: 20 5f 5f 73 70 61 72 63 36 34 5f 5f 0a 23 75 6e   __sparc64__.#un
02f0: 64 65 66 20 5f 5f 73 70 61 72 63 36 34 5f 5f 0a  def __sparc64__.
0300: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0310: 5f 61 6c 70 68 61 5f 5f 0a 23 75 6e 64 65 66 20  _alpha__.#undef 
0320: 5f 5f 61 6c 70 68 61 5f 5f 0a 23 65 6e 64 69 66  __alpha__.#endif
0330: 0a 23 69 66 6e 64 65 66 20 5f 5f 68 70 70 61 5f  .#ifndef __hppa_
0340: 5f 0a 23 75 6e 64 65 66 20 5f 5f 68 70 70 61 5f  _.#undef __hppa_
0350: 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  _.#endif.#ifndef
0360: 20 5f 5f 61 72 6d 5f 5f 0a 23 75 6e 64 65 66 20   __arm__.#undef 
0370: 5f 5f 61 72 6d 5f 5f 0a 23 65 6e 64 69 66 0a 23  __arm__.#endif.#
0380: 69 66 6e 64 65 66 20 5f 5f 72 73 36 30 30 30 5f  ifndef __rs6000_
0390: 5f 0a 23 75 6e 64 65 66 20 5f 5f 72 73 36 30 30  _.#undef __rs600
03a0: 30 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  0__.#endif.#ifnd
03b0: 65 66 20 5f 5f 73 33 39 30 5f 5f 0a 23 75 6e 64  ef __s390__.#und
03c0: 65 66 20 5f 5f 73 33 39 30 5f 5f 0a 23 65 6e 64  ef __s390__.#end
03d0: 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 6d 38 38  if.#ifndef __m88
03e0: 6b 5f 5f 0a 23 75 6e 64 65 66 20 5f 5f 6d 38 38  k__.#undef __m88
03f0: 6b 5f 5f 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  k__.#endif.#ifnd
0400: 65 66 20 5f 5f 63 6f 6e 76 65 78 5f 5f 0a 23 75  ef __convex__.#u
0410: 6e 64 65 66 20 5f 5f 63 6f 6e 76 65 78 5f 5f 0a  ndef __convex__.
0420: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 5f  #endif.#ifndef _
0430: 5f 69 61 36 34 5f 5f 0a 23 75 6e 64 65 66 20 5f  _ia64__.#undef _
0440: 5f 69 61 36 34 5f 5f 0a 23 65 6e 64 69 66 0a 23  _ia64__.#endif.#
0450: 69 66 6e 64 65 66 20 5f 5f 78 38 36 5f 36 34 5f  ifndef __x86_64_
0460: 5f 0a 23 75 6e 64 65 66 20 5f 5f 78 38 36 5f 36  _.#undef __x86_6
0470: 34 5f 5f 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 43  4__.#endif../* C
0480: 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  alling conventio
0490: 6e 20 2a 2f 0a 2f 2a 20 44 65 66 69 6e 65 20 69  n */./* Define i
04a0: 66 20 75 73 69 6e 67 20 70 63 63 20 6e 6f 6e 2d  f using pcc non-
04b0: 72 65 65 6e 74 72 61 6e 74 20 73 74 72 75 63 74  reentrant struct
04c0: 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69   return conventi
04d0: 6f 6e 20 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f 50  on */.#undef __P
04e0: 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  CC_STRUCT_RETURN
04f0: 5f 5f 0a 2f 2a 20 44 65 66 69 6e 65 20 69 66 20  __./* Define if 
0500: 73 6d 61 6c 6c 20 73 74 72 75 63 74 73 20 61 72  small structs ar
0510: 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 65  e returned in re
0520: 67 69 73 74 65 72 73 20 2a 2f 0a 23 75 6e 64 65  gisters */.#unde
0530: 66 20 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54  f __SMALL_STRUCT
0540: 5f 52 45 54 55 52 4e 5f 5f 0a 2f 2a 20 44 65 66  _RETURN__./* Def
0550: 69 6e 65 20 69 66 20 66 6c 6f 61 74 69 6e 67 2d  ine if floating-
0560: 70 6f 69 6e 74 20 72 65 73 75 6c 74 73 20 61 72  point results ar
0570: 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68  e returned in th
0580: 65 20 69 6e 74 65 67 65 72 20 72 65 67 69 73 74  e integer regist
0590: 65 72 73 20 2a 2f 0a 23 75 6e 64 65 66 20 5f 5f  ers */.#undef __
05a0: 49 52 45 47 5f 46 4c 4f 41 54 5f 52 45 54 55 52  IREG_FLOAT_RETUR
05b0: 4e 5f 5f 0a 0a 2f 2a 20 43 4c 5f 4c 4f 4e 47 4c  N__../* CL_LONGL
05c0: 4f 4e 47 20 2a 2f 0a 2f 2a 20 44 65 66 69 6e 65  ONG */./* Define
05d0: 20 69 66 20 79 6f 75 72 20 63 6f 6d 70 69 6c 65   if your compile
05e0: 72 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 60  r supports the `
05f0: 6c 6f 6e 67 20 6c 6f 6e 67 27 20 74 79 70 65 2e  long long' type.
0600: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 48 41 56 45   */.#ifndef HAVE
0610: 5f 4c 4f 4e 47 4c 4f 4e 47 0a 23 75 6e 64 65 66  _LONGLONG.#undef
0620: 20 48 41 56 45 5f 4c 4f 4e 47 4c 4f 4e 47 0a 23   HAVE_LONGLONG.#
0630: 65 6e 64 69 66 0a 0a 2f 2a 20 41 43 5f 43 5f 43  endif../* AC_C_C
0640: 48 41 52 5f 55 4e 53 49 47 4e 45 44 20 2a 2f 0a  HAR_UNSIGNED */.
0650: 23 69 66 6e 64 65 66 20 5f 5f 43 48 41 52 5f 55  #ifndef __CHAR_U
0660: 4e 53 49 47 4e 45 44 5f 5f 0a 23 75 6e 64 65 66  NSIGNED__.#undef
0670: 20 5f 5f 43 48 41 52 5f 55 4e 53 49 47 4e 45 44   __CHAR_UNSIGNED
0680: 5f 5f 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 45 6e  __.#endif../* En
0690: 64 20 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e 73  d of definitions
06a0: 20 61 64 6a 75 73 74 65 64 20 62 79 20 60 63 6f   adjusted by `co
06b0: 6e 66 69 67 75 72 65 27 2e 20 2a 2f 0a 0a 0a 2f  nfigure'. */.../
06c0: 2a 20 4d 61 78 20 23 20 77 6f 72 64 73 20 69 6e  * Max # words in
06d0: 20 61 72 67 75 6d 65 6e 74 2d 6c 69 73 74 20 61   argument-list a
06e0: 6e 64 20 74 65 6d 70 6f 72 61 72 79 20 73 74 72  nd temporary str
06f0: 75 63 74 75 72 65 20 73 74 6f 72 61 67 65 2e 0a  ucture storage..
0700: 20 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 5f 56 41   */.#ifndef __VA
0710: 5f 41 4c 49 53 54 5f 57 4f 52 44 53 0a 23 64 65  _ALIST_WORDS.#de
0720: 66 69 6e 65 20 5f 5f 56 41 5f 41 4c 49 53 54 5f  fine __VA_ALIST_
0730: 57 4f 52 44 53 20 20 32 35 36 0a 23 65 6e 64 69  WORDS  256.#endi
0740: 66 0a 0a 2f 2a 20 54 68 65 20 60 73 69 67 6e 65  f../* The `signe
0750: 64 27 20 6b 65 79 77 6f 72 64 2e 0a 20 2a 2f 0a  d' keyword.. */.
0760: 23 69 66 20 21 64 65 66 69 6e 65 64 28 5f 5f 53  #if !defined(__S
0770: 54 44 43 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  TDC__) && !defin
0780: 65 64 28 5f 5f 43 48 41 52 5f 55 4e 53 49 47 4e  ed(__CHAR_UNSIGN
0790: 45 44 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ED__) && !define
07a0: 64 28 73 69 67 6e 65 64 29 0a 23 64 65 66 69 6e  d(signed).#defin
07b0: 65 20 73 69 67 6e 65 64 0a 23 65 6e 64 69 66 0a  e signed.#endif.
07c0: 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 20 74 68  ./* Determine th
07d0: 65 20 61 6c 69 67 6e 6d 65 6e 74 20 6f 66 20 61  e alignment of a
07e0: 20 74 79 70 65 20 61 74 20 63 6f 6d 70 69 6c 65   type at compile
07f0: 20 74 69 6d 65 2e 0a 20 2a 2f 0a 23 69 66 20 64   time.. */.#if d
0800: 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29  efined(__GNUC__)
0810: 0a 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f 61 6c  .#define __VA_al
0820: 69 67 6e 6f 66 20 5f 5f 61 6c 69 67 6e 6f 66 5f  ignof __alignof_
0830: 5f 0a 23 65 6c 73 65 0a 23 69 66 20 64 65 66 69  _.#else.#if defi
0840: 6e 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c  ned(__mips__) ||
0850: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
0860: 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  32__) || defined
0870: 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 2f 2a 20  (__mips64__) /* 
0880: 53 47 49 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a  SGI compiler */.
0890: 23 64 65 66 69 6e 65 20 5f 5f 56 41 5f 61 6c 69  #define __VA_ali
08a0: 67 6e 6f 66 20 5f 5f 62 75 69 6c 74 69 6e 5f 61  gnof __builtin_a
08b0: 6c 69 67 6e 6f 66 0a 23 65 6c 73 65 0a 23 64 65  lignof.#else.#de
08c0: 66 69 6e 65 20 5f 5f 56 41 5f 6f 66 66 73 65 74  fine __VA_offset
08d0: 6f 66 28 74 79 70 65 2c 69 64 65 6e 74 29 20 20  of(type,ident)  
08e0: 28 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29  ((unsigned long)
08f0: 26 28 28 28 74 79 70 65 2a 29 30 29 2d 3e 69 64  &(((type*)0)->id
0900: 65 6e 74 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f  ent)).#define __
0910: 56 41 5f 61 6c 69 67 6e 6f 66 28 74 79 70 65 29  VA_alignof(type)
0920: 20 20 5f 5f 56 41 5f 6f 66 66 73 65 74 6f 66 28    __VA_offsetof(
0930: 73 74 72 75 63 74 20 7b 20 63 68 61 72 20 5f 5f  struct { char __
0940: 73 6c 6f 74 31 3b 20 74 79 70 65 20 5f 5f 73 6c  slot1; type __sl
0950: 6f 74 32 3b 20 7d 2c 20 5f 5f 73 6c 6f 74 32 29  ot2; }, __slot2)
0960: 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 0a  .#endif.#endif..
0970: 2f 2a 20 43 20 62 75 69 6c 74 69 6e 20 74 79 70  /* C builtin typ
0980: 65 73 2e 0a 20 2a 2f 0a 23 69 66 20 64 65 66 69  es.. */.#if defi
0990: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
09a0: 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f  .typedef long lo
09b0: 6e 67 20 5f 5f 76 61 77 6f 72 64 3b 0a 23 65 6c  ng __vaword;.#el
09c0: 73 65 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67 20  se.typedef long 
09d0: 5f 5f 76 61 77 6f 72 64 3b 0a 23 65 6e 64 69 66  __vaword;.#endif
09e0: 0a 0a 65 6e 75 6d 20 5f 5f 56 41 74 79 70 65 0a  ..enum __VAtype.
09f0: 7b 0a 20 20 5f 5f 56 41 76 6f 69 64 2c 0a 20 20  {.  __VAvoid,.  
0a00: 5f 5f 56 41 63 68 61 72 2c 0a 20 20 5f 5f 56 41  __VAchar,.  __VA
0a10: 73 63 68 61 72 2c 0a 20 20 5f 5f 56 41 75 63 68  schar,.  __VAuch
0a20: 61 72 2c 0a 20 20 5f 5f 56 41 73 68 6f 72 74 2c  ar,.  __VAshort,
0a30: 0a 20 20 5f 5f 56 41 75 73 68 6f 72 74 2c 0a 20  .  __VAushort,. 
0a40: 20 5f 5f 56 41 69 6e 74 2c 0a 20 20 5f 5f 56 41   __VAint,.  __VA
0a50: 75 69 6e 74 2c 0a 20 20 5f 5f 56 41 6c 6f 6e 67  uint,.  __VAlong
0a60: 2c 0a 20 20 5f 5f 56 41 75 6c 6f 6e 67 2c 0a 20  ,.  __VAulong,. 
0a70: 20 5f 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 2c 0a 20   __VAlonglong,. 
0a80: 20 5f 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67 2c 0a   __VAulonglong,.
0a90: 20 20 5f 5f 56 41 66 6c 6f 61 74 2c 0a 20 20 5f    __VAfloat,.  _
0aa0: 5f 56 41 64 6f 75 62 6c 65 2c 0a 20 20 5f 5f 56  _VAdouble,.  __V
0ab0: 41 76 6f 69 64 70 2c 0a 20 20 5f 5f 56 41 73 74  Avoidp,.  __VAst
0ac0: 72 75 63 74 0a 7d 3b 0a 0a 65 6e 75 6d 20 5f 5f  ruct.};..enum __
0ad0: 56 41 5f 61 6c 69 73 74 5f 66 6c 61 67 73 0a 7b  VA_alist_flags.{
0ae0: 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72 65  ..  /* how to re
0af0: 74 75 72 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a  turn structs */.
0b00: 20 20 2f 2a 20 54 68 65 72 65 20 61 72 65 20 62    /* There are b
0b10: 61 73 69 63 61 6c 6c 79 20 33 20 77 61 79 73 20  asically 3 ways 
0b20: 74 6f 20 72 65 74 75 72 6e 20 73 74 72 75 63 74  to return struct
0b30: 73 3a 0a 20 20 20 2a 20 61 2e 20 54 68 65 20 63  s:.   * a. The c
0b40: 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 20 72  alled function r
0b50: 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
0b60: 20 74 6f 20 73 74 61 74 69 63 20 64 61 74 61 2e   to static data.
0b70: 20 4e 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e 0a   Not reentrant..
0b80: 20 20 20 2a 20 62 2e 20 54 68 65 20 63 61 6c 6c     * b. The call
0b90: 65 72 20 70 61 73 73 65 73 20 74 68 65 20 72 65  er passes the re
0ba0: 74 75 72 6e 20 73 74 72 75 63 74 75 72 65 20 61  turn structure a
0bb0: 64 64 72 65 73 73 20 69 6e 20 61 20 64 65 64 69  ddress in a dedi
0bc0: 63 61 74 65 64 20 72 65 67 69 73 74 65 72 0a 20  cated register. 
0bd0: 20 20 2a 20 20 20 20 6f 72 20 61 73 20 61 20 66    *    or as a f
0be0: 69 72 73 74 20 28 6f 72 20 6c 61 73 74 29 2c 20  irst (or last), 
0bf0: 69 6e 76 69 73 69 62 6c 65 20 61 72 67 75 6d 65  invisible argume
0c00: 6e 74 2e 20 54 68 65 20 63 61 6c 6c 65 64 20 66  nt. The called f
0c10: 75 6e 63 74 69 6f 6e 20 73 74 6f 72 65 73 0a 20  unction stores. 
0c20: 20 20 2a 20 20 20 20 69 74 73 20 72 65 73 75 6c    *    its resul
0c30: 74 20 74 68 65 72 65 2e 0a 20 20 20 2a 20 63 2e  t there..   * c.
0c40: 20 4c 69 6b 65 20 62 2c 20 61 6e 64 20 74 68 65   Like b, and the
0c50: 20 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e   called function
0c60: 20 61 6c 73 6f 20 72 65 74 75 72 6e 73 20 74 68   also returns th
0c70: 65 20 72 65 74 75 72 6e 20 73 74 72 75 63 74 75  e return structu
0c80: 72 65 0a 20 20 20 2a 20 20 20 20 61 64 64 72 65  re.   *    addre
0c90: 73 73 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e  ss in the return
0ca0: 20 76 61 6c 75 65 20 72 65 67 69 73 74 65 72 2e   value register.
0cb0: 20 28 54 68 69 73 20 69 73 20 6e 6f 74 20 76 65   (This is not ve
0cc0: 72 79 20 64 69 73 74 69 6e 67 75 69 73 68 61 62  ry distinguishab
0cd0: 6c 65 0a 20 20 20 2a 20 20 20 20 66 72 6f 6d 20  le.   *    from 
0ce0: 62 2e 29 0a 20 20 20 2a 20 49 6e 64 65 70 65 6e  b.).   * Indepen
0cf0: 64 65 6e 74 6c 79 20 6f 66 20 74 68 69 73 2c 0a  dently of this,.
0d00: 20 20 20 2a 20 72 2e 20 73 6d 61 6c 6c 20 73 74     * r. small st
0d10: 72 75 63 74 75 72 65 73 20 28 3c 3d 20 34 20 6f  ructures (<= 4 o
0d20: 72 20 3c 3d 20 38 20 62 79 74 65 73 29 20 6d 61  r <= 8 bytes) ma
0d30: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e  y be returned in
0d40: 20 74 68 65 20 72 65 74 75 72 6e 0a 20 20 20 2a   the return.   *
0d50: 20 20 20 20 76 61 6c 75 65 20 72 65 67 69 73 74      value regist
0d60: 65 72 28 73 29 2c 20 6f 72 0a 20 20 20 2a 20 6d  er(s), or.   * m
0d70: 2e 20 65 76 65 6e 20 73 6d 61 6c 6c 20 73 74 72  . even small str
0d80: 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73  uctures are pass
0d90: 65 64 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20  ed in memory..  
0da0: 20 2a 2f 0a 20 20 2f 2a 20 67 63 63 2d 32 2e 36   */.  /* gcc-2.6
0db0: 2e 33 20 65 6d 70 6c 6f 79 73 20 74 68 65 20 66  .3 employs the f
0dc0: 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 61 74 65 67  ollowing strateg
0dd0: 79 3a 0a 20 20 20 2a 20 20 20 2d 20 49 66 20 50  y:.   *   - If P
0de0: 43 43 5f 53 54 41 54 49 43 5f 53 54 52 55 43 54  CC_STATIC_STRUCT
0df0: 5f 52 45 54 55 52 4e 20 69 73 20 64 65 66 69 6e  _RETURN is defin
0e00: 65 64 20 69 6e 20 74 68 65 20 6d 61 63 68 69 6e  ed in the machin
0e10: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20  e description.  
0e20: 20 2a 20 20 20 20 20 69 74 20 75 73 65 73 20 6d   *     it uses m
0e30: 65 74 68 6f 64 20 61 2c 20 65 6c 73 65 20 6d 65  ethod a, else me
0e40: 74 68 6f 64 20 63 2e 0a 20 20 20 2a 20 20 20 2d  thod c..   *   -
0e50: 20 49 66 20 66 6c 61 67 5f 70 63 63 5f 73 74 72   If flag_pcc_str
0e60: 75 63 74 5f 72 65 74 75 72 6e 20 69 73 20 73 65  uct_return is se
0e70: 74 20 28 65 69 74 68 65 72 20 62 79 20 2d 66 70  t (either by -fp
0e80: 63 63 2d 73 74 72 75 63 74 2d 72 65 74 75 72 6e  cc-struct-return
0e90: 20 6f 72 20 69 66 0a 20 20 20 2a 20 20 20 20 20   or if.   *     
0ea0: 44 45 46 41 55 4c 54 5f 50 43 43 5f 53 54 52 55  DEFAULT_PCC_STRU
0eb0: 43 54 5f 52 45 54 55 52 4e 20 69 73 20 64 65 66  CT_RETURN is def
0ec0: 69 6e 65 64 20 74 6f 20 31 20 69 6e 20 74 68 65  ined to 1 in the
0ed0: 20 6d 61 63 68 69 6e 65 20 64 65 73 63 72 69 70   machine descrip
0ee0: 74 69 6f 6e 29 0a 20 20 20 2a 20 20 20 20 20 69  tion).   *     i
0ef0: 74 20 75 73 65 73 20 6d 65 74 68 6f 64 20 6d 2c  t uses method m,
0f00: 20 65 6c 73 65 20 28 65 69 74 68 65 72 20 62 79   else (either by
0f10: 20 2d 66 72 65 67 2d 73 74 72 75 63 74 2d 72 65   -freg-struct-re
0f20: 74 75 72 6e 20 6f 72 20 69 66 0a 20 20 20 2a 20  turn or if.   * 
0f30: 20 20 20 20 44 45 46 41 55 4c 54 5f 50 43 43 5f      DEFAULT_PCC_
0f40: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 73  STRUCT_RETURN is
0f50: 20 64 65 66 69 6e 65 64 20 74 6f 20 30 20 69 6e   defined to 0 in
0f60: 20 74 68 65 20 6d 61 63 68 69 6e 65 20 64 65 73   the machine des
0f70: 63 72 69 70 74 69 6f 6e 29 0a 20 20 20 2a 20 20  cription).   *  
0f80: 20 20 20 6d 65 74 68 6f 64 20 72 2e 0a 20 20 20     method r..   
0f90: 2a 2f 0a 20 20 5f 5f 56 41 5f 50 43 43 5f 53 54  */.  __VA_PCC_ST
0fa0: 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c  RUCT_RETURN.= 1<
0fb0: 3c 30 2c 09 2f 2a 20 61 3a 20 6e 65 65 64 20 74  <0,./* a: need t
0fc0: 6f 20 63 6f 70 79 20 74 68 65 20 73 74 72 75 63  o copy the struc
0fd0: 74 20 2a 2f 0a 20 20 5f 5f 56 41 5f 53 4d 41 4c  t */.  __VA_SMAL
0fe0: 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  L_STRUCT_RETURN.
0ff0: 3d 20 31 3c 3c 31 2c 09 2f 2a 20 72 3a 20 73 70  = 1<<1,./* r: sp
1000: 65 63 69 61 6c 20 63 61 73 65 20 66 6f 72 20 73  ecial case for s
1010: 6d 61 6c 6c 20 73 74 72 75 63 74 73 20 2a 2f 0a  mall structs */.
1020: 20 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55 43    __VA_GCC_STRUC
1030: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 32 2c  T_RETURN.= 1<<2,
1040: 09 2f 2a 20 63 6f 6e 73 69 64 65 72 20 38 20 62  ./* consider 8 b
1050: 79 74 65 20 73 74 72 75 63 74 73 20 61 73 20 73  yte structs as s
1060: 6d 61 6c 6c 20 2a 2f 0a 23 69 66 20 64 65 66 69  mall */.#if defi
1070: 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26  ned(__sparc__) &
1080: 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  & !defined(__spa
1090: 72 63 36 34 5f 5f 29 0a 20 20 5f 5f 56 41 5f 53  rc64__).  __VA_S
10a0: 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  UNCC_STRUCT_RETU
10b0: 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f 56  RN.= 1<<3,.  __V
10c0: 41 5f 53 55 4e 50 52 4f 43 43 5f 53 54 52 55 43  A_SUNPROCC_STRUC
10d0: 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c 34 2c  T_RETURN.= 1<<4,
10e0: 0a 23 65 6c 73 65 0a 20 20 5f 5f 56 41 5f 53 55  .#else.  __VA_SU
10f0: 4e 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52  NCC_STRUCT_RETUR
1100: 4e 09 3d 20 30 2c 0a 20 20 5f 5f 56 41 5f 53 55  N.= 0,.  __VA_SU
1110: 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f 52 45  NPROCC_STRUCT_RE
1120: 54 55 52 4e 09 3d 20 30 2c 0a 23 65 6e 64 69 66  TURN.= 0,.#endif
1130: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
1140: 33 38 36 5f 5f 29 0a 20 20 5f 5f 56 41 5f 4e 45  386__).  __VA_NE
1150: 58 54 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  XTGCC_STRUCT_RET
1160: 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 20 20 5f 5f  URN.= 1<<3,.  __
1170: 56 41 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52  VA_MSVC_STRUCT_R
1180: 45 54 55 52 4e 09 3d 20 31 3c 3c 34 2c 0a 23 65  ETURN.= 1<<4,.#e
1190: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
11a0: 28 5f 5f 68 70 70 61 5f 5f 29 0a 20 20 5f 5f 56  (__hppa__).  __V
11b0: 41 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f  A_OLDGCC_STRUCT_
11c0: 52 45 54 55 52 4e 09 3d 20 31 3c 3c 33 2c 0a 23  RETURN.= 1<<3,.#
11d0: 65 6e 64 69 66 0a 20 20 2f 2a 20 74 68 65 20 64  endif.  /* the d
11e0: 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20 72 65  efault way to re
11f0: 74 75 72 6e 20 73 74 72 75 63 74 73 20 2a 2f 0a  turn structs */.
1200: 20 20 2f 2a 20 54 68 69 73 20 63 68 6f 69 63 65    /* This choice
1210: 20 68 65 72 65 20 69 73 20 62 61 73 65 64 20 6f   here is based o
1220: 6e 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e  n the assumption
1230: 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69   that the functi
1240: 6f 6e 20 79 6f 75 20 61 72 65 0a 20 20 20 2a 20  on you are.   * 
1250: 67 6f 69 6e 67 20 74 6f 20 63 61 6c 6c 20 68 61  going to call ha
1260: 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20  s been compiled 
1270: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 63 6f  with the same co
1280: 6d 70 69 6c 65 72 20 79 6f 75 20 61 72 65 20 75  mpiler you are u
1290: 73 69 6e 67 20 74 6f 0a 20 20 20 2a 20 69 6e 63  sing to.   * inc
12a0: 6c 75 64 65 20 74 68 69 73 20 66 69 6c 65 2e 0a  lude this file..
12b0: 20 20 20 2a 20 49 66 20 79 6f 75 20 77 61 6e 74     * If you want
12c0: 20 74 6f 20 63 61 6c 6c 20 66 75 6e 63 74 69 6f   to call functio
12d0: 6e 73 20 77 69 74 68 20 61 6e 6f 74 68 65 72 20  ns with another 
12e0: 73 74 72 75 63 74 20 72 65 74 75 72 6e 69 6e 67  struct returning
12f0: 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 0a 20 20 20   convention,.   
1300: 2a 20 6a 75 73 74 20 20 23 64 65 66 69 6e 65 20  * just  #define 
1310: 5f 5f 56 41 5f 53 54 52 55 43 54 5f 52 45 54 55  __VA_STRUCT_RETU
1320: 52 4e 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66 6f  RN ....   * befo
1330: 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e 63  re or after #inc
1340: 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c 6c 2e 68  luding <vacall.h
1350: 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65 66  >..   */.#ifndef
1360: 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f 52 45 54   __VA_STRUCT_RET
1370: 55 52 4e 0a 20 20 5f 5f 56 41 5f 53 54 52 55 43  URN.  __VA_STRUC
1380: 54 5f 52 45 54 55 52 4e 09 09 3d 0a 23 69 66 20  T_RETURN..=.#if 
1390: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f  defined(__sparc_
13a0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
13b0: 5f 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20 64  _sparc64__) && d
13c0: 65 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20 64  efined(sun) && d
13d0: 65 66 69 6e 65 64 28 5f 5f 53 55 4e 50 52 4f 5f  efined(__SUNPRO_
13e0: 43 29 20 2f 2a 20 53 55 4e 57 73 70 72 6f 20 63  C) /* SUNWspro c
13f0: 63 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 56 41 5f  c */.....  __VA_
1400: 53 55 4e 50 52 4f 43 43 5f 53 54 52 55 43 54 5f  SUNPROCC_STRUCT_
1410: 52 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 23 69  RETURN,.#else.#i
1420: 66 20 64 65 66 69 6e 65 64 28 5f 5f 50 43 43 5f  f defined(__PCC_
1430: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 5f 5f 29  STRUCT_RETURN__)
1440: 20 2f 2a 20 64 65 66 69 6e 65 64 20 74 68 72 6f   /* defined thro
1450: 75 67 68 20 63 6f 6e 66 69 67 75 72 65 2c 20 73  ugh configure, s
1460: 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09 09 09 09  ee above */.....
1470: 20 20 5f 5f 56 41 5f 50 43 43 5f 53 54 52 55 43    __VA_PCC_STRUC
1480: 54 5f 52 45 54 55 52 4e 20 7c 0a 23 69 66 20 64  T_RETURN |.#if d
1490: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
14a0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
14b0: 73 70 61 72 63 36 34 5f 5f 29 20 26 26 20 64 65  sparc64__) && de
14c0: 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20 21 28  fined(sun) && !(
14d0: 64 65 66 69 6e 65 64 28 5f 5f 53 54 44 43 5f 5f  defined(__STDC__
14e0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 47  ) || defined(__G
14f0: 4e 55 43 5f 5f 29 29 20 2f 2a 20 73 75 6e 20 63  NUC__)) /* sun c
1500: 63 20 2a 2f 0a 20 20 09 09 09 09 20 20 5f 5f 56  c */.  ....  __V
1510: 41 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f 52  A_SUNCC_STRUCT_R
1520: 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 20 20 09  ETURN,.#else.  .
1530: 09 09 09 20 20 30 2c 0a 23 65 6e 64 69 66 0a 23  ...  0,.#endif.#
1540: 65 6c 73 65 0a 23 69 66 20 64 65 66 69 6e 65 64  else.#if defined
1550: 28 5f 5f 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f  (__SMALL_STRUCT_
1560: 52 45 54 55 52 4e 5f 5f 29 20 7c 7c 20 64 65 66  RETURN__) || def
1570: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
1580: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
1590: 69 70 73 36 34 5f 5f 29 20 2f 2a 20 64 65 66 69  ips64__) /* defi
15a0: 6e 65 64 20 74 68 72 6f 75 67 68 20 63 6f 6e 66  ned through conf
15b0: 69 67 75 72 65 2c 20 73 65 65 20 61 62 6f 76 65  igure, see above
15c0: 20 2a 2f 0a 09 09 09 09 20 20 5f 5f 56 41 5f 53   */.....  __VA_S
15d0: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
15e0: 52 4e 20 7c 0a 23 65 6e 64 69 66 0a 23 69 66 20  RN |.#endif.#if 
15f0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1600: 29 0a 09 09 09 09 20 20 5f 5f 56 41 5f 47 43 43  ).....  __VA_GCC
1610: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c  _STRUCT_RETURN |
1620: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
1630: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26  ned(__i386__) &&
1640: 20 64 65 66 69 6e 65 64 28 4e 65 58 54 29 20 26   defined(NeXT) &
1650: 26 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43  & defined(__GNUC
1660: 5f 5f 29 20 2f 2a 20 4e 65 58 54 20 67 63 63 2d  __) /* NeXT gcc-
1670: 32 2e 35 2e 38 20 2a 2f 0a 09 09 09 09 20 20 5f  2.5.8 */.....  _
1680: 5f 56 41 5f 4e 45 58 54 47 43 43 5f 53 54 52 55  _VA_NEXTGCC_STRU
1690: 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64  CT_RETURN |.#end
16a0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
16b0: 5f 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69  _i386__) && defi
16c0: 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 2f 2a  ned(_MSC_VER) /*
16d0: 20 4d 53 56 43 20 34 2e 30 20 2a 2f 0a 09 09 09   MSVC 4.0 */....
16e0: 09 20 20 5f 5f 56 41 5f 4d 53 56 43 5f 53 54 52  .  __VA_MSVC_STR
16f0: 55 43 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e  UCT_RETURN |.#en
1700: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
1710: 5f 5f 68 70 70 61 5f 5f 29 20 26 26 20 64 65 66  __hppa__) && def
1720: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26  ined(__GNUC__) &
1730: 26 20 28 5f 5f 47 4e 55 43 5f 5f 20 3c 20 33 29  & (__GNUC__ < 3)
1740: 20 26 26 20 28 5f 5f 47 4e 55 43 5f 4d 49 4e 4f   && (__GNUC_MINO
1750: 52 5f 5f 20 3c 20 37 29 0a 09 09 09 09 20 20 5f  R__ < 7).....  _
1760: 5f 56 41 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43  _VA_OLDGCC_STRUC
1770: 54 5f 52 45 54 55 52 4e 20 7c 0a 23 65 6e 64 69  T_RETURN |.#endi
1780: 66 0a 20 20 09 09 09 09 20 20 30 2c 0a 23 65 6e  f.  ....  0,.#en
1790: 64 69 66 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69  dif.#endif.#endi
17a0: 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20 72  f..  /* how to r
17b0: 65 74 75 72 6e 20 66 6c 6f 61 74 73 20 2a 2f 0a  eturn floats */.
17c0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36  #if defined(__m6
17d0: 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65  8k__) || (define
17e0: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
17f0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
1800: 36 34 5f 5f 29 29 0a 20 20 5f 5f 56 41 5f 53 55  64__)).  __VA_SU
1810: 4e 43 43 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  NCC_FLOAT_RETURN
1820: 09 3d 20 31 3c 3c 35 2c 0a 23 65 6e 64 69 66 0a  .= 1<<5,.#endif.
1830: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36  #if defined(__m6
1840: 38 6b 5f 5f 29 0a 20 20 5f 5f 56 41 5f 46 52 45  8k__).  __VA_FRE
1850: 47 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 3d  G_FLOAT_RETURN.=
1860: 20 31 3c 3c 36 2c 0a 23 65 6e 64 69 66 0a 20 20   1<<6,.#endif.  
1870: 2f 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 77  /* the default w
1880: 61 79 20 74 6f 20 72 65 74 75 72 6e 20 66 6c 6f  ay to return flo
1890: 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69 73  ats */.  /* This
18a0: 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73 20   choice here is 
18b0: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73 73  based on the ass
18c0: 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68 65  umption that the
18d0: 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61 72   function you ar
18e0: 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f 20  e.   * going to 
18f0: 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 6f  call has been co
1900: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20  mpiled with the 
1910: 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79 6f  same compiler yo
1920: 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a 20  u are using to. 
1930: 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69 73    * include this
1940: 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20 79   file..   * If y
1950: 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20  ou want to call 
1960: 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20 61  functions with a
1970: 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 72 65 74  nother float ret
1980: 75 72 6e 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  urning conventio
1990: 6e 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64  n,.   * just  #d
19a0: 65 66 69 6e 65 20 5f 5f 56 41 5f 46 4c 4f 41 54  efine __VA_FLOAT
19b0: 5f 52 45 54 55 52 4e 20 2e 2e 2e 0a 20 20 20 2a  _RETURN ....   *
19c0: 20 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65 72   before or after
19d0: 20 23 69 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63   #including <vac
19e0: 61 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69  all.h>..   */.#i
19f0: 66 6e 64 65 66 20 5f 5f 56 41 5f 46 4c 4f 41 54  fndef __VA_FLOAT
1a00: 5f 52 45 54 55 52 4e 0a 23 69 66 20 28 64 65 66  _RETURN.#if (def
1a10: 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c  ined(__m68k__) |
1a20: 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73 70 61  | (defined(__spa
1a30: 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  rc__) && !define
1a40: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 29 29  d(__sparc64__)))
1a50: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47   && !defined(__G
1a60: 4e 55 43 5f 5f 29 20 26 26 20 64 65 66 69 6e 65  NUC__) && define
1a70: 64 28 73 75 6e 29 20 26 26 20 21 64 65 66 69 6e  d(sun) && !defin
1a80: 65 64 28 5f 5f 53 55 4e 50 52 4f 5f 43 29 20 20  ed(__SUNPRO_C)  
1a90: 2f 2a 20 73 75 6e 20 63 63 20 2a 2f 0a 20 20 5f  /* sun cc */.  _
1aa0: 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e  _VA_FLOAT_RETURN
1ab0: 09 09 3d 20 5f 5f 56 41 5f 53 55 4e 43 43 5f 46  ..= __VA_SUNCC_F
1ac0: 4c 4f 41 54 5f 52 45 54 55 52 4e 2c 0a 23 65 6c  LOAT_RETURN,.#el
1ad0: 69 66 20 28 64 65 66 69 6e 65 64 28 5f 5f 6d 36  if (defined(__m6
1ae0: 38 6b 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  8k__) && !define
1af0: 64 28 5f 5f 49 52 45 47 5f 46 4c 4f 41 54 5f 52  d(__IREG_FLOAT_R
1b00: 45 54 55 52 4e 5f 5f 29 29 0a 20 20 5f 5f 56 41  ETURN__)).  __VA
1b10: 5f 46 4c 4f 41 54 5f 52 45 54 55 52 4e 09 09 3d  _FLOAT_RETURN..=
1b20: 20 5f 5f 56 41 5f 46 52 45 47 5f 46 4c 4f 41 54   __VA_FREG_FLOAT
1b30: 5f 52 45 54 55 52 4e 2c 0a 23 65 6c 73 65 0a 20  _RETURN,.#else. 
1b40: 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54 55   __VA_FLOAT_RETU
1b50: 52 4e 09 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a  RN..= 0,.#endif.
1b60: 23 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 68 6f 77  #endif..  /* how
1b70: 20 74 6f 20 70 61 73 73 20 73 74 72 75 63 74 73   to pass structs
1b80: 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28   */.#if defined(
1b90: 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66  __mips__) || def
1ba0: 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f  ined(__mipsn32__
1bb0: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
1bc0: 69 70 73 36 34 5f 5f 29 0a 20 20 5f 5f 56 41 5f  ips64__).  __VA_
1bd0: 53 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52 47  SGICC_STRUCT_ARG
1be0: 53 09 3d 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66  S.= 1<<7,.#endif
1bf0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 72  .#if defined(__r
1c00: 73 36 30 30 30 5f 5f 29 0a 20 20 5f 5f 56 41 5f  s6000__).  __VA_
1c10: 41 49 58 43 43 5f 53 54 52 55 43 54 5f 41 52 47  AIXCC_STRUCT_ARG
1c20: 53 09 3d 20 31 3c 3c 37 2c 0a 23 65 6e 64 69 66  S.= 1<<7,.#endif
1c30: 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61 75 6c  .  /* the defaul
1c40: 74 20 77 61 79 20 74 6f 20 70 61 73 73 20 66 6c  t way to pass fl
1c50: 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68 69  oats */.  /* Thi
1c60: 73 20 63 68 6f 69 63 65 20 68 65 72 65 20 69 73  s choice here is
1c70: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 73   based on the as
1c80: 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74 68  sumption that th
1c90: 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 61  e function you a
1ca0: 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74 6f  re.   * going to
1cb0: 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63   call has been c
1cc0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
1cd0: 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20 79   same compiler y
1ce0: 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f 0a  ou are using to.
1cf0: 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68 69     * include thi
1d00: 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66 20  s file..   * If 
1d10: 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c  you want to call
1d20: 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 20   functions with 
1d30: 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 70 61  another float pa
1d40: 73 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e  ssing convention
1d50: 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64 65  ,.   * just  #de
1d60: 66 69 6e 65 20 5f 5f 56 41 5f 53 54 52 55 43 54  fine __VA_STRUCT
1d70: 5f 41 52 47 53 20 2e 2e 2e 0a 20 20 20 2a 20 62  _ARGS ....   * b
1d80: 65 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23  efore or after #
1d90: 69 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c  including <vacal
1da0: 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e  l.h>..   */.#ifn
1db0: 64 65 66 20 5f 5f 56 41 5f 53 54 52 55 43 54 5f  def __VA_STRUCT_
1dc0: 41 52 47 53 0a 23 69 66 20 28 64 65 66 69 6e 65  ARGS.#if (define
1dd0: 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64  d(__mips__) || d
1de0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
1df0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
1e00: 5f 6d 69 70 73 36 34 5f 5f 29 29 20 26 26 20 21  _mips64__)) && !
1e10: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
1e20: 29 20 2f 2a 20 53 47 49 20 6d 69 70 73 20 63 63  ) /* SGI mips cc
1e30: 20 2a 2f 0a 20 20 5f 5f 56 41 5f 53 54 52 55 43   */.  __VA_STRUC
1e40: 54 5f 41 52 47 53 09 09 3d 20 5f 5f 56 41 5f 53  T_ARGS..= __VA_S
1e50: 47 49 43 43 5f 53 54 52 55 43 54 5f 41 52 47 53  GICC_STRUCT_ARGS
1e60: 2c 0a 23 65 6c 73 65 0a 23 69 66 20 64 65 66 69  ,.#else.#if defi
1e70: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
1e80: 26 26 20 64 65 66 69 6e 65 64 28 5f 41 49 58 29  && defined(_AIX)
1e90: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 47   && !defined(__G
1ea0: 4e 55 43 5f 5f 29 20 2f 2a 20 41 49 58 20 63 63  NUC__) /* AIX cc
1eb0: 2c 20 78 6c 63 20 2a 2f 0a 20 20 5f 5f 56 41 5f  , xlc */.  __VA_
1ec0: 53 54 52 55 43 54 5f 41 52 47 53 09 09 3d 20 5f  STRUCT_ARGS..= _
1ed0: 5f 56 41 5f 41 49 58 43 43 5f 53 54 52 55 43 54  _VA_AIXCC_STRUCT
1ee0: 5f 41 52 47 53 2c 0a 23 65 6c 73 65 0a 20 20 5f  _ARGS,.#else.  _
1ef0: 5f 56 41 5f 53 54 52 55 43 54 5f 41 52 47 53 09  _VA_STRUCT_ARGS.
1f00: 09 3d 20 30 2c 0a 23 65 6e 64 69 66 0a 23 65 6e  .= 0,.#endif.#en
1f10: 64 69 66 0a 23 65 6e 64 69 66 0a 0a 20 20 2f 2a  dif.#endif..  /*
1f20: 20 68 6f 77 20 74 6f 20 70 61 73 73 20 66 6c 6f   how to pass flo
1f30: 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 41 4e 53 49  ats */.  /* ANSI
1f40: 20 43 20 63 6f 6d 70 69 6c 65 72 73 20 61 6e 64   C compilers and
1f50: 20 47 4e 55 20 67 63 63 20 70 61 73 73 20 66 6c   GNU gcc pass fl
1f60: 6f 61 74 73 20 61 73 20 66 6c 6f 61 74 73 2e 0a  oats as floats..
1f70: 20 20 20 2a 20 4b 26 52 20 43 20 63 6f 6d 70 69     * K&R C compi
1f80: 6c 65 72 73 20 70 61 73 73 20 66 6c 6f 61 74 73  lers pass floats
1f90: 20 61 73 20 64 6f 75 62 6c 65 73 2e 0a 20 20 20   as doubles..   
1fa0: 2a 20 28 45 78 63 65 70 74 20 73 6f 6d 65 20 63  * (Except some c
1fb0: 6f 6d 70 69 6c 65 72 73 20 6c 69 6b 65 20 53 47  ompilers like SG
1fc0: 49 20 4d 49 50 53 20 22 63 63 22 20 61 6e 64 20  I MIPS "cc" and 
1fd0: 22 63 63 20 2d 63 63 6b 72 22 20 69 66 20 61 20  "cc -cckr" if a 
1fe0: 70 72 6f 74 6f 74 79 70 65 20 69 73 0a 20 20 20  prototype is.   
1ff0: 2a 20 6b 6e 6f 77 6e 20 66 6f 72 20 74 68 65 20  * known for the 
2000: 63 61 6c 6c 65 64 20 66 75 6e 63 74 69 6f 6e 73  called functions
2010: 2e 20 42 75 74 20 74 6f 20 63 6f 6d 70 69 6c 65  . But to compile
2020: 20 61 20 70 72 6f 67 72 61 6d 20 77 69 74 68 20   a program with 
2030: 70 72 6f 74 6f 74 79 70 65 73 2c 0a 20 20 20 2a  prototypes,.   *
2040: 20 22 63 63 20 2d 61 6e 73 69 22 20 69 73 20 62   "cc -ansi" is b
2050: 65 74 74 65 72 20 61 6e 79 77 61 79 2e 0a 20 20  etter anyway..  
2060: 20 2a 2f 0a 20 20 5f 5f 56 41 5f 41 4e 53 49 5f   */.  __VA_ANSI_
2070: 46 4c 4f 41 54 5f 41 52 47 53 09 09 3d 20 30 2c  FLOAT_ARGS..= 0,
2080: 20 20 20 20 2f 2a 20 70 61 73 73 20 66 6c 6f 61      /* pass floa
2090: 74 73 20 61 73 20 66 6c 6f 61 74 73 20 2a 2f 0a  ts as floats */.
20a0: 20 20 5f 5f 56 41 5f 54 52 41 44 49 54 49 4f 4e    __VA_TRADITION
20b0: 41 4c 5f 46 4c 4f 41 54 5f 41 52 47 53 09 3d 20  AL_FLOAT_ARGS.= 
20c0: 31 3c 3c 38 2c 20 2f 2a 20 70 61 73 73 20 66 6c  1<<8, /* pass fl
20d0: 6f 61 74 73 20 61 73 20 64 6f 75 62 6c 65 73 20  oats as doubles 
20e0: 2a 2f 0a 20 20 2f 2a 20 74 68 65 20 64 65 66 61  */.  /* the defa
20f0: 75 6c 74 20 77 61 79 20 74 6f 20 70 61 73 73 20  ult way to pass 
2100: 66 6c 6f 61 74 73 20 2a 2f 0a 20 20 2f 2a 20 54  floats */.  /* T
2110: 68 69 73 20 63 68 6f 69 63 65 20 68 65 72 65 20  his choice here 
2120: 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  is based on the 
2130: 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20  assumption that 
2140: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75  the function you
2150: 20 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20   are.   * going 
2160: 74 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e  to call has been
2170: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
2180: 68 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72  he same compiler
2190: 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74   you are using t
21a0: 6f 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74  o.   * include t
21b0: 68 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49  his file..   * I
21c0: 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61  f you want to ca
21d0: 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74  ll functions wit
21e0: 68 20 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20  h another float 
21f0: 70 61 73 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69  passing conventi
2200: 6f 6e 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23  on,.   * just  #
2210: 64 65 66 69 6e 65 20 5f 5f 56 41 5f 46 4c 4f 41  define __VA_FLOA
2220: 54 5f 41 52 47 53 20 2e 2e 2e 0a 20 20 20 2a 20  T_ARGS ....   * 
2230: 62 65 66 6f 72 65 20 6f 72 20 61 66 74 65 72 20  before or after 
2240: 23 69 6e 63 6c 75 64 69 6e 67 20 3c 76 61 63 61  #including <vaca
2250: 6c 6c 2e 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66  ll.h>..   */.#if
2260: 6e 64 65 66 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  ndef __VA_FLOAT_
2270: 41 52 47 53 0a 23 69 66 20 64 65 66 69 6e 65 64  ARGS.#if defined
2280: 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c 20 64 65  (__STDC__) || de
2290: 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20  fined(__GNUC__) 
22a0: 2f 2a 20 77 68 61 74 20 61 62 6f 75 74 20 68 70  /* what about hp
22b0: 70 61 20 22 63 63 20 2d 41 61 22 20 3f 3f 20 2a  pa "cc -Aa" ?? *
22c0: 2f 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 41  /.  __VA_FLOAT_A
22d0: 52 47 53 09 09 3d 20 5f 5f 56 41 5f 41 4e 53 49  RGS..= __VA_ANSI
22e0: 5f 46 4c 4f 41 54 5f 41 52 47 53 2c 0a 23 65 6c  _FLOAT_ARGS,.#el
22f0: 73 65 0a 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f  se.  __VA_FLOAT_
2300: 41 52 47 53 09 09 3d 20 5f 5f 56 41 5f 54 52 41  ARGS..= __VA_TRA
2310: 44 49 54 49 4f 4e 41 4c 5f 46 4c 4f 41 54 5f 41  DITIONAL_FLOAT_A
2320: 52 47 53 2c 0a 23 65 6e 64 69 66 0a 23 65 6e 64  RGS,.#endif.#end
2330: 69 66 0a 0a 20 20 2f 2a 20 68 6f 77 20 74 6f 20  if..  /* how to 
2340: 70 61 73 73 20 61 6e 64 20 72 65 74 75 72 6e 20  pass and return 
2350: 73 6d 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 72  small integer ar
2360: 67 75 6d 65 6e 74 73 20 2a 2f 0a 20 20 5f 5f 56  guments */.  __V
2370: 41 5f 41 4e 53 49 5f 49 4e 54 45 47 45 52 53 09  A_ANSI_INTEGERS.
2380: 09 3d 20 30 2c 20 2f 2a 20 6e 6f 20 70 72 6f 6d  .= 0, /* no prom
2390: 6f 74 69 6f 6e 73 20 2a 2f 0a 20 20 5f 5f 56 41  otions */.  __VA
23a0: 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e 54  _TRADITIONAL_INT
23b0: 45 47 45 52 53 09 3d 20 30 2c 20 2f 2a 20 70 72  EGERS.= 0, /* pr
23c0: 6f 6d 6f 74 65 20 5b 75 5d 63 68 61 72 2c 20 5b  omote [u]char, [
23d0: 75 5d 73 68 6f 72 74 20 74 6f 20 5b 75 5d 69 6e  u]short to [u]in
23e0: 74 20 2a 2f 0a 20 20 2f 2a 20 46 6f 72 74 75 6e  t */.  /* Fortun
23f0: 61 74 65 6c 79 20 74 68 65 73 65 20 74 77 6f 20  ately these two 
2400: 6d 65 74 68 6f 64 73 20 61 72 65 20 63 6f 6d 70  methods are comp
2410: 61 74 69 62 6c 65 2e 20 4f 75 72 20 6d 61 63 72  atible. Our macr
2420: 6f 73 20 77 6f 72 6b 20 77 69 74 68 20 62 6f 74  os work with bot
2430: 68 2e 20 2a 2f 0a 20 20 2f 2a 20 74 68 65 20 64  h. */.  /* the d
2440: 65 66 61 75 6c 74 20 77 61 79 20 74 6f 20 70 61  efault way to pa
2450: 73 73 20 61 6e 64 20 72 65 74 75 72 6e 20 73 6d  ss and return sm
2460: 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 72 67 75  all integer argu
2470: 6d 65 6e 74 73 20 2a 2f 0a 20 20 2f 2a 20 54 68  ments */.  /* Th
2480: 69 73 20 63 68 6f 69 63 65 20 68 65 72 65 20 69  is choice here i
2490: 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61  s based on the a
24a0: 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 74  ssumption that t
24b0: 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20  he function you 
24c0: 61 72 65 0a 20 20 20 2a 20 67 6f 69 6e 67 20 74  are.   * going t
24d0: 6f 20 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20  o call has been 
24e0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68  compiled with th
24f0: 65 20 73 61 6d 65 20 63 6f 6d 70 69 6c 65 72 20  e same compiler 
2500: 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74 6f  you are using to
2510: 0a 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 74 68  .   * include th
2520: 69 73 20 66 69 6c 65 2e 0a 20 20 20 2a 20 49 66  is file..   * If
2530: 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c   you want to cal
2540: 6c 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68  l functions with
2550: 20 61 6e 6f 74 68 65 72 20 66 6c 6f 61 74 20 70   another float p
2560: 61 73 73 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f  assing conventio
2570: 6e 2c 0a 20 20 20 2a 20 6a 75 73 74 20 20 23 64  n,.   * just  #d
2580: 65 66 69 6e 65 20 5f 5f 56 41 5f 49 4e 54 45 47  efine __VA_INTEG
2590: 45 52 53 20 2e 2e 2e 0a 20 20 20 2a 20 62 65 66  ERS ....   * bef
25a0: 6f 72 65 20 6f 72 20 61 66 74 65 72 20 23 69 6e  ore or after #in
25b0: 63 6c 75 64 69 6e 67 20 3c 76 61 63 61 6c 6c 2e  cluding <vacall.
25c0: 68 3e 2e 0a 20 20 20 2a 2f 0a 23 69 66 6e 64 65  h>..   */.#ifnde
25d0: 66 20 5f 5f 56 41 5f 49 4e 54 45 47 45 52 53 0a  f __VA_INTEGERS.
25e0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 53 54  #if defined(__ST
25f0: 44 43 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  DC__) || defined
2600: 28 5f 5f 47 4e 55 43 5f 5f 29 0a 20 20 5f 5f 56  (__GNUC__).  __V
2610: 41 5f 49 4e 54 45 47 45 52 53 09 09 09 3d 20 5f  A_INTEGERS...= _
2620: 5f 56 41 5f 41 4e 53 49 5f 49 4e 54 45 47 45 52  _VA_ANSI_INTEGER
2630: 53 2c 0a 23 65 6c 73 65 0a 20 20 5f 5f 56 41 5f  S,.#else.  __VA_
2640: 49 4e 54 45 47 45 52 53 09 09 09 3d 20 5f 5f 56  INTEGERS...= __V
2650: 41 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 49 4e  A_TRADITIONAL_IN
2660: 54 45 47 45 52 53 2c 0a 23 65 6e 64 69 66 0a 23  TEGERS,.#endif.#
2670: 65 6e 64 69 66 0a 0a 20 20 2f 2a 20 73 74 61 63  endif..  /* stac
2680: 6b 20 63 6c 65 61 6e 75 70 20 70 6f 6c 69 63 79  k cleanup policy
2690: 20 2a 2f 0a 20 20 5f 5f 56 41 5f 43 44 45 43 4c   */.  __VA_CDECL
26a0: 5f 43 4c 45 41 4e 55 50 09 09 3d 20 30 2c 20 2f  _CLEANUP..= 0, /
26b0: 2a 20 63 61 6c 6c 65 72 20 70 6f 70 73 20 61 72  * caller pops ar
26c0: 67 73 20 61 66 74 65 72 20 72 65 74 75 72 6e 20  gs after return 
26d0: 2a 2f 0a 20 20 5f 5f 56 41 5f 53 54 44 43 41 4c  */.  __VA_STDCAL
26e0: 4c 5f 43 4c 45 41 4e 55 50 09 09 3d 20 31 3c 3c  L_CLEANUP..= 1<<
26f0: 39 2c 20 2f 2a 20 63 61 6c 6c 65 65 20 70 6f 70  9, /* callee pop
2700: 73 20 61 72 67 73 20 62 65 66 6f 72 65 20 72 65  s args before re
2710: 74 75 72 6e 20 2a 2f 0a 09 09 09 09 20 20 20 20  turn */.....    
2720: 20 2f 2a 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e   /* currently on
2730: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
2740: 5f 5f 69 33 38 36 5f 5f 20 2a 2f 0a 23 69 66 6e  __i386__ */.#ifn
2750: 64 65 66 20 5f 5f 56 41 5f 43 4c 45 41 4e 55 50  def __VA_CLEANUP
2760: 0a 20 20 5f 5f 56 41 5f 43 4c 45 41 4e 55 50 09  .  __VA_CLEANUP.
2770: 09 09 3d 20 5f 5f 56 41 5f 43 44 45 43 4c 5f 43  ..= __VA_CDECL_C
2780: 4c 45 41 4e 55 50 2c 0a 23 65 6e 64 69 66 0a 0a  LEANUP,.#endif..
2790: 20 20 2f 2a 20 54 68 65 73 65 20 61 72 65 20 66    /* These are f
27a0: 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20  or internal use 
27b0: 6f 6e 6c 79 20 2a 2f 0a 23 69 66 20 64 65 66 69  only */.#if defi
27c0: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
27d0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
27e0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
27f0: 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65  mipsn32__) || de
2800: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f  fined(__mips64__
2810: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
2820: 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66  parc64__) || def
2830: 69 6e 65 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 20  ined(__alpha__) 
2840: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d  || defined(__arm
2850: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2860: 5f 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65  _rs6000__) || de
2870: 66 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f  fined(__convex__
2880: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69  ) || defined(__i
2890: 61 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  a64__) || define
28a0: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 20 7c 7c  d(__x86_64__) ||
28b0: 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f   defined(__s390_
28c0: 5f 29 0a 20 20 5f 5f 56 41 5f 52 45 47 49 53 54  _).  __VA_REGIST
28d0: 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e  ER_STRUCT_RETURN
28e0: 09 3d 20 31 3c 3c 31 30 2c 0a 23 65 6e 64 69 66  .= 1<<10,.#endif
28f0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d  .#if defined(__m
2900: 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  ips__) && !defin
2910: 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a  ed(__mipsn32__).
2920: 20 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31 09 09    __VA_FLOAT_1..
2930: 09 3d 20 31 3c 3c 31 31 2c 0a 20 20 5f 5f 56 41  .= 1<<11,.  __VA
2940: 5f 46 4c 4f 41 54 5f 32 09 09 09 3d 20 31 3c 3c  _FLOAT_2...= 1<<
2950: 31 32 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  12,.#endif.#if d
2960: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32  efined(__mipsn32
2970: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2980: 5f 6d 69 70 73 36 34 5f 5f 29 0a 20 20 5f 5f 56  _mips64__).  __V
2990: 41 5f 52 45 47 49 53 54 45 52 5f 46 4c 4f 41 54  A_REGISTER_FLOAT
29a0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09 3d 20  STRUCT_RETURN.= 
29b0: 31 3c 3c 31 33 2c 0a 20 20 5f 5f 56 41 5f 52 45  1<<13,.  __VA_RE
29c0: 47 49 53 54 45 52 5f 44 4f 55 42 4c 45 53 54 52  GISTER_DOUBLESTR
29d0: 55 43 54 5f 52 45 54 55 52 4e 09 3d 20 31 3c 3c  UCT_RETURN.= 1<<
29e0: 31 34 2c 0a 23 65 6e 64 69 66 0a 0a 20 20 5f 5f  14,.#endif..  __
29f0: 56 41 5f 66 6c 61 67 5f 66 6f 72 5f 62 72 6f 6b  VA_flag_for_brok
2a00: 65 6e 5f 63 6f 6d 70 69 6c 65 72 73 5f 74 68 61  en_compilers_tha
2a10: 74 5f 64 6f 6e 74 5f 6c 69 6b 65 5f 74 72 61 69  t_dont_like_trai
2a20: 6c 69 6e 67 5f 63 6f 6d 6d 61 73 0a 7d 3b 0a 0a  ling_commas.};..
2a30: 2f 2a 0a 20 2a 20 44 65 66 69 6e 69 74 69 6f 6e  /*. * Definition
2a40: 20 6f 66 20 74 68 65 20 60 76 61 5f 61 6c 69 73   of the `va_alis
2a50: 74 27 20 74 79 70 65 2e 0a 20 2a 2f 0a 74 79 70  t' type.. */.typ
2a60: 65 64 65 66 20 73 74 72 75 63 74 0a 7b 0a 20 20  edef struct.{.  
2a70: 2f 2a 20 73 6f 6d 65 20 76 61 5f 2e 2e 2e 20 6d  /* some va_... m
2a80: 61 63 72 6f 73 20 6e 65 65 64 20 74 68 65 73 65  acros need these
2a90: 20 66 6c 61 67 73 20 2a 2f 0a 20 20 69 6e 74 20   flags */.  int 
2aa0: 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73             flags
2ab0: 3b 0a 20 20 2f 2a 20 63 75 72 72 65 6e 74 20 70  ;.  /* current p
2ac0: 6f 69 6e 74 65 72 20 69 6e 74 6f 20 74 68 65 20  ointer into the 
2ad0: 61 72 67 75 6d 65 6e 74 20 61 72 72 61 79 20 2a  argument array *
2ae0: 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e  /.  unsigned lon
2af0: 67 20 20 61 70 74 72 3b 0a 20 20 2f 2a 20 73 74  g  aptr;.  /* st
2b00: 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 20 70  ructure return p
2b10: 6f 69 6e 74 65 72 2c 20 72 65 74 75 72 6e 20 74  ointer, return t
2b20: 79 70 65 2c 20 72 65 74 75 72 6e 20 74 79 70 65  ype, return type
2b30: 20 73 69 7a 65 20 2a 2f 0a 20 20 76 6f 69 64 2a   size */.  void*
2b40: 20 20 20 20 20 20 20 20 20 20 72 61 64 64 72 3b            raddr;
2b50: 0a 20 20 65 6e 75 6d 20 5f 5f 56 41 74 79 70 65  .  enum __VAtype
2b60: 20 20 72 74 79 70 65 3b 0a 20 20 75 6e 73 69 67    rtype;.  unsig
2b70: 6e 65 64 20 6c 6f 6e 67 20 20 72 73 69 7a 65 3b  ned long  rsize;
2b80: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
2b90: 33 38 36 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e  386__) || (defin
2ba0: 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26  ed(__rs6000__) &
2bb0: 26 20 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48  & defined(__MACH
2bc0: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
2bd0: 5f 41 50 50 4c 45 5f 5f 29 29 0a 20 20 2f 2a 20  _APPLE__)).  /* 
2be0: 46 69 6c 6c 65 72 20 77 6f 72 64 2c 20 6e 65 65  Filler word, nee
2bf0: 64 65 64 20 69 66 20 74 68 65 20 6e 75 6d 62 65  ded if the numbe
2c00: 72 73 20 6f 66 20 77 6f 72 64 73 20 75 70 20 74  rs of words up t
2c10: 6f 20 6e 6f 77 20 69 6e 20 74 68 69 73 20 73 74  o now in this st
2c20: 72 75 63 74 75 72 65 20 2a 2f 0a 20 20 2f 2a 20  ructure */.  /* 
2c30: 69 73 20 6f 64 64 20 28 62 65 63 61 75 73 65 20  is odd (because 
2c40: 6f 6e 20 4d 53 56 43 2c 20 61 6c 69 67 6e 6f 66  on MSVC, alignof
2c50: 28 64 6f 75 62 6c 65 29 20 3d 20 38 2c 20 6e 6f  (double) = 8, no
2c60: 72 6d 61 6c 6c 79 20 3d 20 34 3b 20 73 69 6d 69  rmally = 4; simi
2c70: 6c 61 72 6c 79 2c 20 20 2a 2f 0a 20 20 2f 2a 20  larly,  */.  /* 
2c80: 6f 6e 20 4d 61 63 4f 53 20 58 2c 20 74 68 65 20  on MacOS X, the 
2c90: 41 70 70 6c 65 20 63 6f 6d 70 69 6c 65 72 20 68  Apple compiler h
2ca0: 61 73 20 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c  as alignof(doubl
2cb0: 65 29 20 3d 20 38 20 77 68 65 72 65 61 73 20 74  e) = 8 whereas t
2cc0: 68 65 20 20 20 20 20 20 2a 2f 0a 20 20 2f 2a 20  he      */.  /* 
2cd0: 73 74 61 6e 64 61 72 64 20 47 43 43 20 68 61 73  standard GCC has
2ce0: 20 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29   alignof(double)
2cf0: 20 3d 20 34 2e 20 20 20 20 20 20 20 20 20 20 20   = 4.           
2d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d10: 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 5f 5f 76          */.  __v
2d20: 61 77 6f 72 64 20 20 20 20 20 20 20 66 69 6c 6c  aword       fill
2d30: 65 72 31 3b 0a 23 65 6e 64 69 66 0a 20 20 2f 2a  er1;.#endif.  /*
2d40: 20 74 65 6d 70 6f 72 61 72 79 20 73 74 6f 72 61   temporary stora
2d50: 67 65 20 66 6f 72 20 72 65 74 75 72 6e 20 76 61  ge for return va
2d60: 6c 75 65 20 2a 2f 0a 20 20 75 6e 69 6f 6e 20 7b  lue */.  union {
2d70: 0a 20 20 20 20 63 68 61 72 20 20 20 20 20 20 20  .    char       
2d80: 20 20 20 20 20 20 20 20 20 5f 63 68 61 72 3b 0a           _char;.
2d90: 20 20 20 20 73 69 67 6e 65 64 20 63 68 61 72 20      signed char 
2da0: 20 20 20 20 20 20 20 20 5f 73 63 68 61 72 3b 0a          _schar;.
2db0: 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61      unsigned cha
2dc0: 72 20 20 20 20 20 20 20 5f 75 63 68 61 72 3b 0a  r       _uchar;.
2dd0: 20 20 20 20 73 68 6f 72 74 20 20 20 20 20 20 20      short       
2de0: 20 20 20 20 20 20 20 20 5f 73 68 6f 72 74 3b 0a          _short;.
2df0: 20 20 20 20 75 6e 73 69 67 6e 65 64 20 73 68 6f      unsigned sho
2e00: 72 74 20 20 20 20 20 20 5f 75 73 68 6f 72 74 3b  rt      _ushort;
2e10: 0a 20 20 20 20 69 6e 74 20 20 20 20 20 20 20 20  .    int        
2e20: 20 20 20 20 20 20 20 20 20 5f 69 6e 74 3b 0a 20           _int;. 
2e30: 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20     unsigned int 
2e40: 20 20 20 20 20 20 20 5f 75 69 6e 74 3b 0a 20 20         _uint;.  
2e50: 20 20 6c 6f 6e 67 20 20 20 20 20 20 20 20 20 20    long          
2e60: 20 20 20 20 20 20 5f 6c 6f 6e 67 3b 0a 20 20 20        _long;.   
2e70: 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20   unsigned long  
2e80: 20 20 20 20 20 5f 75 6c 6f 6e 67 3b 0a 23 69 66       _ulong;.#if
2e90: 20 21 28 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70   !(defined(__mip
2ea0: 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  s64__) || define
2eb0: 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 29 20 26 26  d(__alpha__)) &&
2ec0: 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 4c 4f   defined(HAVE_LO
2ed0: 4e 47 4c 4f 4e 47 29 0a 20 20 20 20 6c 6f 6e 67  NGLONG).    long
2ee0: 20 6c 6f 6e 67 20 20 20 20 20 20 20 20 20 20 20   long           
2ef0: 5f 6c 6f 6e 67 6c 6f 6e 67 3b 0a 20 20 20 20 75  _longlong;.    u
2f00: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e  nsigned long lon
2f10: 67 20 20 5f 75 6c 6f 6e 67 6c 6f 6e 67 3b 0a 23  g  _ulonglong;.#
2f20: 65 6e 64 69 66 0a 20 20 20 20 66 6c 6f 61 74 20  endif.    float 
2f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 66                _f
2f40: 6c 6f 61 74 3b 0a 20 20 20 20 64 6f 75 62 6c 65  loat;.    double
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 64                _d
2f60: 6f 75 62 6c 65 3b 0a 20 20 20 20 76 6f 69 64 2a  ouble;.    void*
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
2f80: 70 74 72 3b 0a 20 20 20 20 5f 5f 76 61 77 6f 72  ptr;.    __vawor
2f90: 64 20 20 20 20 20 20 20 20 20 20 20 20 5f 77 6f  d            _wo
2fa0: 72 64 73 5b 32 5d 3b 0a 20 20 7d 20 20 20 20 20  rds[2];.  }     
2fb0: 20 20 20 20 20 20 20 20 20 74 6d 70 3b 0a 23 69           tmp;.#i
2fc0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36  f defined(__i386
2fd0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
2fe0: 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20 28 64 65 66  _m68k__) || (def
2ff0: 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20  ined(__sparc__) 
3000: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f 73 70  && !defined(__sp
3010: 61 72 63 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66  arc64__)) || def
3020: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c  ined(__hppa__) |
3030: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b  | defined(__m88k
3040: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
3050: 5f 69 61 36 34 5f 5f 29 0a 20 20 76 6f 69 64 2a  _ia64__).  void*
3060: 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74            struct
3070: 72 61 64 64 72 3b 0a 23 65 6e 64 69 66 0a 23 69  raddr;.#endif.#i
3080: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
3090: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
30a0: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64  _mipsn32__) || d
30b0: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
30c0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
30d0: 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69  alpha__) || defi
30e0: 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 20 20  ned(__hppa__).  
30f0: 6c 6f 6e 67 20 20 20 20 20 20 20 20 20 20 20 6d  long           m
3100: 65 6d 61 72 67 70 74 72 3b 0a 23 65 6e 64 69 66  emargptr;.#endif
3110: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 68  .#if defined(__h
3120: 70 70 61 5f 5f 29 0a 20 20 6c 6f 6e 67 20 20 20  ppa__).  long   
3130: 20 20 20 20 20 20 20 20 66 61 72 67 5f 6f 66 66          farg_off
3140: 73 65 74 3b 0a 20 20 6c 6f 6e 67 20 20 20 20 20  set;.  long     
3150: 20 20 20 20 20 20 64 61 72 67 5f 6f 66 66 73 65        darg_offse
3160: 74 3b 0a 20 20 66 6c 6f 61 74 20 20 20 20 20 20  t;.  float      
3170: 20 20 20 20 66 61 72 67 5b 34 5d 3b 0a 20 20 64      farg[4];.  d
3180: 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 64 61  ouble         da
3190: 72 67 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23 69  rg[2];.#endif.#i
31a0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
31b0: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
31c0: 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 20 20 69  __mipsn32__).  i
31d0: 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 61 6e  nt            an
31e0: 75 6d 3b 0a 20 20 66 6c 6f 61 74 20 20 20 20 20  um;.  float     
31f0: 20 20 20 20 20 66 61 72 67 5b 32 5d 3b 0a 20 20       farg[2];.  
3200: 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 64  double         d
3210: 61 72 67 5b 32 5d 3b 0a 23 65 6e 64 69 66 0a 23  arg[2];.#endif.#
3220: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
3230: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
3240: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 20  ed(__mips64__). 
3250: 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20   int            
3260: 61 6e 75 6d 3b 0a 20 20 66 6c 6f 61 74 20 20 20  anum;.  float   
3270: 20 20 20 20 20 20 20 66 61 72 67 5b 38 5d 3b 0a         farg[8];.
3280: 20 20 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20    double        
3290: 20 64 61 72 67 5b 38 5d 3b 0a 23 65 6e 64 69 66   darg[8];.#endif
32a0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 73  .#if defined(__s
32b0: 70 61 72 63 36 34 5f 5f 29 0a 20 20 69 6e 74 20  parc64__).  int 
32c0: 20 20 20 20 20 20 20 20 20 20 20 61 6e 75 6d 3b             anum;
32d0: 0a 20 20 66 6c 6f 61 74 20 20 20 20 20 20 20 20  .  float        
32e0: 20 20 66 61 72 67 5b 31 36 5d 3b 0a 20 20 64 6f    farg[16];.  do
32f0: 75 62 6c 65 20 20 20 20 20 20 20 20 20 64 61 72  uble         dar
3300: 67 5b 31 36 5d 3b 0a 23 65 6e 64 69 66 0a 23 69  g[16];.#endif.#i
3310: 66 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30  f defined(__rs60
3320: 30 30 5f 5f 29 0a 20 20 64 6f 75 62 6c 65 2a 20  00__).  double* 
3330: 20 20 20 20 20 20 20 6d 65 6d 66 61 72 67 70 74         memfargpt
3340: 72 3b 0a 20 20 64 6f 75 62 6c 65 20 20 20 20 20  r;.  double     
3350: 20 20 20 20 66 61 72 67 5b 31 33 5d 3b 0a 23 69      farg[13];.#i
3360: 66 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58  f !(defined(_AIX
3370: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
3380: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
3390: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a  ed(__APPLE__))).
33a0: 20 20 5f 5f 76 61 77 6f 72 64 20 20 20 20 20 20    __vaword      
33b0: 20 72 65 67 61 72 67 5b 38 5d 3b 0a 20 20 75 6e   regarg[8];.  un
33c0: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20 73 61 70  signed long  sap
33d0: 74 72 3b 0a 20 20 69 6e 74 20 20 20 20 20 20 20  tr;.  int       
33e0: 20 20 20 20 20 6f 6e 73 74 61 63 6b 3b 0a 23 65       onstack;.#e
33f0: 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20  ndif.#endif.#if 
3400: 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f  defined(__s390__
3410: 29 0a 20 20 66 6c 6f 61 74 2a 20 20 20 20 20 20  ).  float*      
3420: 20 20 20 6d 65 6d 66 61 72 67 70 74 72 3b 0a 20     memfargptr;. 
3430: 20 64 6f 75 62 6c 65 2a 20 20 20 20 20 20 20 20   double*        
3440: 6d 65 6d 64 61 72 67 70 74 72 3b 0a 20 20 66 6c  memdargptr;.  fl
3450: 6f 61 74 20 20 20 20 20 20 20 20 20 20 66 61 72  oat          far
3460: 67 5b 32 5d 3b 0a 20 20 64 6f 75 62 6c 65 20 20  g[2];.  double  
3470: 20 20 20 20 20 20 20 64 61 72 67 5b 32 5d 3b 0a         darg[2];.
3480: 20 20 5f 5f 76 61 77 6f 72 64 20 20 20 20 20 20    __vaword      
3490: 20 72 65 67 61 72 67 5b 35 5d 3b 0a 20 20 75 6e   regarg[5];.  un
34a0: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20 73 61 70  signed long  sap
34b0: 74 72 3b 0a 20 20 69 6e 74 20 20 20 20 20 20 20  tr;.  int       
34c0: 20 20 20 20 20 6f 6e 73 74 61 63 6b 3b 0a 23 65       onstack;.#e
34d0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
34e0: 28 5f 5f 69 61 36 34 5f 5f 29 0a 20 20 5f 5f 76  (__ia64__).  __v
34f0: 61 77 6f 72 64 2a 20 20 20 20 20 20 73 61 70 74  aword*      sapt
3500: 72 3b 0a 20 20 64 6f 75 62 6c 65 2a 20 20 20 20  r;.  double*    
3510: 20 20 20 20 6d 65 6d 66 61 72 67 70 74 72 3b 0a      memfargptr;.
3520: 20 20 64 6f 75 62 6c 65 20 20 20 20 20 20 20 20    double        
3530: 20 66 61 72 67 5b 38 5d 3b 0a 23 65 6e 64 69 66   farg[8];.#endif
3540: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78  .#if defined(__x
3550: 38 36 5f 36 34 5f 5f 29 0a 20 20 64 6f 75 62 6c  86_64__).  doubl
3560: 65 2a 20 20 20 20 20 20 20 20 6d 65 6d 66 61 72  e*        memfar
3570: 67 70 74 72 3b 0a 20 20 64 6f 75 62 6c 65 20 20  gptr;.  double  
3580: 20 20 20 20 20 20 20 66 61 72 67 5b 38 5d 3b 0a         farg[8];.
3590: 20 20 5f 5f 76 61 77 6f 72 64 2a 20 20 20 20 20    __vaword*     
35a0: 20 6d 65 6d 69 61 72 67 70 74 72 3b 0a 20 20 5f   memiargptr;.  _
35b0: 5f 76 61 77 6f 72 64 20 20 20 20 20 20 20 69 61  _vaword       ia
35c0: 72 67 5b 36 5d 3b 0a 23 65 6e 64 69 66 0a 7d 20  rg[6];.#endif.} 
35d0: 5f 5f 76 61 5f 61 6c 69 73 74 3b 0a 0a 74 79 70  __va_alist;..typ
35e0: 65 64 65 66 20 5f 5f 76 61 5f 61 6c 69 73 74 2a  edef __va_alist*
35f0: 20 76 61 5f 61 6c 69 73 74 3b 0a 0a 0a 2f 2a 0a   va_alist;.../*.
3600: 20 2a 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f 66   * Definition of
3610: 20 74 68 65 20 76 61 5f 73 74 61 72 74 5f 78 78   the va_start_xx
3620: 78 20 6d 61 63 72 6f 73 2e 0a 20 2a 2f 0a 23 64  x macros.. */.#d
3630: 65 66 69 6e 65 20 5f 5f 56 41 5f 53 54 41 52 54  efine __VA_START
3640: 5f 46 4c 41 47 53 20 20 5c 0a 20 20 5f 5f 56 41  _FLAGS  \.  __VA
3650: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 7c  _STRUCT_RETURN |
3660: 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 52 45 54 55   __VA_FLOAT_RETU
3670: 52 4e 20 7c 20 5f 5f 56 41 5f 53 54 52 55 43 54  RN | __VA_STRUCT
3680: 5f 41 52 47 53 20 7c 20 5f 5f 56 41 5f 46 4c 4f  _ARGS | __VA_FLO
3690: 41 54 5f 41 52 47 53 20 7c 20 5f 5f 56 41 5f 49  AT_ARGS | __VA_I
36a0: 4e 54 45 47 45 52 53 20 7c 20 5f 5f 56 41 5f 43  NTEGERS | __VA_C
36b0: 4c 45 41 4e 55 50 0a 23 64 65 66 69 6e 65 20 5f  LEANUP.#define _
36c0: 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 52  _va_start(LIST,R
36d0: 45 54 54 59 50 45 29 20 20 5c 0a 20 20 28 28 4c  ETTYPE)  \.  ((L
36e0: 49 53 54 29 2d 3e 66 6c 61 67 73 20 3d 20 5f 5f  IST)->flags = __
36f0: 56 41 5f 53 54 41 52 54 5f 46 4c 41 47 53 2c 09  VA_START_FLAGS,.
3700: 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d  ....\.   (LIST)-
3710: 3e 72 74 79 70 65 20 3d 20 28 52 45 54 54 59 50  >rtype = (RETTYP
3720: 45 29 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 64  E)......\.  ).#d
3730: 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 76  efine va_start_v
3740: 6f 69 64 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f  oid(LIST). __va_
3750: 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 76  start(LIST,__VAv
3760: 6f 69 64 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  oid).#define va_
3770: 73 74 61 72 74 5f 63 68 61 72 28 4c 49 53 54 29  start_char(LIST)
3780: 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53  . __va_start(LIS
3790: 54 2c 5f 5f 56 41 63 68 61 72 29 0a 23 64 65 66  T,__VAchar).#def
37a0: 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 73 63 68  ine va_start_sch
37b0: 61 72 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f 73  ar(LIST). __va_s
37c0: 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 73 63  tart(LIST,__VAsc
37d0: 68 61 72 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  har).#define va_
37e0: 73 74 61 72 74 5f 75 63 68 61 72 28 4c 49 53 54  start_uchar(LIST
37f0: 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49  ). __va_start(LI
3800: 53 54 2c 5f 5f 56 41 75 63 68 61 72 29 0a 23 64  ST,__VAuchar).#d
3810: 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 73  efine va_start_s
3820: 68 6f 72 74 28 4c 49 53 54 29 09 20 5f 5f 76 61  hort(LIST). __va
3830: 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41  _start(LIST,__VA
3840: 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65 20 76  short).#define v
3850: 61 5f 73 74 61 72 74 5f 75 73 68 6f 72 74 28 4c  a_start_ushort(L
3860: 49 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74  IST). __va_start
3870: 28 4c 49 53 54 2c 5f 5f 56 41 75 73 68 6f 72 74  (LIST,__VAushort
3880: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61  ).#define va_sta
3890: 72 74 5f 69 6e 74 28 4c 49 53 54 29 09 20 5f 5f  rt_int(LIST). __
38a0: 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f  va_start(LIST,__
38b0: 56 41 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 76  VAint).#define v
38c0: 61 5f 73 74 61 72 74 5f 75 69 6e 74 28 4c 49 53  a_start_uint(LIS
38d0: 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c  T). __va_start(L
38e0: 49 53 54 2c 5f 5f 56 41 75 69 6e 74 29 0a 23 64  IST,__VAuint).#d
38f0: 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 6c  efine va_start_l
3900: 6f 6e 67 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f  ong(LIST). __va_
3910: 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 6c  start(LIST,__VAl
3920: 6f 6e 67 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  ong).#define va_
3930: 73 74 61 72 74 5f 75 6c 6f 6e 67 28 4c 49 53 54  start_ulong(LIST
3940: 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49  ). __va_start(LI
3950: 53 54 2c 5f 5f 56 41 75 6c 6f 6e 67 29 0a 23 64  ST,__VAulong).#d
3960: 65 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 6c  efine va_start_l
3970: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09 20 5f  onglong(LIST). _
3980: 5f 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f  _va_start(LIST,_
3990: 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65  _VAlonglong).#de
39a0: 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 75 6c  fine va_start_ul
39b0: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 20 5f 5f  onglong(LIST) __
39c0: 76 61 5f 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f  va_start(LIST,__
39d0: 56 41 75 6c 6f 6e 67 6c 6f 6e 67 29 0a 23 64 65  VAulonglong).#de
39e0: 66 69 6e 65 20 76 61 5f 73 74 61 72 74 5f 66 6c  fine va_start_fl
39f0: 6f 61 74 28 4c 49 53 54 29 09 20 5f 5f 76 61 5f  oat(LIST). __va_
3a00: 73 74 61 72 74 28 4c 49 53 54 2c 5f 5f 56 41 66  start(LIST,__VAf
3a10: 6c 6f 61 74 29 0a 23 64 65 66 69 6e 65 20 76 61  loat).#define va
3a20: 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65 28 4c 49  _start_double(LI
3a30: 53 54 29 09 20 5f 5f 76 61 5f 73 74 61 72 74 28  ST). __va_start(
3a40: 4c 49 53 54 2c 5f 5f 56 41 64 6f 75 62 6c 65 29  LIST,__VAdouble)
3a50: 0a 23 64 65 66 69 6e 65 20 76 61 5f 73 74 61 72  .#define va_star
3a60: 74 5f 70 74 72 28 4c 49 53 54 2c 54 59 50 45 29  t_ptr(LIST,TYPE)
3a70: 09 20 5f 5f 76 61 5f 73 74 61 72 74 28 4c 49 53  . __va_start(LIS
3a80: 54 2c 5f 5f 56 41 76 6f 69 64 70 29 0a 0a 2f 2a  T,__VAvoidp)../*
3a90: 0a 20 2a 20 76 61 5f 73 74 61 72 74 5f 73 74 72  . * va_start_str
3aa0: 75 63 74 3a 20 50 72 65 70 61 72 69 6e 67 20 73  uct: Preparing s
3ab0: 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 2e  tructure return.
3ac0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61 5f  . */.#define va_
3ad0: 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c 49 53  start_struct(LIS
3ae0: 54 2c 54 59 50 45 2c 54 59 50 45 5f 53 50 4c 49  T,TYPE,TYPE_SPLI
3af0: 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 5f 76 61  TTABLE)  \.  _va
3b00: 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28 4c 49  _start_struct(LI
3b10: 53 54 2c 73 69 7a 65 6f 66 28 54 59 50 45 29 2c  ST,sizeof(TYPE),
3b20: 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 54 59 50  __VA_alignof(TYP
3b30: 45 29 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  E),TYPE_SPLITTAB
3b40: 4c 45 29 0a 2f 2a 20 5f 76 61 5f 73 74 61 72 74  LE)./* _va_start
3b50: 5f 73 74 72 75 63 74 28 29 20 69 73 20 6c 69 6b  _struct() is lik
3b60: 65 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  e va_start_struc
3b70: 74 28 29 2c 20 65 78 63 65 70 74 20 74 68 61 74  t(), except that
3b80: 20 79 6f 75 20 70 61 73 73 0a 20 2a 20 74 68 65   you pass. * the
3b90: 20 74 79 70 65 27 73 20 73 69 7a 65 20 61 6e 64   type's size and
3ba0: 20 61 6c 69 67 6e 6d 65 6e 74 20 69 6e 73 74 65   alignment inste
3bb0: 61 64 20 6f 66 20 74 68 65 20 74 79 70 65 20 69  ad of the type i
3bc0: 74 73 65 6c 66 2e 0a 20 2a 2f 0a 23 64 65 66 69  tself.. */.#defi
3bd0: 6e 65 20 5f 76 61 5f 73 74 61 72 74 5f 73 74 72  ne _va_start_str
3be0: 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  uct(LIST,TYPE_SI
3bf0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59  ZE,TYPE_ALIGN,TY
3c00: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
3c10: 5c 0a 20 20 28 5f 5f 76 61 5f 73 74 61 72 74 28  \.  (__va_start(
3c20: 4c 49 53 54 2c 5f 5f 56 41 73 74 72 75 63 74 29  LIST,__VAstruct)
3c30: 2c 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53  ,......\.   (LIS
3c40: 54 29 2d 3e 72 73 69 7a 65 20 3d 20 28 54 59 50  T)->rsize = (TYP
3c50: 45 5f 53 49 5a 45 29 2c 09 09 09 09 09 09 5c 0a  E_SIZE),......\.
3c60: 20 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67     ((LIST)->flag
3c70: 73 20 26 20 5f 5f 56 41 5f 53 55 4e 50 52 4f 43  s & __VA_SUNPROC
3c80: 43 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 09  C_STRUCT_RETURN.
3c90: 09 09 09 5c 0a 20 20 20 20 3f 20 5f 5f 76 61 5f  ...\.    ? __va_
3ca0: 73 74 61 72 74 5f 73 74 72 75 63 74 32 28 4c 49  start_struct2(LI
3cb0: 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 20 3a  ST)......\.    :
3cc0: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
3cd0: 26 20 28 5f 5f 56 41 5f 50 43 43 5f 53 54 52 55  & (__VA_PCC_STRU
3ce0: 43 54 5f 52 45 54 55 52 4e 20 7c 20 5f 5f 56 41  CT_RETURN | __VA
3cf0: 5f 53 55 4e 43 43 5f 53 54 52 55 43 54 5f 52 45  _SUNCC_STRUCT_RE
3d00: 54 55 52 4e 29 20 5c 0a 20 20 20 20 20 20 20 3f  TURN) \.       ?
3d10: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d   ((TYPE_SIZE) <=
3d20: 20 73 69 7a 65 6f 66 28 5f 5f 76 61 5f 73 74 72   sizeof(__va_str
3d30: 75 63 74 5f 62 75 66 66 65 72 29 20 7c 7c 20 5f  uct_buffer) || _
3d40: 5f 76 61 5f 65 72 72 6f 72 32 28 54 59 50 45 5f  _va_error2(TYPE_
3d50: 53 49 5a 45 29 2c 20 5c 0a 20 20 20 20 20 20 20  SIZE), \.       
3d60: 20 20 20 28 4c 49 53 54 29 2d 3e 72 61 64 64 72     (LIST)->raddr
3d70: 20 3d 20 26 5f 5f 76 61 5f 73 74 72 75 63 74 5f   = &__va_struct_
3d80: 62 75 66 66 65 72 2c 09 09 09 09 5c 0a 20 20 20  buffer,....\.   
3d90: 20 20 20 20 20 20 20 30 09 09 09 09 09 09 09 09         0........
3da0: 5c 0a 20 20 20 20 20 20 20 20 20 29 09 09 09 09  \.         )....
3db0: 09 09 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 28  ....\.       : (
3dc0: 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26  ((LIST)->flags &
3dd0: 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55   __VA_SMALL_STRU
3de0: 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20  CT_RETURN)...\. 
3df0: 20 20 20 20 20 20 20 20 20 26 26 20 5f 5f 76 61           && __va
3e00: 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75  _reg_struct_retu
3e10: 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  rn(LIST,TYPE_SIZ
3e20: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  E,TYPE_SPLITTABL
3e30: 45 29 09 5c 0a 20 20 20 20 20 20 20 20 20 20 3f  E).\.          ?
3e40: 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20   ((LIST)->raddr 
3e50: 3d 20 26 28 4c 49 53 54 29 2d 3e 74 6d 70 2c 09  = &(LIST)->tmp,.
3e60: 09 09 09 5c 0a 20 20 20 20 20 20 20 20 20 20 20  ...\.           
3e70: 20 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72    __va_start_str
3e80: 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53  uct1(LIST,TYPE_S
3e90: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54  IZE,TYPE_ALIGN,T
3ea0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
3eb0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 09  \.            ).
3ec0: 09 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20  .......\.       
3ed0: 20 20 20 3a 20 5f 5f 76 61 5f 73 74 61 72 74 5f     : __va_start_
3ee0: 73 74 72 75 63 74 32 28 4c 49 53 54 29 09 09 09  struct2(LIST)...
3ef0: 09 09 5c 0a 20 20 29 29 20 20 29 20 20 29 0a 2f  ..\.  ))  )  )./
3f00: 2a 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  * Determines whe
3f10: 74 68 65 72 20 61 20 73 74 72 75 63 74 75 72 65  ther a structure
3f20: 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 6e 20   is returned in 
3f30: 72 65 67 69 73 74 65 72 73 2c 0a 20 2a 20 64 65  registers,. * de
3f40: 70 65 6e 64 69 6e 67 20 6f 6e 20 69 74 73 20 73  pending on its s
3f50: 69 7a 65 20 61 6e 64 20 69 74 73 20 77 6f 72 64  ize and its word
3f60: 2d 73 70 6c 69 74 74 61 62 6c 65 20 66 6c 61 67  -splittable flag
3f70: 2e 0a 20 2a 2f 0a 23 69 66 20 28 64 65 66 69 6e  .. */.#if (defin
3f80: 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 26 26 20  ed(__i386__) && 
3f90: 64 65 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 29  defined(_WIN32))
3fa0: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65  .#define __va_re
3fb0: 67 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28  g_struct_return(
3fc0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
3fd0: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
3fe0: 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45   \.  ((TYPE_SIZE
3ff0: 29 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f  ) == 1 || (TYPE_
4000: 53 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54  SIZE) == 2 || (T
4010: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 09 09  YPE_SIZE) == 4..
4020: 5c 0a 20 20 20 7c 7c 20 28 28 54 59 50 45 5f 53  \.   || ((TYPE_S
4030: 49 5a 45 29 20 3d 3d 20 38 09 09 09 09 09 09 09  IZE) == 8.......
4040: 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28 28 4c  \.       && (((L
4050: 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f  IST)->flags & __
4060: 56 41 5f 4d 53 56 43 5f 53 54 52 55 43 54 5f 52  VA_MSVC_STRUCT_R
4070: 45 54 55 52 4e 29 09 09 09 5c 0a 20 20 20 20 20  ETURN)...\.     
4080: 20 20 20 20 20 20 7c 7c 20 28 28 54 59 50 45 5f        || ((TYPE_
4090: 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09 09  SPLITTABLE).....
40a0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  \.              
40b0: 20 26 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61   && ((LIST)->fla
40c0: 67 73 20 26 20 5f 5f 56 41 5f 47 43 43 5f 53 54  gs & __VA_GCC_ST
40d0: 52 55 43 54 5f 52 45 54 55 52 4e 29 09 09 5c 0a  RUCT_RETURN)..\.
40e0: 20 20 29 20 20 20 29 20 20 20 29 20 20 20 29 0a    )   )   )   ).
40f0: 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f  /* Turn on __VA_
4100: 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54 5f  REGISTER_STRUCT_
4110: 52 45 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53  RETURN if __VA_S
4120: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
4130: 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61 6e  RN was set. * an
4140: 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69 6c  d the struct wil
4150: 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72 65  l actually be re
4160: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74  turned in regist
4170: 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65  ers.. */.#define
4180: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
4190: 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ct1(LIST,TYPE_SI
41a0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59  ZE,TYPE_ALIGN,TY
41b0: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
41c0: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61  \.  ((LIST)->fla
41d0: 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53  gs |= __VA_REGIS
41e0: 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52  TER_STRUCT_RETUR
41f0: 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66  N, 0).#endif.#if
4200: 20 28 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36   (defined(__i386
4210: 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  __) && !defined(
4220: 5f 57 49 4e 33 32 29 29 20 7c 7c 20 64 65 66 69  _WIN32)) || defi
4230: 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c  ned(__m68k__) ||
4240: 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f   defined(__arm__
4250: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72  ) || defined(__r
4260: 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69  s6000__) || defi
4270: 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20  ned(__convex__) 
4280: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39  || defined(__s39
4290: 30 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76  0__).#define __v
42a0: 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74  a_reg_struct_ret
42b0: 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  urn(LIST,TYPE_SI
42c0: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
42d0: 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f  LE)  \.  ((TYPE_
42e0: 53 49 5a 45 29 20 3d 3d 20 31 20 7c 7c 20 28 54  SIZE) == 1 || (T
42f0: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 32 20 7c  YPE_SIZE) == 2 |
4300: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
4310: 20 34 09 09 5c 0a 20 20 20 7c 7c 20 28 28 54 59   4..\.   || ((TY
4320: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 38 20 26 26  PE_SIZE) == 8 &&
4330: 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c   (TYPE_SPLITTABL
4340: 45 29 09 09 09 09 5c 0a 20 20 20 20 20 20 20 26  E)....\.       &
4350: 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73  & ((LIST)->flags
4360: 20 26 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55   & __VA_GCC_STRU
4370: 43 54 5f 52 45 54 55 52 4e 29 09 09 09 5c 0a 20  CT_RETURN)...\. 
4380: 20 29 20 20 20 29 0a 2f 2a 20 54 75 72 6e 20 6f   )   )./* Turn o
4390: 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f  n __VA_REGISTER_
43a0: 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69 66  STRUCT_RETURN if
43b0: 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52 55   __VA_SMALL_STRU
43c0: 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73 65  CT_RETURN was se
43d0: 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74 72  t. * and the str
43e0: 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c  uct will actuall
43f0: 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e  y be returned in
4400: 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f 0a   registers.. */.
4410: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74 61  #define __va_sta
4420: 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54 2c  rt_struct1(LIST,
4430: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
4440: 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54 54  LIGN,TYPE_SPLITT
4450: 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49 53  ABLE)  \.  ((LIS
4460: 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56  T)->flags |= __V
4470: 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43  A_REGISTER_STRUC
4480: 54 5f 52 45 54 55 52 4e 2c 20 30 29 0a 23 65 6e  T_RETURN, 0).#en
4490: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
44a0: 5f 5f 61 6c 70 68 61 5f 5f 29 0a 23 64 65 66 69  __alpha__).#defi
44b0: 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72 75  ne __va_reg_stru
44c0: 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 54  ct_return(LIST,T
44d0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53 50  YPE_SIZE,TYPE_SP
44e0: 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 28  LITTABLE)  \.  (
44f0: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31  (TYPE_SIZE) == 1
4500: 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20   || (TYPE_SIZE) 
4510: 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49  == 2 || (TYPE_SI
4520: 5a 45 29 20 3d 3d 20 34 20 7c 7c 20 28 54 59 50  ZE) == 4 || (TYP
4530: 45 5f 53 49 5a 45 29 20 3d 3d 20 38 09 5c 0a 20  E_SIZE) == 8.\. 
4540: 20 20 7c 7c 20 28 28 54 59 50 45 5f 53 49 5a 45    || ((TYPE_SIZE
4550: 29 20 3d 3d 20 31 36 20 26 26 20 28 54 59 50 45  ) == 16 && (TYPE
4560: 5f 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09  _SPLITTABLE)....
4570: 5c 0a 20 20 20 20 20 20 20 26 26 20 28 28 4c 49  \.       && ((LI
4580: 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f 56  ST)->flags & __V
4590: 41 5f 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54  A_GCC_STRUCT_RET
45a0: 55 52 4e 29 09 09 09 5c 0a 20 20 29 20 20 20 29  URN)...\.  )   )
45b0: 0a 2f 2a 20 54 75 72 6e 20 6f 6e 20 5f 5f 56 41  ./* Turn on __VA
45c0: 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55 43 54  _REGISTER_STRUCT
45d0: 5f 52 45 54 55 52 4e 20 69 66 20 5f 5f 56 41 5f  _RETURN if __VA_
45e0: 53 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54  SMALL_STRUCT_RET
45f0: 55 52 4e 20 77 61 73 20 73 65 74 0a 20 2a 20 61  URN was set. * a
4600: 6e 64 20 74 68 65 20 73 74 72 75 63 74 20 77 69  nd the struct wi
4610: 6c 6c 20 61 63 74 75 61 6c 6c 79 20 62 65 20 72  ll actually be r
4620: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73  eturned in regis
4630: 74 65 72 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e  ters.. */.#defin
4640: 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72  e __va_start_str
4650: 75 63 74 31 28 4c 49 53 54 2c 54 59 50 45 5f 53  uct1(LIST,TYPE_S
4660: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54  IZE,TYPE_ALIGN,T
4670: 59 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20  YPE_SPLITTABLE) 
4680: 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c   \.  ((LIST)->fl
4690: 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49  ags |= __VA_REGI
46a0: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55  STER_STRUCT_RETU
46b0: 52 4e 2c 20 30 29 0a 23 65 6e 64 69 66 0a 23 69  RN, 0).#endif.#i
46c0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  f defined(__hppa
46d0: 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61  __).#define __va
46e0: 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74 75  _reg_struct_retu
46f0: 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  rn(LIST,TYPE_SIZ
4700: 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c  E,TYPE_SPLITTABL
4710: 45 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  E)  \.  ((LIST)-
4720: 3e 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 4f 4c  >flags & __VA_OL
4730: 44 47 43 43 5f 53 54 52 55 43 54 5f 52 45 54 55  DGCC_STRUCT_RETU
4740: 52 4e 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 54  RN....\.   ? ((T
4750: 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 31 20 7c  YPE_SIZE) == 1 |
4760: 7c 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d  | (TYPE_SIZE) ==
4770: 20 32 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45   2 || (TYPE_SIZE
4780: 29 20 3d 3d 20 34 29 09 09 5c 0a 20 20 20 3a 20  ) == 4)..\.   : 
4790: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 3d 20  ((TYPE_SIZE) <= 
47a0: 38 29 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 2f  8).......\.  )./
47b0: 2a 20 54 65 73 74 20 62 6f 74 68 20 5f 5f 56 41  * Test both __VA
47c0: 5f 4f 4c 44 47 43 43 5f 53 54 52 55 43 54 5f 52  _OLDGCC_STRUCT_R
47d0: 45 54 55 52 4e 20 61 6e 64 20 5f 5f 56 41 5f 53  ETURN and __VA_S
47e0: 4d 41 4c 4c 5f 53 54 52 55 43 54 5f 52 45 54 55  MALL_STRUCT_RETU
47f0: 52 4e 20 61 74 20 72 75 6e 20 74 69 6d 65 2e 20  RN at run time. 
4800: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
4810: 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49  start_struct1(LI
4820: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4830: 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c  E_ALIGN,TYPE_SPL
4840: 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 30 0a  ITTABLE)  \.  0.
4850: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
4860: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20  ed(__mips__) && 
4870: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e  !defined(__mipsn
4880: 33 32 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65  32__) || (define
4890: 64 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20  d(__sparc__) && 
48a0: 21 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63  !defined(__sparc
48b0: 36 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65  64__)) || define
48c0: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 23 64 65 66  d(__m88k__).#def
48d0: 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73 74 72  ine __va_reg_str
48e0: 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c  uct_return(LIST,
48f0: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 53  TYPE_SIZE,TYPE_S
4900: 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20  PLITTABLE)  \.  
4910: 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20  ((TYPE_SIZE) == 
4920: 31 20 7c 7c 20 28 54 59 50 45 5f 53 49 5a 45 29  1 || (TYPE_SIZE)
4930: 20 3d 3d 20 32 20 7c 7c 20 28 54 59 50 45 5f 53   == 2 || (TYPE_S
4940: 49 5a 45 29 20 3d 3d 20 34 29 0a 2f 2a 20 54 65  IZE) == 4)./* Te
4950: 73 74 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54  st __VA_SMALL_ST
4960: 52 55 43 54 5f 52 45 54 55 52 4e 20 69 6e 73 74  RUCT_RETURN inst
4970: 65 61 64 20 6f 66 20 5f 5f 56 41 5f 52 45 47 49  ead of __VA_REGI
4980: 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54 55  STER_STRUCT_RETU
4990: 52 4e 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e  RN. */.#if defin
49a0: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20  ed(__mips__) && 
49b0: 21 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e  !defined(__mipsn
49c0: 33 32 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f  32__).#define __
49d0: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31  va_start_struct1
49e0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
49f0: 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f  TYPE_ALIGN,TYPE_
4a00: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
4a10: 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 2b 2b   ((LIST)->anum++
4a20: 2c 09 09 09 09 09 09 09 5c 0a 20 20 20 30 09 09  ,.......\.   0..
4a30: 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6c  .......\.  ).#el
4a40: 73 65 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  se.#define __va_
4a50: 73 74 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49  start_struct1(LI
4a60: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
4a70: 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c  E_ALIGN,TYPE_SPL
4a80: 49 54 54 41 42 4c 45 29 20 20 5c 0a 20 20 30 0a  ITTABLE)  \.  0.
4a90: 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a 23 69  #endif.#endif.#i
4aa0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
4ab0: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
4ac0: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 23 64  d(__mips64__).#d
4ad0: 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67 5f 73  efine __va_reg_s
4ae0: 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c 49 53  truct_return(LIS
4af0: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
4b00: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4b10: 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73    ((LIST)->flags
4b20: 20 26 20 5f 5f 56 41 5f 47 43 43 5f 53 54 52 55   & __VA_GCC_STRU
4b30: 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20  CT_RETURN....\. 
4b40: 20 20 3f 20 28 28 54 59 50 45 5f 53 49 5a 45 29    ? ((TYPE_SIZE)
4b50: 20 3d 3d 20 31 20 7c 7c 20 28 54 59 50 45 5f 53   == 1 || (TYPE_S
4b60: 49 5a 45 29 20 3d 3d 20 32 20 7c 7c 20 28 54 59  IZE) == 2 || (TY
4b70: 50 45 5f 53 49 5a 45 29 20 3d 3d 20 34 20 7c 7c  PE_SIZE) == 4 ||
4b80: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20   (TYPE_SIZE) == 
4b90: 38 29 20 5c 0a 20 20 20 3a 20 28 28 54 59 50 45  8) \.   : ((TYPE
4ba0: 5f 53 49 5a 45 29 20 3c 3d 20 31 36 29 09 09 09  _SIZE) <= 16)...
4bb0: 09 09 09 5c 0a 20 20 29 0a 2f 2a 20 54 75 72 6e  ...\.  )./* Turn
4bc0: 20 6f 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54 45   on __VA_REGISTE
4bd0: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  R_STRUCT_RETURN 
4be0: 69 66 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54  if __VA_SMALL_ST
4bf0: 52 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20  RUCT_RETURN was 
4c00: 73 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73  set. * and the s
4c10: 74 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61  truct will actua
4c20: 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64 20  lly be returned 
4c30: 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 41 6c  in registers. Al
4c40: 73 6f 20 74 75 72 6e 20 6f 6e 0a 20 2a 20 5f 5f  so turn on. * __
4c50: 56 41 5f 52 45 47 49 53 54 45 52 5f 46 4c 4f 41  VA_REGISTER_FLOA
4c60: 54 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 6f  TSTRUCT_RETURN o
4c70: 72 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52 5f  r __VA_REGISTER_
4c80: 44 4f 55 42 4c 45 53 54 52 55 43 54 5f 52 45 54  DOUBLESTRUCT_RET
4c90: 55 52 4e 20 69 66 0a 20 2a 20 74 68 65 20 73 74  URN if. * the st
4ca0: 72 75 63 74 20 77 69 6c 6c 20 62 65 20 72 65 74  ruct will be ret
4cb0: 75 72 6e 65 64 20 69 6e 20 66 6c 6f 61 74 69 6e  urned in floatin
4cc0: 67 2d 70 6f 69 6e 74 20 72 65 67 69 73 74 65 72  g-point register
4cd0: 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  s.. */.#define _
4ce0: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
4cf0: 31 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  1(LIST,TYPE_SIZE
4d00: 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45  ,TYPE_ALIGN,TYPE
4d10: 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a  _SPLITTABLE)  \.
4d20: 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73    ((LIST)->flags
4d30: 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45   |= __VA_REGISTE
4d40: 52 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c  R_STRUCT_RETURN,
4d50: 09 09 09 09 5c 0a 20 20 20 28 54 59 50 45 5f 41  ....\.   (TYPE_A
4d60: 4c 49 47 4e 29 20 3d 3d 20 73 69 7a 65 6f 66 28  LIGN) == sizeof(
4d70: 66 6c 6f 61 74 29 20 26 26 20 28 54 59 50 45 5f  float) && (TYPE_
4d80: 53 50 4c 49 54 54 41 42 4c 45 29 09 09 09 09 5c  SPLITTABLE)....\
4d90: 0a 20 20 20 20 26 26 20 28 28 54 59 50 45 5f 53  .    && ((TYPE_S
4da0: 49 5a 45 29 20 3d 3d 20 73 69 7a 65 6f 66 28 66  IZE) == sizeof(f
4db0: 6c 6f 61 74 29 20 7c 7c 20 28 54 59 50 45 5f 53  loat) || (TYPE_S
4dc0: 49 5a 45 29 20 3d 3d 20 32 2a 73 69 7a 65 6f 66  IZE) == 2*sizeof
4dd0: 28 66 6c 6f 61 74 29 29 09 09 5c 0a 20 20 20 20  (float))..\.    
4de0: 26 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  && ((LIST)->flag
4df0: 73 20 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54  s |= __VA_REGIST
4e00: 45 52 5f 46 4c 4f 41 54 53 54 52 55 43 54 5f 52  ER_FLOATSTRUCT_R
4e10: 45 54 55 52 4e 29 2c 09 09 09 5c 0a 20 20 20 28  ETURN),...\.   (
4e20: 54 59 50 45 5f 41 4c 49 47 4e 29 20 3d 3d 20 73  TYPE_ALIGN) == s
4e30: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 20 26 26  izeof(double) &&
4e40: 20 28 54 59 50 45 5f 53 50 4c 49 54 54 41 42 4c   (TYPE_SPLITTABL
4e50: 45 29 09 09 09 09 5c 0a 20 20 20 20 26 26 20 28  E)....\.    && (
4e60: 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20 73  (TYPE_SIZE) == s
4e70: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 20 7c 7c  izeof(double) ||
4e80: 20 28 54 59 50 45 5f 53 49 5a 45 29 20 3d 3d 20   (TYPE_SIZE) == 
4e90: 32 2a 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  2*sizeof(double)
4ea0: 29 09 5c 0a 20 20 20 20 26 26 20 28 28 4c 49 53  ).\.    && ((LIS
4eb0: 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f 56  T)->flags |= __V
4ec0: 41 5f 52 45 47 49 53 54 45 52 5f 44 4f 55 42 4c  A_REGISTER_DOUBL
4ed0: 45 53 54 52 55 43 54 5f 52 45 54 55 52 4e 29 2c  ESTRUCT_RETURN),
4ee0: 09 09 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64 69  ...\.   0).#endi
4ef0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
4f00: 73 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65  sparc64__) || de
4f10: 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a  fined(__ia64__).
4f20: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 72 65 67  #define __va_reg
4f30: 5f 73 74 72 75 63 74 5f 72 65 74 75 72 6e 28 4c  _struct_return(L
4f40: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
4f50: 50 45 5f 53 50 4c 49 54 54 41 42 4c 45 29 20 20  PE_SPLITTABLE)  
4f60: 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29  \.  ((TYPE_SIZE)
4f70: 20 3c 3d 20 33 32 29 0a 2f 2a 20 54 75 72 6e 20   <= 32)./* Turn 
4f80: 6f 6e 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  on __VA_REGISTER
4f90: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20 69  _STRUCT_RETURN i
4fa0: 66 20 5f 5f 56 41 5f 53 4d 41 4c 4c 5f 53 54 52  f __VA_SMALL_STR
4fb0: 55 43 54 5f 52 45 54 55 52 4e 20 77 61 73 20 73  UCT_RETURN was s
4fc0: 65 74 0a 20 2a 20 61 6e 64 20 74 68 65 20 73 74  et. * and the st
4fd0: 72 75 63 74 20 77 69 6c 6c 20 61 63 74 75 61 6c  ruct will actual
4fe0: 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  ly be returned i
4ff0: 6e 20 72 65 67 69 73 74 65 72 73 2e 0a 20 2a 2f  n registers.. */
5000: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74  .#define __va_st
5010: 61 72 74 5f 73 74 72 75 63 74 31 28 4c 49 53 54  art_struct1(LIST
5020: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
5030: 41 4c 49 47 4e 2c 54 59 50 45 5f 53 50 4c 49 54  ALIGN,TYPE_SPLIT
5040: 54 41 42 4c 45 29 20 20 5c 0a 20 20 28 28 4c 49  TABLE)  \.  ((LI
5050: 53 54 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 5f 5f  ST)->flags |= __
5060: 56 41 5f 52 45 47 49 53 54 45 52 5f 53 54 52 55  VA_REGISTER_STRU
5070: 43 54 5f 52 45 54 55 52 4e 2c 09 09 09 09 5c 0a  CT_RETURN,....\.
5080: 20 20 20 30 29 0a 23 65 6e 64 69 66 0a 23 69 66     0).#endif.#if
5090: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
50a0: 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76  4__).#define __v
50b0: 61 5f 72 65 67 5f 73 74 72 75 63 74 5f 72 65 74  a_reg_struct_ret
50c0: 75 72 6e 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  urn(LIST,TYPE_SI
50d0: 5a 45 2c 54 59 50 45 5f 53 50 4c 49 54 54 41 42  ZE,TYPE_SPLITTAB
50e0: 4c 45 29 20 20 5c 0a 20 20 28 28 54 59 50 45 5f  LE)  \.  ((TYPE_
50f0: 53 49 5a 45 29 20 3c 3d 20 31 36 29 0a 2f 2a 20  SIZE) <= 16)./* 
5100: 54 75 72 6e 20 6f 6e 20 5f 5f 56 41 5f 52 45 47  Turn on __VA_REG
5110: 49 53 54 45 52 5f 53 54 52 55 43 54 5f 52 45 54  ISTER_STRUCT_RET
5120: 55 52 4e 20 69 66 20 5f 5f 56 41 5f 53 4d 41 4c  URN if __VA_SMAL
5130: 4c 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 20  L_STRUCT_RETURN 
5140: 77 61 73 20 73 65 74 0a 20 2a 20 61 6e 64 20 74  was set. * and t
5150: 68 65 20 73 74 72 75 63 74 20 77 69 6c 6c 20 61  he struct will a
5160: 63 74 75 61 6c 6c 79 20 62 65 20 72 65 74 75 72  ctually be retur
5170: 6e 65 64 20 69 6e 20 72 65 67 69 73 74 65 72 73  ned in registers
5180: 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  .. */.#define __
5190: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 31  va_start_struct1
51a0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
51b0: 54 59 50 45 5f 41 4c 49 47 4e 2c 54 59 50 45 5f  TYPE_ALIGN,TYPE_
51c0: 53 50 4c 49 54 54 41 42 4c 45 29 20 20 5c 0a 20  SPLITTABLE)  \. 
51d0: 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20   ((LIST)->flags 
51e0: 7c 3d 20 5f 5f 56 41 5f 52 45 47 49 53 54 45 52  |= __VA_REGISTER
51f0: 5f 53 54 52 55 43 54 5f 52 45 54 55 52 4e 2c 09  _STRUCT_RETURN,.
5200: 09 09 09 5c 0a 20 20 20 30 29 0a 23 65 6e 64 69  ...\.   0).#endi
5210: 66 0a 2f 2a 0a 20 2a 20 50 72 65 70 61 72 69 6e  f./*. * Preparin
5220: 67 20 73 74 72 75 63 74 75 72 65 20 72 65 74 75  g structure retu
5230: 72 6e 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 2a  rn in memory.. *
5240: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
5250: 69 33 38 36 5f 5f 29 0a 2f 2a 20 52 65 74 75 72  i386__)./* Retur
5260: 6e 20 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e  n structure poin
5270: 74 65 72 20 69 73 20 70 61 73 73 65 64 20 69 6e  ter is passed in
5280: 20 61 20 73 70 65 63 69 61 6c 20 72 65 67 69 73   a special regis
5290: 74 65 72 20 6f 72 20 61 73 20 66 69 72 73 74 20  ter or as first 
52a0: 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  arg. */.#define 
52b0: 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63  __va_start_struc
52c0: 74 32 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28  t2(LIST)  \.  ((
52d0: 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f  LIST)->flags & _
52e0: 5f 56 41 5f 4e 45 58 54 47 43 43 5f 53 54 52 55  _VA_NEXTGCC_STRU
52f0: 43 54 5f 52 45 54 55 52 4e 09 09 09 09 5c 0a 20  CT_RETURN....\. 
5300: 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 72 61 64    ? ((LIST)->rad
5310: 64 72 20 3d 20 28 4c 49 53 54 29 2d 3e 73 74 72  dr = (LIST)->str
5320: 75 63 74 72 61 64 64 72 2c 20 30 29 09 20 2f 2a  uctraddr, 0). /*
5330: 20 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65   special registe
5340: 72 20 2a 2f 09 5c 0a 20 20 20 3a 20 28 28 4c 49  r */.\.   : ((LI
5350: 53 54 29 2d 3e 72 61 64 64 72 20 3d 20 2a 28 76  ST)->raddr = *(v
5360: 6f 69 64 2a 20 2a 29 28 28 4c 49 53 54 29 2d 3e  oid* *)((LIST)->
5370: 61 70 74 72 29 2c 09 09 2f 2a 20 66 69 72 73 74  aptr),../* first
5380: 20 61 72 67 20 2a 2f 09 5c 0a 20 20 20 20 20 20   arg */.\.      
5390: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
53a0: 73 69 7a 65 6f 66 28 76 6f 69 64 2a 29 2c 09 09  sizeof(void*),..
53b0: 09 09 09 5c 0a 20 20 20 20 20 20 30 09 09 09 09  ...\.      0....
53c0: 09 09 09 09 09 5c 0a 20 20 29 20 20 29 0a 23 65  .....\.  )  ).#e
53d0: 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64  ndif.#if defined
53e0: 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64  (__alpha__) || d
53f0: 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20  efined(__arm__) 
5400: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36  || defined(__rs6
5410: 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  000__) || define
5420: 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 20 7c  d(__convex__)  |
5430: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33 39 30  | defined(__s390
5440: 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74  __)./* Return st
5450: 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20  ructure pointer 
5460: 69 73 20 70 61 73 73 65 64 20 61 73 20 66 69 72  is passed as fir
5470: 73 74 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69  st arg. */.#defi
5480: 6e 65 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74  ne __va_start_st
5490: 72 75 63 74 32 28 4c 49 53 54 29 20 20 5c 0a 20  ruct2(LIST)  \. 
54a0: 20 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20   ((LIST)->raddr 
54b0: 3d 20 2a 28 76 6f 69 64 2a 20 2a 29 28 28 4c 49  = *(void* *)((LI
54c0: 53 54 29 2d 3e 61 70 74 72 29 2c 09 09 09 09 5c  ST)->aptr),....\
54d0: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
54e0: 20 2b 3d 20 73 69 7a 65 6f 66 28 76 6f 69 64 2a   += sizeof(void*
54f0: 29 2c 09 09 09 09 09 5c 0a 20 20 20 30 09 09 09  ),.....\.   0...
5500: 09 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64  ......\.  ).#end
5510: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
5520: 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20 64 65 66 69  _mips__) || defi
5530: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
5540: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69   || defined(__mi
5550: 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  ps64__) || defin
5560: 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a  ed(__sparc64__).
5570: 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75 63 74  /* Return struct
5580: 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70  ure pointer is p
5590: 61 73 73 65 64 20 61 73 20 66 69 72 73 74 20 61  assed as first a
55a0: 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  rg. */.#define _
55b0: 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74  _va_start_struct
55c0: 32 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c  2(LIST)  \.  ((L
55d0: 49 53 54 29 2d 3e 72 61 64 64 72 20 3d 20 2a 28  IST)->raddr = *(
55e0: 76 6f 69 64 2a 20 2a 29 28 28 4c 49 53 54 29 2d  void* *)((LIST)-
55f0: 3e 61 70 74 72 29 2c 09 09 09 09 5c 0a 20 20 20  >aptr),....\.   
5600: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
5610: 73 69 7a 65 6f 66 28 76 6f 69 64 2a 29 2c 09 09  sizeof(void*),..
5620: 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ...\.   (LIST)->
5630: 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a  anum++,.......\.
5640: 20 20 20 30 09 09 09 09 09 09 09 09 09 5c 0a 20     0.........\. 
5650: 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65   ).#endif.#if de
5660: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
5670: 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73 74 72 75  )./* Return stru
5680: 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 69 73  cture pointer is
5690: 20 70 61 73 73 65 64 20 61 73 20 66 69 72 73 74   passed as first
56a0: 20 61 72 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65   arg. */.#define
56b0: 20 5f 5f 76 61 5f 73 74 61 72 74 5f 73 74 72 75   __va_start_stru
56c0: 63 74 32 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ct2(LIST)  \.  (
56d0: 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 20 3d 20  (LIST)->raddr = 
56e0: 28 76 6f 69 64 20 2a 29 28 2a 28 4c 49 53 54 29  (void *)(*(LIST)
56f0: 2d 3e 6d 65 6d 69 61 72 67 70 74 72 2b 2b 29 2c  ->memiargptr++),
5700: 09 09 09 5c 0a 20 20 20 30 09 09 09 09 09 09 09  ...\.   0.......
5710: 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23  ..\.  ).#endif.#
5720: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  if defined(__m68
5730: 6b 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64  k__) || (defined
5740: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21  (__sparc__) && !
5750: 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36  defined(__sparc6
5760: 34 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64  4__)) || defined
5770: 28 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65  (__hppa__) || de
5780: 66 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20  fined(__m88k__) 
5790: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61 36  || defined(__ia6
57a0: 34 5f 5f 29 0a 2f 2a 20 52 65 74 75 72 6e 20 73  4__)./* Return s
57b0: 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65 72  tructure pointer
57c0: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 20   is passed in a 
57d0: 73 70 65 63 69 61 6c 20 72 65 67 69 73 74 65 72  special register
57e0: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
57f0: 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 32 28  a_start_struct2(
5800: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIST)  \.  ((LIS
5810: 54 29 2d 3e 72 61 64 64 72 20 3d 20 28 4c 49 53  T)->raddr = (LIS
5820: 54 29 2d 3e 73 74 72 75 63 74 72 61 64 64 72 2c  T)->structraddr,
5830: 20 30 29 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a   0).#endif.../*.
5840: 20 2a 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f 66   * Definition of
5850: 20 74 68 65 20 76 61 5f 61 72 67 5f 78 78 78 20   the va_arg_xxx 
5860: 6d 61 63 72 6f 73 2e 0a 20 2a 2f 0a 0a 2f 2a 20  macros.. */../* 
5870: 50 61 64 64 69 6e 67 20 6f 66 20 6e 6f 6e 2d 73  Padding of non-s
5880: 74 72 75 63 74 20 61 72 67 75 6d 65 6e 74 73 2e  truct arguments.
5890: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61   */.#define __va
58a0: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
58b0: 5a 45 29 20 20 5c 0a 20 20 28 28 28 54 59 50 45  ZE)  \.  (((TYPE
58c0: 5f 53 49 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28  _SIZE) + sizeof(
58d0: 5f 5f 76 61 77 6f 72 64 29 2d 31 29 20 26 20 2d  __vaword)-1) & -
58e0: 28 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 5f 5f 76  (long)sizeof(__v
58f0: 61 77 6f 72 64 29 29 0a 23 69 66 20 64 65 66 69  aword)).#if defi
5900: 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c  ned(__i386__) ||
5910: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f   defined(__m68k_
5920: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
5930: 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69  mips__) && !defi
5940: 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29  ned(__mipsn32__)
5950: 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f 73   || (defined(__s
5960: 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65 66 69  parc__) && !defi
5970: 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29  ned(__sparc64__)
5980: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
5990: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  lpha__) || defin
59a0: 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28  ed(__arm__) || (
59b0: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
59c0: 5f 5f 29 20 26 26 20 28 64 65 66 69 6e 65 64 28  __) && (defined(
59d0: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
59e0: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
59f0: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
5a00: 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  )))) || defined(
5a10: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
5a20: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29  ined(__convex__)
5a30: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 69 61   || defined(__ia
5a40: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
5a50: 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a 20  (__x86_64__)./* 
5a60: 61 72 67 73 20 67 72 6f 77 20 75 70 20 2a 2f 0a  args grow up */.
5a70: 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75 63 74 75  /* small structu
5a80: 72 65 73 20 3c 20 31 20 77 6f 72 64 20 61 72 65  res < 1 word are
5a90: 20 61 64 6a 75 73 74 65 64 20 64 65 70 65 6e 64   adjusted depend
5aa0: 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c 65 72 20  ing on compiler 
5ab0: 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f  */.#define __va_
5ac0: 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64  arg_leftadjusted
5ad0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
5ae0: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
5af0: 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b   ((LIST)->aptr +
5b00: 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  = __va_argsize(T
5b10: 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a  YPE_SIZE),....\.
5b20: 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20     (LIST)->aptr 
5b30: 2d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54  - __va_argsize(T
5b40: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20  YPE_SIZE)....\. 
5b50: 20 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f   ).#define __va_
5b60: 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65  arg_rightadjuste
5b70: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
5b80: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a  ,TYPE_ALIGN)  \.
5b90: 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20    ((LIST)->aptr 
5ba0: 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28  += __va_argsize(
5bb0: 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c  TYPE_SIZE),....\
5bc0: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
5bd0: 20 2d 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   - ((TYPE_SIZE) 
5be0: 3c 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  < sizeof(__vawor
5bf0: 64 29 09 09 09 5c 0a 09 09 20 20 20 3f 20 28 54  d)...\...   ? (T
5c00: 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a  YPE_SIZE).....\.
5c10: 09 09 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 73  ..   : __va_args
5c20: 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09  ize(TYPE_SIZE)..
5c30: 09 09 5c 0a 09 09 20 20 29 09 09 09 09 09 09 09  ..\...  ).......
5c40: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
5c50: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
5c60: 30 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65  0__) && !(define
5c70: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
5c80: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
5c90: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
5ca0: 5f 5f 29 29 29 0a 2f 2a 20 61 72 67 73 20 67 72  __)))./* args gr
5cb0: 6f 77 20 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61 6c  ow up */./* smal
5cc0: 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20 31  l structures < 1
5cd0: 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74   word are adjust
5ce0: 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  ed depending on 
5cf0: 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 2f 2a 20 41  compiler */./* A
5d00: 6c 73 6f 20 6d 61 6b 65 20 73 75 72 65 20 77 65  lso make sure we
5d10: 20 73 77 69 74 63 68 20 74 6f 20 74 68 65 20 73   switch to the s
5d20: 74 61 63 6b 20 70 6f 69 6e 74 65 72 20 61 66 74  tack pointer aft
5d30: 65 72 20 38 20 61 72 67 73 20 2a 2f 0a 23 64 65  er 8 args */.#de
5d40: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 65  fine __va_arg_le
5d50: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
5d60: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
5d70: 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 28 28 4c  LIGN)  \.  ((((L
5d80: 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 20 3d 3d  IST)->onstack ==
5d90: 20 30 20 26 26 20 28 4c 49 53 54 29 2d 3e 61 70   0 && (LIST)->ap
5da0: 74 72 20 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c 49  tr >= (long)&(LI
5db0: 53 54 29 2d 3e 72 65 67 61 72 67 5b 38 5d 29 09  ST)->regarg[8]).
5dc0: 5c 0a 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d  \.    ? ((LIST)-
5dd0: 3e 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53  >onstack=1, (LIS
5de0: 54 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53 54  T)->aptr = (LIST
5df0: 29 2d 3e 73 61 70 74 72 29 20 3a 20 30 29 2c 09  )->saptr) : 0),.
5e00: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70  .\.   (LIST)->ap
5e10: 74 72 20 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69  tr += __va_argsi
5e20: 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09  ze(TYPE_SIZE),..
5e30: 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61  ..\.   (LIST)->a
5e40: 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72 67 73 69  ptr - __va_argsi
5e50: 7a 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09  ze(TYPE_SIZE)...
5e60: 09 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 5f  .\.  ).#define _
5e70: 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a  _va_arg_rightadj
5e80: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
5e90: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
5ea0: 20 20 5c 0a 20 20 28 28 28 28 4c 49 53 54 29 2d    \.  ((((LIST)-
5eb0: 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20 26 26  >onstack == 0 &&
5ec0: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d   (LIST)->aptr >=
5ed0: 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e   (long)&(LIST)->
5ee0: 72 65 67 61 72 67 5b 38 5d 29 09 5c 0a 20 20 20  regarg[8]).\.   
5ef0: 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74   ? ((LIST)->onst
5f00: 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 61  ack=1, (LIST)->a
5f10: 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e 73 61  ptr = (LIST)->sa
5f20: 70 74 72 29 20 3a 20 30 29 2c 09 09 5c 0a 20 20  ptr) : 0),..\.  
5f30: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d   (LIST)->aptr +=
5f40: 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59   __va_argsize(TY
5f50: 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20  PE_SIZE),....\. 
5f60: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d    (LIST)->aptr -
5f70: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3c 20   ((TYPE_SIZE) < 
5f80: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
5f90: 09 09 09 5c 0a 09 09 20 20 20 3f 20 28 54 59 50  ...\...   ? (TYP
5fa0: 45 5f 53 49 5a 45 29 09 09 09 09 09 5c 0a 09 09  E_SIZE).....\...
5fb0: 20 20 20 3a 20 5f 5f 76 61 5f 61 72 67 73 69 7a     : __va_argsiz
5fc0: 65 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09  e(TYPE_SIZE)....
5fd0: 5c 0a 09 09 20 20 29 09 09 09 09 09 09 09 5c 0a  \...  ).......\.
5fe0: 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64    ).#endif.#if d
5ff0: 65 66 69 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29  efined(__s390__)
6000: 0a 2f 2a 20 61 72 67 73 20 67 72 6f 77 20 75 70  ./* args grow up
6010: 20 2a 2f 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72   */./* small str
6020: 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64  uctures < 1 word
6030: 20 61 72 65 20 61 64 6a 75 73 74 65 64 20 64 65   are adjusted de
6040: 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69  pending on compi
6050: 6c 65 72 20 2a 2f 0a 2f 2a 20 41 6c 73 6f 20 6d  ler */./* Also m
6060: 61 6b 65 20 73 75 72 65 20 77 65 20 73 77 69 74  ake sure we swit
6070: 63 68 20 74 6f 20 74 68 65 20 73 74 61 63 6b 20  ch to the stack 
6080: 70 6f 69 6e 74 65 72 20 61 66 74 65 72 20 35 20  pointer after 5 
6090: 61 72 67 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20  args */.#define 
60a0: 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a  __va_arg_leftadj
60b0: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
60c0: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
60d0: 20 20 5c 0a 20 20 28 28 28 28 4c 49 53 54 29 2d    \.  ((((LIST)-
60e0: 3e 6f 6e 73 74 61 63 6b 20 3d 3d 20 30 20 26 26  >onstack == 0 &&
60f0: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d   (LIST)->aptr >=
6100: 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e   (long)&(LIST)->
6110: 72 65 67 61 72 67 5b 35 5d 29 09 5c 0a 20 20 20  regarg[5]).\.   
6120: 20 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74   ? ((LIST)->onst
6130: 61 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 61  ack=1, (LIST)->a
6140: 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e 73 61  ptr = (LIST)->sa
6150: 70 74 72 29 20 3a 20 30 29 2c 09 09 5c 0a 20 20  ptr) : 0),..\.  
6160: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d   (LIST)->aptr +=
6170: 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59   __va_argsize(TY
6180: 50 45 5f 53 49 5a 45 29 2c 09 09 09 09 5c 0a 20  PE_SIZE),....\. 
6190: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d    (LIST)->aptr -
61a0: 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59   __va_argsize(TY
61b0: 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 20 20  PE_SIZE)....\.  
61c0: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  ).#define __va_a
61d0: 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64  rg_rightadjusted
61e0: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
61f0: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
6200: 20 28 28 28 28 28 4c 49 53 54 29 2d 3e 6f 6e 73   (((((LIST)->ons
6210: 74 61 63 6b 20 3d 3d 20 30 20 26 26 20 28 28 4c  tack == 0 && ((L
6220: 49 53 54 29 2d 3e 61 70 74 72 20 3e 3d 20 28 6c  IST)->aptr >= (l
6230: 6f 6e 67 29 26 28 4c 49 53 54 29 2d 3e 72 65 67  ong)&(LIST)->reg
6240: 61 72 67 5b 35 5d 29 29 20 5c 0a 20 20 20 7c 7c  arg[5])) \.   ||
6250: 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20 3e 20   ((TYPE_SIZE) > 
6260: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
6270: 20 26 26 20 28 4c 49 53 54 29 2d 3e 61 70 74 72   && (LIST)->aptr
6280: 20 3e 3d 20 28 6c 6f 6e 67 29 26 28 4c 49 53 54   >= (long)&(LIST
6290: 29 2d 3e 72 65 67 61 72 67 5b 34 5d 29 29 20 5c  )->regarg[4])) \
62a0: 0a 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e  .    ? ((LIST)->
62b0: 6f 6e 73 74 61 63 6b 3d 31 2c 20 28 4c 49 53 54  onstack=1, (LIST
62c0: 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53 54 29  )->aptr = (LIST)
62d0: 2d 3e 73 61 70 74 72 29 20 3a 20 30 29 2c 09 09  ->saptr) : 0),..
62e0: 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74  \.   (LIST)->apt
62f0: 72 20 2b 3d 20 5f 5f 76 61 5f 61 72 67 73 69 7a  r += __va_argsiz
6300: 65 28 54 59 50 45 5f 53 49 5a 45 29 2c 09 09 09  e(TYPE_SIZE),...
6310: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70  .\.   (LIST)->ap
6320: 74 72 20 2d 20 28 28 54 59 50 45 5f 53 49 5a 45  tr - ((TYPE_SIZE
6330: 29 20 3c 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77  ) < sizeof(__vaw
6340: 6f 72 64 29 09 09 09 5c 0a 09 09 20 20 20 3f 20  ord)...\...   ? 
6350: 28 54 59 50 45 5f 53 49 5a 45 29 09 09 09 09 09  (TYPE_SIZE).....
6360: 5c 0a 09 09 20 20 20 3a 20 5f 5f 76 61 5f 61 72  \...   : __va_ar
6370: 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29  gsize(TYPE_SIZE)
6380: 09 09 09 09 5c 0a 09 09 20 20 29 09 09 09 09 09  ....\...  ).....
6390: 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23  ..\.  ).#endif.#
63a0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70  if defined(__mip
63b0: 73 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  sn32__) || defin
63c0: 65 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c  ed(__mips64__) |
63d0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 70 61 72  | defined(__spar
63e0: 63 36 34 5f 5f 29 0a 2f 2a 20 61 72 67 73 20 67  c64__)./* args g
63f0: 72 6f 77 20 75 70 20 2a 2f 0a 2f 2a 20 73 6d 61  row up */./* sma
6400: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 3c 20  ll structures < 
6410: 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a 75 73  1 word are adjus
6420: 74 65 64 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ted depending on
6430: 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23 64 65   compiler */.#de
6440: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c 65  fine __va_arg_le
6450: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
6460: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
6470: 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIGN)  \.  ((LIS
6480: 54 29 2d 3e 61 6e 75 6d 20 2b 3d 20 5f 5f 76 61  T)->anum += __va
6490: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
64a0: 5a 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77  ZE)/sizeof(__vaw
64b0: 6f 72 64 29 2c 09 09 5c 0a 20 20 20 28 4c 49 53  ord),..\.   (LIS
64c0: 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76 61  T)->aptr += __va
64d0: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
64e0: 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49  ZE),....\.   (LI
64f0: 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f 5f 76 61  ST)->aptr - __va
6500: 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53 49  _argsize(TYPE_SI
6510: 5a 45 29 09 09 09 09 5c 0a 20 20 29 0a 23 64 65  ZE)....\.  ).#de
6520: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 72 69  fine __va_arg_ri
6530: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
6540: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
6550: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49  ALIGN)  \.  ((LI
6560: 53 54 29 2d 3e 61 6e 75 6d 20 2b 3d 20 5f 5f 76  ST)->anum += __v
6570: 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53  a_argsize(TYPE_S
6580: 49 5a 45 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61  IZE)/sizeof(__va
6590: 77 6f 72 64 29 2c 09 09 5c 0a 20 20 20 28 4c 49  word),..\.   (LI
65a0: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 5f 5f 76  ST)->aptr += __v
65b0: 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45 5f 53  a_argsize(TYPE_S
65c0: 49 5a 45 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c  IZE),....\.   (L
65d0: 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 28 28 54  IST)->aptr - ((T
65e0: 59 50 45 5f 53 49 5a 45 29 20 3c 20 73 69 7a 65  YPE_SIZE) < size
65f0: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 09 09 09 5c  of(__vaword)...\
6600: 0a 09 09 20 20 20 3f 20 28 54 59 50 45 5f 53 49  ...   ? (TYPE_SI
6610: 5a 45 29 09 09 09 09 09 5c 0a 09 09 20 20 20 3a  ZE).....\...   :
6620: 20 5f 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59   __va_argsize(TY
6630: 50 45 5f 53 49 5a 45 29 09 09 09 09 5c 0a 09 09  PE_SIZE)....\...
6640: 20 20 29 09 09 09 09 09 09 09 5c 0a 20 20 29 0a    ).......\.  ).
6650: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
6660: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20  ed(__hppa__)./* 
6670: 61 72 67 73 20 67 72 6f 77 20 64 6f 77 6e 20 2a  args grow down *
6680: 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  /.#define __va_a
6690: 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28  rg_leftadjusted(
66a0: 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54  LIST,TYPE_SIZE,T
66b0: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
66c0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20  ((LIST)->aptr = 
66d0: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 5f  (LIST)->aptr - _
66e0: 5f 76 61 5f 61 72 67 73 69 7a 65 28 54 59 50 45  _va_argsize(TYPE
66f0: 5f 53 49 5a 45 29 2c 09 09 5c 0a 20 20 20 28 28  _SIZE),..\.   ((
6700: 54 59 50 45 5f 53 49 5a 45 29 20 3e 20 34 20 26  TYPE_SIZE) > 4 &
6710: 26 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  & ((LIST)->aptr 
6720: 26 3d 20 2d 38 29 29 2c 09 09 09 09 5c 0a 20 20  &= -8)),....\.  
6730: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 09 09 09   (LIST)->aptr...
6740: 09 09 09 09 09 5c 0a 20 20 29 0a 23 64 65 66 69  .....\.  ).#defi
6750: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68  ne __va_arg_righ
6760: 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54  tadjusted(LIST,T
6770: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
6780: 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53 54  IGN)  \.  ((LIST
6790: 29 2d 3e 61 70 74 72 20 3d 20 28 4c 49 53 54 29  )->aptr = (LIST)
67a0: 2d 3e 61 70 74 72 20 2d 20 5f 5f 76 61 5f 61 72  ->aptr - __va_ar
67b0: 67 73 69 7a 65 28 54 59 50 45 5f 53 49 5a 45 29  gsize(TYPE_SIZE)
67c0: 2c 09 09 5c 0a 20 20 20 28 28 54 59 50 45 5f 53  ,..\.   ((TYPE_S
67d0: 49 5a 45 29 20 3e 20 34 20 26 26 20 28 28 4c 49  IZE) > 4 && ((LI
67e0: 53 54 29 2d 3e 61 70 74 72 20 26 3d 20 2d 38 29  ST)->aptr &= -8)
67f0: 29 2c 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54  ),....\.   (LIST
6800: 29 2d 3e 61 70 74 72 20 2b 20 28 28 2d 28 54 59  )->aptr + ((-(TY
6810: 50 45 5f 53 49 5a 45 29 29 20 26 20 33 29 09 09  PE_SIZE)) & 3)..
6820: 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a  ...\.  ).#endif.
6830: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33  #if defined(__i3
6840: 38 36 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  86__) || defined
6850: 28 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64  (__alpha__) || d
6860: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
6870: 0a 2f 2a 20 6c 69 74 74 6c 65 20 65 6e 64 69 61  ./* little endia
6880: 6e 20 2d 3e 20 73 6d 61 6c 6c 20 61 72 67 73 20  n -> small args 
6890: 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a  < 1 word are adj
68a0: 75 73 74 65 64 20 74 6f 20 74 68 65 20 6c 65 66  usted to the lef
68b0: 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  t */.#define __v
68c0: 61 5f 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c  a_arg_adjusted(L
68d0: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
68e0: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 5f  PE_ALIGN)  \.  _
68f0: 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75  _va_arg_leftadju
6900: 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53  sted(LIST,TYPE_S
6910: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a  IZE,TYPE_ALIGN).
6920: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
6930: 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c 7c 20  ed(__m68k__) || 
6940: 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33  defined(__mipsn3
6950: 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  2__) || defined(
6960: 5f 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64  __mips64__) || d
6970: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
6980: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73  ) || defined(__s
6990: 70 61 72 63 36 34 5f 5f 29 20 7c 7c 20 64 65 66  parc64__) || def
69a0: 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f 29 20 7c  ined(__hppa__) |
69b0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61 72 6d 5f  | defined(__arm_
69c0: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
69d0: 72 73 36 30 30 30 5f 5f 29 20 7c 7c 20 64 65 66  rs6000__) || def
69e0: 69 6e 65 64 28 5f 5f 6d 38 38 6b 5f 5f 29 20 7c  ined(__m88k__) |
69f0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f 6e 76  | defined(__conv
6a00: 65 78 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  ex__) || defined
6a10: 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 62 69  (__s390__)./* bi
6a20: 67 20 65 6e 64 69 61 6e 20 2d 3e 20 73 6d 61 6c  g endian -> smal
6a30: 6c 20 61 72 67 73 20 3c 20 31 20 77 6f 72 64 20  l args < 1 word 
6a40: 61 72 65 20 61 64 6a 75 73 74 65 64 20 74 6f 20  are adjusted to 
6a50: 74 68 65 20 72 69 67 68 74 20 2a 2f 0a 23 64 65  the right */.#de
6a60: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 61 64  fine __va_arg_ad
6a70: 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45  justed(LIST,TYPE
6a80: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
6a90: 29 20 20 5c 0a 20 20 5f 5f 76 61 5f 61 72 67 5f  )  \.  __va_arg_
6aa0: 72 69 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49  rightadjusted(LI
6ab0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
6ac0: 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a  E_ALIGN).#endif.
6ad0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
6ae0: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
6af0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f  d(__mipsn32__)./
6b00: 2a 20 62 69 67 20 65 6e 64 69 61 6e 20 2d 3e 20  * big endian -> 
6b10: 73 6d 61 6c 6c 20 61 72 67 73 20 3c 20 31 20 77  small args < 1 w
6b20: 6f 72 64 20 61 72 65 20 61 64 6a 75 73 74 65 64  ord are adjusted
6b30: 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 2a 2f   to the right */
6b40: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
6b50: 67 5f 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  g_adjusted(LIST,
6b60: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
6b70: 4c 49 47 4e 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIGN)  \.  ((LIS
6b80: 54 29 2d 3e 61 6e 75 6d 2b 2b 2c 20 5f 5f 76 61  T)->anum++, __va
6b90: 5f 61 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74  _arg_rightadjust
6ba0: 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ed(LIST,TYPE_SIZ
6bb0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 29 0a 23  E,TYPE_ALIGN)).#
6bc0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
6bd0: 64 28 5f 5f 78 38 36 5f 36 34 5f 5f 29 0a 2f 2a  d(__x86_64__)./*
6be0: 20 74 68 65 20 66 69 72 73 74 20 36 20 61 72 67   the first 6 arg
6bf0: 75 6d 65 6e 74 20 77 6f 72 64 73 20 61 72 65 20  ument words are 
6c00: 70 61 73 73 65 64 20 69 6e 20 72 65 67 69 73 74  passed in regist
6c10: 65 72 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  ers */.#define _
6c20: 5f 76 61 5f 61 72 67 5f 61 64 6a 75 73 74 65 64  _va_arg_adjusted
6c30: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
6c40: 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20  TYPE_ALIGN)  \. 
6c50: 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 69 61 72   ((LIST)->memiar
6c60: 67 70 74 72 20 2b 20 28 28 54 59 50 45 5f 53 49  gptr + ((TYPE_SI
6c70: 5a 45 29 20 2b 20 73 69 7a 65 6f 66 28 5f 5f 76  ZE) + sizeof(__v
6c80: 61 77 6f 72 64 29 2d 31 29 20 2f 20 73 69 7a 65  aword)-1) / size
6c90: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3c 3d 20  of(__vaword) <= 
6ca0: 26 28 4c 49 53 54 29 2d 3e 69 61 72 67 5b 36 5d  &(LIST)->iarg[6]
6cb0: 20 5c 0a 20 20 20 3f 20 28 28 4c 49 53 54 29 2d   \.   ? ((LIST)-
6cc0: 3e 6d 65 6d 69 61 72 67 70 74 72 20 2b 3d 20 28  >memiargptr += (
6cd0: 28 54 59 50 45 5f 53 49 5a 45 29 20 2b 20 73 69  (TYPE_SIZE) + si
6ce0: 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2d 31  zeof(__vaword)-1
6cf0: 29 20 2f 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77  ) / sizeof(__vaw
6d00: 6f 72 64 29 2c 20 5c 0a 20 20 20 20 20 20 28 4c  ord), \.      (L
6d10: 49 53 54 29 2d 3e 6d 65 6d 69 61 72 67 70 74 72  IST)->memiargptr
6d20: 20 2d 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20   - ((TYPE_SIZE) 
6d30: 2b 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  + sizeof(__vawor
6d40: 64 29 2d 31 29 20 2f 20 73 69 7a 65 6f 66 28 5f  d)-1) / sizeof(_
6d50: 5f 76 61 77 6f 72 64 29 20 5c 0a 20 20 20 20 20  _vaword) \.     
6d60: 29 09 09 09 09 09 09 09 09 09 5c 0a 20 20 20 3a  ).........\.   :
6d70: 20 28 76 6f 69 64 2a 29 5f 5f 76 61 5f 61 72 67   (void*)__va_arg
6d80: 5f 6c 65 66 74 61 64 6a 75 73 74 65 64 28 4c 49  _leftadjusted(LI
6d90: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
6da0: 45 5f 41 4c 49 47 4e 29 09 09 5c 0a 20 20 29 0a  E_ALIGN)..\.  ).
6db0: 23 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 5f  #endif.#define _
6dc0: 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 54 59 50  _va_arg(LIST,TYP
6dd0: 45 29 20 20 5c 0a 20 20 2a 28 54 59 50 45 2a 29  E)  \.  *(TYPE*)
6de0: 5f 5f 76 61 5f 61 72 67 5f 61 64 6a 75 73 74 65  __va_arg_adjuste
6df0: 64 28 4c 49 53 54 2c 73 69 7a 65 6f 66 28 54 59  d(LIST,sizeof(TY
6e00: 50 45 29 2c 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66  PE),__VA_alignof
6e10: 28 54 59 50 45 29 29 0a 0a 2f 2a 20 49 6e 74 65  (TYPE))../* Inte
6e20: 67 65 72 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a  ger arguments. *
6e30: 2f 0a 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72  /..#define va_ar
6e40: 67 5f 63 68 61 72 28 4c 49 53 54 29 09 5f 5f 76  g_char(LIST).__v
6e50: 61 5f 61 72 67 28 4c 49 53 54 2c 63 68 61 72 29  a_arg(LIST,char)
6e60: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
6e70: 73 63 68 61 72 28 4c 49 53 54 29 09 5f 5f 76 61  schar(LIST).__va
6e80: 5f 61 72 67 28 4c 49 53 54 2c 73 69 67 6e 65 64  _arg(LIST,signed
6e90: 20 63 68 61 72 29 0a 23 64 65 66 69 6e 65 20 76   char).#define v
6ea0: 61 5f 61 72 67 5f 75 63 68 61 72 28 4c 49 53 54  a_arg_uchar(LIST
6eb0: 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c  ).__va_arg(LIST,
6ec0: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 0a 23  unsigned char).#
6ed0: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 73 68  define va_arg_sh
6ee0: 6f 72 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61  ort(LIST).__va_a
6ef0: 72 67 28 4c 49 53 54 2c 73 68 6f 72 74 29 0a 23  rg(LIST,short).#
6f00: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 73  define va_arg_us
6f10: 68 6f 72 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f  hort(LIST).__va_
6f20: 61 72 67 28 4c 49 53 54 2c 75 6e 73 69 67 6e 65  arg(LIST,unsigne
6f30: 64 20 73 68 6f 72 74 29 0a 23 64 65 66 69 6e 65  d short).#define
6f40: 20 76 61 5f 61 72 67 5f 69 6e 74 28 4c 49 53 54   va_arg_int(LIST
6f50: 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c  ).__va_arg(LIST,
6f60: 69 6e 74 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  int).#define va_
6f70: 61 72 67 5f 75 69 6e 74 28 4c 49 53 54 29 09 5f  arg_uint(LIST)._
6f80: 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 75 6e 73  _va_arg(LIST,uns
6f90: 69 67 6e 65 64 20 69 6e 74 29 0a 23 64 65 66 69  igned int).#defi
6fa0: 6e 65 20 76 61 5f 61 72 67 5f 6c 6f 6e 67 28 4c  ne va_arg_long(L
6fb0: 49 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49  IST).__va_arg(LI
6fc0: 53 54 2c 6c 6f 6e 67 29 0a 23 64 65 66 69 6e 65  ST,long).#define
6fd0: 20 76 61 5f 61 72 67 5f 75 6c 6f 6e 67 28 4c 49   va_arg_ulong(LI
6fe0: 53 54 29 09 5f 5f 76 61 5f 61 72 67 28 4c 49 53  ST).__va_arg(LIS
6ff0: 54 2c 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29  T,unsigned long)
7000: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  ..#if defined(__
7010: 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65 66  mips64__) || def
7020: 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f  ined(__sparc64__
7030: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 61  ) || defined(__a
7040: 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  lpha__) || defin
7050: 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c 20  ed(__ia64__) || 
7060: 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34  defined(__x86_64
7070: 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e  __)./* `long lon
7080: 67 27 20 61 6e 64 20 60 6c 6f 6e 67 27 20 61 72  g' and `long' ar
7090: 65 20 69 64 65 6e 74 69 63 61 6c 2e 20 2a 2f 0a  e identical. */.
70a0: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 6c  #define va_arg_l
70b0: 6f 6e 67 6c 6f 6e 67 09 09 76 61 5f 61 72 67 5f  onglong..va_arg_
70c0: 6c 6f 6e 67 0a 23 64 65 66 69 6e 65 20 76 61 5f  long.#define va_
70d0: 61 72 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 09 76 61  arg_ulonglong.va
70e0: 5f 61 72 67 5f 75 6c 6f 6e 67 0a 23 65 6c 69 66  _arg_ulong.#elif
70f0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e   defined(__mipsn
7100: 33 32 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c  32__)./* `long l
7110: 6f 6e 67 27 20 66 69 74 73 20 69 6e 20 5f 5f 76  ong' fits in __v
7120: 61 77 6f 72 64 2e 20 2a 2f 0a 23 64 65 66 69 6e  aword. */.#defin
7130: 65 20 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e  e va_arg_longlon
7140: 67 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67  g(LIST).__va_arg
7150: 28 4c 49 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 29  (LIST,long long)
7160: 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f  .#define va_arg_
7170: 75 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09  ulonglong(LIST).
7180: 5f 5f 76 61 5f 61 72 67 28 4c 49 53 54 2c 75 6e  __va_arg(LIST,un
7190: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67  signed long long
71a0: 29 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28  ).#elif defined(
71b0: 5f 5f 69 33 38 36 5f 5f 29 20 7c 7c 20 64 65 66  __i386__) || def
71c0: 69 6e 65 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 7c  ined(__m68k__) |
71d0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
71e0: 5f 5f 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28  __) || (defined(
71f0: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
7200: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
7210: 5f 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  __)) || defined(
7220: 5f 5f 68 70 70 61 5f 5f 29 20 7c 7c 20 64 65 66  __hppa__) || def
7230: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
7240: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
7250: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  0__) || defined(
7260: 5f 5f 6d 38 38 6b 5f 5f 29 20 7c 7c 20 64 65 66  __m88k__) || def
7270: 69 6e 65 64 28 5f 5f 63 6f 6e 76 65 78 5f 5f 29  ined(__convex__)
7280: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 73 33   || defined(__s3
7290: 39 30 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c  90__)./* `long l
72a0: 6f 6e 67 27 73 20 61 72 65 20 70 61 73 73 65 64  ong's are passed
72b0: 20 65 6d 62 65 64 64 65 64 20 6f 6e 20 74 68 65   embedded on the
72c0: 20 61 72 67 20 73 74 61 63 6b 2e 20 2a 2f 0a 23   arg stack. */.#
72d0: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 6c 6f  define va_arg_lo
72e0: 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f 76  nglong(LIST).__v
72f0: 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c  a_arg_longlong(L
7300: 49 53 54 2c 6c 6f 6e 67 20 6c 6f 6e 67 29 0a 23  IST,long long).#
7310: 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 75 6c  define va_arg_ul
7320: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 29 09 5f 5f  onglong(LIST).__
7330: 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28  va_arg_longlong(
7340: 4c 49 53 54 2c 75 6e 73 69 67 6e 65 64 20 6c 6f  LIST,unsigned lo
7350: 6e 67 20 6c 6f 6e 67 29 0a 23 69 66 20 64 65 66  ng long).#if def
7360: 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 7c  ined(__i386__) |
7370: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38 6b  | defined(__m68k
7380: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
7390: 5f 61 72 6d 5f 5f 29 20 7c 7c 20 28 64 65 66 69  _arm__) || (defi
73a0: 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20  ned(__rs6000__) 
73b0: 26 26 20 28 64 65 66 69 6e 65 64 28 5f 41 49 58  && (defined(_AIX
73c0: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
73d0: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
73e0: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 29  ed(__APPLE__))))
73f0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 63 6f   || defined(__co
7400: 6e 76 65 78 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67  nvex__)./* `long
7410: 20 6c 6f 6e 67 27 73 20 61 72 65 20 28 61 74 20   long's are (at 
7420: 6d 6f 73 74 29 20 77 6f 72 64 2d 61 6c 69 67 6e  most) word-align
7430: 65 64 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  ed. */.#define _
7440: 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67  _va_arg_longlong
7450: 28 4c 49 53 54 2c 54 59 50 45 29 09 5f 5f 76 61  (LIST,TYPE).__va
7460: 5f 61 72 67 28 4c 49 53 54 2c 54 59 50 45 29 0a  _arg(LIST,TYPE).
7470: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
7480: 65 64 28 5f 5f 6d 69 70 73 5f 5f 29 20 7c 7c 20  ed(__mips__) || 
7490: 28 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30  (defined(__rs600
74a0: 30 5f 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65  0__) && !(define
74b0: 64 28 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69  d(_AIX) || (defi
74c0: 6e 65 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26  ned(__MACH__) &&
74d0: 20 64 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45   defined(__APPLE
74e0: 5f 5f 29 29 29 29 20 7c 7c 20 64 65 66 69 6e 65  __)))) || define
74f0: 64 28 5f 5f 6d 38 38 6b 5f 5f 29 0a 2f 2a 20 60  d(__m88k__)./* `
7500: 6c 6f 6e 67 20 6c 6f 6e 67 27 73 20 68 61 76 65  long long's have
7510: 20 61 6c 69 67 6e 6d 65 6e 74 20 38 2e 20 2a 2f   alignment 8. */
7520: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72  .#define __va_ar
7530: 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c  g_longlong(LIST,
7540: 54 59 50 45 29 09 09 09 09 09 5c 0a 20 20 28 28  TYPE).....\.  ((
7550: 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d 20 28 28  LIST)->aptr = ((
7560: 28 4c 49 53 54 29 2d 3e 61 70 74 72 2b 5f 5f 56  (LIST)->aptr+__V
7570: 41 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 2d  A_alignof(TYPE)-
7580: 31 29 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56 41  1) & -(long)__VA
7590: 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 2c  _alignof(TYPE)),
75a0: 20 5c 0a 20 20 20 5f 5f 76 61 5f 61 72 67 28 4c   \.   __va_arg(L
75b0: 49 53 54 2c 54 59 50 45 29 29 0a 23 65 6e 64 69  IST,TYPE)).#endi
75c0: 66 0a 23 69 66 20 28 64 65 66 69 6e 65 64 28 5f  f.#if (defined(_
75d0: 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64 65  _sparc__) && !de
75e0: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
75f0: 5f 29 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  _)) || defined(_
7600: 5f 73 33 39 30 5f 5f 29 0a 2f 2a 20 57 69 74 68  _s390__)./* With
7610: 69 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b  in the arg stack
7620: 2c 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20  , the alignment 
7630: 69 73 20 6f 6e 6c 79 20 34 2c 20 6e 6f 74 20 38  is only 4, not 8
7640: 2e 20 2a 2f 0a 2f 2a 20 42 65 77 61 72 65 20 61  . */./* Beware a
7650: 67 61 69 6e 73 74 20 75 6e 61 6c 69 67 6e 65 64  gainst unaligned
7660: 20 61 63 63 65 73 73 65 73 21 20 2a 2f 0a 23 64   accesses! */.#d
7670: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 6c  efine __va_arg_l
7680: 6f 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 54 59 50  onglong(LIST,TYP
7690: 45 29 09 09 09 09 09 5c 0a 20 20 28 28 4c 49 53  E).....\.  ((LIS
76a0: 54 29 2d 3e 74 6d 70 2e 5f 77 6f 72 64 73 5b 30  T)->tmp._words[0
76b0: 5d 20 3d 20 28 28 5f 5f 76 61 77 6f 72 64 2a 29  ] = ((__vaword*)
76c0: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 29 29 5b  ((LIST)->aptr))[
76d0: 30 5d 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  0],..\.   (LIST)
76e0: 2d 3e 74 6d 70 2e 5f 77 6f 72 64 73 5b 31 5d 20  ->tmp._words[1] 
76f0: 3d 20 28 28 5f 5f 76 61 77 6f 72 64 2a 29 28 28  = ((__vaword*)((
7700: 4c 49 53 54 29 2d 3e 61 70 74 72 29 29 5b 31 5d  LIST)->aptr))[1]
7710: 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ,..\.   (LIST)->
7720: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 54  aptr += sizeof(T
7730: 59 50 45 29 2c 09 09 09 09 09 5c 0a 20 20 20 28  YPE),.....\.   (
7740: 54 59 50 45 29 28 28 4c 49 53 54 29 2d 3e 74 6d  TYPE)((LIST)->tm
7750: 70 2e 5f 6c 6f 6e 67 6c 6f 6e 67 29 09 09 09 09  p._longlong)....
7760: 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69  .\.  ).#endif.#i
7770: 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61  f defined(__hppa
7780: 5f 5f 29 0a 2f 2a 20 60 6c 6f 6e 67 20 6c 6f 6e  __)./* `long lon
7790: 67 27 73 20 68 61 76 65 20 61 6c 69 67 6e 6d 65  g's have alignme
77a0: 6e 74 20 38 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  nt 8. */.#define
77b0: 20 5f 5f 76 61 5f 61 72 67 5f 6c 6f 6e 67 6c 6f   __va_arg_longlo
77c0: 6e 67 28 4c 49 53 54 2c 54 59 50 45 29 09 09 09  ng(LIST,TYPE)...
77d0: 09 09 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 61  ..\.  ((LIST)->a
77e0: 70 74 72 20 3d 20 28 28 4c 49 53 54 29 2d 3e 61  ptr = ((LIST)->a
77f0: 70 74 72 20 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56  ptr & -(long)__V
7800: 41 5f 61 6c 69 67 6e 6f 66 28 54 59 50 45 29 29  A_alignof(TYPE))
7810: 2c 09 09 5c 0a 20 20 20 5f 5f 76 61 5f 61 72 67  ,..\.   __va_arg
7820: 28 4c 49 53 54 2c 54 59 50 45 29 29 0a 23 65 6e  (LIST,TYPE)).#en
7830: 64 69 66 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 46  dif.#endif../* F
7840: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 61 72  loating point ar
7850: 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 0a 23 64 65  guments. */..#de
7860: 66 69 6e 65 20 76 61 5f 61 72 67 5f 66 6c 6f 61  fine va_arg_floa
7870: 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c  t(LIST)  \.  ((L
7880: 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f  IST)->flags & __
7890: 56 41 5f 54 52 41 44 49 54 49 4f 4e 41 4c 5f 46  VA_TRADITIONAL_F
78a0: 4c 4f 41 54 5f 41 52 47 53 09 09 09 09 5c 0a 20  LOAT_ARGS....\. 
78b0: 20 20 3f 20 28 66 6c 6f 61 74 29 76 61 5f 61 72    ? (float)va_ar
78c0: 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09  g_double(LIST)..
78d0: 09 09 09 09 5c 0a 20 20 20 3a 20 5f 5f 76 61 5f  ....\.   : __va_
78e0: 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 09  arg_float(LIST).
78f0: 09 09 09 09 09 5c 0a 20 20 29 0a 0a 23 69 66 20  .....\.  )..#if 
7900: 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f  defined(__i386__
7910: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d  ) || defined(__m
7920: 36 38 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  68k__) || define
7930: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c  d(__mipsn32__) |
7940: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  | defined(__mips
7950: 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64  64__) || defined
7960: 28 5f 5f 73 70 61 72 63 5f 5f 29 20 7c 7c 20 64  (__sparc__) || d
7970: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
7980: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
7990: 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66  _alpha__) || def
79a0: 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c 7c  ined(__arm__) ||
79b0: 20 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30   defined(__rs600
79c0: 30 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  0__) || defined(
79d0: 5f 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64  __convex__) || d
79e0: 65 66 69 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29  efined(__ia64__)
79f0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 78 38   || defined(__x8
7a00: 36 5f 36 34 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  6_64__) || defin
7a10: 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 23 64 65  ed(__s390__).#de
7a20: 66 69 6e 65 20 5f 5f 76 61 5f 61 6c 69 67 6e 5f  fine __va_align_
7a30: 64 6f 75 62 6c 65 28 4c 49 53 54 29 0a 23 65 6e  double(LIST).#en
7a40: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
7a50: 5f 5f 6d 69 70 73 5f 5f 29 20 26 26 20 21 64 65  __mips__) && !de
7a60: 66 69 6e 65 64 28 5f 5f 6d 69 70 73 6e 33 32 5f  fined(__mipsn32_
7a70: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
7a80: 6d 38 38 6b 5f 5f 29 0a 2f 2a 20 5f 5f 56 41 5f  m88k__)./* __VA_
7a90: 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65 29 20  alignof(double) 
7aa0: 3e 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  > sizeof(__vawor
7ab0: 64 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  d) */.#define __
7ac0: 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28  va_align_double(
7ad0: 4c 49 53 54 29 20 20 5c 0a 20 20 28 4c 49 53 54  LIST)  \.  (LIST
7ae0: 29 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54  )->aptr = ((LIST
7af0: 29 2d 3e 61 70 74 72 20 2b 20 73 69 7a 65 6f 66  )->aptr + sizeof
7b00: 28 64 6f 75 62 6c 65 29 2d 31 29 20 26 20 2d 28  (double)-1) & -(
7b10: 6c 6f 6e 67 29 73 69 7a 65 6f 66 28 64 6f 75 62  long)sizeof(doub
7b20: 6c 65 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  le),.#endif.#if 
7b30: 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 5f 5f  defined(__hppa__
7b40: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  ).#define __va_a
7b50: 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54  lign_double(LIST
7b60: 29 20 20 5c 0a 20 20 28 4c 49 53 54 29 2d 3e 61  )  \.  (LIST)->a
7b70: 70 74 72 20 3d 20 28 4c 49 53 54 29 2d 3e 61 70  ptr = (LIST)->ap
7b80: 74 72 20 26 20 2d 28 6c 6f 6e 67 29 73 69 7a 65  tr & -(long)size
7b90: 6f 66 28 64 6f 75 62 6c 65 29 2c 0a 23 65 6e 64  of(double),.#end
7ba0: 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  if..#if defined(
7bb0: 5f 5f 73 70 61 72 63 5f 5f 29 20 26 26 20 21 64  __sparc__) && !d
7bc0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34  efined(__sparc64
7bd0: 5f 5f 29 0a 2f 2a 20 42 65 77 61 72 65 20 61 67  __)./* Beware ag
7be0: 61 69 6e 73 74 20 75 6e 61 6c 69 67 6e 65 64 20  ainst unaligned 
7bf0: 60 64 6f 75 62 6c 65 27 20 61 63 63 65 73 73 65  `double' accesse
7c00: 73 21 20 2a 2f 0a 23 64 65 66 69 6e 65 20 76 61  s! */.#define va
7c10: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54  _arg_double(LIST
7c20: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69  )  \.  (__va_ali
7c30: 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09  gn_double(LIST).
7c40: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
7c50: 2d 3e 74 6d 70 2e 5f 77 6f 72 64 73 5b 30 5d 20  ->tmp._words[0] 
7c60: 3d 20 28 28 5f 5f 76 61 77 6f 72 64 2a 29 28 28  = ((__vaword*)((
7c70: 4c 49 53 54 29 2d 3e 61 70 74 72 29 29 5b 30 5d  LIST)->aptr))[0]
7c80: 2c 09 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e  ,..\.   (LIST)->
7c90: 74 6d 70 2e 5f 77 6f 72 64 73 5b 31 5d 20 3d 20  tmp._words[1] = 
7ca0: 28 28 5f 5f 76 61 77 6f 72 64 2a 29 28 28 4c 49  ((__vaword*)((LI
7cb0: 53 54 29 2d 3e 61 70 74 72 29 29 5b 31 5d 2c 09  ST)->aptr))[1],.
7cc0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70  .\.   (LIST)->ap
7cd0: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75  tr += sizeof(dou
7ce0: 62 6c 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28  ble),.....\.   (
7cf0: 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 64 6f 75 62  LIST)->tmp._doub
7d00: 6c 65 09 09 09 09 09 09 09 5c 0a 20 20 29 0a 23  le.......\.  ).#
7d10: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
7d20: 64 28 5f 5f 61 6c 70 68 61 5f 5f 29 0a 2f 2a 20  d(__alpha__)./* 
7d30: 54 68 65 20 66 69 72 73 74 20 36 20 66 6c 6f 61  The first 6 floa
7d40: 74 69 6e 67 20 70 6f 69 6e 74 20 72 65 67 69 73  ting point regis
7d50: 74 65 72 73 20 68 61 76 65 20 62 65 65 6e 20 73  ters have been s
7d60: 74 6f 72 65 64 20 69 6e 20 61 6e 6f 74 68 65 72  tored in another
7d70: 20 70 6c 61 63 65 2e 20 2a 2f 0a 23 64 65 66 69   place. */.#defi
7d80: 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65  ne va_arg_double
7d90: 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 28 4c  (LIST)  \.  (((L
7da0: 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69  IST)->aptr += si
7db0: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 3c 3d  zeof(double)) <=
7dc0: 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70   (LIST)->memargp
7dd0: 74 72 09 09 5c 0a 20 20 20 3f 20 2a 28 64 6f 75  tr..\.   ? *(dou
7de0: 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70  ble*)((LIST)->ap
7df0: 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62  tr - sizeof(doub
7e00: 6c 65 29 20 2d 20 36 2a 73 69 7a 65 6f 66 28 64  le) - 6*sizeof(d
7e10: 6f 75 62 6c 65 29 29 09 5c 0a 20 20 20 3a 20 2a  ouble)).\.   : *
7e20: 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29  (double*)((LIST)
7e30: 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28  ->aptr - sizeof(
7e40: 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20  double))....\.  
7e50: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  ).#define __va_a
7e60: 72 67 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20  rg_float(LIST)  
7e70: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2d 3e 61 70  \.  (((LIST)->ap
7e80: 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75  tr += sizeof(dou
7e90: 62 6c 65 29 29 20 3c 3d 20 28 4c 49 53 54 29 2d  ble)) <= (LIST)-
7ea0: 3e 6d 65 6d 61 72 67 70 74 72 09 09 5c 0a 20 20  >memargptr..\.  
7eb0: 20 3f 20 2f 2a 20 54 68 65 20 66 69 72 73 74 20   ? /* The first 
7ec0: 36 20 61 72 67 73 20 68 61 76 65 20 62 65 65 6e  6 args have been
7ed0: 20 70 75 74 20 69 6e 74 6f 20 6d 65 6d 6f 72 79   put into memory
7ee0: 20 62 79 20 22 73 74 74 22 20 69 6e 73 74 72 75   by "stt" instru
7ef0: 63 74 69 6f 6e 73 20 2a 2f 5c 0a 20 20 20 20 20  ctions */\.     
7f00: 2f 2a 20 28 73 65 65 20 76 61 63 61 6c 6c 2d 61  /* (see vacall-a
7f10: 6c 70 68 61 2e 73 21 29 2e 20 54 68 65 72 65 66  lpha.s!). Theref
7f20: 6f 72 65 20 6c 6f 61 64 20 74 68 65 6d 20 61 73  ore load them as
7f30: 20 64 6f 75 62 6c 65 73 2e 20 2a 2f 09 5c 0a 20   doubles. */.\. 
7f40: 20 20 20 20 2f 2a 20 57 68 65 6e 20 76 69 65 77      /* When view
7f50: 65 64 20 61 73 20 66 6c 6f 61 74 73 2c 20 74 68  ed as floats, th
7f60: 65 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  e value will be 
7f70: 74 68 65 20 63 6f 72 72 65 63 74 20 6f 6e 65 2e  the correct one.
7f80: 20 2a 2f 09 5c 0a 20 20 20 20 20 28 66 6c 6f 61   */.\.     (floa
7f90: 74 29 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49  t)*(double*)((LI
7fa0: 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65  ST)->aptr - size
7fb0: 6f 66 28 64 6f 75 62 6c 65 29 20 2d 20 36 2a 73  of(double) - 6*s
7fc0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 5c  izeof(double)) \
7fd0: 0a 20 20 20 3a 20 2f 2a 20 54 68 65 73 65 20 61  .   : /* These a
7fe0: 72 67 73 20 68 61 76 65 20 62 65 65 6e 20 70 75  rgs have been pu
7ff0: 74 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 62 79  t into memory by
8000: 20 22 73 74 73 22 20 69 6e 73 74 72 75 63 74 69   "sts" instructi
8010: 6f 6e 73 2c 20 2a 2f 09 5c 0a 20 20 20 20 20 2f  ons, */.\.     /
8020: 2a 20 74 68 65 72 65 66 6f 72 65 20 6c 6f 61 64  * therefore load
8030: 20 74 68 65 6d 20 61 73 20 66 6c 6f 61 74 73 2e   them as floats.
8040: 20 2a 2f 09 09 09 09 5c 0a 20 20 20 20 20 2a 28   */....\.     *(
8050: 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e  float*)((LIST)->
8060: 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f  aptr - sizeof(do
8070: 75 62 6c 65 29 29 09 09 09 09 5c 0a 20 20 29 0a  uble))....\.  ).
8080: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
8090: 65 64 28 5f 5f 68 70 70 61 5f 5f 29 0a 2f 2a 20  ed(__hppa__)./* 
80a0: 54 68 65 20 66 69 72 73 74 20 34 20 66 6c 6f 61  The first 4 floa
80b0: 74 20 72 65 67 69 73 74 65 72 73 20 61 6e 64 20  t registers and 
80c0: 74 68 65 20 66 69 72 73 74 20 32 20 64 6f 75 62  the first 2 doub
80d0: 6c 65 20 72 65 67 69 73 74 65 72 73 20 61 72 65  le registers are
80e0: 20 73 74 6f 72 65 64 0a 20 2a 20 65 6c 73 65 77   stored. * elsew
80f0: 68 65 72 65 2e 0a 20 2a 2f 0a 23 69 66 20 31 20  here.. */.#if 1 
8100: 2f 2a 20 67 63 63 2d 32 2e 35 2e 32 20 70 61 73  /* gcc-2.5.2 pas
8110: 73 65 73 20 74 68 65 73 65 20 61 72 67 73 20 69  ses these args i
8120: 6e 20 67 65 6e 65 72 61 6c 20 72 65 67 69 73 74  n general regist
8130: 65 72 73 21 20 41 20 62 75 67 2c 20 49 20 74 68  ers! A bug, I th
8140: 69 6e 6b 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ink. */.#define 
8150: 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c  __va_arg_float(L
8160: 49 53 54 29 20 20 5c 0a 20 20 28 2a 28 66 6c 6f  IST)  \.  (*(flo
8170: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
8180: 72 20 2d 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61  r -= sizeof(floa
8190: 74 29 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  t))).#define va_
81a0: 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29  arg_double(LIST)
81b0: 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67    \.  (__va_alig
81c0: 6e 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 09 09  n_double(LIST)..
81d0: 09 09 09 09 5c 0a 20 20 20 2a 28 64 6f 75 62 6c  ....\.   *(doubl
81e0: 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  e*)((LIST)->aptr
81f0: 20 2d 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   -= sizeof(doubl
8200: 65 29 29 09 09 09 09 5c 0a 20 20 29 0a 23 65 6c  e))....\.  ).#el
8210: 73 65 20 2f 2a 20 74 68 69 73 20 77 6f 75 6c 64  se /* this would
8220: 20 62 65 20 63 6f 72 72 65 63 74 20 69 66 20 74   be correct if t
8230: 68 65 20 61 72 67 73 20 77 65 72 65 20 70 61 73  he args were pas
8240: 73 65 64 20 69 6e 20 66 6c 6f 61 74 20 72 65 67  sed in float reg
8250: 69 73 74 65 72 73 2e 20 2a 2f 0a 23 64 65 66 69  isters. */.#defi
8260: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61  ne __va_arg_floa
8270: 74 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 28  t(LIST)  \.  (((
8280: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 3d 20 73  LIST)->aptr -= s
8290: 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 20 3e 3d  izeof(float)) >=
82a0: 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70   (LIST)->memargp
82b0: 74 72 09 09 09 5c 0a 20 20 20 3f 20 2f 2a 20 54  tr...\.   ? /* T
82c0: 68 65 20 66 69 72 73 74 20 34 20 66 6c 6f 61 74  he first 4 float
82d0: 20 61 72 67 73 20 61 72 65 20 73 74 6f 72 65 64   args are stored
82e0: 20 73 65 70 61 72 61 74 65 6c 79 2e 20 2a 2f 09   separately. */.
82f0: 09 5c 0a 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a  .\.     *(float*
8300: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b  )((LIST)->aptr +
8310: 20 28 4c 49 53 54 29 2d 3e 66 61 72 67 5f 6f 66   (LIST)->farg_of
8320: 66 73 65 74 29 09 09 09 5c 0a 20 20 20 3a 20 2a  fset)...\.   : *
8330: 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d  (float*)((LIST)-
8340: 3e 61 70 74 72 29 09 09 09 09 09 09 5c 0a 20 20  >aptr)......\.  
8350: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67  ).#define va_arg
8360: 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c  _double(LIST)  \
8370: 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64  .  (__va_align_d
8380: 6f 75 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09  ouble(LIST).....
8390: 09 5c 0a 20 20 20 28 28 28 4c 49 53 54 29 2d 3e  .\.   (((LIST)->
83a0: 61 70 74 72 20 2d 3d 20 73 69 7a 65 6f 66 28 64  aptr -= sizeof(d
83b0: 6f 75 62 6c 65 29 29 20 3e 3d 20 28 4c 49 53 54  ouble)) >= (LIST
83c0: 29 2d 3e 6d 65 6d 61 72 67 70 74 72 09 09 5c 0a  )->memargptr..\.
83d0: 20 20 20 20 3f 20 2f 2a 20 54 68 65 20 66 69 72      ? /* The fir
83e0: 73 74 20 32 20 64 6f 75 62 6c 65 20 61 72 67 73  st 2 double args
83f0: 20 61 72 65 20 73 74 6f 72 65 64 20 73 65 70 61   are stored sepa
8400: 72 61 74 65 6c 79 2e 20 2a 2f 09 09 5c 0a 20 20  rately. */..\.  
8410: 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28      *(double*)((
8420: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 20 28 4c  LIST)->aptr + (L
8430: 49 53 54 29 2d 3e 64 61 72 67 5f 6f 66 66 73 65  IST)->darg_offse
8440: 74 29 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 64  t)...\.    : *(d
8450: 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d 3e  ouble*)((LIST)->
8460: 61 70 74 72 29 09 09 09 09 09 09 5c 0a 20 20 29  aptr)......\.  )
8470: 29 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  ).#endif.#endif.
8480: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69  #if defined(__mi
8490: 70 73 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  ps__) && !define
84a0: 64 28 5f 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f  d(__mipsn32__)./
84b0: 2a 20 54 68 65 20 66 69 72 73 74 20 30 2c 31 2c  * The first 0,1,
84c0: 32 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20  2 registers are 
84d0: 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65  stored elsewhere
84e0: 20 69 66 20 74 68 65 79 20 61 72 65 20 66 6c 6f   if they are flo
84f0: 61 74 69 6e 67 2d 70 6f 69 6e 74 0a 20 2a 20 70  ating-point. * p
8500: 61 72 61 6d 65 74 65 72 73 2e 0a 20 2a 2f 0a 23  arameters.. */.#
8510: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
8520: 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20  float(LIST)  \. 
8530: 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b   ((LIST)->aptr +
8540: 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 2c  = sizeof(float),
8550: 09 09 09 09 09 5c 0a 20 20 20 28 4c 49 53 54 29  .....\.   (LIST)
8560: 2d 3e 61 6e 75 6d 2b 2b 2c 09 09 09 09 09 09 09  ->anum++,.......
8570: 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 61 6e  \.   ((LIST)->an
8580: 75 6d 20 3d 3d 20 31 09 09 09 09 09 09 09 5c 0a  um == 1.......\.
8590: 20 20 20 20 3f 20 28 28 4c 49 53 54 29 2d 3e 66      ? ((LIST)->f
85a0: 6c 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 46 4c 4f  lags |= __VA_FLO
85b0: 41 54 5f 31 2c 20 28 4c 49 53 54 29 2d 3e 66 61  AT_1, (LIST)->fa
85c0: 72 67 5b 30 5d 29 09 09 09 5c 0a 20 20 20 20 3a  rg[0])...\.    :
85d0: 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3d   ((LIST)->anum =
85e0: 3d 20 32 20 26 26 20 28 28 4c 49 53 54 29 2d 3e  = 2 && ((LIST)->
85f0: 66 6c 61 67 73 20 26 20 5f 5f 56 41 5f 46 4c 4f  flags & __VA_FLO
8600: 41 54 5f 31 29 09 09 5c 0a 20 20 20 20 20 20 20  AT_1)..\.       
8610: 3f 20 28 2f 2a 20 28 4c 49 53 54 29 2d 3e 66 6c  ? (/* (LIST)->fl
8620: 61 67 73 20 7c 3d 20 5f 5f 56 41 5f 46 4c 4f 41  ags |= __VA_FLOA
8630: 54 5f 32 2c 20 2a 2f 20 28 4c 49 53 54 29 2d 3e  T_2, */ (LIST)->
8640: 66 61 72 67 5b 31 5d 29 09 09 5c 0a 20 20 20 20  farg[1])..\.    
8650: 20 20 20 3a 20 2a 28 66 6c 6f 61 74 2a 29 28 28     : *(float*)((
8660: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69  LIST)->aptr - si
8670: 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09 09 5c  zeof(float))...\
8680: 0a 20 20 29 29 20 20 29 0a 23 64 65 66 69 6e 65  .  ))  ).#define
8690: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c   va_arg_double(L
86a0: 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  IST)  \.  (__va_
86b0: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
86c0: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28 4c 49  T)......\.   (LI
86d0: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a  ST)->aptr += siz
86e0: 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09 09 09  eof(double),....
86f0: 09 5c 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 6e  .\.   (LIST)->an
8700: 75 6d 2b 2b 2c 09 09 09 09 09 09 09 5c 0a 20 20  um++,.......\.  
8710: 20 28 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3d   ((LIST)->anum =
8720: 3d 20 31 09 09 09 09 09 09 09 5c 0a 20 20 20 20  = 1.......\.    
8730: 3f 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73  ? ((LIST)->flags
8740: 20 7c 3d 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31   |= __VA_FLOAT_1
8750: 2c 20 28 4c 49 53 54 29 2d 3e 64 61 72 67 5b 30  , (LIST)->darg[0
8760: 5d 29 09 09 09 5c 0a 20 20 20 20 3a 20 28 28 4c  ])...\.    : ((L
8770: 49 53 54 29 2d 3e 61 6e 75 6d 20 3d 3d 20 32 20  IST)->anum == 2 
8780: 26 26 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61 67  && ((LIST)->flag
8790: 73 20 26 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 31  s & __VA_FLOAT_1
87a0: 29 09 09 5c 0a 20 20 20 20 20 20 20 3f 20 28 2f  )..\.       ? (/
87b0: 2a 20 28 4c 49 53 54 29 2d 3e 66 6c 61 67 73 20  * (LIST)->flags 
87c0: 7c 3d 20 5f 5f 56 41 5f 46 4c 4f 41 54 5f 32 2c  |= __VA_FLOAT_2,
87d0: 20 2a 2f 20 28 4c 49 53 54 29 2d 3e 64 61 72 67   */ (LIST)->darg
87e0: 5b 31 5d 29 09 09 5c 0a 20 20 20 20 20 20 20 3a  [1])..\.       :
87f0: 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53   *(double*)((LIS
8800: 54 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f  T)->aptr - sizeo
8810: 66 28 64 6f 75 62 6c 65 29 29 09 09 09 5c 0a 20  f(double))...\. 
8820: 20 29 29 20 20 29 0a 23 65 6e 64 69 66 0a 23 69   ))  ).#endif.#i
8830: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73  f defined(__mips
8840: 6e 33 32 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65  n32__) || define
8850: 64 28 5f 5f 6d 69 70 73 36 34 5f 5f 29 0a 2f 2a  d(__mips64__)./*
8860: 20 54 68 65 20 66 69 72 73 74 20 30 2c 2e 2e 2c   The first 0,..,
8870: 38 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20  8 registers are 
8880: 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65  stored elsewhere
8890: 20 69 66 20 74 68 65 79 20 61 72 65 20 66 6c 6f   if they are flo
88a0: 61 74 69 6e 67 2d 70 6f 69 6e 74 0a 20 2a 20 70  ating-point. * p
88b0: 61 72 61 6d 65 74 65 72 73 2e 0a 20 2a 2f 0a 23  arameters.. */.#
88c0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
88d0: 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20  float(LIST)  \. 
88e0: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75   (__va_align_dou
88f0: 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c  ble(LIST)......\
8900: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
8910: 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   += sizeof(doubl
8920: 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 2b 2b  e),.....\.   (++
8930: 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20  (LIST)->anum <= 
8940: 38 09 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  8.......\.    ? 
8950: 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 28 4c 49  (LIST)->farg[(LI
8960: 53 54 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d 09 09  ST)->anum - 1]..
8970: 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f  ...\.    : *(flo
8980: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
8990: 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  r - sizeof(doubl
89a0: 65 29 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 64  e))....\.  )).#d
89b0: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75  efine va_arg_dou
89c0: 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ble(LIST)  \.  (
89d0: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
89e0: 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  e(LIST)......\. 
89f0: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
8a00: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
8a10: 2c 09 09 09 09 09 5c 0a 20 20 20 28 2b 2b 28 4c  ,.....\.   (++(L
8a20: 49 53 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20 38 09  IST)->anum <= 8.
8a30: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c  ......\.    ? (L
8a40: 49 53 54 29 2d 3e 64 61 72 67 5b 28 4c 49 53 54  IST)->darg[(LIST
8a50: 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d 09 09 09 09  )->anum - 1]....
8a60: 09 5c 0a 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c  .\.    : *(doubl
8a70: 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  e*)((LIST)->aptr
8a80: 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65   - sizeof(double
8a90: 29 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 65 6e  ))....\.  )).#en
8aa0: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
8ab0: 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20  __sparc64__)./* 
8ac0: 54 68 65 20 66 69 72 73 74 20 30 2c 2e 2e 2c 31  The first 0,..,1
8ad0: 36 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20  6 registers are 
8ae0: 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72 65  stored elsewhere
8af0: 20 69 66 20 74 68 65 79 20 61 72 65 20 66 6c 6f   if they are flo
8b00: 61 74 69 6e 67 2d 70 6f 69 6e 74 0a 20 2a 20 70  ating-point. * p
8b10: 61 72 61 6d 65 74 65 72 73 2e 0a 20 2a 2f 0a 23  arameters.. */.#
8b20: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
8b30: 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20  float(LIST)  \. 
8b40: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75   (__va_align_dou
8b50: 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c  ble(LIST)......\
8b60: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
8b70: 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   += sizeof(doubl
8b80: 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 2b 2b  e),.....\.   (++
8b90: 28 4c 49 53 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20  (LIST)->anum <= 
8ba0: 31 36 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20  16......\.    ? 
8bb0: 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 28 4c 49  (LIST)->farg[(LI
8bc0: 53 54 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d 09 09  ST)->anum - 1]..
8bd0: 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f  ...\.    : *(flo
8be0: 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74  at*)((LIST)->apt
8bf0: 72 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  r - sizeof(doubl
8c00: 65 29 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 64  e))....\.  )).#d
8c10: 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75  efine va_arg_dou
8c20: 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20 20 28  ble(LIST)  \.  (
8c30: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c  __va_align_doubl
8c40: 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c 0a 20  e(LIST)......\. 
8c50: 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b    (LIST)->aptr +
8c60: 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  = sizeof(double)
8c70: 2c 09 09 09 09 09 5c 0a 20 20 20 28 2b 2b 28 4c  ,.....\.   (++(L
8c80: 49 53 54 29 2d 3e 61 6e 75 6d 20 3c 3d 20 31 36  IST)->anum <= 16
8c90: 09 09 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 4c  ......\.    ? (L
8ca0: 49 53 54 29 2d 3e 64 61 72 67 5b 28 4c 49 53 54  IST)->darg[(LIST
8cb0: 29 2d 3e 61 6e 75 6d 20 2d 20 31 5d 09 09 09 09  )->anum - 1]....
8cc0: 09 5c 0a 20 20 20 20 3a 20 2a 28 64 6f 75 62 6c  .\.    : *(doubl
8cd0: 65 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72  e*)((LIST)->aptr
8ce0: 20 2d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65   - sizeof(double
8cf0: 29 29 09 09 09 09 5c 0a 20 20 29 29 0a 23 65 6e  ))....\.  )).#en
8d00: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
8d10: 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26 26 20 28  __rs6000__) && (
8d20: 64 65 66 69 6e 65 64 28 5f 41 49 58 29 20 7c 7c  defined(_AIX) ||
8d30: 20 28 64 65 66 69 6e 65 64 28 5f 5f 4d 41 43 48   (defined(__MACH
8d40: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f  __) && defined(_
8d50: 5f 41 50 50 4c 45 5f 5f 29 29 29 0a 2f 2a 20 54  _APPLE__)))./* T
8d60: 68 65 20 66 69 72 73 74 20 31 33 20 66 6c 6f 61  he first 13 floa
8d70: 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73 20  ting-point args 
8d80: 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65 64  have been stored
8d90: 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a 23   elsewhere. */.#
8da0: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
8db0: 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a 20  float(LIST)  \. 
8dc0: 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b   ((LIST)->aptr +
8dd0: 3d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 2c  = sizeof(float),
8de0: 09 09 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54  .....\.   ((LIST
8df0: 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20  )->memfargptr < 
8e00: 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 33  &(LIST)->farg[13
8e10: 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 28 66 6c  ]....\.    ? (fl
8e20: 6f 61 74 29 20 2a 28 28 4c 49 53 54 29 2d 3e 6d  oat) *((LIST)->m
8e30: 65 6d 66 61 72 67 70 74 72 2b 2b 29 09 09 09 09  emfargptr++)....
8e40: 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c 6f 61 74  .\.    : *(float
8e50: 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  *)((LIST)->aptr 
8e60: 2d 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29  - sizeof(float))
8e70: 09 09 09 09 5c 0a 20 20 29 29 0a 23 64 65 66 69  ....\.  )).#defi
8e80: 6e 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65  ne va_arg_double
8e90: 28 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76  (LIST)  \.  (__v
8ea0: 61 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c  a_align_double(L
8eb0: 49 53 54 29 09 09 09 09 09 09 5c 0a 20 20 20 28  IST)......\.   (
8ec0: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73  LIST)->aptr += s
8ed0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 09 09  izeof(double),..
8ee0: 09 09 09 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d  ...\.   ((LIST)-
8ef0: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
8f00: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 31 33 5d 09  LIST)->farg[13].
8f10: 09 09 09 5c 0a 20 20 20 20 3f 20 2a 28 28 4c 49  ...\.    ? *((LI
8f20: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b  ST)->memfargptr+
8f30: 2b 29 09 09 09 09 09 09 5c 0a 20 20 20 20 3a 20  +)......\.    : 
8f40: 2a 28 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54  *(double*)((LIST
8f50: 29 2d 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66  )->aptr - sizeof
8f60: 28 64 6f 75 62 6c 65 29 29 09 09 09 09 5c 0a 20  (double))....\. 
8f70: 20 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64   )).#endif.#if d
8f80: 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30 5f  efined(__rs6000_
8f90: 5f 29 20 26 26 20 21 28 64 65 66 69 6e 65 64 28  _) && !(defined(
8fa0: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
8fb0: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
8fc0: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
8fd0: 29 29 29 0a 2f 2a 20 54 68 65 20 66 69 72 73 74  )))./* The first
8fe0: 20 38 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e   8 floating-poin
8ff0: 74 20 61 72 67 73 20 68 61 76 65 20 62 65 65 6e  t args have been
9000: 20 73 74 6f 72 65 64 20 65 6c 73 65 77 68 65 72   stored elsewher
9010: 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  e. */.#define __
9020: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 4c 49 53  va_arg_float(LIS
9030: 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  T)  \.  ((LIST)-
9040: 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c 20 26 28  >memfargptr < &(
9050: 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38 5d 09 09  LIST)->farg[8]..
9060: 09 09 5c 0a 20 20 20 3f 20 28 66 6c 6f 61 74 29  ..\.   ? (float)
9070: 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61   *((LIST)->memfa
9080: 72 67 70 74 72 2b 2b 29 09 09 09 09 09 5c 0a 20  rgptr++).....\. 
9090: 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74    : ((LIST)->apt
90a0: 72 20 3d 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73  r = ((LIST)->ons
90b0: 74 61 63 6b 20 3d 3d 20 30 20 20 20 20 20 20 20  tack == 0       
90c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90d0: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20         \.       
90e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90f0: 3f 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61  ? ((LIST)->onsta
9100: 63 6b 3d 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61  ck=1, (LIST)->sa
9110: 70 74 72 29 20 20 20 20 20 20 20 20 20 20 20 20  ptr)            
9120: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
9130: 20 20 20 20 20 20 20 20 20 20 3a 20 28 4c 49 53            : (LIS
9140: 54 29 2d 3e 61 70 74 72 20 20 20 20 20 20 20 20  T)->aptr        
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 20 20 20 29 2c 20 20 20 20 20 20 20 20 20 20 20     ),           
9190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91b0: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 28 4c 49       \.      (LI
91c0: 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a  ST)->aptr += siz
91d0: 65 6f 66 28 66 6c 6f 61 74 29 2c 09 09 09 09 09  eof(float),.....
91e0: 5c 0a 20 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a  \.      *(float*
91f0: 29 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d  )((LIST)->aptr -
9200: 20 73 69 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09   sizeof(float)).
9210: 09 09 09 5c 0a 20 20 29 29 0a 23 64 65 66 69 6e  ...\.  )).#defin
9220: 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28  e va_arg_double(
9230: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIST)  \.  ((LIS
9240: 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c  T)->memfargptr <
9250: 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38   &(LIST)->farg[8
9260: 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 2a 28 28  ]....\.    ? *((
9270: 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74  LIST)->memfargpt
9280: 72 2b 2b 29 09 09 09 09 09 09 5c 0a 20 20 20 20  r++)......\.    
9290: 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  : ((LIST)->aptr 
92a0: 3d 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61  = ((LIST)->onsta
92b0: 63 6b 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20  ck == 0         
92c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92d0: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20      \.          
92e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20 28               ? (
92f0: 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d  (LIST)->onstack=
9300: 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72  1, (LIST)->saptr
9310: 29 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a  )             \.
9320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9330: 20 20 20 20 20 20 20 3a 20 28 4c 49 53 54 29 2d         : (LIST)-
9340: 3e 61 70 74 72 20 20 20 20 20 20 20 20 20 20 20  >aptr           
9350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9360: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ),              
9390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93b0: 20 20 5c 0a 20 20 20 20 20 20 20 5f 5f 76 61 5f    \.       __va_
93c0: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
93d0: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  T)......\.      
93e0: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d   (LIST)->aptr +=
93f0: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c   sizeof(double),
9400: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 2a 28  .....\.       *(
9410: 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d  double*)((LIST)-
9420: 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64  >aptr - sizeof(d
9430: 6f 75 62 6c 65 29 29 09 09 09 5c 0a 20 20 29 29  ouble))...\.  ))
9440: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
9450: 6e 65 64 28 5f 5f 73 33 39 30 5f 5f 29 0a 2f 2a  ned(__s390__)./*
9460: 20 54 68 65 20 66 69 72 73 74 20 32 20 66 6c 6f   The first 2 flo
9470: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73  ating-point args
9480: 20 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65   have been store
9490: 64 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a  d elsewhere. */.
94a0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
94b0: 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a  _float(LIST)  \.
94c0: 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61    ((LIST)->memfa
94d0: 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54 29 2d  rgptr < &(LIST)-
94e0: 3e 66 61 72 67 5b 32 5d 09 09 09 09 5c 0a 20 20  >farg[2]....\.  
94f0: 20 3f 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 64 61   ? (LIST)->memda
9500: 72 67 70 74 72 2b 2b 2c 20 28 66 6c 6f 61 74 29  rgptr++, (float)
9510: 20 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61   *((LIST)->memfa
9520: 72 67 70 74 72 2b 2b 29 09 09 5c 0a 20 20 20 3a  rgptr++)..\.   :
9530: 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3d   ((LIST)->aptr =
9540: 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63   ((LIST)->onstac
9550: 6b 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20 20  k == 0          
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9570: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20      \.          
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20 28               ? (
9590: 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d  (LIST)->onstack=
95a0: 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72  1, (LIST)->saptr
95b0: 29 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a  )             \.
95c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95d0: 20 20 20 20 20 20 20 3a 20 28 4c 49 53 54 29 2d         : (LIST)-
95e0: 3e 61 70 74 72 20 20 20 20 20 20 20 20 20 20 20  >aptr           
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9600: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
9610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9620: 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ),              
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9650: 20 20 5c 0a 20 20 20 20 20 20 28 4c 49 53 54 29    \.      (LIST)
9660: 2d 3e 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66  ->aptr += sizeof
9670: 28 66 6c 6f 61 74 29 2c 09 09 09 09 09 5c 0a 20  (float),.....\. 
9680: 20 20 20 20 20 2a 28 66 6c 6f 61 74 2a 29 28 28       *(float*)((
9690: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69  LIST)->aptr - si
96a0: 7a 65 6f 66 28 66 6c 6f 61 74 29 29 09 09 09 09  zeof(float))....
96b0: 5c 0a 20 20 29 29 0a 23 64 65 66 69 6e 65 20 76  \.  )).#define v
96c0: 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 4c 49 53  a_arg_double(LIS
96d0: 54 29 20 20 5c 0a 20 20 28 28 4c 49 53 54 29 2d  T)  \.  ((LIST)-
96e0: 3e 6d 65 6d 64 61 72 67 70 74 72 20 3c 20 26 28  >memdargptr < &(
96f0: 4c 49 53 54 29 2d 3e 64 61 72 67 5b 32 5d 09 09  LIST)->darg[2]..
9700: 09 09 5c 0a 20 20 20 20 3f 20 28 4c 49 53 54 29  ..\.    ? (LIST)
9710: 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 2c 20  ->memfargptr++, 
9720: 2a 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 64 61 72  *((LIST)->memdar
9730: 67 70 74 72 2b 2b 29 09 09 09 5c 0a 20 20 20 20  gptr++)...\.    
9740: 3a 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20  : ((LIST)->aptr 
9750: 3d 20 28 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61  = ((LIST)->onsta
9760: 63 6b 20 3d 3d 20 30 20 20 20 20 20 20 20 20 20  ck == 0         
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9780: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20      \.          
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20 28               ? (
97a0: 28 4c 49 53 54 29 2d 3e 6f 6e 73 74 61 63 6b 3d  (LIST)->onstack=
97b0: 31 2c 20 28 4c 49 53 54 29 2d 3e 73 61 70 74 72  1, (LIST)->saptr
97c0: 29 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a  )             \.
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97e0: 20 20 20 20 20 20 20 3a 20 28 4c 49 53 54 29 2d         : (LIST)-
97f0: 3e 61 70 74 72 20 20 20 20 20 20 20 20 20 20 20  >aptr           
9800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9810: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9830: 29 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ),              
9840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9860: 20 20 5c 0a 20 20 20 20 20 20 20 5f 5f 76 61 5f    \.       __va_
9870: 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49 53  align_double(LIS
9880: 54 29 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  T)......\.      
9890: 20 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d   (LIST)->aptr +=
98a0: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c   sizeof(double),
98b0: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20 2a 28  .....\.       *(
98c0: 64 6f 75 62 6c 65 2a 29 28 28 4c 49 53 54 29 2d  double*)((LIST)-
98d0: 3e 61 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 64  >aptr - sizeof(d
98e0: 6f 75 62 6c 65 29 29 09 09 09 5c 0a 20 20 29 29  ouble))...\.  ))
98f0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
9900: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 0a 2f 2a  ned(__ia64__)./*
9910: 20 54 68 65 20 66 69 72 73 74 20 38 20 66 6c 6f   The first 8 flo
9920: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 61 72 67 73  ating-point args
9930: 20 68 61 76 65 20 62 65 65 6e 20 73 74 6f 72 65   have been store
9940: 64 20 65 6c 73 65 77 68 65 72 65 2e 20 2a 2f 0a  d elsewhere. */.
9950: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
9960: 5f 66 6c 6f 61 74 28 4c 49 53 54 29 20 20 5c 0a  _float(LIST)  \.
9970: 20 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20    ((LIST)->aptr 
9980: 2b 3d 20 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f  += sizeof(__vawo
9990: 72 64 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 28  rd),.....\.   ((
99a0: 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74  LIST)->memfargpt
99b0: 72 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72  r < &(LIST)->far
99c0: 67 5b 38 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20  g[8]....\.    ? 
99d0: 28 66 6c 6f 61 74 29 20 2a 28 28 4c 49 53 54 29  (float) *((LIST)
99e0: 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b 2b 29 09  ->memfargptr++).
99f0: 09 09 09 09 5c 0a 20 20 20 20 3a 20 2a 28 66 6c  ....\.    : *(fl
9a00: 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61 70  oat*)((LIST)->ap
9a10: 74 72 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76 61  tr - sizeof(__va
9a20: 77 6f 72 64 29 29 09 09 09 5c 0a 20 20 29 29 0a  word))...\.  )).
9a30: 23 64 65 66 69 6e 65 20 76 61 5f 61 72 67 5f 64  #define va_arg_d
9a40: 6f 75 62 6c 65 28 4c 49 53 54 29 20 20 5c 0a 20  ouble(LIST)  \. 
9a50: 20 28 5f 5f 76 61 5f 61 6c 69 67 6e 5f 64 6f 75   (__va_align_dou
9a60: 62 6c 65 28 4c 49 53 54 29 09 09 09 09 09 09 5c  ble(LIST)......\
9a70: 0a 20 20 20 28 4c 49 53 54 29 2d 3e 61 70 74 72  .   (LIST)->aptr
9a80: 20 2b 3d 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c   += sizeof(doubl
9a90: 65 29 2c 09 09 09 09 09 5c 0a 20 20 20 28 28 4c  e),.....\.   ((L
9aa0: 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72  IST)->memfargptr
9ab0: 20 3c 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67   < &(LIST)->farg
9ac0: 5b 38 5d 09 09 09 09 5c 0a 20 20 20 20 3f 20 2a  [8]....\.    ? *
9ad0: 28 28 4c 49 53 54 29 2d 3e 6d 65 6d 66 61 72 67  ((LIST)->memfarg
9ae0: 70 74 72 2b 2b 29 09 09 09 09 09 09 5c 0a 20 20  ptr++)......\.  
9af0: 20 20 3a 20 2a 28 64 6f 75 62 6c 65 2a 29 28 28    : *(double*)((
9b00: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20 73 69  LIST)->aptr - si
9b10: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 09 09 09  zeof(double))...
9b20: 09 5c 0a 20 20 29 29 0a 23 65 6e 64 69 66 0a 23  .\.  )).#endif.#
9b30: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36  if defined(__x86
9b40: 5f 36 34 5f 5f 29 0a 2f 2a 20 54 68 65 20 66 69  _64__)./* The fi
9b50: 72 73 74 20 38 20 66 6c 6f 61 74 69 6e 67 2d 70  rst 8 floating-p
9b60: 6f 69 6e 74 20 61 72 67 73 20 68 61 76 65 20 62  oint args have b
9b70: 65 65 6e 20 73 74 6f 72 65 64 20 65 6c 73 65 77  een stored elsew
9b80: 68 65 72 65 2e 20 2a 2f 0a 23 64 65 66 69 6e 65  here. */.#define
9b90: 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28   __va_arg_float(
9ba0: 4c 49 53 54 29 20 20 5c 0a 20 20 28 28 4c 49 53  LIST)  \.  ((LIS
9bb0: 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 3c  T)->memfargptr <
9bc0: 20 26 28 4c 49 53 54 29 2d 3e 66 61 72 67 5b 38   &(LIST)->farg[8
9bd0: 5d 09 09 09 09 5c 0a 20 20 20 3f 20 28 28 4c 49  ]....\.   ? ((LI
9be0: 53 54 29 2d 3e 6d 65 6d 66 61 72 67 70 74 72 2b  ST)->memfargptr+
9bf0: 2b 2c 09 09 09 09 09 09 5c 0a 20 20 20 20 20 20  +,......\.      
9c00: 2a 28 66 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29  *(float*)((LIST)
9c10: 2d 3e 6d 65 6d 66 61 72 67 70 74 72 20 2d 20 31  ->memfargptr - 1
9c20: 29 09 09 09 09 09 5c 0a 20 20 20 20 20 29 09 09  ).....\.     )..
9c30: 09 09 09 09 09 09 09 5c 0a 20 20 20 3a 20 28 28  .......\.   : ((
9c40: 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20 73  LIST)->aptr += s
9c50: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 2c  izeof(__vaword),
9c60: 09 09 09 09 09 5c 0a 20 20 20 20 20 20 2a 28 66  .....\.      *(f
9c70: 6c 6f 61 74 2a 29 28 28 4c 49 53 54 29 2d 3e 61  loat*)((LIST)->a
9c80: 70 74 72 20 2d 20 73 69 7a 65 6f 66 28 5f 5f 76  ptr - sizeof(__v
9c90: 61 77 6f 72 64 29 29 09 09 09 5c 0a 20 20 29 20  aword))...\.  ) 
9ca0: 20 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 61 72   ).#define va_ar
9cb0: 67 5f 64 6f 75 62 6c 65 28 4c 49 53 54 29 20 20  g_double(LIST)  
9cc0: 5c 0a 20 20 28 28 4c 49 53 54 29 2d 3e 6d 65 6d  \.  ((LIST)->mem
9cd0: 66 61 72 67 70 74 72 20 3c 20 26 28 4c 49 53 54  fargptr < &(LIST
9ce0: 29 2d 3e 66 61 72 67 5b 38 5d 09 09 09 09 5c 0a  )->farg[8]....\.
9cf0: 20 20 20 3f 20 2a 28 4c 49 53 54 29 2d 3e 6d 65     ? *(LIST)->me
9d00: 6d 66 61 72 67 70 74 72 2b 2b 09 09 09 09 09 09  mfargptr++......
9d10: 5c 0a 20 20 20 3a 20 28 28 4c 49 53 54 29 2d 3e  \.   : ((LIST)->
9d20: 61 70 74 72 20 2b 3d 20 73 69 7a 65 6f 66 28 5f  aptr += sizeof(_
9d30: 5f 76 61 77 6f 72 64 29 2c 09 09 09 09 09 5c 0a  _vaword),.....\.
9d40: 20 20 20 20 20 20 2a 28 64 6f 75 62 6c 65 2a 29        *(double*)
9d50: 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2d 20  ((LIST)->aptr - 
9d60: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
9d70: 29 09 09 09 5c 0a 20 20 29 20 20 29 0a 23 65 6e  )...\.  )  ).#en
9d80: 64 69 66 0a 23 69 66 6e 64 65 66 20 5f 5f 76 61  dif.#ifndef __va
9d90: 5f 61 72 67 5f 66 6c 6f 61 74 0a 23 64 65 66 69  _arg_float.#defi
9da0: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 66 6c 6f 61  ne __va_arg_floa
9db0: 74 28 4c 49 53 54 29 09 5f 5f 76 61 5f 61 72 67  t(LIST).__va_arg
9dc0: 28 4c 49 53 54 2c 66 6c 6f 61 74 29 0a 23 65 6e  (LIST,float).#en
9dd0: 64 69 66 0a 23 69 66 6e 64 65 66 20 76 61 5f 61  dif.#ifndef va_a
9de0: 72 67 5f 64 6f 75 62 6c 65 0a 23 64 65 66 69 6e  rg_double.#defin
9df0: 65 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28  e va_arg_double(
9e00: 4c 49 53 54 29 20 20 5c 0a 20 20 28 5f 5f 76 61  LIST)  \.  (__va
9e10: 5f 61 6c 69 67 6e 5f 64 6f 75 62 6c 65 28 4c 49  _align_double(LI
9e20: 53 54 29 20 5f 5f 76 61 5f 61 72 67 28 4c 49 53  ST) __va_arg(LIS
9e30: 54 2c 64 6f 75 62 6c 65 29 29 0a 23 65 6e 64 69  T,double)).#endi
9e40: 66 0a 0a 2f 2a 20 50 6f 69 6e 74 65 72 20 61 72  f../* Pointer ar
9e50: 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 23 64 65 66  guments. */.#def
9e60: 69 6e 65 20 76 61 5f 61 72 67 5f 70 74 72 28 4c  ine va_arg_ptr(L
9e70: 49 53 54 2c 54 59 50 45 29 09 5f 5f 76 61 5f 61  IST,TYPE).__va_a
9e80: 72 67 28 4c 49 53 54 2c 54 59 50 45 29 0a 0a 2f  rg(LIST,TYPE)../
9e90: 2a 20 53 74 72 75 63 74 75 72 65 20 61 72 67 75  * Structure argu
9ea0: 6d 65 6e 74 73 2e 20 2a 2f 0a 23 64 65 66 69 6e  ments. */.#defin
9eb0: 65 20 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28  e va_arg_struct(
9ec0: 4c 49 53 54 2c 54 59 50 45 29 20 20 5c 0a 20 20  LIST,TYPE)  \.  
9ed0: 2a 28 54 59 50 45 2a 29 5f 5f 76 61 5f 61 72 67  *(TYPE*)__va_arg
9ee0: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 73 69 7a  _struct(LIST,siz
9ef0: 65 6f 66 28 54 59 50 45 29 2c 5f 5f 56 41 5f 61  eof(TYPE),__VA_a
9f00: 6c 69 67 6e 6f 66 28 54 59 50 45 29 29 0a 2f 2a  lignof(TYPE))./*
9f10: 20 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28   _va_arg_struct(
9f20: 29 20 69 73 20 6c 69 6b 65 20 76 61 5f 61 72 67  ) is like va_arg
9f30: 5f 73 74 72 75 63 74 28 29 2c 20 65 78 63 65 70  _struct(), excep
9f40: 74 20 74 68 61 74 20 79 6f 75 20 70 61 73 73 20  t that you pass 
9f50: 74 68 65 20 74 79 70 65 27 73 0a 20 2a 20 73 69  the type's. * si
9f60: 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65 6e 74  ze and alignment
9f70: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
9f80: 74 79 70 65 20 61 6e 64 20 67 65 74 20 74 68 65  type and get the
9f90: 20 76 61 6c 75 65 27 73 20 61 64 64 72 65 73 73   value's address
9fa0: 20 69 6e 73 74 65 61 64 0a 20 2a 20 6f 66 20 74   instead. * of t
9fb0: 68 65 20 76 61 6c 75 65 20 69 74 73 65 6c 66 2e  he value itself.
9fc0: 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 76 61  . */.#define _va
9fd0: 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54  _arg_struct(LIST
9fe0: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
9ff0: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 76 6f 69  ALIGN)  \.  (voi
a000: 64 2a 29 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75  d*)__va_arg_stru
a010: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
a020: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 0a 2f 2a  E,TYPE_ALIGN)./*
a030: 20 53 74 72 75 63 74 75 72 65 20 61 72 67 75 6d   Structure argum
a040: 65 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 2a  ent alignment. *
a050: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
a060: 69 33 38 36 5f 5f 29 20 26 26 20 64 65 66 69 6e  i386__) && defin
a070: 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a 2f 2a 20  ed(_MSC_VER)./* 
a080: 49 6e 20 4d 53 56 43 2c 20 64 6f 75 62 6c 65 73  In MSVC, doubles
a090: 20 69 6e 73 69 64 65 20 73 74 72 75 63 74 75 72   inside structur
a0a0: 65 73 20 68 61 76 65 20 61 6c 69 67 6e 6d 65 6e  es have alignmen
a0b0: 74 20 38 2c 20 69 2e 65 2e 0a 20 2a 20 5f 5f 56  t 8, i.e.. * __V
a0c0: 41 5f 61 6c 69 67 6e 6f 66 28 64 6f 75 62 6c 65  A_alignof(double
a0d0: 29 20 3d 20 38 2c 20 62 75 74 20 64 6f 75 62 6c  ) = 8, but doubl
a0e0: 65 73 20 28 61 6e 64 20 61 6c 73 6f 20 73 74 72  es (and also str
a0f0: 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69  uctures containi
a100: 6e 67 0a 20 2a 20 64 6f 75 62 6c 65 73 29 20 61  ng. * doubles) a
a110: 72 65 20 70 61 73 73 65 64 20 6f 6e 20 74 68 65  re passed on the
a120: 20 73 74 61 63 6b 20 77 69 74 68 20 61 6c 69 67   stack with alig
a130: 6e 6d 65 6e 74 20 34 2e 20 4c 6f 6f 6b 73 20 72  nment 4. Looks r
a140: 65 61 6c 6c 79 20 77 65 69 72 64 2e 0a 20 2a 2f  eally weird.. */
a150: 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 73 74  .#define __va_st
a160: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
a170: 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20  YPE_ALIGN)  \.  
a180: 28 28 54 59 50 45 5f 41 4c 49 47 4e 29 20 3c 3d  ((TYPE_ALIGN) <=
a190: 20 34 20 3f 20 28 54 59 50 45 5f 41 4c 49 47 4e   4 ? (TYPE_ALIGN
a1a0: 29 20 3a 20 34 29 0a 23 65 6c 73 65 0a 23 64 65  ) : 4).#else.#de
a1b0: 66 69 6e 65 20 5f 5f 76 61 5f 73 74 72 75 63 74  fine __va_struct
a1c0: 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50 45 5f  _alignment(TYPE_
a1d0: 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 54 59 50  ALIGN)  \.  (TYP
a1e0: 45 5f 41 4c 49 47 4e 29 0a 23 65 6e 64 69 66 0a  E_ALIGN).#endif.
a1f0: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 6c 69  #define __va_ali
a200: 67 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  gn_struct(LIST,T
a210: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a220: 49 47 4e 29 20 20 5c 0a 20 20 28 4c 49 53 54 29  IGN)  \.  (LIST)
a230: 2d 3e 61 70 74 72 20 3d 20 28 28 4c 49 53 54 29  ->aptr = ((LIST)
a240: 2d 3e 61 70 74 72 20 2b 20 5f 5f 76 61 5f 73 74  ->aptr + __va_st
a250: 72 75 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54  ruct_alignment(T
a260: 59 50 45 5f 41 4c 49 47 4e 29 2d 31 29 20 26 20  YPE_ALIGN)-1) & 
a270: 2d 28 6c 6f 6e 67 29 5f 5f 76 61 5f 73 74 72 75  -(long)__va_stru
a280: 63 74 5f 61 6c 69 67 6e 6d 65 6e 74 28 54 59 50  ct_alignment(TYP
a290: 45 5f 41 4c 49 47 4e 29 2c 0a 23 69 66 20 64 65  E_ALIGN),.#if de
a2a0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20  fined(__i386__) 
a2b0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 36 38  || defined(__m68
a2c0: 6b 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  k__) || defined(
a2d0: 5f 5f 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65  __alpha__) || de
a2e0: 66 69 6e 65 64 28 5f 5f 61 72 6d 5f 5f 29 20 7c  fined(__arm__) |
a2f0: 7c 20 64 65 66 69 6e 65 64 28 5f 5f 6d 38 38 6b  | defined(__m88k
a300: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
a310: 5f 63 6f 6e 76 65 78 5f 5f 29 20 7c 7c 20 64 65  _convex__) || de
a320: 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36 34 5f 5f  fined(__x86_64__
a330: 29 0a 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61  ).#define __va_a
a340: 72 67 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  rg_struct(LIST,T
a350: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a360: 49 47 4e 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  IGN)  \.  (__va_
a370: 61 6c 69 67 6e 5f 73 74 72 75 63 74 28 4c 49 53  align_struct(LIS
a380: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
a390: 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a 20 20 20  _ALIGN)....\.   
a3a0: 5f 5f 76 61 5f 61 72 67 5f 61 64 6a 75 73 74 65  __va_arg_adjuste
a3b0: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
a3c0: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 09  ,TYPE_ALIGN)....
a3d0: 5c 0a 20 20 29 0a 23 65 6e 64 69 66 0a 23 69 66  \.  ).#endif.#if
a3e0: 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 5f   defined(__mips_
a3f0: 5f 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  _) && !defined(_
a400: 5f 6d 69 70 73 6e 33 32 5f 5f 29 0a 2f 2a 20 73  _mipsn32__)./* s
a410: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
a420: 3c 20 31 20 77 6f 72 64 20 61 72 65 20 61 64 6a  < 1 word are adj
a430: 75 73 74 65 64 20 64 65 70 65 6e 64 69 6e 67 20  usted depending 
a440: 6f 6e 20 63 6f 6d 70 69 6c 65 72 20 2a 2f 0a 23  on compiler */.#
a450: 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f  define __va_arg_
a460: 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45  struct(LIST,TYPE
a470: 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e  _SIZE,TYPE_ALIGN
a480: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69  )  \.  (__va_ali
a490: 67 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54  gn_struct(LIST,T
a4a0: 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c  YPE_SIZE,TYPE_AL
a4b0: 49 47 4e 29 09 09 09 09 5c 0a 20 20 20 28 28 4c  IGN)....\.   ((L
a4c0: 49 53 54 29 2d 3e 66 6c 61 67 73 20 26 20 5f 5f  IST)->flags & __
a4d0: 56 41 5f 53 47 49 43 43 5f 53 54 52 55 43 54 5f  VA_SGICC_STRUCT_
a4e0: 41 52 47 53 09 09 09 09 5c 0a 20 20 20 20 3f 20  ARGS....\.    ? 
a4f0: 2f 2a 20 53 47 49 20 4d 49 50 53 20 63 63 20 70  /* SGI MIPS cc p
a500: 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72 75  asses small stru
a510: 63 74 75 72 65 73 20 6c 65 66 74 2d 61 64 6a 75  ctures left-adju
a520: 73 74 65 64 2c 20 61 6c 74 68 6f 75 67 68 20 62  sted, although b
a530: 69 67 2d 65 6e 64 69 61 6e 21 20 2a 2f 5c 0a 20  ig-endian! */\. 
a540: 20 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 6c 65       __va_arg_le
a550: 66 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c  ftadjusted(LIST,
a560: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
a570: 4c 49 47 4e 29 09 09 09 5c 0a 20 20 20 20 3a 20  LIGN)...\.    : 
a580: 2f 2a 20 53 47 49 20 4d 49 50 53 20 67 63 63 20  /* SGI MIPS gcc 
a590: 70 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72  passes small str
a5a0: 75 63 74 75 72 65 73 20 77 69 74 68 69 6e 20 74  uctures within t
a5b0: 68 65 20 66 69 72 73 74 20 66 6f 75 72 20 77 6f  he first four wo
a5c0: 72 64 73 20 6c 65 66 74 2d 09 20 20 20 5c 0a 20  rds left-.   \. 
a5d0: 20 20 20 20 20 20 2a 20 61 64 6a 75 73 74 65 64        * adjusted
a5e0: 2c 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c  , for compatibil
a5f0: 69 74 79 20 77 69 74 68 20 63 63 2e 20 42 75 74  ity with cc. But
a600: 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 20 6d   structures in m
a610: 65 6d 6f 72 79 20 61 72 65 20 70 61 73 73 65 64  emory are passed
a620: 20 20 5c 0a 20 20 20 20 20 20 20 2a 20 72 69 67    \.       * rig
a630: 68 74 2d 61 64 6a 75 73 74 65 64 21 21 20 53 65  ht-adjusted!! Se
a640: 65 20 67 63 63 2d 32 2e 36 2e 33 2f 63 6f 6e 66  e gcc-2.6.3/conf
a650: 69 67 2f 6d 69 70 73 2f 6d 69 70 73 2e 63 3a 66  ig/mips/mips.c:f
a660: 75 6e 63 74 69 6f 6e 5f 61 72 67 28 29 2e 09 20  unction_arg().. 
a670: 20 20 5c 0a 20 20 20 20 20 20 20 2a 2f 09 09 09    \.       */...
a680: 09 09 09 09 09 09 20 20 20 5c 0a 20 20 20 20 20  ......   \.     
a690: 20 28 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 3c   ((LIST)->aptr <
a6a0: 20 28 4c 49 53 54 29 2d 3e 6d 65 6d 61 72 67 70   (LIST)->memargp
a6b0: 74 72 09 09 09 09 09 5c 0a 20 20 20 20 20 20 20  tr.....\.       
a6c0: 3f 20 5f 5f 76 61 5f 61 72 67 5f 6c 65 66 74 61  ? __va_arg_lefta
a6d0: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
a6e0: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
a6f0: 4e 29 09 09 5c 0a 20 20 20 20 20 20 20 3a 20 5f  N)..\.       : _
a700: 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61 64 6a  _va_arg_rightadj
a710: 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f  usted(LIST,TYPE_
a720: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
a730: 09 09 5c 0a 20 20 29 29 20 20 29 0a 23 65 6e 64  ..\.  ))  ).#end
a740: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
a750: 5f 6d 69 70 73 6e 33 32 5f 5f 29 20 7c 7c 20 64  _mipsn32__) || d
a760: 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 36 34 5f  efined(__mips64_
a770: 5f 29 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72 75  _)./* small stru
a780: 63 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64 20  ctures < 1 word 
a790: 61 72 65 20 61 64 6a 75 73 74 65 64 20 64 65 70  are adjusted dep
a7a0: 65 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69 6c  ending on compil
a7b0: 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f  er */.#define __
a7c0: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49  va_arg_struct(LI
a7d0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
a7e0: 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28 5f  E_ALIGN)  \.  (_
a7f0: 5f 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63 74  _va_align_struct
a800: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
a810: 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c  TYPE_ALIGN)....\
a820: 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c 61  .   ((LIST)->fla
a830: 67 73 20 26 20 5f 5f 56 41 5f 53 47 49 43 43 5f  gs & __VA_SGICC_
a840: 53 54 52 55 43 54 5f 41 52 47 53 09 09 09 09 5c  STRUCT_ARGS....\
a850: 0a 20 20 20 20 3f 20 2f 2a 20 53 47 49 20 4d 49  .    ? /* SGI MI
a860: 50 53 20 63 63 20 70 61 73 73 65 73 20 73 6d 61  PS cc passes sma
a870: 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 6c 65  ll structures le
a880: 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74  ft-adjusted, alt
a890: 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e  hough big-endian
a8a0: 21 20 2a 2f 5c 0a 20 20 20 20 20 20 5f 5f 76 61  ! */\.      __va
a8b0: 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73 74 65  _arg_leftadjuste
a8c0: 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  d(LIST,TYPE_SIZE
a8d0: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c  ,TYPE_ALIGN)...\
a8e0: 0a 20 20 20 20 3a 20 2f 2a 20 53 47 49 20 4d 49  .    : /* SGI MI
a8f0: 50 53 20 67 63 63 20 70 61 73 73 65 73 20 73 6d  PS gcc passes sm
a900: 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20 72  all structures r
a910: 69 67 68 74 2d 61 64 6a 75 73 74 65 64 2e 20 2a  ight-adjusted. *
a920: 2f 09 5c 0a 20 20 20 20 20 20 5f 5f 76 61 5f 61  /.\.      __va_a
a930: 72 67 5f 72 69 67 68 74 61 64 6a 75 73 74 65 64  rg_rightadjusted
a940: 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c  (LIST,TYPE_SIZE,
a950: 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 5c 0a  TYPE_ALIGN)...\.
a960: 20 20 29 29 0a 23 65 6e 64 69 66 0a 23 69 66 20    )).#endif.#if 
a970: 64 65 66 69 6e 65 64 28 5f 5f 72 73 36 30 30 30  defined(__rs6000
a980: 5f 5f 29 20 26 26 20 28 64 65 66 69 6e 65 64 28  __) && (defined(
a990: 5f 41 49 58 29 20 7c 7c 20 28 64 65 66 69 6e 65  _AIX) || (define
a9a0: 64 28 5f 5f 4d 41 43 48 5f 5f 29 20 26 26 20 64  d(__MACH__) && d
a9b0: 65 66 69 6e 65 64 28 5f 5f 41 50 50 4c 45 5f 5f  efined(__APPLE__
a9c0: 29 29 29 0a 2f 2a 20 73 6d 61 6c 6c 20 73 74 72  )))./* small str
a9d0: 75 63 74 75 72 65 73 20 3c 20 31 20 77 6f 72 64  uctures < 1 word
a9e0: 20 61 72 65 20 61 64 6a 75 73 74 65 64 20 64 65   are adjusted de
a9f0: 70 65 6e 64 69 6e 67 20 6f 6e 20 63 6f 6d 70 69  pending on compi
aa00: 6c 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f  ler */.#define _
aa10: 5f 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c  _va_arg_struct(L
aa20: 49 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59  IST,TYPE_SIZE,TY
aa30: 50 45 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 28  PE_ALIGN)  \.  (
aa40: 5f 5f 76 61 5f 61 6c 69 67 6e 5f 73 74 72 75 63  __va_align_struc
aa50: 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a 45  t(LIST,TYPE_SIZE
aa60: 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09 09 09  ,TYPE_ALIGN)....
aa70: 5c 0a 20 20 20 28 28 4c 49 53 54 29 2d 3e 66 6c  \.   ((LIST)->fl
aa80: 61 67 73 20 26 20 5f 5f 56 41 5f 41 49 58 43 43  ags & __VA_AIXCC
aa90: 5f 53 54 52 55 43 54 5f 41 52 47 53 09 09 09 09  _STRUCT_ARGS....
aaa0: 5c 0a 20 20 20 20 3f 20 2f 2a 20 41 49 58 20 63  \.    ? /* AIX c
aab0: 63 20 61 6e 64 20 78 6c 63 20 70 61 73 73 20 73  c and xlc pass s
aac0: 6d 61 6c 6c 20 73 74 72 75 63 74 75 72 65 73 20  mall structures 
aad0: 6c 65 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61  left-adjusted, a
aae0: 6c 74 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69  lthough big-endi
aaf0: 61 6e 21 20 2a 2f 5c 0a 20 20 20 20 20 20 5f 5f  an! */\.      __
ab00: 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73  va_arg_leftadjus
ab10: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
ab20: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 09 09  ZE,TYPE_ALIGN)..
ab30: 09 5c 0a 20 20 20 20 3a 20 2f 2a 20 67 63 63 20  .\.    : /* gcc 
ab40: 70 61 73 73 65 73 20 73 6d 61 6c 6c 20 73 74 72  passes small str
ab50: 75 63 74 75 72 65 73 20 72 69 67 68 74 2d 61 64  uctures right-ad
ab60: 6a 75 73 74 65 64 2e 20 2a 2f 09 09 09 5c 0a 20  justed. */...\. 
ab70: 20 20 20 20 20 5f 5f 76 61 5f 61 72 67 5f 72 69       __va_arg_ri
ab80: 67 68 74 61 64 6a 75 73 74 65 64 28 4c 49 53 54  ghtadjusted(LIST
ab90: 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f  ,TYPE_SIZE,TYPE_
aba0: 41 4c 49 47 4e 29 09 09 09 5c 0a 20 20 29 29 0a  ALIGN)...\.  )).
abb0: 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e  #endif.#if defin
abc0: 65 64 28 5f 5f 72 73 36 30 30 30 5f 5f 29 20 26  ed(__rs6000__) &
abd0: 26 20 21 28 64 65 66 69 6e 65 64 28 5f 41 49 58  & !(defined(_AIX
abe0: 29 20 7c 7c 20 28 64 65 66 69 6e 65 64 28 5f 5f  ) || (defined(__
abf0: 4d 41 43 48 5f 5f 29 20 26 26 20 64 65 66 69 6e  MACH__) && defin
ac00: 65 64 28 5f 5f 41 50 50 4c 45 5f 5f 29 29 29 0a  ed(__APPLE__))).
ac10: 2f 2a 20 53 74 72 75 63 74 75 72 65 73 20 61 72  /* Structures ar
ac20: 65 20 70 61 73 73 65 64 20 61 73 20 70 6f 69 6e  e passed as poin
ac30: 74 65 72 73 20 74 6f 20 63 61 6c 6c 65 72 2d 6d  ters to caller-m
ac40: 61 64 65 20 6c 6f 63 61 6c 20 63 6f 70 69 65 73  ade local copies
ac50: 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 5f 5f 76  . */.#define __v
ac60: 61 5f 61 72 67 5f 73 74 72 75 63 74 28 4c 49 53  a_arg_struct(LIS
ac70: 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45  T,TYPE_SIZE,TYPE
ac80: 5f 41 4c 49 47 4e 29 20 20 5c 0a 20 20 76 61 5f  _ALIGN)  \.  va_
ac90: 61 72 67 5f 70 74 72 28 4c 49 53 54 2c 76 6f 69  arg_ptr(LIST,voi
aca0: 64 2a 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 64  d*).#endif.#if d
acb0: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f  efined(__sparc__
acc0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 5f  ) && !defined(__
acd0: 73 70 61 72 63 36 34 5f 5f 29 0a 2f 2a 20 53 74  sparc64__)./* St
ace0: 72 75 63 74 75 72 65 73 20 61 72 65 20 70 61 73  ructures are pas
acf0: 73 65 64 20 61 73 20 70 6f 69 6e 74 65 72 73 20  sed as pointers 
ad00: 74 6f 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c  to caller-made l
ad10: 6f 63 61 6c 20 63 6f 70 69 65 73 2e 20 2a 2f 0a  ocal copies. */.
ad20: 23 64 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67  #define __va_arg
ad30: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
ad40: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
ad50: 4e 29 20 20 5c 0a 20 20 76 61 5f 61 72 67 5f 70  N)  \.  va_arg_p
ad60: 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29 0a 23  tr(LIST,void*).#
ad70: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
ad80: 64 28 5f 5f 73 70 61 72 63 36 34 5f 5f 29 0a 2f  d(__sparc64__)./
ad90: 2a 20 53 6d 61 6c 6c 20 73 74 72 75 63 74 75 72  * Small structur
ada0: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 6c 65  es are passed le
adb0: 66 74 2d 61 64 6a 75 73 74 65 64 2c 20 61 6c 74  ft-adjusted, alt
adc0: 68 6f 75 67 68 20 62 69 67 2d 65 6e 64 69 61 6e  hough big-endian
add0: 21 20 2a 2f 0a 2f 2a 20 42 69 67 20 73 74 72 75  ! */./* Big stru
ade0: 63 74 75 72 65 73 20 61 72 65 20 70 61 73 73 65  ctures are passe
adf0: 64 20 61 73 20 70 6f 69 6e 74 65 72 73 20 74 6f  d as pointers to
ae00: 20 63 61 6c 6c 65 72 2d 6d 61 64 65 20 6c 6f 63   caller-made loc
ae10: 61 6c 20 63 6f 70 69 65 73 2e 20 2a 2f 0a 23 64  al copies. */.#d
ae20: 65 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73  efine __va_arg_s
ae30: 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f  truct(LIST,TYPE_
ae40: 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29  SIZE,TYPE_ALIGN)
ae50: 20 20 5c 0a 20 20 28 28 54 59 50 45 5f 53 49 5a    \.  ((TYPE_SIZ
ae60: 45 29 20 3c 3d 20 31 36 09 09 09 09 09 09 09 5c  E) <= 16.......\
ae70: 0a 20 20 20 3f 20 28 5f 5f 76 61 5f 61 6c 69 67  .   ? (__va_alig
ae80: 6e 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59  n_struct(LIST,TY
ae90: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
aea0: 47 4e 29 09 09 09 5c 0a 20 20 20 20 20 20 5f 5f  GN)...\.      __
aeb0: 76 61 5f 61 72 67 5f 6c 65 66 74 61 64 6a 75 73  va_arg_leftadjus
aec0: 74 65 64 28 4c 49 53 54 2c 54 59 50 45 5f 53 49  ted(LIST,TYPE_SI
aed0: 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 29 09  ZE,TYPE_ALIGN)).
aee0: 09 09 5c 0a 20 20 20 3a 20 76 61 5f 61 72 67 5f  ..\.   : va_arg_
aef0: 70 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29 09  ptr(LIST,void*).
af00: 09 09 09 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69  .....\.  ).#endi
af10: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
af20: 73 33 39 30 5f 5f 29 0a 2f 2a 20 53 74 72 75 63  s390__)./* Struc
af30: 74 75 72 65 73 20 3c 3d 20 38 20 62 79 74 65 73  tures <= 8 bytes
af40: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 65   are passed as e
af50: 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f  mbedded copies o
af60: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e  n the arg stack.
af70: 0a 20 2a 20 42 69 67 20 73 74 72 75 63 74 75 72  . * Big structur
af80: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73  es are passed as
af90: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c   pointers to cal
afa0: 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63  ler-made local c
afb0: 6f 70 69 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  opies.. */.#defi
afc0: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75  ne __va_arg_stru
afd0: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
afe0: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
aff0: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
b000: 21 3d 20 31 20 26 26 20 28 54 59 50 45 5f 53 49  != 1 && (TYPE_SI
b010: 5a 45 29 20 21 3d 20 32 20 26 26 20 28 54 59 50  ZE) != 2 && (TYP
b020: 45 5f 53 49 5a 45 29 20 21 3d 20 34 20 26 26 20  E_SIZE) != 4 && 
b030: 28 54 59 50 45 5f 53 49 5a 45 29 20 21 3d 20 38  (TYPE_SIZE) != 8
b040: 20 5c 0a 20 20 20 3f 20 76 61 5f 61 72 67 5f 70   \.   ? va_arg_p
b050: 74 72 28 4c 49 53 54 2c 76 6f 69 64 2a 29 09 09  tr(LIST,void*)..
b060: 09 09 09 09 5c 0a 20 20 20 3a 20 28 76 6f 69 64  ....\.   : (void
b070: 2a 29 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74  *)__va_arg_right
b080: 61 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59  adjusted(LIST,TY
b090: 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49  PE_SIZE,TYPE_ALI
b0a0: 47 4e 29 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69  GN)..\.  ).#endi
b0b0: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  f.#if defined(__
b0c0: 68 70 70 61 5f 5f 29 0a 2f 2a 20 53 74 72 75 63  hppa__)./* Struc
b0d0: 74 75 72 65 73 20 3c 3d 20 38 20 62 79 74 65 73  tures <= 8 bytes
b0e0: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 65   are passed as e
b0f0: 6d 62 65 64 64 65 64 20 63 6f 70 69 65 73 20 6f  mbedded copies o
b100: 6e 20 74 68 65 20 61 72 67 20 73 74 61 63 6b 2e  n the arg stack.
b110: 0a 20 2a 20 42 69 67 20 73 74 72 75 63 74 75 72  . * Big structur
b120: 65 73 20 61 72 65 20 70 61 73 73 65 64 20 61 73  es are passed as
b130: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 61 6c   pointers to cal
b140: 6c 65 72 2d 6d 61 64 65 20 6c 6f 63 61 6c 20 63  ler-made local c
b150: 6f 70 69 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69  opies.. */.#defi
b160: 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74 72 75  ne __va_arg_stru
b170: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
b180: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20 20 5c  E,TYPE_ALIGN)  \
b190: 0a 20 20 28 28 54 59 50 45 5f 53 49 5a 45 29 20  .  ((TYPE_SIZE) 
b1a0: 3e 20 38 09 09 09 09 09 09 09 5c 0a 20 20 20 3f  > 8.......\.   ?
b1b0: 20 76 61 5f 61 72 67 5f 70 74 72 28 4c 49 53 54   va_arg_ptr(LIST
b1c0: 2c 76 6f 69 64 2a 29 09 09 09 09 09 09 5c 0a 20  ,void*)......\. 
b1d0: 20 20 3a 20 2f 2a 20 46 49 58 4d 45 3a 20 67 63    : /* FIXME: gc
b1e0: 63 2d 32 2e 36 2e 33 20 70 61 73 73 65 73 20 73  c-2.6.3 passes s
b1f0: 74 72 75 63 74 75 72 65 73 20 3c 3d 20 34 20 62  tructures <= 4 b
b200: 79 74 65 73 20 69 6e 20 6d 65 6d 6f 72 79 20 6c  ytes in memory l
b210: 65 66 74 2d 61 64 6a 75 73 74 65 64 21 20 3f 3f  eft-adjusted! ??
b220: 20 2a 2f 5c 0a 20 20 20 20 20 28 76 6f 69 64 2a   */\.     (void*
b230: 29 5f 5f 76 61 5f 61 72 67 5f 72 69 67 68 74 61  )__va_arg_righta
b240: 64 6a 75 73 74 65 64 28 4c 49 53 54 2c 54 59 50  djusted(LIST,TYP
b250: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
b260: 4e 29 09 09 5c 0a 20 20 29 0a 23 65 6e 64 69 66  N)..\.  ).#endif
b270: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69  .#if defined(__i
b280: 61 36 34 5f 5f 29 0a 2f 2a 20 54 79 70 65 73 20  a64__)./* Types 
b290: 6c 61 72 67 65 72 20 74 68 61 6e 20 61 20 77 6f  larger than a wo
b2a0: 72 64 20 68 61 76 65 20 32 2d 77 6f 72 64 20 61  rd have 2-word a
b2b0: 6c 69 67 6e 6d 65 6e 74 2e 20 2a 2f 0a 23 64 65  lignment. */.#de
b2c0: 66 69 6e 65 20 5f 5f 76 61 5f 61 72 67 5f 73 74  fine __va_arg_st
b2d0: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53  ruct(LIST,TYPE_S
b2e0: 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47 4e 29 20  IZE,TYPE_ALIGN) 
b2f0: 20 5c 0a 20 20 28 5f 5f 76 61 5f 61 6c 69 67 6e   \.  (__va_align
b300: 5f 73 74 72 75 63 74 28 4c 49 53 54 2c 54 59 50  _struct(LIST,TYP
b310: 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41 4c 49 47  E_SIZE,TYPE_ALIG
b320: 4e 29 09 09 09 09 5c 0a 20 20 20 28 28 54 59 50  N)....\.   ((TYP
b330: 45 5f 53 49 5a 45 29 20 3e 20 73 69 7a 65 6f 66  E_SIZE) > sizeof
b340: 28 5f 5f 76 61 77 6f 72 64 29 20 26 26 20 28 28  (__vaword) && ((
b350: 28 5f 5f 76 61 77 6f 72 64 2a 29 28 4c 49 53 54  (__vaword*)(LIST
b360: 29 2d 3e 61 70 74 72 20 2d 20 28 4c 49 53 54 29  )->aptr - (LIST)
b370: 2d 3e 73 61 70 74 72 29 20 26 20 31 29 20 3f 20  ->saptr) & 1) ? 
b380: 28 4c 49 53 54 29 2d 3e 61 70 74 72 20 2b 3d 20  (LIST)->aptr += 
b390: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
b3a0: 20 3a 20 30 29 2c 20 5c 0a 20 20 20 5f 5f 76 61   : 0), \.   __va
b3b0: 5f 61 72 67 5f 61 64 6a 75 73 74 65 64 28 4c 49  _arg_adjusted(LI
b3c0: 53 54 2c 54 59 50 45 5f 53 49 5a 45 2c 54 59 50  ST,TYPE_SIZE,TYP
b3d0: 45 5f 41 4c 49 47 4e 29 09 09 09 09 5c 0a 20 20  E_ALIGN)....\.  
b3e0: 29 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 20 2a  ).#endif.../*. *
b3f0: 20 44 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 74   Definition of t
b400: 68 65 20 76 61 5f 72 65 74 75 72 6e 5f 78 78 78  he va_return_xxx
b410: 20 6d 61 63 72 6f 73 2e 0a 20 2a 2f 0a 23 64 65   macros.. */.#de
b420: 66 69 6e 65 20 5f 5f 76 61 5f 72 65 74 75 72 6e  fine __va_return
b430: 28 4c 49 53 54 2c 52 45 54 54 59 50 45 29 20 20  (LIST,RETTYPE)  
b440: 5c 0a 20 20 28 28 28 4c 49 53 54 29 2d 3e 72 74  \.  (((LIST)->rt
b450: 79 70 65 20 3d 3d 20 28 52 45 54 54 59 50 45 29  ype == (RETTYPE)
b460: 29 20 7c 7c 20 5f 5f 76 61 5f 65 72 72 6f 72 31  ) || __va_error1
b470: 28 28 4c 49 53 54 29 2d 3e 72 74 79 70 65 2c 52  ((LIST)->rtype,R
b480: 45 54 54 59 50 45 29 29 0a 23 64 65 66 69 6e 65  ETTYPE)).#define
b490: 20 76 61 5f 72 65 74 75 72 6e 5f 76 6f 69 64 28   va_return_void(
b4a0: 4c 49 53 54 29 20 20 5c 0a 20 20 5f 5f 76 61 5f  LIST)  \.  __va_
b4b0: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
b4c0: 76 6f 69 64 29 0a 23 64 65 66 69 6e 65 20 76 61  void).#define va
b4d0: 5f 72 65 74 75 72 6e 5f 63 68 61 72 28 4c 49 53  _return_char(LIS
b4e0: 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76  T,VAL)  \.  (__v
b4f0: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
b500: 56 41 63 68 61 72 29 2c 20 28 4c 49 53 54 29 2d  VAchar), (LIST)-
b510: 3e 74 6d 70 2e 5f 63 68 61 72 20 3d 20 28 56 41  >tmp._char = (VA
b520: 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72  L)).#define va_r
b530: 65 74 75 72 6e 5f 73 63 68 61 72 28 4c 49 53 54  eturn_schar(LIST
b540: 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61  ,VAL)  \.  (__va
b550: 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56  _return(LIST,__V
b560: 41 73 63 68 61 72 29 2c 20 28 4c 49 53 54 29 2d  Aschar), (LIST)-
b570: 3e 74 6d 70 2e 5f 73 63 68 61 72 20 3d 20 28 56  >tmp._schar = (V
b580: 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  AL)).#define va_
b590: 72 65 74 75 72 6e 5f 75 63 68 61 72 28 4c 49 53  return_uchar(LIS
b5a0: 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76  T,VAL)  \.  (__v
b5b0: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
b5c0: 56 41 75 63 68 61 72 29 2c 20 28 4c 49 53 54 29  VAuchar), (LIST)
b5d0: 2d 3e 74 6d 70 2e 5f 75 63 68 61 72 20 3d 20 28  ->tmp._uchar = (
b5e0: 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61  VAL)).#define va
b5f0: 5f 72 65 74 75 72 6e 5f 73 68 6f 72 74 28 4c 49  _return_short(LI
b600: 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f  ST,VAL)  \.  (__
b610: 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f  va_return(LIST,_
b620: 5f 56 41 73 68 6f 72 74 29 2c 20 28 4c 49 53 54  _VAshort), (LIST
b630: 29 2d 3e 74 6d 70 2e 5f 73 68 6f 72 74 20 3d 20  )->tmp._short = 
b640: 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76  (VAL)).#define v
b650: 61 5f 72 65 74 75 72 6e 5f 75 73 68 6f 72 74 28  a_return_ushort(
b660: 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28  LIST,VAL)  \.  (
b670: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
b680: 2c 5f 5f 56 41 75 73 68 6f 72 74 29 2c 20 28 4c  ,__VAushort), (L
b690: 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 73 68 6f 72  IST)->tmp._ushor
b6a0: 74 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69  t = (VAL)).#defi
b6b0: 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 69 6e 74  ne va_return_int
b6c0: 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20  (LIST,VAL)  \.  
b6d0: 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53  (__va_return(LIS
b6e0: 54 2c 5f 5f 56 41 69 6e 74 29 2c 20 28 4c 49 53  T,__VAint), (LIS
b6f0: 54 29 2d 3e 74 6d 70 2e 5f 69 6e 74 20 3d 20 28  T)->tmp._int = (
b700: 56 41 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61  VAL)).#define va
b710: 5f 72 65 74 75 72 6e 5f 75 69 6e 74 28 4c 49 53  _return_uint(LIS
b720: 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76  T,VAL)  \.  (__v
b730: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
b740: 56 41 75 69 6e 74 29 2c 20 28 4c 49 53 54 29 2d  VAuint), (LIST)-
b750: 3e 74 6d 70 2e 5f 75 69 6e 74 20 3d 20 28 56 41  >tmp._uint = (VA
b760: 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72  L)).#define va_r
b770: 65 74 75 72 6e 5f 6c 6f 6e 67 28 4c 49 53 54 2c  eturn_long(LIST,
b780: 56 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f  VAL)  \.  (__va_
b790: 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41  return(LIST,__VA
b7a0: 6c 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74  long), (LIST)->t
b7b0: 6d 70 2e 5f 6c 6f 6e 67 20 3d 20 28 56 41 4c 29  mp._long = (VAL)
b7c0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72 65 74  ).#define va_ret
b7d0: 75 72 6e 5f 75 6c 6f 6e 67 28 4c 49 53 54 2c 56  urn_ulong(LIST,V
b7e0: 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72  AL)  \.  (__va_r
b7f0: 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 75  eturn(LIST,__VAu
b800: 6c 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74  long), (LIST)->t
b810: 6d 70 2e 5f 75 6c 6f 6e 67 20 3d 20 28 56 41 4c  mp._ulong = (VAL
b820: 29 29 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  )).#if defined(_
b830: 5f 6d 69 70 73 36 34 5f 5f 29 20 7c 7c 20 64 65  _mips64__) || de
b840: 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 36 34 5f  fined(__sparc64_
b850: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
b860: 61 6c 70 68 61 5f 5f 29 20 7c 7c 20 64 65 66 69  alpha__) || defi
b870: 6e 65 64 28 5f 5f 69 61 36 34 5f 5f 29 20 7c 7c  ned(__ia64__) ||
b880: 20 64 65 66 69 6e 65 64 28 5f 5f 78 38 36 5f 36   defined(__x86_6
b890: 34 5f 5f 29 0a 23 64 65 66 69 6e 65 20 76 61 5f  4__).#define va_
b8a0: 72 65 74 75 72 6e 5f 6c 6f 6e 67 6c 6f 6e 67 28  return_longlong(
b8b0: 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28  LIST,VAL)  \.  (
b8c0: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
b8d0: 2c 5f 5f 56 41 6c 6f 6e 67 6c 6f 6e 67 29 2c 20  ,__VAlonglong), 
b8e0: 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 6c 6f 6e  (LIST)->tmp._lon
b8f0: 67 20 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69  g = (VAL)).#defi
b900: 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 75 6c 6f  ne va_return_ulo
b910: 6e 67 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29  nglong(LIST,VAL)
b920: 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75    \.  (__va_retu
b930: 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 75 6c 6f 6e  rn(LIST,__VAulon
b940: 67 6c 6f 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e  glong), (LIST)->
b950: 74 6d 70 2e 5f 75 6c 6f 6e 67 20 3d 20 28 56 41  tmp._ulong = (VA
b960: 4c 29 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e  L)).#else.#defin
b970: 65 20 76 61 5f 72 65 74 75 72 6e 5f 6c 6f 6e 67  e va_return_long
b980: 6c 6f 6e 67 28 4c 49 53 54 2c 56 41 4c 29 20 20  long(LIST,VAL)  
b990: 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e  \.  (__va_return
b9a0: 28 4c 49 53 54 2c 5f 5f 56 41 6c 6f 6e 67 6c 6f  (LIST,__VAlonglo
b9b0: 6e 67 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  ng), (LIST)->tmp
b9c0: 2e 5f 6c 6f 6e 67 6c 6f 6e 67 20 3d 20 28 56 41  ._longlong = (VA
b9d0: 4c 29 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 72  L)).#define va_r
b9e0: 65 74 75 72 6e 5f 75 6c 6f 6e 67 6c 6f 6e 67 28  eturn_ulonglong(
b9f0: 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28  LIST,VAL)  \.  (
ba00: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
ba10: 2c 5f 5f 56 41 75 6c 6f 6e 67 6c 6f 6e 67 29 2c  ,__VAulonglong),
ba20: 20 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 75 6c   (LIST)->tmp._ul
ba30: 6f 6e 67 6c 6f 6e 67 20 3d 20 28 56 41 4c 29 29  onglong = (VAL))
ba40: 0a 23 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20  .#endif.#define 
ba50: 76 61 5f 72 65 74 75 72 6e 5f 66 6c 6f 61 74 28  va_return_float(
ba60: 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20 20 28  LIST,VAL)  \.  (
ba70: 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49 53 54  __va_return(LIST
ba80: 2c 5f 5f 56 41 66 6c 6f 61 74 29 2c 20 28 4c 49  ,__VAfloat), (LI
ba90: 53 54 29 2d 3e 74 6d 70 2e 5f 66 6c 6f 61 74 20  ST)->tmp._float 
baa0: 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65  = (VAL)).#define
bab0: 20 76 61 5f 72 65 74 75 72 6e 5f 64 6f 75 62 6c   va_return_doubl
bac0: 65 28 4c 49 53 54 2c 56 41 4c 29 20 20 5c 0a 20  e(LIST,VAL)  \. 
bad0: 20 28 5f 5f 76 61 5f 72 65 74 75 72 6e 28 4c 49   (__va_return(LI
bae0: 53 54 2c 5f 5f 56 41 64 6f 75 62 6c 65 29 2c 20  ST,__VAdouble), 
baf0: 28 4c 49 53 54 29 2d 3e 74 6d 70 2e 5f 64 6f 75  (LIST)->tmp._dou
bb00: 62 6c 65 20 3d 20 28 56 41 4c 29 29 0a 23 64 65  ble = (VAL)).#de
bb10: 66 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 70  fine va_return_p
bb20: 74 72 28 4c 49 53 54 2c 54 59 50 45 2c 56 41 4c  tr(LIST,TYPE,VAL
bb30: 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72 65 74  )  \.  (__va_ret
bb40: 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 76 6f 69  urn(LIST,__VAvoi
bb50: 64 70 29 2c 20 28 4c 49 53 54 29 2d 3e 74 6d 70  dp), (LIST)->tmp
bb60: 2e 5f 70 74 72 20 3d 20 28 76 6f 69 64 2a 29 28  ._ptr = (void*)(
bb70: 54 59 50 45 29 28 56 41 4c 29 29 0a 23 64 65 66  TYPE)(VAL)).#def
bb80: 69 6e 65 20 76 61 5f 72 65 74 75 72 6e 5f 73 74  ine va_return_st
bb90: 72 75 63 74 28 4c 49 53 54 2c 54 59 50 45 2c 56  ruct(LIST,TYPE,V
bba0: 41 4c 29 20 20 5c 0a 20 20 28 5f 5f 76 61 5f 72  AL)  \.  (__va_r
bbb0: 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f 56 41 73  eturn(LIST,__VAs
bbc0: 74 72 75 63 74 29 2c 20 2a 28 54 59 50 45 2a 29  truct), *(TYPE*)
bbd0: 28 28 4c 49 53 54 29 2d 3e 72 61 64 64 72 29 20  ((LIST)->raddr) 
bbe0: 3d 20 28 56 41 4c 29 29 0a 23 64 65 66 69 6e 65  = (VAL)).#define
bbf0: 20 5f 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75   _va_return_stru
bc00: 63 74 28 4c 49 53 54 2c 54 59 50 45 5f 53 49 5a  ct(LIST,TYPE_SIZ
bc10: 45 2c 54 59 50 45 5f 41 4c 49 47 4e 2c 56 41 4c  E,TYPE_ALIGN,VAL
bc20: 5f 41 44 44 52 29 20 20 5c 0a 20 20 28 5f 5f 76  _ADDR)  \.  (__v
bc30: 61 5f 72 65 74 75 72 6e 28 4c 49 53 54 2c 5f 5f  a_return(LIST,__
bc40: 56 41 73 74 72 75 63 74 29 2c 09 09 09 09 09 5c  VAstruct),.....\
bc50: 0a 20 20 20 5f 5f 73 74 72 75 63 74 63 70 79 28  .   __structcpy(
bc60: 28 76 6f 69 64 2a 29 28 28 4c 49 53 54 29 2d 3e  (void*)((LIST)->
bc70: 72 61 64 64 72 29 2c 56 41 4c 5f 41 44 44 52 2c  raddr),VAL_ADDR,
bc80: 54 59 50 45 5f 53 49 5a 45 2c 54 59 50 45 5f 41  TYPE_SIZE,TYPE_A
bc90: 4c 49 47 4e 29 09 5c 0a 20 20 29 0a 0a 0a 2f 2a  LIGN).\.  ).../*
bca0: 20 44 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68   Determine wheth
bcb0: 65 72 20 61 20 73 74 72 75 63 74 20 74 79 70 65  er a struct type
bcc0: 20 69 73 20 77 6f 72 64 2d 73 70 6c 69 74 74 61   is word-splitta
bcd0: 62 6c 65 2c 20 69 2e 65 2e 20 77 68 65 74 68 65  ble, i.e. whethe
bce0: 72 20 65 61 63 68 20 6f 66 0a 20 2a 20 69 74 73  r each of. * its
bcf0: 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 66 69 74 20   components fit 
bd00: 69 6e 74 6f 20 61 20 72 65 67 69 73 74 65 72 2e  into a register.
bd10: 0a 20 2a 20 54 68 65 20 65 6e 74 69 72 65 20 63  . * The entire c
bd20: 6f 6d 70 75 74 61 74 69 6f 6e 20 69 73 20 64 6f  omputation is do
bd30: 6e 65 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69  ne at compile ti
bd40: 6d 65 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  me.. */.#define 
bd50: 76 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62  va_word_splittab
bd60: 6c 65 5f 31 28 73 6c 6f 74 31 29 20 20 5c 0a 20  le_1(slot1)  \. 
bd70: 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28 73   (__va_offset1(s
bd80: 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  lot1)/sizeof(__v
bd90: 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f  aword) == (__va_
bda0: 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b 73  offset1(slot1)+s
bdb0: 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29 2f  izeof(slot1)-1)/
bdc0: 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29  sizeof(__vaword)
bdd0: 29 0a 23 64 65 66 69 6e 65 20 76 61 5f 77 6f 72  ).#define va_wor
bde0: 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 32 28 73  d_splittable_2(s
bdf0: 6c 6f 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20  lot1,slot2)  \. 
be00: 20 28 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28   ((__va_offset1(
be10: 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28 5f 5f  slot1)/sizeof(__
be20: 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61  vaword) == (__va
be30: 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31 29 2b  _offset1(slot1)+
be40: 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d 31 29  sizeof(slot1)-1)
be50: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
be60: 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61  )) \.   && (__va
be70: 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73  _offset2(slot1,s
be80: 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  lot2)/sizeof(__v
be90: 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f  aword) == (__va_
bea0: 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c  offset2(slot1,sl
beb0: 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74  ot2)+sizeof(slot
bec0: 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76  2)-1)/sizeof(__v
bed0: 61 77 6f 72 64 29 29 20 5c 0a 20 20 29 0a 23 64  aword)) \.  ).#d
bee0: 65 66 69 6e 65 20 76 61 5f 77 6f 72 64 5f 73 70  efine va_word_sp
bef0: 6c 69 74 74 61 62 6c 65 5f 33 28 73 6c 6f 74 31  littable_3(slot1
bf00: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29 20 20 5c  ,slot2,slot3)  \
bf10: 0a 20 20 28 28 5f 5f 76 61 5f 6f 66 66 73 65 74  .  ((__va_offset
bf20: 31 28 73 6c 6f 74 31 29 2f 73 69 7a 65 6f 66 28  1(slot1)/sizeof(
bf30: 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f  __vaword) == (__
bf40: 76 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  va_offset1(slot1
bf50: 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 31 29 2d  )+sizeof(slot1)-
bf60: 31 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f  1)/sizeof(__vawo
bf70: 72 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f  rd)) \.   && (__
bf80: 76 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31  va_offset2(slot1
bf90: 2c 73 6c 6f 74 32 29 2f 73 69 7a 65 6f 66 28 5f  ,slot2)/sizeof(_
bfa0: 5f 76 61 77 6f 72 64 29 20 3d 3d 20 28 5f 5f 76  _vaword) == (__v
bfb0: 61 5f 6f 66 66 73 65 74 32 28 73 6c 6f 74 31 2c  a_offset2(slot1,
bfc0: 73 6c 6f 74 32 29 2b 73 69 7a 65 6f 66 28 73 6c  slot2)+sizeof(sl
bfd0: 6f 74 32 29 2d 31 29 2f 73 69 7a 65 6f 66 28 5f  ot2)-1)/sizeof(_
bfe0: 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 20 26  _vaword)) \.   &
bff0: 26 20 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28  & (__va_offset3(
c000: 73 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74  slot1,slot2,slot
c010: 33 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f  3)/sizeof(__vawo
c020: 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66  rd) == (__va_off
c030: 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set3(slot1,slot2
c040: 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f 66 28 73  ,slot3)+sizeof(s
c050: 6c 6f 74 33 29 2d 31 29 2f 73 69 7a 65 6f 66 28  lot3)-1)/sizeof(
c060: 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a 20 20 29  __vaword)) \.  )
c070: 0a 23 64 65 66 69 6e 65 20 76 61 5f 77 6f 72 64  .#define va_word
c080: 5f 73 70 6c 69 74 74 61 62 6c 65 5f 34 28 73 6c  _splittable_4(sl
c090: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c  ot1,slot2,slot3,
c0a0: 73 6c 6f 74 34 29 20 20 5c 0a 20 20 28 28 5f 5f  slot4)  \.  ((__
c0b0: 76 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74 31  va_offset1(slot1
c0c0: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
c0d0: 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73  d) == (__va_offs
c0e0: 65 74 31 28 73 6c 6f 74 31 29 2b 73 69 7a 65 6f  et1(slot1)+sizeo
c0f0: 66 28 73 6c 6f 74 31 29 2d 31 29 2f 73 69 7a 65  f(slot1)-1)/size
c100: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29 20 5c 0a  of(__vaword)) \.
c110: 20 20 20 26 26 20 28 5f 5f 76 61 5f 6f 66 66 73     && (__va_offs
c120: 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29  et2(slot1,slot2)
c130: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
c140: 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66 73 65  ) == (__va_offse
c150: 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74 32 29 2b  t2(slot1,slot2)+
c160: 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29 2d 31 29  sizeof(slot2)-1)
c170: 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64  /sizeof(__vaword
c180: 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76 61  )) \.   && (__va
c190: 5f 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73  _offset3(slot1,s
c1a0: 6c 6f 74 32 2c 73 6c 6f 74 33 29 2f 73 69 7a 65  lot2,slot3)/size
c1b0: 6f 66 28 5f 5f 76 61 77 6f 72 64 29 20 3d 3d 20  of(__vaword) == 
c1c0: 28 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73 6c  (__va_offset3(sl
c1d0: 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 29  ot1,slot2,slot3)
c1e0: 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 33 29 2d 31  +sizeof(slot3)-1
c1f0: 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72  )/sizeof(__vawor
c200: 64 29 29 20 5c 0a 20 20 20 26 26 20 28 5f 5f 76  d)) \.   && (__v
c210: 61 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31 2c  a_offset4(slot1,
c220: 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f 74  slot2,slot3,slot
c230: 34 29 2f 73 69 7a 65 6f 66 28 5f 5f 76 61 77 6f  4)/sizeof(__vawo
c240: 72 64 29 20 3d 3d 20 28 5f 5f 76 61 5f 6f 66 66  rd) == (__va_off
c250: 73 65 74 34 28 73 6c 6f 74 31 2c 73 6c 6f 74 32  set4(slot1,slot2
c260: 2c 73 6c 6f 74 33 2c 73 6c 6f 74 34 29 2b 73 69  ,slot3,slot4)+si
c270: 7a 65 6f 66 28 73 6c 6f 74 34 29 2d 31 29 2f 73  zeof(slot4)-1)/s
c280: 69 7a 65 6f 66 28 5f 5f 76 61 77 6f 72 64 29 29  izeof(__vaword))
c290: 20 5c 0a 20 20 29 0a 23 64 65 66 69 6e 65 20 5f   \.  ).#define _
c2a0: 5f 76 61 5f 6f 66 66 73 65 74 31 28 73 6c 6f 74  _va_offset1(slot
c2b0: 31 29 20 20 5c 0a 20 20 30 0a 23 64 65 66 69 6e  1)  \.  0.#defin
c2c0: 65 20 5f 5f 76 61 5f 6f 66 66 73 65 74 32 28 73  e __va_offset2(s
c2d0: 6c 6f 74 31 2c 73 6c 6f 74 32 29 20 20 5c 0a 20  lot1,slot2)  \. 
c2e0: 20 28 28 5f 5f 76 61 5f 6f 66 66 73 65 74 31 28   ((__va_offset1(
c2f0: 73 6c 6f 74 31 29 2b 73 69 7a 65 6f 66 28 73 6c  slot1)+sizeof(sl
c300: 6f 74 31 29 2b 5f 5f 56 41 5f 61 6c 69 67 6e 6f  ot1)+__VA_aligno
c310: 66 28 73 6c 6f 74 32 29 2d 31 29 20 26 20 2d 28  f(slot2)-1) & -(
c320: 6c 6f 6e 67 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f  long)__VA_aligno
c330: 66 28 73 6c 6f 74 32 29 29 0a 23 64 65 66 69 6e  f(slot2)).#defin
c340: 65 20 5f 5f 76 61 5f 6f 66 66 73 65 74 33 28 73  e __va_offset3(s
c350: 6c 6f 74 31 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33  lot1,slot2,slot3
c360: 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f 6f 66  )  \.  ((__va_of
c370: 66 73 65 74 32 28 73 6c 6f 74 31 2c 73 6c 6f 74  fset2(slot1,slot
c380: 32 29 2b 73 69 7a 65 6f 66 28 73 6c 6f 74 32 29  2)+sizeof(slot2)
c390: 2b 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c  +__VA_alignof(sl
c3a0: 6f 74 33 29 2d 31 29 20 26 20 2d 28 6c 6f 6e 67  ot3)-1) & -(long
c3b0: 29 5f 5f 56 41 5f 61 6c 69 67 6e 6f 66 28 73 6c  )__VA_alignof(sl
c3c0: 6f 74 33 29 29 0a 23 64 65 66 69 6e 65 20 5f 5f  ot3)).#define __
c3d0: 76 61 5f 6f 66 66 73 65 74 34 28 73 6c 6f 74 31  va_offset4(slot1
c3e0: 2c 73 6c 6f 74 32 2c 73 6c 6f 74 33 2c 73 6c 6f  ,slot2,slot3,slo
c3f0: 74 34 29 20 20 5c 0a 20 20 28 28 5f 5f 76 61 5f  t4)  \.  ((__va_
c400: 6f 66 66 73 65 74 33 28 73 6c 6f 74 31 2c 73 6c  offset3(slot1,sl
c410: 6f 74 32 2c 73 6c 6f 74 33 29 2b 73 69 7a 65 6f  ot2,slot3)+sizeo
c420: 66 28 73 6c 6f 74 33 29 2b 5f 5f 56 41 5f 61 6c  f(slot3)+__VA_al
c430: 69 67 6e 6f 66 28 73 6c 6f 74 34 29 2d 31 29 20  ignof(slot4)-1) 
c440: 26 20 2d 28 6c 6f 6e 67 29 5f 5f 56 41 5f 61 6c  & -(long)__VA_al
c450: 69 67 6e 6f 66 28 73 6c 6f 74 34 29 29 0a 0a 0a  ignof(slot4))...
c460: 2f 2a 0a 20 2a 20 4d 69 73 63 65 6c 6c 61 6e 65  /*. * Miscellane
c470: 6f 75 73 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  ous declarations
c480: 2e 0a 20 2a 2f 0a 23 69 66 64 65 66 20 5f 5f 63  .. */.#ifdef __c
c490: 70 6c 75 73 70 6c 75 73 0a 65 78 74 65 72 6e 20  plusplus.extern 
c4a0: 22 43 22 20 76 6f 69 64 20 28 2a 76 61 63 61 6c  "C" void (*vacal
c4b0: 6c 29 20 28 29 3b 20 2f 2a 20 74 68 65 20 72 65  l) (); /* the re
c4c0: 74 75 72 6e 20 74 79 70 65 20 69 73 20 76 61 72  turn type is var
c4d0: 69 61 62 6c 65 2c 20 6e 6f 74 20 76 6f 69 64 21  iable, not void!
c4e0: 20 2a 2f 0a 23 65 6c 73 65 0a 65 78 74 65 72 6e   */.#else.extern
c4f0: 20 76 6f 69 64 20 28 2a 76 61 63 61 6c 6c 29 20   void (*vacall) 
c500: 28 29 3b 20 2f 2a 20 74 68 65 20 72 65 74 75 72  (); /* the retur
c510: 6e 20 74 79 70 65 20 69 73 20 76 61 72 69 61 62  n type is variab
c520: 6c 65 2c 20 6e 6f 74 20 76 6f 69 64 21 20 2a 2f  le, not void! */
c530: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
c540: 6e 65 64 28 5f 5f 53 54 44 43 5f 5f 29 20 7c 7c  ned(__STDC__) ||
c550: 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f   defined(__GNUC_
c560: 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f  _) || defined(__
c570: 63 70 6c 75 73 70 6c 75 73 29 0a 65 78 74 65 72  cplusplus).exter
c580: 6e 20 76 6f 69 64 20 28 2a 20 76 61 63 61 6c 6c  n void (* vacall
c590: 5f 66 75 6e 63 74 69 6f 6e 29 20 28 76 61 5f 61  _function) (va_a
c5a0: 6c 69 73 74 29 3b 0a 65 78 74 65 72 6e 20 69 6e  list);.extern in
c5b0: 74 20 5f 5f 76 61 5f 65 72 72 6f 72 31 20 28 65  t __va_error1 (e
c5c0: 6e 75 6d 20 5f 5f 56 41 74 79 70 65 2c 20 65 6e  num __VAtype, en
c5d0: 75 6d 20 5f 5f 56 41 74 79 70 65 29 3b 0a 65 78  um __VAtype);.ex
c5e0: 74 65 72 6e 20 69 6e 74 20 5f 5f 76 61 5f 65 72  tern int __va_er
c5f0: 72 6f 72 32 20 28 75 6e 73 69 67 6e 65 64 20 69  ror2 (unsigned i
c600: 6e 74 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64  nt);.extern void
c610: 20 5f 5f 73 74 72 75 63 74 63 70 79 20 28 76 6f   __structcpy (vo
c620: 69 64 2a 20 64 65 73 74 2c 20 76 6f 69 64 2a 20  id* dest, void* 
c630: 73 72 63 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f  src, unsigned lo
c640: 6e 67 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65  ng size, unsigne
c650: 64 20 6c 6f 6e 67 20 61 6c 69 67 6e 6d 65 6e 74  d long alignment
c660: 29 3b 0a 23 65 6c 73 65 0a 65 78 74 65 72 6e 20  );.#else.extern 
c670: 76 6f 69 64 20 28 2a 20 76 61 63 61 6c 6c 5f 66  void (* vacall_f
c680: 75 6e 63 74 69 6f 6e 29 20 28 29 3b 0a 65 78 74  unction) ();.ext
c690: 65 72 6e 20 69 6e 74 20 5f 5f 76 61 5f 65 72 72  ern int __va_err
c6a0: 6f 72 31 20 28 29 3b 0a 65 78 74 65 72 6e 20 69  or1 ();.extern i
c6b0: 6e 74 20 5f 5f 76 61 5f 65 72 72 6f 72 32 20 28  nt __va_error2 (
c6c0: 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 5f  );.extern void _
c6d0: 5f 73 74 72 75 63 74 63 70 79 20 28 29 3b 0a 23  _structcpy ();.#
c6e0: 65 6e 64 69 66 0a 74 79 70 65 64 65 66 20 75 6e  endif.typedef un
c6f0: 69 6f 6e 20 7b 20 5f 5f 76 61 77 6f 72 64 20 72  ion { __vaword r
c700: 6f 6f 6d 5b 5f 5f 56 41 5f 41 4c 49 53 54 5f 57  oom[__VA_ALIST_W
c710: 4f 52 44 53 5d 3b 20 64 6f 75 62 6c 65 20 61 6c  ORDS]; double al
c720: 69 67 6e 3b 20 7d 20 5f 5f 76 61 5f 73 74 72 75  ign; } __va_stru
c730: 63 74 5f 62 75 66 66 65 72 5f 74 3b 0a 65 78 74  ct_buffer_t;.ext
c740: 65 72 6e 20 5f 5f 76 61 5f 73 74 72 75 63 74 5f  ern __va_struct_
c750: 62 75 66 66 65 72 5f 74 20 5f 5f 76 61 5f 73 74  buffer_t __va_st
c760: 72 75 63 74 5f 62 75 66 66 65 72 3b 0a 0a 0a 23  ruct_buffer;...#
c770: 65 6e 64 69 66 20 2f 2a 20 5f 56 41 43 41 4c 4c  endif /* _VACALL
c780: 5f 48 20 2a 2f 0a                                _H */.