Commit 6c08dcbb authored by Brenden Blanco's avatar Brenden Blanco

Merge pull request #456 from yadutaf/jt-endian

Minor endian and debug enhancement
parents 354ee0c0 7d37bf4d
...@@ -688,7 +688,7 @@ BFrontendAction::BFrontendAction(llvm::raw_ostream &os, unsigned flags) ...@@ -688,7 +688,7 @@ BFrontendAction::BFrontendAction(llvm::raw_ostream &os, unsigned flags)
} }
void BFrontendAction::EndSourceFileAction() { void BFrontendAction::EndSourceFileAction() {
if (flags_ & 0x4) if (flags_ & DEBUG_PREPROCESSOR)
rewriter_->getEditBuffer(rewriter_->getSourceMgr().getMainFileID()).write(llvm::errs()); rewriter_->getEditBuffer(rewriter_->getSourceMgr().getMainFileID()).write(llvm::errs());
rewriter_->getEditBuffer(rewriter_->getSourceMgr().getMainFileID()).write(os_); rewriter_->getEditBuffer(rewriter_->getSourceMgr().getMainFileID()).write(os_);
os_.flush(); os_.flush();
......
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
#include "table_desc.h" #include "table_desc.h"
#define DEBUG_PREPROCESSOR 0x4
namespace clang { namespace clang {
class ASTConsumer; class ASTConsumer;
class ASTContext; class ASTContext;
......
...@@ -82,6 +82,9 @@ int KBuildHelper::get_flags(const char *uname_machine, vector<string> *cflags) { ...@@ -82,6 +82,9 @@ int KBuildHelper::get_flags(const char *uname_machine, vector<string> *cflags) {
cflags->push_back("-include"); cflags->push_back("-include");
cflags->push_back("./include/linux/kconfig.h"); cflags->push_back("./include/linux/kconfig.h");
cflags->push_back("-D__KERNEL__"); cflags->push_back("-D__KERNEL__");
cflags->push_back("-D__HAVE_BUILTIN_BSWAP16__");
cflags->push_back("-D__HAVE_BUILTIN_BSWAP32__");
cflags->push_back("-D__HAVE_BUILTIN_BSWAP64__");
cflags->push_back("-Wno-unused-value"); cflags->push_back("-Wno-unused-value");
cflags->push_back("-Wno-pointer-sign"); cflags->push_back("-Wno-pointer-sign");
......
...@@ -155,7 +155,7 @@ int ClangLoader::parse(unique_ptr<llvm::Module> *mod, unique_ptr<vector<TableDes ...@@ -155,7 +155,7 @@ int ClangLoader::parse(unique_ptr<llvm::Module> *mod, unique_ptr<vector<TableDes
// Initialize a compiler invocation object from the clang (-cc1) arguments. // Initialize a compiler invocation object from the clang (-cc1) arguments.
const driver::ArgStringList &ccargs = cmd.getArguments(); const driver::ArgStringList &ccargs = cmd.getArguments();
if (flags_ & 0x4) { if (flags_ & DEBUG_PREPROCESSOR) {
llvm::errs() << "clang"; llvm::errs() << "clang";
for (auto arg : ccargs) for (auto arg : ccargs)
llvm::errs() << " " << arg; llvm::errs() << " " << arg;
......
...@@ -40,11 +40,10 @@ ksyms = [] ...@@ -40,11 +40,10 @@ ksyms = []
ksym_names = {} ksym_names = {}
ksym_loaded = 0 ksym_loaded = 0
_kprobe_limit = 1000 _kprobe_limit = 1000
BASE_CFLAGS = [
'-D__HAVE_BUILTIN_BSWAP16__', DEBUG_LLVM_IR = 0x1
'-D__HAVE_BUILTIN_BSWAP32__', DEBUG_BPF = 0x2
'-D__HAVE_BUILTIN_BSWAP64__', DEBUG_PREPROCESSOR = 0x4
]
@atexit.register @atexit.register
def cleanup_kprobes(): def cleanup_kprobes():
...@@ -137,8 +136,9 @@ class BPF(object): ...@@ -137,8 +136,9 @@ class BPF(object):
hdr_file (Optional[str]): Path to a helper header file for the `src_file` hdr_file (Optional[str]): Path to a helper header file for the `src_file`
text (Optional[str]): Contents of a source file for the module text (Optional[str]): Contents of a source file for the module
debug (Optional[int]): Flags used for debug prints, can be |'d together debug (Optional[int]): Flags used for debug prints, can be |'d together
0x1: print LLVM IR to stderr DEBUG_LLVM_IR: print LLVM IR to stderr
0x2: print BPF bytecode to stderr DEBUG_BPF: print BPF bytecode to stderr
DEBUG_PREPROCESSOR: print Preprocessed C file to stderr
""" """
self._reader_cb_impl = _CB_TYPE(BPF._reader_cb) self._reader_cb_impl = _CB_TYPE(BPF._reader_cb)
...@@ -146,7 +146,6 @@ class BPF(object): ...@@ -146,7 +146,6 @@ class BPF(object):
self.debug = debug self.debug = debug
self.funcs = {} self.funcs = {}
self.tables = {} self.tables = {}
cflags = BASE_CFLAGS + cflags
cflags_array = (ct.c_char_p * len(cflags))() cflags_array = (ct.c_char_p * len(cflags))()
for i, s in enumerate(cflags): cflags_array[i] = s.encode("ascii") for i, s in enumerate(cflags): cflags_array[i] = s.encode("ascii")
if text: if text:
...@@ -198,7 +197,7 @@ class BPF(object): ...@@ -198,7 +197,7 @@ class BPF(object):
lib.bpf_module_kern_version(self.module), lib.bpf_module_kern_version(self.module),
log_buf, ct.sizeof(log_buf) if log_buf else 0) log_buf, ct.sizeof(log_buf) if log_buf else 0)
if self.debug & 0x2: if self.debug & DEBUG_BPF:
print(log_buf.value.decode(), file=sys.stderr) print(log_buf.value.decode(), file=sys.stderr)
if fd < 0: if fd < 0:
......
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