diff -urN old/libiconv-1.14/lib/relocatable.c new/libiconv-1.14/lib/relocatable.c --- old/libiconv-1.14/lib/relocatable.c 2011-08-07 13:48:03.000000000 -0400 +++ new/libiconv-1.14/lib/relocatable.c 2011-10-15 03:14:13.195133600 -0400 @@ -2,20 +2,18 @@ Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc. Written by Bruno Haible , 2003. - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2, or (at your option) - any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - USA. */ + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ /* Tell glibc's to provide a prototype for getline(). @@ -87,6 +85,19 @@ # define FILE_SYSTEM_PREFIX_LEN(P) 0 #endif +/* Whether to enable the more costly support for relocatable libraries. + It allows libraries to be have been installed with a different original + prefix than the program. But it is quite costly, especially on Cygwin + platforms, see below. Therefore we enable it by default only on native + Win32 platforms. */ +#ifndef ENABLE_COSTLY_RELOCATABLE +# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ +# define ENABLE_COSTLY_RELOCATABLE 1 +# else +# define ENABLE_COSTLY_RELOCATABLE 0 +# endif +#endif + /* Original installation prefix. */ static char *orig_prefix; static size_t orig_prefix_len; @@ -156,7 +167,7 @@ #endif } -#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) /* Convenience function: Computes the current installation prefix, based on the original @@ -286,7 +297,7 @@ #endif /* !IN_LIBRARY || PIC */ -#if defined PIC && defined INSTALLDIR +#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE /* Full pathname of shared library, or NULL. */ static char *shared_library_fullname; @@ -332,7 +343,9 @@ #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() function. - Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */ + Cygwin >= 1.5 has /proc/self/maps and the getline() function too. + But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on + Cygwin 1.7. */ FILE *fp; /* Open the current process' maps file. It describes one VMA per line. */ @@ -405,7 +418,7 @@ const char * relocate (const char *pathname) { -#if defined PIC && defined INSTALLDIR +#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE static int initialized; /* Initialization code for a shared library. */ diff -urN old/libiconv-1.14/libcharset/lib/relocatable.c new/libiconv-1.14/libcharset/lib/relocatable.c --- old/libiconv-1.14/libcharset/lib/relocatable.c 2011-08-07 13:48:03.000000000 -0400 +++ new/libiconv-1.14/libcharset/lib/relocatable.c 2011-10-15 03:14:27.878133600 -0400 @@ -2,20 +2,18 @@ Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc. Written by Bruno Haible , 2003. - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2, or (at your option) - any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - USA. */ + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ /* Tell glibc's to provide a prototype for getline(). @@ -87,6 +85,19 @@ # define FILE_SYSTEM_PREFIX_LEN(P) 0 #endif +/* Whether to enable the more costly support for relocatable libraries. + It allows libraries to be have been installed with a different original + prefix than the program. But it is quite costly, especially on Cygwin + platforms, see below. Therefore we enable it by default only on native + Win32 platforms. */ +#ifndef ENABLE_COSTLY_RELOCATABLE +# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ +# define ENABLE_COSTLY_RELOCATABLE 1 +# else +# define ENABLE_COSTLY_RELOCATABLE 0 +# endif +#endif + /* Original installation prefix. */ static char *orig_prefix; static size_t orig_prefix_len; @@ -156,7 +167,7 @@ #endif } -#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) /* Convenience function: Computes the current installation prefix, based on the original @@ -286,7 +297,7 @@ #endif /* !IN_LIBRARY || PIC */ -#if defined PIC && defined INSTALLDIR +#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE /* Full pathname of shared library, or NULL. */ static char *shared_library_fullname; @@ -332,7 +343,9 @@ #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() function. - Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */ + Cygwin >= 1.5 has /proc/self/maps and the getline() function too. + But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on + Cygwin 1.7. */ FILE *fp; /* Open the current process' maps file. It describes one VMA per line. */ @@ -405,7 +418,7 @@ const char * relocate (const char *pathname) { -#if defined PIC && defined INSTALLDIR +#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE static int initialized; /* Initialization code for a shared library. */ diff -urN old/libiconv-1.14/srclib/relocatable.c new/libiconv-1.14/srclib/relocatable.c --- old/libiconv-1.14/srclib/relocatable.c 2011-08-07 09:42:06.000000000 -0400 +++ new/libiconv-1.14/srclib/relocatable.c 2011-10-15 03:14:37.739133600 -0400 @@ -3,16 +3,16 @@ Written by Bruno Haible , 2003. This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ @@ -85,6 +85,19 @@ # define FILE_SYSTEM_PREFIX_LEN(P) 0 #endif +/* Whether to enable the more costly support for relocatable libraries. + It allows libraries to be have been installed with a different original + prefix than the program. But it is quite costly, especially on Cygwin + platforms, see below. Therefore we enable it by default only on native + Win32 platforms. */ +#ifndef ENABLE_COSTLY_RELOCATABLE +# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ +# define ENABLE_COSTLY_RELOCATABLE 1 +# else +# define ENABLE_COSTLY_RELOCATABLE 0 +# endif +#endif + /* Original installation prefix. */ static char *orig_prefix; static size_t orig_prefix_len; @@ -154,7 +167,7 @@ #endif } -#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE) /* Convenience function: Computes the current installation prefix, based on the original @@ -284,7 +297,7 @@ #endif /* !IN_LIBRARY || PIC */ -#if defined PIC && defined INSTALLDIR +#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE /* Full pathname of shared library, or NULL. */ static char *shared_library_fullname; @@ -330,7 +343,9 @@ #if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__ /* Linux has /proc/self/maps. glibc 2 and uClibc have the getline() function. - Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */ + Cygwin >= 1.5 has /proc/self/maps and the getline() function too. + But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on + Cygwin 1.7. */ FILE *fp; /* Open the current process' maps file. It describes one VMA per line. */ @@ -403,7 +418,7 @@ const char * relocate (const char *pathname) { -#if defined PIC && defined INSTALLDIR +#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE static int initialized; /* Initialization code for a shared library. */