From e656a7d92d56bd05c8079369f12c38ac3063a95d Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Thu, 17 Sep 2020 15:59:02 -0400 Subject: [PATCH] Link with exchndl, instead of dynamically loading it. It caused problems with crash reports not being made if the current working directory gets changed. Not even recommended anymore per the drmingw readme https://github.com/jrfonseca/drmingw#exchndl --- libs/drmingw/include/exchndl.h | 39 ++++++++++++++++++++++++++++ libs/drmingw/lib/win32/libexchndl.a | Bin 0 -> 3210 bytes libs/drmingw/lib/win32/libmgwhelp.a | Bin 0 -> 85370 bytes src/sdl/i_main.c | 6 ++++- src/win32/Makefile.cfg | 6 +++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 libs/drmingw/include/exchndl.h create mode 100644 libs/drmingw/lib/win32/libexchndl.a create mode 100644 libs/drmingw/lib/win32/libmgwhelp.a diff --git a/libs/drmingw/include/exchndl.h b/libs/drmingw/include/exchndl.h new file mode 100644 index 000000000..37dafb88e --- /dev/null +++ b/libs/drmingw/include/exchndl.h @@ -0,0 +1,39 @@ +/* + * Copyright 2002-2015 Jose Fonseca + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#pragma once + + +#include + + +// Set the unhandled exception handler. +// Must be called when exchndll.dll is statically loaded (as opposed to loaded +// dynamically via LoadLibrary) +EXTERN_C VOID APIENTRY +ExcHndlInit(void); + + +// Override the report file name. +// +// Default is prog_name.RPT, in the same directory as the main executable. +// +// You can also pass "-" for stderr. +EXTERN_C BOOL APIENTRY +ExcHndlSetLogFileNameA(const char *szLogFileName); diff --git a/libs/drmingw/lib/win32/libexchndl.a b/libs/drmingw/lib/win32/libexchndl.a new file mode 100644 index 0000000000000000000000000000000000000000..cd462a0df1b7e8f95d34ba2c6fa184161dd1604c GIT binary patch literal 3210 zcmdT`-HOvd6h3LYcDJlQpcmqWL{RWTYWkO5p)M6s6p9Gmi7?GJX&bjqOPgx($_pQ0 zA8FYq@Y1JoJ?G4%owiB4E$HHb%$%J0GL!k{n=|vE>I|Emquf(--U^j+sc4sq&kCk# zag$z}X0c?e4;ncDxCUTY0O_CT{*uq$Il$hz5HE!o4EvwGW;hb=u;&Nuui|*@cU>X< zu751>@g~hq;C6*0{J`mXAVkM=+>O5m@oLh1gB^YF!g{~`+V6Vru)7zvGWO{A24Y3K z`tohyhc#;fu7cq9ympxHPw7hHsbE>QjTG4hB#^C5RiZfIc9U@j5pExy{TN)- zu9iFRcDs;o;VP+y-xmOFqvf1L0TtJIqHfa*eG^RQD3yfK_(>;WG;V0VX@kmnQ~WV6 zJJ_@W!<^8{rww9d*`nSFlY-}1ZoO-Aq|eR<`aCF9mh@>Ox3~B=Ggqz8V#L-RbV#4H zcgSe%;`GUl3x$T8>U{yiuY`+>Q;b$F%O&mHEc0`nz00V#!zm5nXsiTig`IJ5A|tFH zxB`VUyHerAFL63EJwwQUUeY{+BlS{EyAGhrr7Th~MrZ3}zH$Cnrw8wYk%d-}n_+F9 zKAfFrbtB6^{{yu~hZ`wRUmc3<;`0RCKPf#@W&XW9Js#L&OZ? zanpT3{Z$e3EgolMGuu5ZYYL-6Sea)RkLd06bQZ�K}icgdv5{n4~DYAK)Xorgz=b z`KDph%h?_DvyO8)D1|axGzxyDonLC7Y1w^F*F0DH2e}XEdomhb>iRyv15iIQa-y;9UNzT|v@lU%3t_iFX2`j<-osExZy>25r3N$Ej6 wZmRSfIKP_0psOri=@2QMu7`;HpVfU^&2*;j$I;|@W(_POb+5W2Z=37?0OSYSbpQYW literal 0 HcmV?d00001 diff --git a/libs/drmingw/lib/win32/libmgwhelp.a b/libs/drmingw/lib/win32/libmgwhelp.a new file mode 100644 index 0000000000000000000000000000000000000000..330cb52fe52c82ba557712e6cdd55f154f6e041a GIT binary patch literal 85370 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 KQFfWV`+otx_Un8A literal 0 HcmV?d00001 diff --git a/src/sdl/i_main.c b/src/sdl/i_main.c index a2ce653ec..e6644ec51 100644 --- a/src/sdl/i_main.c +++ b/src/sdl/i_main.c @@ -58,6 +58,10 @@ char logfilename[1024]; #endif #endif +#if defined (_WIN32) +#include "exchndl.h" +#endif + #if defined (_WIN32) #include "../win32/win_dbg.h" typedef BOOL (WINAPI *p_IsDebuggerPresent)(VOID); @@ -170,7 +174,7 @@ int main(int argc, char **argv) ) #endif { - LoadLibraryA("exchndl.dll"); + ExcHndlInit(); } } #ifndef __MINGW32__ diff --git a/src/win32/Makefile.cfg b/src/win32/Makefile.cfg index 935b27222..e9e18280b 100644 --- a/src/win32/Makefile.cfg +++ b/src/win32/Makefile.cfg @@ -60,6 +60,12 @@ else endif endif +ifndef MINGW64 + CPPFLAGS+=-I../libs/drmingw/include + LDFLAGS+=-L../libs/drmingw/lib/win32 + LIBS+=-lmgwhelp -lexchndl +endif + # name of the exefile ifdef SDL EXENAME?=srb2kart.exe