关于GSMMAP分支cell_log扫描不正常问题的解决办法

时间:2024-01-07 09:53:26

阔别多年,本周在KALI 2.0下重拾旧时趣味,可怎么折腾都未曾见ARFCN,迫不得已还刷了brust_ind分支 才达到目的。后经仔细翻阅官方文档发现此问题早有披露,解决方案也已经公布,逐分享给大家一阅。

note: as of 2013-10-20, if you use a toolchain with gcc >=4.8, the firmware can be compiled, but will hang as soon as you want to sync to an ARFCN. This issue has been fixed in master.

上文如是说如果你的交叉编译器中的gcc版本大于等于4.8,那么固件可以被正常编译,但cell_log扫描ARFCN的功能基本是废的,这个问题已经在master主分支中被修复。那么意味着gsmmap这个4年没动过的分支当然是不行了。

我分析这个问题国内普遍反映是使用了 gnu-arm-build.3.sh 这个编译脚本的时候,而在 gnu-arm-build.2.sh 时内置的还是4.5版本的GCC,所以未曾出现这个问题。

解决方法:

修改以下五个文件
src/target/firmware/board/compal/highram.lds
src/target/firmware/board/compal/ram.lds
src/target/firmware/board/compal_e88/flash.lds
src/target/firmware/board/compal_e88/loader.lds
src/target/firmware/board/mediatek/ram.lds

找到每个文件中的 KEEP(*(SORT(.ctors))) 一行,在其下面加入新的一行 KEEP(*(SORT(.init_array)))

例如:

LONG(SIZEOF(.ctors) /  - )
/* ctor pointers */
KEEP(*(SORT(.ctors)))
KEEP(*(SORT(.init_array)))
/* end of list */
LONG()

执行编译

cd /opt/osmocom-BB/src
make -e CROSS_TOOL_PREFIX=arm-none-eabi-

关于GSMMAP分支cell_log扫描不正常问题的解决办法