[comp.sys.amiga.tech] Lattice

umholtm0@ccu.umanitoba.ca (Heston Holtmann) (02/12/90)

  I have experience consistent gurus #3.xxxxxxxxx when calling LC using
version 5.04 and 5.04a and several compile options.  The guru seems to
occure no matter what the source file is.
 
 'LC -cwei -m0t -b0 -d0 -Lcdn foo.c' will compile fine, call the linker, but
when blink exits it hangs the machine just before returning to dos.
 
  I relize that -m0t -b0 -d0 are all defaults, but blink hangs the machine only
when various combinations of compile flags are invoked and of course only when
the -L option is included.  Calling blink manualy causes no probs..
 
  Does anyone know more about this bug, or know if Lattice(tm) is aware of it??
 
    Heston Holtmann

walker@sas.UUCP (Doug Walker) (02/15/90)

In article <1990Feb12.025526.18769@ccu.umanitoba.ca> umholtm0@ccu.umanitoba.ca (Heston Holtmann) writes:
>
> 'LC -cwei -m0t -b0 -d0 -Lcdn foo.c' will compile fine, call the linker, but
>when blink exits it hangs the machine just before returning to dos.

This sounds like an LMK bug that occurred when command lines of >256 bytes were
sent to Execute().  Try hitting <return> a few times and see if it picks up
and goes on.  


  *****
=*|_o_o|\\=====Doug Walker, Software Distiller=======================
 *|. o.| ||
  | o  |//     "I try to make everyone's day a little more surreal."
  ======               - Calvin
usenet: ...mcnc!rti!sas!walker   plink: dwalker  bix: djwalker 

umholtm0@ccu.umanitoba.ca (Heston Holtmann) (02/28/90)

  Has anyone had linking problems with lcr.lib lcmr.lib when using __regargs
instead of __stdargs (compiler default) on your functions to force the
compiler to use registerized parameters instead of the standard stack
convention of passing function arguments??  I HAVE..
 
  I have a simple test program that calls a function returning a double and
has a double as its single argument.  when i use the __regargs or compile
with the -rr option to override the stack convesion and then link with
the registerized versions of the Lattice libraries i get undefeined
references to @main.
 
SAMPLE CODE FORMAT

	#include <stdio.h>
	#include <math.h>

	main() {
		extern double __regargs func( double );

		func( x );
	}
	double __regargs func( double n ) {
		....
		return( n );
	}

compile format:  lc -cweik -fl -rr foo.c

link format: blink from lib:c.o+foo.o to foo lib lib:lcmr.lib lib:lcr.lib
             lib:amiga.lib sc sd nd

blink error: Undefined sysmbols		First References
	     @main			File 'lib:lcr.lib'
	     Enter a DEFINE value for @main (default _stuf):
 
    I have the feeling i missed something along the line, but the docs
don't document __regargs or -rr very much...
 
   this pertains to Lattice(tm) version 5.04a
 
     Heston Holtmann

________________________________________________________________________

The One Who Masters All the Funny Symbols, Masters the World!
 
________________________________________________________________________
 

new@udel.edu (Darren New) (03/01/90)

In article <1990Feb28.091642.7789@ccu.umanitoba.ca> umholtm0@ccu.umanitoba.ca (Heston Holtmann) writes:
>when i use the __regargs or compile
>with the -rr option to override the stack convesion and then link with
>the registerized versions of the Lattice libraries i get undefeined
>references to @main.

You must define a prototype for any function that uses registerized
parameters for obvious reasons.  A registerized function has a "@"
in front instead of an "_" to avoid problems in libraries.
Since your sample code has no prototype for main, _main is created
(with stdargs) instead of @main.  The startup code is looking for
@main.  Solution: write a prototype for main().

Has anybody had success making libraries with -rb?    -- Darren