Целевая архитектура GDB еще не перечислена, кажется, поддерживается ..? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть набор инструментов для моей цели, который включает в себя клиент GDB:

GNU gdb (Инструменты GNU для встроенных процессоров ARM 6-2017-q2-update) 7.12.1.20170417-git

(Это не последняя версия, доступная в GNU ARM, но я должен использовать ее сейчас, поэтому давайте предположим, что нет последней ..)

Удаленная цель (подключающаяся через сервер gdb, подключенный к JTAG) - это Cortex-A7, представляющий собой архитектуру armv7-a.

Что я не понимаю, почему GDB как есть из этого набора инструментов не перечисляет armv7-a как одну из архитектур, которые я могу с помощью команды "установить архитектуру", но, похоже, он отлаживается просто отлично.

Я создаю двоичные файлы для armv7-a и проверяю, что они созданы для этой арки. Затем я могу запустить GDB из набора инструментов, загрузить и начать отладку.

Если я перечислю доступные внутри GDB, это показывает:

установить архитектуру arm arm_any armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te auto ep9312 iwmmxt iwmmxt2 xscale

Нет armv7 в любом месте. Тем не менее, GDB ни на что не жалуется, я могу отлаживать / выполнять пошаговый код инструкции, и я вижу некоторые v7 / новые инструкции, которые являются новыми для архитектуры.

Эти сообщения несколько связаны, но не отвечают на это: Как GDB определяет архитектуру ARM

Удаленная отладка GDB: невозможно остановить поток

Атрибуты от моего эльфа

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

Что я ожидал, так это то, что "armv7-a" или "armv7-m" или любой другой может быть каким-то "armv7", должен быть указан в gdb как поддерживаемый, но это не так.

Тем не менее, похоже, что он может работать с целевым кодом armv7 - может разобрать его и понять новые инструкции armv7, такие как movt / movw.

Так как это сделать? Это специальный / пропатченный gdb (клиент), который не перечисляет арку, или что мне не хватает?

(я видел, что более поздние версии GDB позволяют устанавливать архитектуру armv7-a, но это не мой GDB, и я хочу понять, как работает моя)

...