<div dir="ltr">oh, "then FPC links it with any error." should be "then FPC links it without any error."<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 18, 2016 at 2:31 AM, Benjamin Rosseaux <span dir="ltr"><<a href="mailto:benjamin@rosseaux.de" target="_blank">benjamin@rosseaux.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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-<wbr>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_<wbr>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_<wbr>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" target="_blank">https://gcc.gnu.org/ml/gcc-<wbr>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" target="_blank">stackoverflow.com/<wbr>questions/28012075/what-does-<wbr>refptr-mean-in-a-mingw64-def-<wbr>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>
</blockquote></div><br></div>