Re: PATCH: allow linking with msvcrtd.dll by using -mmsvcrtd
Earnie Boyd <earnie_boyd-/[email protected]> Fri, 21 Feb 2003 16:09:43 -0500
| Newsgroups | gmane.comp.gnu.mingw.patches |
|---|---|
| Message-ID | <[email protected]> |
I've added creations of the debug import libraries but have not used your patch as is. I want to extend a large thank-you, though, for the patch. Earnie. David Fraser wrote: > Hi > > This patch allows linking with msvcrtd.dll. It builds libmsvcrtd.a and > libmoldnamed.a (which is the same as libmoldname, but links to > msvcrtd.dll instead of msvcrt.dll). > > I have also included a patch for gcc specs which links to msvcrtd > instead of msvcrt if -mmsvcrtd is specified. (This is important, > -lmsvcrtd won't work because links to msvcrt are created by -mwindows). > > I'm not sure what the best thing to do with the patch to gcc specs is as > it probably belongs to cygwin, not mingw. > > David > > > ------------------------------------------------------------------------ > > Index: Makefile.in > =================================================================== > RCS file: /cvsroot/mingw/runtime/Makefile.in,v > retrieving revision 1.18 > diff -u -r1.18 Makefile.in > --- Makefile.in 8 Feb 2003 14:59:32 -0000 1.18 > +++ Makefile.in 19 Feb 2003 11:19:19 -0000 > @@ -154,8 +154,8 @@ > pseudo-reloc.o pseudo-reloc-list.o > MOLD_OBJS = ctype_old.o string_old.o > > -LIBS = libcrtdll.a libmsvcrt.a libmsvcrt20.a libmsvcrt40.a libmingw32.a \ > - libcoldname.a libmoldname.a $(LIBM_A) libmingwthrd.a > +LIBS = libcrtdll.a libmsvcrt.a libmsvcrtd.a libmsvcrt20.a libmsvcrt40.a libmingw32.a \ > + libcoldname.a libmoldname.a libmoldnamed.a $(LIBM_A) libmingwthrd.a > > DLLS = $(THREAD_DLL_NAME) > > @@ -163,7 +163,7 @@ > Makefile.in README TODO config.guess config.sub configure configure.in \ > crt1.c crtdll.def crtmt.c crtst.c ctype_old.c dllcrt1.c dllmain.c \ > gccmain.c init.c install-sh jamfile main.c mkinstalldirs moldname-crtdll.def \ > -moldname-msvcrt.def moldname.def moldname.def.in msvcrt.def msvcrt20.def \ > +moldname-msvcrt.def moldname.def moldname.def.in msvcrt.def msvcrtd.def msvcrt20.def \ > msvcrt40.def mthr.c mthr_init.c mthr_stub.c readme.txt string_old.c \ > CRT_fp8.c CRT_fp10.c test_headers.c txtmode.c binmode.c pseudo-reloc.c \ > pseudo-reloc-list.c > @@ -256,6 +256,14 @@ > $(AR) rc $@ $(MOLD_OBJS) > $(RANLIB) $@ > > +libmoldnamed.a: $(srcdir)/moldname-msvcrt.def $(MOLD_OBJS) > + $(DLLTOOL) --as $(AS) -k -U \ > + --dllname msvcrtd.dll \ > + --def $(srcdir)/moldname-msvcrt.def \ > + --output-lib $@ > + $(AR) rc $@ $(MOLD_OBJS) > + $(RANLIB) $@ > + > # The special rules are necessary. > crt1.o dllcrt1.o: > $(CC) -c -D__CRTDLL__ -U__MSVCRT__ $(ALL_CFLAGS) $< -o $@ > @@ -399,6 +407,7 @@ > # > libcrtdll.a: $(srcdir)/crtdll.def > libmsvcrt.a: $(srcdir)/msvcrt.def > +libmsvcrtd.a: $(srcdir)/msvcrtd.def > libmsvcrt20.a: $(srcdir)/msvcrt20.def > libmsvcrt40.a: $(srcdir)/msvcrt40.def > CRT_noglob.o: $(srcdir)/CRT_noglob.c > Index: msvcrtd.def > =================================================================== > RCS file: /cvsroot/mingw/runtime/msvcrtd.def,v > retrieving revision 0.0 > diff -u /dev/null msvcrtd.def > --- /dev/null Thu Apr 11 16:25:15 2002 > +++ msvcrtd.def Fri Jun 14 17:12:54 2002 > @@ -0,0 +1,737 @@ > +; > +; msvcrt.def > +; > +; Exports from msvcrt.dll. Msvcrt.dll appears to be distributed with > +; Internet Explorer 4.0, and may be more common in the future, but > +; right now it seems like a risky choice. There are differences, although > +; they seem to be minor overall, between the exports from msvcrt and msvcrt20. > +; However, for most purposes the two sets are interchangable. > +; > +; NOTE: All exports, except for what appeared to be C++ mangled names, > +; are included. Not all functions have prototypes in the headers > +; (and some aren't functions at all). > +; > +; Contributors: > +; Created by Colin Peters <[email protected]> > +; > +; THIS SOFTWARE IS NOT COPYRIGHTED > +; > +; This source code is offered for use in the public domain. You may > +; use, modify or distribute it freely. > +; > +; This code is distributed in the hope that it will be useful but > +; WITHOUT ANY WARRANTY. ALL WARRENTIES, EXPRESS OR IMPLIED ARE HEREBY > +; DISCLAMED. This includes but is not limited to warrenties of > +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > +; > +; $Revision: 1.5 $ > +; $Author: earnie $ > +; $Date: 2002/06/14 15:12:54 $ > +; > +EXPORTS > +_CIacos > +_CIasin > +_CIatan > +_CIatan2 > +_CIcos > +_CIcosh > +_CIexp > +_CIfmod > +_CIlog > +_CIlog10 > +_CIpow > +_CIsin > +_CIsinh > +_CIsqrt > +_CItan > +_CItanh > +_CxxThrowException > +_EH_prolog > +_Getdays > +_Getmonths > +_Gettnames > +_HUGE DATA > +_Strftime > +_XcptFilter > +__CxxFrameHandler > +__CxxLongjmpUnwind > +__RTCastToVoid > +__RTDynamicCast > +__RTtypeid > +__STRINGTOLD > +__argc DATA > +__argv DATA > +__badioinfo > +__crtCompareStringA > +__crtGetLocaleInfoW > +__crtLCMapStringA > +__dllonexit > +__doserrno > +__fpecode > +__getmainargs > +__initenv DATA > +__isascii > +__iscsym > +__iscsymf > +__lc_codepage > +__lc_handle > +__lconv_init > +__mb_cur_max DATA > +__p___argc > +__p___argv > +__p___initenv > +__p___mb_cur_max > +__p___wargv > +__p___winitenv > +__p__acmdln > +__p__amblksiz > +__p__commode > +__p__daylight > +__p__dstbias > +__p__environ > +__p__fileinfo > +__p__fmode > +__p__iob > +__p__mbctype > +__p__osver > +__p__pctype > +__p__pgmptr > +__p__pwctype > +__p__timezone > +__p__tzname > +__p__wcmdln > +__p__wenviron > +__p__winmajor > +__p__winminor > +__p__winver > +__p__wpgmptr > +__pioinfo > +__pxcptinfoptrs > +__set_app_type > +__setlc_active > +__setusermatherr > +__threadhandle > +__threadid > +__toascii > +__unDName > +__unguarded_readlc_active > +__wargv DATA > +__wgetmainargs > +__winitenv DATA > +_abnormal_termination > +_access > +_acmdln DATA > +_adj_fdiv_m16i > +_adj_fdiv_m32 > +_adj_fdiv_m32i > +_adj_fdiv_m64 > +_adj_fdiv_r > +_adj_fdivr_m16i > +_adj_fdivr_m32 > +_adj_fdivr_m32i > +_adj_fdivr_m64 > +_adj_fpatan > +_adj_fprem > +_adj_fprem1 > +_adj_fptan > +_adjust_fdiv DATA > +_aexit_rtn DATA > +_amsg_exit > +_assert > +_atodbl > +_atoi64 > +_atoldbl > +_beep > +_beginthread > +_beginthreadex > +_c_exit > +_cabs > +_callnewh > +_cexit > +_cgets > +_chdir > +_chdrive > +_chgsign > +_chmod > +_chsize > +_clearfp > +_close > +_commit > +_commode DATA > +_control87 > +_controlfp > +_copysign > +_cprintf > +_cputs > +_creat > +_cscanf > +_ctype DATA > +_cwait > +_daylight DATA > +_dstbias > +_dup > +_dup2 > +_ecvt > +_endthread > +_endthreadex > +_environ DATA > +_eof > +_errno > +_except_handler2 > +_except_handler3 > +_execl > +_execle > +_execlp > +_execlpe > +_execv > +_execve > +_execvp > +_execvpe > +_exit > +_expand > +_fcloseall > +_fcvt > +_fdopen > +_fgetchar > +_fgetwchar > +_filbuf > +_fileinfo DATA > +_filelength > +_filelengthi64 > +_fileno > +_findclose > +_findfirst > +_findfirsti64 > +_findnext > +_findnexti64 > +_finite > +_flsbuf > +_flushall > +_fmode DATA > +_fpclass > +_fpieee_flt > +_fpreset DATA > +_fputchar > +_fputwchar > +_fsopen > +_fstat > +_fstati64 > +_ftime > +_ftol > +_fullpath > +_futime > +_gcvt > +_get_osfhandle > +_get_sbh_threshold > +_getch > +_getche > +_getcwd > +_getdcwd > +_getdiskfree > +_getdllprocaddr > +_getdrive > +_getdrives > +_getmaxstdio > +_getmbcp > +_getpid > +_getsystime > +_getw > +_getws > +_global_unwind2 > +_heapadd > +_heapchk > +_heapmin > +_heapset > +_heapused > +_heapwalk > +_hypot > +_i64toa > +_i64tow > +_initterm > +_inp > +_inpd > +_inpw > +_iob DATA > +_isatty > +_isctype > +_ismbbalnum > +_ismbbalpha > +_ismbbgraph > +_ismbbkalnum > +_ismbbkana > +_ismbbkprint > +_ismbbkpunct > +_ismbblead > +_ismbbprint > +_ismbbpunct > +_ismbbtrail > +_ismbcalnum > +_ismbcalpha > +_ismbcdigit > +_ismbcgraph > +_ismbchira > +_ismbckata > +_ismbcl0 > +_ismbcl1 > +_ismbcl2 > +_ismbclegal > +_ismbclower > +_ismbcprint > +_ismbcpunct > +_ismbcspace > +_ismbcsymbol > +_ismbcupper > +_ismbslead > +_ismbstrail > +_isnan > +_itoa > +_itow > +_j0 > +_j1 > +_jn > +_kbhit > +_lfind > +_loaddll > +_local_unwind2 > +_lock > +_locking > +_logb > +_longjmpex > +_lrotl > +_lrotr > +_lsearch > +_lseek > +_lseeki64 > +_ltoa > +_ltow > +_makepath > +_mbbtombc > +_mbbtype > +_mbccpy > +_mbcjistojms > +_mbcjmstojis > +_mbclen > +_mbctohira > +_mbctokata > +_mbctolower > +_mbctombb > +_mbctoupper > +_mbctype DATA > +_mbsbtype > +_mbscat > +_mbschr > +_mbscmp > +_mbscoll > +_mbscpy > +_mbscspn > +_mbsdec > +_mbsdup > +_mbsicmp > +_mbsicoll > +_mbsinc > +_mbslen > +_mbslwr > +_mbsnbcat > +_mbsnbcmp > +_mbsnbcnt > +_mbsnbcoll > +_mbsnbcpy > +_mbsnbicmp > +_mbsnbicoll > +_mbsnbset > +_mbsncat > +_mbsnccnt > +_mbsncmp > +_mbsncoll > +_mbsncpy > +_mbsnextc > +_mbsnicmp > +_mbsnicoll > +_mbsninc > +_mbsnset > +_mbspbrk > +_mbsrchr > +_mbsrev > +_mbsset > +_mbsspn > +_mbsspnp > +_mbsstr > +_mbstok > +_mbstrlen > +_mbsupr > +_memccpy > +_memicmp > +_mkdir > +_mktemp > +_msize > +_nextafter > +_onexit DATA > +_open > +_open_osfhandle > +_osver DATA > +_outp > +_outpd > +_outpw > +_pclose > +_pctype DATA > +_pgmptr DATA > +_pipe > +_popen > +_purecall > +_putch > +_putenv > +_putw > +_putws > +_pwctype DATA > +_read > +_rmdir > +_rmtmp > +_rotl > +_rotr > +_safe_fdiv > +_safe_fdivr > +_safe_fprem > +_safe_fprem1 > +_scalb > +_searchenv > +_seh_longjmp_unwind > +_set_error_mode > +_set_sbh_threshold > +_seterrormode > +_setjmp > +_setjmp3 > +_setmaxstdio > +_setmbcp > +_setmode > +_setsystime > +_sleep > +_snprintf > +_snwprintf > +_sopen > +_spawnl > +_spawnle > +_spawnlp > +_spawnlpe > +_spawnv > +_spawnve > +_spawnvp > +_spawnvpe > +_splitpath > +_stat > +_stati64 > +_statusfp > +_strcmpi > +_strdate > +_strdup > +_strerror > +_stricmp > +_stricoll > +_strlwr > +_strncoll > +_strnicmp > +_strnicoll > +_strnset > +_strrev > +_strset > +_strtime > +_strupr > +_swab > +_sys_errlist DATA > +_sys_nerr DATA > +_tell > +_telli64 > +_tempnam > +_timezone DATA > +_tolower > +_toupper > +_tzname DATA > +_tzset > +_ui64toa > +_ui64tow > +_ultoa > +_ultow > +_umask > +_ungetch > +_unlink > +_unloaddll > +_unlock > +_utime > +_vsnprintf > +_vsnwprintf > +_waccess > +_wasctime > +_wchdir > +_wchmod > +_wcmdln DATA > +_wcreat > +_wcsdup > +_wcsicmp > +_wcsicoll > +_wcslwr > +_wcsncoll > +_wcsnicmp > +_wcsnicoll > +_wcsnset > +_wcsrev > +_wcsset > +_wcsupr > +_wctime > +_wenviron DATA > +_wexecl > +_wexecle > +_wexeclp > +_wexeclpe > +_wexecv > +_wexecve > +_wexecvp > +_wexecvpe > +_wfdopen > +_wfindfirst > +_wfindfirsti64 > +_wfindnext > +_wfindnexti64 > +_wfopen > +_wfreopen > +_wfsopen > +_wfullpath > +_wgetcwd > +_wgetdcwd > +_wgetenv > +_winmajor DATA > +_winminor DATA > +_winver DATA > +_wmakepath > +_wmkdir > +_wmktemp > +_wopen > +_wperror > +_wpgmptr DATA > +_wpopen > +_wputenv > +_wremove > +_wrename > +_write > +_wrmdir > +_wsearchenv > +_wsetlocale > +_wsopen > +_wspawnl > +_wspawnle > +_wspawnlp > +_wspawnlpe > +_wspawnv > +_wspawnve > +_wspawnvp > +_wspawnvpe > +_wsplitpath > +_wstat > +_wstati64 > +_wstrdate > +_wstrtime > +_wsystem > +_wtempnam > +_wtmpnam > +_wtoi > +_wtoi64 > +_wtol > +_wunlink > +_wutime > +_y0 > +_y1 > +_yn > +abort > +abs > +acos > +asctime > +asin > +atan > +atan2 > +atexit DATA > +atof > +atoi > +atol > +bsearch > +calloc > +ceil > +clearerr > +clock > +cos > +cosh > +ctime > +difftime > +div > +exit > +exp > +fabs > +fclose > +feof > +ferror > +fflush > +fgetc > +fgetpos > +fgets > +fgetwc > +fgetws > +floor > +fmod > +fopen > +fprintf > +fputc > +fputs > +fputwc > +fputws > +fread > +free > +freopen > +frexp > +fscanf > +fseek > +fsetpos > +ftell > +fwprintf > +fwrite > +fwscanf > +getc > +getchar > +getenv > +gets > +getwc > +getwchar > +gmtime > +is_wctype > +isalnum > +isalpha > +iscntrl > +isdigit > +isgraph > +isleadbyte > +islower > +isprint > +ispunct > +isspace > +isupper > +iswalnum > +iswalpha > +iswascii > +iswcntrl > +iswctype > +iswdigit > +iswgraph > +iswlower > +iswprint > +iswpunct > +iswspace > +iswupper > +iswxdigit > +isxdigit > +labs > +ldexp > +ldiv > +localeconv > +localtime > +log > +log10 > +longjmp > +malloc > +mblen > +mbstowcs > +mbtowc > +memchr > +memcmp > +memcpy > +memmove > +memset > +mktime > +modf > +perror > +pow > +printf > +putc > +putchar > +puts > +putwc > +putwchar > +qsort > +raise > +rand > +realloc > +remove > +rename > +rewind > +scanf > +setbuf > +setlocale > +setvbuf > +signal > +sin > +sinh > +sprintf > +sqrt > +srand > +sscanf > +strcat > +strchr > +strcmp > +strcoll > +strcpy > +strcspn > +strerror > +strftime > +strlen > +strncat > +strncmp > +strncpy > +strpbrk > +strrchr > +strspn > +strstr > +strtod > +strtok > +strtol > +strtoul > +strxfrm > +swprintf > +swscanf > +system > +tan > +tanh > +time > +tmpfile > +tmpnam > +tolower > +toupper > +towlower > +towupper > +ungetc > +ungetwc > +vfprintf > +vfwprintf > +vprintf > +vsprintf > +vswprintf > +vwprintf > +wcscat > +wcschr > +wcscmp > +wcscoll > +wcscpy > +wcscspn > +wcsftime > +wcslen > +wcsncat > +wcsncmp > +wcsncpy > +wcspbrk > +wcsrchr > +wcsspn > +wcsstr > +wcstod > +wcstok > +wcstol > +wcstombs > +wcstoul > +wcsxfrm > +wctomb > +wprintf > +wscanf > + > > > ------------------------------------------------------------------------ > > diff -u /usr/local/src/cross-compile/gcc-i386-mingw32msvc/gcc/specs /usr/local/cross-tools/lib/gcc-lib/i386-mingw32msvc/3.2/specs > --- /usr/local/src/cross-compile/gcc-i386-mingw32msvc/gcc/specs Fri Sep 27 15:24:13 2002 > +++ /usr/local/cross-tools/lib/gcc-lib/i386-mingw32msvc/3.2/specs Wed Feb 19 12:38:06 2003 > @@ -48,7 +48,7 @@ > %{pg:-lgmon} %{mwindows:-lgdi32 -lcomdlg32} -luser32 -lkernel32 -ladvapi32 -lshell32 > > *libgcc: > -%{mthreads:-lmingwthrd} -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt > +%{mthreads:-lmingwthrd} -lmingw32 -lgcc %{mmsvcrtd: -lmoldnamed} %{!mmsvcrtd: -lmoldname} -lmingwex %{mmsvcrtd: -lmsvcrtd} %{!mmsvcrtd: -lmsvcrt} > > *startfile: > %{shared|mdll:dllcrt2%O%s} %{!shared:%{!mdll:crt2%O%s}} %{pg:gcrt2%O%s} %{!fno-exceptions:crtbegin%O%s} > ------------------------------------------------------- This SF.net email is sponsored by: SlickEdit Inc. Develop an edge. The most comprehensive and flexible code editor you can use. Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial. www.slickedit.com/sourceforge