os/linux/elf: fix arch compat check on ppc

This commit is contained in:
Bo Anderson 2024-10-01 05:32:58 +01:00
parent f5a12a3860
commit c76c902dbc
No known key found for this signature in database

View File

@ -31,6 +31,8 @@ module ELFShim
private_constant :ARCHITECTURE_I386 private_constant :ARCHITECTURE_I386
ARCHITECTURE_POWERPC = 0x14 ARCHITECTURE_POWERPC = 0x14
private_constant :ARCHITECTURE_POWERPC private_constant :ARCHITECTURE_POWERPC
ARCHITECTURE_POWERPC64 = 0x15
private_constant :ARCHITECTURE_POWERPC64
ARCHITECTURE_ARM = 0x28 ARCHITECTURE_ARM = 0x28
private_constant :ARCHITECTURE_ARM private_constant :ARCHITECTURE_ARM
ARCHITECTURE_X86_64 = 0x3E ARCHITECTURE_X86_64 = 0x3E
@ -61,7 +63,8 @@ module ELFShim
@arch ||= case read_uint16(ARCHITECTURE_OFFSET) @arch ||= case read_uint16(ARCHITECTURE_OFFSET)
when ARCHITECTURE_I386 then :i386 when ARCHITECTURE_I386 then :i386
when ARCHITECTURE_X86_64 then :x86_64 when ARCHITECTURE_X86_64 then :x86_64
when ARCHITECTURE_POWERPC then :powerpc when ARCHITECTURE_POWERPC then :ppc32
when ARCHITECTURE_POWERPC64 then :ppc64
when ARCHITECTURE_ARM then :arm when ARCHITECTURE_ARM then :arm
when ARCHITECTURE_AARCH64 then :arm64 when ARCHITECTURE_AARCH64 then :arm64
else :dunno else :dunno
@ -71,6 +74,9 @@ module ELFShim
def arch_compatible?(wanted_arch) def arch_compatible?(wanted_arch)
return true unless elf? return true unless elf?
# Treat ppc64le and ppc64 the same
wanted_arch = :ppc64 if wanted_arch == :ppc64le
wanted_arch == arch wanted_arch == arch
end end