X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a92d7b716f51a53dea7f59db8524d4add713b910..fbf5fafb60eb44c0c00a7283fd05a6dec5f2b58f:/src/mc/mc_unw.cpp diff --git a/src/mc/mc_unw.cpp b/src/mc/mc_unw.cpp index f172da799c..78299e3a65 100644 --- a/src/mc/mc_unw.cpp +++ b/src/mc/mc_unw.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2015. The SimGrid Team. +/* Copyright (c) 2015-2019. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -11,7 +11,7 @@ // We need this for the register indices: // #define _GNU_SOURCE -#include +#include // On x86_64, libunwind unw_context_t has the same layout as ucontext_t: #include @@ -22,9 +22,9 @@ typedef register_t greg_t; #include -#include "src/mc/Process.hpp" -#include "src/mc/mc_unw.h" #include "src/mc/Frame.hpp" +#include "src/mc/mc_unw.hpp" +#include "src/mc/remote/RemoteClient.hpp" using simgrid::mc::remote; @@ -37,9 +37,8 @@ namespace mc { * * Delegates to the local/ptrace implementation. */ -int UnwindContext::find_proc_info(unw_addr_space_t as, - unw_word_t ip, unw_proc_info_t *pip, - int need_unwind_info, void* arg) noexcept +int UnwindContext::find_proc_info(unw_addr_space_t /*as*/, unw_word_t ip, unw_proc_info_t* pip, int need_unwind_info, + void* arg) noexcept { simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*) arg; return unw_get_accessors(context->process_->unw_underlying_addr_space)->find_proc_info( @@ -52,8 +51,7 @@ int UnwindContext::find_proc_info(unw_addr_space_t as, * * Delegates to the local/ptrace implementation. */ -void UnwindContext::put_unwind_info(unw_addr_space_t as, - unw_proc_info_t *pip, void* arg) noexcept +void UnwindContext::put_unwind_info(unw_addr_space_t /*as*/, unw_proc_info_t* pip, void* arg) noexcept { simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*) arg; return unw_get_accessors(context->process_->unw_underlying_addr_space)->put_unwind_info( @@ -66,8 +64,7 @@ void UnwindContext::put_unwind_info(unw_addr_space_t as, * * Not implemented. */ -int UnwindContext::get_dyn_info_list_addr(unw_addr_space_t as, - unw_word_t *dilap, void* arg) noexcept +int UnwindContext::get_dyn_info_list_addr(unw_addr_space_t /*as*/, unw_word_t* dilap, void* arg) noexcept { simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*) arg; return unw_get_accessors(context->process_->unw_underlying_addr_space)->get_dyn_info_list_addr( @@ -81,9 +78,7 @@ int UnwindContext::get_dyn_info_list_addr(unw_addr_space_t as, * * Delegates to the `simgrid::mc::Process*`. */ -int UnwindContext::access_mem(unw_addr_space_t as, - unw_word_t addr, unw_word_t *valp, - int write, void* arg) noexcept +int UnwindContext::access_mem(unw_addr_space_t /*as*/, unw_word_t addr, unw_word_t* valp, int write, void* arg) noexcept { simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*) arg; if (write) @@ -145,9 +140,8 @@ void* UnwindContext::get_reg(unw_context_t* context, unw_regnum_t regnum) noexce /** Read a standard register (libunwind method) */ -int UnwindContext::access_reg(unw_addr_space_t as, - unw_regnum_t regnum, unw_word_t *valp, - int write, void* arg) noexcept +int UnwindContext::access_reg(unw_addr_space_t /*as*/, unw_regnum_t regnum, unw_word_t* valp, int write, + void* arg) noexcept { simgrid::mc::UnwindContext* as_context = (simgrid::mc::UnwindContext*) arg; unw_context_t* context = &as_context->unwindContext_; @@ -166,9 +160,8 @@ int UnwindContext::access_reg(unw_addr_space_t as, * `getcontext()` is not relevant for the caller. It is not really necessary * to save and handle them. */ -int UnwindContext::access_fpreg(unw_addr_space_t as, - unw_regnum_t regnum, unw_fpreg_t *fpvalp, - int write, void* arg) noexcept +int UnwindContext::access_fpreg(unw_addr_space_t /*as*/, unw_regnum_t /*regnum*/, unw_fpreg_t* /*fpvalp*/, + int /*write*/, void* /*arg*/) noexcept { return -UNW_EBADREG; } @@ -177,18 +170,15 @@ int UnwindContext::access_fpreg(unw_addr_space_t as, * * We don't use this. */ -int UnwindContext::resume(unw_addr_space_t as, - unw_cursor_t *cp, void* arg) noexcept +int UnwindContext::resume(unw_addr_space_t /*as*/, unw_cursor_t* /*cp*/, void* /*arg*/) noexcept { return -UNW_EUNSPEC; } /** Find informations about a function (libunwind method) */ -int UnwindContext::get_proc_name(unw_addr_space_t as, - unw_word_t addr, char *bufp, - size_t buf_len, unw_word_t *offp, - void* arg) noexcept +int UnwindContext::get_proc_name(unw_addr_space_t /*as*/, unw_word_t addr, char* bufp, size_t buf_len, unw_word_t* offp, + void* arg) noexcept { simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*) arg; simgrid::mc::Frame* frame = context->process_->find_function(remote(addr)); @@ -236,7 +226,7 @@ void UnwindContext::clear() process_ = nullptr; } -void UnwindContext::initialize(simgrid::mc::Process* process, unw_context_t* c) +void UnwindContext::initialize(simgrid::mc::RemoteClient* process, unw_context_t* c) { clear(); @@ -251,15 +241,12 @@ void UnwindContext::initialize(simgrid::mc::Process* process, unw_context_t* c) // We don't really need support for FR registers as they are caller saved // and probably never use those fields as libunwind-x86_64 does not read // FP registers from the unw_context_t - // but we fix the pointer in order to avoid dangling pointers: - // context->context_.uc_mcontext.fpregs = &(context->context.__fpregs_mem); - // Let's ignore this and see what happens: this->unwindContext_.uc_mcontext.fpregs = nullptr; # endif #else // Do we need to do any fixup like this? - #error Target CPU type is not handled. +# error Target CPU type is not handled. #endif }