globally rename Fail* to FAIL*
Change-Id: Ief2cb687cc69dd92c2e04f9314f0f1347e0a84ed
This commit is contained in:
@ -15,10 +15,10 @@ SET(PROTOBUF_IMPORT_DIRS "/usr/include;${CMAKE_CURRENT_SOURCE_DIR}/core/comm"
|
||||
# is generated by CMake from config/FailConfig.hpp.in and stored in
|
||||
# your build-dir. (The same goes for "FailControlMessage.pb.h", etc.)
|
||||
# This is done in the "src"-folder because experiments need to include
|
||||
# Fail* headers as well (see hierarchy of CMakeLists.txt's).
|
||||
# FAIL* headers as well (see hierarchy of CMakeLists.txt's).
|
||||
|
||||
## Add CMakeLists from subdirectories ##
|
||||
# The Fail* core source files (and it's subdirectories):
|
||||
# The FAIL* core source files (and it's subdirectories):
|
||||
add_subdirectory(core)
|
||||
|
||||
# Here we add all user-defined experiments (which fills the target list)
|
||||
@ -39,8 +39,8 @@ endforeach(plugin_name)
|
||||
# (probably there's a smarter way to do that with cmake?)
|
||||
add_library(fail dummy.cc)
|
||||
|
||||
## Setup build dependencies of the Fail* lib
|
||||
## -> the Fail* targets and user defined experiment targets
|
||||
## Setup build dependencies of the FAIL* lib
|
||||
## -> the FAIL* targets and user defined experiment targets
|
||||
# start/end-group: ld must iterate over these archives more than once to figure
|
||||
# out which objects are needed
|
||||
set(experiment_libraries "")
|
||||
|
||||
@ -7,7 +7,7 @@ link_directories(${Boost_LIBRARY_DIRS})
|
||||
# The autogenerated header files
|
||||
add_subdirectory(config)
|
||||
|
||||
# Fail* targets
|
||||
# FAIL* targets
|
||||
add_subdirectory(comm)
|
||||
add_subdirectory(cpn)
|
||||
add_subdirectory(efw)
|
||||
|
||||
@ -53,7 +53,7 @@ public:
|
||||
* the subclasses.
|
||||
* @param trigger the triggering address of the breakpoint event
|
||||
* @param address_space the address space identifier for this event
|
||||
* @param cpu the Fail* CPU object that triggered the breakpoint
|
||||
* @param cpu the FAIL* CPU object that triggered the breakpoint
|
||||
*/
|
||||
BPEvent(address_t trigger, address_t address_space, ConcreteCPU* cpu = NULL)
|
||||
: BaseEvent(cpu), m_TriggerInstrPtr(trigger), m_AddressSpace(address_space) { }
|
||||
|
||||
@ -231,7 +231,7 @@ BP_CTOR_SCOPE:
|
||||
*/
|
||||
BPSingleListener(address_t ip = 0, address_t address_space = ANY_ADDR, ConcreteCPU* cpu = NULL)
|
||||
: BPListener(address_space, cpu), m_WatchInstrPtr(ip) { }
|
||||
public: // reset scope in order to allow compiling the various other Fail* sources
|
||||
public: // reset scope in order to allow compiling the various other FAIL* sources
|
||||
/**
|
||||
* Returns the instruction pointer this listener waits for.
|
||||
* @return the instruction pointer specified in the constructor or by
|
||||
|
||||
@ -33,7 +33,7 @@ typedef std::vector<BaseListener*> deletelist_t;
|
||||
/**
|
||||
* \class ListenerManager
|
||||
*
|
||||
* \brief This class manages the listeners of the Fail* implementation.
|
||||
* \brief This class manages the listeners of the FAIL* implementation.
|
||||
*
|
||||
* If a listener is triggered, the internal data structure will be updated (i.e.,
|
||||
* the listener will be removed from the so called buffer-list and added to the
|
||||
|
||||
@ -50,7 +50,7 @@ void SimulatorController::startup()
|
||||
std::cout << "[SimulatorController] Initializing..." << std::endl;
|
||||
// TODO: Log-Level?
|
||||
|
||||
// Set Fail* as initialized
|
||||
// Set FAIL* as initialized
|
||||
m_isInitialized = true;
|
||||
|
||||
// Activate previously added experiments to allow initialization:
|
||||
|
||||
@ -30,10 +30,10 @@ typedef ArmArchitecture Architecture;
|
||||
* simulators/gem5/src/arch/arm/miscregs.hh and
|
||||
* simulators/gem5/src/arch/arm/intregs.hh
|
||||
* which we cannot include because they are generated (probably after we need
|
||||
* them). As integer and "misc" register IDs overlap in gem5, and Fail* needs
|
||||
* them). As integer and "misc" register IDs overlap in gem5, and FAIL* needs
|
||||
* unique IDs, we split at RI_INTREGS_MAX and map to the original IDs in
|
||||
* sal/gem5/Gem5Wrapper.cc . If more ARM backends emerge, we may need to find
|
||||
* more sophisticated backend<->Fail* register ID mappings.
|
||||
* more sophisticated backend<->FAIL* register ID mappings.
|
||||
*/
|
||||
enum GPRegIndex {
|
||||
RI_R0,
|
||||
|
||||
@ -42,7 +42,7 @@ aspect BochsListener {
|
||||
bx_pc_system.register_timer(pev, fail::onTimerTrigger,
|
||||
pev->getTimeout() /*timeout in microseconds*/,
|
||||
false /*non-continuous*/,
|
||||
true /*start immediately*/, "Fail*: BochsController"/*name*/));
|
||||
true /*start immediately*/, "FAIL*: BochsController"/*name*/));
|
||||
}
|
||||
bool m_unregisterTimer(TimerListener* pev)
|
||||
{
|
||||
|
||||
@ -38,7 +38,7 @@ private:
|
||||
return static_cast<timer_id_t>(
|
||||
oocdw_register_timer(pev, fail::onTimerTrigger,
|
||||
pev->getTimeout() /*timeout in microseconds*/,
|
||||
true /*start immediately*/, "Fail*: PandaController"/*name*/));
|
||||
true /*start immediately*/, "FAIL*: PandaController"/*name*/));
|
||||
}
|
||||
bool m_unregisterTimer(TimerListener* pev)
|
||||
{
|
||||
|
||||
@ -12,7 +12,7 @@ namespace fail {
|
||||
*/
|
||||
class BlackholeLogger {
|
||||
public:
|
||||
Logger(const std::string& description = "Fail*", bool show_time = true,
|
||||
Logger(const std::string& description = "FAIL*", bool show_time = true,
|
||||
std::ostream& dest = std::cout) { }
|
||||
void setDescription(const std::string& descr) { }
|
||||
void showTime(bool choice) { }
|
||||
|
||||
@ -66,7 +66,7 @@ find_program(FAIL_OBJDUMP "${THE_OBJDUMP}" DOC "binutils object dump tool")
|
||||
if(${FAIL_OBJDUMP} STREQUAL FAIL_OBJDUMP-NOTFOUND)
|
||||
message(FATAL_ERROR "Cannot find objdump exeuctable (tried: ${THE_OBJDUMP}")
|
||||
else()
|
||||
message(STATUS "[Fail*] objdump binary -> ${FAIL_OBJDUMP}")
|
||||
message(STATUS "[FAIL*] objdump binary -> ${FAIL_OBJDUMP}")
|
||||
endif()
|
||||
mark_as_advanced(FAIL_OBJDUMP)
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ namespace fail {
|
||||
|
||||
const std::string DISASSEMBLER::FAILED = "[Disassembler] Disassemble failed.";
|
||||
|
||||
Disassembler::Disassembler() : m_log("Fail*Disassembler", false) { }
|
||||
Disassembler::Disassembler() : m_log("FAIL*Disassembler", false) { }
|
||||
|
||||
int Disassembler::init() {
|
||||
// try to open elf file from environment variable
|
||||
|
||||
@ -26,7 +26,7 @@ std::ostream& operator<< (std::ostream &out, const ElfSymbol &symbol) {
|
||||
|
||||
|
||||
|
||||
ElfReader::ElfReader() : m_log("Fail*Elfinfo", false) {
|
||||
ElfReader::ElfReader() : m_log("FAIL*Elfinfo", false) {
|
||||
// try to open elf file from environment variable
|
||||
char * elfpath = getenv("FAIL_ELF_PATH");
|
||||
if (elfpath == NULL) {
|
||||
@ -36,7 +36,7 @@ ElfReader::ElfReader() : m_log("Fail*Elfinfo", false) {
|
||||
}
|
||||
}
|
||||
|
||||
ElfReader::ElfReader(const char* path) : m_log("Fail*Elfinfo", false) {
|
||||
ElfReader::ElfReader(const char* path) : m_log("FAIL*Elfinfo", false) {
|
||||
setup(path);
|
||||
}
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ public:
|
||||
* @param show_time Show a timestamp with each log entry.
|
||||
* @param dest Stream to log into.
|
||||
*/
|
||||
Logger(const std::string& description = "Fail*", bool show_time = true,
|
||||
Logger(const std::string& description = "FAIL*", bool show_time = true,
|
||||
std::ostream& dest = std::cout)
|
||||
: m_pDest(&dest), m_description(description), m_showTime(show_time) { }
|
||||
/**
|
||||
|
||||
@ -9,7 +9,7 @@ namespace fail {
|
||||
|
||||
/**
|
||||
* Translates LLVM disassembler ids
|
||||
* to Fail* SAL representations.
|
||||
* to FAIL* SAL representations.
|
||||
*/
|
||||
class LLVMtoFailTranslator {
|
||||
public:
|
||||
@ -51,7 +51,7 @@ public:
|
||||
/**
|
||||
* Translates a backend-specific register ID to a Fail register ID.
|
||||
* @param regid A backend-specific register ID.
|
||||
* @return A Fail* register ID, or LLVMtoFailTranslator::notfound if no
|
||||
* @return A FAIL* register ID, or LLVMtoFailTranslator::notfound if no
|
||||
* mapping was found.
|
||||
*/
|
||||
const reginfo_t & getFailRegisterID(unsigned int regid);
|
||||
|
||||
@ -93,7 +93,7 @@ bool CoolChecksumExperiment::run()
|
||||
#endif
|
||||
|
||||
#elif 1
|
||||
// FIXME consider moving experiment repetition into Fail* or even the
|
||||
// FIXME consider moving experiment repetition into FAIL* or even the
|
||||
// SAL -- whether and how this is possible with the chosen backend is
|
||||
// backend specific
|
||||
for (int i = 0; i < 2000; ++i) {
|
||||
|
||||
@ -152,7 +152,7 @@ private:
|
||||
/**
|
||||
* Adds the value of the config file to the parameter list and
|
||||
* parse the parameter list. This function makes use of the
|
||||
* CommandLine Parser from the fail* framework.
|
||||
* CommandLine Parser from the FAIL* framework.
|
||||
*/
|
||||
void parseOptions(L4SysConfig&);
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ you to read this whole document before investigating further.
|
||||
\section{Overview}
|
||||
|
||||
This is the user manual of the \lfs{} generic system test framework.
|
||||
The framework builds on Fail* and provides means to perform fault injection
|
||||
The framework builds on FAIL* and provides means to perform fault injection
|
||||
experiments for applications running on top of the Fiasco.OC/L4Re
|
||||
microkernel-based operating system as well as the underlying microkernel.
|
||||
|
||||
@ -47,13 +47,13 @@ microkernel-based operating system as well as the underlying microkernel.
|
||||
\noindent \lfs{} currently works for x86/32 running in Fail/Bochs only.
|
||||
This is partly due to some issues with timing --- as soon as a valid model of
|
||||
time in the target emulator as well as an assembler/disassembler functionality
|
||||
in the Fail* framework are established, I would recommend a backend change, as
|
||||
in the FAIL* framework are established, I would recommend a backend change, as
|
||||
Bochs' reliability is very limited.
|
||||
|
||||
\section{Framework Setup}
|
||||
|
||||
To prepare a fault injection campaign you will first need to configure and
|
||||
build Fail* itself. This process is described in \texttt{doc/how-to-build.txt}.
|
||||
build FAIL* itself. This process is described in \texttt{doc/how-to-build.txt}.
|
||||
The following CMake flags need to be set:
|
||||
|
||||
\begin{itemize}[itemsep=0em]
|
||||
@ -94,7 +94,7 @@ in Bochs.
|
||||
|
||||
\section{Client Setup}
|
||||
|
||||
Now that we have Fail* and the L4Re setup running, we can prepare our fault
|
||||
Now that we have FAIL* and the L4Re setup running, we can prepare our fault
|
||||
injection campaign. This requires three (+ one optional) steps:
|
||||
\begin{enumerate}[topsep=0em,itemsep=0em]
|
||||
\item \emph{OPTIONAL:} If we want to perform a campaign that only targets
|
||||
@ -203,7 +203,7 @@ be added to specify the host name or ip addr. of the machine running
|
||||
|
||||
Each experiment client processes exactly one experiment
|
||||
and exits. To complete your campaign, you should use the \verb+client.sh+
|
||||
script in the \texttt{scripts} subdirectory of Fail*.
|
||||
script in the \texttt{scripts} subdirectory of FAIL*.
|
||||
|
||||
|
||||
\section{Get your results}
|
||||
|
||||
@ -126,7 +126,7 @@ bool NanoJPEGCampaign::run()
|
||||
// all IN registers close an equivalence class and generate experiments
|
||||
for (Udis86Helper::UDRegisterSet::const_iterator it = in_regs.begin();
|
||||
it != in_regs.end(); ++it) {
|
||||
// determine Fail* register ID and bitmask
|
||||
// determine FAIL* register ID and bitmask
|
||||
uint64_t access_mask;
|
||||
fail::GPRegisterId reg = udis_helper.udisGPRToFailBochsGPR(*it, access_mask);
|
||||
uint64_t remaining_access_mask = access_mask;
|
||||
@ -168,7 +168,7 @@ bool NanoJPEGCampaign::run()
|
||||
// special case: empty EC!
|
||||
for (Udis86Helper::UDRegisterSet::const_iterator it = out_regs.begin();
|
||||
it != out_regs.end(); ++it) {
|
||||
// determine Fail* register ID and bitmask
|
||||
// determine FAIL* register ID and bitmask
|
||||
uint64_t access_mask;
|
||||
fail::GPRegisterId reg = udis_helper.udisGPRToFailBochsGPR(*it, access_mask);
|
||||
uint64_t remaining_access_mask = access_mask;
|
||||
@ -213,7 +213,7 @@ bool NanoJPEGCampaign::run()
|
||||
// close all open ECs
|
||||
for (map<GPRegisterId, std::list<std::pair<unsigned, uint64_t> > >::iterator it = reg_cascade.begin();
|
||||
it != reg_cascade.end(); ++it) {
|
||||
// determine Fail* register ID and bitmask
|
||||
// determine FAIL* register ID and bitmask
|
||||
uint64_t access_mask = 0xffffffffULL;
|
||||
fail::GPRegisterId reg = it->first;
|
||||
uint64_t remaining_access_mask = access_mask;
|
||||
|
||||
Reference in New Issue
Block a user