From 3ad42e270c0063eb4903e3908c621279a9587f35 Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Tue, 1 Aug 2017 14:12:03 +0200 Subject: [PATCH] fixes for Debian 9 - search for libdwarf.h in new locations (e.g., /usr/include/libdwarf/) - build Bochs with -std=gnu++98 (gnu++14 is default since GCC 6.1) - specify "proto2" syntax for protobuf messages - minor build-system and C++ namespace fixes Change-Id: I16dbc622c797ef8e936fe3c0fb9b03029d27529d --- cmake/FindLibDwarf.cmake | 6 +++++- cmake/bochs.cmake | 2 +- cmake/doxygen.cmake | 1 + src/core/comm/DatabaseCampaignMessage.proto.in | 2 ++ src/core/comm/FailControlMessage.proto | 2 ++ src/core/comm/InjectionPointHopsMessage.proto | 2 ++ src/core/comm/InjectionPointStepsMessage.proto | 2 ++ src/core/comm/TracePlugin.proto | 2 ++ src/core/util/llvmdisassembler/LLVMDisassembler.cpp | 2 +- src/core/util/llvmdisassembler/testing/llvmDisTest.cc | 2 +- src/experiments/checksum-oostubs/checksum-oostubs.proto | 2 ++ src/experiments/cool-checksum/coolchecksum.proto | 2 ++ src/experiments/cored-voter/cored_voter.proto | 2 ++ src/experiments/dciao-kernelstructs/dciao_kernel.proto | 2 ++ src/experiments/dosek/cored-tester.proto | 2 ++ src/experiments/ecos_kernel_test/ecos_kernel_test.proto | 2 ++ src/experiments/erika-tester/erika-tester.proto | 2 ++ src/experiments/fiascoFail/fiascofail.proto | 2 ++ .../generic-experiment/generic-experiment.proto | 2 ++ src/experiments/kesogc/kesogc.proto | 2 ++ src/experiments/kesorefs/kesoref.proto | 2 ++ src/experiments/l4-sys/l4sys.proto | 2 ++ src/experiments/lra-simple-panda/lra_simple.proto | 2 ++ src/experiments/mh-test-campaign/MHTest.proto | 2 ++ src/experiments/nanojpeg/nanojpeg.proto | 2 ++ src/experiments/rampage/rampage.proto | 2 ++ src/experiments/vezs-example/vezs.proto | 2 ++ src/experiments/weather-monitor/weathermonitor.proto | 2 ++ tools/import-trace/AdvancedMemoryImporter.cc | 2 +- tools/import-trace/CMakeLists.txt | 7 +++++++ tools/import-trace/InstructionImporter.cc | 2 +- tools/import-trace/RandomJumpImporter.cc | 2 +- tools/import-trace/RegisterImporter.cc | 2 +- 33 files changed, 66 insertions(+), 8 deletions(-) diff --git a/cmake/FindLibDwarf.cmake b/cmake/FindLibDwarf.cmake index 8d39deea..be39ec6a 100644 --- a/cmake/FindLibDwarf.cmake +++ b/cmake/FindLibDwarf.cmake @@ -18,12 +18,16 @@ endif (LIBDWARF_LIBRARIES AND LIBDWARF_INCLUDE_DIRS) find_path (DWARF_INCLUDE_DIR NAMES - dwarf.h + libdwarf.h PATHS /usr/include + /usr/include/libdwarf /usr/local/include + /usr/local/include/libdwarf /opt/local/include + /opt/local/include/libdwarf /sw/include + /sw/include/libdwarf ENV CPATH) # PATH and INCLUDE will also work #find_path (LIBDW_INCLUDE_DIR # NAMES diff --git a/cmake/bochs.cmake b/cmake/bochs.cmake index d04ad07a..7ecb6fe7 100644 --- a/cmake/bochs.cmake +++ b/cmake/bochs.cmake @@ -79,7 +79,7 @@ if(BUILD_BOCHS) set(bochs_configure_params --enable-a20-pin --enable-x86-64 --enable-cpu-level=6 --enable-ne2000 --enable-acpi --enable-pci --enable-usb --enable-trace-cache --enable-fast-function-calls --enable-host-specific-asms --enable-disasm --enable-readline --enable-clgd54xx --enable-fpu --enable-vmx=2 --enable-monitor-mwait --enable-cdrom --enable-sb16=linux --enable-gdb-stub --disable-docbook --with-nogui --with-x11 --with-wx --with-sdl CACHE STRING "Bochs configure parameters") ## Bochs CXX args for calling make - set(bochs_build_CXX CXX=${AGXX}\ -p\ ${PROJECT_SOURCE_DIR}/src\ -p\ ${PROJECT_SOURCE_DIR}/simulators\ -p\ ${PROJECT_SOURCE_DIR}/debuggers\ -p\ ${PROJECT_SOURCE_DIR}/tools\ -p\ ${PROJECT_BINARY_DIR}/src\ -I${PROJECT_SOURCE_DIR}/src/core\ -I${CMAKE_BINARY_DIR}/src/core\ ${CMAKE_AGPP_FLAGS}\ --Xcompiler) + set(bochs_build_CXX CXX=${AGXX}\ -p\ ${PROJECT_SOURCE_DIR}/src\ -p\ ${PROJECT_SOURCE_DIR}/simulators\ -p\ ${PROJECT_SOURCE_DIR}/debuggers\ -p\ ${PROJECT_SOURCE_DIR}/tools\ -p\ ${PROJECT_BINARY_DIR}/src\ -I${PROJECT_SOURCE_DIR}/src/core\ -I${CMAKE_BINARY_DIR}/src/core\ ${CMAKE_AGPP_FLAGS}\ --Xcompiler\ -std=gnu++98) ## Bochs libtool command. set(bochs_build_LIBTOOL LIBTOOL=/bin/sh\ ./libtool\ --tag=CXX) diff --git a/cmake/doxygen.cmake b/cmake/doxygen.cmake index 0ceab416..e4ed2a0d 100644 --- a/cmake/doxygen.cmake +++ b/cmake/doxygen.cmake @@ -1,5 +1,6 @@ ### Setup doxygen documentation +include(CMakeParseArguments) # work around internal FindDoxygen bug find_package(Doxygen) if(DOXYGEN_FOUND) # Using a .in file means we can use CMake to insert project settings diff --git a/src/core/comm/DatabaseCampaignMessage.proto.in b/src/core/comm/DatabaseCampaignMessage.proto.in index 3389b223..dafa5e5b 100644 --- a/src/core/comm/DatabaseCampaignMessage.proto.in +++ b/src/core/comm/DatabaseCampaignMessage.proto.in @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "google/protobuf/descriptor.proto"; extend google.protobuf.FieldOptions { optional bool sql_primary_key = 32382 [ default = false]; diff --git a/src/core/comm/FailControlMessage.proto b/src/core/comm/FailControlMessage.proto index 5af627aa..93dcce2a 100644 --- a/src/core/comm/FailControlMessage.proto +++ b/src/core/comm/FailControlMessage.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message FailControlMessage { enum Command { // Minions may send these: diff --git a/src/core/comm/InjectionPointHopsMessage.proto b/src/core/comm/InjectionPointHopsMessage.proto index 238c4649..f105d7be 100644 --- a/src/core/comm/InjectionPointHopsMessage.proto +++ b/src/core/comm/InjectionPointHopsMessage.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message InjectionPointMessage { // Costs of the hop chain on the PandaBoard // ToDo: Could be eliminated, but it is nice for evaluation diff --git a/src/core/comm/InjectionPointStepsMessage.proto b/src/core/comm/InjectionPointStepsMessage.proto index d3c7e806..fb90a5c8 100644 --- a/src/core/comm/InjectionPointStepsMessage.proto +++ b/src/core/comm/InjectionPointStepsMessage.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message InjectionPointMessage { required uint32 injection_instr = 1; } \ No newline at end of file diff --git a/src/core/comm/TracePlugin.proto b/src/core/comm/TracePlugin.proto index 9b52be29..99222eb9 100644 --- a/src/core/comm/TracePlugin.proto +++ b/src/core/comm/TracePlugin.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message Trace_Event_Extended { // data value read/written optional uint64 data = 5; diff --git a/src/core/util/llvmdisassembler/LLVMDisassembler.cpp b/src/core/util/llvmdisassembler/LLVMDisassembler.cpp index 0defe085..cca58e5a 100644 --- a/src/core/util/llvmdisassembler/LLVMDisassembler.cpp +++ b/src/core/util/llvmdisassembler/LLVMDisassembler.cpp @@ -27,7 +27,7 @@ LLVMtoFailTranslator & LLVMDisassembler::getTranslator() { void LLVMDisassembler::disassemble() { - error_code ec; + llvm::error_code ec; for (section_iterator i = object->begin_sections(), e = object->end_sections(); i != e; i.increment(ec)) { diff --git a/src/core/util/llvmdisassembler/testing/llvmDisTest.cc b/src/core/util/llvmdisassembler/testing/llvmDisTest.cc index 9f02ab12..4a359e22 100644 --- a/src/core/util/llvmdisassembler/testing/llvmDisTest.cc +++ b/src/core/util/llvmdisassembler/testing/llvmDisTest.cc @@ -23,7 +23,7 @@ int main(int argc, char* argv[]) { } OwningPtr binary; - if (error_code ec = createBinary(file, binary)) { + if (llvm::error_code ec = createBinary(file, binary)) { std::cerr << "Dis" << ": '" << file << "': " << ec.message() << ".\n"; return -1; } diff --git a/src/experiments/checksum-oostubs/checksum-oostubs.proto b/src/experiments/checksum-oostubs/checksum-oostubs.proto index 96a74629..245aeae6 100644 --- a/src/experiments/checksum-oostubs/checksum-oostubs.proto +++ b/src/experiments/checksum-oostubs/checksum-oostubs.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message OOStuBSProtoMsg { // Input: experiment parameters // (client executes 8 experiments, one for each bit at mem_addr) diff --git a/src/experiments/cool-checksum/coolchecksum.proto b/src/experiments/cool-checksum/coolchecksum.proto index f6564792..dc39f84f 100644 --- a/src/experiments/cool-checksum/coolchecksum.proto +++ b/src/experiments/cool-checksum/coolchecksum.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message CoolChecksumProtoMsg { // parameters required uint32 instr_offset = 1; diff --git a/src/experiments/cored-voter/cored_voter.proto b/src/experiments/cored-voter/cored_voter.proto index d050dc74..614e81fd 100644 --- a/src/experiments/cored-voter/cored_voter.proto +++ b/src/experiments/cored-voter/cored_voter.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message CoredVoterProtoMsg { diff --git a/src/experiments/dciao-kernelstructs/dciao_kernel.proto b/src/experiments/dciao-kernelstructs/dciao_kernel.proto index eb6dc58c..c0d93b68 100644 --- a/src/experiments/dciao-kernelstructs/dciao_kernel.proto +++ b/src/experiments/dciao-kernelstructs/dciao_kernel.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message DCIAOKernelProtoMsg { diff --git a/src/experiments/dosek/cored-tester.proto b/src/experiments/dosek/cored-tester.proto index 5131b60d..f496ced5 100644 --- a/src/experiments/dosek/cored-tester.proto +++ b/src/experiments/dosek/cored-tester.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message CoredTesterProtoMsg { diff --git a/src/experiments/ecos_kernel_test/ecos_kernel_test.proto b/src/experiments/ecos_kernel_test/ecos_kernel_test.proto index 41e17b21..b4b6fb58 100644 --- a/src/experiments/ecos_kernel_test/ecos_kernel_test.proto +++ b/src/experiments/ecos_kernel_test/ecos_kernel_test.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message EcosKernelTestProtoMsg { diff --git a/src/experiments/erika-tester/erika-tester.proto b/src/experiments/erika-tester/erika-tester.proto index 85644fcc..bde34c8a 100644 --- a/src/experiments/erika-tester/erika-tester.proto +++ b/src/experiments/erika-tester/erika-tester.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message ErikaTesterProtoMsg { diff --git a/src/experiments/fiascoFail/fiascofail.proto b/src/experiments/fiascoFail/fiascofail.proto index 57a91d9d..cadf60aa 100644 --- a/src/experiments/fiascoFail/fiascofail.proto +++ b/src/experiments/fiascoFail/fiascofail.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message FiascofailProtoMsg { diff --git a/src/experiments/generic-experiment/generic-experiment.proto b/src/experiments/generic-experiment/generic-experiment.proto index 9baaf4a4..bcf6b1de 100644 --- a/src/experiments/generic-experiment/generic-experiment.proto +++ b/src/experiments/generic-experiment/generic-experiment.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message GenericExperimentMessage { diff --git a/src/experiments/kesogc/kesogc.proto b/src/experiments/kesogc/kesogc.proto index 03420a40..a5c9491d 100644 --- a/src/experiments/kesogc/kesogc.proto +++ b/src/experiments/kesogc/kesogc.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message KesoGcProtoMsg { diff --git a/src/experiments/kesorefs/kesoref.proto b/src/experiments/kesorefs/kesoref.proto index d5209fe6..9f05c7c9 100644 --- a/src/experiments/kesorefs/kesoref.proto +++ b/src/experiments/kesorefs/kesoref.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message KesoRefProtoMsg { diff --git a/src/experiments/l4-sys/l4sys.proto b/src/experiments/l4-sys/l4sys.proto index 6d876454..e31c939e 100644 --- a/src/experiments/l4-sys/l4sys.proto +++ b/src/experiments/l4-sys/l4sys.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message L4SysProtoMsg { diff --git a/src/experiments/lra-simple-panda/lra_simple.proto b/src/experiments/lra-simple-panda/lra_simple.proto index beda33cb..7d260c3c 100644 --- a/src/experiments/lra-simple-panda/lra_simple.proto +++ b/src/experiments/lra-simple-panda/lra_simple.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message LraSimpleProtoMsg { diff --git a/src/experiments/mh-test-campaign/MHTest.proto b/src/experiments/mh-test-campaign/MHTest.proto index 94e88bb7..2b00fa74 100644 --- a/src/experiments/mh-test-campaign/MHTest.proto +++ b/src/experiments/mh-test-campaign/MHTest.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message MHTestData { optional string foo = 1; optional int32 input = 2; diff --git a/src/experiments/nanojpeg/nanojpeg.proto b/src/experiments/nanojpeg/nanojpeg.proto index 05da0399..00f978bd 100644 --- a/src/experiments/nanojpeg/nanojpeg.proto +++ b/src/experiments/nanojpeg/nanojpeg.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message NanoJPEGProtoMsg { // Input: experiment parameters // (client executes one experiment for every specified bit in the target register) diff --git a/src/experiments/rampage/rampage.proto b/src/experiments/rampage/rampage.proto index 2ef68b72..df6758a2 100644 --- a/src/experiments/rampage/rampage.proto +++ b/src/experiments/rampage/rampage.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + message RAMpageProtoMsg { // Input: experiment parameters diff --git a/src/experiments/vezs-example/vezs.proto b/src/experiments/vezs-example/vezs.proto index c63ef553..c555f3d9 100644 --- a/src/experiments/vezs-example/vezs.proto +++ b/src/experiments/vezs-example/vezs.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message VEZSProtoMsg { diff --git a/src/experiments/weather-monitor/weathermonitor.proto b/src/experiments/weather-monitor/weathermonitor.proto index cd73d8a1..6c03767d 100644 --- a/src/experiments/weather-monitor/weathermonitor.proto +++ b/src/experiments/weather-monitor/weathermonitor.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + import "DatabaseCampaignMessage.proto"; message WeathermonitorProtoMsg { diff --git a/tools/import-trace/AdvancedMemoryImporter.cc b/tools/import-trace/AdvancedMemoryImporter.cc index 1a781cd1..dd0cca5a 100644 --- a/tools/import-trace/AdvancedMemoryImporter.cc +++ b/tools/import-trace/AdvancedMemoryImporter.cc @@ -104,7 +104,7 @@ bool AdvancedMemoryImporter::handle_ip_event(fail::simtime_t curtime, instructio llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); - if (error_code ec = createBinary(m_elf->getFilename(), binary)) { + if (llvm::error_code ec = createBinary(m_elf->getFilename(), binary)) { LOG << m_elf->getFilename() << "': " << ec.message() << ".\n"; return false; } diff --git a/tools/import-trace/CMakeLists.txt b/tools/import-trace/CMakeLists.txt index 9e9d3a30..0f333b5f 100644 --- a/tools/import-trace/CMakeLists.txt +++ b/tools/import-trace/CMakeLists.txt @@ -22,6 +22,13 @@ if (BUILD_LLVM_DISASSEMBLER) find_package(Boost 1.42 COMPONENTS regex REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) + + # libelf and libdwarf required by ElfImporter + find_package(LibElf REQUIRED) + find_package(LibDwarf REQUIRED) + include_directories(${LIBELF_INCLUDE_DIRS}) + include_directories(${LIBDWARF_INCLUDE_DIRS}) + endif(BUILD_LLVM_DISASSEMBLER) find_package(MySQL REQUIRED) diff --git a/tools/import-trace/InstructionImporter.cc b/tools/import-trace/InstructionImporter.cc index a5322898..9ec80d68 100644 --- a/tools/import-trace/InstructionImporter.cc +++ b/tools/import-trace/InstructionImporter.cc @@ -18,7 +18,7 @@ bool InstructionImporter::handle_ip_event(fail::simtime_t curtime, instruction_c llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); - if (error_code ec = createBinary(m_elf->getFilename(), binary)) { + if (llvm::error_code ec = createBinary(m_elf->getFilename(), binary)) { LOG << m_elf->getFilename() << "': " << ec.message() << ".\n"; return false; } diff --git a/tools/import-trace/RandomJumpImporter.cc b/tools/import-trace/RandomJumpImporter.cc index 0a7656ef..44ab597d 100644 --- a/tools/import-trace/RandomJumpImporter.cc +++ b/tools/import-trace/RandomJumpImporter.cc @@ -65,7 +65,7 @@ bool RandomJumpImporter::handle_ip_event(fail::simtime_t curtime, instruction_co llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); - if (error_code ec = createBinary(m_elf->getFilename(), binary)) { + if (llvm::error_code ec = createBinary(m_elf->getFilename(), binary)) { LOG << m_elf->getFilename() << "': " << ec.message() << ".\n"; return false; } diff --git a/tools/import-trace/RegisterImporter.cc b/tools/import-trace/RegisterImporter.cc index 0c2ad75f..71585366 100644 --- a/tools/import-trace/RegisterImporter.cc +++ b/tools/import-trace/RegisterImporter.cc @@ -133,7 +133,7 @@ bool RegisterImporter::handle_ip_event(fail::simtime_t curtime, instruction_coun llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); - if (error_code ec = createBinary(m_elf->getFilename(), binary)) { + if (llvm::error_code ec = createBinary(m_elf->getFilename(), binary)) { LOG << m_elf->getFilename() << "': " << ec.message() << ".\n"; return false; }