diff options
author | Marc Alff <marc.alff@oracle.com> | 2010-03-09 11:03:02 -0700 |
---|---|---|
committer | Marc Alff <marc.alff@oracle.com> | 2010-03-09 11:03:02 -0700 |
commit | db71e5e6f92cae5bc731842d5da9dd7f8fe3eb70 (patch) | |
tree | a132647272f2039e25b26df61dafedb30ce539cd | |
parent | e370ad1e76f6cadd68f8b41b76d49b701600614d (diff) | |
download | mariadb-git-db71e5e6f92cae5bc731842d5da9dd7f8fe3eb70.tar.gz |
Bug#51878 Build break in HPUX involving mysql_prlock on a client
This is a fix specific for HPUX,
for which the compiler does not resolve properly dependencies
involving unused inline functions.
(See existing comments in mysql_thread.h)
In include/mysql/psi/mysql_thread.h,
the instrumentation helpers for mysql_prlock_*
uses the pr lock apis.
These apis are implemented in mysys/thr_rwlock.c,
which is not linked to client code.
As a result, the code does not link in libmysql_r, on HPUX.
The fix is to cut dependencies explicitely,
by introducing -DDISABLE_MYSQL_RWLOCK_H,
when building client code.
-rw-r--r-- | include/mysql/psi/mysql_thread.h | 16 | ||||
-rw-r--r-- | libmysql_r/Makefile.am | 8 |
2 files changed, 21 insertions, 3 deletions
diff --git a/include/mysql/psi/mysql_thread.h b/include/mysql/psi/mysql_thread.h index cdf7a879eb1..4e839c7cf6a 100644 --- a/include/mysql/psi/mysql_thread.h +++ b/include/mysql/psi/mysql_thread.h @@ -192,6 +192,8 @@ typedef struct st_mysql_cond mysql_cond_t; on some platforms. The proper fix would be to cut these extra dependencies in the calling code. DISABLE_MYSQL_THREAD_H is a work around to limit dependencies. + DISABLE_MYSQL_PRLOCK_H is similar, and is used to disable specifically + the prlock wrappers. */ #ifndef DISABLE_MYSQL_THREAD_H @@ -714,6 +716,7 @@ static inline int inline_mysql_rwlock_init( return my_rwlock_init(&that->m_rwlock, NULL); } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_init( #ifdef HAVE_PSI_INTERFACE PSI_rwlock_key key, @@ -728,6 +731,7 @@ static inline int inline_mysql_prlock_init( #endif return rw_pr_init(&that->m_prlock); } +#endif static inline int inline_mysql_rwlock_destroy( mysql_rwlock_t *that) @@ -742,6 +746,7 @@ static inline int inline_mysql_rwlock_destroy( return rwlock_destroy(&that->m_rwlock); } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_destroy( mysql_prlock_t *that) { @@ -754,6 +759,7 @@ static inline int inline_mysql_prlock_destroy( #endif return rw_pr_destroy(&that->m_prlock); } +#endif static inline int inline_mysql_rwlock_rdlock( mysql_rwlock_t *that @@ -781,6 +787,7 @@ static inline int inline_mysql_rwlock_rdlock( return result; } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_rdlock( mysql_prlock_t *that #ifdef HAVE_PSI_INTERFACE @@ -806,6 +813,7 @@ static inline int inline_mysql_prlock_rdlock( #endif return result; } +#endif static inline int inline_mysql_rwlock_wrlock( mysql_rwlock_t *that @@ -833,6 +841,7 @@ static inline int inline_mysql_rwlock_wrlock( return result; } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_wrlock( mysql_prlock_t *that #ifdef HAVE_PSI_INTERFACE @@ -858,6 +867,7 @@ static inline int inline_mysql_prlock_wrlock( #endif return result; } +#endif static inline int inline_mysql_rwlock_tryrdlock( mysql_rwlock_t *that @@ -885,6 +895,7 @@ static inline int inline_mysql_rwlock_tryrdlock( return result; } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_tryrdlock( mysql_prlock_t *that #ifdef HAVE_PSI_INTERFACE @@ -910,6 +921,7 @@ static inline int inline_mysql_prlock_tryrdlock( #endif return result; } +#endif static inline int inline_mysql_rwlock_trywrlock( mysql_rwlock_t *that @@ -937,6 +949,7 @@ static inline int inline_mysql_rwlock_trywrlock( return result; } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_trywrlock( mysql_prlock_t *that #ifdef HAVE_PSI_INTERFACE @@ -962,6 +975,7 @@ static inline int inline_mysql_prlock_trywrlock( #endif return result; } +#endif static inline int inline_mysql_rwlock_unlock( mysql_rwlock_t *that) @@ -980,6 +994,7 @@ static inline int inline_mysql_rwlock_unlock( return result; } +#ifndef DISABLE_MYSQL_PRLOCK_H static inline int inline_mysql_prlock_unlock( mysql_prlock_t *that) { @@ -996,6 +1011,7 @@ static inline int inline_mysql_prlock_unlock( result= rw_pr_unlock(&that->m_prlock); return result; } +#endif static inline int inline_mysql_cond_init( #ifdef HAVE_PSI_INTERFACE diff --git a/libmysql_r/Makefile.am b/libmysql_r/Makefile.am index 4a37dcfdec9..94b66f29419 100644 --- a/libmysql_r/Makefile.am +++ b/libmysql_r/Makefile.am @@ -20,9 +20,11 @@ # # This file is public domain and comes with NO WARRANTY of any kind -target = libmysqlclient_r.la -target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@ -LIBS = @LIBS@ @ZLIB_LIBS@ @openssl_libs@ +target = libmysqlclient_r.la +target_defs = -DDISABLE_MYSQL_PRLOCK_H -DDONT_USE_RAID \ + -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@ + +LIBS = @LIBS@ @ZLIB_LIBS@ @openssl_libs@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ $(openssl_includes) @ZLIB_INCLUDES@ |