diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | stdlib/Makefile | 23 | ||||
-rw-r--r-- | stdlib/tst-putenv.c | 18 | ||||
-rw-r--r-- | stdlib/tst-putenvmod.c | 17 |
4 files changed, 56 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 8b94978ae1..f37770cf8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ * sysdeps/generic/libc-start.c [SHARED] (__libc_start_main): Don't initialize __environ again. + * stdlib/Makefile: Add rules to build and run tst-putenv. + * stdlib/tst-putenv.c: New file. + * stdlib/tst-putenvmod.c: New file. * sysdeps/unix/sysv/linux/init-first.c: Clean file up. Don't define unnecessary wrappers or aliases of static functions. diff --git a/stdlib/Makefile b/stdlib/Makefile index 5f4675033e..b766fb8656 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2002, 2003, 2004 Free Software Foundation, Inc. +# Copyright (C) 1991-2002, 2003, 2004, 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 @@ -65,6 +65,11 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ tst-rand48 bug-strtod tst-setcontext test-a64l tst-qsort \ tst-system testmb2 +include ../Makeconfig + +ifeq ($(build-shared),yes) +tests += tst-putenv +endif # Several mpn functions from GNU MP are used by the strtod function. mpn-routines := inlines add_n addmul_1 cmp divmod_1 divrem udiv_qrnnd \ @@ -75,9 +80,13 @@ routines := $(strip $(routines) $(mpn-routines)) \ dbl2mpn ldbl2mpn \ mpn2flt mpn2dbl mpn2ldbl aux += fpioconst mp_clz_tab -distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h +distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h \ + tst-putenvmod.c + +tests-extras += tst-putenvmod +extra-objs += tst-putenvmod.os -generated += isomac isomac.out +generated += isomac isomac.out tst-putenvmod.so CFLAGS-bsearch.c = $(uses-callbacks) CFLAGS-msort.c = $(uses-callbacks) @@ -85,8 +94,6 @@ CFLAGS-qsort.c = $(uses-callbacks) CFLAGS-system.c = -fexceptions CFLAGS-fmtmsg.c = -fexceptions -include ../Makeconfig - ifneq (,$(filter %REENTRANT, $(defines))) CFLAGS-strfmon.c = -D_IO_MTSAFE_IO CFLAGS-strfmon_l.c = -D_IO_MTSAFE_IO @@ -124,3 +131,9 @@ $(objpfx)isomac: isomac.c $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)stdlib/ + +$(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so + +$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os + $(build-module) +CFLAGS-tst-putenvmod.c = -DNOT_IN_libc=1 diff --git a/stdlib/tst-putenv.c b/stdlib/tst-putenv.c new file mode 100644 index 0000000000..47513ea42b --- /dev/null +++ b/stdlib/tst-putenv.c @@ -0,0 +1,18 @@ +#include <stdio.h> +#include <stdlib.h> + +static int +do_test (void) +{ + char *p = getenv ("SOMETHING_NOBODY_USES"); + if (p == NULL) + { + puts ("envvar not defined"); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/stdlib/tst-putenvmod.c b/stdlib/tst-putenvmod.c new file mode 100644 index 0000000000..7c0c337d3f --- /dev/null +++ b/stdlib/tst-putenvmod.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +void +__attribute ((constructor)) +init (void) +{ + puts ("init DSO"); + + static char str[] = "SOMETHING_NOBODY_USES=something_else"; + if (putenv (str) != 0) + { + puts ("putenv failed"); + _exit (1); + } +} |