[comp.lang.modula3] Bug fixes for IBM RISC/6000

orgass+@rchland.ibm.com (Dick Orgass) (04/27/91)

Shared Libraries

There is a small annoying problem caused by an incorrect detail in the
creation of the .ma files for shared libraries and AIX 3.1.  The rule
for creating .ma at line 63 of util/m3all.tmpl and at line 58 of
util/m3fromC.tmpl should be as follows:

libm3$(LIB).ma: libm3$(LIB).a  $(OBJS)
    @@\
	ar ru libm3tmp.a $(OBJS)                                            @@\
	$(M3AR) libm3tmp.a                                                  @@\
	mv libm3tmp.ma libm3$(LIB).ma                                       @@\
	rm libm3tmp.a                                                       @@\
	-rm .ROOT/libs/libm3$(LIB).ma                                       @@\
	ln -s `pwd`/libm3$(LIB).ma .ROOT/libs

In the distributed version of this rule, the .ma file is created
directly from the .a file.  However, the result is incorrect because the
.ma file indicates that all of the initilization procedures for a
library are in a single module.  As a result, when an initialization
program is written all of these initilization procs are called even if
there is no client of the module in the application!  The above rule
avoids this problem.  I think there is a more efficient solution but
this will solve immediate problems.

Udir.i3

There are a few small errors in libs/aix-3-1/os/Udir.i3 which can be
corrected as follows.

Modify line 7 so that is reads:

    IMPORT Utypes;

Replace lines 21-22 with the following three lines:

      MAXNAMLEN = 255;     (* Maximum length of component of file path name. *)
      MAXNAMELEN = MAXNAMLEN;
      MAXPATHLEN = 1023;   (* Maximum length of file path name. *)

Modify line 39 so that it reads:

        d_ino: Utypes.ino_t;


Dick