-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
c1_CFGPrinter.cpp | ||
c1_Canonicalizer.cpp | ||
c1_Compilation.cpp | ||
c1_Compiler.cpp | ||
c1_Defs.cpp | ||
c1_FrameMap.cpp | ||
c1_GraphBuilder.cpp | ||
c1_IR.cpp | ||
c1_Instruction.cpp | ||
c1_InstructionPrinter.cpp | ||
c1_LIR.cpp | ||
c1_LIRAssembler.cpp | ||
c1_LIRGenerator.cpp | ||
c1_LinearScan.cpp | ||
c1_Optimizer.cpp | ||
c1_RangeCheckElimination.cpp | ||
c1_Runtime1.cpp | ||
c1_ValueMap.cpp | ||
c1_ValueSet.cpp | ||
c1_ValueSet. | ||
c1_ValueStack.cpp | ||
c1_ValueType.cpp | ||
c1_globals.cpp | ||
addnode.cpp | ||
arraycopynode.cpp | ||
block.cpp | ||
buildOopMap.cpp | ||
bytecodeInfo.cpp | ||
c2_globals.cpp | ||
c2compiler.cpp | ||
callGenerator.cpp | ||
callnode.cpp | ||
castnode.cpp | ||
cfgnode.cpp | ||
chaitin.cpp | ||
classes.cpp | ||
coalesce.cpp | ||
compile.cpp | ||
connode.cpp | ||
convertnode.cpp | ||
countbitsnode.cpp | ||
divnode.cpp | ||
doCall.cpp | ||
domgraph.cpp | ||
escape.cpp | ||
gcm.cpp | ||
generateOptoStub.cpp | ||
graphKit.cpp | ||
idealGraphPrinter.cpp | ||
idealKit.cpp | ||
ifg.cpp | ||
ifnode.cpp | ||
indexSet.cpp | ||
intrinsicnode.cpp | ||
lcm.cpp | ||
library_call.cpp | ||
live.cpp | ||
locknode.cpp | ||
loopPredicate.cpp | ||
loopTransform.cpp | ||
loopUnswitch.cpp | ||
loopnode.cpp | ||
loopopts.cpp | ||
machnode.cpp | ||
macro.cpp | ||
macroArrayCopy.cpp | ||
matcher.cpp | ||
mathexactnode.cpp | ||
memnode.cpp | ||
movenode.cpp | ||
mulnode.cpp | ||
multnode.cpp | ||
narrowptrnode.cpp | ||
node.cpp | ||
opaquenode.cpp | ||
opcodes.cpp | ||
output.cpp | ||
parse1.cpp | ||
parse2.cpp | ||
parse3.cpp | ||
parseHelper.cpp | ||
phase.cpp | ||
phaseX.cpp | ||
postaloc.cpp | ||
reg_split.cpp | ||
regalloc.cpp | ||
regmask.cpp | ||
replacednodes.cpp | ||
rootnode.cpp | ||
runtime.cpp | ||
split_if.cpp | ||
stringopts.cpp | ||
subnode.cpp | ||
superword.cpp | ||
type.cpp | ||
vectornode.cpp |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<module type="JAVA_MODULE" version="4"> | ||
<component name="NewModuleRootManager" inherit-compiler-output="true"> | ||
<exclude-output /> | ||
<content url="file://$MODULE_DIR$"> | ||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> | ||
</content> | ||
<orderEntry type="inheritedJdk" /> | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
<orderEntry type="library" name="JITFuzz_" level="project" /> | ||
</component> | ||
</module> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
## Getting Started | ||
|
||
### Directory description | ||
|
||
``` | ||
benchmark: projects as seeds | ||
logs: log files | ||
out: builded class files | ||
resources: configuration files of seed projects | ||
seeds: seed files generated | ||
src: source code | ||
tmp: temporary files during experiment | ||
util: helper class(utils.Digit) | ||
``` | ||
|
||
### How to Run | ||
#### Prerequisites | ||
1. JDK11 | ||
|
||
2. AFLplusplus | ||
- Get by `git clone https://github.com/AFLplusplus/AFLplusplus.git` | ||
|
||
3. JDK source code | ||
- Get by `git clone https://github.com/openjdk/jdk.git` | ||
#### Steps to build | ||
1. Build AFLplusplus | ||
- See `https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/INSTALL.md` | ||
2. Build JDK with AFLplusplus | ||
- Run | ||
``` | ||
AFL_GCC_ALLOWLIST=./AFL_GCC_ALLOWLIST CC=PATH_TO_AFLPLUSPLUS/afl-gcc-fast CXX=PATH_TO_AFLPLUSPLUS/afl-g++-fast bash configure --enable-debug --disable-warnings-as-errors | ||
make images | ||
``` | ||
3. Build JITFuzz | ||
- You can import it into IntelliJ IDEA workspace | ||
- Build and run `JITFuzz` with `JDK11` | ||
#### Steps to run | ||
1. Choose and build a seed project | ||
2. Write a `seed_project.properties` file and put it in `./resources`; See `./resources/fastjson.properties` as example. | ||
3. run `experiment.Main` with `JDK11`. | ||
Command line options: | ||
- `-i: The index of this experiment, used to mark the log and seeds files. e.g., 0` | ||
- `-I: The total iterations of mutation. e.g., 1000` | ||
- `-p: The project that serves seed files ./resources/project.properties will be read. e.g., fastjson` | ||
- `-s: The path to store seeds generated. Not necessary, default value: ./seeds` | ||
- `-l: The path to store log files. Not necessary, default value: ./logs` | ||
- `-e: The mutator to be disabled: scalar|escape|simp|inline|wrap|trans; Not necessary, | ||
no one will be disabled in default.` | ||