From 1b8087669a629fe6609ffdb013f803caba73bf6a Mon Sep 17 00:00:00 2001 From: Daniel Dragan Date: Wed, 14 Mar 2018 20:11:51 -0400 Subject: [PATCH] remove all exported symbols from GCC win32 miniperl Similar to commit a19baa613 and same reasoning. Makes binary smaller/more chances for optimization but mingw linker is still much less smart than the VC linker. Remaining problems are that GCC miniperl.exe still links to WS2_32.dll (winsock library) yet the win32_* socket functions have nothing calling them. GCC 4.9.2 i686-w64-mingw32 miniperl.exe 1660KB before this no exports commit miniperl.exe 1584KB after this no exports commit --- EXTERN.h | 2 +- INTERN.h | 3 ++- win32/win32.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/EXTERN.h b/EXTERN.h index b8c4512d37..558f762a3f 100644 --- a/EXTERN.h +++ b/EXTERN.h @@ -21,7 +21,7 @@ # if (defined(WIN32) || defined(__SYMBIAN32__)) && !defined(PERL_STATIC_SYMS) /* miniperl should not export anything */ -# if defined(PERL_IS_MINIPERL) && !defined(UNDER_CE) && defined(_MSC_VER) +# if defined(PERL_IS_MINIPERL) && !defined(UNDER_CE) # define EXT extern # define dEXT # define EXTCONST extern const diff --git a/INTERN.h b/INTERN.h index eaaf6b2c64..35bb4ee5cb 100644 --- a/INTERN.h +++ b/INTERN.h @@ -19,7 +19,8 @@ #undef EXTCONST #undef dEXTCONST -# if (defined(WIN32) && defined(__MINGW32__)) || defined(__SYMBIAN32__) +# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) \ + || defined(__SYMBIAN32__) # ifdef __cplusplus # define EXT __declspec(dllexport) # define dEXT diff --git a/win32/win32.h b/win32/win32.h index 26c3ac254f..ee1d889851 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -85,7 +85,7 @@ /* now even GCC supports __declspec() */ /* miniperl has no reason to export anything */ -#if defined(PERL_IS_MINIPERL) && !defined(UNDER_CE) && defined(_MSC_VER) +#if defined(PERL_IS_MINIPERL) && !defined(UNDER_CE) # define DllExport #else # if defined(PERLDLL)