[Bug ada/33857] Cannot bootstrap Ada with host gnatmake-4.2
charles dot w dot lambert at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Feb 27 16:33:00 GMT 2008
------- Comment #2 from charles dot w dot lambert at gmail dot com 2008-02-27 16:32 -------
I can confirm this bug against gcc 4.2.3 and gcc 4.3.0 on os x (10.5.2).
Apparently apple has changed the way that putenv is handled. From the `man 3
getenv` page i quote:
"COMPATIBILITY
putenv() no longer copies its input buffer. This often appears in crash
logs as a
crash in getenv(). Avoid passing local buffers or freeing the memory that
is passed
to putenv(). Use setenv(), which still makes an internal copy of its
buffers."
I have examined the source code and found the error to be in the file
<base_path>/gcc/ada/env.c near line 179 in __gnat_setenv() with the following
code:
179: putenv (expression);
180: #if (defined (__FreeBSD__) && (__FreeBSD__ < 7)) \
181: || defined (__APPLE__) || defined (__MINGW32__) \
182: ||(defined (__vxworks) && ! defined (__RTP__))
183: /* On some systems like FreeBSD 6.x and earlier, MacOS X and Windows,
184: putenv is making a copy of the expression string so we can free
185: it after the call to putenv */
186: free (expression);
187:#endif
On current versions of OS X (10.5 on my system). This call to free on line 186
is causing all calls to getenv() after calling __gnat_setenv() to return NULL
This happens when calling gnatmake during the Initialize procedure in make.adb
near line
6645 with the following code:
6645: declare
6646: PATH : constant String :=
6647: Prefix & Directory_Separator & "bin" &
6648: Path_Separator &
6649: Getenv ("PATH").all;
6650: begin
6651: Setenv ("PATH", PATH);
6652: end;
Setenv here is located in <base_path>/gcc/ada/s-os_lib.adb near line 2285
Setenv imports __gnat_setenv
I can confirm that removing the call to free fixes the problem in this bug
report. However i do not know what proper preprocessor flags to use.
--
charles dot w dot lambert at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |charles dot w dot lambert at
| |gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33857
More information about the Gcc-bugs
mailing list