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