Skip to content

Commit 727ed11

Browse files
committed
[AVR] Recognize the AVR architecture in lldb
This commit adds AVR support to lldb. With this change, it can load a binary and do basic things like dump a line table. Not much else has been implemented, that should be done in later changes. Differential Revision: https://reviews.llvm.org/D73539
1 parent 86aae78 commit 727ed11

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

lldb/include/lldb/Utility/ArchSpec.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ class ArchSpec {
188188

189189
eCore_arc, // little endian ARC
190190

191+
eCore_avr,
192+
191193
eCore_wasm32,
192194

193195
kNumCores,

lldb/source/Utility/ArchSpec.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ static const CoreDefinition g_core_definitions[] = {
218218
ArchSpec::eCore_uknownMach64, "unknown-mach-64"},
219219
{eByteOrderLittle, 4, 2, 4, llvm::Triple::arc, ArchSpec::eCore_arc, "arc"},
220220

221+
{eByteOrderLittle, 2, 2, 4, llvm::Triple::avr, ArchSpec::eCore_avr, "avr"},
222+
221223
{eByteOrderLittle, 4, 1, 4, llvm::Triple::wasm32, ArchSpec::eCore_wasm32,
222224
"wasm32"},
223225
};
@@ -448,6 +450,8 @@ static const ArchDefinitionEntry g_elf_arch_entries[] = {
448450
LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}, // HEXAGON
449451
{ArchSpec::eCore_arc, llvm::ELF::EM_ARC_COMPACT2, LLDB_INVALID_CPUTYPE,
450452
0xFFFFFFFFu, 0xFFFFFFFFu}, // ARC
453+
{ArchSpec::eCore_avr, llvm::ELF::EM_AVR, LLDB_INVALID_CPUTYPE,
454+
0xFFFFFFFFu, 0xFFFFFFFFu}, // AVR
451455
};
452456

453457
static const ArchDefinition g_elf_arch_def = {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# RUN: yaml2obj %s > %t
2+
# RUN: lldb-test object-file %t | FileCheck %s
3+
# CHECK: Plugin name: elf
4+
# CHECK: Architecture: avr--
5+
# CHECK: Executable: true
6+
# CHECK: Stripped: false
7+
# CHECK: Type: executable
8+
# CHECK: Strata: user
9+
# CHECK: Name: .text
10+
# CHECK-NEXT: Type: code
11+
# CHECK-NEXT: Permissions: r-x
12+
# CHECK-NEXT: Thread specific: no
13+
# CHECK-NEXT: VM address: 0x0
14+
# CHECK-NEXT: VM size: 4
15+
# CHECK-NEXT: File size: 4
16+
17+
--- !ELF
18+
FileHeader:
19+
Class: ELFCLASS32
20+
Data: ELFDATA2LSB
21+
Type: ET_EXEC
22+
Machine: EM_AVR
23+
Flags: [ EF_AVR_ARCH_AVR1, EF_AVR_ARCH_AVR4 ]
24+
Sections:
25+
- Name: .text
26+
Type: SHT_PROGBITS
27+
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
28+
AddressAlign: 0x0000000000000001
29+
Content: '0000FECF'
30+
...

0 commit comments

Comments
 (0)