This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Patch to remove putenv definition from gcc.c [take-2]
- To: gcc-patches at gcc dot gnu dot org
- Subject: Patch to remove putenv definition from gcc.c [take-2]
- From: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Date: Thu, 29 Mar 2001 08:20:54 -0500 (EST)
- Cc: dave at hiauly1 dot hia dot nrc dot ca
Here's take-2 of getting rid of putenv in gcc.c. The change over the
previous patch is the code in vax/xm-vms.h, which addresses concerns
raised for VMS.
Bootstrapped on solaris2.7, Ok to install?
--Kaveh
2001-03-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in: Don't check for putenv.
* configure: Regenerate.
* gcc.c (putenv): Don't define.
* vax/xm-vms.h: Handle putenv.
diff -rup orig/egcs-CVS20010328/gcc/configure.in egcs-CVS20010328/gcc/configure.in
--- orig/egcs-CVS20010328/gcc/configure.in Wed Mar 28 07:41:28 2001
+++ egcs-CVS20010328/gcc/configure.in Wed Mar 28 22:01:52 2001
@@ -544,7 +544,7 @@ fi
dnl Disabled until we have a complete test for buggy enum bitfields.
dnl gcc_AC_C_ENUM_BF_UNSIGNED
-AC_CHECK_FUNCS(strtoul bsearch putenv popen \
+AC_CHECK_FUNCS(strtoul bsearch popen \
strchr strrchr kill getrlimit setrlimit atoll atoq \
sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \
fputs_unlocked getrusage iconv nl_langinfo)
diff -rup orig/egcs-CVS20010328/gcc/gcc.c egcs-CVS20010328/gcc/gcc.c
--- orig/egcs-CVS20010328/gcc/gcc.c Tue Mar 20 07:42:26 2001
+++ egcs-CVS20010328/gcc/gcc.c Wed Mar 28 21:59:50 2001
@@ -2009,60 +2009,6 @@ clear_failure_queue ()
failure_delete_queue = 0;
}
-/* Routine to add variables to the environment. We do this to pass
- the pathname of the gcc driver, and the directories search to the
- collect2 program, which is being run as ld. This way, we can be
- sure of executing the right compiler when collect2 wants to build
- constructors and destructors. Since the environment variables we
- use come from an obstack, we don't have to worry about allocating
- space for them. */
-
-#ifndef HAVE_PUTENV
-
-void
-putenv (str)
- char *str;
-{
-#ifndef VMS /* nor about VMS */
-
- extern char **environ;
- char **old_environ = environ;
- char **envp;
- int num_envs = 0;
- int name_len = 1;
- int str_len = strlen (str);
- char *p = str;
- int ch;
-
- while ((ch = *p++) != '\0' && ch != '=')
- name_len++;
-
- if (!ch)
- abort ();
-
- /* Search for replacing an existing environment variable, and
- count the number of total environment variables. */
- for (envp = old_environ; *envp; envp++)
- {
- num_envs++;
- if (!strncmp (str, *envp, name_len))
- {
- *envp = str;
- return;
- }
- }
-
- /* Add a new environment variable */
- environ = (char **) xmalloc (sizeof (char *) * (num_envs + 2));
- *environ = str;
- memcpy ((char *) (environ + 1), (char *) old_environ,
- sizeof (char *) * (num_envs + 1));
-
-#endif /* VMS */
-}
-
-#endif /* HAVE_PUTENV */
-
/* Build a list of search directories from PATHS.
PREFIX is a string to prepend to the list.
If CHECK_DIR_P is non-zero we ensure the directory exists.
diff -rup orig/egcs-CVS20010328/gcc/config/vax/xm-vms.h egcs-CVS20010328/gcc/config/vax/xm-vms.h
--- orig/egcs-CVS20010328/gcc/config/vax/xm-vms.h Thu Mar 15 07:43:33 2001
+++ egcs-CVS20010328/gcc/config/vax/xm-vms.h Wed Mar 28 22:04:56 2001
@@ -101,6 +101,14 @@ Boston, MA 02111-1307, USA. */
/* vprintf() has been available since VMS V4.6. */
#define HAVE_VPRINTF
+
+/* Early versions of VAX C for VMS do not have putenv. Comment out
+ the following define if your system doesn't have putenv. */
+#define HAVE_PUTENV
+
+#ifndef HAVE_PUTENV
+#define putenv(x)
+#endif
#if defined(VAXC) || defined(__DECC)