gm2
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: API change between GCC 12.3.0 and 13.2.0?


From: Michael Riedl
Subject: Re: API change between GCC 12.3.0 and 13.2.0?
Date: Sun, 17 Dec 2023 23:58:59 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:102.0) Gecko/20100101 Thunderbird/102.11.0

Philip,

I have the same issue - all my binding (in may case mostly to Fortran (e.g interfaces to Lapack or BLAS) where no longer accepted and I had the same pain as you. Especially in my test code section, the number of interfaces is quite high (more than 20) and it took me quite a while to get that fixed.

Hence - as a discussion point for all - what are the benefits of adding an "EXPORT QUALIFIED" statements to an interface to another language which never prefixed ("C") or, in case of Fortran Modules, in a different way ? I want to be convinced that this has some benefit :-)

Gruß

Michael

Am 12.12.23 um 22:22 schrieb Philip Munts:
It appears to me that in GCC 12.3.0, externals declared in a C binding module (DEFINITION MODULE FOR "C") are not mangled, but in GCC 13.2.0 they *are* mangled, prefixing the module name.

Given:

DEFINITION MODULE FOR "C" Foo;

  PROCEDURE Bar;

END FOO;

Linking a program that calls Foo.Bar in 12.3.0 requires the external C function to be named Bar while 13.2.0 requires it to be Foo_Bar.

This is a severe pain in the neck, as I have a substantial number of such C binding modules that all have to be rewritten for GCC 13, adding EXPORT QUALIFIED for every C external.  I opine that external C names should never be mangled...

Phil




reply via email to

[Prev in Thread] Current Thread [Next in Thread]