Skip to content

Commit 5863e94

Browse files
committed
[snippy] Propagate mabi to target machine
1 parent 138403e commit 5863e94

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# RUN: llvm-snippy %s -o %t.elf
2+
# RUN: llvm-readelf -h %t.elf | FileCheck %s
3+
4+
options:
5+
march: rv64gc
6+
mtriple: riscv64-linux-gnu
7+
mabi: lp64d
8+
9+
sections:
10+
- name: text
11+
VMA: 0x1000
12+
LMA: 0x1000
13+
SIZE: 0x1000
14+
ACCESS: rx
15+
- name: data
16+
VMA: 0x2000
17+
LMA: 0x2000
18+
SIZE: 0x1000
19+
ACCESS: rw
20+
21+
histogram:
22+
- [ADD, 1]
23+
24+
# CHECK: Machine: RISC-V
25+
# CHECK: Flags: 0x5, RVC, double-float ABI

llvm/tools/llvm-snippy/include/snippy/GeneratorUtils/LLVMState.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ struct SelectedTargetInfo final {
4949
std::string MArch;
5050
std::string CPU;
5151
std::string Features;
52+
std::string ABI;
5253
};
5354

5455
// An object to initialize LLVM and prepare objects needed to run the

llvm/tools/llvm-snippy/lib/GeneratorUtils/LLVMState.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ Expected<LLVMState> LLVMState::create(const SelectedTargetInfo &TargetInfo) {
162162
// cannot do by itself on some targets.
163163
// E.G.: RISCV AsmPrinter cannot emit JAL directly.
164164
TargetFeatures += ",+relax";
165-
const TargetOptions Options;
165+
TargetOptions Options;
166+
Options.MCOptions.ABIName = TargetInfo.ABI;
166167
auto TM = std::unique_ptr<TargetMachine>(static_cast<TargetMachine *>(
167168
Tgt->createTargetMachine(TheTriple, TargetInfo.CPU, TargetFeatures,
168169
Options, Reloc::Model::Static)));

llvm/tools/llvm-snippy/llvm-snippy.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ static SelectedTargetInfo getSelectedTargetInfo(const ProgramOptions &Opts) {
174174
TargetInfo.Triple = Opts.MTargetTriple;
175175
TargetInfo.CPU = Opts.CpuName;
176176
TargetInfo.Features = Opts.MAttr;
177+
TargetInfo.ABI = Opts.ABI;
177178
if (!Opts.MTargetTripleSpecified && !Opts.MArchSpecified) {
178179
TargetInfo.Triple = sys::getProcessTriple();
179180
if (!Opts.CpuNameSpecified)

0 commit comments

Comments
 (0)