Skip to content

Commit 4cdfdb5

Browse files
[llvm-exegesis] Define MAP_FIXED_NOREPLACE if not available
Some builders are currently failing as they don't have MAP_FIXED_NOREPLACE available. This patch checks if MAP_FIXED_NOREPLACE is available and if it isn't, it is simply defined as MAP_FIXED.
1 parent 1720237 commit 4cdfdb5

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

llvm/tools/llvm-exegesis/lib/X86/Target.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,13 @@ ExegesisX86Target::generateExitSyscall(unsigned ExitCode) const {
10721072
return ExitCallCode;
10731073
}
10741074

1075+
// Before kernel 4.17, Linux did not support MAP_FIXED_NOREPLACE, so if it is
1076+
// not available, simplfy define it as MAP_FIXED which performs the same
1077+
// function but does not guarantee existing mappings won't get clobbered.
1078+
#ifndef MAP_FIXED_NOREPLACE
1079+
#define MAP_FIXED_NOREPLACE MAP_FIXED
1080+
#endif
1081+
10751082
std::vector<MCInst>
10761083
ExegesisX86Target::generateMmap(intptr_t Address, size_t Length,
10771084
intptr_t FileDescriptorAddress) const {

llvm/unittests/tools/llvm-exegesis/X86/TargetTest.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,13 @@ TEST_F(X86Core2TargetTest, GenerateExitSyscallTest) {
620620
OpcodeIs(X86::SYSCALL)));
621621
}
622622

623+
// Before kernel 4.17, Linux did not support MAP_FIXED_NOREPLACE, so if it is
624+
// not available, simplfy define it as MAP_FIXED which performs the same
625+
// function but does not guarantee existing mappings won't get clobbered.
626+
#ifndef MAP_FIXED_NOREPLACE
627+
#define MAP_FIXED_NOREPLACE MAP_FIXED
628+
#endif
629+
623630
TEST_F(X86Core2TargetTest, GenerateMmapTest) {
624631
EXPECT_THAT(State.getExegesisTarget().generateMmap(0x1000, 4096, 0x2000),
625632
ElementsAre(IsMovImmediate(X86::MOV64ri, X86::RDI, 0x1000),

0 commit comments

Comments
 (0)