[PATCH] bfd: Define func prototype for old mingw
Torbjorn SVENSSON
torbjorn.svensson@foss.st.com
Mon Aug 15 10:19:34 GMT 2022
On 2022-08-15 12:01, Luis Machado wrote:
> Just some nits...
> On 8/15/22 09:49, Torbjörn SVENSSON wrote:
>> In commit 68e80d96a84282d547f3b3c1234c99009521630c, the usage of
>> ___lc_codepage_func was introduced to determine the current encoding.
>> Prior to version 9.0 of MinGW-w64, the function prototype for
>> ___lc_codepage_func was missing and caused
>> error: implicit declaration of function ‘___lc_codepage_func’
>> when building. This changeset adds a conditonal definition of
>> ___lc_codepage_func to allow a sucessful build with MinGW-w64.
>
> sucessful -> successful
>>
>> Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
>> ---
>> bfd/bfdio.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/bfd/bfdio.c b/bfd/bfdio.c
>> index a7c7d5bd363..59f79203b88 100644
>> --- a/bfd/bfdio.c
>> +++ b/bfd/bfdio.c
>> @@ -29,6 +29,11 @@
>> #if defined (_WIN32)
>> #include <windows.h>
>> #include <locale.h>
>> +
>> +#if defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR < 9
>> +/* This prototype was added to locale.h in version 9.0 of
>> MinaGW-w64. */
>
> MinaGW-w64 -> MinGW-w64
>> +_CRTIMP unsigned int __cdecl ___lc_codepage_func(void);
>
> I don't see any occurrences of CRTIMP in binutils-gdb. Should we not use
> that?
I'm not entirely sure if it's needed or not, but it's part of the
official mingw definition at
https://github.com/mirror/mingw-w64/blob/v9.0.0/mingw-w64-headers/crt/locale.h.
From what I can tell, the _CRTIMP will expand to __declspec(dllimport).
When the prototype is defined with _CRTIMP, then the call will be made
using the symbol __imp____lc_codepage_func instead of a direct function
call. I'm guessing this is something similar to the .got table in ELF files.
Are there other function prototypes added in binutils code that is
implemented in mingw?
>
>> +#endif
>> #endif
>> #ifndef S_IXUSR
>
More information about the Binutils
mailing list