Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jun 2003 17:27:04 +0200
From:      Dag-Erling Smorgrav <des@ofug.org>
To:        arch@freebsd.org
Subject:   unbreaking alloca
Message-ID:  <xzp1xxw65o7.fsf@flood.ping.uio.no>

next in thread | raw e-mail | index | archive | help
--=-=-=

David's latest commit to cdefs.h breaks the build by causing lint to
fail for every source file that directly or indirectly includes
<sys/cdefs.h>; it will similarly cause non-GNU compilers to fail on
the same files.  This is entirely unnecessary as the patch was only
meant to add alloca(3) support on compilers that support it.

I'd like to commit the attached patch (after suitable testing of
course).  It removes all mention of alloca(3) from cdefs.h, and
instead modifies the declaration in stdlib.h so that GNU compilers see
alloca(sz) defined to __builtin_alloca(sz) while other compilers (and
linters) see a regular prototype.

I would also like to add (at some future date) a link-time warning for
alloca(3) similar to what we already have for gets(), mktemp() etc.

DES
-- 
Dag-Erling Smorgrav - des@ofug.org


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=alloca.diff

Index: sys/sys/cdefs.h
===================================================================
RCS file: /home/ncvs/src/sys/sys/cdefs.h,v
retrieving revision 1.70
diff -u -r1.70 cdefs.h
--- sys/sys/cdefs.h	14 Jun 2003 06:01:35 -0000	1.70
+++ sys/sys/cdefs.h	14 Jun 2003 15:04:29 -0000
@@ -142,11 +142,6 @@
 #define	__section(x)	__attribute__((__section__(x)))
 #endif
 #endif
-#ifdef __GNUC__
-#define	alloca(sz)	__builtin_alloca(sz)
-#else
-#error FreeBSD alloca support needed for this compiler
-#endif
 
 /* XXX: should use `#if __STDC_VERSION__ < 199901'. */
 #if !(__GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3)
Index: include/stdlib.h
===================================================================
RCS file: /home/ncvs/src/include/stdlib.h,v
retrieving revision 1.48
diff -u -r1.48 stdlib.h
--- include/stdlib.h	12 Mar 2003 20:29:58 -0000	1.48
+++ include/stdlib.h	14 Jun 2003 15:06:02 -0000
@@ -222,7 +222,12 @@
 extern void (*_malloc_message)(const char *, const char *, const char *,
 	    const char *);
 
-void	*alloca(size_t);		/* built-in for gcc */
+#ifdef __GNUC__
+#define alloca(sz)	__builtin_alloca(sz)
+#else
+void	*alloca(size_t);
+#endif
+
 __uint32_t
 	 arc4random(void);
 void	 arc4random_addrandom(unsigned char *dat, int datlen);

--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzp1xxw65o7.fsf>