From 6794bca0e96ac288eab7248431080afe29152564 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Thu, 7 Jul 2011 23:19:39 +0300 Subject: build: add a hack to prevent name collision with libtalloc libsmbclient uses dynamically linked libtalloc.so which has symbols with names matching those in the internal talloc.c. This name collision caused a crash under stream_smb when trying to play anything with smb://. Add a "#pragma GCC visibility" hack to talloc.h to hide the internal symbols from being visible to the outside libtalloc.so. Hopefully this doesn't break any platform worse than possibly causing a compiler warning about an unknown pragma (at least GCC and clang recognize it). --- talloc.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'talloc.h') diff --git a/talloc.h b/talloc.h index 5431971655..8c6d405040 100644 --- a/talloc.h +++ b/talloc.h @@ -29,6 +29,14 @@ #include #include +/* HACK: libsmbclient uses dynamically linked libtalloc.so which has + * identically named symbols. This name collision caused a crash under + * stream_smb when trying to play anything with smb://. This hack + * prevents the symbols declared here from being visible to outside + * shared libraries and fixes the crash. + */ +#pragma GCC visibility push(hidden) + /* this is only needed for compatibility with the old talloc */ typedef void TALLOC_CTX; @@ -180,4 +188,6 @@ char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3) char *talloc_asprintf_append(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); +// end of visibility hack from above +#pragma GCC visibility pop #endif -- cgit v1.2.3