summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-04-25 23:36:24 +0000
committerEric Andersen <andersen@codepoet.org>2001-04-25 23:36:24 +0000
commit70b504a538a28806b350b2f30df5263a55ade5cd (patch)
tree4c0576c52fea896eba46b5f19f79c6f3c78b7f4d
parenta39e7a9e5e661e49f29789c30f4ce2ca8a007499 (diff)
Be really sneaky and use GNU ld special stuff so that whenever folks
use the unsafe gets, they will get a warning from the linker. muahahaha. This method will soon be applied to fork() w/o an mmu etc... -Erik
-rw-r--r--include/features.h11
-rw-r--r--libc/stdio/stdio.c1
2 files changed, 12 insertions, 0 deletions
diff --git a/include/features.h b/include/features.h
index 475d62a85..880cd36ef 100644
--- a/include/features.h
+++ b/include/features.h
@@ -90,5 +90,16 @@
#include <bits/uClibc_config.h>
#undef __need_uClibc_config_h
+
+#if 1 /* This only works with GNU ld, but that is what we use 'round these parts */
+#define link_warning(symbol, msg) \
+asm (".section " ".gnu.warning." #symbol "\n\t.previous"); \
+static const char __evoke_link_warning_##symbol[] \
+__attribute__ ((section (".gnu.warning." #symbol "\n\t#"))) = msg;
+#else
+# define link_warning(symbol, msg)
+#endif
+
+
#endif
diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c
index 954318d39..a7dd8a3ba 100644
--- a/libc/stdio/stdio.c
+++ b/libc/stdio/stdio.c
@@ -314,6 +314,7 @@ char *fgets(char *s, int count, FILE *fp)
#endif
#ifdef L_gets
+link_warning (gets, "the `gets' function is dangerous and should not be used.")
char *gets(char *str) /* This is an UNSAFE function! */
{
/*