Patchwork [committed] Avoid string.h includes in -fno-builtin-memset testcases (PR testsuite/56053)

login
register
mail settings
Submitter Jakub Jelinek
Date Jan. 28, 2013, 2:30 p.m.
Message ID <20130128143036.GI4385@tucnak.redhat.com>
Download mbox | patch
Permalink /patch/216223/
State New
Headers show

Comments

Jakub Jelinek - Jan. 28, 2013, 2:30 p.m.
Hi!

Some targets apparently force fortification unconditionally or at least by
default, when string.h is then included, memset etc. inlines might call
__builtin_memset or __builtin___memset_chk directly and for explicit builtin
uses -fno-builtin* doesn't work.  Fixed by avoiding those includes and
instead adding needed prototypes by hand, tested on x86_64-linux, committed
as obvious to trunk.

2013-01-28  Jakub Jelinek  <jakub@redhat.com>

	PR testsuite/56053
	* c-c++-common/asan/heap-overflow-1.c: Don't include stdlib.h and
	string.h.  Provide memset, malloc and free prototypes, adjust line
	numbers in dg-output.
	* c-c++-common/asan/stack-overflow-1.c: Don't include string.h.
	Provide memset prototype and adjust line numbers in dg-output.
	* c-c++-common/asan/global-overflow-1.c: Likewise.


	Jakub

Patch

--- gcc/testsuite/c-c++-common/asan/heap-overflow-1.c.jj	2012-12-13 00:02:50.000000000 +0100
+++ gcc/testsuite/c-c++-common/asan/heap-overflow-1.c	2013-01-28 13:47:58.682416114 +0100
@@ -2,8 +2,18 @@ 
 /* { dg-options "-fno-builtin-malloc -fno-builtin-free -fno-builtin-memset" } */
 /* { dg-shouldfail "asan" } */
 
-#include <stdlib.h>
-#include <string.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void *memset (void *, int, __SIZE_TYPE__);
+void *malloc (__SIZE_TYPE__);
+void free (void *);
+
+#ifdef __cplusplus
+}
+#endif
+
 volatile int ten = 10;
 int main(int argc, char **argv) {
   char *x = (char*)malloc(10);
@@ -14,8 +24,8 @@  int main(int argc, char **argv) {
 }
 
 /* { dg-output "READ of size 1 at 0x\[0-9a-f\]+ thread T0.*(\n|\r\n|\r)" } */
-/* { dg-output "    #0 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*heap-overflow-1.c:11|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */
+/* { dg-output "    #0 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*heap-overflow-1.c:21|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */
 /* { dg-output "0x\[0-9a-f\]+ is located 0 bytes to the right of 10-byte region\[^\n\r]*(\n|\r\n|\r)" } */
 /* { dg-output "allocated by thread T0 here:\[^\n\r]*(\n|\r\n|\r)" } */
 /* { dg-output "    #0 0x\[0-9a-f\]+ (in _*(interceptor_|)malloc|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
-/* { dg-output "    #1 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*heap-overflow-1.c:9|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output "    #1 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*heap-overflow-1.c:19|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
--- gcc/testsuite/c-c++-common/asan/stack-overflow-1.c.jj	2012-12-13 00:02:50.000000000 +0100
+++ gcc/testsuite/c-c++-common/asan/stack-overflow-1.c	2013-01-28 13:48:41.046171347 +0100
@@ -2,9 +2,13 @@ 
 /* { dg-options "-fno-builtin-memset" } */
 /* { dg-shouldfail "asan" } */
 
-volatile int ten = 10;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+void *memset (void *, int, __SIZE_TYPE__);
 
-#include <string.h>
+volatile int ten = 10;
 
 int main() {
   char x[10];
@@ -14,5 +18,5 @@  int main() {
 }
 
 /* { dg-output "READ of size 1 at 0x\[0-9a-f\]+ thread T0\[^\n\r]*(\n|\r\n|\r)" } */
-/* { dg-output "    #0 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*stack-overflow-1.c:12|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */
+/* { dg-output "    #0 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*stack-overflow-1.c:16|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */
 /* { dg-output "Address 0x\[0-9a-f\]+ is\[^\n\r]*frame <main>" } */
--- gcc/testsuite/c-c++-common/asan/global-overflow-1.c.jj	2012-12-13 00:02:50.000000000 +0100
+++ gcc/testsuite/c-c++-common/asan/global-overflow-1.c	2013-01-28 13:46:13.900017787 +0100
@@ -2,7 +2,12 @@ 
 /* { dg-options "-fno-builtin-memset" } */
 /* { dg-shouldfail "asan" } */
 
-#include <string.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+void *memset (void *, int, __SIZE_TYPE__);
+
 volatile int ten = 10;
 
 int main() {
@@ -18,6 +23,6 @@  int main() {
 }
 
 /* { dg-output "READ of size 1 at 0x\[0-9a-f\]+ thread T0.*(\n|\r\n|\r)" } */
-/* { dg-output "    #0 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*global-overflow-1.c:15|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r).*" } */
+/* { dg-output "    #0 0x\[0-9a-f\]+ (in _*main (\[^\n\r]*global-overflow-1.c:20|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r).*" } */
 /* { dg-output "0x\[0-9a-f\]+ is located 0 bytes to the right of global variable" } */
 /* { dg-output ".*YYY\[^\n\r]* of size 10\[^\n\r]*(\n|\r\n|\r)" } */