bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bugs in gmake 3.79.1 on VAX/VMS 7.1


From: John Fowler
Subject: Bugs in gmake 3.79.1 on VAX/VMS 7.1
Date: Mon, 11 Dec 2000 14:00:01 -0700 (MST)

I found what I think are some bugs in GNU Make 3.79.1 under VAX/VMS 7.1.  I
have already fixed them on my end, but I thought I'd let you know what I did,
in case someone else asks, or if you want to incorporate them in a future
version.

I suggest you run these changes by one of your VMS experts, rather than
just take my word for it, as I can't test for the Alpha platform.

First some small problems.  In order to get Make to compile at all, I had
to make the following changes:

In FUNCTION.C Line 131: "int len" should be "unsigned int len".
In VARIABLE.C Lines 204-205: I could not find any variable "listp", so I
                             just commented these two lines out.
In CONFIG.H-VMS Line 16: I commented this line out because my system does not
                         provide its own alloca().  I also uncommented line 13,
                         though I'm not sure why, because nothing seems to use
                         the C_ALLOCA macro anyway.

OK, now for the real reason I'm writing this.  I found that for some reason,
when I used an object library to store the .OBJ files, Make was not reading
the time stamps in the library correctly.  I am in Central Standard Time,
and it seemed like the time stamp returned by decc$fix_time on line 82
of ARSCAN.C was offset by the difference between CST and UTC.  So I changed
this line to:

  val = decc$fix_time (&mhd->mhd$l_datim) + timezone;

After that, it worked correctly.  I haven't tested this in daylight savings
time yet, but I guess I'll find out next Spring.

Also in ARSCAN.C, by the way, on lines 69, 153, and 164 is the if statement:

      if (! status)

This is incorrect.  VMS system calls use bit 0 of their return values to
flag errors.  So odd-numbered return values indicate no error, and
even-numbered return values indicate something went wrong.  These lines
should be:

      if (! (status & 1))

I hope this is helpful.  Thanks very much!

John Fowler, address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]