The branch, master has been updated via 7401af4 pam_wrapper.c: fall back to pragma init/fini for constructor/destructor if possible via f7ba680 configure: check for pragma init/fini for constructors/destructors from ab2d90c Bump version to 1.1.3
https://git.samba.org/?p=pam_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 7401af4dbe1a8dc5849c3d7fc2a7890413ab394e Author: Björn Jacke <bja...@samba.org> Date: Fri Oct 30 15:52:40 2020 +0100 pam_wrapper.c: fall back to pragma init/fini for constructor/destructor if possible Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit f7ba680493ec6ae191a633799682eededdea1d83 Author: Björn Jacke <bja...@samba.org> Date: Fri Oct 30 15:51:38 2020 +0100 configure: check for pragma init/fini for constructors/destructors Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: ConfigureChecks.cmake | 26 ++++++++++++++++++++++++++ config.h.cmake | 2 ++ src/pam_wrapper.c | 7 +++++++ 3 files changed, 35 insertions(+) Changeset truncated at 500 lines: diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 8dcf978..dcf5f31 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -140,6 +140,32 @@ int main(void) { return 0; }" HAVE_DESTRUCTOR_ATTRIBUTE) +check_c_source_compiles(" +#pragma init (test_constructor) +void test_constructor(void); + +void test_constructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_INIT) + +check_c_source_compiles(" +#pragma fini (test_destructor) +void test_destructor(void); + +void test_destructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_FINI) + check_c_source_compiles(" void log_fn(const char *format, ...) __attribute__ ((format (printf, 1, 2))); diff --git a/config.h.cmake b/config.h.cmake index 01a54f3..80208aa 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -40,6 +40,8 @@ #cmakedefine HAVE_GCC_ATOMIC_BUILTINS 1 #cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1 +#cmakedefine HAVE_PRAGMA_INIT 1 +#cmakedefine HAVE_PRAGMA_FINI 1 #cmakedefine HAVE_FUNCTION_ATTRIBUTE_FORMAT 1 /*************************** ENDIAN *****************************/ diff --git a/src/pam_wrapper.c b/src/pam_wrapper.c index dd69c43..6801d7b 100644 --- a/src/pam_wrapper.c +++ b/src/pam_wrapper.c @@ -311,7 +311,14 @@ static struct pwrap pwrap; *********************************************************/ bool pam_wrapper_enabled(void); +#if ! defined(HAVE_CONSTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_INIT) +/* xlC and other oldschool compilers support (only) this */ +#pragma init (pwrap_constructor) +#endif void pwrap_constructor(void) CONSTRUCTOR_ATTRIBUTE; +#if ! defined(HAVE_DESTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_FINI) +#pragma fini (pwrap_destructor) +#endif void pwrap_destructor(void) DESTRUCTOR_ATTRIBUTE; /********************************************************* -- pam wrapper repository