1 (* ============================================================ *)
2 (* PeUtil is the module which writes PE files using the *)
3 (* managed interface. *)
4 (* Copyright (c) John Gough 1999, 2000. *)
5 (* ============================================================ *)
6 (* ============================================================ *)
7 (* THIS IS THE EMPTY VERSION, THAT IS REQUIRED TO BOOTSTRAP *)
8 (* THE JVM VERSION WITHOUT THE MSCORLIB ASSEMBLY AVAILABLE. *)
9 (* ============================================================ *)
10 (* ============================================================ *)
22 (* ============================================================ *)
24 TYPE PeFile
* = POINTER TO RECORD (Mu
.MsilFile
)
25 (* Fields inherited from MsilFile *
26 * srcS* : LitValue.CharOpen; (* source file name *)
27 * outN
* : LitValue
.CharOpen
; (* output file name *)
32 (* ============================================================ *)
33 (* Constructor Method *)
34 (* ============================================================ *)
36 PROCEDURE newPeFile
*(IN nam
: ARRAY OF CHAR; isDll
: BOOLEAN) : PeFile
;
41 (* ============================================================ *)
43 PROCEDURE (t
: PeFile
)fileOk
*() : BOOLEAN;
48 (* ============================================================ *)
50 PROCEDURE (os
: PeFile
)MkNewProcInfo
*(proc
: Sy
.Scope
);
54 (* ============================================================ *)
56 PROCEDURE (os
: PeFile
)newLabel
*() : Mu
.Label
;
61 (* ============================================================ *)
62 (* Exported Methods *)
63 (* ============================================================ *)
65 PROCEDURE (os
: PeFile
)MethodDecl
*(attr
: SET; proc
: Id
.Procs
);
68 (* ============================================================ *)
70 PROCEDURE (os
: PeFile
)ExternList
*();
73 (* ============================================================ *)
75 PROCEDURE (os
: PeFile
)DefLab
*(l
: Mu
.Label
);
78 (* -------------------------------------------- *)
80 PROCEDURE (os
: PeFile
)DefLabC
*(l
: Mu
.Label
; IN c
: ARRAY OF CHAR);
83 (* ============================================================ *)
85 PROCEDURE (os
: PeFile
)Code
*(code
: INTEGER);
88 (* -------------------------------------------- *)
90 PROCEDURE (os
: PeFile
)CodeI
*(code
,int
: INTEGER);
93 (* -------------------------------------------- *)
95 PROCEDURE (os
: PeFile
)CodeT
*(code
: INTEGER; type
: Sy
.Type
);
98 (* -------------------------------------------- *)
100 PROCEDURE (os
: PeFile
)CodeTn
*(code
: INTEGER; type
: Sy
.Type
);
103 (* -------------------------------------------- *)
105 PROCEDURE (os
: PeFile
)CodeL
*(code
: INTEGER; long
: LONGINT);
108 (* -------------------------------------------- *)
110 PROCEDURE (os
: PeFile
)CodeR
*(code
: INTEGER; real
: REAL);
113 (* -------------------------------------------- *)
115 PROCEDURE (os
: PeFile
)CodeLb
*(code
: INTEGER; labl
: Mu
.Label
);
118 (* ============================================================ *)
120 PROCEDURE (os
: PeFile
)StaticCall
*(s
: INTEGER; d
: INTEGER);
123 (* -------------------------------------------- *)
125 PROCEDURE (os
: PeFile
)CodeS
*(code
: INTEGER; str
: INTEGER);
128 (* ============================================================ *)
130 PROCEDURE (os
: PeFile
)Try
*();
133 (* -------------------------------------------- *)
135 PROCEDURE (os
: PeFile
)Catch
*(proc
: Id
.Procs
);
138 (* -------------------------------------------- *)
140 PROCEDURE (os
: PeFile
)CloseCatch
*();
143 (* -------------------------------------------- *)
145 PROCEDURE (os
: PeFile
)CopyCall
*(typ
: Ty
.Record
);
148 (* -------------------------------------------- *)
150 PROCEDURE (os
: PeFile
)PushStr
*(IN str
: ARRAY OF CHAR);
153 (* ============================================================ *)
155 PROCEDURE (os
: PeFile
)CallIT
*(code
: INTEGER;
157 type
: Ty
.Procedure
);
160 (* ============================================================ *)
162 PROCEDURE (os
: PeFile
)CallCT
*(proc
: Id
.Procs
;
163 type
: Ty
.Procedure
);
166 (* ============================================================ *)
168 PROCEDURE (os
: PeFile
)CallDelegate
*(typ
: Ty
.Procedure
);
171 (* ============================================================ *)
173 PROCEDURE (os
: PeFile
)PutGetS
*(code
: INTEGER;
178 (* -------------------------------------------- *)
180 PROCEDURE (os
: PeFile
)GetValObj
*(code
: INTEGER; ptrT
: Ty
.Pointer
);
183 (* -------------------------------------------- *)
185 PROCEDURE (os
: PeFile
)PutGetXhr
*(code
: INTEGER;
190 (* -------------------------------------------- *)
192 PROCEDURE (os
: PeFile
)PutGetF
*(code
: INTEGER;
196 (* ============================================================ *)
197 (* ============================================================ *)
199 PROCEDURE (os
: PeFile
)MkNewRecord
*(typ
: Ty
.Record
);
202 (* ============================================================ *)
203 (* ============================================================ *)
205 PROCEDURE (os
: PeFile
)MkNewProcVal
*(p
: Sy
.Idnt
; (* src Proc *)
206 t
: Sy
.Type
); (* dst Type *)
209 (* ============================================================ *)
211 PROCEDURE (os
: PeFile
)CallSuper
*(rTp
: Ty
.Record
;
215 (* ============================================================ *)
217 PROCEDURE (os
: PeFile
)InitHead
*(rTp
: Ty
.Record
;
221 (* ============================================================ *)
223 PROCEDURE (os
: PeFile
)CopyHead
*(typ
: Ty
.Record
);
226 (* ============================================================ *)
228 PROCEDURE (os
: PeFile
)MarkInterfaces
*(IN seq
: Sy
.TypeSeq
);
231 (* ============================================================ *)
233 PROCEDURE (os
: PeFile
)MainHead
*(xAtt
: SET);
236 PROCEDURE (os
: PeFile
)SubSys
*(xAtt
: SET);
239 (* ============================================================ *)
241 PROCEDURE (os
: PeFile
)StartBoxClass
*(rec
: Ty
.Record
;
247 PROCEDURE (os
: PeFile
)MainTail
*();
250 (* ------------------------------------------------------------ *)
252 PROCEDURE (os
: PeFile
)MethodTail
*(id
: Id
.Procs
);
255 (* ------------------------------------------------------------ *)
257 PROCEDURE (os
: PeFile
)ClinitTail
*();
260 (* ------------------------------------------------------------ *)
262 PROCEDURE (os
: PeFile
)CopyTail
*();
265 (* ------------------------------------------------------------ *)
267 PROCEDURE (os
: PeFile
)InitTail
*(typ
: Ty
.Record
);
270 (* ============================================================ *)
272 PROCEDURE (os
: PeFile
)ClinitHead
*();
275 (* ============================================================ *)
277 PROCEDURE (os
: PeFile
)EmitField
*(id
: Id
.AbVar
; att
: SET);
280 (* ============================================================ *)
282 PROCEDURE (os
: PeFile
)EmitEventMethods
*(id
: Id
.AbVar
);
283 END EmitEventMethods
;
285 (* ============================================================ *)
287 PROCEDURE (os
: PeFile
)MkAndLinkDelegate
*(dl
: Sy
.Idnt
;
291 END MkAndLinkDelegate
;
293 (* ============================================================ *)
294 (* ============================================================ *)
296 PROCEDURE (os
: PeFile
)EmitPTypeBody
*(tId
: Id
.TypId
);
299 (* ============================================================ *)
300 (* End of Procedure Variable and Event Stuff *)
301 (* ============================================================ *)
303 PROCEDURE (os
: PeFile
)Line
*(nm
: INTEGER),EMPTY
;
305 (* ============================================================ *)
307 PROCEDURE (os
: PeFile
)LoadType
*(id
: Sy
.Idnt
);
310 (* ============================================================ *)
312 PROCEDURE (os
: PeFile
)Finish
*();
315 (* ============================================================ *)
317 PROCEDURE (os
: PeFile
)RefRTS
*();
320 (* ============================================================ *)
322 PROCEDURE (os
: PeFile
)StartNamespace
*(nm
: Lv
.CharOpen
);
325 (* ============================================================ *)
327 PROCEDURE (os
: PeFile
)MkBodyClass
*(mod
: Id
.BlkId
);
330 (* ============================================================ *)
332 PROCEDURE (os
: PeFile
)ClassHead
*(attSet
: SET;
337 (* ============================================================ *)
339 PROCEDURE (os
: PeFile
)CheckNestedClass
*(typ
: Ty
.Record
;
342 END CheckNestedClass
;
344 (* ============================================================ *)
346 PROCEDURE (os
: PeFile
)ClassTail
*();
349 (* ============================================================ *)
351 PROCEDURE (os
: PeFile
)MkRecX
*(t
: Ty
.Record
; s
: Sy
.Scope
);
354 (* ============================================================ *)
356 PROCEDURE (os
: PeFile
)MkPtrX
*(t
: Ty
.Pointer
);
359 (* ============================================================ *)
361 PROCEDURE (os
: PeFile
)MkArrX
*(t
: Ty
.Array
);
364 (* ============================================================ *)
366 PROCEDURE (os
: PeFile
)MkBasX
*(t
: Ty
.Base
);
369 (* ============================================================ *)
371 PROCEDURE (os
: PeFile
)MkEnuX
*(t
: Ty
.Enum
; s
: Sy
.Scope
);
374 (* ============================================================ *)
376 PROCEDURE (os
: PeFile
)NumberParams
*(pId
: Id
.Procs
;
380 (* ============================================================ *)
382 PROCEDURE (os
: PeFile
)SwitchHead
*(num
: INTEGER);
385 PROCEDURE (os
: PeFile
)SwitchTail
*();
388 PROCEDURE (os
: PeFile
)LstLab
*(l
: Mu
.Label
);
391 (* ============================================================ *)
392 (* ============================================================ *)
394 (* ============================================================ *)
395 (* ============================================================ *)