0

我有一个在 IOS6 和 IOS7 上运行的 iPhone&ipad 应用程序,带有 Xcode4.6 和 LLVM GCC 4.2。然而,在我升级到 Apple LLVM 5.0 的 Xcode5 后,我尝试在带有 IOS7.0 的 iPhone5 上运行它,应用程序将在进入主函数之前初始化全局和静态数据时收到 EXC_ARM_DA_ALLIGN 异常。

0x693006: vld1.64 {d8, d9, d10, d11}, [r4, :128]!线程 1 EXC_BAD_ACCESS(code=EXC_ARM_DA_ALIGN, address=0x27dd5824) r4 中的值是 0x27dd5824,这是 32 位对齐,但似乎 vld1.64 需要 64 位对齐,并且 EXC_ARM_DA_ALLIGN 来了。

我的目标部署 IOS 是 6.0,架构标准架构(armv7,armv7s),所以我确信 Xcode 应该为我生成 32 位代码。

为什么我会遇到这个问题,因为我的数据已经是 32 位对齐的。

任何帮助,将不胜感激。

编辑 :

我检查了 gcc 版本的汇编代码,并没有发现 VLD1.64 称为 .

编辑添加崩溃日志:

事件标识符:81A2A2B6-1A4C-450E-88A7-DF7F2F8E7619

CrashReporter 密钥:c66d6f7407948d2a6ba1ecc45d6c9348d11a2ed7

硬件型号:iPhone5,2

进程:XXXXXXXX [224]

路径:/var/mobile/Applications/CBDF28BD-4EFA-46B9-8E94-7BFCE265541B/XXXXXXXXX.app/XXXXXXXX

标识符:com.XXXX.XXXX.XXXX

版本:1.1.7 (1.0)

代码类型:ARM(本机)

父进程:launchd [1]

日期/时间:2013-10-24 17:08:39.263 +0800 操作系统版本:iOS 7.0.2 (11A501) 报告版本:104

异常类型:EXC_BAD_ACCESS (SIGBUS) 异常子类型:EXC_ARM_DA_ALIGN at 0x27d12914 由线程触发:0

线程 0 崩溃:0 myApp 0x00756006 MEMORYxxxDEVICE::MEMORYxxxDEVICE() (xxxx.xxxx.cpp:2146)

1 myApp 0x0073db40全球_I_a (xxxx.xxxx.cpp:3042)

2 dyld 0x2bee459e ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 174

3 dyld 0x2bee46ac ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 16

4 dyld 0x2bee1d34 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 356

5 dyld 0x2bee1b88 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 36

6 dyld 0x2bed8d38 dyld::initializeMainExecutable() + 164

7 dyld 0x2bedbab4 dyld::_main(macho_header const*, unsigned long, int, char const* , char const *, char const* , unsigned long ) + 1748

8 dyld 0x2bed822a dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 346

9 dyld 0x2bed8064 _dyld_start + 60

线程 1:

0 libsystem_kernel.dylib 0x3b9c8838 kevent64 + 24

1 libdispatch.dylib 0x3b9170d0 _dispatch_mgr_invoke + 228

2 libdispatch.dylib 0x3b91163e _dispatch_mgr_thread + 34

线程 0 因 ARM 线程状态(32 位)而崩溃:

r0: 0x27d128f8    r1: 0x00000000      r2: 0x00038600      r3: 0x00002860

r4: 0x27d12914    r5: 0x2befb95c      r6: 0x0073db2d      r7: 0x27d128b0

r8: 0x00000204    r9: 0x00000001     r10: 0x000002b1     r11: 0x2befd754

ip: 0x3d7f70a8    sp: 0x27d128a4      lr: 0x00000000      pc: 0x00756006

cpsr: 0x40000030

4

0 回答 0