Le 08/01/2025 à 11:42, Jakub Jelinek a écrit :

The full list of changes with the posted patches is
(first a.mod, then b.mod, 14 -> 15) below.
I have no idea what adds those __copy_* elts etc. and whether they could be
forced to be in the middle rather than at the end and what is an ABI break
and what is not.

I think the numbers starting symbol definitions don't matter, the numbers represent pointers, so what matters is the structure, not the value; that is the number can change, and in that case it should be changed everywhere it is used.

For the same reason, additional symbols added in the module file in the middle of the list of symbol definitions don't matter. Symbols definitions are basically unordered in the module file.

One value that is important, I think, is intmod_sym_id, it is used to map from module id to intrinsic id (which is independent of the module), see gfc_isym_id_by_intmod. intmod_sym_id value is determined by the order in the .def file. The value comes in the module file at the end of each symbol definition (see module.cc's mio_symbol), so according to your patches, they seem to be the same between 14 and 15 with your changes.

With that in mind, I don't see any module file incompatibility remaining in the differences you posted.


Reply via email to