簡體   English   中英

為什么arm-linux-androideabi-gcc強制執行-fpic?

[英]Why does arm-linux-androideabi-gcc enforce -fpic?

我很驚訝地發現gcc強制代碼與位置無關,即使命令行中沒有明確提供這樣的標志。

我懷疑它可能與Android動態加載器的某些期望有關(例如對重定位類型的期望以及將代碼放在任何地方的自由)但我不確定。

任何人都能解釋為什么會這樣嗎?

$ arm-linux-androideabi-gcc --version | grep GCC
arm-linux-androideabi-gcc (GCC) 4.4.3

$ arm-linux-androideabi-gcc -v -S main.c |& grep fpic
 /home1/local64/android-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.4.3/cc1 -quiet -v -iprefix /home1/local64/android-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.4.3/ -isysroot /home1/local64/android-toolchain/bin/../sysroot main.c -mbionic -fpic -quiet -dumpbase main.c -march=armv5te -mfloat-abi=soft -mfpu=vfp -auxbase main -version -o main.s

從Android 4.1開始,Google正在強制完整的ASLR克服常見的安全漏洞,請參閱此文章了解更多詳情。

此操作需要位置無關代碼(PIC),但也需要PIE(位置無關可執行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM