Work around for missing __attribute((alias))

Some platforms such as OSX 10.7 don't have __attribute((alias)) enabled.
We need a work around there
This commit is contained in:
Nirgal Vourgère 2012-08-08 16:21:32 +02:00
parent 35c28b4efb
commit 1700860912
4 changed files with 85 additions and 10 deletions

View File

@ -110,3 +110,17 @@ size_t iconv();
fi
AC_SUBST(LIBICONV)
])
dnl Check whether the target supports symbol aliases.
dnl Code copied from libgomp
AC_DEFUN([AM_GCC_ATTRIBUTE_ALIAS], [
AC_CACHE_CHECK([whether the target supports symbol aliases],
am_cv_gcc_have_attribute_alias, [
AC_TRY_LINK([
void foo(void) { }
extern void bar(void) __attribute__((alias("foo")));],
[bar();], am_cv_gcc_have_attribute_alias=yes, am_cv_gcc_have_attribute_alias=no)])
if test $am_cv_gcc_have_attribute_alias = yes; then
AC_DEFINE(HAVE_ATTRIBUTE_ALIAS, 1,
[Define to 1 if the target supports __attribute__((alias(...))).])
fi])

View File

@ -25,13 +25,17 @@ AC_C_CONST
AC_TYPE_SIZE_T
AM_ICONV
# add -DHAVE_INCONV to CFLAGS. We should not use #include <config.h> in
# public headers
if test "$am_cv_func_iconv" = "yes"; then
CFLAGS="$CFLAGS -DHAVE_ICONV"
fi
AM_GCC_ATTRIBUTE_ALIAS
if test "$am_cv_gcc_have_attribute_alias" = "yes"; then
CFLAGS="$CFLAGS -DHAVE_ATTRIBUTE_ALIAS"
fi
dnl no optional stuff by default
OPTDIRS=""

View File

@ -36,7 +36,11 @@ mdb_put_int16(void *buf, guint32 offset, guint32 value)
}
void
_mdb_put_int16(void *buf, guint32 offset, guint32 value)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("mdb_put_int16")));
#else
{ mdb_put_int16(buf, offset, value); }
#endif
void
mdb_put_int32(void *buf, guint32 offset, guint32 value)
@ -46,7 +50,11 @@ mdb_put_int32(void *buf, guint32 offset, guint32 value)
}
void
_mdb_put_int32(void *buf, guint32 offset, guint32 value)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("mdb_put_int32")));
#else
{ mdb_put_int32(buf, offset, value); }
#endif
void
mdb_put_int32_msb(void *buf, guint32 offset, guint32 value)
@ -56,7 +64,11 @@ mdb_put_int32_msb(void *buf, guint32 offset, guint32 value)
}
void
_mdb_put_int32_mdb(void *buf, guint32 offset, guint32 value)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("mdb_put_int32_msb")));
#else
{ mdb_put_int32_msb(buf, offset, value); }
#endif
ssize_t
mdb_write_pg(MdbHandle *mdb, unsigned long pg)

View File

@ -248,7 +248,12 @@ static SQLRETURN SQL_API _SQLDriverConnect(
SQLCHAR FAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT FAR *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion) __attribute__((alias("SQLDriverConnect")));
SQLUSMALLINT fDriverCompletion)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLDriverConnect")));
#else
{ return SQLDriverConnect(hdbc, hwnd, szConnStrIn, cbConnStrIn, szConnStrOut, cbConnStrOutMax, pcbConnStrOut, fDriverCompletion); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLDriverConnectW(
@ -695,7 +700,12 @@ static SQLRETURN SQL_API _SQLConnect(
SQLCHAR FAR *szUID,
SQLSMALLINT cbUID,
SQLCHAR FAR *szAuthStr,
SQLSMALLINT cbAuthStr) __attribute__((alias("SQLConnect")));
SQLSMALLINT cbAuthStr)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLConnect")));
#else
{ return SQLConnect(hdbc, szDSN, cbDSN, szUID, cbUID, szAuthStr, cbAuthStr); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLConnectW(
@ -799,7 +809,12 @@ static SQLRETURN SQL_API _SQLDescribeCol(
SQLSMALLINT FAR *pfSqlType,
SQLULEN FAR *pcbColDef, /* precision */
SQLSMALLINT FAR *pibScale,
SQLSMALLINT FAR *pfNullable) __attribute__((alias("SQLDescribeCol")));
SQLSMALLINT FAR *pfNullable)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLDescribeCol")));
#else
{ return SQLDescribeCol(hstmt, icol, szColName, cbColNameMax, pcbColName, pfSqlType, pcbColDef, pibScale, pfNullable); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLDescribeColW(
@ -902,7 +917,12 @@ static SQLRETURN SQL_API _SQLColAttributes(
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT FAR *pcbDesc,
SQLLEN FAR *pfDesc)__attribute__((alias("SQLColAttributes")));
SQLLEN FAR *pfDesc)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLColAttributes")));
#else
{ return SQLColAttributes(hstmt, icol, fDescType, rgbDesc, cbDescMax, pcbDesc, pfDesc); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLColAttributesW(
@ -981,7 +1001,12 @@ static SQLRETURN SQL_API _SQLError(
SQLINTEGER FAR *pfNativeError,
SQLCHAR FAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT FAR *pcbErrorMsg) __attribute__((alias("SQLError")));
SQLSMALLINT FAR *pcbErrorMsg)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLError")));
#else
{ return SQLError(henv, hdbc, hstmt, szSqlState, pfNativeError, szErrorMsg, cbErrorMsgMax, pcbErrorMsg); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLErrorW(
@ -1053,7 +1078,12 @@ SQLRETURN SQL_API SQLExecDirect(
static SQLRETURN SQL_API _SQLExecDirect(
SQLHSTMT hstmt,
SQLCHAR FAR *szSqlStr,
SQLINTEGER cbSqlStr)__attribute__((alias("SQLExecDirect")));
SQLINTEGER cbSqlStr)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLExecDirect")));
#else
{ return SQLExecDirect(hstmt, szSqlStr, cbSqlStr); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLExecDirectW(
@ -1412,7 +1442,12 @@ static SQLRETURN SQL_API _SQLColumns(
SQLCHAR FAR *szTableName,
SQLSMALLINT cbTableName,
SQLCHAR FAR *szColumnName,
SQLSMALLINT cbColumnName)__attribute__((alias("SQLColumns")));
SQLSMALLINT cbColumnName)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLColumns")));
#else
{ return SQLColumns(hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName, szTableName, cbTableName, szColumnName, cbColumnName); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLColumnsW(
@ -1617,7 +1652,12 @@ SQLRETURN SQL_API _SQLGetData(
SQLSMALLINT fCType,
SQLPOINTER rgbValue,
SQLLEN cbValueMax,
SQLLEN FAR *pcbValue)__attribute__((alias("SQLGetData")));
SQLLEN FAR *pcbValue)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLGetData")));
#else
{ return SQLGetData(hstmt, icol, fCType, rgbValue, cbValueMax, pcbValue); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLGetDataW(
@ -1856,7 +1896,12 @@ SQLRETURN SQL_API _SQLGetInfo(
SQLUSMALLINT fInfoType,
SQLPOINTER rgbInfoValue,
SQLSMALLINT cbInfoValueMax,
SQLSMALLINT FAR *pcbInfoValue) __attribute__((alias("SQLGetInfo")));
SQLSMALLINT FAR *pcbInfoValue)
#ifdef HAVE_ATTRIBUTE_ALIAS
__attribute__((alias("SQLGetInfo")));
#else
{ return SQLGetInfo(hdbc, fInfoType, rgbInfoValue, cbInfoValueMax, pcbInfoValue); }
#endif
#ifdef ENABLE_ODBC_W
SQLRETURN SQL_API SQLGetInfoW(