mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Improved PHP binary size and startup speed with GCC4 visibility control (Nuno)
This commit is contained in:
parent
71efa394a6
commit
240fa244c3
25 changed files with 175 additions and 86 deletions
2
NEWS
2
NEWS
|
@ -57,6 +57,8 @@ PHP NEWS
|
|||
|
||||
- Removed the experimental RPL (master/slave) functions from mysqli. (Andrey)
|
||||
|
||||
- Improved PHP binary size and startup speed with GCC4 visibility control.
|
||||
(Nuno)
|
||||
- Improved engine stack implementation for better performance and stability.
|
||||
(Dmitry)
|
||||
- Improved php.ini handling: (Jani)
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
# else
|
||||
# define TSRM_API __declspec(dllimport)
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define TSRM_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
# define TSRM_API
|
||||
#endif
|
||||
|
|
|
@ -122,8 +122,10 @@ typedef unsigned short mode_t;
|
|||
# else
|
||||
# define CWD_API __declspec(dllimport)
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define CWD_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define CWD_API
|
||||
# define CWD_API
|
||||
#endif
|
||||
|
||||
#ifdef TSRM_WIN32
|
||||
|
|
|
@ -19,8 +19,14 @@
|
|||
|
||||
/* $Id$ */
|
||||
|
||||
#define ZEND_API
|
||||
#define ZEND_DLEXPORT
|
||||
#if defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define ZEND_API __attribute__ ((visibility("default")))
|
||||
# define ZEND_DLEXPORT __attribute__ ((visibility("default")))
|
||||
#else
|
||||
# define ZEND_API
|
||||
# define ZEND_DLEXPORT
|
||||
#endif
|
||||
|
||||
#define ZEND_DLIMPORT
|
||||
|
||||
@TOP@
|
||||
|
|
|
@ -165,6 +165,14 @@ alpha*)
|
|||
;;
|
||||
esac
|
||||
|
||||
dnl activate some gcc specific optimizations for gcc >= 4
|
||||
if test "$GCC" = "yes"; then
|
||||
GCC_MAJOR_VERSION=`$CC --version | $SED -n '1s/[[^0-9]]*\([[0-9]]\+\)\.[[0-9]]\+\..*/\1/;1p'`
|
||||
if test $GCC_MAJOR_VERSION -ge 4; then
|
||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
||||
fi
|
||||
fi
|
||||
|
||||
case $host_alias in
|
||||
*solaris*)
|
||||
CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
|
||||
|
|
|
@ -41,6 +41,8 @@ extern zend_module_entry bz2_module_entry;
|
|||
# else
|
||||
# define PHP_BZ2_API /* nothing special */
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_BZ2_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
# define PHP_BZ2_API
|
||||
#endif
|
||||
|
|
|
@ -35,14 +35,19 @@ typedef struct _dom_object {
|
|||
} dom_object;
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#ifdef PHPAPI
|
||||
#undef PHPAPI
|
||||
#endif
|
||||
#ifdef DOM_EXPORTS
|
||||
#define PHPAPI __declspec(dllexport)
|
||||
#else
|
||||
#define PHPAPI __declspec(dllimport)
|
||||
#endif /* DOM_EXPORTS */
|
||||
# ifdef PHPAPI
|
||||
# undef PHPAPI
|
||||
# endif
|
||||
# ifdef DOM_EXPORTS
|
||||
# define PHPAPI __declspec(dllexport)
|
||||
# else
|
||||
# define PHPAPI __declspec(dllimport)
|
||||
# endif /* DOM_EXPORTS */
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# ifdef PHPAPI
|
||||
# undef PHPAPI
|
||||
# endif
|
||||
# define PHPAPI __attribute__ ((visibility("default")))
|
||||
#endif /* PHP_WIN32 */
|
||||
|
||||
#define PHP_DOM_EXPORT PHPAPI
|
||||
|
|
|
@ -51,9 +51,11 @@
|
|||
#define PHP_GDIMG_TYPE_GD2PART 10
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#define PHP_GD_API __declspec(dllexport)
|
||||
# define PHP_GD_API __declspec(dllexport)
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_GD_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define PHP_GD_API
|
||||
# define PHP_GD_API
|
||||
#endif
|
||||
|
||||
PHPAPI extern const char php_sig_gif[3];
|
||||
|
|
|
@ -100,9 +100,11 @@ extern zend_module_entry hash_module_entry;
|
|||
#define phpext_hash_ptr &hash_module_entry
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#define PHP_HASH_API __declspec(dllexport)
|
||||
# define PHP_HASH_API __declspec(dllexport)
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_HASH_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define PHP_HASH_API
|
||||
# define PHP_HASH_API
|
||||
#endif
|
||||
|
||||
#ifdef ZTS
|
||||
|
|
|
@ -23,13 +23,15 @@
|
|||
#define PHP_ICONV_H
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#ifdef PHP_ICONV_EXPORTS
|
||||
#define PHP_ICONV_API __declspec(dllexport)
|
||||
# ifdef PHP_ICONV_EXPORTS
|
||||
# define PHP_ICONV_API __declspec(dllexport)
|
||||
# else
|
||||
# define PHP_ICONV_API __declspec(dllimport)
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_ICONV_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define PHP_ICONV_API __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
#define PHP_ICONV_API
|
||||
# define PHP_ICONV_API
|
||||
#endif
|
||||
|
||||
#ifdef PHP_ATOM_INC
|
||||
|
|
|
@ -27,9 +27,11 @@ extern zend_module_entry libxml_module_entry;
|
|||
#define libxml_module_ptr &libxml_module_entry
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#define PHP_LIBXML_API __declspec(dllexport)
|
||||
# define PHP_LIBXML_API __declspec(dllexport)
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_LIBXML_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define PHP_LIBXML_API
|
||||
# define PHP_LIBXML_API
|
||||
#endif
|
||||
|
||||
#include "ext/standard/php_smart_str.h"
|
||||
|
|
|
@ -60,6 +60,9 @@
|
|||
# else
|
||||
# define MBSTRING_API /* nothing special */
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# undef MBSTRING_API
|
||||
# define MBSTRING_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
# undef MBSTRING_API
|
||||
# define MBSTRING_API /* nothing special */
|
||||
|
|
|
@ -145,7 +145,11 @@ typedef struct {
|
|||
#define L64(x) x##i64
|
||||
typedef __int64 my_longlong;
|
||||
#else
|
||||
#define PHP_MYSQLI_API
|
||||
# if defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_MYSQLI_API __attribute__ ((visibility("default")))
|
||||
# else
|
||||
# define PHP_MYSQLI_API
|
||||
# endif
|
||||
#define MYSQLI_LLU_SPEC "%llu"
|
||||
#define MYSQLI_LL_SPEC "%lld"
|
||||
#define L64(x) x##LL
|
||||
|
|
|
@ -38,6 +38,8 @@ extern zend_module_entry pdo_module_entry;
|
|||
# else
|
||||
# define PDO_API /* nothing special */
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PDO_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
# define PDO_API /* nothing special */
|
||||
#endif
|
||||
|
|
|
@ -42,7 +42,11 @@ extern zend_module_entry pgsql_module_entry;
|
|||
#endif
|
||||
#else
|
||||
#include <libpq/libpq-fs.h>
|
||||
#define PHP_PGSQL_API /* nothing special */
|
||||
# if defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_PGSQL_API __attribute__ ((visibility("default")))
|
||||
# else
|
||||
# define PHP_PGSQL_API
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PG_CONFIG_H
|
||||
|
|
|
@ -7,9 +7,11 @@ extern zend_module_entry extname_module_entry;
|
|||
#define phpext_extname_ptr &extname_module_entry
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#define PHP_EXTNAME_API __declspec(dllexport)
|
||||
# define PHP_EXTNAME_API __declspec(dllexport)
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHP_EXTNAME_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define PHP_EXTNAME_API
|
||||
# define PHP_EXTNAME_API
|
||||
#endif
|
||||
|
||||
#ifdef ZTS
|
||||
|
|
|
@ -39,6 +39,8 @@ extern zend_module_entry spl_module_entry;
|
|||
# else
|
||||
# define SPL_API /* nothing */
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define SPL_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
# define SPL_API
|
||||
#endif
|
||||
|
|
|
@ -41,14 +41,16 @@
|
|||
/* #defines that rename all zip_ functions and structs */
|
||||
#include "zip_alias.h"
|
||||
#ifdef PHP_WIN32
|
||||
#include "zip_win32.h"
|
||||
# include "zip_win32.h"
|
||||
# ifdef PHP_ZIP_EXPORTS
|
||||
# define PHPZIPAPI __declspec(dllexport)
|
||||
# else
|
||||
# define PHPZIPAPI
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHPZIPAPI __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define PHPZIPAPI
|
||||
# define PHPZIPAPI
|
||||
#endif
|
||||
BEGIN_EXTERN_C()
|
||||
#include <sys/types.h>
|
||||
|
|
|
@ -39,8 +39,10 @@
|
|||
# else
|
||||
# define SAPI_API __declspec(dllimport)
|
||||
# endif
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define SAPI_API __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define SAPI_API
|
||||
# define SAPI_API
|
||||
#endif
|
||||
|
||||
#undef shutdown
|
||||
|
|
15
main/php.h
15
main/php.h
|
@ -45,17 +45,22 @@
|
|||
#define PHP_DEBUG ZEND_DEBUG
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
#include "tsrm_win32.h"
|
||||
#include "win95nt.h"
|
||||
# include "tsrm_win32.h"
|
||||
# include "win95nt.h"
|
||||
# ifdef PHP_EXPORTS
|
||||
# define PHPAPI __declspec(dllexport)
|
||||
# else
|
||||
# define PHPAPI __declspec(dllimport)
|
||||
# endif
|
||||
#define PHP_DIR_SEPARATOR '\\'
|
||||
#define PHP_EOL "\r\n"
|
||||
# define PHP_DIR_SEPARATOR '\\'
|
||||
# define PHP_EOL "\r\n"
|
||||
#else
|
||||
#define PHPAPI
|
||||
# if defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define PHPAPI __attribute__ ((visibility("default")))
|
||||
# else
|
||||
# define PHPAPI
|
||||
# endif
|
||||
|
||||
#define THREAD_LS
|
||||
#define PHP_DIR_SEPARATOR '/'
|
||||
#if defined(__MacOSX__)
|
||||
|
|
|
@ -44,6 +44,12 @@ extern php_apache_info_struct php_apache_info;
|
|||
#define AP(v) (php_apache_info.v)
|
||||
#endif
|
||||
|
||||
/* fix for gcc4 visibility patch */
|
||||
#ifndef PHP_WIN32
|
||||
# undef MODULE_VAR_EXPORT
|
||||
# define MODULE_VAR_EXPORT PHPAPI
|
||||
#endif
|
||||
|
||||
#endif /* MOD_PHP5_H */
|
||||
|
||||
/*
|
||||
|
|
|
@ -74,4 +74,10 @@ static long php_apache_fteller_stream(void * TSRMLS_DC);
|
|||
|
||||
#define APR_ARRAY_FOREACH_CLOSE() }}
|
||||
|
||||
/* fix for gcc4 visibility patch */
|
||||
#ifndef PHP_WIN32
|
||||
# undef AP_MODULE_DECLARE_DATA
|
||||
# define AP_MODULE_DECLARE_DATA PHPAPI
|
||||
#endif
|
||||
|
||||
#endif /* PHP_APACHE_H */
|
||||
|
|
|
@ -82,5 +82,10 @@ extern php_apache2_info_struct php_apache2_info;
|
|||
#define AP2(v) (php_apache2_info.v)
|
||||
#endif
|
||||
|
||||
/* fix for gcc4 visibility patch */
|
||||
#ifndef PHP_WIN32
|
||||
# undef AP_MODULE_DECLARE_DATA
|
||||
# define AP_MODULE_DECLARE_DATA PHPAPI
|
||||
#endif
|
||||
|
||||
#endif /* PHP_APACHE_H */
|
||||
|
|
|
@ -71,6 +71,13 @@ extern php_apache_info_struct php_apache_info;
|
|||
#define AP_LOGGING 10
|
||||
#define AP_CLEANUP 11
|
||||
|
||||
|
||||
/* fix for gcc4 visibility patch */
|
||||
#ifndef PHP_WIN32
|
||||
# undef MODULE_VAR_EXPORT
|
||||
# define MODULE_VAR_EXPORT PHPAPI
|
||||
#endif
|
||||
|
||||
#endif /* MOD_PHP5_H */
|
||||
|
||||
/*
|
||||
|
|
|
@ -9,8 +9,12 @@
|
|||
# define MODULE_API __declspec(dllimport)
|
||||
# endif
|
||||
#else
|
||||
# define far
|
||||
# if defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define MODULE_API __attribute__ ((visibility("default")))
|
||||
# else
|
||||
# define MODULE_API
|
||||
# endif
|
||||
# define far
|
||||
|
||||
typedef int BOOL;
|
||||
typedef void far *LPVOID;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue