[rtmpdump] [PATCH 1/2] darwin dylibs should used twolevel_namespace and dynamic_lookup

Howard Chu hyc at highlandsun.com
Fri Jul 29 20:29:16 CEST 2011


Thanks for the explanation. Neither of your patches applied cleanly, they 
appear to have been corrupted by a mailer somewhere. I applied the changes 
manually.

Scott D. Davilla wrote:
>> Can you please provide more explanation of what this patch does or
>> why it's needed?
>
>    From 'man ld' on osx
>
> "Two-level namespace
>        By default all references resolved to a dynamic library record
> the library to which they were resolved. At runtime, dyld uses that
> infor-
>        mation to directly resolve symobls.  The alternative is to use
> the -flat_namespace option.  With flat namespace, the library is not
>        recorded.  At runtime, dyld will search each dynamic library in
> load order when resolving symbols. This is slower, but more like how
> other
>        operating systems resolve symbols."
>
> We have found that using flat_namespace also risks symbol collision
> with malformed libs.
>
> The change from 'undefined suppress' to 'undefined dynamic' is
> required when using a twolevel_namespace.
>
> This patch is not 'required' as the lib will fuction just fine as it
> is linked, the change just makes it more proper. Using flat_namespace
> was the old way (ie. 10.4SDK) to create dylibs. twolevel_namespace
> has replaced it and is still 10.4SDK compatible.
>
> Scott


More information about the rtmpdump mailing list