我的猜测是您正在 以Thumb模式 在ARM 上运行 ,或者在其他使用功能指针的最低位指示运行模式的体系结构上运行。
如果是这样,答案是您的函数 确实位于system.map中的地址 。
您在运行时获得的值是位置 和模式 。
在这类架构上,指令必须始终对齐2或4字节,这将使最低位始终为零。当体系结构增加了额外的模式时,设计人员利用“浪费”位对模式进行编码。这很聪明,但很困惑,而且不仅仅针对您:初次发明时,许多软件(例如调试器)以许多讨厌的方式损坏。
对于习惯于使用任意随机对齐方式来可变长度指令的x86程序员而言,此概念尤其令人困惑。