Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Nov 2013 20:25:00 +0000 (UTC)
From:      Peter Wemm <peter@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r258398 - in stable/10: . include lib lib/libc lib/libc/iconv lib/libc_nonshared sys/sys
Message-ID:  <201311202025.rAKKP0ce054293@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311202025.rAKKP0ce054293>