theos / sdks

Patched sdks that include private framework tbds
Other
585 stars 205 forks source link

Missing "objc-ivars" in most .tbd library of the frameworks. #1

Closed abcSup closed 8 years ago

abcSup commented 8 years ago

Greetings,

I was trying to compile a iphone/preference_bundle_modern using the 9.3 sdk from this repository and ran into this error.

==> Linking bundle sliderchangerprefs (armv7)…
Undefined symbols for architecture armv7:
  "_OBJC_IVAR_$_PSListController._specifiers", referenced from:
      -[SCRootListController specifiers] in SCRootListController.m.20751a0b.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[4]: *** [/Users/Kris/desktop/jailbreak/sliderchanger/.theos/obj/debug/armv7/sliderchangerprefs.bundle/sliderchangerprefs] Error 1
make[3]: *** [/Users/Kris/desktop/jailbreak/sliderchanger/.theos/obj/debug/armv7/sliderchangerprefs.bundle/sliderchangerprefs] Error 2
make[2]: *** [internal-bundle-all_] Error 2
make[1]: *** [sliderchangerprefs.all.bundle.variables] Error 2
make: *** [internal-all] Error 2

Previously, I was using the 9.2 sdk without any errors. After comparing the Preferences.tbd from the Preferences.framework of both the 9.2 and 9.3 sdks, I realized the one from 9.2 sdk comes with a objc-ivars section but not from 9.3 sdk, the same goes to most of the .tbd library. I assumed that is the cause of the errors.

I'm not an expert, but I tried my best to explain what I have found out.

Cheers! :)

mstg commented 8 years ago

Hello! Thanks for reporting! A lot of the processed symbols is removed because of duplicate deletion and arch symbol merging. For the shared cache tbd generator I just add the archs at a later stage so there must be some bug in machotbd.

Looking into this now.

mstg commented 8 years ago

Try pulling the latest commit. Ivars and weak exports should be included now.

abcSup commented 8 years ago

Thanks, great works!

Everything runs smoothly.