|
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
[Prev in Thread] | Current Thread | [Next in Thread] |