Thread: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
jez.wain@bull.net
Date:
The following bug has been logged on the website:

Bug reference:      6758
Logged by:          jez wain
Email address:      jez.wain@bull.net
PostgreSQL version: 9.1.4
Operating system:   AIX 7.1
Description:=20=20=20=20=20=20=20=20

Building Postgresql on AIX7.1 with IBM's xlc compiler I got an undefined
symbol error on the link phase for the 'postgres' binary:


ld: 0711-317 ERROR: Undefined symbol: .mbstowcs_l
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.

AIX7 supports the mbstowcs API but not mbstowcs_l.  In
src/include/pg_config.h I commented out the define for HAVE_WCSTOMBS_L 1,
recompiled src/backend/utils/adt/pg_locale.c and the build completed
successfully.

This indicates that the ./configure script does not correctly detect the
absence of the locale specific wide-character/multi-byte API's (xxxx_l), on
AIX (near line 18945)

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Alvaro Herrera
Date:
Excerpts from jez.wain's message of mi=C3=A9 jul 25 05:49:35 -0400 2012:

> ld: 0711-317 ERROR: Undefined symbol: .mbstowcs_l
> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
> information.
>=20
> AIX7 supports the mbstowcs API but not mbstowcs_l.  In
> src/include/pg_config.h I commented out the define for HAVE_WCSTOMBS_L 1,
> recompiled src/backend/utils/adt/pg_locale.c and the build completed
> successfully.

This had been reported some time ago, see bug #6585:
http://archives.postgresql.org/message-id/E1SINxs-0001Zy-Gj@wrigleys.postgr=
esql.org

--=20
=C3=81lvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Tom Lane
Date:
Alvaro Herrera <alvherre@commandprompt.com> writes:
> Excerpts from jez.wain's message of mié jul 25 05:49:35 -0400 2012:
>> AIX7 supports the mbstowcs API but not mbstowcs_l.  In
>> src/include/pg_config.h I commented out the define for HAVE_WCSTOMBS_L 1,
>> recompiled src/backend/utils/adt/pg_locale.c and the build completed
>> successfully.

> This had been reported some time ago, see bug #6585:
> http://archives.postgresql.org/message-id/E1SINxs-0001Zy-Gj@wrigleys.postgresql.org

and in particular the relevant question is here:
http://archives.postgresql.org/pgsql-bugs/2012-04/msg00076.php

The previous complainant didn't help us do anything to resolve the
problem, but maybe you can help more.

            regards, tom lane

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Jez Wain
Date:
Alvaro,=20

This is indeed the same problem; my apologies for posting a duplicate.

I've checked on two AIXv7.1 servers, one using an xlCv11 runtime, the other=
 using an xlCv12 runtime.=20

On the v11 neither mbstowcs_l nor wcstombs_l are defined.  On the v12, both=
 are. So to answer the question posed on the archive link you provided, the=
 assumption made by your configure script appears to be valid.  This points=
 to there being a problem in the way the presence of these APIs is detected=
 in the configure script.

I built postgres on the V11 platform when I posted my bug report.  I'll hav=
e a go on the V12 to ensure that this error goes away.

Thanks for your reply,

   Jez


On 25 Jul 2012, at 18:17, Alvaro Herrera wrote:

>=20
> Excerpts from jez.wain's message of mi=E9 jul 25 05:49:35 -0400 2012:
>=20
>> ld: 0711-317 ERROR: Undefined symbol: .mbstowcs_l
>> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
>> information.
>>=20
>> AIX7 supports the mbstowcs API but not mbstowcs_l.  In
>> src/include/pg_config.h I commented out the define for HAVE_WCSTOMBS_L 1,
>> recompiled src/backend/utils/adt/pg_locale.c and the build completed
>> successfully.
>=20
> This had been reported some time ago, see bug #6585:
> http://archives.postgresql.org/message-id/E1SINxs-0001Zy-Gj@wrigleys.post=
gresql.org
>=20
> --=20
> =C1lvaro Herrera <alvherre@commandprompt.com>
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Tom Lane
Date:
Jez Wain <jez.wain@bull.net> writes:
> On the v11 neither mbstowcs_l nor wcstombs_l are defined.  On the v12, both are. So to answer the question posed on
thearchive link you provided, the assumption made by your configure script appears to be valid.  This points to there
beinga problem in the way the presence of these APIs is detected in the configure script. 

OK, now we understand what we're dealing with at least.  Can you look
into why mbstowcs_l is misdetected on v11?  The portion of config.log
where configure is probing for that function might be illuminating.

            regards, tom lane

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Andrew Hastie
Date:
Following up on getting PG built on AIXv7.1, I too have hit the same
issue reported in BUG #6758.

The posting of Thu, 26 Jul 2012 11:13:03 states that the problem does
*not* occur using the IBM xlc v12 compiler but *does* occur using the
v11 compiler.
 From what I have seen, the same issue still exists with the v12 compiler.

Here's the version info I see from xlc:-
$ xlc -qversion
IBM XL C/C++ for AIX, V12.1 (5765-J02, 5725-C72)
Version: 12.01.0000.0000

AIX is at version 7.1.0.0

I've applied the same "workaround" documented in this bug, and then the
build succeeds OK.

I'm currently working on a project where I need to get PGv9.1 up and
running on an IBM AIXv7.1 server, so I do have access to a suitable
machine for a period of time if I can provide any further diags to help
resolve the issue. I'll try and see if I can get longer term access to
this in order to participate in the build farm, but it may not be
possible "politically" where I work.

I'm more a Java/JDBC type person and can't confess to being a C guru, so
please make any follow-up requests for extra diags as simple as possible
please ;-)

Andrew

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Tom Lane
Date:
Andrew Hastie <andrew@ahastie.net> writes:
> I'm currently working on a project where I need to get PGv9.1 up and
> running on an IBM AIXv7.1 server, so I do have access to a suitable
> machine for a period of time if I can provide any further diags to help
> resolve the issue.

That would be helpful, because both of the previous complainants seem
to have wandered off without helping us get to the bottom of it :-(.

What I'd like to see at this point is the portion of config.log where
the configure script is trying to probe for wcstombs_l.  For example,
on a machine that has wcstombs and not wcstombs_l, I see:

...
configure:19272: checking for wcstombs
configure:19328: gcc -o conftest -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wformat-security -fno-strict-aliasing
-g -D_XOPEN_SOURCE_EXTENDED    conftest.c -lz -lreadline -ltermcap -lm  >&5 
configure:19335: $? = 0
configure:19357: result: yes
configure:19272: checking for wcstombs_l
configure:19328: gcc -o conftest -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wformat-security -fno-strict-aliasing
-g -D_XOPEN_SOURCE_EXTENDED    conftest.c -lz -lreadline -ltermcap -lm  >&5 
/usr/ccs/bin/ld: Unsatisfied symbols:
   wcstombs_l (code)
collect2: ld returned 1 exit status
configure:19335: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME "PostgreSQL"
| #define PACKAGE_TARNAME "postgresql"
| #define PACKAGE_VERSION "9.3devel"
| #define PACKAGE_STRING "PostgreSQL 9.3devel"
| #define PACKAGE_BUGREPORT "pgsql-bugs@postgresql.org"
| #define PG_VERSION "9.3devel"
| #define PG_MAJORVERSION "9.3"
| #define USE_INTEGER_DATETIMES 1
| #define DEF_PGPORT 5440
| #define DEF_PGPORT_STR "5440"
| #define BLCKSZ 8192
| #define RELSEG_SIZE 131072
| #define XLOG_BLCKSZ 8192
| #define XLOG_SEG_SIZE (16 * 1024 * 1024)
| #define USE_ASSERT_CHECKING 1
| #define PG_KRB_SRVNAM "postgres"
| #define HAVE_LIBM 1
| #define HAVE_LIBREADLINE 1
| #define HAVE_LIBZ 1
| #define HAVE_SPINLOCKS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_CRYPT_H 1
| #define HAVE_LANGINFO_H 1
| #define HAVE_POLL_H 1
| #define HAVE_PWD_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_IPC_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_PSTAT_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_SEM_H 1
| #define HAVE_SYS_SHM_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_UN_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_UTIME_H 1
| #define HAVE_WCHAR_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_NETINET_TCP_H 1
| #define HAVE_READLINE_READLINE_H 1
| #define HAVE_READLINE_HISTORY_H 1
| #define WORDS_BIGENDIAN 1
| #define USE_INLINE 1
| #define HAVE_STRINGIZE 1
| #define FLEXIBLE_ARRAY_MEMBER 1
| #define HAVE_FUNCNAME__FUNC 1
| #define HAVE_TZNAME 1
| #define HAVE_UNIX_SOCKETS 1
| #define HAVE_INTPTR_T 1
| #define HAVE_UINTPTR_T 1
| #define HAVE_LONG_LONG_INT 1
| #define _FILE_OFFSET_BITS 64
| #define SIZEOF_OFF_T 8
| #define HAVE_INT_TIMEZONE /**/
| #define ACCEPT_TYPE_RETURN int
| #define ACCEPT_TYPE_ARG1 int
| #define ACCEPT_TYPE_ARG2 struct sockaddr *
| #define ACCEPT_TYPE_ARG3 size_t
| #define HAVE_CBRT 1
| #define HAVE_FDATASYNC 1
| #define HAVE_GETRLIMIT 1
| #define HAVE_MEMMOVE 1
| #define HAVE_POLL 1
| #define HAVE_PSTAT 1
| #define HAVE_READLINK 1
| #define HAVE_SETSID 1
| #define HAVE_SIGPROCMASK 1
| #define HAVE_SYMLINK 1
| #define HAVE_TOWLOWER 1
| #define HAVE_UTIME 1
| #define HAVE_UTIMES 1
| #define HAVE_WCSTOMBS 1
| /* end confdefs.h.  */
| /* Define wcstombs_l to an innocuous variant, in case <limits.h> declares wcstombs_l.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define wcstombs_l innocuous_wcstombs_l
|
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char wcstombs_l (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
|
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|
| #undef wcstombs_l
|
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char wcstombs_l ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_wcstombs_l || defined __stub___wcstombs_l
| choke me
| #endif
|
| int
| main ()
| {
| return wcstombs_l ();
|   ;
|   return 0;
| }
configure:19357: result: no
configure:19374: checking for fseeko
...

It would also be interesting to check what would happen if configure
actually tried to probe for mbstowcs_l, instead of making assumptions.
To do that, copy the test program above (removing the "| " indentation),
replace "wcstombs_l" by "mbstowcs_l", and then try to compile it ---
but be sure to use the compile command shown in your config.log, not
mine.

            regards, tom lane

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Andrew Hastie
Date:
On 29/08/12 18:16, Tom Lane wrote:
> Andrew Hastie <andrew@ahastie.net> writes:
>> I'm currently working on a project where I need to get PGv9.1 up and
>> running on an IBM AIXv7.1 server, so I do have access to a suitable
>> machine for a period of time if I can provide any further diags to help
>> resolve the issue.
> That would be helpful, because both of the previous complainants seem
> to have wandered off without helping us get to the bottom of it :-(.
>
> What I'd like to see at this point is the portion of config.log where
> the configure script is trying to probe for wcstombs_l.  For example,
> on a machine that has wcstombs and not wcstombs_l, I see:
>
> ...
> configure:19272: checking for wcstombs
> configure:19328: gcc -o conftest -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wformat-security
-fno-strict-aliasing-g  -D_XOPEN_SOURCE_EXTENDED    conftest.c -lz -lreadline -ltermcap -lm  >&5 
> configure:19335: $? = 0
> configure:19357: result: yes
> configure:19272: checking for wcstombs_l
> configure:19328: gcc -o conftest -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wformat-security
-fno-strict-aliasing-g  -D_XOPEN_SOURCE_EXTENDED    conftest.c -lz -lreadline -ltermcap -lm  >&5 
> /usr/ccs/bin/ld: Unsatisfied symbols:
>     wcstombs_l (code)
> collect2: ld returned 1 exit status
> configure:19335: $? = 1
> configure: failed program was:
> | /* confdefs.h.  */
> | #define PACKAGE_NAME "PostgreSQL"
> | #define PACKAGE_TARNAME "postgresql"
> | #define PACKAGE_VERSION "9.3devel"
> | #define PACKAGE_STRING "PostgreSQL 9.3devel"
> | #define PACKAGE_BUGREPORT "pgsql-bugs@postgresql.org"
> | #define PG_VERSION "9.3devel"
> | #define PG_MAJORVERSION "9.3"
> | #define USE_INTEGER_DATETIMES 1
> | #define DEF_PGPORT 5440
> | #define DEF_PGPORT_STR "5440"
> | #define BLCKSZ 8192
> | #define RELSEG_SIZE 131072
> | #define XLOG_BLCKSZ 8192
> | #define XLOG_SEG_SIZE (16 * 1024 * 1024)
> | #define USE_ASSERT_CHECKING 1
> | #define PG_KRB_SRVNAM "postgres"
> | #define HAVE_LIBM 1
> | #define HAVE_LIBREADLINE 1
> | #define HAVE_LIBZ 1
> | #define HAVE_SPINLOCKS 1
> | #define STDC_HEADERS 1
> | #define HAVE_SYS_TYPES_H 1
> | #define HAVE_SYS_STAT_H 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_STRING_H 1
> | #define HAVE_MEMORY_H 1
> | #define HAVE_STRINGS_H 1
> | #define HAVE_INTTYPES_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_CRYPT_H 1
> | #define HAVE_LANGINFO_H 1
> | #define HAVE_POLL_H 1
> | #define HAVE_PWD_H 1
> | #define HAVE_SYS_IOCTL_H 1
> | #define HAVE_SYS_IPC_H 1
> | #define HAVE_SYS_POLL_H 1
> | #define HAVE_SYS_PSTAT_H 1
> | #define HAVE_SYS_RESOURCE_H 1
> | #define HAVE_SYS_SEM_H 1
> | #define HAVE_SYS_SHM_H 1
> | #define HAVE_SYS_SOCKET_H 1
> | #define HAVE_SYS_TIME_H 1
> | #define HAVE_SYS_UN_H 1
> | #define HAVE_TERMIOS_H 1
> | #define HAVE_UTIME_H 1
> | #define HAVE_WCHAR_H 1
> | #define HAVE_NET_IF_H 1
> | #define HAVE_NETINET_IN_H 1
> | #define HAVE_NETINET_TCP_H 1
> | #define HAVE_READLINE_READLINE_H 1
> | #define HAVE_READLINE_HISTORY_H 1
> | #define WORDS_BIGENDIAN 1
> | #define USE_INLINE 1
> | #define HAVE_STRINGIZE 1
> | #define FLEXIBLE_ARRAY_MEMBER 1
> | #define HAVE_FUNCNAME__FUNC 1
> | #define HAVE_TZNAME 1
> | #define HAVE_UNIX_SOCKETS 1
> | #define HAVE_INTPTR_T 1
> | #define HAVE_UINTPTR_T 1
> | #define HAVE_LONG_LONG_INT 1
> | #define _FILE_OFFSET_BITS 64
> | #define SIZEOF_OFF_T 8
> | #define HAVE_INT_TIMEZONE /**/
> | #define ACCEPT_TYPE_RETURN int
> | #define ACCEPT_TYPE_ARG1 int
> | #define ACCEPT_TYPE_ARG2 struct sockaddr *
> | #define ACCEPT_TYPE_ARG3 size_t
> | #define HAVE_CBRT 1
> | #define HAVE_FDATASYNC 1
> | #define HAVE_GETRLIMIT 1
> | #define HAVE_MEMMOVE 1
> | #define HAVE_POLL 1
> | #define HAVE_PSTAT 1
> | #define HAVE_READLINK 1
> | #define HAVE_SETSID 1
> | #define HAVE_SIGPROCMASK 1
> | #define HAVE_SYMLINK 1
> | #define HAVE_TOWLOWER 1
> | #define HAVE_UTIME 1
> | #define HAVE_UTIMES 1
> | #define HAVE_WCSTOMBS 1
> | /* end confdefs.h.  */
> | /* Define wcstombs_l to an innocuous variant, in case <limits.h> declares wcstombs_l.
> |    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
> | #define wcstombs_l innocuous_wcstombs_l
> |
> | /* System header to define __stub macros and hopefully few prototypes,
> |     which can conflict with char wcstombs_l (); below.
> |     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
> |     <limits.h> exists even on freestanding compilers.  */
> |
> | #ifdef __STDC__
> | # include <limits.h>
> | #else
> | # include <assert.h>
> | #endif
> |
> | #undef wcstombs_l
> |
> | /* Override any GCC internal prototype to avoid an error.
> |    Use char because int might match the return type of a GCC
> |    builtin and then its argument prototype would still apply.  */
> | #ifdef __cplusplus
> | extern "C"
> | #endif
> | char wcstombs_l ();
> | /* The GNU C library defines this for functions which it implements
> |     to always fail with ENOSYS.  Some functions are actually named
> |     something starting with __ and the normal name is an alias.  */
> | #if defined __stub_wcstombs_l || defined __stub___wcstombs_l
> | choke me
> | #endif
> |
> | int
> | main ()
> | {
> | return wcstombs_l ();
> |   ;
> |   return 0;
> | }
> configure:19357: result: no
> configure:19374: checking for fseeko
> ...
>
> It would also be interesting to check what would happen if configure
> actually tried to probe for mbstowcs_l, instead of making assumptions.
> To do that, copy the test program above (removing the "| " indentation),
> replace "wcstombs_l" by "mbstowcs_l", and then try to compile it ---
> but be sure to use the compile command shown in your config.log, not
> mine.
>
>             regards, tom lane
>
Hi Tom,

Thanks for the pointers. Hopefully some of the following may shed some
light on the issue.

Here's the portion from config.log when probing for "wctsombs" and
"wctsombs_l" :-

configure:18948: checking for wcstombs
configure:19004: xlc -o conftest -qlanglvl=extc89 -qnoansialias
-I/opt/freeware/include -I/home/ahastie/gnu/zlib-1.2.7
-I/home/ahastie/gnu/readline-6.2   -L/opt/freeware/lib conftest.c -lz
-lreadline -l
m -lssl -lcrypto -lz -lreadline -lcurses -lld -lmass -lm >&5
configure:19011: $? = 0
configure:19033: result: yes
configure:18948: checking for wcstombs_l
configure:19004: xlc -o conftest -qlanglvl=extc89 -qnoansialias
-I/opt/freeware/include -I/home/ahastie/gnu/zlib-1.2.7
-I/home/ahastie/gnu/readline-6.2   -L/opt/freeware/lib conftest.c -lz
-lreadline -l
m -lssl -lcrypto -lz -lreadline -lcurses -lld -lmass -lm >&5
configure:19011: $? = 0
configure:19033: result: yes

So both probe OK. Here's the fail from gmake just to confirm the error:-

ld: 0711-317 ERROR: Undefined symbol: .mbstowcs_l
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
gmake[2]: *** [postgres] Error 8
gmake[2]: Leaving directory `/home/ahastie/postgresql-9.1.5/src/backend'
gmake[1]: *** [all-backend-recurse] Error 2
gmake[1]: Leaving directory `/home/ahastie/postgresql-9.1.5/src'
gmake: *** [all-src-recurse] Error 2


Using confdefs.c as a template, I created 2 tests where I only changed
the method names contained in the final 14 lines. Here are the results:-

Test #1
=====
Source (end portion only)

....
char wcstombs_l ();
/* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
#if defined __stub_wcstombs_l |defined __stub___wcstombs_l
choke me
#endif

int
main ()
{
return wcstombs_l ();
   ;
   return 0;
}$

Results #1
=======
$ xlc -o conftest -qlanglvl=extc89 -qnoansialias -I/opt/freeware/include
-I/home/ahastie/gnu/zlib-1.2.7 -I/home/ahastie/gnu/readline-6.2
-L/opt/freeware/lib pgtest.c -lz -lreadline -lm -lssl -lcrypto -lz
-lreadline -lcurses -lld -lmass -lm
$

Test #2
=====

Source (end portion only)

.......
char mbstowcs_l ();
/* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
#if defined __stub_wcstombs_l |defined __stub___wcstombs_l
choke me
#endif

int
main ()
{
return mbstowcs_l ();
   ;
   return 0;
}$

Results #2
=======
$ xlc -o conftest -qlanglvl=extc89 -qnoansialias -I/opt/freeware/include
-I/home/ahastie/gnu/zlib-1.2.7 -I/home/ahastie/gnu/readline-6.2
-L/opt/freeware/lib pgtest2.c -lz -lreadline -lm -lssl -lcrypto -lz
-lreadline -lcurses -lld -lmass -lm
ld: 0711-317 ERROR: Undefined symbol: .mbstowcs_l
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
$


If it helps, I tried the above call with the loadmap logging switched
on, and here is the output:-

(ld): halt 4
(ld): setfflag 4
(ld): savename conftest
(ld): filelist 14 1
(ld): i /lib/crt0.o
(ld): i pgtest2.o
(ld): lib /opt/freeware/lib/libz.a
(ld): lib /opt/freeware/lib/libreadline.a
(ld): lib /usr/lib/libm.a
(ld): lib /usr/lib/libssl.a
(ld): lib /usr/lib/libcrypto.a
(ld): lib /usr/lib/libcurses.a
(ld): lib /usr/lib/libld.a
(ld): lib /usr/lib/libmass.a
(ld): lib /usr/vac/lib/libxlopt.a
(ld): lib /usr/vac/lib/libxlipa.a
(ld): lib /usr/vac/lib/libxl.a
(ld): lib /usr/lib/libc.a
LIBRARY: Shared object libz.a[libz.so.1]: 72 symbols imported.
LIBRARY: Shared object libreadline.a[libreadline.so.4]: 398 symbols
imported.
LIBRARY: Shared object libssl.a[libssl.so.0.9.8]: 459 symbols imported.
LIBRARY: Shared object libcrypto.a[libcrypto.so.0.9.8]: 3040 symbols
imported.
LIBRARY: Shared object libcurses.a[shr42.o]: 508 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3244 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
FILELIST: Number of previously inserted files processed: 14
(ld): resolve
RESOLVE: 30 of 13260 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 2 symbols.
(ld): er full
ld: 0711-318 ERROR: Undefined symbols were found.
         The following symbols are in error:
  Symbol                    Inpndx  TY CL Source-File(Object-File) OR
Import-File{Shared-object}
                               RLD: Address  Section  Rld-type
Referencing Symbol
  ----------------------------------------------------------------------------------------------
  .mbstowcs_l               [20]    ER PR pgtest2.c(pgtest2.o)
                                    0000000c .text    R_RBR [12]    .main
ER: The return code is 8.

Again, let me know if you'd like me to test anything further.

Thanks,
Andrew

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Tom Lane
Date:
Andrew Hastie <andrew@ahastie.net> writes:
> Thanks for the pointers. Hopefully some of the following may shed some
> light on the issue.

Thanks for the results.  It seems difficult to come to any conclusion
other than that AIX has got wcstombs_l but not mbstowcs_l ... which is
darn bizarre; I'd suggest reporting it as a bug to IBM.

In the meantime, it seems like what we had better do is explicitly
test for both functions, rather than making the assumption that they
would both or neither be present.  I'm not sure if we can provide any
extra functionality if only wcstombs_l is available --- that will
have to emerge in making the patch.  We can certainly build without
it though.

As a temporary workaround, you should probably just modify pg_config.h
after configure runs, to remove the HAVE_WCSTOMBS_L symbol.

            regards, tom lane

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Andrew Hastie
Date:
On 31/08/12 15:59, Tom Lane wrote:
> Andrew Hastie <andrew@ahastie.net> writes:
>> Thanks for the pointers. Hopefully some of the following may shed some
>> light on the issue.
> Thanks for the results.  It seems difficult to come to any conclusion
> other than that AIX has got wcstombs_l but not mbstowcs_l ... which is
> darn bizarre; I'd suggest reporting it as a bug to IBM.
>
> In the meantime, it seems like what we had better do is explicitly
> test for both functions, rather than making the assumption that they
> would both or neither be present.  I'm not sure if we can provide any
> extra functionality if only wcstombs_l is available --- that will
> have to emerge in making the patch.  We can certainly build without
> it though.
>
> As a temporary workaround, you should probably just modify pg_config.h
> after configure runs, to remove the HAVE_WCSTOMBS_L symbol.
Confirm that the workaround works just fine. Now have PG 9.1.5 up and
running on AIX just fine.
Thanks.
Andrew
>
>             regards, tom lane
>
>

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Tom Lane
Date:
Andrew Hastie <andrew@ahastie.net> writes:
> On 31/08/12 15:59, Tom Lane wrote:
>> As a temporary workaround, you should probably just modify pg_config.h
>> after configure runs, to remove the HAVE_WCSTOMBS_L symbol.

> Confirm that the workaround works just fine. Now have PG 9.1.5 up and
> running on AIX just fine.

Thanks for checking.  If you have time, perhaps you'd like to apply the
committed patch:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=97395185b85b786523ee41225b53bd84c98d34f4
and confirm that all is well when using that.

            regards, tom lane

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Andrew Hastie
Date:
Apologies for delay in progressing this, but I only have access to an
AIX7.1 system periodically.

Just to confirm that source build of 9.2.1 release now builds clean
against AIXv7.1 with xlc v12.1 compiler.

Thanks,
Andrew



On 31/08/12 20:20, Tom Lane wrote:
> Andrew Hastie<andrew@ahastie.net>  writes:
>> On 31/08/12 15:59, Tom Lane wrote:
>>> As a temporary workaround, you should probably just modify pg_config.h
>>> after configure runs, to remove the HAVE_WCSTOMBS_L symbol.
>> Confirm that the workaround works just fine. Now have PG 9.1.5 up and
>> running on AIX just fine.
> Thanks for checking.  If you have time, perhaps you'd like to apply the
> committed patch:
> http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=97395185b85b786523ee41225b53bd84c98d34f4
> and confirm that all is well when using that.
>
>             regards, tom lane
>
>

Re: BUG #6758: ./configure script sets HAVE_WCSTOMBS_L 1

From
Andrew Hastie
Date:
Apologies for delay in progressing this, but I only have access to an
AIX7.1 system periodically.

Just to confirm that source build of 9.2.1 release now builds clean
against AIXv7.1 with xlc v12.1 compiler.

Thanks,
Andrew



On 31/08/12 20:20, Tom Lane wrote:
> Andrew Hastie<andrew@ahastie.net>  writes:
>> On 31/08/12 15:59, Tom Lane wrote:
>>> As a temporary workaround, you should probably just modify pg_config.h
>>> after configure runs, to remove the HAVE_WCSTOMBS_L symbol.
>> Confirm that the workaround works just fine. Now have PG 9.1.5 up and
>> running on AIX just fine.
> Thanks for checking.  If you have time, perhaps you'd like to apply the
> committed patch:
> http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=97395185b85b786523ee41225b53bd84c98d34f4
> and confirm that all is well when using that.
>
>             regards, tom lane
>
>

--

/*Andrew Hastie*/*
Software Engineer
Rocket.AS Support and Development
Rocket Software
*Innovation Centre · Warwick Technology Park, Warwick CV34 6UW · UK
Tel: +44.1926.482545
Email: andrew.hastie@rocketsoftware.com
<mailto:andrew.hastie@rocketsoftware.com>
Web: www.rocketsoftware.com/as <http://www.rocketsoftware.com/as>