svn commit: r258398 - in stable/10: . include lib lib/libc lib/libc/iconv lib/libc_nonshared sys/sys
Peter Wemm
peter at FreeBSD.org
Wed Nov 20 20:25:02 UTC 2013
Author: peter
Date: Wed Nov 20 20:24:59 2013
New Revision: 258398
URL: http://svnweb.freebsd.org/changeset/base/258398
Log:
MFC r258283 - move iconv* symbols out of libc.so.7 namespace with
compatibility symbols to aid transition for existing 10.x installs.
Approved by: re (kib)
Added:
stable/10/lib/libc/iconv/iconv-internal.h
- copied unchanged from r258283, head/lib/libc/iconv/iconv-internal.h
stable/10/lib/libc/iconv/iconv_compat.c
- copied unchanged from r258283, head/lib/libc/iconv/iconv_compat.c
stable/10/lib/libc_nonshared/
- copied from r258283, head/lib/libc_nonshared/
Modified:
stable/10/Makefile.inc1 (contents, props changed)
stable/10/include/iconv.h
stable/10/lib/Makefile
stable/10/lib/libc/iconv/Makefile.inc
stable/10/lib/libc/iconv/Symbol.map
stable/10/lib/libc/iconv/iconv.c
stable/10/lib/libc/libc.ldscript
stable/10/sys/sys/param.h
Directory Properties:
stable/10/ (props changed)
stable/10/include/ (props changed)
stable/10/lib/ (props changed)
stable/10/lib/libc/ (props changed)
Modified: stable/10/Makefile.inc1
==============================================================================
--- stable/10/Makefile.inc1 Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/Makefile.inc1 Wed Nov 20 20:24:59 2013 (r258398)
@@ -1453,11 +1453,13 @@ _startup_libs+= lib/csu/${MACHINE_CPUARC
_startup_libs+= gnu/lib/libgcc
_startup_libs+= lib/libcompiler_rt
_startup_libs+= lib/libc
+_startup_libs+= lib/libc_nonshared
.if ${MK_LIBCPLUSPLUS} != "no"
_startup_libs+= lib/libcxxrt
.endif
gnu/lib/libgcc__L: lib/libc__L
+gnu/lib/libgcc__L: lib/libc_nonshared__L
.if ${MK_LIBCPLUSPLUS} != "no"
lib/libcxxrt__L: gnu/lib/libgcc__L
.endif
Modified: stable/10/include/iconv.h
==============================================================================
--- stable/10/include/iconv.h Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/include/iconv.h Wed Nov 20 20:24:59 2013 (r258398)
@@ -69,17 +69,12 @@ size_t __iconv(iconv_t, const char **, s
/*
* GNU interfaces for iconv
*/
-/* We have iconvctl() */
-#define _ICONV_VERSION 0x0108
-extern int _iconv_version;
-
typedef struct {
void *spaceholder[64];
} iconv_allocation_t;
int iconv_open_into(const char *, const char *, iconv_allocation_t *);
-void iconv_set_relocation_prefix(const char *orig_prefix,
- const char *curr_prefix);
+void iconv_set_relocation_prefix(const char *, const char *);
/*
* iconvctl() request macros
Modified: stable/10/lib/Makefile
==============================================================================
--- stable/10/lib/Makefile Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/lib/Makefile Wed Nov 20 20:24:59 2013 (r258398)
@@ -32,6 +32,7 @@
SUBDIR_ORDERED= ${_csu} \
libc \
+ libc_nonshared \
libbsm \
libauditd \
libcompiler_rt \
Modified: stable/10/lib/libc/iconv/Makefile.inc
==============================================================================
--- stable/10/lib/libc/iconv/Makefile.inc Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/lib/libc/iconv/Makefile.inc Wed Nov 20 20:24:59 2013 (r258398)
@@ -14,5 +14,5 @@ SRCS+= citrus_bcs.c citrus_bcs_strtol.c
citrus_esdb.c citrus_hash.c citrus_iconv.c citrus_lookup.c \
citrus_lookup_factory.c citrus_mapper.c citrus_memstream.c \
citrus_mmap.c citrus_module.c citrus_none.c citrus_pivot_factory.c \
- citrus_prop.c citrus_stdenc.c iconv.c
+ citrus_prop.c citrus_stdenc.c iconv.c iconv_compat.c
SYM_MAPS+= ${.CURDIR}/iconv/Symbol.map
Modified: stable/10/lib/libc/iconv/Symbol.map
==============================================================================
--- stable/10/lib/libc/iconv/Symbol.map Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/lib/libc/iconv/Symbol.map Wed Nov 20 20:24:59 2013 (r258398)
@@ -2,22 +2,18 @@
* $FreeBSD$
*/
-FBSD_1.2 {
- __iconv;
- __iconv_free_list;
- __iconv_get_list;
- iconv_canonicalize;
-};
-
FBSD_1.3 {
- _iconv_version;
- iconv;
- iconv_open;
- iconv_close;
- iconv_open_into;
- iconv_set_relocation_prefix;
- iconvctl;
- iconvlist;
+ __bsd___iconv;
+ __bsd___iconv_free_list;
+ __bsd___iconv_get_list;
+ __bsd_iconv;
+ __bsd_iconv_canonicalize;
+ __bsd_iconv_close;
+ __bsd_iconv_open;
+ __bsd_iconv_open_into;
+ __bsd_iconv_set_relocation_prefix;
+ __bsd_iconvctl;
+ __bsd_iconvlist;
};
FBSDprivate_1.0 {
Copied: stable/10/lib/libc/iconv/iconv-internal.h (from r258283, head/lib/libc/iconv/iconv-internal.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv-internal.h Wed Nov 20 20:24:59 2013 (r258398, copy of r258283, head/lib/libc/iconv/iconv-internal.h)
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Interal prototypes for our back-end functions.
+ */
+size_t __bsd___iconv(iconv_t, const char **, size_t *, char **,
+ size_t *, __uint32_t, size_t *);
+void __bsd___iconv_free_list(char **, size_t);
+int __bsd___iconv_get_list(char ***, size_t *, __iconv_bool);
+size_t __bsd_iconv(iconv_t, const char ** __restrict,
+ size_t * __restrict, char ** __restrict,
+ size_t * __restrict);
+const char *__bsd_iconv_canonicalize(const char *);
+int __bsd_iconv_close(iconv_t);
+iconv_t __bsd_iconv_open(const char *, const char *);
+int __bsd_iconv_open_into(const char *, const char *, iconv_allocation_t *);
+void __bsd_iconv_set_relocation_prefix(const char *, const char *);
+int __bsd_iconvctl(iconv_t, int, void *);
+void __bsd_iconvlist(int (*) (unsigned int, const char * const *, void *), void *);
Modified: stable/10/lib/libc/iconv/iconv.c
==============================================================================
--- stable/10/lib/libc/iconv/iconv.c Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/lib/libc/iconv/iconv.c Wed Nov 20 20:24:59 2013 (r258398)
@@ -47,15 +47,12 @@
#include "citrus_hash.h"
#include "citrus_iconv.h"
-#define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1)
-
-int _iconv_version = _ICONV_VERSION;
+#include "iconv-internal.h"
-iconv_t _iconv_open(const char *out, const char *in,
- struct _citrus_iconv *prealloc);
+#define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1)
-iconv_t
-_iconv_open(const char *out, const char *in, struct _citrus_iconv *handle)
+static iconv_t
+__bsd___iconv_open(const char *out, const char *in, struct _citrus_iconv *handle)
{
const char *out_slashes;
char *out_noslashes;
@@ -92,23 +89,23 @@ _iconv_open(const char *out, const char
}
iconv_t
-iconv_open(const char *out, const char *in)
+__bsd_iconv_open(const char *out, const char *in)
{
- return (_iconv_open(out, in, NULL));
+ return (__bsd___iconv_open(out, in, NULL));
}
int
-iconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr)
+__bsd_iconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr)
{
struct _citrus_iconv *handle;
handle = (struct _citrus_iconv *)ptr;
- return ((_iconv_open(out, in, handle) == (iconv_t)-1) ? -1 : 0);
+ return ((__bsd___iconv_open(out, in, handle) == (iconv_t)-1) ? -1 : 0);
}
int
-iconv_close(iconv_t handle)
+__bsd_iconv_close(iconv_t handle)
{
if (ISBADF(handle)) {
@@ -122,7 +119,7 @@ iconv_close(iconv_t handle)
}
size_t
-iconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout)
+__bsd_iconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout)
{
size_t ret;
int err;
@@ -143,7 +140,7 @@ iconv(iconv_t handle, const char **in, s
}
size_t
-__iconv(iconv_t handle, const char **in, size_t *szin, char **out,
+__bsd___iconv(iconv_t handle, const char **in, size_t *szin, char **out,
size_t *szout, uint32_t flags, size_t *invalids)
{
size_t ret;
@@ -167,7 +164,7 @@ __iconv(iconv_t handle, const char **in,
}
int
-__iconv_get_list(char ***rlist, size_t *rsz, bool sorted)
+__bsd___iconv_get_list(char ***rlist, size_t *rsz, bool sorted)
{
int ret;
@@ -181,7 +178,7 @@ __iconv_get_list(char ***rlist, size_t *
}
void
-__iconv_free_list(char **list, size_t sz)
+__bsd___iconv_free_list(char **list, size_t sz)
{
_citrus_esdb_free_list(list, sz);
@@ -202,7 +199,7 @@ qsort_helper(const void *first, const vo
}
void
-iconvlist(int (*do_one) (unsigned int, const char * const *,
+__bsd_iconvlist(int (*do_one) (unsigned int, const char * const *,
void *), void *data)
{
char **list, **names;
@@ -213,7 +210,7 @@ iconvlist(int (*do_one) (unsigned int, c
i = 0;
- if (__iconv_get_list(&list, &sz, true))
+ if (__bsd___iconv_get_list(&list, &sz, true))
list = NULL;
qsort((void *)list, sz, sizeof(char *), qsort_helper);
while (i < sz) {
@@ -222,7 +219,7 @@ iconvlist(int (*do_one) (unsigned int, c
curkey = (char *)malloc(slashpos - list[i] + 2);
names = (char **)malloc(sz * sizeof(char *));
if ((curkey == NULL) || (names == NULL)) {
- __iconv_free_list(list, sz);
+ __bsd___iconv_free_list(list, sz);
return;
}
strlcpy(curkey, list[i], slashpos - list[i] + 1);
@@ -231,7 +228,7 @@ iconvlist(int (*do_one) (unsigned int, c
slashpos = strchr(list[i], '/');
curitem = (char *)malloc(strlen(slashpos) + 1);
if (curitem == NULL) {
- __iconv_free_list(list, sz);
+ __bsd___iconv_free_list(list, sz);
return;
}
strlcpy(curitem, &slashpos[1], strlen(slashpos) + 1);
@@ -245,18 +242,18 @@ iconvlist(int (*do_one) (unsigned int, c
free(names);
}
- __iconv_free_list(list, sz);
+ __bsd___iconv_free_list(list, sz);
}
-__inline const char
-*iconv_canonicalize(const char *name)
+__inline const char *
+__bsd_iconv_canonicalize(const char *name)
{
return (_citrus_iconv_canonicalize(name));
}
int
-iconvctl(iconv_t cd, int request, void *argument)
+__bsd_iconvctl(iconv_t cd, int request, void *argument)
{
struct _citrus_iconv *cv;
struct iconv_hooks *hooks;
@@ -308,7 +305,7 @@ iconvctl(iconv_t cd, int request, void *
}
void
-iconv_set_relocation_prefix(const char *orig_prefix __unused,
+__bsd_iconv_set_relocation_prefix(const char *orig_prefix __unused,
const char *curr_prefix __unused)
{
Copied: stable/10/lib/libc/iconv/iconv_compat.c (from r258283, head/lib/libc/iconv/iconv_compat.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv_compat.c Wed Nov 20 20:24:59 2013 (r258398, copy of r258283, head/lib/libc/iconv/iconv_compat.c)
@@ -0,0 +1,121 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * These are ABI implementations for when the raw iconv_* symbol
+ * space was exposed via libc.so.7 in its early life. This is
+ * a transition aide, these wrappers will not normally ever be
+ * executed except via __sym_compat() references.
+ */
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+size_t
+__iconv_compat(iconv_t a, const char ** b, size_t * c, char ** d,
+ size_t * e, __uint32_t f, size_t *g)
+{
+ return __bsd___iconv(a, b, c, d, e, f, g);
+}
+
+void
+__iconv_free_list_compat(char ** a, size_t b)
+{
+ __bsd___iconv_free_list(a, b);
+}
+
+int
+__iconv_get_list_compat(char ***a, size_t *b, __iconv_bool c)
+{
+ return __bsd___iconv_get_list(a, b, c);
+}
+
+size_t
+iconv_compat(iconv_t a, const char ** __restrict b,
+ size_t * __restrict c, char ** __restrict d,
+ size_t * __restrict e)
+{
+ return __bsd_iconv(a, b, c, d, e);
+}
+
+const char *
+iconv_canonicalize_compat(const char *a)
+{
+ return __bsd_iconv_canonicalize(a);
+}
+
+int
+iconv_close_compat(iconv_t a)
+{
+ return __bsd_iconv_close(a);
+}
+
+iconv_t
+iconv_open_compat(const char *a, const char *b)
+{
+ return __bsd_iconv_open(a, b);
+}
+
+int
+iconv_open_into_compat(const char *a, const char *b, iconv_allocation_t *c)
+{
+ return __bsd_iconv_open_into(a, b, c);
+}
+
+void
+iconv_set_relocation_prefix_compat(const char *a, const char *b)
+{
+ return __bsd_iconv_set_relocation_prefix(a, b);
+}
+
+int
+iconvctl_compat(iconv_t a, int b, void *c)
+{
+ return __bsd_iconvctl(a, b, c);
+}
+
+void
+iconvlist_compat(int (*a) (unsigned int, const char * const *, void *), void *b)
+{
+ return __bsd_iconvlist(a, b);
+}
+
+int _iconv_version_compat = 0x0108; /* Magic - not used */
+
+__sym_compat(__iconv, __iconv_compat, FBSD_1.2);
+__sym_compat(__iconv_free_list, __iconv_free_list_compat, FBSD_1.2);
+__sym_compat(__iconv_get_list, __iconv_get_list_compat, FBSD_1.2);
+__sym_compat(_iconv_version, _iconv_version_compat, FBSD_1.3);
+__sym_compat(iconv, iconv_compat, FBSD_1.3);
+__sym_compat(iconv_canonicalize, iconv_canonicalize_compat, FBSD_1.2);
+__sym_compat(iconv_close, iconv_close_compat, FBSD_1.3);
+__sym_compat(iconv_open, iconv_open_compat, FBSD_1.3);
+__sym_compat(iconv_open_into, iconv_open_into_compat, FBSD_1.3);
+__sym_compat(iconv_set_relocation_prefix, iconv_set_relocation_prefix_compat, FBSD_1.3);
+__sym_compat(iconvctl, iconvctl_compat, FBSD_1.3);
+__sym_compat(iconvlist, iconvlist_compat, FBSD_1.3);
Modified: stable/10/lib/libc/libc.ldscript
==============================================================================
--- stable/10/lib/libc/libc.ldscript Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/lib/libc/libc.ldscript Wed Nov 20 20:24:59 2013 (r258398)
@@ -1,2 +1,2 @@
/* $FreeBSD$ */
-GROUP ( @@SHLIB@@ @@LIBDIR@@/libssp_nonshared.a )
+GROUP ( @@SHLIB@@ @@LIBDIR@@/libc_nonshared.a @@LIBDIR@@/libssp_nonshared.a )
Modified: stable/10/sys/sys/param.h
==============================================================================
--- stable/10/sys/sys/param.h Wed Nov 20 19:41:00 2013 (r258397)
+++ stable/10/sys/sys/param.h Wed Nov 20 20:24:59 2013 (r258398)
@@ -58,7 +58,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1000501 /* Master, propagated to newvers */
+#define __FreeBSD_version 1000502 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
More information about the svn-src-stable
mailing list