Xref: utzoo comp.sys.hp:3443 comp.sources.d:4378 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!mcsun!sunic!bmc!kuling!jand From: jand@kuling.UUCP (Jan Dj{rv) Newsgroups: comp.sys.hp,comp.sources.d Subject: Re: libc.a error when linking perl3.0 on HP-UX 3.10 Message-ID: <1246@kuling.UUCP> Date: 13 Nov 89 20:50:08 GMT References: <127@geysir.os.is> <1989Nov10.174805.24464@agsm.ucla.edu> Reply-To: jand@kuling.UUCP (Jan Dj{rv) Organization: Dept. of Computer Systems, Uppsala University, Sweden Lines: 49 In article <1989Nov10.174805.24464@agsm.ucla.edu> ggordon@agsm.ucla.edu (Glen Gordon) writes: :From article <127@geysir.os.is>, by eik@os.is (Einar Kjartansson): :> Whe I try to make perl version 3.0, patch level 1, I get the following :> output. I tried this also telling perl to use its onw malloc, it made no :> difference. This looks like an error in the hp-ux library. :> The system is hp-ux 3.10 running on a HP 9000/825. :> :> cc array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o :> eval.o form.o hash.o malloc.o perly.o regcomp.o regexec.o stab.o str.o :> toke.o util.o perl.o -lm -ldbm -o perl :> /bin/ld: Target of conditional branch is out of range :> Reference from: /lib/libc.a(syscall.o)(0x3c) :> /bin/ld: Invalid fixups exist :> *** Error code 1 :> :> Stop. :> -- :> Einar Kjartansson | eik@os.is :> Orkustofnun (National Energy Authority) | eik@geysir.uucp :> Grensasvegi 9, IS-108 Reykjavik, Iceland | mcvax!hafro!geysir!eik :> Phone: 354-1-83600 Fax: 354-1-688896 Home: 354-1-16407 :I too had this problem on HP-UX 3.11 until I undef'd SYSCALL in :config.sh and reran the .SH scripts. After that all went well and all the tests ran perfectly. :I assume that HP's syscall, which is not documented anywhere I know about :is not intended for public consumption. :-- :Glen Gordon :UCLA, Anderson Graduate School Of Management I had exactly the same problem. The reason for this error is that syscall has a branch to $cerror at the specified location (0x3c) and I guess that the branch is too long (bytewise) for the assembler. (NOTE I'm only guessing since I don't understand HPPA). The fix we made was to extract syscall.o and cerror.o from /lib/libc.a (ar x /lib/libc.a syscall.o cerror.o) and put these in front of the other objectfiles when linking, thus bringing syscall and cerror "closer together". That is: cc syscall.o cerror.o [ rest of .o ] -lm -ldbm -o perl Everything worked nicely. I really don't know if my "explanation" makes any sense to you but the point is that it works (or at least seems to work). Further info from somebody that understands HPPA would be greatly appriceated. Jan D.