Stripping symbols from a kext will insert a command that prevents loading on pre-10.7 systems

Originator:hello
Number:rdar://15528467 Date Originated:21-Nov-2013 01:35 PM
Status:Duplicate Resolved:
Product:Developer Tools Product Version:XCode 5.0.1
Classification:Serious Bug Reproducible:Always
 
Summary:
There was a regression introduced in Xcode 5.0.1's copy of strip that modifies our kext in such a way that it won't load on 10.6.

Steps to Reproduce:
This bug manifests itself if you have the strip symbols option selected in Xcode. Running strip in Terminal is sufficient to reproduce the problem.

>otool -arch i386 -lv transmitdiskfs | grep LC_FUNCTION_STARTS (returns nothing)
>strip -S transmitdiskfs -o transmitdiskfs.stripped
>otool -arch i386 -lv transmitdiskfs.stripped | grep LC_FUNCTION_STARTS (returns cmd LC_FUNCTION_STARTS)

Apparently the LC_FUNCTION_STARTS command is unrecognized on pre-10.7 systems

Expected Results:
The binary is not modified in any detrimental way when it's stripped

Regression:
We've confirmed that version 4.4.3 of Transmit Disk was build with Xcode 5.0 and it loads fine on 10.6. Further, the kext in that app is *unmodified* from the version that is in SVN despite it having been stripped. Starting with version 4.4.4, built with Xcode 5.0.1, the kext binary is different from what's in SVN.

Notes:

When a 10.6 user attempts to load the broken kext the following appears in Console:

11/21/13 10:23:04 AM	com.apple.kextd[10]	Failed to load /Users/panic/Library/Application Support/Transmit/Transmit Disk.app/Contents/Resources/transmitdiskfs.fs/Contents/Resources/com.panic.TransmitDisk.transmitdiskfs.components/transmitdiskfs.kext - (libkern/kext) link error.
11/21/13 10:23:04 AM	kernel	kxld[com.panic.TransmitDisk.transmitdiskfs]: The Mach-O file is malformed: Invalid segment type in MH_OBJECT kext: 38.
11/21/13 10:23:04 AM	kernel	Can't load kext com.panic.TransmitDisk.transmitdiskfs - link failed.
11/21/13 10:23:04 AM	kernel	Failed to load executable for kext com.panic.TransmitDisk.transmitdiskfs.
11/21/13 10:23:04 AM	kernel	Kext com.panic.TransmitDisk.transmitdiskfs failed to load (0xdc008016).
11/21/13 10:23:04 AM	kernel	Failed to load kext com.panic.TransmitDisk.transmitdiskfs (error 0xdc008016).

Comments

Closed as a dupe of rdar://15252891


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!