+ ELF/ppc64le resource support

git-svn-id: trunk@30218 -
This commit is contained in:
Jonas Maebe 2015-03-14 18:36:32 +00:00
parent 6b9b575b74
commit 7bc66a5142
6 changed files with 24 additions and 6 deletions

View File

@ -289,6 +289,12 @@ begin
if (target_info.endian=endian_big) then
arch:=arch+'eb';
end;
if target_info.cpu=systems.cpu_powerpc64 then
begin
{ differentiate between ppc64 and ppc64le }
if target_info.endian=endian_little then
arch:=arch+'le';
end;
Replace(s,'$ARCH',arch);
if target_info.system=system_arm_darwin then
subarch:=lower(cputypestr[current_settings.cputype]);

View File

@ -22,7 +22,7 @@ interface
type
TElfMachineType = (emtnone, emtsparc, emti386, emtm68k, emtppc, emtppc64,
emtarm, emtarmeb, emtia64, emtx86_64, emtalpha,
emtmips, emtmipsel);
emtmips, emtmipsel, emtppc64le);
const
ELFMAGIC = chr($7f)+'ELF';

View File

@ -24,7 +24,11 @@
fMachineType:=emtppc;;
{$ENDIF}
{$IFDEF CPUPOWERPC64}
fMachineType:=emtppc64;;
{$ifdef FPC_BIG_ENDIAN}
fMachineType:=emtppc64;
{$else FPC_BIG_ENDIAN}
fMachineType:=emtppc64le;
{$endif FPC_BIG_ENDIAN}
{$ENDIF}
{$IFDEF CPUARM}
{$IFDEF ENDIAN_LITTLE}

View File

@ -548,7 +548,8 @@ begin
emti386 : begin fMachineTypeInt:=EM_386; fBits:=ELFCLASS32; fOrder:=ELFDATA2LSB; end;
emtm68k : begin fMachineTypeInt:=EM_68K; fBits:=ELFCLASS32; fOrder:=ELFDATA2MSB; end;
emtppc : begin fMachineTypeInt:=EM_PPC; fBits:=ELFCLASS32; fOrder:=ELFDATA2MSB; end;
emtppc64 : begin fMachineTypeInt:=EM_PPC64; fBits:=ELFCLASS64; fOrder:=ELFDATA2MSB; end;
emtppc64 : begin fMachineTypeInt:=EM_PPC64; fBits:=ELFCLASS64;fOrder:=ELFDATA2MSB; end;
emtppc64le: begin fMachineTypeInt:=EM_PPC64; fBits:=ELFCLASS64;fOrder:=ELFDATA2LSB; end;
emtarm : begin fMachineTypeInt:=EM_ARM; fBits:=ELFCLASS32; fOrder:=ELFDATA2LSB; end;
emtarmeb : begin fMachineTypeInt:=EM_ARM; fBits:=ELFCLASS32; fOrder:=ELFDATA2MSB; end;
emtalpha : begin fMachineTypeInt:=EM_ALPHA; fBits:=ELFCLASS64; fOrder:=ELFDATA2LSB; end;

View File

@ -252,6 +252,7 @@ begin
mtia64 : Result.MachineType:=emtia64;
mtmips : Result.MachineType:=emtmips;
mtmipsel : Result.MachineType:=emtmipsel;
mtppc64le : Result.MachineType:=emtppc64le;
end;
end;

View File

@ -22,7 +22,7 @@ interface
type
TMachineType = (mtnone, mti386,mtx86_64,mtppc,mtppc64,mtarm,mtarmeb,mtm68k,
mtsparc,mtalpha,mtia64,mtmips,mtmipsel,mtaarch64,
mtsparc,mtalpha,mtia64,mtmips,mtmipsel,mtaarch64,mtppc64le,
mtBigEndian,mtLittleEndian);
TMachineTypes = set of TMachineType;
@ -34,7 +34,7 @@ type
mtarm,mtarmeb:
(subarm: TSubMachineTypeArm);
mtnone, mti386,mtx86_64,mtppc,mtppc64,mtm68k,
mtsparc,mtalpha,mtia64,mtmips,mtmipsel,mtaarch64,
mtsparc,mtalpha,mtia64,mtmips,mtmipsel,mtaarch64,mtppc64le,
mtBigEndian,mtLittleEndian:
(subgen: TSubMachineTypeGeneric);
end;
@ -84,6 +84,7 @@ var
(name : 'mips'; formats : [ofElf]; alias : 'mipseb'), //mtmips
(name : 'mipsel'; formats : [ofElf]), //mtmipsel
(name : 'aarch64'; formats : [ofMachO]), //mtaarch64
(name : 'powerpc64le'; formats : [ofElf]), //mtppc64le
(name : 'bigendian'; formats : [ofExt]), //mtBigEndian
(name : 'littleendian'; formats : [ofExt]) //mtLittleEndian
);
@ -100,7 +101,8 @@ var
(name : 'elf'; ext : '.or'; machines : [mti386,mtx86_64,mtppc,
mtppc64,mtarm,mtarmeb,
mtm68k,mtsparc,mtalpha,
mtia64,mtmips,mtmipsel]),
mtia64,mtmips,mtmipsel,
mtppc64le]),
(name : 'coff'; ext : '.o'; machines : [mti386,mtx86_64,mtarm,
mtppc,mtppc64]),
(name : 'xcoff'; ext : '.o'; machines : [mtppc{,mtppc64}]),
@ -122,7 +124,11 @@ var
machine : mtppc;
submachine : (subgen: smtgen_all);
{$elseif defined(CPUPOWERPC64)}
{$ifdef FPC_BIG_ENDIAN}
machine : mtppc64;
{$else FPC_BIG_ENDIAN}
machine : mtppc64le;
{$endif FPC_BIG_ENDIAN}
submachine : (subgen: smtgen_all);
{$elseif defined(CPUARM)}
{$IFDEF ENDIAN_LITTLE}