aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2013-07-01 08:06:26 +0000
committerPeter Wemm <peter@FreeBSD.org>2013-07-01 08:06:26 +0000
commit3d4b80da4e518a0c3932e17f9afe730efa98e26c (patch)
tree6ccd193339a06c80e18d73d20490bedc798e225c /lib
parent0d5daade6d7101438cc76e954838bce2ba7aad00 (diff)
Notes
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/iconv/Symbol.map10
-rw-r--r--lib/libc/iconv/citrus_lock.h3
-rw-r--r--lib/libc/iconv/iconv.c17
3 files changed, 19 insertions, 11 deletions
diff --git a/lib/libc/iconv/Symbol.map b/lib/libc/iconv/Symbol.map
index 73e0e225ffe2..82be46f72ed8 100644
--- a/lib/libc/iconv/Symbol.map
+++ b/lib/libc/iconv/Symbol.map
@@ -17,6 +17,16 @@ FBSD_1.2 {
libiconvlist;
};
+FBSD_1.3 {
+ iconv;
+ iconv_open;
+ iconv_close;
+ iconv_open_into;
+ iconv_set_relocation_prefix;
+ iconvctl;
+ iconvlist;
+};
+
FBSDprivate_1.0 {
_citrus_bcs_convert_to_lower;
_citrus_bcs_convert_to_upper;
diff --git a/lib/libc/iconv/citrus_lock.h b/lib/libc/iconv/citrus_lock.h
index ad9443ab01ef..d275d555f487 100644
--- a/lib/libc/iconv/citrus_lock.h
+++ b/lib/libc/iconv/citrus_lock.h
@@ -27,7 +27,8 @@
#include <pthread.h>
-static pthread_rwlock_t lock;
+/* XXX Yes, the original code has three separate file-local lock instances */
+static pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER;
#define WLOCK if (__isthreaded) \
pthread_rwlock_wrlock(&lock);
diff --git a/lib/libc/iconv/iconv.c b/lib/libc/iconv/iconv.c
index 99cfc375f12e..c78a61578084 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)