It used to be the case that if I built liblinphone with
enable_gpl_third_parties=no, the resulting app that I built in xcode
would contain the PIE flag in the header for ARM. With more recent
versions of linphone, I still build liblinphone with
enable_gpl_third_parties=no, however now when I build an app archive
in xcode, the app has two headers(see below), the ARM header no longer has the
PIE flag, but the ARM64 header does. Is this sufficient? Or does
the app need to have the PIE flag on the ARM header as well? If so, does anyone know what I need to do differently to get the ARM architecture to be PIE since it used to work?
The app has to be PIE in order to work with a third party mobile device management platform, and I'm not sure if missing the flag on one of the headers is going to cause me a problem or not, I was just surprised to find it missing.
This is the newer header:
myapp.app/myapp:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 43 4536 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK
myapp.app/myapp (architecture arm64):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 ARM64 ALL 0x00 EXECUTE 43 5096 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE
This is the older header:
myapp.app/myapp:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 44 4584 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE
Thanks for any help or insight,
Ben Williams