🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.unix.programmer
1 messages
1 total messages Started by Dirk Otterbach PEM 0711/71 30 45 Tue, 27 Nov 1990 09:54
Xenix Cross Development from 386 to 286
#1308
Author: Dirk Otterbach PEM 0711/71 30 45
Date: Tue, 27 Nov 1990 09:54
105 lines
3562 bytes
	I have the following problem:

	I have to port a very large program from SCO XENIX/386 Rel. 2.3.3 to
	SCO XENIX/286. As we don't have the right development system in-
	stalled on the target (=286) machine, we do a cross compilation
	on the 386 system.

	With size of the program (1.5 MByte incl. debug information) the
	compilation with the '-Zi -Od -Ml2 -Gt10' results in a runtime
	stack overflow.

	By enlarging the stack with '-F3000' the program wouldn't abort
	but would produce wrong screen output and results. I think that's
	still a stack size problem, but I can't enlarge stack size any 
	more without overflowing the default data segment.

	Another try was to put the stack into an extra segment with the
	flags '-Zi -Od -Ml -M2 -Au -ND GLOB_DAT -F 4000'. Now the program
	would hang up at the first malloc call (see below).

	Using the flags '-Zi -Od -Ml -M2 -Mt1' would result in further 
	problems. Now the linker has not enough memory for the segments.
	I could overcome this problem using the link option '-SE 1024'.
	Result: the program would hang even earlier at the 'access' call
	(see below).

	Does anybody know a solution? How can I manage to move the stack
	into another segment than the default data segment?

	Thanks in advance for any help

					Dirk

/* -------------------------------------------------------------------- */
/*			H A U P T P R O G R A M M 			*/
/* -------------------------------------------------------------------- */

void main( argc, argv)
int	  argc;
char	**argv;
{
int	  rc=RC_SUCCESS;
long	  cur_time;

  own_pname = BENUTZERDIALOG;

  /*  Feststellen, ob Parameter uebergeben und entsprechend schalten	*/
  parse(argc, argv);
  .
  .
  .

/************************************************************************/
/*   Modulname:    		parse_arg				*/
/************************************************************************/
int parse(int argc ,char **argv )
{
 int rtn = RC_SUCCESS;

	if( argc < 2 )
	{
	rtn = RC_FAIL;
	strcpy(aktuelle_daten.defdatei,DEFDATEI);
	return( rtn );
	}
        else 
	{
	 if(  strlen( argv[1] ) > SIZE_NAME )
	  {
	  .. stuff deleted ..
	  }
	  else
	  {
	  if(!access(argv[1],0) == 0)   <<<<<<<<<<<------ '-Zi -Od -Ml -M2 -Mt1'
	   {
	   .. stuff deleted ..
	   }
	   else
	   {
	   if(def_dat_kennung(argv[1]) == RC_SUCCESS )
	    {
	    .
	    .

/************************************************************************/
/*   Funktionsname:		def_dat_kennung				*/
/************************************************************************/
int def_dat_kennung( char *dateiname)
{
 int rtn= RC_SUCCESS;
 FILE *file;
 char *buffer;

    buffer=(char *)malloc(100); <<<<<<<<<<------- '-Zi -Od -Ml2 -Au -ND GLOBDAT'
    if(( file=fopen( dateiname,"r")) != NULL)
     {
     .
     .

-- 

  Dirk Otterbach 		|	PEM Tillmann Basien    
  do@pemstgt.PEM-Stuttgart.de	|	Programmentwicklung fuer Microcomputer
  FAX   +49-711-713047		|	Vaihinger Str.49, PostBox 810165
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads