尚未列出的gdb目标体系结构似乎受支持..?

时间:2019-06-25 14:43:28

标签: arm gdb remote-debugging armv7 cortex-a

我有一个用于目标的工具链,其中包括一个gdb客户端:

GNU gdb(用于ARM嵌入式处理器的GNU工具6-2017-q2-update)7.12.1.20170417-git

(这不是GNU ARM的最新版本,但是我现在必须使用它,所以我们假设没有最新版本。)

其中的远程目标(通过连接到JTAG的gdbserver连接)是Cortex-A7,它是armv7-a架构。

我不明白为什么该工具链中的gdb并未将armv7-a列为我可以使用“设置体系结构”命令进行的一种体系结构,但它似乎可以很好地调试。

我为armv7-a生成了二进制文件,并验证了它们是为该Arch构建的。 然后,我可以从工具链中启动gdb,然后加载并开始调试。

如果我列出了gdb中可用的内容,则会显示以下内容:

设置架构 arm arm_any armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te auto ep9312 iwmmxt iwmmxt2 xscale

任何地方都没有armv7。但是gdb并没有抱怨什么,我可以调试/单步指令代码,并且看到一些v7 /新指令,它们是该体系结构的新功能。

这些帖子有些相关,但没有回答: How does GDB determine ARM architecture

GDB remote debug: can't stop the thread

我的精灵的属性

Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_enum_size: int
  Tag_DIV_use: Allowed in v7-A with integer division extension
  Tag_Virtualization_use: TrustZone and Virtualization Extensions

Gdb构建已配置为:  配置--host = x86_64-linux-gnu --target = arm-none-eabi

我期望的是gdb应该将“ armv7-a”或“ armv7-m”或任何可能是某些“ armv7”列出来,但不是。

然而,似乎可以使用armv7-目标代码-可以反汇编它并了解armv7新指令,例如movt / movw。

那么它是怎么做到的呢?是不是特殊/已修补的gdb(客户端),其中未列出拱门,还是我缺少了什么?

(我已经看到,更高版本的gdb确实允许设置架构armv7-a,但这不是我的gdb,我想了解一下我的工作原理)

0 个答案:

没有答案