Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
llvm-watermarker
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nagayama15
llvm-watermarker
Commits
9ed08cc3
Commit
9ed08cc3
authored
Dec 12, 2018
by
nagayama15
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🆕
何もしない透かし埋め込みパスを追加
parent
327843a5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
96 additions
and
0 deletions
+96
-0
Makefile
src/Makefile
+1
-0
InstructionWatermarkPass.cpp
src/nykk/pass/InstructionWatermarkPass.cpp
+95
-0
No files found.
src/Makefile
View file @
9ed08cc3
...
...
@@ -2,6 +2,7 @@ TARGET := nykk.so
SRCS
:=
\
nykk/pass/BlockCounterPass.cpp
\
nykk/pass/BlockWatermarkPass.cpp
\
nykk/pass/InstructionWatermarkPass.cpp
\
nykk/pass/TestPass.cpp
include
../cxx.mk
src/nykk/pass/InstructionWatermarkPass.cpp
0 → 100644
View file @
9ed08cc3
#include <llvm/IR/Function.h>
#include <llvm/IR/Module.h>
#include <llvm/Pass.h>
#include <llvm/Support/raw_ostream.h>
#include "../CircularBitStream.hpp"
#include "Opts.hpp"
namespace
{
/**
* @brief Watermarking pass by instruction swapping methods.
*/
class
InstructionWatermarkPass
:
public
llvm
::
BasicBlockPass
{
public
:
static
inline
char
ID
;
// Needed for LLVM.
/**
* @brief Constructor.
*/
explicit
InstructionWatermarkPass
()
:
BasicBlockPass
(
ID
)
,
module_name_
()
,
bit_stream_
()
{
}
// Uncopyable, unmovable.
InstructionWatermarkPass
(
const
InstructionWatermarkPass
&
)
=
delete
;
InstructionWatermarkPass
(
InstructionWatermarkPass
&&
)
=
delete
;
InstructionWatermarkPass
&
operator
=
(
const
InstructionWatermarkPass
&
)
=
delete
;
InstructionWatermarkPass
&
operator
=
(
InstructionWatermarkPass
&&
)
=
delete
;
~
InstructionWatermarkPass
()
=
default
;
/**
* @brief Initialization before pass is run.
*
* @param module Reference of the module.
*
* @return ?
*/
bool
doInitialization
(
llvm
::
Module
&
module
)
override
{
module_name_
=
module
.
getName
();
bit_stream_
=
nykk
::
CircularBitStream
::
from_string
(
nykk
::
pass
::
watermark_opt
);
llvm
::
errs
()
<<
"func"
<<
", "
<<
"insts"
<<
", "
<<
"bits"
<<
"
\n
"
;
return
false
;
}
/**
* @brief Finalization after pass is run.
*
* @param module Reference of the module.
*
* @return ?
*/
bool
doFinalization
([[
maybe_unused
]]
llvm
::
Module
&
module
)
override
{
module_name_
.
clear
();
bit_stream_
.
reset
();
return
false
;
}
/**
* @brief Processes basic blocks.
*
* @param block Reference to the basic block.
*
* @return `true` if the function was changed.
*/
bool
runOnBasicBlock
(
llvm
::
BasicBlock
&
block
)
override
{
llvm
::
errs
()
<<
block
.
getParent
()
->
getName
()
<<
","
<<
block
.
size
()
<<
","
<<
0
<<
"
\n
"
;
return
false
;
}
private
:
std
::
string
module_name_
;
std
::
unique_ptr
<
nykk
::
CircularBitStream
>
bit_stream_
;
};
// Registers pass.
const
llvm
::
RegisterPass
<
InstructionWatermarkPass
>
pass_registry
=
{
"inst-wm"
,
"Watermarking pass by instruction swapping methods"
,
};
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment