From: Kai T. <kti...@go...> - 2012-01-09 16:50:04
|
2012/1/9 Earnie Boyd <ea...@us...>: > On Mon, Jan 9, 2012 at 8:57 AM, Chris Sutcliffe <ir0...@gm...> wrote: >> On 2 January 2012 10:00, Chris Sutcliffe wrote: >>> I've been working with Yongwei Wu to incorporate a patch the includes >>> MBCS support into putc / putchar (as apparently the MS implementation >>> is broken). To that end, Yongwei added new implementations of putc / >>> putchar into mingwex. The issue I've run in to is that with the >>> latest GCC (and possibly older releases as well), the default link >>> order picks up the mingwex implementation of putc / putchar first, >>> before the the msvcrt implementation which causes issues (link >>> failures) for the 'general' case (where the user wants to use the MS >>> supplied putc / putchar): >>> >>> -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 >>> -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_eh -lgcc -lmoldname >>> -lmingwex -lmsvcrt c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtend.o >>> >>> Shouldn't -lmingwex be after -lmsvcrt? Yongwei also raises a good >>> point, in that -lkernel32 should probably be added to the end of the >>> default link list as well: >>> >>> The reason why the new putc makes libgcc_eh use additional functions >>> from kernel32 is that I used static __thread variables. By default, >>> libgcc_eh is linked before libmingwex, then libkernel32 satisfies the >>> initial link need of libgcc_eh; libgcc_eh appears again to provide the >>> additional needed functions for using __thread in libmingex, but no >>> libkernel32 again to provide the missing functions. >>> >>> Putting kernel32 at the end of auto-linked libraries solves such >>> issues and is very reliable: import libraries do not introduce more >>> dependencies (while libraries like libgcc_eh and libmingwex do). >>> >>> Thoughts? >> >> Ping? >> > > If Cesar doesn't have a comment, you might want to ping Kai about it. > IIRC he is no longer a member of this list. > > -- > Earnie I am still monitoring this list, but rarely reply. To change order of libmsvcrt and libmingwex would be a flaw, as libmingwex uses functions from libmsvcrt. Therefore the order has not to be changed for gcc. If you want to get msvcrt's symbols before mingwex, then add -lmsvcrt as user-option. Regards, Kai |