Artifact
d7b6148d6447a7e961572672be385fdd630f0ecb:
0000: 3c 48 45 41 44 3e 0a 3c 54 49 54 4c 45 3e 20 54 <HEAD>.<TITLE> T
0010: 52 41 4d 50 4f 4c 49 4e 45 20 6d 61 6e 75 61 6c RAMPOLINE manual
0020: 20 70 61 67 65 20 3c 2f 54 49 54 4c 45 3e 0a 3c page </TITLE>.<
0030: 2f 48 45 41 44 3e 0a 3c 42 4f 44 59 3e 0a 3c 48 /HEAD>.<BODY>.<H
0040: 31 3e 54 52 41 4d 50 4f 4c 49 4e 45 20 6d 61 6e 1>TRAMPOLINE man
0050: 75 61 6c 20 70 61 67 65 3c 2f 48 31 3e 0a 0a 3c ual page</H1>..<
0060: 55 4c 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 45 46 UL>.<LI> <A HREF
0070: 3d 22 23 4e 61 6d 65 22 3e 4e 61 6d 65 3c 2f 41 ="#Name">Name</A
0080: 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 >.<LI> <A HREF="
0090: 23 53 79 6e 6f 70 73 69 73 22 3e 53 79 6e 6f 70 #Synopsis">Synop
00a0: 73 69 73 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 sis</A>.<LI> <A
00b0: 48 52 45 46 3d 22 23 44 65 73 63 72 69 70 74 69 HREF="#Descripti
00c0: 6f 6e 22 3e 44 65 73 63 72 69 70 74 69 6f 6e 3c on">Description<
00d0: 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 45 46 /A>.<LI> <A HREF
00e0: 3d 22 23 53 65 65 20 61 6c 73 6f 22 3e 53 65 65 ="#See also">See
00f0: 20 61 6c 73 6f 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c also</A>.<LI> <
0100: 41 20 48 52 45 46 3d 22 23 42 75 67 73 22 3e 42 A HREF="#Bugs">B
0110: 75 67 73 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 ugs</A>.<LI> <A
0120: 48 52 45 46 3d 22 23 50 6f 72 74 69 6e 67 22 3e HREF="#Porting">
0130: 50 6f 72 74 69 6e 67 3c 2f 41 3e 0a 3c 4c 49 3e Porting</A>.<LI>
0140: 20 3c 41 20 48 52 45 46 3d 22 23 41 75 74 68 6f <A HREF="#Autho
0150: 72 22 3e 41 75 74 68 6f 72 3c 2f 41 3e 0a 3c 4c r">Author</A>.<L
0160: 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 41 63 6b I> <A HREF="#Ack
0170: 6e 6f 77 6c 65 64 67 65 6d 65 6e 74 73 22 3e 41 nowledgements">A
0180: 63 6b 6e 6f 77 6c 65 64 67 65 6d 65 6e 74 73 3c cknowledgements<
0190: 2f 41 3e 0a 3c 2f 55 4c 3e 0a 3c 50 3e 0a 0a 3c /A>.</UL>.<P>..<
01a0: 48 52 3e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 4e 61 HR>..<A NAME="Na
01b0: 6d 65 22 3e 0a 3c 48 32 3e 4e 61 6d 65 3c 2f 48 me">.<H2>Name</H
01c0: 32 3e 0a 3c 2f 41 3e 0a 0a 74 72 61 6d 70 6f 6c 2>.</A>..trampol
01d0: 69 6e 65 20 2d 20 20 63 6c 6f 73 75 72 65 73 20 ine - closures
01e0: 61 73 20 66 69 72 73 74 2d 63 6c 61 73 73 20 43 as first-class C
01f0: 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 3c 41 20 4e functions..<A N
0200: 41 4d 45 3d 22 53 79 6e 6f 70 73 69 73 22 3e 0a AME="Synopsis">.
0210: 3c 48 32 3e 53 79 6e 6f 70 73 69 73 3c 2f 48 32 <H2>Synopsis</H2
0220: 3e 0a 3c 2f 41 3e 0a 0a 3c 50 52 45 3e 0a 3c 43 >.</A>..<PRE>.<C
0230: 4f 44 45 3e 23 69 6e 63 6c 75 64 65 20 26 6c 74 ODE>#include <
0240: 3b 74 72 61 6d 70 6f 6c 69 6e 65 2e 68 26 67 74 ;trampoline.h>
0250: 3b 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 3c ;</CODE>.<CODE><
0260: 56 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 VAR>function</VA
0270: 52 3e 20 3d 20 61 6c 6c 6f 63 5f 74 72 61 6d 70 R> = alloc_tramp
0280: 6f 6c 69 6e 65 28 3c 56 41 52 3e 61 64 64 72 65 oline(<VAR>addre
0290: 73 73 3c 2f 56 41 52 3e 2c 20 3c 56 41 52 3e 76 ss</VAR>, <VAR>v
02a0: 61 72 69 61 62 6c 65 3c 2f 56 41 52 3e 2c 20 3c ariable</VAR>, <
02b0: 56 41 52 3e 64 61 74 61 3c 2f 56 41 52 3e 29 3b VAR>data</VAR>);
02c0: 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 66 72 </CODE>.<CODE>fr
02d0: 65 65 5f 74 72 61 6d 70 6f 6c 69 6e 65 28 3c 56 ee_trampoline(<V
02e0: 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 AR>function</VAR
02f0: 3e 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 >);</CODE>.<CODE
0300: 3e 69 73 5f 74 72 61 6d 70 6f 6c 69 6e 65 28 3c >is_trampoline(<
0310: 56 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 VAR>function</VA
0320: 52 3e 29 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 R>)</CODE>.<CODE
0330: 3e 74 72 61 6d 70 6f 6c 69 6e 65 5f 61 64 64 72 >trampoline_addr
0340: 65 73 73 28 3c 56 41 52 3e 66 75 6e 63 74 69 6f ess(<VAR>functio
0350: 6e 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 0a n</VAR>)</CODE>.
0360: 3c 43 4f 44 45 3e 74 72 61 6d 70 6f 6c 69 6e 65 <CODE>trampoline
0370: 5f 76 61 72 69 61 62 6c 65 28 3c 56 41 52 3e 66 _variable(<VAR>f
0380: 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e 29 3c 2f unction</VAR>)</
0390: 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 74 72 61 6d CODE>.<CODE>tram
03a0: 70 6f 6c 69 6e 65 5f 64 61 74 61 28 3c 56 41 52 poline_data(<VAR
03b0: 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e 29 >function</VAR>)
03c0: 3c 2f 43 4f 44 45 3e 0a 3c 2f 50 52 45 3e 0a 0a </CODE>.</PRE>..
03d0: 3c 41 20 4e 41 4d 45 3d 22 44 65 73 63 72 69 70 <A NAME="Descrip
03e0: 74 69 6f 6e 22 3e 0a 3c 48 32 3e 44 65 73 63 72 tion">.<H2>Descr
03f0: 69 70 74 69 6f 6e 3c 2f 48 32 3e 0a 3c 2f 41 3e iption</H2>.</A>
0400: 0a 0a 54 68 65 73 65 20 20 66 75 6e 63 74 69 6f ..These functio
0410: 6e 73 20 69 6d 70 6c 65 6d 65 6e 74 20 3c 45 4d ns implement <EM
0420: 3e 63 6c 6f 73 75 72 65 73 3c 2f 45 4d 3e 20 20 >closures</EM>
0430: 61 73 20 66 69 72 73 74 2d 63 6c 61 73 73 0a 43 as first-class.C
0440: 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 41 20 63 functions. A c
0450: 6c 6f 73 75 72 65 20 63 6f 6e 73 69 73 74 73 20 losure consists
0460: 6f 66 20 61 20 72 65 67 75 6c 61 72 20 43 20 66 of a regular C f
0470: 75 6e 63 74 69 6f 6e 20 20 61 6e 64 20 20 61 0a unction and a.
0480: 70 69 65 63 65 20 6f 66 20 64 61 74 61 20 77 68 piece of data wh
0490: 69 63 68 20 67 65 74 73 20 70 61 73 73 65 64 20 ich gets passed
04a0: 74 6f 20 74 68 65 20 43 20 66 75 6e 63 74 69 6f to the C functio
04b0: 6e 20 77 68 65 6e 20 74 68 65 0a 63 6c 6f 73 75 n when the.closu
04c0: 72 65 20 69 73 20 63 61 6c 6c 65 64 2e 0a 3c 50 re is called..<P
04d0: 3e 0a 43 6c 6f 73 75 72 65 73 20 61 73 20 3c 45 >.Closures as <E
04e0: 4d 3e 66 69 72 73 74 2d 63 6c 61 73 73 20 43 20 M>first-class C
04f0: 66 75 6e 63 74 69 6f 6e 73 3c 2f 45 4d 3e 20 6d functions</EM> m
0500: 65 61 6e 73 20 20 74 68 61 74 20 20 74 68 65 79 eans that they
0510: 20 20 66 69 74 0a 69 6e 74 6f 20 20 61 20 20 66 fit.into a f
0520: 75 6e 63 74 69 6f 6e 20 20 70 6f 69 6e 74 65 72 unction pointer
0530: 20 20 61 6e 64 20 63 61 6e 20 62 65 20 63 61 6c and can be cal
0540: 6c 65 64 20 65 78 61 63 74 6c 79 20 6c 69 6b 65 led exactly like
0550: 20 61 6e 79 0a 6f 74 68 65 72 20 43 20 66 75 6e any.other C fun
0560: 63 74 69 6f 6e 2e 0a 3c 43 4f 44 45 3e 3c 56 41 ction..<CODE><VA
0570: 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e R>function</VAR>
0580: 20 3d 20 61 6c 6c 6f 63 5f 74 72 61 6d 70 6f 6c = alloc_trampol
0590: 69 6e 65 28 3c 56 41 52 3e 61 64 64 72 65 73 73 ine(<VAR>address
05a0: 3c 2f 56 41 52 3e 2c 20 3c 56 41 52 3e 76 61 72 </VAR>, <VAR>var
05b0: 69 61 62 6c 65 3c 2f 56 41 52 3e 2c 20 3c 56 41 iable</VAR>, <VA
05c0: 52 3e 64 61 74 61 3c 2f 56 41 52 3e 29 3c 2f 43 R>data</VAR>)</C
05d0: 4f 44 45 3e 0a 61 6c 6c 6f 63 61 74 65 73 20 20 ODE>.allocates
05e0: 61 20 63 6c 6f 73 75 72 65 2e 0a 57 68 65 6e 20 a closure..When
05f0: 3c 56 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 <VAR>function</V
0600: 41 52 3e 20 20 67 65 74 73 20 20 63 61 6c 6c 65 AR> gets calle
0610: 64 2c 20 20 69 74 20 20 73 74 6f 72 65 73 0a 3c d, it stores.<
0620: 56 41 52 3e 64 61 74 61 3c 2f 56 41 52 3e 20 20 VAR>data</VAR>
0630: 69 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 in the variable
0640: 3c 56 41 52 3e 76 61 72 69 61 62 6c 65 3c 2f 56 <VAR>variable</V
0650: 41 52 3e 0a 20 61 6e 64 20 63 61 6c 6c 73 20 74 AR>. and calls t
0660: 68 65 20 43 20 66 75 6e 63 74 69 6f 6e 20 61 74 he C function at
0670: 20 3c 56 41 52 3e 61 64 64 72 65 73 73 3c 2f 56 <VAR>address</V
0680: 41 52 3e 2e 0a 54 68 65 20 20 66 75 6e 63 74 69 AR>..The functi
0690: 6f 6e 20 20 61 74 20 3c 56 41 52 3e 61 64 64 72 on at <VAR>addr
06a0: 65 73 73 3c 2f 56 41 52 3e 20 20 69 73 20 20 72 ess</VAR> is r
06b0: 65 73 70 6f 6e 73 69 62 6c 65 20 20 66 6f 72 0a esponsible for.
06c0: 66 65 74 63 68 69 6e 67 20 3c 56 41 52 3e 64 61 fetching <VAR>da
06d0: 74 61 3c 2f 56 41 52 3e 20 20 6f 75 74 20 6f 66 ta</VAR> out of
06e0: 20 3c 56 41 52 3e 76 61 72 69 61 62 6c 65 3c 2f <VAR>variable</
06f0: 56 41 52 3e 0a 20 69 6d 6d 65 64 69 61 74 65 6c VAR>. immediatel
0700: 79 2c 20 62 65 66 6f 72 65 20 65 78 65 63 75 74 y, before execut
0710: 69 6f 6e 20 6f 66 20 61 6e 79 20 6f 74 68 65 72 ion of any other
0720: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 0a function call..
0730: 3c 50 3e 0a 54 68 69 73 20 69 73 20 6d 75 63 68 <P>.This is much
0740: 20 6c 69 6b 65 20 67 63 63 27 73 20 6c 6f 63 61 like gcc's loca
0750: 6c 20 66 75 6e 63 74 69 6f 6e 73 2c 20 65 78 63 l functions, exc
0760: 65 70 74 20 20 74 68 61 74 20 20 74 68 65 0a 47 ept that the.G
0770: 4e 55 20 20 43 20 6c 6f 63 61 6c 20 66 75 6e 63 NU C local func
0780: 74 69 6f 6e 73 20 68 61 76 65 20 64 79 6e 61 6d tions have dynam
0790: 69 63 20 65 78 74 65 6e 74 20 28 69 2e 65 2e 20 ic extent (i.e.
07a0: 61 72 65 0a 64 65 61 6c 6c 6f 63 61 74 65 64 20 are.deallocated
07b0: 77 68 65 6e 20 74 68 65 20 63 72 65 61 74 69 6e when the creatin
07c0: 67 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 g function retur
07d0: 6e 73 29 2c 20 77 68 69 6c 65 20 3c 45 4d 3e 74 ns), while <EM>t
07e0: 72 61 6d 70 6f 6c 69 6e 65 3c 2f 45 4d 3e 0a 20 rampoline</EM>.
07f0: 20 70 72 6f 76 69 64 65 73 20 20 66 75 6e 63 74 provides funct
0800: 69 6f 6e 73 20 77 69 74 68 20 69 6e 64 65 66 69 ions with indefi
0810: 6e 69 74 65 20 65 78 74 65 6e 74 3a 20 3c 43 4f nite extent: <CO
0820: 44 45 3e 3c 56 41 52 3e 66 75 6e 63 74 69 6f 6e DE><VAR>function
0830: 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 0a 69 73 </VAR></CODE>.is
0840: 20 20 6f 6e 6c 79 20 20 64 65 61 6c 6c 6f 63 61 only dealloca
0850: 74 65 64 20 20 77 68 65 6e 20 20 3c 43 4f 44 45 ted when <CODE
0860: 3e 66 72 65 65 5f 74 72 61 6d 70 6f 6c 69 6e 65 >free_trampoline
0870: 28 3c 56 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f (<VAR>function</
0880: 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 20 20 69 73 VAR>)</CODE> is
0890: 0a 63 61 6c 6c 65 64 2e 0a 3c 50 3e 0a 3c 43 4f .called..<P>.<CO
08a0: 44 45 3e 69 73 5f 74 72 61 6d 70 6f 6c 69 6e 65 DE>is_trampoline
08b0: 28 3c 56 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f (<VAR>function</
08c0: 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 0a 63 68 65 VAR>)</CODE>.che
08d0: 63 6b 73 20 20 77 68 65 74 68 65 72 20 20 74 68 cks whether th
08e0: 65 20 20 43 20 20 66 75 6e 63 74 69 6f 6e 20 3c e C function <
08f0: 43 4f 44 45 3e 3c 56 41 52 3e 66 75 6e 63 74 69 CODE><VAR>functi
0900: 6f 6e 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 0a on</VAR></CODE>.
0910: 77 61 73 20 20 70 72 6f 64 75 63 65 64 20 62 79 was produced by
0920: 20 61 20 63 61 6c 6c 20 74 6f 20 3c 43 4f 44 45 a call to <CODE
0930: 3e 61 6c 6c 6f 63 5f 74 72 61 6d 70 6f 6c 69 6e >alloc_trampolin
0940: 65 3c 2f 43 4f 44 45 3e 2e 0a 49 66 20 74 68 69 e</CODE>..If thi
0950: 73 20 72 65 74 75 72 6e 73 20 74 72 75 65 2c 20 s returns true,
0960: 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 67 69 the arguments gi
0970: 76 65 6e 20 74 6f 20 3c 43 4f 44 45 3e 61 6c 6c ven to <CODE>all
0980: 6f 63 5f 74 72 61 6d 70 6f 6c 69 6e 65 3c 2f 43 oc_trampoline</C
0990: 4f 44 45 3e 0a 63 61 6e 20 20 62 65 20 20 72 65 ODE>.can be re
09a0: 74 72 69 65 76 65 64 3a 0a 3c 55 4c 3e 0a 3c 4c trieved:.<UL>.<L
09b0: 49 3e 20 3c 43 4f 44 45 3e 74 72 61 6d 70 6f 6c I> <CODE>trampol
09c0: 69 6e 65 5f 61 64 64 72 65 73 73 28 3c 56 41 52 ine_address(<VAR
09d0: 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e 29 >function</VAR>)
09e0: 3c 2f 43 4f 44 45 3e 20 72 65 74 75 72 6e 73 20 </CODE> returns
09f0: 3c 56 41 52 3e 61 64 64 72 65 73 73 3c 2f 56 41 <VAR>address</VA
0a00: 52 3e 2c 0a 3c 4c 49 3e 20 3c 43 4f 44 45 3e 74 R>,.<LI> <CODE>t
0a10: 72 61 6d 70 6f 6c 69 6e 65 5f 76 61 72 69 61 62 rampoline_variab
0a20: 6c 65 28 3c 56 41 52 3e 66 75 6e 63 74 69 6f 6e le(<VAR>function
0a30: 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 20 72 </VAR>)</CODE> r
0a40: 65 74 75 72 6e 73 20 3c 56 41 52 3e 76 61 72 69 eturns <VAR>vari
0a50: 61 62 6c 65 3c 2f 56 41 52 3e 2c 0a 3c 4c 49 3e able</VAR>,.<LI>
0a60: 20 3c 43 4f 44 45 3e 74 72 61 6d 70 6f 6c 69 6e <CODE>trampolin
0a70: 65 5f 64 61 74 61 28 3c 56 41 52 3e 66 75 6e 63 e_data(<VAR>func
0a80: 74 69 6f 6e 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 tion</VAR>)</COD
0a90: 45 3e 20 72 65 74 75 72 6e 73 20 3c 56 41 52 3e E> returns <VAR>
0aa0: 64 61 74 61 3c 2f 56 41 52 3e 2e 0a 3c 2f 55 4c data</VAR>..</UL
0ab0: 3e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 53 65 65 20 >..<A NAME="See
0ac0: 61 6c 73 6f 22 3e 0a 3c 48 32 3e 53 65 65 20 61 also">.<H2>See a
0ad0: 6c 73 6f 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 3c 41 lso</H2>.</A>.<A
0ae0: 20 48 52 45 46 3d 22 67 63 63 28 31 29 22 3e 3c HREF="gcc(1)"><
0af0: 43 4f 44 45 3e 3c 42 3e 67 63 63 3c 2f 42 3e 3c CODE><B>gcc</B><
0b00: 2f 43 4f 44 45 3e 3c 2f 41 3e 28 31 29 2c 20 3c /CODE></A>(1), <
0b10: 41 20 48 52 45 46 3d 22 76 61 72 61 72 67 73 28 A HREF="varargs(
0b20: 33 29 22 3e 3c 43 4f 44 45 3e 3c 42 3e 76 61 72 3)"><CODE><B>var
0b30: 61 72 67 73 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c args</B></CODE><
0b40: 2f 41 3e 28 33 29 2c 20 3c 41 20 48 52 45 46 3d /A>(3), <A HREF=
0b50: 22 63 61 6c 6c 62 61 63 6b 28 33 29 22 3e 3c 43 "callback(3)"><C
0b60: 4f 44 45 3e 3c 42 3e 63 61 6c 6c 62 61 63 6b 3c ODE><B>callback<
0b70: 2f 42 3e 3c 2f 43 4f 44 45 3e 3c 2f 41 3e 28 33 /B></CODE></A>(3
0b80: 29 0a 0a 3c 41 20 4e 41 4d 45 3d 22 42 75 67 73 )..<A NAME="Bugs
0b90: 22 3e 0a 3c 48 32 3e 42 75 67 73 3c 2f 48 32 3e ">.<H2>Bugs</H2>
0ba0: 0a 3c 2f 41 3e 0a 0a 50 61 73 73 69 6e 67 20 20 .</A>..Passing
0bb0: 74 68 65 20 20 64 61 74 61 20 20 74 68 72 6f 75 the data throu
0bc0: 67 68 20 61 20 67 6c 6f 62 61 6c 20 76 61 72 69 gh a global vari
0bd0: 61 62 6c 65 20 69 73 20 6e 6f 74 20 72 65 65 6e able is not reen
0be0: 74 72 61 6e 74 2e 20 44 6f 6e 27 74 0a 63 61 6c trant. Don't.cal
0bf0: 6c 20 74 72 61 6d 70 6f 6c 69 6e 65 20 66 75 6e l trampoline fun
0c00: 63 74 69 6f 6e 73 20 66 72 6f 6d 20 77 69 74 68 ctions from with
0c10: 69 6e 20 20 73 69 67 6e 61 6c 0a 68 61 6e 64 6c in signal.handl
0c20: 65 72 73 2e 20 54 68 69 73 20 69 73 20 66 69 78 ers. This is fix
0c30: 65 64 20 69 6e 20 74 68 65 20 3c 41 20 48 52 45 ed in the <A HRE
0c40: 46 3d 22 63 61 6c 6c 62 61 63 6b 28 33 29 22 3e F="callback(3)">
0c50: 3c 43 4f 44 45 3e 3c 42 3e 63 61 6c 6c 62 61 63 <CODE><B>callbac
0c60: 6b 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c 2f 41 3e k</B></CODE></A>
0c70: 28 33 29 20 70 61 63 6b 61 67 65 2e 0a 0a 3c 41 (3) package...<A
0c80: 20 4e 41 4d 45 3d 22 50 6f 72 74 69 6e 67 22 3e NAME="Porting">
0c90: 0a 3c 48 32 3e 50 6f 72 74 69 6e 67 3c 2f 48 32 .<H2>Porting</H2
0ca0: 3e 0a 3c 2f 41 3e 0a 0a 54 68 65 20 77 61 79 20 >.</A>..The way
0cb0: 67 63 63 20 62 75 69 6c 64 73 20 6c 6f 63 61 6c gcc builds local
0cc0: 20 66 75 6e 63 74 69 6f 6e 73 20 69 73 20 64 65 functions is de
0cd0: 73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20 67 scribed in the g
0ce0: 63 63 0a 73 6f 75 72 63 65 2c 20 66 69 6c 65 20 cc.source, file
0cf0: 3c 53 41 4d 50 3e 67 63 63 2d 32 2e 36 2e 33 2f <SAMP>gcc-2.6.3/
0d00: 63 6f 6e 66 69 67 2f 3c 56 41 52 3e 63 70 75 3c config/<VAR>cpu<
0d10: 2f 56 41 52 3e 2f 3c 56 41 52 3e 63 70 75 3c 2f /VAR>/<VAR>cpu</
0d20: 56 41 52 3e 2e 68 3c 2f 53 41 4d 50 3e 2e 0a 0a VAR>.h</SAMP>...
0d30: 3c 41 20 4e 41 4d 45 3d 22 41 75 74 68 6f 72 22 <A NAME="Author"
0d40: 3e 0a 3c 48 32 3e 41 75 74 68 6f 72 3c 2f 48 32 >.<H2>Author</H2
0d50: 3e 0a 3c 2f 41 3e 0a 0a 42 72 75 6e 6f 20 48 61 >.</A>..Bruno Ha
0d60: 69 62 6c 65 20 26 6c 74 3b 62 72 75 6e 6f 40 63 ible <bruno@c
0d70: 6c 69 73 70 2e 6f 72 67 26 67 74 3b 0a 0a 3c 41 lisp.org>..<A
0d80: 20 4e 41 4d 45 3d 22 41 63 6b 6e 6f 77 6c 65 64 NAME="Acknowled
0d90: 67 65 6d 65 6e 74 73 22 3e 0a 3c 48 32 3e 41 63 gements">.<H2>Ac
0da0: 6b 6e 6f 77 6c 65 64 67 65 6d 65 6e 74 73 3c 2f knowledgements</
0db0: 48 32 3e 0a 3c 2f 41 3e 0a 0a 4d 61 6e 79 20 69 H2>.</A>..Many i
0dc0: 64 65 61 73 20 77 65 72 65 20 63 72 69 62 62 65 deas were cribbe
0dd0: 64 20 66 72 6f 6d 20 74 68 65 20 67 63 63 20 73 d from the gcc s
0de0: 6f 75 72 63 65 2e 0a 3c 50 3e 0a 0a 3c 48 52 3e ource..<P>..<HR>
0df0: 0a 0a 3c 41 44 44 52 45 53 53 3e 54 52 41 4d 50 ..<ADDRESS>TRAMP
0e00: 4f 4c 49 4e 45 20 6d 61 6e 75 61 6c 20 70 61 67 OLINE manual pag
0e10: 65 3c 42 52 3e 0a 42 72 75 6e 6f 20 48 61 69 62 e<BR>.Bruno Haib
0e20: 6c 65 20 26 6c 74 3b 62 72 75 6e 6f 40 63 6c 69 le <bruno@cli
0e30: 73 70 2e 6f 72 67 26 67 74 3b 0a 3c 2f 41 44 44 sp.org>.</ADD
0e40: 52 45 53 53 3e 0a 3c 50 3e 0a 4c 61 73 74 20 6d RESS>.<P>.Last m
0e50: 6f 64 69 66 69 65 64 3a 20 32 35 20 4f 63 74 6f odified: 25 Octo
0e60: 62 65 72 20 31 39 39 37 2e 0a 0a 3c 2f 42 4f 44 ber 1997...</BOD
0e70: 59 3e 0a Y>.