summaryrefslogtreecommitdiffstats
path: root/lib/libc/iconv/iconv.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2013-07-01 08:06:26 +0000
committerpeter <peter@FreeBSD.org>2013-07-01 08:06:26 +0000
commitc77016ccdaf40ab136d3fd9db47a6aad98135ae6 (patch)
tree6ccd193339a06c80e18d73d20490bedc798e225c /lib/libc/iconv/iconv.c
parent75dee8bb5ae9162b5536e80ab4be44936ed4b65a (diff)
downloadFreeBSD-src-c77016ccdaf40ab136d3fd9db47a6aad98135ae6.zip
FreeBSD-src-c77016ccdaf40ab136d3fd9db47a6aad98135ae6.tar.gz
__weak_alias() doesn't exist on FreeBSD. Use __weak_reference();
Expose iconv functions as weak symbols as well as their internal remapped #define names. This is necessary for autoconf compatability - on Linux it appears that #include <iconv.h> isn't a link time prerequisite for their version that's built into glibc. Initialize the pthread rwlock. Note that upstream has three separate locks. The file-local static lock appears intentional. I'm using this as a ports-compatible compile-time substitute for converters/libiconv on one of my personal machines.
Diffstat (limited to 'lib/libc/iconv/iconv.c')
-rw-r--r--lib/libc/iconv/iconv.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/libc/iconv/iconv.c b/lib/libc/iconv/iconv.c
index 99cfc37..c78a615 100644
--- a/lib/libc/iconv/iconv.c
+++ b/lib/libc/iconv/iconv.c
@@ -47,16 +47,13 @@
#include "citrus_hash.h"
#include "citrus_iconv.h"
-#ifdef __weak_alias
-__weak_alias(libiconv, _iconv)
-__weak_alias(libiconv_open, _iconv_open)
-__weak_alias(libiconv_open_into, _iconv_open_into)
-__weak_alias(libiconv_close, _iconv_close)
-__weak_alias(libiconvlist, _iconvlist)
-__weak_alias(libiconvctl, _iconvctl)
-__weak_alias(libiconv_set_relocation_prefix, _iconv_set_relocation_prefix)
-__weak_alias(iconv_canonicalize, _iconv_canonicalize)
-#endif
+__weak_reference(libiconv, iconv);
+__weak_reference(libiconv_open, iconv_open);
+__weak_reference(libiconv_open_into, iconv_open_into);
+__weak_reference(libiconv_close, iconv_close);
+__weak_reference(libiconvlist, iconvlist);
+__weak_reference(libiconvctl, iconvctl);
+__weak_reference(libiconv_set_relocation_prefix, iconv_set_relocation_prefix);
#define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1)
OpenPOWER on IntegriCloud