harperb@eecae.ee.msu.edu (Brett Harper) (08/23/89)
I am currently trying to make Gnu Emacs 18.54 under HP-UX 6.5. Things seem to be going ok (with a few compilation warnings) until the linking stage, when the following externals come up missing: flag_fpa fpa_loc float_loc Does anyone have any idea what these are, are better yet where they are? I am using m-hp9000s300.h and s-hpux.h as recommended in etc/MACHINES. If I should be making a different version of emacs, I can do that too. Can somebody please give me some help here? I would also like to make emacs to take advantage of X windows, anything special I need to know to make this work? (besides defining HAVE_X_WINDOWS, and X11) Thanks, Brett Brett Harper harperb@frith.egr.msu.edu ...!uunet!frith!harperb ----- News saved at 22 Aug 89 17:01:02 GMT I am currently trying to make Gnu Emacs 18.54 under HP-UX 6.5. Things seem to be going ok (with a few compilation warnings) until the linking stage, when the following externals come up missing: flag_fpa fpa_loc float_loc Does anyone have any idea what these are, are better yet where they are? I am using m-hp9000s300.h and s-hpux.h as recommended in etc/MACHINES. If I should make a different version, then I can do that too. Can somebody please give me some help here? I would also like to make emacs to take advantage of X windows, anything special I need to know to make this work? (besides defining HAVE_X_WINDOWS, and X11) Thanks, Brett Brett Harper harperb@frith.egr.msu.edu ...!uunet!frith!harperb Newsgroups: comp.gnu.emacs,comp.sys.hp Subject: making Gnu Emacs on hp9000/340 Expires: References: Sender: Brett Harper Reply-To: harperb@frith.egr.msu.edu () Followup-To: Distribution: world Organization: Michigan State University, ERDL Keywords: emacs hp I am currently trying to make Gnu Emacs 18.54 under HP-UX 6.5. Things seem to be going ok (with a few compilation warnings) until the linking stage, when the following externals come up missing: flag_fpa fpa_loc float_loc Does anyone have any idea what these are, are better yet where they are? I am using m-hp9000s300.h and s-hpux.h as recommended in etc/MACHINES. If I should make a different version, then I can do that too. Can somebody please give me some help here? I would also like to make emacs to take advantage of X windows, anything special I need to know to make this work? (besides defining HAVE_X_WINDOWS, and X11) Thanks, Brett Brett Harper harperb@frith.egr.msu.edu ...!uunet!frith!harperb
glad@janus.dk (Michael Glad) (08/23/89)
I've successfully installed Emacs 18-54 on HP9000 models 340,360 and
370 with full X Windows support.
I started out with the configuration files m-hp9000s300.h and s-hpux.h
and got missing externals as reported.
I finally succeeded by patching the xmakefile generated in the
src directory.
The patches are:
37c37
< LIBES = -lcurses $(LIBX) -lsetjmp -lc
---
> LIBES = -lcurses $(LIBX) /usr/lib/end.o -lc
As far as I remember (I solved the problem in june...)
the setjmp facility has changed under 6.5 and libsetjmp.a are
kept for compatibility purposes.
The externals flag_fpa, fpa_loc and float_loc which ld complains about
when running an unpatched xmakefile are referenced in /usr/lib/end.o.
I know this is a hack but I got a perfect emacs 18-54 by using it
so it may be worth trying until someone makes a cleaner solution.
---
Michael Glad, programmer,
Computer Science Department,
Aarhus University, Denmark
email: glad@daimi.dk
stark@sbcs.sunysb.edu (Eugene Stark) (08/23/89)
In article <722@eecae.ee.msu.edu> harperb@eecae.ee.msu.edu (Brett Harper) writes: > I am currently trying to make Gnu Emacs 18.54 under HP-UX 6.5. Things > seem to be going ok (with a few compilation warnings) until the linking > stage, when the following externals come up missing: > flag_fpa > fpa_loc > float_loc > > Does anyone have any idea what these are, are better yet where they are? > I am using m-hp9000s300.h and s-hpux.h as recommended in etc/MACHINES. > If I should be making a different version of emacs, I can do that too. I did this several months ago, and came across the same problem. These things are variables and constants that are defined in a new C run-time file that I think is called "end.o" or something, but I have really forgotten now. In any case, lacking the source to the HP C runtime start up files, I looked at the object code with a debugger, and eventually created the following file, which I called "hack.s": global float_loc set float_loc,0xFFFFB000 global fpa_loc set fpa_loc,0xFFF08000 bss global flag_fpa flag_fpa: space 4*1 Linking this file in at the end of emacs makes things work. I don't really like to do stuff like this, but since HP chose not to supply source for crt0.o and end.o, it was necessary to guess. Gene Stark SUNY at Stony Brook
zac@hpislx.HP.COM (Steve Elbinger) (08/23/89)
>> I am currently trying to make Gnu Emacs 18.54 under HP-UX 6.5. Things >> seem to be going ok (with a few compilation warnings) until the linking >> stage, when the following externals come up missing: >> flag_fpa >> fpa_loc >> float_loc These are located in /lib/crt0.o . From the crt0 man page: float_loc A constant defining the location in memory of the 98635 floating point card. The man page doesn't describe flag_fpa and fpa_loc. They have a similar function for the floating point accelerator that runs on the Series 330 - 370. Steve Elbinger
steve@quonset.cfht.hawaii.edu (Steven Smith) (08/24/89)
Your fix worked fine for me, but I kept this fix around, never tried it though: Article 2403 of comp.sys.hp Path: uwila!uhccux!humu!nosc!helios.ee.lbl.gov!pasteur!ucbvax!hplabs!hp-pcd!hpvc fs1!ericr From: ericr@hpvcfs1.HP.COM (Eric Ross) Newsgroups: comp.sys.hp Subject: Re: Problem compiling gnuEmacs Date: 7 Jun 89 15:29:40 GMT References: <9223@boulder.Colorado.EDU> Organization: Hewlett Packard, Vancouver, WA Lines: 68 Here is the context diff that I use for 6.5 to define those globals. crt0.c has been a major thorn of incompatibility ever since Gnu Emacs has been ported to the Series 300. In any case this should fix your problem. Eric Ross Hewlett Packard, Vancouver Division ericr%hpvcper@hplabs.hp.com *** crt0.c Wed Apr 26 07:13:17 1989 --- crt0.c.orig Tue Aug 30 23:48:46 1988 *************** *** 446,455 #else /* new hp assembler */ asm(" text"); - asm(" set float_loc,0xFFFFB000"); - asm(" set fpa_loc,0xFFF08000"); - asm(" global float_loc"); - asm(" global fpa_loc"); asm(" global __start"); asm(" global _exit"); asm(" global _main"); --- 446,451 ----- #else /* new hp assembler */ asm(" text"); asm(" global __start"); asm(" global _exit"); asm(" global _main"); *************** *** 465,473 asm("skip_float:"); asm(" subx.w %d1,%d1"); asm(" mov.w %d1,flag_68010"); - asm(" add.l %d0,%d0"); - asm(" subx.w %d1,%d1"); - asm(" mov.w %d1,flag_fpa"); asm(" mov.l 4(%a7),%d0"); asm(" beq.b skip_1"); asm(" mov.l %d0,%a0"); --- 461,466 ----- asm("skip_float:"); asm(" subx.w %d1,%d1"); asm(" mov.w %d1,flag_68010"); asm(" mov.l 4(%a7),%d0"); asm(" beq.b skip_1"); asm(" mov.l %d0,%a0"); *************** *** 499,505 asm(" comm float_soft, 4"); asm(" comm flag_68881, 4"); asm(" comm flag_68010, 4"); - asm(" comm flag_fpa, 4"); #endif /* new hp assembler */ #endif /* hp9000s300 */ --- 492,497 ----- asm(" comm float_soft, 4"); asm(" comm flag_68881, 4"); asm(" comm flag_68010, 4"); #endif /* new hp assembler */ #endif /* hp9000s300 */ Steven S. Smith Canada-France-Hawaii Telescope Corp. PO Box 1597 Kamuela Hawaii 96743 (808) 885-7944 INTERNET steve@cfht.hawaii.edu FAX (808) 885-7288 TELEX 633147 CFHT
marc@hpfcdc.HP.COM (Marc[e] Sabatella) (08/24/89)
>These things are variables and constants that are defined in a new C >run-time file that I think is called "end.o" or something, but I have >really forgotten now. In any case, lacking the source to the HP C runtime >start up files, I looked at the object code with a debugger, and eventually >created the following file, which I called "hack.s": Actually, they are in crt0.o I don't think supplying source would help all that much - the mapping from assembly source to object file is pretty much one-to-one anyhow, so the debugger disassembly would be just as good. In any case, rather than always picking on HP for our "non-standard" crt0, it would be much more profitable to pick on Stallman et al for their incredible stupidity in trying to redefine crt0. There is nothing OS-independent you can do there that you couldn't have done in main(), and all the standards texts are pretty clear on the point that the run time code belongs to the implementor. Why does GNU persist in this inherently non-portable practice? Another example would be Sun's crt0.o, which includes support for shared libraries and dynamic loading/linking. Does GNU supply a Sun-specific crt0, or do they tell you to compile with archive libraries? We will undoubtedly run into the same thing when HP-UX supports shared libraries. Of course, if you use GCC and the GNU libraries, you aren't going to get shared libraries anyhow, but then again, you won't need the implementor's crt0. -------------- Marc Sabatella HP Colorado Language Lab marc%hpfcrt@hplabs.hp.com