带有二进制编译的 systembinlinker中的Segfault for Android

带有二进制编译的 systembinlinker中的Segfault for Android,第1张

概述我正在尝试为 Android构建 Kona并且遇到了一些问题.我为Kona制作的补丁可用于 here. 首先,我试图避免使用ndk-build,因此编辑了makefile以支持Android.其中的细节对这个问题(或有趣)并不特别有用,所以我会跳过它们. 基本上,源文件的编译方式如下: arm-linux-androideabi-clang -g -fpic -ffunction-sections 我正在尝试为 Android构建 Kona并且遇到了一些问题.我为Kona制作的补丁可用于 here.

首先,我试图避免使用ndk-build,因此编辑了makefile以支持AndroID.其中的细节对这个问题(或有趣)并不特别有用,所以我会跳过它们.

基本上,源文件的编译方式如下:

arm-linux-androIDeabi-clang -g -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -mtune=xscale -msoft-float -mthumb -fomit-frame-pointer -fno-strict-aliasing -O3    -c -o src/ks.o src/ks.c...arm-linux-androIDeabi-clang -g -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -mtune=xscale -msoft-float -mthumb -fomit-frame-pointer -fno-strict-aliasing -O3  src/0.o src/c.o src/getline.o src/getline_androID.o src/mt.o src/p.o src/r.o src/k.o src/kc.o src/kx.o src/kg.o src/km.o src/kn.o src/ko.o src/ks.o src/v.o src/va.o src/vc.o src/vd.o src/vf.o src/vg.o src/vq.o src/main.o -o k -Wl,--gc-sections -Wl,-z,nocopyreloc -lgcc -no-canonical-prefixes -Wl,--no-undefined -Wl,noexecstack -Wl,relro -Wl,Now -mthumb -lc -lm -ldl

我根据我看到的ndk-build使用了这些标志.然后我运行了以下内容:

ryan@DevPC-LX:~/stuff/kdroID$adb remountremount succeededryan@DevPC-LX:~/stuff/kdroID$adb push ./k /system/bin/k3201 KB/s (724928 bytes in 0.221s)ryan@DevPC-LX:~/stuff/kdroID$

现在,尝试运行二进制文件只是段错误:

ryan@DevPC-LX:~/stuff/kdroID$adb shell# k[1] + Stopped (signal)        k# [1]   Segmentation fault      k#

这是开始变得奇怪的地方.如果我尝试使用gdb,我得到这个:

ryan@DevPC-LX:~/stuff/kdroID$adb shell# gdbserver :5039 /system/bin/kProcess /system/bin/k created; pID = 297Listening on port 5039

在另一个shell窗口中:

ryan@DevPC-LX:~/stuff/kdroID$arm-linux-androIDeabi-gdbGNU gdb (GDB) 7.6copyright (C) 2013 Free Software Foundation,Inc.license GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.HTML>This is free software: you are free to change and redistribute it.There is NO WARRANTY,to the extent permitted by law.  Type "show copying"and "show warranty" for details.This GDB was configured as "--host=x86_64-linux-gnu --target=arm-linux-androID".For BUG reporting instructions,please see:<http://source.androID.com/source/report-BUGs.HTML>./home/ryan/.gdbinit:1: Error in sourced command file:No symbol table is loaded.  Use the "file" command.(gdb) symbol-file kReading symbols from /media/ryan/stuff/kdroID/k...done.(gdb) target remote :5039Remote deBUGging using :50390xb0001000 in ?? ()(gdb) continueContinuing.Cannot access memory at address 0x0Program received signal SIGSEGV,Segmentation fault.0xb0004d36 in ?? ()(gdb) bt#0  0xb0004d36 in ?? ()#1  0xb0005278 in ?? ()#2  0xb0005278 in ?? ()Backtrace stopped: prevIoUs frame IDentical to this frame (corrupt stack?)(gdb)

ndk-stack给了我这个:

********** Crash dump: **********Build fingerprint: 'generic/sdk/generic:2.3.3/GRI34/101070:eng/test-keys'pID: 297,tID: 297  >>> /system/bin/k <<<signal 11 (SIGSEGV),code 1 (SEGV_MAPERR),fault addr 0003cabcStack frame #00  pc b0004d36  /system/bin/linker: Unable to open symbol file k/linker. Error (20): Not a directory

所以…链接器似乎崩溃了.如果我将/ system / bin / linker拉入当前目录,那么我得到:

********** Crash dump: **********Build fingerprint: 'generic/sdk/generic:2.3.3/GRI34/101070:eng/test-keys'pID: 291,tID: 291  >>> k <<<signal 11 (SIGSEGV),fault addr 0003cabcStack frame #00  pc b0004d36  /system/bin/linker: Routine BFD:  ./linker: warning: sh_link not set for section `.ARM.exIDx'????:0Crash dump is completed

这一切都非常令人困惑.

我完全不知道此时的错误是什么.我的意思是,我觉得我的编译器命令有问题,但我不知道是什么.

编辑:我的编译器命令肯定有问题.如果我构建这个程序:

int main() { return 0; }

使用ndk-build和我之前发布的命令行标志,版本没有ndk-build段错误.

解决方法 弄清楚了!是Clang!出于某种原因,它导致了段错误.我仍然不知道为什么……但问题仍然基本解决了. 总结

以上是内存溢出为你收集整理的带有二进制编译的/ system / bin / linker中的Segfault for Android全部内容,希望文章能够帮你解决带有二进制编译的/ system / bin / linker中的Segfault for Android所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125448.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存