+ darwin/arm support for fcl-res and fpcres

git-svn-id: trunk@13071 -
This commit is contained in:
Jonas Maebe 2009-05-01 12:47:01 +00:00
parent 7885f6c892
commit fe65ee6058
6 changed files with 21 additions and 5 deletions

View File

@ -47,7 +47,7 @@ const
CPU_TYPE_ANY = -1;
CPU_TYPE_I386 = 7;
CPU_TYPE_X86_64 = CPU_TYPE_I386 or CPU_ARCH_ABI64;
// CPU_TYPE_ARM = 12;
CPU_TYPE_ARM = 12;
CPU_TYPE_POWERPC = 18;
CPU_TYPE_POWERPC64 = CPU_TYPE_POWERPC or CPU_ARCH_ABI64;
@ -55,6 +55,7 @@ const
CPU_SUBTYPE_I386_ALL = 3;
CPU_SUBTYPE_X86_64_ALL = CPU_SUBTYPE_I386_ALL;
CPU_SUBTYPE_POWERPC_ALL = 0;
CPU_SUBTYPE_ARM_ALL = 0;
//Mach-O object types
MH_OBJECT = $1; // relocatable object file
@ -197,6 +198,8 @@ const
//relocation types - x86_64
X86_64_RELOC_UNSIGNED = 0; // for absolute addresses
// relocation types - ARM
ARM_RELOC_VANILLA = 0; // generic relocation
implementation

View File

@ -218,7 +218,8 @@ begin
CPU_TYPE_I386 : fMachineType:=mmti386;
CPU_TYPE_X86_64 : fMachineType:=mmtx86_64;
CPU_TYPE_POWERPC : fMachineType:=mmtpowerpc;
CPU_TYPE_POWERPC64 : fMachineType:=mmtpowerpc64
CPU_TYPE_POWERPC64 : fMachineType:=mmtpowerpc64;
CPU_TYPE_ARM : fMachineType:=mmtarm
else exit;
end;

View File

@ -20,7 +20,7 @@ unit machotypes;
interface
type
TMachOMachineType = (mmtpowerpc, mmtpowerpc64, mmti386, mmtx86_64);
TMachOMachineType = (mmtpowerpc, mmtpowerpc64, mmti386, mmtx86_64, mmtarm);
TSegSectName = array[0..15] of char;
type

View File

@ -282,6 +282,11 @@ begin
fRelocType:=X86_64_RELOC_UNSIGNED;
fRelocSize:=3;
end;
mmtarm : begin
fEndianess:=MACH_LITTLE_ENDIAN;
fRelocType:=ARM_RELOC_VANILLA;
fRelocSize:=2;
end;
end;
fOppositeEndianess:=aOppositeEndianess;
end;
@ -487,6 +492,11 @@ begin
fHeader.cputype:=CPU_TYPE_X86_64;
fHeader.cpusubtype:=CPU_SUBTYPE_X86_64_ALL;
end;
mmtarm : begin
fHeader.magic:=MH_MAGIC;
fHeader.cputype:=CPU_TYPE_ARM;
fHeader.cpusubtype:=CPU_SUBTYPE_ARM_ALL;
end;
end;
fHeader.filetype:=MH_OBJECT;
fHeader.ncmds:=3;
@ -568,6 +578,7 @@ begin
mmtpowerpc64 : begin fBits:=MACH_64BIT; fEndianess:=MACH_BIG_ENDIAN; end;
mmti386 : begin fBits:=MACH_32BIT; fEndianess:=MACH_LITTLE_ENDIAN; end;
mmtx86_64 : begin fBits:=MACH_64BIT; fEndianess:=MACH_LITTLE_ENDIAN; end;
mmtarm : begin fBits:=MACH_32BIT; fEndianess:=MACH_LITTLE_ENDIAN; end;
end;
fMachineType:=aMachineType;
fOppositeEndianess:=fNativeEndianess<>fEndianess;

View File

@ -263,6 +263,7 @@ begin
mtx86_64 : Result.MachineType:=mmtx86_64;
mtppc : Result.MachineType:=mmtpowerpc;
mtppc64 : Result.MachineType:=mmtpowerpc64;
mtarm : Result.MachineType:=mmtarm;
end;
end;

View File

@ -58,7 +58,7 @@ var
(name : 'x86_64'; formats : [ofElf, ofCoff, ofMachO]), //mtx86_64
(name : 'powerpc'; formats : [ofElf, ofMachO]), //mtppc
(name : 'powerpc64'; formats : [ofElf, ofMachO]), //mtppc64
(name : 'arm'; formats : [ofElf, ofCoff]), //mtarm
(name : 'arm'; formats : [ofElf, ofCoff, ofMachO]), //mtarm
(name : 'armeb'; formats : [ofElf]), //mtarmeb
(name : 'm68k'; formats : [ofElf]), //mtm68k
(name : 'sparc'; formats : [ofElf]), //mtsparc
@ -78,7 +78,7 @@ var
mtia64]),
(name : 'coff'; ext : '.o'; machines : [mti386,mtx86_64,mtarm]),
(name : 'mach-o'; ext : '.or'; machines : [mti386,mtx86_64,mtppc,
mtppc64]),
mtppc64,mtarm]),
(name : 'external'; ext : '.fpcres'; machines : [mtBigEndian,mtLittleEndian])
);