Is _environ present in 7.0-RELEASE ?

Jeremy Chadwick koitsu at FreeBSD.org
Mon Aug 11 14:08:15 UTC 2008


On Mon, Aug 11, 2008 at 06:43:56PM +0530, Ashish Shukla ???????????? ??????????????? wrote:
> Jeremy Chadwick writes:
> > On Mon, Aug 11, 2008 at 05:49:41PM +0530, Ashish Shukla ???????????? ??????????????? wrote:
> >> Jeremy Chadwick writes:
> >> > On Mon, Aug 11, 2008 at 03:38:04PM +0530, Ashish Shukla wrote:
> >> 
> >> [snip]
> >> 
> >> >> The '__environ' symbol is also not defined. Can anyone hint me, what is misconfigured on my box ?
> >> 
> >> > Something tells me this might interest you.  See the most recent commit:
> >> 
> >> > http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/getenv.c
> >> 
> >> Sorry, but I'm not able to figure out, what relevant stuff there is
> >> relevant here. I checked out the diff[1] (with the previous commit) and
> >> the recent commit 1.12.2.2[2], but not able to find anything
> >> relevant. Could you please elaborate, what are you trying to say ?
> 
> > 1) The only variable exported to a process from libc is "environ",
> > not __environ or _environ.  Look at src/lib/libc/stdlib/getenv.c for
> > an example, and confirmation.
> 
> Yes, this is what I'm trying to say. But if you saw my libxine's
> config.log, there is a check in its configure script for presence of
> _environ variable, which is not present in 7.0-RELEASE at least. So,
> I'm wondering, why no one else received this error while building
> libxine port.
> 
> > 2) Your code assigns environ = NULL, which is why I felt the above
> > commit has relevancy to you.  You should be aware that there are many
> > different conditions where clearing environ on FreeBSD behaves
> > differently compared to other OSes; the commit makes it compatible with
> > pretty much everything.
> 
> nop, that is just a simple test case, and my aim of assigning NULL to
> force compiler to generate code referencing 'environ' variable.
> 
> So, should I file a PR for this ?

To have the port fixed?  Absolutely.  It may be more worthwhile to
discuss the issue upstream with the software maintainers, as the fix
could be implemented in the official source (an #ifdef for FreeBSD
should suffice, and then use a local pointer, e.g. char *my_environ).

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |



More information about the freebsd-ports mailing list