home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1994 June / NEBULA_SE.ISO / Documents / FAQ / AIX-faq / part3 < prev    next >
Encoding:
Text File  |  1993-08-17  |  53.3 KB  |  1,399 lines

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!spool.mu.edu!darwin.sura.net!europa.eng.gtefsd.com!uunet!cs.utexas.edu!mavrick!basto@cactus.org
  2. From: basto@cactus.org (Luis Basto)
  3. Newsgroups: comp.unix.aix,news.answers,comp.answers
  4. Subject: AIX Frequently Asked Questions (Part 3 of 3)
  5. Summary: This posting contains a list of Frequently Asked Questions 
  6.          and their answers about AIX, IBM's version of Unix.
  7. Keywords: AIX RS/6000 questions answers
  8. Message-ID: <1453@mavrick.UUCP>
  9. Date: 16 Aug 93 05:12:02 GMT
  10. Expires: 15 Sep 93 01:23:45 GMT
  11. Sender: luis@mavrick.UUCP
  12. Reply-To: basto@cactus.org (Luis Basto)
  13. Followup-To: comp.unix.aix
  14. Lines: 1380
  15. Approved: news-answers-request@MIT.Edu
  16. Supersedes: <1443@mavrick.UUCP>
  17. Xref: senator-bedfellow.mit.edu comp.unix.aix:28918 news.answers:11419 comp.answers:1614
  18.  
  19. Archive-name: aix-faq/part3
  20. Last-modified: August 15, 1993
  21. Version: 2.40
  22.  
  23.  
  24. Version: $Id: aix.faq,v 2.40 93/08/15 basto $
  25.  
  26. Frequently Asked Questions to AIX 3.x and IBM RS/6000
  27. _____________________________________________________
  28.  
  29. 2.00: C/C++
  30.  
  31. Contrary to many people's belief, the C environment on the RS/6000 is
  32. not very special.  The C compiler has quite a number of options that can
  33. be used to control how it works, which "dialect" of C it compiles, how
  34. it interprets certain language constructs, etc.  InfoExplorer includes a
  35. Users Guide and a Reference Manual.
  36.  
  37. The compiler can be invoked with either xlc for strict ANSI mode and cc
  38. for RT compatible mode (i.e. IBM 6150 with AIX 2).  The default options
  39. for each mode are set in the /etc/xlc.cfg file, and you can actually add
  40. another stanza and create a link to the /bin/xlc executable.
  41.  
  42. The file /usr/lpp/xlc/bin/README.xlc has information about the C
  43. compiler, and the file /usr/lpp/bos/bsdport contains useful information,
  44. in particular for users from a BSD background.
  45.  
  46. The file /etc/xlc.cfg also shows the symbol _IBMR2 that is predefined,
  47. and therefore can be used for #ifdef'ing RS/6000 specific code.
  48.  
  49.  
  50. 2.01: I cannot make alloca work
  51.  
  52. A famous routine, in particular in GNU context, is the allocation
  53. routine alloca().  Alloca allocates memory in such a way that it is
  54. automatically free'd when the block is exited.  Most implementations
  55. does this by adjusting the stack pointer.  Since not all C environments
  56. can support it, its use is discouraged, but it is included in the xlc
  57. compiler.  In order to make the compiler aware that you intend to use
  58. alloca, you must put the line
  59.  
  60. #pragma alloca
  61.  
  62. before any other statements in the C source module(s) where alloca is
  63. called.  If you don't do this, xlc will not recognize alloca as anything
  64. special, and you will get errors during linking.
  65.  
  66. For AIX 3.2, it may be easier to use the -ma flag.
  67.  
  68.  
  69. 2.02: How do I compile my BSD programs?
  70.  
  71. The file /usr/lpp/bos/bsdport contains information on how to port
  72. programs written for BSD to AIX 3.1.  This file may be very useful for
  73. others as well.
  74.  
  75. A quick cc command for most "standard" BSD programs is:
  76.   
  77.   $ cc -D_BSD -D_BSD_INCLUDES  -o [loadfile] [sourcefile.c] -lbsd
  78.  
  79. If your software has system calls predefined with no prototype
  80. parameters, also use the -D_NO_PROTO flag.
  81.  
  82.  
  83. 2.03: Isn't the linker different from what I am used to?
  84.  
  85. Yes.  It is not at all like what you are used to:
  86.  
  87. - The order of objects and libraries is normally _not_ important.  The
  88.   linker reads _all_ objects including those from libraries into memory
  89.   and does the actual linking in one go.  Even if you need to put a
  90.   library of your own twice on the ld command line on other systems, it
  91.   is not needed on the RS/6000 - doing so will even make your linking slower.
  92.  
  93. - One of the features of the linker is that it will replace an object in
  94.   an executable with a new version of the same object:
  95.  
  96.   $ cc -o prog prog1.o prog2.o prog3.o        # make prog
  97.   $ cc -c prog2.c                # recompile prog2.c
  98.   $ cc -o prog.new prog2.o prog            # make prog.new from prog
  99.                         # by replacing prog2.o
  100.   
  101. - The standard C library /lib/libc.a is linked shared, which means that
  102.   the actual code is not linked into your program, but is loaded only
  103.   once and linked dynamically during loading of your program.
  104.  
  105. - The ld program actually calls the binder in /usr/lib/bind, and you can
  106.   give ld special options to get details about the invocation of the
  107.   binder.  These are found on the ld man page or in InfoExplorer.
  108.  
  109. - If your program normally links using a number of libraries (.a files),
  110.   you can 'prelink' each of these into an object, which will make your
  111.   final linking faster.  E.g. do:
  112.  
  113.   $ cc -c prog1.c prog2.c prog3.c
  114.   $ ar cv libprog.a prog1.o prog2.o prog3.o
  115.   $ ld -r -o libprog.o libprog.a
  116.   $ cc -o someprog someprog.c libprog.o
  117.  
  118. This will solve all internal references between prog1.o, prog2.o and
  119. prog3.o and save this in libprog.o Then using libprog.o to link your
  120. program instead of libprog.a will increase linking speed, and even if
  121. someprog.c only uses, say prog1.o and prog2.o, only those two modules
  122. will be in your final program.  This is also due to the fact that the
  123. binder can handle single objects inside one object module as noted above.
  124.  
  125. If you are using an -lprog option (for libprog.a) above, and still want
  126. to be able to do so, you should name the prelinked object with a
  127. standard library name, e.g. libprogP.a (P identifying a prelinked
  128. object), that can be specified by -lprogP.  You cannot use the archiver
  129. (ar) on such an object.
  130.  
  131. You should also have a look at section 3.01 of this article, in
  132. particular if you have mixed Fortran/C programs.
  133.  
  134.  
  135. 2.04: How do I link my program with a non-shared /lib/libc.a?
  136.  
  137.   cc -o prog -bnoso -bI:/lib/syscalls.exp obj1.o obj2.o obj3.o
  138.  
  139. will do that for a program consisting of the three objects obj1.o, etc.
  140.  
  141.  
  142. 2.05: How do I make my own shared library?
  143.  
  144. To make your own shared object or library of shared objects, you should
  145. know that a shared object cannot have undefined symbols.  Thus, if your
  146. code uses any externals from /lib/libc.a, the latter MUST be linked with
  147. your code to make a shared object.  Mike Heath (mike@pencom.com) said it
  148. is possible to split code into more than one shared object when externals
  149. in one object refer to another one.  You must be very good at
  150. import/export files.  Perhaps he or someone can provide an example. 
  151.  
  152. Assume you have one file, sub1.c, containing a routine with no external
  153. references, and another one, sub2.c, calling stuff in /lib/libc.a.  You
  154. will also need two export files, sub1.exp, sub2.exp.  Read the example
  155. below together with the examples on the ld man page. 
  156.  
  157. ---- sub1.c ----------------------------------------------------------
  158.     int addint(int a, int b)
  159.     {
  160.       return a + b;
  161.     }
  162. ---- sub2.c ----------------------------------------------------------
  163.     #include <stdio.h>
  164.  
  165.     void printint(int a)
  166.     {
  167.       printf("The integer is: %d\n", a);
  168.     }
  169. ---- sub1.exp ----------------------------------------------------------
  170.     #!
  171.     addint
  172. ---- sub2.exp ----------------------------------------------------------
  173.     #!
  174.     printint
  175. ---- usesub.c ----------------------------------------------------------
  176.     main()
  177.     {
  178.       printint( addint(5,8) );
  179.     }
  180. ---------------------------------------------------------------
  181.  
  182. The following commands will build your libshr.a, and compile/link the
  183. program usesub to use it.  Note that you need the ld option -lc for
  184. sub2shr.o since it calls printf from /lib/libc.a.
  185.  
  186.   $ cc  -c sub1.c
  187.   $ ld -o sub1shr.o sub1.o -bE:sub1.exp -bM:SRE -T512 -H512 
  188.   $ cc  -c sub2.c
  189.   $ ld -o sub2shr.o sub2.o -bE:sub2.exp -bM:SRE -T512 -H512  -lc
  190.   $ ar r libshr.a sub1shr.o sub2shr.o
  191.   $ cc -o usesub usesub.c -L: libshr.a
  192.   $ usesub
  193.   The integer is: 13
  194.   $
  195.  
  196.  
  197. 2.06: Linking my program fails with strange errors.  Why?
  198.  
  199. Very simple, the linker (actually called the binder), cannot get the
  200. memory it needs, either because your ulimits are too low or because you
  201. don't have sufficient paging space.  Since the linker is quite different
  202. from normal Unix linkers and actually does much more than these, it also
  203. uses a lot of virtual memory.  It is not unusual to need 10000 pages (of
  204. 4k) or more to execute a fairly complex linking.
  205.  
  206. If you get 'BUMP error', either ulimits or paging is too low, if you get
  207. 'Binder killed by signal 9' your paging is too low.
  208.  
  209. First, check your memory and data ulimits; in korn shell 'ulimit -a' will
  210. show all limits and 'ulimit -m 99999' and 'ulimit -d 99999' will
  211. increase the maximum memory and data respectively to some high values. 
  212. If this was not your problem, you don't have enough paging space.
  213.  
  214. If you will or can not increase your paging space, you could try this:
  215.  
  216. - Do you duplicate libraries on the ld command line? That is never
  217.   necessary.
  218.  
  219. - Do more users link simultaneously? Try having only one linking going
  220.   on at any time.
  221.  
  222. - Do a partwise linking, i.e. you link some objects/libraries with the
  223.   -r option to allow the temporary output to have unresolved references,
  224.   then link with the rest of your objects/libraries.  This can be split
  225.   up as much as you want, and will make each step use less virtual memory.
  226.  
  227.   If you follow this scheme, only adding one object or archive at a
  228.   time, you will actually emulate the behavior of other Unix linkers.
  229.  
  230. If you decide to add more paging space, you should consider adding a new
  231. paging space on a second hard disk, as opposed to just increasing the
  232. existing one.  Doing the latter could make you run out of free space on
  233. your first harddisk. It is more involved to shrink a paging space
  234. but easier to delete one.
  235.  
  236.  
  237. 2.07: What's with malloc()?
  238.  
  239. malloc() uses a late allocation algorithm based on 4.3 BSD's malloc()
  240. for speed.  This lets you allocate very large sparse memory spaces,
  241. since the pages are not actually allocated until they are touched for
  242. the first time.  Unfortunately, it doesn't die gracefully in the face of
  243. loss of available memory.  See the "Paging Space Overview" under
  244. InfoExplorer, and see the notes on the linker in this document for an
  245. example of an ungraceful death.
  246.  
  247. If you want your program to get notified when running out of memory, you
  248. should handle the SIGDANGER signal.  The default is to ignore it. 
  249. SIGDANGER is sent to all processes when paging space gets low, and if
  250. paging space gets even lower, processes with the highest paging space
  251. usage are sent the SIGKILL signal.
  252.  
  253. malloc() is substantially different in 3.2, allocating memory more
  254. tightly.  If you have problems running re-compiled programs on 3.2, try
  255. running them with MALLOCTYPE=3.1. 
  256.  
  257.  
  258. 2.08: Why does xlc complain about 'extern char *strcpy()'
  259.  
  260. The header <string.h> has a strcpy macro that expands strcpy(x,y) to
  261. __strcpy(x,y), and the latter is then used by the compiler to generate
  262. inline code for strcpy.  Because of the macro, your extern declaration
  263. contains an invalid macro expansion.  The real cure is to remove your
  264. extern declaration but adding -U__STR__ to your xlc will also do the trick.
  265.  
  266.  
  267. 2.09: Why do I get 'Parameter list cannot contain fewer ....'
  268.  
  269. This is the same as above.
  270.  
  271.  
  272. 2.10: Why does xlc complain about '(sometype *)somepointer = something'
  273.  
  274. Software that is developed using GNUC may have this construct.  However,
  275. standard C does not permit casts to be lvalues, so you will need to
  276. change the cast and move it to the right side of the assignment.  If you
  277. compile with 'cc', removing the cast completely will give you a warning,
  278. 'xlc' will give you an error (provided somepointer and something are of
  279. different types - but else, why would the cast be there in the first place?)
  280.  
  281.  
  282. 2.11: Some more common errors
  283.  
  284. Here are a few other common errors with xlc:
  285.  
  286. 305 |     switch((((np)->navigation_type) ? (*((np)->navigation_type)) :
  287.       ((void *)0)))
  288.       .a...........  
  289. a - 1506-226: (S) The second and third operands of the conditional
  290. operator must be of the same type.
  291.  
  292. The reason for this is that xlc defines NULL as (void *)0, and it does
  293. not allow two different types as the second and third operand of ?:. 
  294. The second argument above is not a pointer and the code used NULL
  295. incorrectly as a scalar.  NULL is a nil pointer constant in ANSI C and
  296. in some traditional compilers.
  297.  
  298. You should change NULL in the third argument above to an integer 0.
  299.  
  300.  
  301. 2.12: Can the compiler generate assembler code?
  302.  
  303. The traditional -S option is not supported by the XLC compiler, and
  304. there is in fact no way to make the compiler generate machine readable
  305. assembler code.  The option -qlist will generate a human readable one in
  306. the .lst file.
  307.  
  308.  
  309. 2.13: Curses
  310.  
  311. Curses based applications should be linked with -lcurses and _not_ with
  312. -ltermlib.  It has also been reported that some problems with curses are
  313. avoided if your application is compiled with -DNLS.
  314.  
  315. Peter Jeffe <peter@ski.austin.ibm.com> also notes:
  316.  
  317. >the escape sequences for cursor and function keys are *sometimes*
  318. >treated as several characters: eg. the getch() - call does not return
  319. >KEY_UP but 'ESC [ C.'
  320.  
  321. You're correct in your analysis: this has to do with the timing of the
  322. escape sequence as it arrives from the net.  There is an environment
  323. variable called ESCDELAY that can change the fudge factor used to decide
  324. when an escape is just an escape.  The default value is 500; boosting
  325. this a bit should solve your problems.
  326.  
  327. Further on the matter of curses, I've received the comments below
  328. concerning extended curses:
  329.  
  330. From: Christopher Carlyle O'Callaghan <asdfjkl@wam.umd.edu>
  331.  
  332. 1) The sample program in User Interface Programming Concepts, page 7-13
  333.    is WRONG. Here is the correct use of panes and panels.
  334.  
  335. #include <cur01.h>
  336. #include <cur05.h>
  337.  
  338. main()
  339. {
  340. PANE *A, *B, *C, *D, *E, *F, *G, *H;
  341. PANEL *P;
  342.  
  343. initscr();
  344.  
  345. A = ecbpns (24, 79, NULL, NULL, 0, 2500, Pdivszp, Pbordry, NULL, NULL);
  346.  
  347. D = ecbpns (24, 79, NULL, NULL, 0, 0,    Pdivszf, Pbordry, NULL, NULL);
  348. E = ecbpns (24, 79, D,    NULL, 0, 0,    Pdivszf, Pbordry, NULL, NULL);
  349.  
  350. B = ecbpns (24, 79, A, D, Pdivtyh, 3000, Pdivszp, Pbordry, NULL, NULL);
  351.  
  352. F = ecbpns (24, 79, NULL, NULL, 0, 0,    Pdivszf, Pbordry, NULL, NULL);
  353. G = ecbpns (24, 79, F,    NULL, 0, 5000, Pdivszp, Pbordry, NULL, NULL);
  354. H = ecbpns (24, 79, G,    NULL, 0, 3000, Pdivszp, Pbordry, NULL, NULL);
  355.  
  356. C: = ecbpns (24, 79, B, F, Pdivtyh, 0, Pdivszf, Pbordry, NULL, NULL);
  357.  
  358. P = ecbpls (24, 79, 0, 0, "MAIN PANEL", Pdivtyv, Pbordry, A);
  359.  
  360. ecdvpl (P);
  361. ecdfpl (P, FALSE);
  362. ecshpl (P); 
  363. ecrfpl (P);
  364. endwin();
  365. }
  366.  
  367. 2) DO NOT include <curses.h> and any other <cur0x.h> file together.
  368.    You will get a bunch of redefined statements.
  369.  
  370. 3) There is a CURSES and EXTENDED CURSES stuff.  Use only one or the
  371.    other. If the manual says that they're backwards compatible or some
  372.    other indication that you can use CURSES routines with EXTENDED,
  373.    don't believe it. To use CURSES you need to include <curses.h> and
  374.    you can't (see above).
  375.  
  376. 4) If you use -lcur and -lcurses in the same link command, you will get
  377.    Memory fault (core dump) error...  YOU CANNOT use both of them at the
  378.    same time. -lcur is for extended curses, -lcurses is for regular curses.
  379.  
  380. 5) When creating PANEs, when you supply a value (other than 0) for the
  381.    'ds' parameter and use Pdivszf value for the 'du' parameter, the 'ds'
  382.    will be ignored (the sample program on page 7-13 in User Interface
  383.    Programming Concepts is wrong.) For reasons as yet undetermined,
  384.    Pdivszc doesn't seem to work (or at least I can't figure out how to
  385.    use it.)
  386.  
  387. 6) If you're running into bugs and can't figure out what is happening,
  388.    try the following:
  389.    include -qextchk -g in your compile line
  390.     -qextchk will check to make sure you're passing the right number of
  391.        parameters to the procedures
  392.     -g will allow you to use the inline debugger on Unix/AIX.
  393.    to use the debugger after you compiled it, 
  394.     type: dbx <fn>
  395.     the command 'help' will give you all of the possible commands to
  396.        use in the debugger... have fun... :)
  397.  
  398. 7) Do not use 80 as the number of columns if you want to use the whole
  399.    screen. The lower right corner will get erased.  Use 79 instead.
  400.  
  401. 8) If you create a panel, you must create at least 1 pane, otherwise you
  402.    will get a Memory fault (core dump).
  403.  
  404. 9) When creating a panel, if you don't have a border around it, any title
  405.    you want will not show up.
  406.  
  407. 10) to make the screen scroll down:
  408.     wmove (win, 0, 0);
  409.     winsertln (win)
  410.  
  411. 11) delwin(win) DOESN'T WORK IN EXTENDED WINDOWS.
  412.  
  413.     Anyway, to make it appear as if a window is deleted, you need to do
  414.     the following:
  415.     for every window that you want to appear on the screen
  416.     touchwin(win)
  417.     wrefresh(win)
  418.  
  419.     you must make sure that you do it in the exact same order as you put
  420.     them on the screen (i.e., if you called newwin with A, then C, then B,
  421.     then you must do the loop with A, then C, then B, otherwise you won't
  422.     get the same screen back).  The best thing to do is to put them into
  423.     an array and keep track of the last window index.
  424.  
  425. 12) mvwin(win, line, col) implies that it is only used for viewports and
  426.     subwindows... It can also be used for the actual windows themselves.
  427.  
  428. 13) If you specify the attribute of a window using wcolorout(win), any
  429.     subsequent calls to chgat(numchars, mode) or any of its relatives
  430.     will not work. (or at least they get very picky...)
  431.  
  432.  
  433. 2.14: How do I speed up linking
  434.  
  435. Please refer to sections 2.03 and 2.06 above.
  436.  
  437. From: losecco@undpdk.hep.nd.edu (John LoSecco) and
  438.       hook@chaco.aix.dfw.ibm.com (Gary R. Hook)
  439.  
  440. From oahu.cern.ch in /pub/aix3 you can get a wrapper for the existing
  441. linker called tld which can reduce link times with large libraries by
  442. factors of 3 to 4.
  443.  
  444.  
  445. 2.15: What is deadbeef?
  446.  
  447. When running the debugger (dbx), you may have wondered what the
  448. 'deadbeef' is you occasionally see in registers.  Do note, that
  449. 0xdeadbeef is a hexadecimal number that also happens to be some kind
  450. of word (the RS/6000 was built in Texas!), and this hexadecimal number
  451. is simply put into unused registers at some time, probably during
  452. program startup.
  453.  
  454.  
  455. 2.16: How do I statically link in 3.2?
  456.  
  457. xlc -bnso -bI:/lib/syscalls.exp -liconv -bnodelcsect 
  458.  
  459. _____________________________________________________________________________
  460. 3.00: Fortran and other compilers
  461.  
  462. This section covers all compilers other than C/C++.  On Fortran, there
  463. seem to have been some problems with floating point handling, in
  464. particular floating exceptions.
  465.  
  466.  
  467. 3.01: I have problems mixing Fortran and C code, why?
  468.  
  469. A few routines (the most famous one is getenv) exist in both the Fortran
  470. and the C libraries but with different parameters.  You therefore cannot
  471. have a mixed program that call getenv from both C and Fortran code. 
  472. When linking a mixed program calling getenv from either, be sure to
  473. specify the correct library first on your command line.  If your main
  474. program is Fortran and you call getenv from a C routine, you must
  475. therefore add -lc to the xlf command line for linking.
  476.  
  477. If you want to call getenv from both C and Fortran code in a mixed
  478. program, you need to compile all the Fortran code with the -qextname
  479. option.  This appends an underscore to all Fortran external names and
  480. ensures that no confusion occurs with default C libraries.  Of course an
  481. underscore should be added by hand in the C code to the name of all
  482. routines which are called form Fortran and to all calls to Fortran
  483. routines.  If you do that, Fortran will call something which appears to
  484. C as getenv_ and there will be no confusion.
  485.  
  486.  
  487. 3.02: How do I statically bind Fortran libraries and dynamically
  488.       bind C libraries?
  489. From: amaranth@vela.acs.oakland.edu (Paul Amaranth)
  490.  
  491. [ Editor's note: Part of this is also discussed above under the C compiler
  492.   section, but I felt it was so valuable that I have left it all in. 
  493.   I've done some minor editing, mostly typographical. ]
  494.  
  495. The linker and binder are rather versatile programs, but it is not
  496. always clear how to make them do what you want them to.  In particular,
  497. there are times when you do not want to use shared libraries, but
  498. rather, staticly bind the required routines into your object.  Or, you
  499. may need to use two versions of the same routine (eg, Fortran & C).  Here
  500. are the results of my recent experiments.  I would like to thank Daniel
  501. Premer and Brad Hollowbush, my SE, for hints.  Any mistakes or omissions
  502. are my own and I have tended to interchange the terms "linker" and
  503. "binder".  These experiments were performed on AIX 3.1.2.  Most of this
  504. should be applicable to later upgrades of 3.1.
  505.  
  506. 1)  I have some C programs, I want to bind in the runtime routines.  How
  507.     do I do this? [Mentioned in section 2.04 of this article as well, ed.]
  508.  
  509.     You can put the -bnso binder command on the link line.  You should
  510.     also include the -bI:/lib/syscalls.exp control argument:
  511.       
  512.       $ cc *.o -bnso -bI:/lib/syscalls.exp -o foo
  513.  
  514.     This will magically do everything you need.  Note that this will bind
  515.     _all_ required routines in.  The -bI argument tells the linker that
  516.     these entry points will be resolved dynamically at runtime (these are
  517.     system calls).  If you omit this you will get lots of unresolved 
  518.     reference messages.
  519.  
  520. 2)  I want to statically bind in the Fortran runtime so a) my customers 
  521.     do not need to buy it and b) I don't have to worry about the runtime
  522.     changing on a new release.  Can I use the two binder arguments in
  523.     1) to do this?
  524.  
  525.     You should be able to do so, but, at least under 3002, if you do
  526.     you will get a linker error referencing getenv.  In addition, there
  527.     are a number of potential conflicts between Fortran and C routines.
  528.     The easy way just does not work.  See the section on
  529.     2 stage linking for C and Fortran on how to do this.  The getenv
  530.     problem is a mess, see the section on Comments & Caveats for more.
  531.  
  532. 3)  I have a mixture of C and Fortran routines, how can I make sure
  533.     that the C routines reference the C getenv, while the Fortran routines
  534.     reference the Fortran getenv (which has different parameters and, if
  535.     called mistakenly by a C routine results in a segmentation fault)?
  536.  
  537.     From Mike Heath (mike@pencom.com):
  538.  
  539.     Use -brename:symbol1,symbol2 when pre-linking the modules from one
  540.     of the languages. It does not matter which one you choose.
  541.  
  542. 4)  I have C and Fortran routines.  I want to bind in the xlf library, while
  543.     letting the rest of the libraries be shared.  How do I do this?
  544.  
  545.     You need to do a 2 stage link.  In the first stage, you bind in the
  546.     xlf library routines, creating an intermediate object file.  The
  547.     second stage resolves the remaining references to the shared libraries.
  548.  
  549.     This is a general technique that allows you to bind in specific system
  550.     routines, while still referencing the standard shared libraries.
  551.  
  552.     Specifically, use this command to bind the xlf libraries to the Fortran
  553.     objects:
  554.  
  555.        $ ld -bh:4 -T512 -H512 <your objects> -o intermediat.o \
  556.          -bnso -bI:/lib/syscalls.exp -berok -lxlf -bexport:/usr/lib/libg.exp \
  557.          -lg -bexport:<your export file>
  558.  
  559.     The argument -bexport:<your export file> specifies a file with the
  560.     name of all entry points that are to be visible outside the intermediate 
  561.     module.  Put one entrypoint name on a line.  The -bI:/lib/libg.exp line 
  562.     is required for proper functioning of the program.  The -berok argument 
  563.     tells the binder that it is ok to have unresolved references, at least 
  564.     at this time (you would think -r would work here, but it doesn't seem to).  
  565.     The -bnso argument causes the required modules to be imported
  566.     into the object.  The -lxlf, of course, is the xlf library.
  567.  
  568.     Then, bind the intermediate object with the other shared libraries in
  569.     the normal fashion:
  570.  
  571.        $ ld -bh:4 -T512 -H512 <C or other modules> intermediate.o \
  572.          /lib/crt0.o -lm -lc
  573.  
  574.     Note the absence of -berok.  After this link, all references should
  575.     be resolved (unless you're doing a multistage link and making another
  576.     intermediate).
  577.  
  578.     NOTE THE ORDER OF MODULES.  This is extremely important if, for example,
  579.     you had a subroutine named "load" in your Fortran stuff.  Putting the
  580.     C libraries before the intermediate module would make the C "load"
  581.     the operable definition, rather than the Fortran version EVEN THOUGH 
  582.     THE FORTRAN MODULE HAS ALREADY BEEN THROUGH A LINK AND ALL REFERENCES 
  583.     TO THE SYMBOL ARE CONTAINED IN THE FORTRAN MODULE.  This can
  584.     be extremely difficult to find (trust me on this one :-)  Is this
  585.     a bug, a feature, or what?
  586.     
  587.     [As mentioned in section 2.03 of this article, it is a feature that you
  588.     can replace individual objects in linked files, ed.]
  589.  
  590.     The result will be a slightly larger object than normal.  (I say slightly
  591.     because mine went up 5%, but then it's a 2 MB object :-)
  592.  
  593.  
  594. Comments & Caveats:
  595.  
  596.    From the documentation the -r argument to the linker should do what
  597.    -berok does.  It does not.  Very strange results come from using the
  598.    -r argument.  I have not been able to make -r work in a sensible manner
  599.    (even for intermediate links which is what it is supposed to be for).
  600.  
  601.        Note from Mike Heath (mike@pencom.com):
  602.  
  603.        'ld -r' is essentially shorthand for 'ld -berok -bnogc -bnoglink'.
  604.        Certainly, using -berok with an export file (so garbage collection
  605.        can be done) is preferable to ld -r, but the latter is easier.
  606.  
  607.    When binding an intermediate module, use an export file to define the
  608.    entry points you want visible in the later link.  If you don't do this,
  609.    you'll get the dreaded "unresolved reference" error.  Import files name
  610.    entry points that will be dynamically resolved (and possibly where).
  611.  
  612.    If you are in doubt about what parameters or libraries to link, use the
  613.    -v arg when linking and modify the exec call that shows up into 
  614.    an ld command.  Some thought about the libraries will usually yield an
  615.    idea of when to use what.  If you don't know what an argument is for,
  616.    leave it in.  It's there for a purpose (even if you don't understand it).
  617.  
  618.    Watch the order of external definitions (ie, libraries) when more than
  619.    one version of a routine may show up, eg "load".  The first one defined
  620.    on the ld command line is the winner.  
  621.  
  622.    The getenv (and system and signal) problem is a problem that started out
  623.    minor, got somewhat worse in 3003 and, eventually will be correctly fixed.
  624.    Basically, you should extract the 3002 version of these three routines
  625.    from xlf.a before doing the update and save them away, then link these
  626.    routines in if you use these Fortran system services.  
  627.  
  628.  
  629. 3.03: How do I check if a number is NaN?
  630. From: sdl@glasnost.austin.ibm.com (Stephen Linam)
  631.  
  632. NaN is "Not a Number".  It arises because the RISC System/6000 uses
  633. IEEE floating point arithmetic.
  634.  
  635. To determine if a variable is a NaN you can make use of the property
  636. that a NaN does not compare equal to anything, including itself.
  637. Thus, for real variable X, use
  638.  
  639.     IF (X .NE. X) THEN    ! this will be true if X is NaN
  640.  
  641. Floating point operations which cause exceptions (such as an overflow)
  642. cause status bits to be set in the Floating Point Status and Control
  643. Register (FPSCR).  There is a Fortran interface to query the FPSCR, and
  644. it is described in the XLF Fortran manuals -- I don't have the manuals
  645. right here, but look for FPGETS and FPSETS.
  646.  
  647. The IBM manual "Risc System/6000 Hardware Technical Reference - General
  648. Information" (SA23-2643) describes what floating point exceptions can
  649. occur and which bits are set in the FPSCR as a result of those exceptions.
  650.  
  651.  
  652. 3.04: Some info sources on IEEE floating point
  653.  
  654. 1. ANSI/IEEE STD 754-1985 (IEEE Standard for Binary Floating-Point
  655.    Arithmetic) and ANSI/IEEE STD 854-1987 (IEEE Standard for
  656.    Radix-Independent Floating-Point Arithmetic), both available from IEEE. 
  657.  
  658. 2. David Goldberg, "What Every Computer Scientist Should Know About
  659.    Floating-Point Arithmetic", ACM Computing Surveys, Vol. 23, No. 1,
  660.    March 1991, pp. 5-48.
  661.  
  662. ____________________________________________________________________________
  663. 4.00: GNU and Public Domain software
  664.  
  665. GNU software comes from the Free Software Foundation and various other
  666. sources. A number of ftp sites archive them. Read the GNU license for 
  667. rules on distributing their software.
  668.  
  669. Lots of useful public domain software have been and continue to be ported
  670. to the RS/6000. See below for ftp or download information.
  671.  
  672.  
  673. 4.01: How do I find sources?
  674. From: jik@GZA.COM (Jonathan Kamens)
  675.  
  676. There is a newsgroup devoted to posting about how to get a certain
  677. source.  One is strongly urged to follow the guidelines in the article
  678. How_to_find_sources(READ_THIS_BEFORE_POSTING), available via anonymous
  679. ftp from rtfm.mit.edu (18.70.0.224):
  680.  
  681. /pub/usenet/comp.sources.wanted/H_t_f_s_(R_T_B_P)
  682.  
  683. Note: You should try to use hostnames rather than ip addresses since
  684. they are much less likely to change.
  685.  
  686. Also available from mail-server@rtfm.mit.edu by sending a mail
  687. message containing:
  688.  
  689. send usenet/comp.sources.wanted/H_t_f_s_(R_T_B_P)
  690.  
  691. Send a message containing "help" to get general information about the
  692. mail server.
  693.  
  694. If you don't find what you were looking for by following these
  695. guidelines, you can post a message to comp.sources.wanted.
  696.  
  697.  
  698. 4.02: Are there any ftp sites?
  699.  
  700. Below are some ftp sites that are supposed to have RS/6000 specific
  701. software.  I haven't verified all the entries.
  702.  
  703. US sites:
  704. aixpdslib.seas.ucla.edu        128.97.2.211    pub
  705. acd.ucar.edu                128.117.32.1     pub/AIX         
  706. acsc.acsc.com               143.127.0.2        pub
  707. byron.u.washington.edu      128.95.48.32    pub/aix/RS6000 (older stuff)
  708. lightning.gatech.edu        128.61.10.8        pub/aix
  709. tesla.ee.cornell.edu        128.84.253.11    pub
  710.  
  711. European sites:
  712. nic.funet.fi                128.214.6.100    pub/unix/AIX/RS6000
  713. iacrs1.unibe.ch             130.92.11.3        pub
  714. files1zrz.zrz.TU-Berlin.DE  130.149.4.50    pub/aix
  715.  
  716. The first one is dedicated to software running on AIX.  It might not
  717. always be the latest versions of the software, but it has been ported to
  718. AIX (normally AIX version 3 only).  Once connected, you should retrieve
  719. the files README and pub/ls-lR.
  720.  
  721. Please use the European sites very sparingly.  They are primarily to
  722. serve people in Europe and most of the software can be found in the US
  723. sites originally.
  724.  
  725. If you know of other sites with AIX archives please let me know so
  726. I can include them here.
  727.  
  728.  
  729. 4.03: General hints
  730.  
  731. In general, curses based applications should be linked with -lcurses and
  732. _not_ with -ltermlib.  It has also been reported that compiling with
  733. -DNLS helps curses based programs.
  734.  
  735. Note that the RS/6000 has two install programs, one with System V flavor
  736. in the default PATH (/etc/install with links from /usr/bin and /usr/usg),
  737. and one with BSD behavior in /usr/ucb/install.
  738.  
  739.  
  740. 4.04: GNU Emacs
  741.  
  742. Version 18.57 of GNU Emacs started to have RS/6000 support.  Use
  743. s-aix3-2.h for AIX 3.2. Emacs is going through rapid changes recently.
  744. Current release is 19.x.
  745.  
  746. Emacs will core-dump if it is stripped, so don't strip when you install
  747. it.  You can edit a copy of the Makefile in src replacing all 'install -s' 
  748. with /usr/ucb/install.
  749.  
  750.  
  751. 4.05: gcc/gdb
  752.  
  753. GNU C version 2.0 and later supports the RS/6000, and compiles straight
  754. out of the box.  You may, however, experience that compiling it requires
  755. large amounts of paging space.
  756.  
  757. Compiling gcc and gdb requires a patch to the 'as' assembler.  Call
  758. IBM software support and request patch for apar IX26107 (U409205).
  759.  
  760. gcc has undergone many changes lately and the current version is 2.4.x.
  761. gdb is at 4.8.
  762.  
  763. If your machine crashed when trying to run gdb 4.7, call software support
  764. and request ptf U412815.
  765.  
  766.  
  767. 4.06: GNU Ghostscript
  768.  
  769. The PostScript interpreter GNU Ghostscript Version 2.3 and later supports
  770. the RS/6000 and can be found on various ftp sites. Current version is 2.5.2.
  771.  
  772. 4.07: TeX
  773.  
  774. TeX can be retrieved via ftp from ftp.uni-stuttgart.de.
  775. Be sure to use a recent C compiler (01.02.0000.0013) and you can compile
  776. with optimization.
  777.  
  778.  
  779. 4.08: perl
  780.  
  781. Current version is 4.035 and compiling with cc should give no problems. 
  782. If you use bsdcc, do not use perl's builtin malloc(), edit config.H to
  783. '#define HAS_SYMLINK', and you should be on your way.  Bill Wohler tells
  784. me that perl will run without editing config.H and with cc as well.  So
  785. just say no to use perl's malloc().
  786.  
  787. Doug Sewell <DOUG@YSUB.YSU.EDU> adds:
  788.  
  789. In addition to not using the perl-provided malloc, when asked if you
  790. want to edit config.sh, change 'cppstdin' from the wrapper-program
  791. to '/lib/cpp'.
  792.  
  793. The perl wrapper name is compiled into perl, and requires that you keep
  794. that file in the source directory, even if you blow away the rest of
  795. the source.  /lib/cpp will do the job by itself.  I suspect this will
  796. be fixed in perl 4.0pl11 Configure script.
  797.  
  798. Also, beware if you have gdbm installed per the instructions in the FAQ.
  799. Gdbm is compiled with bsdcc; perl (as I installed it, anyway) was built
  800. with cc, so I used the IBM-provided ndbm routines.
  801.  
  802.  
  803. 4.09: X-Windows
  804.  
  805. IBM has two releases of 3.2.3. The base version has X11R4 and Motif 1.1 and
  806. the extended version has X11R5 as AIXwindows 1.2.3.
  807.  
  808. Those of you on 3.1 might want to read the following.  Some people from
  809. IBM have released patches for the X11R4 distribution tape available via
  810. anonymous FTP from export.lcs.mit.edu.  Note that as with the RT, there
  811. is no X11R4 server to build, just the libraries.
  812.  
  813. From: Frederick Staats <fritz@saturn.ucsc.edu>
  814.  
  815. In mit/config/ibm.cf
  816.     Updated OSName (AIX 3.1.6)
  817.  
  818. In mit/config/site.def
  819.     Changed ProjectRoot /usr/local/X11R5
  820.     Added ManSuffix (to change suffix from n to 1)
  821.     Added InstallXdmConfig YES and
  822.     InstallXinitConfig YES
  823.     Added HasXdmAuth YES (Copied mit/lib/Xdmcp/Wraphelp.c to source tree)
  824.     Added InstallFSConfig YES
  825.  
  826. In mit
  827.     nohup make BOOTSTRAPCFLAGS="-Daix" World &
  828.     nohup make install &
  829.     nohup make install.man &
  830.  
  831. Please note that there are known bugs in Xibm server of the X11R5
  832. release that prevent "xdm" from being usable.  A simple patch (that I'm
  833. not free to redistribute) should be out very soon through the regular
  834. contrib channels.
  835.  
  836. Also note, that some files in mit/extensions/lib/PEX/c_binding are very
  837. large and are told to require at least 150 Mb paging space to compile.
  838.  
  839.  
  840. From: pierce@claven.cambridge.ibm.com (Andrew Pierce)
  841.  
  842. The following bugs have been reported with the R5 server and are fixed
  843. (hopefully!), and the fixes have been sent to MIT for inclusion in the
  844. first patch set:
  845.  
  846. - BackingStore does not seem to work (twm menus blank and xman pulldown 
  847.   menus only display once).
  848. - Problem in keyclick restoration/bell
  849. - Problem with option parsing (-bs does not turn off backing store).
  850. - Problem with setting non-blocking I/O on X Connections 
  851.   (resizing xcalc wedges the server).
  852. - xdm core dumps. 
  853.  
  854. There is also a problem in initializing the display adapter when the R5
  855. server is brought up from a poweroff condition on the RISC/6000.  We are
  856. still investigating this problem.  A temporary workaround is to run the
  857. AIX product server first, which seems to do the right thing in
  858. initializing the adapter, then run the R5 server.
  859.  
  860. As for whether the OSF/Motif window manager will work with the R5
  861. server, I don't know of any reasons why it shouldn't, and I've run it
  862. now and again, although tvtwm is my preferred wm.
  863.  
  864.  
  865. From: cary@jove.Colorado.EDU (John R. Cary)
  866.  
  867. There are (at least) three problems.  
  868.  
  869. 1) The fonts as built with the IBM (Greening) patches of X11R4 do not
  870. work with the AIX3.1.5 server because (according to mleisher@NMSU.Edu)
  871. they likely have the wrong byte order.
  872. 2) The ibm fonts that come with AIX3.1.5 must be converted to .pcf fonts
  873. to work with the X11R5 server.
  874. 3) Info always looks for its fonts (in /usr/lpp/info/X11fonts)
  875. regardless of which server you are using.  So if you use the X11R5
  876. server, info loads the AIX3.1x .snf fonts, which do not work with the
  877. X11R5 server.
  878.  
  879. Using the X11R5 server means that you must fix problems 2 and 3.
  880.  
  881. My fix of 2: I first got snftobdf from the X11 contrib directory on
  882. export.lcs.mit.edu and built it. I then made a directory:
  883. mkdir /usr/local/X11R5/lib/X11/fonts/ibm
  884. which I added to my font path with xset in my .xinitrc file.
  885. Then I constructed the chosen .pcf fonts one at a time:
  886. cd /usr/lib/X11/fonts
  887. snftobdf Rom10.snf | bdftopcf >/usr/local/X11R5/lib/X11/fonts/ibm/Rom10.pcf
  888.  
  889. I actually did this with this script:
  890.  
  891. #!/bin/ksh 
  892. # A script to convert desired AIX fonts to .pcf fonts for X11R5 
  893. for arg in 6x10 Bld14 Rom14 Rom6 6x12 Bld17 Rom16 Rom7 vtbold 6x13
  894. Erg 14 Rom17 Rom8 vtdhbot 8x13 Itl14 Rom22 cursor vtdhtop 8x13B Rom10
  895. Rom28 fixed vtdwidth 9x15 Rom11 Rom29 Vtsingle 
  896. do
  897. echo "snftobdf $arg.snf | bdftopcf >/usr/local/X11R5/lib/X11/fonts/ibm/$arg.pcf"
  898. snftobdf $arg.snf | bdftopcf >/usr/local/X11R5/lib/X11/fonts/ibm/$arg.pcf
  899. done
  900.  
  901. My fix of 3: was simply to rename the info fonts directory so that info
  902. could not find it and load it.  Another fix (I am told) is to set one's
  903. font path with /usr/lpp/info/X11fonts last so that another fonts is
  904. loaded first.  This did not work for me, perhaps because of differences
  905. in my fonts.alias file.
  906.  
  907. If you want to continue using the AIX3.1x server and you want to use the
  908. X11R4 fonts, you must convert these fonts to the correct bit order.  I
  909. did not do this, and so DO NOT KNOW the correct procedure.  I imagine
  910. that once the correct bit order is determined, one can use snftobdf to
  911. convert fonts back to bdf format then bdftosnf with correct AIX3.1 bit
  912. order to get things correct with the aix3.1x server.
  913.  
  914.  
  915. 4.10: bash
  916.  
  917. Bash is ported and has some patches on prep.ai.mit.edu.  The current
  918. version is 1.12 and seems to work fine.
  919.  
  920.  
  921. 4.11: Elm
  922.  
  923. A very nice replacement for mail.  Elm should be pretty straightforward,
  924. the only thing to remember is to link with -lcurses as the only
  925. curses/termlib library.  You may also run into the problem listed under
  926. point 2.13 above.
  927.  
  928.  
  929. 4.12: Oberon 2.2
  930.  
  931. From: afx@muc.ibm.de (Andreas Siegert)
  932.  
  933. Oberon is Wirth's follow on to Modula-2, but is not compatible.  A free
  934. version of Modula-3 is available from DEC/Olivetti at
  935. gatekeeper.dec.com.  This is not a Modula-2 replacement but a new
  936. language.  There are currently two M2 compilers for the 6000 that I know
  937. of.  One from Edinburgh Portable Compilers, +44 31 225 6262 (UK) and the
  938. other from Gardens Point compiler +41 65 520311 (Switzerland).
  939.  
  940. Oberon can be obtained via anonymous ftp from neptune.inf.ethz.ch
  941. (129.132.101.33) under the directory Oberon/RS6000 or gatekeeper.dec.com
  942. (16.1.0.2).
  943.  
  944.  
  945. 4.13: Kermit
  946.  
  947. Get it from watsun.cc.columbia.edu (128.59.39.2) in
  948. kermit/bin/cku188.tar.Z.  Uncompress, untar, and "make rs6000", and it
  949. works. 
  950.  
  951.  
  952. 4.14: Gnu dbm
  953. From: doug@cc.ysu.edu (Doug Sewell)
  954.  
  955. Here's the fixes for RS/6000's: 
  956.  
  957. apply this to testgdbm.c:
  958. 158c158
  959. <   char opt;
  960. ---
  961. >   int opt;
  962. 166c166
  963. <   while ((opt = getopt (argc, argv, "rn")) != -1)
  964. ---
  965. >   while ((opt = getopt (argc, argv, "rn")) != EOF)
  966.  
  967. Apply this to systems.h:
  968. 111a112,114
  969. > #ifdef RS6000
  970. > #pragma alloca
  971. > #else
  972. 112a116
  973. > #endif
  974.  
  975. To compile, edit the Makefile.  Set CC to bsdcc (see /usr/lpp/bos/bsdport
  976. if you don't have 'bsdcc' on your system) and set CFLAGS to -DRS6000 and
  977. whatever options (-g, -O) you prefer.  Don't define SYSV.
  978.  
  979.  
  980. 4.15: tcsh
  981. From: cordes@athos.cs.ua.edu (David Cordes)
  982.  
  983. tcsh is available from tesla.ee.cornell.edu (pub/tcsh-6.00 directory)
  984. Compiles with no problems.  You must edit /etc/security/login.cfg to
  985. permit users to change to this shell (chsh), adding the path where the
  986. shell is installed (in my case, /usr/local/bin/tcsh).
  987.  
  988.  
  989. 4.16: Kyoto Common Lisp
  990.  
  991. The sources are available from cli.com.  The kcl package is the needed
  992. base; also retrieve the latest akcl distribution.  akcl provides a
  993. front-end that "ports" the original kcl to a number of different
  994. platforms.  The port to the 6000s worked with no problems.  However, you
  995. must be "root" for the make to work properly with some memory protection
  996. routines.
  997.  
  998.  
  999. 4.17: Tcl/Tk
  1000.  
  1001. Current versions: Tcl, 6.7; Tk, 3.2.  Available from sprite.berkeley.edu.
  1002. I seem to be unable to connect to this site recently.
  1003.  
  1004.  
  1005. 4.18: Expect
  1006. From: Doug Sewell <DOUG@YSUB.YSU.EDU>
  1007.    
  1008. To build the command-interpreter version, you must have the tcl library
  1009. built successfully.  The expect library doesn't require tcl.  Note:
  1010. Expect and its library are are built with bsdcc, so applications using
  1011. the library probably also need to be developed with bsdcc.
  1012.  
  1013. I ftp'd expect from ftp.cme.nist.gov.
  1014.  
  1015. You need to change several lines in the makefile.  First you need
  1016. to customize source and target directories and files:
  1017. #
  1018. TCLHDIR = /usr/include
  1019. TCLLIB = -ltcl
  1020. MANDIR = /usr/man/manl               (local man-pages)
  1021. MANEXT = l
  1022. BINDIR = /u/local/bin
  1023. LIBDIR = /usr/lib
  1024. HDIR = /usr/include
  1025. ...
  1026. Next set the compiler, switches, and configuration options:
  1027. #
  1028. CC = bsdcc
  1029. CFLAGS = -O
  1030. ...
  1031. PTY_TYPE = bsd
  1032. ...
  1033. INTERACT_TYPE = select
  1034. ...
  1035. Then you need to make these changes about line 90 or so:
  1036. comment out CFLAGS = $(CLFLAGS)
  1037. un-comment these lines:
  1038. CFLAGS = $(CLFLAGS) $(CPPFLAGS)
  1039. LFLAGS = ($CLFLAGS)
  1040.  
  1041. Then run 'make'.
  1042.  
  1043. You can't run some of the examples without modification (host name,
  1044. etc).  I don't remember if I ran all of them or not, but I ran enough
  1045. that I was satisfied it worked.
  1046.  
  1047.  
  1048. 4.19: Public domain software on CD
  1049. From: mbeckman@mbeckman.mbeckman.com (Mel Beckman)
  1050.  
  1051. The Prime Time Freeware CD collection is a package of two CD's and docs
  1052. containing over THREE GIGABYTES of compressed Unix software. It costs $69
  1053. from Prime Time Freeware, 415-112 N. Mary Ave., Suite 50, Sunnyvalek, CA
  1054. 94086. Phone 408-738-4832 voice, 408-738-2050 fax. No internet orders as
  1055. far as I can tell.
  1056.  
  1057. I've extracted and compiled a number of the packages, and all have worked
  1058. flawlessly so far on my 220. Everything from programming languages to 3D
  1059. solid modeling is in this bonanza!
  1060.  
  1061. Ed: The O'Reilly book, Power Unix Tools, also contains a CD-ROM with lots
  1062. of useful programs compiled for the RS/6000, among other platforms.
  1063.  
  1064. ______________________________________________________________________________
  1065. 5.00: Third party products
  1066.  
  1067. [ Editor's note: Entries in this section are edited to prevent them from
  1068.   looking like advertising. Prices given may be obsolete.  Companies 
  1069.   mentioned are for reference only and are not endorsed in any fashion. ]
  1070.  
  1071.  
  1072. 5.01: IBM list of third party products
  1073. From: marc@ibmpa.awdpa.ibm.com (Marc Pawliger)
  1074.  
  1075. Marc Pawliger post an extensive list periodically to this newsgroup
  1076. about various third party hardware products for the RS/6000.  This list
  1077. can also be ftp'd from ibminet.awdpa.ibm.com.
  1078.  
  1079.  
  1080. 5.02: Disk/Tape/SCSI
  1081. From: anonymous
  1082.  
  1083. - Most SCSI disk drives work (IBM resells Maxtor, tested Wren 6&7 myself);
  1084.   use osdisk when configuring (other SCSI disk).
  1085.  
  1086. - Exabyte: Unfortunately only the ones IBM sells are working.
  1087.   A few other tape drives will work; 
  1088.   use ostape when configuring (other SCSI tape).
  1089.  
  1090. - STK 3480 "Summit": Works with Microcode Version 5.2b
  1091.  
  1092.  
  1093. From: bell@hops.larc.nasa.gov (John Bell)
  1094.                
  1095. In summary, third party tape drives work fine with the RS/6000 unless 
  1096. you want to boot from them. This is because IBM drives have 'extended 
  1097. tape marks', which IBM claims are needed because the standard marks 
  1098. between files stored on the 8mm tape are unreliable. These extended 
  1099. marks are used when building boot tapes, so when the RS/6000 boots, it 
  1100. searches for an IBM tape drive and refuses to boot without it.
  1101.  
  1102.  
  1103. From: amelcuk@gibbs.clarku.edu (Andrew Mel'cuk)
  1104.  
  1105. The IBM DAT is cheap and works.  If you get all the patches beforehand
  1106. (U407435, U410140) and remember to buy special "Media Recognition
  1107. System" tapes (Maxell, available from APS 800.443.4461 or IBM #21F8758)
  1108. the drive can even be a pleasure to use.  You can also flip a DIP switch
  1109. on the drive to enable using any computer grade DAT tapes (read the
  1110. hardware service manual).
  1111.  
  1112. Other DAT drives also work.  I have tried the Archive Python (works) and
  1113. experimented extensively with the Archive TurboDAT.  The TurboDAT is a
  1114. very fast compression unit, is not finicky with tapes and doesn't
  1115. require the many patches that the IBM 7206 does.  Works fine with the
  1116. base AIX 3.2 'ost' driver.
  1117.  
  1118.  
  1119. From: pack@acd.ucar.edu (Daniel Packman)
  1120.  
  1121. >>You can boot off of several different brands of non-IBM Exabytes.
  1122. >>At least TTI and Contemporary Cybernetics have done rather complete
  1123. >>jobs of emulating genuine IBM products.
  1124.  
  1125. A model that has worked for us from early AIX 3.1 through 3.2 is a TTI
  1126. CTS 8210.  This is the old low density drive.  The newer 8510 is dual
  1127. density (2.2gig and 5gig).  Twelve dip switches on the back control the
  1128. SCSI address and set up the emulation mode.  These drives have a very
  1129. useful set of lights for read-outs (eg, soft error rate, tape remaining,
  1130. tape motion, etc.).
  1131.  
  1132.  
  1133. 5.03: Memory
  1134.  
  1135. I got a flyer from Nordisk Computer Services (Portland 503-598-0111, 
  1136. Seattle 206-242-7777).  Some sample prices:
  1137.  
  1138.       16 MB Upgrade Kit   $  990
  1139.       32 MB Upgrade Kit   $1,700
  1140.       64 MB Upgrade Kit   $3,300
  1141.  
  1142. 5xx machines have 8 memory slots, 3x0s have 2, and 3x5s have only one.
  1143. You need to add memory in pairs for the 5xx machines.
  1144.  
  1145.  
  1146. 5.04: Others
  1147. From: anonymous
  1148.        
  1149. IBM RISC System/6000 Interface Products
  1150.  
  1151. National Instruments Corporation markets a family of instrumentation
  1152. interface products for the IBM RISC System/6000 workstation family.  The
  1153. interface family consists of three products that give the RISC
  1154. System/6000 connectivity to the standards of VMEbus, VXIbus and GPIB. 
  1155. For more information, contact National Instruments Corporation,
  1156. 512-794-0100 or 1-800-433-3488.
  1157.  
  1158.  
  1159. 5.05: C++ compilers
  1160.  
  1161. Several C++ compilers are available.  Glockenspiel and Greenhills were
  1162. amongst the first vendors.  I received e-mail that Glockenspiel may now
  1163. be part of Computer Associates.  xlC++ is available from IBM.  For gcc
  1164. enthusiasts, there is g++.  Comeau Computing (718-945-0009) offers
  1165. Comeau C++ 3.0 with Templates.
  1166.  
  1167. ______________________________________________________________________________
  1168. 6.00: Miscellaneous other stuff
  1169.  
  1170. 6.01: Can I get support by e-mail?
  1171.  
  1172. AIXServ is a service tool that allows users connected to the internet
  1173. and usenet to report problems using unix mail. AIXServ is available
  1174. at no charge, to request a copy of this package send a note with the
  1175. subject of "package" to one of the following e-mail addresses:
  1176.  
  1177.     Internet:   aixbugs%aixserv@uunet.UU.NET
  1178.     Usenet:     uunet.UU.NET!aixserv!aixbugs
  1179.                     aixbugs@austin.ibm.com     (transactions request)
  1180.                     services@austin.ibm.com    (administrivia)
  1181.                     aasc@austin.ibm.com        (test cases under 100KB)
  1182.  
  1183. The package will be mailed electronically and will contain instructions
  1184. for using AIXServ.
  1185.  
  1186. Using AIXServ, customers have the ability to 1) open new problem reports
  1187. 2) update existing problem records 3) request a status update on an
  1188. existing problem record. Currently this service is available to United
  1189. States customers only.
  1190.  
  1191. Thomas Braunbeck reported that German customers with ESS (extended
  1192. software service) contracts can get support by e-mail too. They can 
  1193. obtain information by sending mail with Subject: help to 
  1194. aixcall@aixserv.mainz.ibm.de.
  1195.  
  1196. Various flavors of service offerings are available. Contact your IBM rep
  1197. for details.
  1198.  
  1199.  
  1200. 6.02: List of useful faxes
  1201.  
  1202. You can get some useful info from these faxes by dialing IBM's Faxserver
  1203. at 1-800-IBM-4FAX. If you're calling for the first time, push 3 then 2
  1204. to request a list of RS/6000 related faxes.
  1205.  
  1206. document number                       Title
  1207. ---------------  -----------------------------------------------------
  1208.      1453        Recovering from LED 518 in AIX 3.2
  1209.      1457        Recovering from LED 552 in AIX 3.1 and 3.2
  1210.      1461        Alternative Problem Reporting Methods
  1211.      1470        Recovering from LED 223/229, 225/229, 233/235, 221/229, or 221
  1212.      1537        How to Get AIX Support
  1213.      1719        Performance Analyzer/6000
  1214.      1721        Recovering from LED 553 in AIX 3.1 and 3.2
  1215.      1746        Recovering from LED 551 in AIX 3.1 and 3.2
  1216.      1755        Recovering Volume Groups
  1217.      1802        Repairing File Systems with fsck in AIX 3.1 and 3.2
  1218.      1803        How to Take a System Dump
  1219.      1804        Setting Up a Modem With the RS/6000
  1220.      1845        Using iptrace to Track Remote Print Jobs
  1221.      1867        Clearing the Queuing System
  1222.      1895        Removing/Replacing a Fixed Disk
  1223.      1896        Tape Drive Densities and Special Files
  1224.      1897        Tips on mksysb for AIX 3.2
  1225.      1909        UUCP (BNU) Helpful Information
  1226.      1910        Synchronizing Disk Names
  1227.      1988        Recovering from LED 201 in AIX 3.1 and 3.2
  1228.      1989        Recovering from LED 727 in AIX 3.2
  1229.      1991        Recovering from LED c31 in AIX 3.1 and 3.2
  1230.      2079        AIX 3.2.4
  1231.      2121        AIX 3.2.4 Installation Tips
  1232.  
  1233.  
  1234. 6.03: List of 3.2 ptfs
  1235.  
  1236. A list of the latest ptfs for 3.2 is available for ftp at
  1237. ibminet.awdpa.ibm.com.
  1238.  
  1239.  
  1240. 6.04: Some RS232 hints
  1241. From: graeme@ccu1.aukuni.ac.nz, sactoh0.SAC.CA.US!jak
  1242.  
  1243. Q: How do you connect a terminal to the RS232 tty ports when not using
  1244.    the standard IBM cable & terminal transposer?
  1245. A: 1- Connect pins 2->3, 3->2, 7->7 on the DB25's
  1246.    2- On the computer side, most of the time cross 6->20 (DSR, DTR).
  1247.       Some equipment may require connecting 6, 8, and 20 (DSR, DCD, DTR).
  1248.  
  1249. Also, pin 1 (FG) should be a bare metal wire and the cable should be
  1250. shielded with a connection all the way through. Most people don't run
  1251. pin 1 because pins 1 & 7 (SG) are jumpered on many equipment.
  1252.  
  1253. When booting from diskettes, the port speed is always 9600 baud.  If you
  1254. use SMIT to set a higher speed (38400 is nice) for normal use, remember
  1255. to reset your terminal before booting.
  1256.  
  1257. Q: How do you connect a printer to the RS232 tty ports
  1258. A: 1- Connect pins 2->3, 3->2, 7->7 on the DB25's
  1259.    2- On the computer side, loop pins 4->5 (CTS & RTS)
  1260.  
  1261.  
  1262. 6.05  What publications are available for AIX and RS/6000?
  1263.  
  1264. The following are free just for the asking:
  1265.  
  1266. 1. RS/Magazine
  1267.    P.O. Box 3272
  1268.    Lowell, MA 01853-9876
  1269.    e-mail: aknowles@expert.com (Anne Knowles, editor)
  1270.  
  1271. 2. AIXpert
  1272.    IBM Corporation
  1273.    Mail Stop 36
  1274.    472 Wheelers Farms Road
  1275.    Milford, CT 06460
  1276.    FAX: (203) 783-7669
  1277.  
  1278. 3. RiSc World
  1279.    P.O. Box 399
  1280.    Cedar Park, TX 78613
  1281.    FAX: (512) 331-3900
  1282.    Usenet: {cs.utexas.edu,execu,texbell}!pcinews!rsworld
  1283.  
  1284.  
  1285. These manuals should be available from your favorite IBM office.
  1286.  
  1287. SC23-2204-02  Problem Solving Guide
  1288. SC23-2365-01  Performance Monitoring and Tuning Guide for AIX 3.2
  1289. SA23-2629-07  Service Request Number Cross Reference, Ver 2.2
  1290. SA23-2631-05  Diagnostic Programs: Operator Guide
  1291. SA23-2632-05  Diagnostic Programs: Service Guide
  1292. SA23-2643-01  Hardware Technical Reference: General Information
  1293. SA23-2646-01  Hardware Technical Reference: Options and Devices
  1294.  
  1295.  
  1296. 6.06: Some acronyms
  1297.  
  1298. APAR - authorized program analysis report
  1299. BOS  - Basic Operating System
  1300. DCR  - design change request
  1301. LPP  - Licensed Program Product
  1302. ODM  - Object Database Manager
  1303. PRPQ - programming request for price quotation
  1304. PTF  - Program Temporary Fix
  1305. SMIT - System Management Interface Tool
  1306.  
  1307.  
  1308. 6.07: How do I get this by mailserver or ftp?
  1309.  
  1310. Since the articles are crossposted to news.answers, any archive carrying
  1311. that newsgroup will also have these articles. In particular, try
  1312. rtfm.mit.edu in the directory pub/usenet/news.answers.  This FAQ is
  1313. archived as "aix-faq/faq/part[1-3]".
  1314.  
  1315.  
  1316. 6.08: Where can I send suggestions for tools?
  1317.  
  1318. If you have any suggestions or comments about tools, whether currently or 
  1319. desirable to be in AIX, send a note to aix_tool_ideas@austin.ibm.com.
  1320.  
  1321. _____________________________________________________________________________
  1322. 7.00: Contributors
  1323.  
  1324. The following persons have contributed to this list.  If you want to
  1325. contribute anonymously, just let me know - but do tell me who you are.
  1326. I apologise if I missed out anyone.
  1327.  
  1328. Thank you all, this would definitely not be the same without _your_ input.
  1329.  
  1330. Rudy Chukran            <chukran@austin.VNET.IBM.COM>
  1331. Christopher Carlyle O'Callaghan    <asdfjkl@wam.umd.edu>
  1332. Poul-Henning Kamp        <phk@data.fls.dk>
  1333. Richard Wendland                <richard@praxis.co.uk>
  1334. Ge van Geldorp            <ge@dutlru2.tudelft.nl>
  1335. Chris Jacobsen            <jacobsen@sbhep2.phy.sunysb.edu>
  1336. Peter Jeffe            <peter@ski.austin.ibm.com>
  1337. Jean-Francois Panisset        <panisset@thunder.mcrcim.mcgill.edu>
  1338. John Cary            <cary@boulder.colorado.edu>
  1339. Vijay Debbad            <vijay@ingres.com>
  1340. Dick Karpinski            <dick@ccnext.ucsf.edu>
  1341. Konrad Haedener            <haedener@iac.unibe.ch>
  1342. Doug Sewell            <DOUG@YSUB.YSU.EDU>
  1343. David Cordes            <cordes@athos.cs.ua.edu>
  1344. Graeme Moffat            <g.moffat@aukuni.ac.nz>
  1345. Andrew Pierce            <pierce@claven.cambridge.ibm.com>
  1346. Stephen Linam            <sdl@glasnost.austin.ibm.com>
  1347. Jerome Park            <jerome%aixserv@uunet.UU.NET>
  1348. Konrad Haedener            <haedener@iacrs1.unibe.ch> 
  1349. Steve Roseman            <lusgr@chili.CC.Lehigh.Edu>
  1350. John Burton            <burton@asdsun.larc.nasa.gov>
  1351. Thierry Forveille        <FORVEILL@FRGAG51.BITNET>
  1352. Joubert Berger            <afc-tci!joubert>
  1353. Minh Tran-Le            <tranle@intellicorp.com>
  1354. Paul Amaranth            <amaranth@vela.acs.oakland.edu>
  1355. Mark Whetzel            <markw@airgun.wg.waii.com>
  1356. Daniel Packman            <pack@acd.ucar.edu>
  1357. Ken Bowman            <bowman@uiatma.atmos.uiuc.edu>
  1358. Cary E. Burnette        <kerm@mcnc.org>
  1359. Christophe Wolfhugel        <wolf@grasp1.univ-lyon1.fr>
  1360. Leonard B. Tropiano        <lenny@aixwiz.austin.ibm.com>
  1361. Bill Wohler            <wohler@sap-ag.de>
  1362. James Salter            <jsalter@ibmpa.awdpa.ibm.com>
  1363. Witold Jan Owoc            <witold@enme.ucalgary.ca>
  1364. Marc Kwiatkowski        <marc@ultra.com>
  1365. Ronald S. Woan            <woan@exeter.austin.ibm.com>
  1366. Mijan Huq            <huq@hagar.ph.utexas.edu>
  1367. Herbert van den Bergh        <hbergh@nl.oracle.com>
  1368. Michael Stefanik        <mike@bria.UUCP>
  1369. John F. Haugh            <jfh@rpp386.cactus.org>
  1370. Ed Kubaitis            <ejk@ux2.cso.uiuc.edu>
  1371. Jaime Vazquez            <jaime@austin.vnet.ibm.com>
  1372. Bjorn Engsig            <bengsig@oracle.com>
  1373. Frank Kraemer             <kraemerf@franvm3.VNET.IBM.COM>
  1374. Andreas Siegert                 <afx@muc.ibm.de>
  1375. Thomas Braunbeck                <braunbec@aixserv.mainz.ibm.de>
  1376.  
  1377. _____________________________________________________________________________
  1378. Epilogue
  1379.  
  1380. If you have any comments about this list, please mail them to me, as I
  1381. cannot guarantee to pick up posted changes.  All input should be emailed
  1382. to me at basto@cactus.org on the Internet.  You can also try using
  1383. cs.utexas.edu!mavrick!luis. 
  1384.  
  1385. I work for Computer Sciences Corp. and I am doing this on my own time.
  1386. Please do not ask me questions that should be asked to IBM. If you have 
  1387. any problems, please ask IBM or post your questions to this newsgroup.
  1388. I might respond to the latter.
  1389.  
  1390. Opinions expressed here have nothing to do with either IBM or CSC.
  1391.  
  1392. All trademarks are the property of their respective owners.
  1393.  
  1394. -- 
  1395. Luis Basto
  1396. Computer Sciences Corporation
  1397. Internet: basto@cactus.org
  1398. Usenet:   cs.utexas.edu!mavrick!luis
  1399.