On Mon, 2022-11-14 at 18:01:26 +0800, 张丹丹 wrote: > > I think the part that was missing, which was asked on the list, and a > > rather important part of this! :) Is the ABI this conforms to. > > > > I'm attaching a patch that updates the test suite so that it passes, > > and adds what I think (but I don't know as I didn't check deeper) might > > change the ABI for built objects, which ties into the ABI this > > architecture is intended to conform to. > > > > I guess the main question is whether objects with these different > > EF_LOONGARCH_* flags can be mixed when linking or they are ABI > > incompatible, as the code in the patch now assume. > > 1、The value of ELF_FLAGS_LOONGARCH_* flags (you provided) conform to the > loongarch ABI standard. > 2、After confirmation, the following three ELF_FLAG_LOONGARCH_* can not be > mixed when linking,Because of different ABIs do not allow linking, otherwise > an > error will occur. As follows, > ELF_FLAG_LOONGARCH_SOFT_FLOAT => 0x00000001, // soft float > ELF_FLAG_LOONGARCH_SINGLE_FLOAT => 0x00000002, // single float > ELF_FLAG_LOONGARCH_DOUBLE_FLOAT => 0x00000003, // double float
I assume anything not matching exactly values within OBJABI_MASK would not be linkable either. If I'm reading the binutils source correctly it seems to confirm this, although the comment there reads to be negated: /* Disallow linking different ABIs. */ /* Only check relocation version. The obj_v0 is compatible with obj_v1. */ So shouldn't the latter be s/compatible/incompatible/? Also is the port going to be ABI v1? Thanks, Guillem