diff options
| author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-05-01 12:47:01 +0000 |
|---|---|---|
| committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-05-01 12:47:01 +0000 |
| commit | 4f0780c2b12952eb621e8fa7a133808b743318c0 (patch) | |
| tree | 20dd7564103ebe7a7a1ef40b1937d0685a73b480 /packages/fcl-res | |
| parent | 5917d5ff6e6b9d859332030d139fa9068e52a1c0 (diff) | |
| download | fpc-4f0780c2b12952eb621e8fa7a133808b743318c0.tar.gz | |
+ darwin/arm support for fcl-res and fpcres
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@13071 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-res')
| -rw-r--r-- | packages/fcl-res/src/machoconsts.pp | 5 | ||||
| -rw-r--r-- | packages/fcl-res/src/machoreader.pp | 3 | ||||
| -rw-r--r-- | packages/fcl-res/src/machotypes.pp | 2 | ||||
| -rw-r--r-- | packages/fcl-res/src/machowriter.pp | 11 |
4 files changed, 18 insertions, 3 deletions
diff --git a/packages/fcl-res/src/machoconsts.pp b/packages/fcl-res/src/machoconsts.pp index 67afb2d9e3..37ad55c418 100644 --- a/packages/fcl-res/src/machoconsts.pp +++ b/packages/fcl-res/src/machoconsts.pp @@ -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 diff --git a/packages/fcl-res/src/machoreader.pp b/packages/fcl-res/src/machoreader.pp index 6fe09fa608..17f28e33be 100644 --- a/packages/fcl-res/src/machoreader.pp +++ b/packages/fcl-res/src/machoreader.pp @@ -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; diff --git a/packages/fcl-res/src/machotypes.pp b/packages/fcl-res/src/machotypes.pp index c1b179db62..ac6ec7dcba 100644 --- a/packages/fcl-res/src/machotypes.pp +++ b/packages/fcl-res/src/machotypes.pp @@ -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 diff --git a/packages/fcl-res/src/machowriter.pp b/packages/fcl-res/src/machowriter.pp index 029c6ad81d..490f8c25f2 100644 --- a/packages/fcl-res/src/machowriter.pp +++ b/packages/fcl-res/src/machowriter.pp @@ -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; |
