bugzilla-daemon at mindrot.org
2014-Nov-14 21:26 UTC
[Bug 2315] New: OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Bug ID: 2315
Summary: OpenSSH 6.7p1 on AIX 7.1 compile issue
Product: Portable OpenSSH
Version: 6.7p1
Hardware: PPC
OS: AIX
Status: NEW
Severity: normal
Priority: P5
Component: Build system
Assignee: unassigned-bugs at mindrot.org
Reporter: yaberger at ca.ibm.com
Hi,
I'm trying to compile OpenSSH 6.7p1 on AIX 7.1 TL2 SP3 with IBM XL
C/C++ 12.1.0.9, OpenSSL 1.0.1j and zlib 1.2.8
This is my compile procedure:
export PATH=$PATH:/usr/vac/bin
/usr/bin/gzip -cd openssh-6.7p1.tar.gz |/usr/bin/tar xf -
cd openssh-6.7p1
./configure --prefix=/usr/local/openssh-6.7p1 --sysconfdir=/etc/ssh
--without-shadow --with-ssl-dir=/usr/local/openssl
--with-zlib=/usr/local/zlib
/usr/bin/make
And I get the following error:
cc -qlanglvl=extc89 -o ssh ssh.o readconf.o clientloop.o sshtty.o
sshconnect.o sshconnect1.o sshconnect2.o mux.o roaming_common.o
roaming_client.o -L. -Lopenbsd-compat/ -L/usr/local/openssl/lib
-L/usr/local/zlib/lib -blibpath:/usr/lib:/lib -lssh -lopenbsd-compat
-lcrypto -lz
ld: 0711-317 ERROR: Undefined symbol: .va_copy
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
make: 1254-004 The error code from the last command is 8.
Same error on AIX 5.3 TL12 SP9 with IBM XL C/C++ 11.1.0.19 and AIX 6.1
TL8 SP3 with IBM XL C/C++ 10.1.0.20
I was able to compile OpenSSH 6.6p1 with OpenSSL 1.0.1i and zlib 1.2.8
with this procedure without issue.
I've found that by adding this in sshbuf-getput-basic.c and by
replacing every occurence of va_copy by VA_COPY, I'm now able to
compile it.
#ifndef VA_COPY
# ifdef HAVE_VA_COPY
# define VA_COPY(dest, src) va_copy(dest, src)
# else
# ifdef HAVE___VA_COPY
# define VA_COPY(dest, src) __va_copy(dest, src)
# else
# define VA_COPY(dest, src) (dest) = (src)
# endif
# endif
#endif
This fix/workaround is inspired by openbsd-compat/bsd-snprintf.c
Do you believe it would be the right fix to apply?
If so, could it be done in master so that next release include it?
If it's not the right fix, anyone willing to look at this issue and
suggest another fix?
Best regards,
Yannick Bergeron
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2014-Nov-14 21:26 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Yannick Bergeron <yaberger at ca.ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |yaberger at ca.ibm.com
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-Mar-01 19:34 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Michael Felt <aixtools at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aixtools at gmail.com
--- Comment #1 from Michael Felt <aixtools at gmail.com> ---
The much easier way is to set CC=xlc before running configure.
By default cc is much closer to c89 (or even pre-c89?) whereas xlc is
much closer to c99.
The key difference, as far as va_copy is concerned is that xlc and it's
derivatives redefine va_copy into a builtin function.
Test program: va_copy_test.c:
==#include <stdarg.h>
/*
* test va_copy changes by changing XL C compiler name (cc, c89, c99,
xlc)
* and the -E flag
*/
va_copy_test(void *a, void *b)
{
#ifdef _ANSI_C_SOURCE
#ifdef _ISOC99_SOURCE
va_copy(a,b);
#else
fake_ansi_copy(a,b);
#endif
#endif
#ifndef _ANSI_C_SOURCE
fake_noansi_copy(a,b);
#endif
}
==CC=cc
root at x064:[/data/prj/openbsd/openssh]cc -E va_copy_test.c
#line 62 "/usr/include/va_list.h"
typedef char *va_list;
#line 8 "va_copy_test.c"
va_copy_test(void *a, void *b)
{
#line 13
va_copy(a,b);
#line 21
}
CC=c89
root at x064:[/data/prj/openbsd/openssh]c89 -E va_copy_test.c
#line 62 "/usr/include/va_list.h"
typedef char *va_list;
#line 8 "va_copy_test.c"
va_copy_test(void *a, void *b)
{
#line 15
fake_ansi_copy(a,b);
#line 21
}
CC=c99
root at x064:[/data/prj/openbsd/openssh]c99 -E va_copy_test.c
#line 62 "/usr/include/va_list.h"
typedef char *va_list;
#line 8 "va_copy_test.c"
va_copy_test(void *a, void *b)
{
#line 13
__builtin_va_copy(a,b);
#line 21
}
CC=xlc
root at x064:[/data/prj/openbsd/openssh]xlc -E va_copy_test.c
#line 62 "/usr/include/va_list.h"
typedef char *va_list;
#line 8 "va_copy_test.c"
va_copy_test(void *a, void *b)
{
#line 13
__builtin_va_copy(a,b);
#line 21
}
Although c99 and xlc give the same results - for this - my preference
is to use xlc. Review /etc/vac.cfg.?? and compare c99 with xlc and make
your choice. Saves you a lot of code changes!
--
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-Apr-15 06:32 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Darren Tucker <dtucker at zip.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |2360
CC| |dtucker at zip.com.au
--- Comment #2 from Darren Tucker <dtucker at zip.com.au> ---
At to list to look at for 6.9p1
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at mindrot.org
2015-Jun-05 03:55 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Damien Miller <djm at mindrot.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |djm at mindrot.org
--- Comment #3 from Damien Miller <djm at mindrot.org> ---
Does this still need fixing? Darren committed this last year:
Author: Darren Tucker <dtucker at zip.com.au>
Date: Thu Jun 12 05:22:49 2014 +1000
- (dtucker) [defines.h] Add va_copy if we don't already have it,
taken from
openbsd-compat/bsd-asprintf.c
--- a/defines.h
+++ b/defines.h
...
+#ifndef HAVE_VA_COPY
+# ifdef HAVE___VA_COPY
+# define va_copy(dest, src) __va_copy(dest, src)
+# else
+# define va_copy(dest, src) (dest) = (src)
+# endif
+#endif
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at mindrot.org
2015-Jun-06 21:02 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
--- Comment #4 from Michael Felt <aixtools at gmail.com> ---
No, not a bug imho - just use the right compiler option - either c99 or
xlc.
The key differences in what the different compiler options are - when
started by a different can be found in /etc/vac.cfg.NN where NN is 53,
61, or 71 depending your current version of AIX.
For your convenience the key differences are the default options
triggered:
* -qlanglvl=extc99 C compiler with common extensions, UNIX headers
xlc: use = DEFLT_C
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/vac/lib,-lxlopt,-lxlipa,-lxl,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options -qlanglvl=extc99,-qcpluscmt,-qkeyword=inline,-qalias=ansi
* C compiler, extended mode
cc: use = DEFLT_C
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/vac/lib,-lxlopt,-lxlipa,-lxl,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options = -qlanglvl=extended,-qnoro,-qnoroconst
* Strict ANSI compiler, ANSI headers
c89: use = DEFLT_C
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/vac/lib,-lxlopt,-lxlipa,-lxl,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options -D_ANSI_C_SOURCE,-qalias=ansi,-qnolonglong,-qstrict_induction
* Strict ANSI compiler, ANSI headers
c99: use = DEFLT_C
crt = /lib/crt0.o
mcrt = /lib/mcrt0.o
gcrt = /lib/gcrt0.o
libraries = -L/usr/vac/lib,-lxlopt,-lxlipa,-lxl,-lc
proflibs = -L/lib/profiled,-L/usr/lib/profiled
options
-qlanglvl=stdc99,-D_ANSI_C_SOURCE,-D_ISOC99_SOURCE,-qalias=ansi,-qstrict_induction
If you wanted to be nice you could default cc=xlc (my recommendation)
when running ./configure on AIX rather than cc when CC is not defined
as an environment variable. This assumes gcc is also not available.
>From my examples above showing the result of different ${CC} results
both c99 and xlc do va_copy as a built-in - no external reference
needed. No new define needed either.
Michael
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at mindrot.org
2015-Aug-12 01:00 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Damien Miller <djm at mindrot.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |2443
--- Comment #5 from Damien Miller <djm at mindrot.org> ---
Move unfinished bugs from 6.9 (how did I miss these?) to 7.1
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2015-Aug-21 10:56 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Darren Tucker <dtucker at zip.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |2451
Referenced Bugs:
https://bugzilla.mindrot.org/show_bug.cgi?id=2451
[Bug 2451] Bugs intended to be fixed in 7.2
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2015-Aug-21 10:58 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Darren Tucker <dtucker at zip.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks|2443 |
Referenced Bugs:
https://bugzilla.mindrot.org/show_bug.cgi?id=2443
[Bug 2443] Bugs intended to be fixed for OpenSSH 7.1
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2016-Feb-26 03:41 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Darren Tucker <dtucker at zip.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #6 from Darren Tucker <dtucker at zip.com.au> ---
I've added comment to README.platform with this. I would consider
applying a diff to select xlc where $CC is not set however I do not
have access to a system with xlc to test it myself.
--
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2016-Aug-02 00:42 UTC
[Bug 2315] OpenSSH 6.7p1 on AIX 7.1 compile issue
https://bugzilla.mindrot.org/show_bug.cgi?id=2315
Damien Miller <djm at mindrot.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |CLOSED
--- Comment #7 from Damien Miller <djm at mindrot.org> ---
Close all resolved bugs after 7.3p1 release
--
You are receiving this mail because:
You are watching someone on the CC list of the bug.
You are watching the assignee of the bug.
Maybe Matching Threads
- Using idmap_rid backend, cannot browse home directory from XP
- Re: Installing tcp/ssh drivers for libvirt
- R, AIX 64-bit builds - trying to understand root cause for message: "Error: Line starting 'Package: tools ...' is malformed!"
- Installing tcp/ssh drivers for libvirt
- install.packages() failed