[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gcc-64 on HP-UX 11.00
From: |
H.Merijn Brand |
Subject: |
Re: gcc-64 on HP-UX 11.00 |
Date: |
Fri, 05 Apr 2002 14:49:27 +0200 |
On Thu 04 Apr 2002 21:58, "John David Anglin" <address@hidden> wrote:
> > As I've seen on the gcc web site, HP-UX 11.00 has been promoted to primary
> > target site. I've got no trouble building gcc in 32 bit mode, but building a
> > 64bit gcc is still almost impossible.
>
> Can you be more specific? I think that once you get a good set of tools
> installed you won't have any trouble building 64bit gcc. This is not to
Then my tools are probably no good ;)
> say that that there aren't lots of issues with hppa64 but I am not having
> problems doing builds anymore.
But you might have /more/ GNU stuff installed in default locations than I have.
For example, in the configuration I'll show shortly, it barfs on unsatisfied
symbol '__umoddi3', which can be found in libgcc.a, which I do not have
installed in a default location, and since I'm building with HPc, it won't
find it without hints. Now if I set LDFLAGS="-L/usr/local/pa20_64/lib -lgcc"
where libgcc can be found in my situation, it is put *before* the libs, making
the needed symbols unfindable, so I commented out LDFLAGS and put in
LIBS=/usr/local/pa20_64/lib/libgcc.a
FYI when reading on, /usr/local/pa20_64 is a symlink to /wrk/pa20_64 because
that LV has more space to play with.
> > I've got
> >
> > The latest HP-UX 11.00 with the latest patches
> > The latest C compiler (B.11.11.04 HP C/ANSI C Compiler)
> > Several ports of gcc
> > 3.0.4/32
> > 3.0.1/64
> > 3.0.2/64
> > binutils-2.11.90/64
> > binutils-2.12/64
>
> Here are my suggestions. Use the latest binutils. It has fixes that
> affect hppa64. Don't use 2.11.90. Build it with the HP ANSI compiler
> (ie, use "-Ae +DA2.0W" in your CFLAGS). Gcc may miscompile the
> linker causing it to dump core linking shared libraries. Whether
> this is still a problem, I'm not sure.
I used
--8<--- Conf-64
#!/usr/bin/sh
export CONFIG_SITE=
export CC=cc
export CFLAGS="-Ae -O +DA2.0W"
#export LDFLAGS="-L/usr/local/pa20_64/lib -lgcc"
export LIBS=/usr/local/pa20_64/lib/libgcc.a
export PATH=.
export PATH=$PATH"":/u/usr/merijn/bin/private:/u/usr/merijn/bin
export PATH=$PATH"":/pro/local/bin:/pro/bin
export PATH=$PATH"":/usr/bin:/usr/bin/X11:/opt/ansic/bin
export
PATH=$PATH"":/usr/sbin:/etc:/sbin:/usr/lib:/usr/ccs/bin:/opt/langtools/bin
export PATH=$PATH"":/usr/contrib/bin:/usr/contrib/bin/X11:/opt/imake/bin
configure \
--prefix=/wrk/pa20_64 --with-local-prefix=/wrk/pa20_64 \
--disable-shared \
--disable-nls \
--enable-multilib \
--enable-threads
-->8---
But needed the followin patches:
--8<--- binutils-2.12.diff
--- binutils-2.12.org/configure.in 2002-03-08 20:45:10.000000000 +0100
+++ binutils-2.12/configure.in 2002-04-05 13:17:26.000000000 +0200
@@ -722,8 +722,10 @@
hppa*-*-*elf* | \
hppa*-*-linux-gnu* | \
hppa*-*-lites* | \
+ hppa*2.0w*-*-* | \
hppa*64*-*-*)
# Do configure ld/binutils/gas for this case.
+ echo " ############# 64bit ################### ($noconfigdirs)" >&2
;;
hppa*-*-*)
# HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
--- binutils-2.12.org/bfd/config.bfd 2002-02-13 21:45:46.000000000 +0100
+++ binutils-2.12/bfd/config.bfd 2002-04-05 13:10:23.000000000 +0200
@@ -292,6 +292,7 @@
targ_defvec=bfd_elf64_hppa_linux_vec
targ_selvecs=bfd_elf64_hppa_vec
;;
+ hppa*2.0w*-*-hpux11* | \
hppa*64*-*-hpux11*)
targ_defvec=bfd_elf64_hppa_vec
targ_selvecs=bfd_elf64_hppa_linux_vec
--- binutils-2.12.org/bfd/configure.host 2002-01-22 01:47:21.000000000
+0100
+++ binutils-2.12/bfd/configure.host 2002-04-05 13:10:41.000000000 +0200
@@ -21,6 +21,7 @@
alpha*-*-*) host64=true; HOST_64BIT_TYPE=long ;;
+hppa*2.0w*-*-hpux* | \
hppa*64*-*-hpux*) HDEFINES=-DHOST_HPPAHPUX;
host64=true; HOST_64BIT_TYPE=long ;;
hppa*-*-hpux*) HDEFINES=-DHOST_HPPAHPUX ;;
--- binutils-2.12.org/gas/configure 2002-02-26 11:35:27.000000000 +0100
+++ binutils-2.12/gas/configure 2002-04-05 13:11:01.000000000 +0200
@@ -2377,6 +2377,7 @@
hppa-*-osf*) fmt=som em=hppa ;;
hppa-*-rtems*) fmt=elf em=hppa ;;
hppa-*-hpux11*) case ${cpu} in
+ hppa*2.0w* | \
hppa*64*)
fmt=elf em=hppa64 ;;
hppa*)
--- binutils-2.12.org/gas/configure.in 2002-02-26 11:35:27.000000000 +0100
+++ binutils-2.12/gas/configure.in 2002-04-05 13:11:17.000000000 +0200
@@ -227,6 +227,7 @@
hppa-*-osf*) fmt=som em=hppa ;;
hppa-*-rtems*) fmt=elf em=hppa ;;
hppa-*-hpux11*) case ${cpu} in
+ hppa*2.0w* | \
hppa*64*)
fmt=elf em=hppa64 ;;
hppa*)
--- binutils-2.12.org/ld/configure.tgt 2002-02-20 06:26:22.000000000 +0100
+++ binutils-2.12/ld/configure.tgt 2002-04-05 13:07:56.000000000 +0200
@@ -309,6 +309,7 @@
m68*-*-rtemscoff*) targ_emul=m68kcoff ;;
m68*-*-rtems*) targ_emul=m68kelf ;;
hppa*64*-*-linux-gnu*) targ_emul=hppa64linux ;;
+hppa*2.0w*-*) targ_emul=elf64hppa ;;
hppa*64*-*) targ_emul=elf64hppa ;;
hppa*-*-linux-gnu*) targ_emul=hppalinux ;;
hppa*-*-*elf*) targ_emul=hppaelf ;;
-->8---
Conf-64 now finishes to the end.
Now I use
--8<--- Build-64
#!/usr/bin/sh
export CONFIG_SITE=
export CC=cc
export CFLAGS="-Ae -O +DA2.0W"
#export LDFLAGS="-L/usr/local/pa20_64/lib -lgcc"
export LIBS=/usr/local/pa20_64/lib/libgcc.a
export PATH=.
export PATH=$PATH"":/u/usr/merijn/bin/private:/u/usr/merijn/bin
export PATH=$PATH"":/pro/local/bin:/pro/bin
export PATH=$PATH"":/usr/bin:/usr/bin/X11:/opt/ansic/bin
export
PATH=$PATH"":/usr/sbin:/etc:/sbin:/usr/lib:/usr/ccs/bin:/opt/langtools/bin
export PATH=$PATH"":/usr/contrib/bin:/usr/contrib/bin/X11:/opt/imake/bin
make
-->8---
After the first run I changed 'make' to 'make -i' and reran
the log is attached
a5:/wrk/pa20_64/bin 189 > find * -newer ld.pl -type f | xargs file
addr2line: ELF-64 executable object file - PA-RISC 2.0 (LP64)
ar: ELF-64 executable object file - PA-RISC 2.0 (LP64)
as: ELF-64 executable object file - PA-RISC 2.0 (LP64)
c++filt: ELF-64 executable object file - PA-RISC 2.0 (LP64)
gas: ELF-64 executable object file - PA-RISC 2.0 (LP64)
gasp: ELF-64 executable object file - PA-RISC 2.0 (LP64)
gprof: ELF-64 executable object file - PA-RISC 2.0 (LP64)
ld: ELF-64 executable object file - PA-RISC 2.0 (LP64)
nm: ELF-64 executable object file - PA-RISC 2.0 (LP64)
objcopy: ELF-64 executable object file - PA-RISC 2.0 (LP64)
objdump: ELF-64 executable object file - PA-RISC 2.0 (LP64)
ranlib: ELF-64 executable object file - PA-RISC 2.0 (LP64)
readelf: ELF-64 executable object file - PA-RISC 2.0 (LP64)
size: ELF-64 executable object file - PA-RISC 2.0 (LP64)
strings: ELF-64 executable object file - PA-RISC 2.0 (LP64)
strip: ELF-64 executable object file - PA-RISC 2.0 (LP64)
a5:/wrk/pa20_64/bin 190 >
Now I should have a working set of binutils, I guess (FTR, I built my previous
set with gcc-3.0.2/64)
> For gcc, use either the 3.1 branch or the unstable 3.2 trunk. You
I'll go for the gcc-20020401.tar.bz2 version I snatched from snapshot
> should be able to bootstrap it using CC="cc -Ae +DA2.0W" or with
> a working version of gcc for hppa64. Use the GNU binutils and specify
> the locations for as and ld using --with-as and --with-ld. Run
> the testsuite to see if things are working. There are some problems
> with shared libraries so it's probably better not to specify
> --enable-shared in your configure options.
>
> These are the gcc configure options that I use:
>
> --host=hppa64-hp-hpux11.11 --with-gnu-as --with-as=/opt/gnu64/bin/as
That's a HP-UX 11i
> --with-gnu-ld --with-ld=/opt/gnu64/bin/ld --disable-nls --prefix=/opt/gnu64
This is what I went for
--8<--- Conf-64
#!/usr/bin/sh
export CONFIG_SITE=
export CC="cc -Ae +DA2.0W"
export PATH=.:/u/usr/merijn/bin/private:/u/usr/merijn/bin
export PATH=$PATH"":/pro/local/bin:/pro/bin:/usr/bin:/usr/bin/X11
export PATH=$PATH"":/opt/ansic/bin:/usr/ccs/bin:/opt/langtools/bin
export
PATH=$PATH"":/usr/lib:/usr/contrib/bin:/usr/contrib/bin/X11:/opt/imake/bin
export PATH=$PATH"":/wrk/pa20_64/bin:/wrk/GNUpro/bin
rm -rf obj
mkdir obj
cd obj
../src/configure \
--enable-languages=gcc \
--prefix=/usr/local/pa20_64 --with-local-prefix=/usr/local/pa20_64 \
--with-gnu-as \
--with-gnu-ld \
--disable-shared \
--disable-nls \
--enable-multilib \
--enable-threads \
--with-system-zlib
echo ""
echo "Now start 'Build-64'"
-->8---
Of course after patchin with
--8<---
--- src/configure.in.org 2002-04-05 14:16:10.000000000 +0200
+++ src/configure.in 2002-04-05 14:16:31.000000000 +0200
@@ -284,6 +284,7 @@
# hpux11 in 64bit mode has libraries in a weird place. Arrange to find
# them automatically.
case "${host}" in
+ hppa*2.0w*-*-hpux11* | \
hppa*64*-*-hpux11*)
withoptions="$withoptions -x-libraries=/usr/lib/pa20_64
-x-includes=/usr/X11R6/include"
;;
@@ -567,6 +568,7 @@
noconfigdirs=""
case "${host}" in
+ hppa*2.0w*-*-* |\
hppa*64*-*-*)
noconfigdirs="$noconfigdirs byacc"
;;
@@ -771,6 +773,7 @@
hppa*-*-*elf* | \
parisc*-*-linux* | hppa*-*-linux* | \
hppa*-*-lites* | \
+ hppa*2.0w*-*-* | \
hppa*64*-*-*)
noconfigdirs="$noconfigdirs ${libgcj}"
# Do configure ld/binutils/gas for this case.
--- src/gcc/config.gcc.org 2002-04-05 14:14:51.000000000 +0200
+++ src/gcc/config.gcc 2002-04-05 14:14:58.000000000 +0200
@@ -917,6 +917,7 @@
install_headers_dir=install-headers-cpio
use_collect2=yes
;;
+hppa*2.0w*-*-hpux11* | \
hppa*64*-*-hpux11*)
xm_defines=POSIX
tm_file="pa/pa64-start.h ${tm_file} pa/pa64-regs.h pa/long_double.h
pa/elf.h pa/pa-hpux.h pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
-->8---
Now I use
--8<--- Build-64
#!/usr/bin/sh
export CONFIG_SITE=
export CC="cc -Ae +DA2.0W"
export PATH=.:/u/usr/merijn/bin/private:/u/usr/merijn/bin
export PATH=$PATH"":/pro/local/bin:/pro/bin:/usr/bin:/usr/bin/X11
export PATH=$PATH"":/opt/ansic/bin:/usr/ccs/bin:/opt/langtools/bin
export
PATH=$PATH"":/usr/lib:/usr/contrib/bin:/usr/contrib/bin/X11:/opt/imake/bin
export PATH=$PATH"":/wrk/pa20_64/bin:/wrk/GNUpro/bin
cd obj
make bootstrap-lean
-->8---
The build comes amazingly far, but core dumps like
echo "int xxy_us_dummy;" >tmp-dum.c
./xgcc -B./ -B/usr/local/pa20_64/hppa2.0w-hp-hpux11.00/bin/ -isystem
/usr/local/pa20_64/hppa2.0w-hp-hpux11.00/include -isystem
/usr/local/pa20_64/hppa2.0w-hp-hpux11.00/sys-include -S tmp-dum.c
cc1: internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[2]: *** [s-under] Error 1
make[2]: Leaving directory `/pro/3gl/GNU/gcc-3.0.4/obj/gcc'
make[1]: *** [stage2_build] Error 2
make[1]: Leaving directory `/pro/3gl/GNU/gcc-3.0.4/obj/gcc'
make: *** [bootstrap-lean] Error 2
No core dump.
Should I go on?
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.7.3 & 631 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11. Smoking perl CORE: address@hidden
http://archives.develooper.com/address@hidden/ address@hidden
send smoke reports to: address@hidden, QA: http://qa.perl.org
binutils-2.12-Build-64.log.gz
Description: Binary data
- Re: gcc-64 on HP-UX 11.00,
H.Merijn Brand <=