<div dir="ltr"><div>Hello,</div><div><br></div><div>i've noticed a weakness of the FPC internal linker at static-linking .a libraries on the Win64 target, which're generated by GCC newer than 4.8.1, due to the new refptr.* and .refptr.* symbols-can-be-multiple-defined stuff (inside one single .a library file), which was introduced in newer GCC versions. </div><div><br></div><div>For example, when I do to want link SDL2 statically to my FPC code, where the libSDL2.a as Win64 StaticLink Build was generated with GCC 4.9.1 or newer, then FPC abort with a error and outputs:</div><div><br></div><div>> Free Pascal Compiler version 3.1.1 [2016/08/22] for x86_64</div><div>> Copyright (c) 1993-2016 by Florian Klaempfl and others</div><div>> Target OS: Win64 for x64</div><div>> Compiling racegame.dpr</div><div>> Linking racegame_x86_64.exe</div><div>> Error: Multiple defined symbol .refptr.SDL_free_REAL</div><div>> Error: Multiple defined symbol .refptr.SDL_XInputGetCapabilities</div><div>> Error: Multiple defined symbol .refptr.SDL_Appname</div><div>> Error: Multiple defined symbol .refptr.SDL_Instance</div><div>> Error: Multiple defined symbol .refptr.SYS_Joystick</div><div>> Error: Multiple defined symbol .refptr.SDL_XInputSetState</div><div>> Error: Multiple defined symbol .refptr.SDL_HelperWindow</div><div>> Error: Multiple defined symbol .refptr.GUID_XAxis</div><div>> Error: Multiple defined symbol .refptr.GUID_YAxis</div><div>> Error: Multiple defined symbol .refptr.GUID_ZAxis</div><div>> Error: Multiple defined symbol .refptr.GUID_RxAxis</div><div>> Error: Multiple defined symbol .refptr.GUID_RyAxis</div><div>> Error: Multiple defined symbol .refptr.GUID_RzAxis</div><div>> Error: Multiple defined symbol .refptr.IID_IDirectInput8W</div><div>> Error: Multiple defined symbol .refptr.CLSID_DirectInput8</div><div>> Error: Multiple defined symbol .refptr.SDL_hapticlist</div><div>> Error: Multiple defined symbol .refptr.IID_IDirectInputDevice8W</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Error: Multiple defined symbol .refptr.SDL_expand_byte</div><div>> Fatal: There were 25 errors compiling module, stopping</div><div>> Fatal: Compilation aborted</div><div><br></div><div>But for example, when I do to want the same, but where the libSDL2.a as Win64 StaticLink Build was generated this time with GCC 4.8.1 or older, then FPC links it with any error.</div><div><br></div><div>So I did some research on this issue and found <a href="https://gcc.gnu.org/ml/gcc-patches/2013-03/msg00858.html">https://gcc.gnu.org/ml/gcc-patches/2013-03/msg00858.html</a> in the gcc-patches mailing list and tp://<a href="http://stackoverflow.com/questions/28012075/what-does-refptr-mean-in-a-mingw64-def-file">stackoverflow.com/questions/28012075/what-does-refptr-mean-in-a-mingw64-def-file</a> , so I've looked at ogbase.pas of FreePascal, and try to write a beginning patch, which I've attached it to this mail. So someone, who are more inside the FreePascal source code structure, should finish this patch.  </div><div><br></div><div>Regards,</div><div>Benjamin 'BeRo' Rosseaux</div><div><br></div><div><br></div><div><br></div></div>