mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 12:59:24 +02:00
+ darwin/arm support for fcl-res and fpcres
git-svn-id: trunk@13071 -
This commit is contained in:
parent
7885f6c892
commit
fe65ee6058
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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])
|
||||
);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user