* dxegen compilable for any target now

This commit is contained in:
Tomas Hajny 2004-09-15 19:20:51 +00:00
parent ad2339dc75
commit 2131196402
5 changed files with 68 additions and 28 deletions

View File

@ -231,7 +231,7 @@ endif
ifdef NO_EXCEPTIONS_IN_SYSTEM ifdef NO_EXCEPTIONS_IN_SYSTEM
override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM override FPCOPT+=-dNO_EXCEPTIONS_IN_SYSTEM
endif endif
override TARGET_UNITS+=system objpas macpas strings go32 dpmiexcp initc ports profile dxeload emu387 dos crt objects printer graph sysutils classes math typinfo matrix cpu mmx ucomplex getopts heaptrc lineinfo msmouse charset varutils video mouse keyboard variants vesamode types sysconst rtlconst dateutil convutil strutils override TARGET_UNITS+=system objpas macpas strings go32 dpmiexcp initc ports profile dxetype dxeload emu387 dos crt objects printer graph sysutils classes math typinfo matrix cpu mmx ucomplex getopts heaptrc lineinfo msmouse charset varutils video mouse keyboard variants vesamode types sysconst rtlconst dateutil convutil strutils
override TARGET_LOADERS+=prt0 exceptn fpu override TARGET_LOADERS+=prt0 exceptn fpu
override TARGET_RSTS+=math varutils typinfo classes variants dateutil sysconst override TARGET_RSTS+=math varutils typinfo classes variants dateutil sysconst
override INSTALL_FPCPACKAGE=y override INSTALL_FPCPACKAGE=y
@ -1414,7 +1414,8 @@ dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
$(COMPILER) -Sg dpmiexcp.pp $(COMPILER) -Sg dpmiexcp.pp
initc$(PPUEXT) : initc.pp system$(PPUEXT) initc$(PPUEXT) : initc.pp system$(PPUEXT)
profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT) profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
dxeload$(PPUEXT) : dxeload.pp system$(PPUEXT) dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
dxeload$(PPUEXT) : dxeload.pp dxetype$(PPUEXT) system$(PPUEXT)
emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \ emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
dpmiexcp$(PPUEXT) dpmiexcp$(PPUEXT)
ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT) ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)

View File

@ -8,7 +8,7 @@ main=rtl
[target] [target]
loaders=prt0 exceptn fpu loaders=prt0 exceptn fpu
units=system objpas macpas strings \ units=system objpas macpas strings \
go32 dpmiexcp initc ports profile dxeload emu387 \ go32 dpmiexcp initc ports profile dxetype dxeload emu387 \
dos crt objects printer graph \ dos crt objects printer graph \
sysutils classes math typinfo matrix \ sysutils classes math typinfo matrix \
cpu mmx ucomplex getopts heaptrc lineinfo \ cpu mmx ucomplex getopts heaptrc lineinfo \
@ -114,7 +114,9 @@ initc$(PPUEXT) : initc.pp system$(PPUEXT)
profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT) profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
dxeload$(PPUEXT) : dxeload.pp system$(PPUEXT) dxetype$(PPUEXT) : dxetype.pp system$(PPUEXT)
dxeload$(PPUEXT) : dxeload.pp dxetype$(PPUEXT) system$(PPUEXT)
emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \ emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
dpmiexcp$(PPUEXT) dpmiexcp$(PPUEXT)

View File

@ -20,20 +20,13 @@
Unit dxeload; Unit dxeload;
interface interface
const
DXE_MAGIC = $31455844;
type
dxe_header = record
magic,
symbol_offset,
element_size,
nrelocs : cardinal;
end;
function dxe_load(filename : string) : pointer; function dxe_load(filename : string) : pointer;
implementation implementation
uses
dxetype;
function dxe_load(filename : string) : pointer; function dxe_load(filename : string) : pointer;
{ {
Copyright (C) 1995 Charles Sandmann (sandmann@clio.rice.edu) Copyright (C) 1995 Charles Sandmann (sandmann@clio.rice.edu)
@ -43,9 +36,6 @@ type
{ to avoid range check problems } { to avoid range check problems }
pointer_array = array[0..maxlongint div sizeof(pointer)] of pointer; pointer_array = array[0..maxlongint div sizeof(pointer)] of pointer;
tpa = ^pointer_array; tpa = ^pointer_array;
plongint = ^longint;
pcardinal = ^cardinal;
ppointer = ^pointer;
var var
dh : dxe_header; dh : dxe_header;
data : pchar; data : pchar;
@ -98,7 +88,10 @@ end;
end. end.
{ {
$Log$ $Log$
Revision 1.6 2002-09-07 16:01:18 peter Revision 1.7 2004-09-15 19:20:51 hajny
* dxegen compilable for any target now
Revision 1.6 2002/09/07 16:01:18 peter
* old logs removed and tabs fixed * old logs removed and tabs fixed
Revision 1.5 2002/04/27 07:58:23 peter Revision 1.5 2002/04/27 07:58:23 peter

42
rtl/go32v2/dxetype.pp Normal file
View File

@ -0,0 +1,42 @@
{
$Id$
This file is part of the Free Pascal run time library.
Copyright (c) 1999-2000 by Pierre Muller,
member of the Free Pascal development team.
Support unit for working with DXE files for Go32V2
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************
}
unit dxetype;
interface
const
DXE_MAGIC = $31455844;
type
dxe_header = record
magic,
symbol_offset,
element_size,
nrelocs : cardinal;
end;
implementation
end.
{
$Log$
Revision 1.1 2004-09-15 19:20:51 hajny
* dxegen compilable for any target now
}

View File

@ -12,7 +12,7 @@
} }
Uses Strings,DxeLoad,Coff,Dos; Uses strings,dxetype,coff,dos;
{$inline on} {$inline on}
@ -36,15 +36,15 @@ isn't interpretive. Until generics, this is the only reusable way.
} }
{$ifdef BigEndian} {$ifdef FPC_BIG_ENDIAN}
Var data : pbyte; Var data : pbyte;
c : byte; c : byte;
i,j : longint; i,j : longint;
{$endif} {$endif FPC_BIG_ENDIAN}
Begin Begin
{$ifdef BigEndian} {$ifdef FPC_BIG_ENDIAN}
I := 1; I := 1;
j := length(pattern); j := length(pattern);
data := pbyte(vdata); data := pbyte(vdata);
@ -75,7 +75,7 @@ Begin
End; End;
inc(i); inc(i);
End; End;
{$endif} {$endif FPC_BIG_ENDIAN}
End; End;
Var blaat : pointer; Var blaat : pointer;
@ -211,7 +211,7 @@ Begin
BlockRead(input_f,sc,SCNHSZ); BlockRead(input_f,sc,SCNHSZ);
dosswap(@sc, '8llllllssl'); dosswap(@sc, '8llllllssl');
dh.magic := DXE_MAGIC; dh.magic := DXE_MAGIC;
dh.symbol_offset := -1; dh.symbol_offset := cardinal (-1);
dh.element_size := sc.s_size; dh.element_size := sc.s_size;
dh.nrelocs := sc.s_nreloc; dh.nrelocs := sc.s_nreloc;
Getmem(Data,sc.s_size); Getmem(Data,sc.s_size);
@ -249,7 +249,7 @@ Begin
End; End;
If (strlcomp(name, argv[2], strlen(argv[2])) = 0) Then If (strlcomp(name, argv[2], strlen(argv[2])) = 0) Then
Begin Begin
If (dh.symbol_offset <> -1) Then If (dh.symbol_offset <> cardinal (-1)) Then
Begin Begin
Writeln('Error: multiple symbols that start with ',paramstr(2),' (',name, Writeln('Error: multiple symbols that start with ',paramstr(2),' (',name,
')!'); ')!');
@ -266,7 +266,7 @@ Begin
(* plus increment for found value. *) (* plus increment for found value. *)
End; End;
If (dh.symbol_offset = -1) Then If (dh.symbol_offset = cardinal (-1)) Then
Begin Begin
Writeln('Error: symbol ',argv[2],' not found!'); Writeln('Error: symbol ',argv[2],' not found!');
Inc(Errors); Inc(Errors);
@ -312,7 +312,10 @@ Begin
End. End.
{ {
$Log$ $Log$
Revision 1.7 2004-09-15 08:35:39 michael Revision 1.8 2004-09-15 19:20:51 hajny
* dxegen compilable for any target now
Revision 1.7 2004/09/15 08:35:39 michael
+ Fix for wrong for loop variable from Tomas Hajny + Fix for wrong for loop variable from Tomas Hajny
Revision 1.6 2002/09/07 15:40:31 peter Revision 1.6 2002/09/07 15:40:31 peter
@ -325,4 +328,3 @@ End.
* Renamefest * Renamefest
} }