about summary refs log tree commit diff
path: root/debug
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-06-27 09:15:54 +0000
committerJakub Jelinek <jakub@redhat.com>2005-06-27 09:15:54 +0000
commit5570fbd25a574d54ab135e1d3cdac0bc74029689 (patch)
tree6af711ed17dd644491e68d1a85c22e51bac87179 /debug
parente4edec582dc1fb924a2cfbfb07409fd7b3c84a26 (diff)
downloadglibc-5570fbd25a574d54ab135e1d3cdac0bc74029689.tar.gz
glibc-5570fbd25a574d54ab135e1d3cdac0bc74029689.tar.xz
glibc-5570fbd25a574d54ab135e1d3cdac0bc74029689.zip
Updated to fedora-glibc-20050627T0850
Diffstat (limited to 'debug')
-rw-r--r--debug/Makefile4
-rw-r--r--debug/Versions3
-rw-r--r--debug/stack_chk_fail.c33
-rw-r--r--debug/stack_chk_fail_local.c30
4 files changed, 68 insertions, 2 deletions
diff --git a/debug/Makefile b/debug/Makefile
index 42e64ad16f..6ec08dc94a 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -31,9 +31,9 @@ routines  = backtrace backtracesyms backtracesymsfd noophooks \
 	    printf_chk fprintf_chk vprintf_chk vfprintf_chk \
 	    gets_chk chk_fail readonly-area fgets_chk fgets_u_chk \
 	    read_chk pread_chk pread64_chk recv_chk recvfrom_chk \
-	    readlink_chk getwd_chk getcwd_chk \
+	    readlink_chk getwd_chk getcwd_chk stack_chk_fail \
 	    $(static-only-routines)
-static-only-routines := warning-nop
+static-only-routines := warning-nop stack_chk_fail_local
 
 CFLAGS-backtrace.c = -fno-omit-frame-pointer
 CFLAGS-sprintf_chk.c = -D_IO_MTSAFE_IO
diff --git a/debug/Versions b/debug/Versions
index 07d6fbb830..7cbb02c31e 100644
--- a/debug/Versions
+++ b/debug/Versions
@@ -18,4 +18,7 @@ libc {
     __printf_chk; __fprintf_chk; __vprintf_chk; __vfprintf_chk;
     __gets_chk;
   }
+  GLIBC_2.4 {
+    __stack_chk_fail;
+  }
 }
diff --git a/debug/stack_chk_fail.c b/debug/stack_chk_fail.c
new file mode 100644
index 0000000000..298b323671
--- /dev/null
+++ b/debug/stack_chk_fail.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+extern char **__libc_argv attribute_hidden;
+
+void
+__attribute__ ((noreturn))
+__stack_chk_fail (void)
+{
+  /* The loop is added only to keep gcc happy.  */
+  while (1)
+    __libc_message (1, "*** stack smashing detected ***: %s terminated\n",
+		    __libc_argv[0] ?: "<unknown>");
+}
diff --git a/debug/stack_chk_fail_local.c b/debug/stack_chk_fail_local.c
new file mode 100644
index 0000000000..de0de8f397
--- /dev/null
+++ b/debug/stack_chk_fail_local.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sys/cdefs.h>
+
+extern void __stack_chk_fail (void) __attribute__ ((noreturn));
+
+/* On some architectures, this helps needless PIC pointer setup
+   that would be needed just for the __stack_chk_fail call.  */
+
+void __attribute__ ((noreturn)) attribute_hidden
+__stack_chk_fail_local (void)
+{
+  __stack_chk_fail ();
+}