On Wed, May 08 2019, Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote: > On Mon, May 06 2019, Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote: > > [...] > >> One serious issue, straight from the 80's, is the lack of feature >> detection for lots of stuff, leading to ugly #ifdefs. For example, >> using gcc -std=gnu89, the only warning you get is: >> >> timing.c:103: warning: passing argument 1 of 'time' from incompatible >> pointer type >> >> The code passes a "long" instead of a "time_t" to time(3). If you look >> at timing.c you see that time(3) is used as a fallback when neither >> clock(3), times(2) or getrusage(2) are available. But to unveil the >> better code, you need to add the appropriate -DHAVE_CLOCK to CPPFLAGS; >> see base/config.h for more fun. It's a shame for a project using >> autoconf-2.69. > > Here's a minimal diff to work around the time_t issue - a potential > stack overflow on 32 bits archs - by using what should be a better code > path. time(3) counts real seconds, not consumed cpu time. > > Note that the time_t issue is still a bug on all 32 bits archs using > a 64 bits time_t. To fix it, the type of variables "st" and "now" > in base/timing.c should be changed from "long" to "time_t". > > ok?
Err, newer patch with a comment explaining the rationale. ok? PS: there are other functions that should be used instead of using fallback code but I don't want to go down that hole now. It seems like defining stuff like HAVE_GETOPT would change runtime behavior in an incompatible way. Index: Makefile =================================================================== RCS file: /cvs/ports/cad/netgen/Makefile,v retrieving revision 1.3 diff -u -p -r1.3 Makefile --- Makefile 8 May 2019 13:11:43 -0000 1.3 +++ Makefile 8 May 2019 14:27:50 -0000 @@ -3,7 +3,7 @@ COMMENT = tool for netlist comparison (LVS) and format manipulation DISTNAME = netgen-1.5.118 EXTRACT_SUFX = .tgz -REVISION = 1 +REVISION = 2 CATEGORIES = cad Index: patches/patch-base_config_h =================================================================== RCS file: patches/patch-base_config_h diff -N patches/patch-base_config_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-base_config_h 8 May 2019 14:27:50 -0000 @@ -0,0 +1,16 @@ +$OpenBSD$ + +Use clock(3) instead of time(3) to compute elapsed cpu time. + +Index: base/config.h +--- base/config.h.orig ++++ base/config.h +@@ -39,7 +39,7 @@ + /* #define HAVE_GETRUSAGE */ + + /* define the following if your system has ANSI C: clock and CLOCKS_PER_SEC */ +-/* #define HAVE_CLOCK */ ++#define HAVE_CLOCK + + /* define the following if your (nominally BSD) system provides the SYSV + string functions: strchr, strrchr, memcpy, and memset */ -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE