mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-24 02:37:15 +07:00
630aec1a7f
It was put in place just to make sure the 'new' C++ operator wouldn't clash with some argument name in util.h, but there is not anymore any such argument and also the reason stated for util.h to be included there was to get the __maybe_unused definition, that is in linux/compiler.h, so use that instead and nuke util-cxx.h. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: He Kuang <hekuang@huawei.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: https://lkml.kernel.org/n/tip-1r5tvfnwiydjxhukgqs6bi11@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
66 lines
1.2 KiB
C++
66 lines
1.2 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "clang.h"
|
|
#include "clang-c.h"
|
|
extern "C" {
|
|
#include "../util.h"
|
|
}
|
|
#include "llvm/IR/Function.h"
|
|
#include "llvm/IR/LLVMContext.h"
|
|
|
|
#include <tests/llvm.h>
|
|
#include <string>
|
|
|
|
class perf_clang_scope {
|
|
public:
|
|
explicit perf_clang_scope() {perf_clang__init();}
|
|
~perf_clang_scope() {perf_clang__cleanup();}
|
|
};
|
|
|
|
static std::unique_ptr<llvm::Module>
|
|
__test__clang_to_IR(void)
|
|
{
|
|
unsigned int kernel_version;
|
|
|
|
if (fetch_kernel_version(&kernel_version, NULL, 0))
|
|
return std::unique_ptr<llvm::Module>(nullptr);
|
|
|
|
std::string cflag_kver("-DLINUX_VERSION_CODE=" +
|
|
std::to_string(kernel_version));
|
|
|
|
std::unique_ptr<llvm::Module> M =
|
|
perf::getModuleFromSource({cflag_kver.c_str()},
|
|
"perf-test.c",
|
|
test_llvm__bpf_base_prog);
|
|
return M;
|
|
}
|
|
|
|
extern "C" {
|
|
int test__clang_to_IR(void)
|
|
{
|
|
perf_clang_scope _scope;
|
|
|
|
auto M = __test__clang_to_IR();
|
|
if (!M)
|
|
return -1;
|
|
for (llvm::Function& F : *M)
|
|
if (F.getName() == "bpf_func__SyS_epoll_pwait")
|
|
return 0;
|
|
return -1;
|
|
}
|
|
|
|
int test__clang_to_obj(void)
|
|
{
|
|
perf_clang_scope _scope;
|
|
|
|
auto M = __test__clang_to_IR();
|
|
if (!M)
|
|
return -1;
|
|
|
|
auto Buffer = perf::getBPFObjectFromModule(&*M);
|
|
if (!Buffer)
|
|
return -1;
|
|
return 0;
|
|
}
|
|
|
|
}
|