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