Forgot to cc: the new-httpd.
-Fred
Begin forwarded message:
> From: Wilfredo S�nchez <[EMAIL PROTECTED]>
> Date: Tue Nov 06, 2001 11:45:31 AM US/Pacific
> To: Sander Temme <[EMAIL PROTECTED]>
> Cc: Justin Erenkrantz <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>,
> <[EMAIL PROTECTED]>
> Subject: Re: DSO broken on MacOS X 10.1
>
>
> On Sunday, November 4, 2001, at 10:44 AM, Sander Temme wrote:
>
>> Also, and this is also a question for the Darwin guys, is it necessary
>> that
>> Apache be built with a two-level namespace? I think (but could be
>> wrong)
>> that the Apache code is well protected from a namespace point of view
>> and
>> shouldn't clash with anything else on the system.
>
> Two-level namespace is this linker notion from the classic Mac OS
> world. I'm not a fan. I've talked to the guy who maintained cctools
> (dyld/ld/libtool) and had to implement this. The only upside for us
> BSD types to using it is some nominal protection against libraries you
> use adding new symbols.
>
> Say that you link against a library (say, for example, the C library)
> and you define a symbol foo. If libc later defines a symbol foo,
> because libraries are dynamic, in the flat namespace, you'll try to
> load it, get a multiply defined symbol error, and crap out. With flat
> namespace, you still run. However, attempting to relink the program
> (the ld step) will still generate a hard error. The idea is you still
> get binary compatibility, but not that you can continue to ignore the
> issue.
>
> Anyway, in order for DSOs (bundles, in Darwin parlance) to link with
> tthis support in place, they need to know the symbols in the loading
> program, so you have to specify that on the link line with, for
> example, "-bundle_loader /usr/sbin/apache" or some such. The problem
> for Apache (2.0) is that GNU libtool doesn't have a good mechanism to
> provide such a flag and it means the bundles have to be built after the
> loading program, which is not how making Unix things compile.
>
> The conclusion I am drawing is that GNU libtool should add
> -flat_namespace to the link line by default and that we should
> generally stick to flat namespace.
>
> -Fred
>