Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Feb 2014 16:41:11 +0100 (CET)
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/186846: [patch] converters/libiconv: compilation with -Oz broken
Message-ID:  <201402171541.s1HFfBsH019334@kalimero.tijl.coosemans.org>
Resent-Message-ID: <201402171550.s1HFo1xp024932@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         186846
>Category:       ports
>Synopsis:       [patch] converters/libiconv: compilation with -Oz broken
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Feb 17 15:50:01 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Tijl Coosemans
>Release:        FreeBSD 11.0-CURRENT i386
>Organization:
>Environment:
>Description:
Compilation is currently broken with clang and "env CFLAGS=-Oz make".

libtool: link: cc -Oz -fno-strict-aliasing iconv_no_i18n.o -o .libs/iconv_no_i18
n  ../srclib/libicrt.a ../lib/.libs/libiconv.so -Wl,-rpath -Wl,/usr/local/lib
../lib/.libs/libiconv.so: undefined reference to `aliases2_lookup'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

aliases2_lookup is an inline function that isn't inlined with -Oz so it
must be exported, meaning the code expects gnu89 semantics for the inline
keyword.

The patch below also enables -fvisibility=hidden and adds a patch to keep
some symbols like iconv_open visible.  It was disabled because it caused
these symbols to be hidden:
http://www.marcuscom.com:8080/cgi-bin/cvsweb.cgi/ports/converters/libiconv/Attic/Makefile?rev=1.2&content-type=text/x-cvsweb-markup
>How-To-Repeat:
>Fix:

--- libiconv.patch begins here ---
Index: converters/libiconv/Makefile
===================================================================
--- converters/libiconv/Makefile	(revision 344709)
+++ converters/libiconv/Makefile	(working copy)
@@ -3,21 +3,21 @@
 
 PORTNAME=	libiconv
 PORTVERSION=	1.14
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	converters devel
 MASTER_SITES=	GNU
 
 MAINTAINER=	gnome@FreeBSD.org
-COMMENT=	A character set conversion library
+COMMENT=	Character set conversion library
 
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--enable-static \
 		--without-libintl-prefix \
 		--docdir=${DOCSDIR}
-CONFIGURE_ENV=	gl_cv_cc_visibility="no" \
-		am_cv_func_iconv="yes" \
+CONFIGURE_ENV=	am_cv_func_iconv="yes" \
 		am_cv_proto_iconv_arg1="const"
 MAKE_JOBS_UNSAFE=	yes
+USE_CSTD=	gnu89
 USE_LDCONFIG=	yes
 
 OPTIONS_DEFINE=	ENCODINGS PATCHES
Index: converters/libiconv/files/patch-lib-iconv.c
===================================================================
--- converters/libiconv/files/patch-lib-iconv.c	(revision 0)
+++ converters/libiconv/files/patch-lib-iconv.c	(working copy)
@@ -0,0 +1,11 @@
+--- lib/iconv.c.orig
++++ lib/iconv.c
+@@ -598,7 +598,7 @@
+    It wants to define the symbols 'iconv_open', 'iconv', 'iconv_close'.  */
+ #define strong_alias(name, aliasname) _strong_alias(name, aliasname)
+ #define _strong_alias(name, aliasname) \
+-  extern __typeof (name) aliasname __attribute__ ((alias (#name)));
++  extern LIBICONV_DLL_EXPORTED __typeof (name) aliasname __attribute__ ((alias (#name)));
+ #undef iconv_open
+ #undef iconv
+ #undef iconv_close

Property changes on: converters/libiconv/files/patch-lib-iconv.c
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
--- libiconv.patch ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



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