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