libgfortran.so SONAME and powerpc64le-linux ABI changes

Thomas Koenig tkoenig@netcologne.de
Fri Oct 8 06:35:02 GMT 2021


On 07.10.21 17:33, Jakub Jelinek wrote:
>> It will also be a compatibility issue if users have code compiled on a LE
>> system with GCC 11 and earlier with KIND=16, it will not link with GCC 12.
> libgfortran ABI changed multiple times in the past already, e.g. the
> so.1 -> so.2 transition in 4.2
> so.2 -> so.3 transition in 4.3
> so.3 -> so.4 transition in 7
> so.4 -> so.5 transition in 8
> and users have coped.

Yes, and it has always been a hassle for users, and we've been
criticized for it.

This is currently a change which brings users on non-POWER-systems
(the vast majority) all pain and no gain.  If this cannot be
avoided, I would at least try to fit in as much of other improvements
as there are possible.

There's a PR for it somewhere, but I can think of three areas, none
of the small, and all require an ABI change:

a) Get PDTs right (Paul?)
b) Make file descriptors conform to the C interop version
c) Remove the run-time parsing of I/O arguments and
    replace them with a bit field.

What I mean by the last one is that

   WRITE (unit,'(A)',ADVANCE="NO")

we currently parse the "NO" at runtime, for every statement
execution.  What we could be doing instead is to have

dt_parm.0.advance = __gfortran_evaluate_yesno ("NO")

where the latter function can be simplified at compile-time.

We should strive to break the ABI as few times as possible.

Best regards

	Thomas


More information about the Gcc mailing list