Commit 5f558b7e authored by Alastair Robertson's avatar Alastair Robertson

Create ast subdirectory

parent 489c716c
......@@ -39,7 +39,7 @@ bison_target(bison_parser src/parser.yy ${CMAKE_BINARY_DIR}/parser.tab.cc)
flex_target(flex_lexer src/lexer.l ${CMAKE_BINARY_DIR}/lex.yy.cc)
add_flex_bison_dependency(flex_lexer bison_parser)
add_library(parser ${BISON_bison_parser_OUTPUTS} ${FLEX_flex_lexer_OUTPUTS})
target_include_directories(parser PUBLIC src ${CMAKE_BINARY_DIR})
target_include_directories(parser PUBLIC src src/ast ${CMAKE_BINARY_DIR})
find_package(LLVM REQUIRED CONFIG)
include_directories(${LLVM_INCLUDE_DIRS})
......@@ -48,5 +48,6 @@ add_definitions(${LLVM_DEFINITIONS})
set(DYNAMIC_LINKING OFF CACHE BOOL "Build bpftrace as a dynamically linked executable")
add_subdirectory(src/arch)
add_subdirectory(src/ast)
add_subdirectory(src)
add_subdirectory(tests)
......@@ -136,10 +136,15 @@ Tracepoints are guaranteed to be stable between kernel versions, unlike kprobes.
Run the script at specified time intervals:
`profile:hz:99 { ... }`
`profile:ms:10 { ... }`
`profile:s:1 { ... }`
`profile:ms:20 { ... }`
`profile:us:1500 { ... }`
### Multiple attachment points
More than one function/tracepoint can be specified for a single probe:
A single probe can be attached to multiple events:
`kprobe:sys_read,kprobe:sys_write { ... }`
......
......@@ -3,30 +3,25 @@ if (NOT DYNAMIC_LINKING)
endif()
add_executable(bpftrace
ast.cpp
attached_probe.cpp
bpftrace.cpp
codegen_llvm.cpp
driver.cpp
fake_map.cpp
irbuilderbpf.cpp
main.cpp
map.cpp
mapkey.cpp
printer.cpp
printf.cpp
semantic_analyser.cpp
types.cpp
)
target_link_libraries(bpftrace arch parser)
target_link_libraries(bpftrace arch ast parser)
llvm_map_components_to_libnames(llvm_libs bpfcodegen ipo irreader mcjit)
target_link_libraries(bpftrace ${llvm_libs})
add_dependencies(bpftrace bcc-build)
ExternalProject_Get_Property(bcc source_dir binary_dir)
include_directories(${source_dir}/src/cc)
target_include_directories(bpftrace PUBLIC ${source_dir}/src/cc)
target_link_libraries(bpftrace ${binary_dir}/src/cc/libbpf.a)
target_link_libraries(bpftrace ${binary_dir}/src/cc/libbcc-loader-static.a)
target_link_libraries(bpftrace ${binary_dir}/src/cc/libbcc.a)
......
add_library(ast
ast.cpp
codegen_llvm.cpp
irbuilderbpf.cpp
printer.cpp
semantic_analyser.cpp
)
target_include_directories(ast PUBLIC ${CMAKE_SOURCE_DIR}/src)
target_include_directories(ast PUBLIC ${CMAKE_SOURCE_DIR}/src/ast)
target_include_directories(ast PUBLIC ${CMAKE_BINARY_DIR})
target_link_libraries(ast arch)
add_dependencies(ast bcc-build)
ExternalProject_Get_Property(bcc source_dir)
target_include_directories(ast PUBLIC ${source_dir}/src/cc)
......@@ -6,9 +6,6 @@ add_compile_options("-Wno-undef")
add_compile_options("-Wno-switch-default")
add_compile_options("-Wno-switch-enum")
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_BINARY_DIR}/src)
add_executable(bpftrace_test
ast.cpp
bpftrace.cpp
......@@ -16,19 +13,19 @@ add_executable(bpftrace_test
main.cpp
parser.cpp
semantic_analyser.cpp
${CMAKE_SOURCE_DIR}/src/ast.cpp
${CMAKE_SOURCE_DIR}/src/attached_probe.cpp
${CMAKE_SOURCE_DIR}/src/bpftrace.cpp
${CMAKE_SOURCE_DIR}/src/codegen_llvm.cpp
${CMAKE_SOURCE_DIR}/src/driver.cpp
${CMAKE_SOURCE_DIR}/src/irbuilderbpf.cpp
${CMAKE_SOURCE_DIR}/src/fake_map.cpp
${CMAKE_SOURCE_DIR}/src/map.cpp
${CMAKE_SOURCE_DIR}/src/mapkey.cpp
${CMAKE_SOURCE_DIR}/src/printer.cpp
${CMAKE_SOURCE_DIR}/src/printf.cpp
${CMAKE_SOURCE_DIR}/src/semantic_analyser.cpp
${CMAKE_SOURCE_DIR}/src/types.cpp
${CMAKE_SOURCE_DIR}/src/ast/ast.cpp
${CMAKE_SOURCE_DIR}/src/ast/codegen_llvm.cpp
${CMAKE_SOURCE_DIR}/src/ast/irbuilderbpf.cpp
${CMAKE_SOURCE_DIR}/src/ast/printer.cpp
${CMAKE_SOURCE_DIR}/src/ast/semantic_analyser.cpp
)
target_link_libraries(bpftrace_test arch parser)
......@@ -38,7 +35,7 @@ target_link_libraries(bpftrace_test ${llvm_libs})
add_dependencies(bpftrace_test bcc-build)
ExternalProject_Get_Property(bcc source_dir binary_dir)
include_directories(${source_dir}/src/cc)
target_include_directories(bpftrace_test PUBLIC ${source_dir}/src/cc)
target_link_libraries(bpftrace_test ${binary_dir}/src/cc/libbpf.a)
target_link_libraries(bpftrace_test ${binary_dir}/src/cc/libbcc-loader-static.a)
target_link_libraries(bpftrace_test ${binary_dir}/src/cc/libbcc.a)
......@@ -55,8 +52,8 @@ ExternalProject_Add(gtest
)
add_dependencies(bpftrace_test gtest-build)
ExternalProject_Get_Property(gtest source_dir binary_dir)
include_directories(${source_dir}/googletest/include)
include_directories(${source_dir}/googlemock/include)
target_include_directories(bpftrace_test PUBLIC ${source_dir}/googletest/include)
target_include_directories(bpftrace_test PUBLIC ${source_dir}/googlemock/include)
target_link_libraries(bpftrace_test ${binary_dir}/googlemock/gtest/libgtest.a)
target_link_libraries(bpftrace_test ${binary_dir}/googlemock/gtest/libgtest_main.a)
target_link_libraries(bpftrace_test ${binary_dir}/googlemock/libgmock.a)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment