( We are at third stage )

I made some tests changing AR_RULE for os2gcc-a.out
Tested with gcc335-a.out

Background:
config\os2\gcc.mk are using for a.out:
----------------------
   # We have to use a script to overcome the AR limit of max 850 characters
   # in commmand line
   define create_library
   [...]
AR_RULE = $(create_library) $(ARSTRIP) & $(RM) __lib__.tmp
----------------------


Based in win, linux, I changed AR_RULE to use:
AR_RULE = ( $(AR) $(ARFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@)

Everything goes fine ( 9 *.a files, 2 *.exe files created ) until we get a beautiful error:
--------------------
SYS0008: There is not enough memory available to process this command.
All available memory is in use.
make[3]: *** [hbrtl.a] Segmentation fault
make[2]: *** [descend] Error 2
make[1]: *** [rtl] Error 2
make: *** [source] Error 2
--------------------

trying to execute this long line:
----------------------
( ar   rcs ../../../../../lib/os2/gcc/hbrtl.a abs.o accept.o ampm.o
[...]
typefilx.o valtoexp.o wait.o  ) || ..\..\..\..\..\config\os2rm -f
..\..\..\..\..\lib\os2\gcc\hbrtl.a
----------------------

Line have around 2,463 bytes

HELP show:
----------------------
SYS0008: There is not enough memory available to process this command.
All available memory is in use.

EXPLANATION: If segment swapping is active, the swap file may be full
or an input/output (I/O) error may have occurred on the auxiliary
storage device that contains the swap file.

ACTION: Do one of the following and then retry the command:
o  Reduce the number of running programs.
o  Reduce the value of the BUFFERS=, TRACEBUF=, DISKCACHE=, THREADS=,
   RMSIZE=, or DEVICE=VDISK.SYS statement in the CONFIG.SYS file and
   then restart the system.
o  Remove unwanted files from the swap file disk and restart the system.
o  Install additional memory on your system.
o  Check the swap file disk for an I/O error.
----------------------

Computer have 2 Gb RAM

Based on message and explanations, this is not a problem of limit of characters in command line, but a problem of AR.exe execution with a lot of work to do, around 251 *.o files

Fourth overflow I have seen in last months due long list of object files

We do not need to fix this case which is managed with auxiliary __lib__.tmp file, I am just reporting what is happening

David Macias


_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to