Compiling Microfocus RTS on SCO Unix 
Author Message
 Compiling Microfocus RTS on SCO Unix

Recently, we installed the latest version of Microfocus COBOL on our SCO
Unix machine.  We normally create a customized runtime file (RTS) by
linking the Microfocus RTS in with our Oracle database routines and a few
customized routines of our own.  This time, whenever I try to execute the
cob -x command to generate the new runtime, I get an error message to the
effect of "ld: Too many relocation records.  Error code 13".  Microfocus
says it's somebody else's problem.  SCO says they don't know exactly what
the message means.  Oracle says they just deliver a make file, and if we
modify it (which we do) then they take no responsibility.  Anybody have a
clue?


Sun, 16 Nov 1997 03:00:00 GMT  
 Compiling Microfocus RTS on SCO Unix


Quote:
> Recently, we installed the latest version of Microfocus COBOL on our SCO
> Unix machine.  We normally create a customized runtime file (RTS) by
> linking the Microfocus RTS in with our Oracle database routines and a few
> customized routines of our own.  This time, whenever I try to execute the
> cob -x command to generate the new runtime, I get an error message to the
> effect of "ld: Too many relocation records.  Error code 13".  Microfocus
> says it's somebody else's problem.

OK, it sounds like you've blown some internal bounds of the system linker.
The only thing I can think of to aleviate this is to partially-link your
customised routines before linking to the RTS/Oracle. Or maybe try doing
something similar with the Oracle archive (??). The Micro Focus archives
contain partially-linked objects already.

example:

a.c ---- 8< ---- Cut Here -----------------------------------------------------
void world(void);
void dummy(void);
int
hello(void)
{
    world();
    dummy();

Quote:
}

a.c ---- 8< ---- Cut Here -----------------------------------------------------

b.c ---- 8< ---- Cut Here -----------------------------------------------------
void
world(void)
{
    return;

Quote:
}

void
dummy(void)
{
    return;
Quote:
}

b.c ---- 8< ---- Cut Here -----------------------------------------------------

$ cc -O -c a.c
$ cc -O -c b.c
$ ld -r a.o b.o -o c.o
$ nm a.o
Symbols from a.o:

Name                  Value   Class        Type         Size   Line  Section

a.c                 |        | file |                  |      |     |
DGROUP              |       0|static|                  |      |     |.data
dummy               |       0|extern|                  |      |     |
hello               |       0|extern|                  |      |     |.text
world               |       0|extern|                  |      |     |

$ nm b.o
Symbols from b.o:

Name                  Value   Class        Type         Size   Line  Section

b.c                 |        | file |                  |      |     |
DGROUP              |       0|static|                  |      |     |.data
dummy               |       4|extern|                  |      |     |.text
world               |       0|extern|                  |      |     |.text

$ nm c.o
Symbols from c.o:

Name                  Value   Class        Type         Size   Line  Section

a.c                 |        | file |                  |      |     |
DGROUP              | 4194492|static|                  |      |     |.data
b.c                 |        | file |                  |      |     |
DGROUP              | 4194492|static|                  |      |     |.data
dummy               |     184|extern|                  |      |     |.text
hello               |     168|extern|                  |      |     |.text
world               |     180|extern|                  |      |     |.text

.... from that mess, you should be able to see that c.o has fewer relocation
entries than a.o and b.o added together (the two relocations to "dummy" and
"world" in a.o have been resolved). By using the -r option to ld, the resulting
object (c.o) is suitable for passing into a subsequent link (or cc, or
cob -x).

.... so to recap, instead of:

cc -O -c $(MYSOURCES)
cob -xo myrts $(MYOBJECTS) $(ORACLEOBJS)

.... try :

cc -O -c $(MYSOURCES)
ld -r $(MYOBJECTS) -o all.o
cob -xo myrts all.o $(ORACLEOBJS)

Quote:
> SCO says they don't know exactly what the message means.
> Oracle says they just deliver a make file, and if we
> modify it (which we do) then they take no responsibility.

I'm really suprised SCO couldn't help you here (or at least offer *some*
advice).

Cheers,
Kev.
--


These views are strictly my own.
I doubt very much that anyone else would want them.



Tue, 18 Nov 1997 03:00:00 GMT  
 Compiling Microfocus RTS on SCO Unix
I had something vaguely similar (it was a long time ago) when linking
Ingres. There's an outside chance giving it more memory would do the
trick. Try this:

ulimit -v

Which reports the max virtual memory size. If it says "unlimited", then
ignore the rest of this 'cos is won't help. If it gives a number, try
doubling than and use as 'n' in the following. You also need the root
password.

su               To switch to root.
ulimit -v n      See above for example value of n.
su - you         Where 'you' is your usual login.
ulimit -v        To make sure you now have the larger limit.

Now try the make again. Good luck -- and I hope this helps.

--------------------------------------------------------------------


ICL Medical Portfolio, Kings House, Kings Road, Reading, RG1 3PX, UK



Tue, 18 Nov 1997 03:00:00 GMT  
 
 [ 3 post ] 

 Relevant Pages 

1. microfocus on SCO unix

2. Compile Tcl/Tk8.1 on SCO Unix (SCO_SV 3.2)

3. Info for tk compile on SCO Unix

4. Microfocus, Unix and compiling

5. Microfocus Cobol for Linux - buy or swap with SCO OS5 version

6. Microfocus Cobol for Linux - buy or swap with SCO OS5 version

7. Microfocus Cobol for Linux - buy or swap with SCO OS5 version

8. Microfocus Cobol / SCO / Printer / Broken Pipe

9. Microfocus Cobol 4.1 with SCO 3.2.4.2

10. AWK differences between SCO and other UNIX?

11. Clipper like software for SCO Unix

12. Can I read from server SCO-UNIX ?

 

 
Powered by phpBB® Forum Software