Xenix Cross Development from 386 to 286
Dirk Otterbach PEM 0711/71 30 45
do at pemstgt.PEM-Stuttgart.de
Tue Nov 27 20:54:01 AEST 1990
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 at pemstgt.PEM-Stuttgart.de | Programmentwicklung fuer Microcomputer
FAX +49-711-713047 | Vaihinger Str.49, PostBox 810165
More information about the Comp.unix.programmer
mailing list