Skip to content

Commit 003ff87

Browse files
committed
[CodeGen][NPM] Port MachineSanitizerBinaryMetadata to NPM
1 parent e986593 commit 003ff87

File tree

7 files changed

+60
-13
lines changed

7 files changed

+60
-13
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//===- llvm/CodeGen/SanitizerBinaryMetadata.h -------------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_CODEGEN_SANITIZERBINARYMETADATA_H
10+
#define LLVM_CODEGEN_SANITIZERBINARYMETADATA_H
11+
12+
#include "llvm/CodeGen/MachinePassManager.h"
13+
14+
namespace llvm {
15+
16+
class MachineSanitizerBinaryMetadataPass
17+
: public PassInfoMixin<MachineSanitizerBinaryMetadataPass> {
18+
public:
19+
PreservedAnalyses run(MachineFunction &MF,
20+
MachineFunctionAnalysisManager &MFAM);
21+
static bool isRequired() { return true; }
22+
};
23+
24+
} // namespace llvm
25+
26+
#endif // LLVM_CODEGEN_SANITIZERBINARYMETADATA_H

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ void initializeMachineOutlinerPass(PassRegistry &);
206206
void initializeMachinePipelinerPass(PassRegistry &);
207207
void initializeMachinePostDominatorTreeWrapperPassPass(PassRegistry &);
208208
void initializeMachineRegionInfoPassPass(PassRegistry &);
209-
void initializeMachineSanitizerBinaryMetadataPass(PassRegistry &);
209+
void initializeMachineSanitizerBinaryMetadataLegacyPass(PassRegistry &);
210210
void initializeMachineSchedulerLegacyPass(PassRegistry &);
211211
void initializeMachineSinkingLegacyPass(PassRegistry &);
212212
void initializeMachineTraceMetricsWrapperPassPass(PassRegistry &);

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
#include "llvm/CodeGen/RenameIndependentSubregs.h"
7676
#include "llvm/CodeGen/ReplaceWithVeclib.h"
7777
#include "llvm/CodeGen/SafeStack.h"
78+
#include "llvm/CodeGen/SanitizerBinaryMetadata.h"
7879
#include "llvm/CodeGen/SelectOptimize.h"
7980
#include "llvm/CodeGen/ShadowStackGCLowering.h"
8081
#include "llvm/CodeGen/SjLjEHPrepare.h"
@@ -1002,7 +1003,7 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::addMachinePasses(
10021003
addPass(RemoveLoadsIntoFakeUsesPass());
10031004
addPass(StackMapLivenessPass());
10041005
addPass(LiveDebugValuesPass());
1005-
addPass(MachineSanitizerBinaryMetadata());
1006+
addPass(MachineSanitizerBinaryMetadataPass());
10061007

10071008
if (TM.Options.EnableMachineOutliner &&
10081009
getOptLevel() != CodeGenOptLevel::None &&

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotAllocationPass())
149149
MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass())
150150
MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass())
151151
MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass())
152+
MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadataPass())
152153
MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass(TM))
153154
MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass())
154155
MACHINE_FUNCTION_PASS("no-op-machine-function", NoOpMachineFunctionPass())
@@ -279,7 +280,6 @@ DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass)
279280
DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass)
280281
DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
281282
DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", MachineFunctionSplitterPass)
282-
DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata)
283283
DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", MachineUniformityInfoWrapperPass)
284284
DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass)
285285
DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
9090
initializeMachineOptimizationRemarkEmitterPassPass(Registry);
9191
initializeMachineOutlinerPass(Registry);
9292
initializeMachinePipelinerPass(Registry);
93-
initializeMachineSanitizerBinaryMetadataPass(Registry);
93+
initializeMachineSanitizerBinaryMetadataLegacyPass(Registry);
9494
initializeModuloScheduleTestPass(Registry);
9595
initializeMachinePostDominatorTreeWrapperPassPass(Registry);
9696
initializeMachineRegionInfoPassPass(Registry);

llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//
1212
//===----------------------------------------------------------------------===//
1313

14-
#include "llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h"
14+
#include "llvm/CodeGen/SanitizerBinaryMetadata.h"
1515
#include "llvm/CodeGen/MachineFrameInfo.h"
1616
#include "llvm/CodeGen/MachineFunction.h"
1717
#include "llvm/CodeGen/MachineFunctionPass.h"
@@ -20,34 +20,53 @@
2020
#include "llvm/IR/MDBuilder.h"
2121
#include "llvm/InitializePasses.h"
2222
#include "llvm/Pass.h"
23+
#include "llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h"
2324
#include <algorithm>
2425

2526
using namespace llvm;
2627

2728
namespace {
28-
class MachineSanitizerBinaryMetadata : public MachineFunctionPass {
29+
class MachineSanitizerBinaryMetadataLegacy : public MachineFunctionPass {
2930
public:
3031
static char ID;
3132

32-
MachineSanitizerBinaryMetadata();
33+
MachineSanitizerBinaryMetadataLegacy();
3334
bool runOnMachineFunction(MachineFunction &F) override;
3435
};
36+
37+
struct MachineSanitizerBinaryMetadata {
38+
bool run(MachineFunction &MF);
39+
};
40+
3541
} // namespace
3642

37-
INITIALIZE_PASS(MachineSanitizerBinaryMetadata, "machine-sanmd",
43+
INITIALIZE_PASS(MachineSanitizerBinaryMetadataLegacy, "machine-sanmd",
3844
"Machine Sanitizer Binary Metadata", false, false)
3945

40-
char MachineSanitizerBinaryMetadata::ID = 0;
46+
char MachineSanitizerBinaryMetadataLegacy::ID = 0;
4147
char &llvm::MachineSanitizerBinaryMetadataID =
42-
MachineSanitizerBinaryMetadata::ID;
48+
MachineSanitizerBinaryMetadataLegacy::ID;
4349

44-
MachineSanitizerBinaryMetadata::MachineSanitizerBinaryMetadata()
50+
MachineSanitizerBinaryMetadataLegacy::MachineSanitizerBinaryMetadataLegacy()
4551
: MachineFunctionPass(ID) {
46-
initializeMachineSanitizerBinaryMetadataPass(
52+
initializeMachineSanitizerBinaryMetadataLegacyPass(
4753
*PassRegistry::getPassRegistry());
4854
}
4955

50-
bool MachineSanitizerBinaryMetadata::runOnMachineFunction(MachineFunction &MF) {
56+
bool MachineSanitizerBinaryMetadataLegacy::runOnMachineFunction(
57+
MachineFunction &MF) {
58+
return MachineSanitizerBinaryMetadata().run(MF);
59+
}
60+
61+
PreservedAnalyses
62+
MachineSanitizerBinaryMetadataPass::run(MachineFunction &MF,
63+
MachineFunctionAnalysisManager &MFAM) {
64+
if (!MachineSanitizerBinaryMetadata().run(MF))
65+
return PreservedAnalyses::all();
66+
return getMachineFunctionPassPreservedAnalyses();
67+
}
68+
69+
bool MachineSanitizerBinaryMetadata::run(MachineFunction &MF) {
5170
MDNode *MD = MF.getFunction().getMetadata(LLVMContext::MD_pcsections);
5271
if (!MD)
5372
return false;

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
#include "llvm/CodeGen/RemoveRedundantDebugValues.h"
149149
#include "llvm/CodeGen/RenameIndependentSubregs.h"
150150
#include "llvm/CodeGen/SafeStack.h"
151+
#include "llvm/CodeGen/SanitizerBinaryMetadata.h"
151152
#include "llvm/CodeGen/SelectOptimize.h"
152153
#include "llvm/CodeGen/ShadowStackGCLowering.h"
153154
#include "llvm/CodeGen/SjLjEHPrepare.h"

0 commit comments

Comments
 (0)