Ticket #53 (closed defect: fixed)
Compatibility Issues with SimplifyMedia - Lack of two-level namespaces is suspected
| Reported by: | dmitryd | Owned by: | saurik |
|---|---|---|---|
| Priority: | major | Component: | General |
| Keywords: | Cc: | joeywdy@… |
Description
It appears that some of the Telesphonero distributed libraries have a different binding style than corresponding default libraries from Apple. One specific example of that is that Apple's distributed sqlite library uses two-level namespace (symbols are referenced by both symbol name and library name) while Cydia's one does not.
Here is output of otool for Apple's version:
$ otool -hv libsqlite3.dylib libsqlite3.dylib: Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC 12 6 0x00 DYLIB 11 1300 NOUNDEFS DYLDLINK PREBOUND SPLIT_SEGS TWOLEVEL
And here's telesphonero's:
$ otool -hv libsqlite3.dylib libsqlite3.dylib: Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC 12 0 0x00 DYLIB 8 1176 NOUNDEFS DYLDLINK
Note the differences is flags.
This fact came to light when investigating compatibility issue between Cydia and Simplify Media application on iPhone. In presence of Cydia (or more specifically latest version of Tetesphonero), Simplify Media executable crashes when a user attempts to enter account name or password. Simplify Media does link (statically) its own version of sqlite. That works fine with default set of libraries but not with Telephonero's. In fact, if Telephonero's sqlite library is replaced with the default one, the crash no longer occurs. (I'm Simplify Media developer investigating the issue and can be contacted at dmitryATsimplifymedia.com).
Telephonero's version of the system libraries should be as close as possible to the originals to avoid this type of compatibility issues. Looking through other Telephonero's libraries, sqlite is not the only one with this binding style.
