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.