From 5feeecfdeaac2780a3c838751d28264ee1482cb2 Mon Sep 17 00:00:00 2001 From: ruki Date: Sat, 18 Jul 2026 18:24:16 +0800 Subject: fix ppc and mips for bin2obj --- tests/modules/binutils/test.lua | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'tests/modules/binutils/test.lua') diff --git a/tests/modules/binutils/test.lua b/tests/modules/binutils/test.lua index 1e2c0a03e..d1e13d75d 100644 --- a/tests/modules/binutils/test.lua +++ b/tests/modules/binutils/test.lua @@ -160,16 +160,39 @@ function test_bin2elf(t) t:are_equal(x86_64.flags, 0) -- mips is big-endian, mipsel is little-endian + -- 32-bit variants use the o32 ABI + CPIC (e_flags == 0x1004) local mips = _gen("mips") t:are_equal(mips.encode, 2) t:are_equal(mips.machine, 0x08) + t:are_equal(mips.flags, 0x1004) local mipsel = _gen("mipsel") t:are_equal(mipsel.encode, 1) t:are_equal(mipsel.machine, 0x08) - - -- ppc64 is big-endian + t:are_equal(mipsel.flags, 0x1004) + + -- 64-bit variants use the n64 ABI (implied by ELFCLASS64) + CPIC (e_flags == 0x4) + local mips64 = _gen("mips64") + t:are_equal(mips64.class, 2) + t:are_equal(mips64.encode, 2) + t:are_equal(mips64.machine, 0x08) + t:are_equal(mips64.flags, 0x4) + local mips64el = _gen("mips64el") + t:are_equal(mips64el.class, 2) + t:are_equal(mips64el.encode, 1) + t:are_equal(mips64el.machine, 0x08) + t:are_equal(mips64el.flags, 0x4) + + -- ppc64 is big-endian and uses the ELFv1 ABI (e_flags low bits == 1) local ppc64 = _gen("ppc64") t:are_equal(ppc64.encode, 2) + t:are_equal(ppc64.machine, 0x15) + t:are_equal(ppc64.flags, 0x1) + + -- ppc64le is little-endian and uses the OpenPOWER ELFv2 ABI (e_flags low bits == 2) + local ppc64le = _gen("ppc64le") + t:are_equal(ppc64le.encode, 1) + t:are_equal(ppc64le.machine, 0x15) + t:are_equal(ppc64le.flags, 0x2) os.tryrm(tempdir) end -- cgit v1.3.1