[nemiver/follow-fork-mode: 1/35] Add disassembling backend support
- From: Dodji Seketeli <dodji src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nemiver/follow-fork-mode: 1/35] Add disassembling backend support
- Date: Thu, 6 May 2010 10:16:10 +0000 (UTC)
commit 52b9930ebb3d06663041206142293a080350dbf4
Author: Dodji Seketeli <dodji redhat com>
Date: Sun Sep 20 17:22:57 2009 +0200
Add disassembling backend support
* src/common/nmv-ustring.h,cc (UString::hexa_to_int): New entry point.
* src/dbgengine/nmv-dbg-common.h: Make ResultRecord carry
assembly instructions list.
* src/dbgengine/nmv-gdbmi-parser.cc,h:
(operator<<): New streaming operator for IDebugger::AsmInstr.
(GDBMIParser::parse_asm_instruction_list): New function.
(GDBMIParser::parse_result_record ): Parse asm instruction lists.
* src/dbgengine/nmv-gdb-engine.[cc|h],nmv-i-debugger.h:
(IDebugger::disassemble,
Added IDebugger::instructions_disassembled_signal): New entry points.
Wrote a first implementation for these, based on the new
GDB/MI parsing code that handles instruction disassembling.
Added new types IDebugger::AsmInstr and IDebugger::DisassembleInfo.
* tests/test-gdbmi.cc (test_disassemble): New test.
(test_file_list): Add test_disassemble to the list of tests.
* tests/Makefile.am,tests/test-disassemble.cc: added a new
regression test for the disassembling stuff. This does IDebugger
to debug a program and tries to disassemble parts of it.
* tests/test-disassemble.cc: New test file.
* tests/Makefile.am: Add new test above to the build system.
src/common/nmv-ustring.cc | 6 ++
src/common/nmv-ustring.h | 1 +
src/dbgengine/nmv-dbg-common.h | 31 +++++++
src/dbgengine/nmv-gdb-engine.cc | 134 +++++++++++++++++++++++++++
src/dbgengine/nmv-gdb-engine.h | 15 +++
src/dbgengine/nmv-gdbmi-parser.cc | 142 +++++++++++++++++++++++++++++
src/dbgengine/nmv-gdbmi-parser.h | 10 ++
src/dbgengine/nmv-i-debugger.h | 98 ++++++++++++++++++++
tests/Makefile.am | 7 ++-
tests/test-disassemble.cc | 180 +++++++++++++++++++++++++++++++++++++
tests/test-gdbmi.cc | 39 ++++++++
11 files changed, 662 insertions(+), 1 deletions(-)
---
diff --git a/src/common/nmv-ustring.cc b/src/common/nmv-ustring.cc
index cfc1cc4..8be7e7b 100644
--- a/src/common/nmv-ustring.cc
+++ b/src/common/nmv-ustring.cc
@@ -60,6 +60,12 @@ UString::from_int (long long an_int)
return str;
}
+size_t
+UString::hexa_to_int (const string &a_hexa_str)
+{
+ return strtoll (a_hexa_str.c_str (), NULL, 16);
+}
+
UString::UString ()
{
}
diff --git a/src/common/nmv-ustring.h b/src/common/nmv-ustring.h
index 36349c1..3a2acde 100644
--- a/src/common/nmv-ustring.h
+++ b/src/common/nmv-ustring.h
@@ -55,6 +55,7 @@ public:
virtual ~UString ();
UString& set (const gchar* a_buf, gulong a_len);
static UString from_int (long long an_int);
+ static size_t hexa_to_int (const string &a_hexa_str);
bool is_integer () const;
UString& append_int (long long an_int);
UString& assign_int (long long);
diff --git a/src/dbgengine/nmv-dbg-common.h b/src/dbgengine/nmv-dbg-common.h
index ad84589..ce8d45a 100644
--- a/src/dbgengine/nmv-dbg-common.h
+++ b/src/dbgengine/nmv-dbg-common.h
@@ -36,6 +36,8 @@ class Command {
UString m_tag0;
UString m_tag1;
int m_tag2;
+ UString m_tag3;
+ UString m_tag4;
IDebugger::VariableSafePtr m_var;
sigc::slot_base m_slot;
@@ -97,6 +99,12 @@ public:
int tag2 () const {return m_tag2;}
void tag2 (int a_in) {m_tag2 = a_in;}
+ const UString& tag3 () const {return m_tag3;}
+ void tag3 (const UString &a_in) {m_tag3 = a_in;}
+
+ const UString& tag4 () const {return m_tag4;}
+ void tag4 (const UString &a_in) {m_tag4 = a_in;}
+
void variable (const IDebugger::VariableSafePtr a_in) {m_var = a_in;}
IDebugger::VariableSafePtr variable () const {return m_var;}
@@ -125,6 +133,9 @@ public:
m_value.clear ();
m_tag0.clear ();
m_tag1.clear ();
+ m_tag2 = 0;
+ m_tag3.clear ();
+ m_tag4.clear ();
}
};//end class Command
@@ -394,6 +405,10 @@ public:
size_t m_memory_address;
bool m_has_memory_values;
+ // asm instruction list
+ std::list<IDebugger::AsmInstr> m_asm_instrs;
+ bool m_has_asm_instrs;
+
// Variable Object
IDebugger::VariableSafePtr m_variable;
bool m_has_variable;
@@ -448,6 +463,8 @@ public:
m_memory_values.clear ();
m_memory_address = 0;
m_has_memory_values = false;
+ m_asm_instrs.clear ();
+ m_has_asm_instrs = false;
m_has_variable = false;
m_nb_variable_deleted = 0;
m_has_variable_children = false;
@@ -537,6 +554,20 @@ public:
has_memory_values (true);
}
+ bool has_asm_instruction_list () const {return m_has_asm_instrs;}
+ void has_asm_instruction_list (bool a) {m_has_asm_instrs = a;}
+
+ const std::list<IDebugger::AsmInstr>& asm_instruction_list () const
+ {
+ return m_asm_instrs;
+ }
+ void asm_instruction_list
+ (const std::list<IDebugger::AsmInstr> &a_asms)
+ {
+ m_asm_instrs = a_asms;
+ m_has_asm_instrs = true;
+ }
+
const map<int, list<IDebugger::VariableSafePtr> >&
frames_parameters () const
{
diff --git a/src/dbgengine/nmv-gdb-engine.cc b/src/dbgengine/nmv-gdb-engine.cc
index e2de66a..5a16c7e 100644
--- a/src/dbgengine/nmv-gdb-engine.cc
+++ b/src/dbgengine/nmv-gdb-engine.cc
@@ -268,6 +268,11 @@ public:
const UString& >
set_memory_signal;
+ mutable sigc::signal<void,
+ IDebugger::DisassembleInfo&,
+ const std::list<IDebugger::AsmInstr>&,
+ const UString& /*cookie*/> instructions_disassembled_signal;
+
mutable sigc::signal<void, const VariableSafePtr, const UString&>
variable_created_signal;
@@ -2284,6 +2289,56 @@ struct OnErrorHandler : OutputHandler {
}
};//struct OnErrorHandler
+struct OnDisassembleHandler : OutputHandler {
+
+ GDBEngine *m_engine;
+
+ OnDisassembleHandler (GDBEngine *a_engine) :
+ m_engine (a_engine)
+ {}
+
+ bool can_handle (CommandAndOutput &a_in)
+ {
+ if (!a_in.command ().name ().raw ().compare (0,
+ strlen ("disassemble"),
+ "disassemble")
+ && a_in.output ().has_result_record ()
+ && a_in.output ().result_record ().has_asm_instruction_list ()) {
+ LOG_DD ("handler selected");
+ return true;
+ }
+ return false;
+ }
+
+ void do_handle (CommandAndOutput &a_in)
+ {
+ LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+ THROW_IF_FAIL (m_engine);
+
+ const std::list<IDebugger::AsmInstr>& instrs =
+ a_in.output ().result_record ().asm_instruction_list ();
+ IDebugger::DisassembleInfo info;
+
+ if (a_in.command ().name () == "disassemble-line-range-in-file") {
+ info.file_name (a_in.command ().tag0 ());
+ }
+ if (!instrs.empty ()) {
+ std::list<IDebugger::AsmInstr>::const_iterator it =
+ instrs.begin ();
+ info.start_address (it->address ());
+ it = instrs.end ();
+ it--;
+ info.end_address (it->address ());
+ }
+ m_engine->instructions_disassembled_signal ().emit
+ (info, instrs, a_in.command ().cookie ());
+
+ m_engine->set_state (IDebugger::READY);
+ }
+};//struct OnDisassembleHandler
+
+
struct OnCreateVariableHandler : public OutputHandler
{
GDBEngine *m_engine;
@@ -2802,6 +2857,8 @@ GDBEngine::init_output_handlers ()
(OutputHandlerSafePtr (new OnSignalReceivedHandler (this)));
m_priv->output_handler_list.add
(OutputHandlerSafePtr (new OnErrorHandler (this)));
+ m_priv->output_handler_list.add
+ (OutputHandlerSafePtr (new OnDisassembleHandler (this)));
m_priv->output_handler_list.add
(OutputHandlerSafePtr (new OnThreadListHandler (this)));
m_priv->output_handler_list.add
@@ -3076,6 +3133,16 @@ GDBEngine::program_finished_signal () const
return m_priv->program_finished_signal;
}
+sigc::signal<void,
+ IDebugger::DisassembleInfo&,
+ const std::list<IDebugger::AsmInstr>&,
+ const UString& /*cookie*/>&
+GDBEngine::instructions_disassembled_signal () const
+ {
+ THROW_IF_FAIL (m_priv);
+ return m_priv->instructions_disassembled_signal;
+ }
+
sigc::signal<void, IDebugger::State>&
GDBEngine::state_changed_signal () const
{
@@ -4326,6 +4393,73 @@ GDBEngine::set_memory (size_t a_addr,
}
void
+GDBEngine::disassemble (size_t a_start_addr,
+ size_t a_end_addr,
+ bool a_start_addr_relative_to_pc,
+ bool a_end_addr_relative_to_pc,
+ const UString &a_cookie)
+{
+ LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+ UString cmd_str;
+
+ // <build the command string>
+ cmd_str = "-data-disassemble";
+ if (a_start_addr_relative_to_pc) {
+ cmd_str += " -s \"$pc";
+ if (a_start_addr) {
+ cmd_str += " + " + UString::from_int (a_start_addr);
+ }
+ cmd_str += "\"";
+ } else {
+ cmd_str += " -s " + UString::from_int (a_start_addr);
+ }
+
+ if (a_end_addr_relative_to_pc) {
+ cmd_str += " -e \"$pc";
+ if (a_end_addr) {
+ cmd_str += " + " + UString::from_int (a_end_addr);
+ }
+ cmd_str += "\"";
+ } else {
+ cmd_str += " e " + UString::from_int (a_end_addr);
+ }
+ cmd_str += " -- 0";
+
+ // </build the command string>
+
+ LOG_DD ("cmd_str: " << cmd_str);
+
+ Command command ("disassemble-address-range", cmd_str, a_cookie);
+ queue_command (command);
+}
+
+void
+GDBEngine::disassemble (const UString &a_file_name,
+ int a_line_num,
+ int a_nb_disassembled_lines,
+ const UString &a_cookie)
+{
+ LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+ UString cmd_str = "-data-disassemble";
+
+ cmd_str += " -f " + a_file_name + " -l "
+ + UString::from_int (a_line_num);
+ if (a_nb_disassembled_lines) {
+ cmd_str += " -n " + UString::from_int (a_nb_disassembled_lines);
+ }
+ cmd_str += " -- 0";
+
+ LOG_DD ("cmd_str: " << cmd_str);
+
+ Command command ("disassemble-line-range-in-file", cmd_str, a_cookie);
+ command.tag0 (a_file_name);
+ command.tag1 (UString::from_int (a_line_num));
+ queue_command (command);
+}
+
+void
null_const_variable_slot (const IDebugger::VariableSafePtr &)
{
}
diff --git a/src/dbgengine/nmv-gdb-engine.h b/src/dbgengine/nmv-gdb-engine.h
index 14f7154..9dd6580 100644
--- a/src/dbgengine/nmv-gdb-engine.h
+++ b/src/dbgengine/nmv-gdb-engine.h
@@ -174,6 +174,11 @@ public:
read_memory_signal () const;
sigc::signal <void, size_t, const std::vector<uint8_t>&, const UString& >&
set_memory_signal () const;
+ sigc::signal<void,
+ IDebugger::DisassembleInfo&,
+ const std::list<IDebugger::AsmInstr>&,
+ const UString& /*cookie*/>&
+ instructions_disassembled_signal () const;
sigc::signal<void, const VariableSafePtr, const UString&>&
variable_created_signal () const;
@@ -442,6 +447,16 @@ public:
const std::vector<uint8_t>& a_bytes,
const UString& a_cookie);
+ void disassemble (size_t a_start_addr,
+ size_t a_end_addr,
+ bool a_start_addr_relative_to_pc,
+ bool a_end_addr_relative_to_pc,
+ const UString &a_cookie);
+ void disassemble (const UString &a_file_name,
+ int a_line_num,
+ int a_nb_disassembled_lines,
+ const UString &a_cookie);
+
void create_variable (const UString &a_name,
const UString &a_cookie="");
void create_variable (const UString &a_name,
diff --git a/src/dbgengine/nmv-gdbmi-parser.cc b/src/dbgengine/nmv-gdbmi-parser.cc
index 788bbda..6002c6f 100644
--- a/src/dbgengine/nmv-gdbmi-parser.cc
+++ b/src/dbgengine/nmv-gdbmi-parser.cc
@@ -190,6 +190,20 @@ const char* PREFIX_VARIABLES_CHANGED_LIST = "changelist=[";
const char* CHANGELIST = "changelist";
const char* PREFIX_PATH_EXPR = "path_expr=";
const char* PATH_EXPR = "path_expr";
+static const char* PREFIX_ASM_INSTRUCTIONS= "asm_insns=";
+
+std::ostream&
+operator<< (std::ostream &a_out, const IDebugger::AsmInstr &a_instr)
+{
+ a_out << "<asm-instr>\n"
+ << " <addr>" << a_instr.address () << "</addr>\n"
+ << " <function-name>" << a_instr.function () << "</function-name>\n"
+ << " <offset>" << a_instr.offset () << "</offset>\n"
+ << " <instr>" << a_instr.instruction () << "</instr>\n"
+ << "</asm-instr>\n";
+ return a_out;
+}
+
static bool
is_string_start (gunichar a_c)
@@ -1900,6 +1914,17 @@ fetch_gdbmi_result:
result_record.memory_values (addr, values);
}
} else if (!RAW_INPUT.compare (cur,
+ strlen (PREFIX_ASM_INSTRUCTIONS),
+ PREFIX_ASM_INSTRUCTIONS)) {
+ std::list<IDebugger::AsmInstr> asm_instr_list;
+ if (!parse_asm_instruction_list (cur, cur,
+ asm_instr_list)) {
+ LOG_PARSING_ERROR2 (cur);
+ } else {
+ LOG_D ("parsed asm instruction list", GDBMI_PARSING_DOMAIN);
+ result_record.asm_instruction_list (asm_instr_list);
+ }
+ } else if (!RAW_INPUT.compare (cur,
strlen (PREFIX_NAME),
PREFIX_NAME)) {
IDebugger::VariableSafePtr var;
@@ -3913,6 +3938,122 @@ GDBMIParser::parse_memory_values (UString::size_type a_from,
}
bool
+GDBMIParser::parse_asm_instruction_list
+ (UString::size_type a_from,
+ UString::size_type &a_to,
+ std::list<IDebugger::AsmInstr> &a_asm_instrs)
+{
+ LOG_FUNCTION_SCOPE_NORMAL_D (GDBMI_PARSING_DOMAIN);
+ UString::size_type cur = a_from;
+
+#define ERROR_OUT \
+do { \
+a_asm_instrs.clear (); \
+return false; \
+} while (false)
+
+ if (RAW_INPUT.compare (cur,
+ strlen (PREFIX_ASM_INSTRUCTIONS),
+ PREFIX_ASM_INSTRUCTIONS)) {
+ LOG_PARSING_ERROR2 (cur);
+ return false;
+ }
+
+ cur += strlen (PREFIX_ASM_INSTRUCTIONS);
+ if (RAW_CHAR_AT (cur) != '[') {
+ LOG_PARSING_ERROR2 (cur);
+ return false;
+ }
+
+ // A GDB/MI list of asm instruction descriptors
+ GDBMIListSafePtr gdbmi_list;
+ if (!parse_gdbmi_list (cur, cur, gdbmi_list)) {
+ LOG_PARSING_ERROR2 (cur);
+ return false;
+ }
+ if (gdbmi_list->content_type () != GDBMIList::VALUE_TYPE) {
+ LOG_PARSING_ERROR2 (cur);
+ return false;
+ }
+ std::list<GDBMIValueSafePtr> vals;
+ gdbmi_list->get_value_content (vals);
+ std::list<GDBMIValueSafePtr>::const_iterator val_iter;
+ string addr, func_name, instr;
+ int offset = 0;
+ IDebugger::AsmInstr asm_instr;
+ // Loop over the tuples contained in gdbmi_list.
+ // Each tuple represents an asm instruction descriptor that has four
+ // fields: 1/the address of the instruction, 2/ name of the function
+ // the instruction is located in, 3/the offset of the instruction
+ // inside the function, 4/a string representing the asm intruction.
+ for (val_iter = vals.begin (); val_iter != vals.end (); ++val_iter) {
+ if ((*val_iter)->content_type () != GDBMIValue::TUPLE_TYPE) {
+ LOG_PARSING_ERROR2 (cur);
+ ERROR_OUT;
+ }
+ GDBMITupleSafePtr tuple = (*val_iter)->get_tuple_content ();
+ THROW_IF_FAIL (tuple);
+ std::list<GDBMIResultSafePtr> result_list = tuple->content ();
+ if (result_list.size () != 4) {
+ // each tuple should have 'address', 'func-name"', 'offset',
+ // and 'inst' fields.
+ LOG_PARSING_ERROR2 (cur);
+ ERROR_OUT;
+ }
+ std::list<GDBMIResultSafePtr>::const_iterator res_iter =
+ result_list.begin ();
+ // get address field
+ GDBMIValueSafePtr val = (*res_iter)->value ();
+ if ((*res_iter)->variable () != "address"
+ || val->content_type () != GDBMIValue::STRING_TYPE) {
+ LOG_PARSING_ERROR2 (cur);
+ ERROR_OUT;
+ }
+ addr = val->get_string_content ();
+ LOG_DD ("addr: " << addr);
+
+ // get func-name field
+ ++res_iter;
+ val = (*res_iter)->value ();
+ if ((*res_iter)->variable () != "func-name"
+ || val->content_type () != GDBMIValue::STRING_TYPE) {
+ LOG_PARSING_ERROR2 (cur);
+ ERROR_OUT;
+ }
+ func_name = val->get_string_content ();
+ LOG_DD ("func-name: " << func_name);
+
+ // get offset field
+ ++res_iter;
+ val = (*res_iter)->value ();
+ if ((*res_iter)->variable () != "offset"
+ || val->content_type () != GDBMIValue::STRING_TYPE) {
+ LOG_PARSING_ERROR2 (cur);
+ ERROR_OUT;
+ }
+ offset = atoi (val->get_string_content ().c_str ());
+ LOG_DD ("offset: " << (int) offset);
+
+ // get instr field
+ ++res_iter;
+ val = (*res_iter)->value ();
+ if ((*res_iter)->variable () != "inst"
+ || val->content_type () != GDBMIValue::STRING_TYPE) {
+ LOG_PARSING_ERROR2 (cur);
+ ERROR_OUT;
+ }
+ instr = val->get_string_content ();
+ LOG_DD ("instr: " << instr);
+ asm_instr = IDebugger::AsmInstr (UString::hexa_to_int (addr),
+ func_name, offset, instr);
+ a_asm_instrs.push_back (asm_instr);
+ }
+ a_to = cur;
+ return true;
+}
+
+
+bool
GDBMIParser::parse_variable (UString::size_type a_from,
UString::size_type &a_to,
IDebugger::VariableSafePtr &a_var)
@@ -3991,6 +4132,7 @@ GDBMIParser::parse_overloads_choice_prompt
if (RAW_CHAR_AT (cur) != '[') {
LOG_PARSING_ERROR2 (cur);
+ return false;
}
c = RAW_CHAR_AT (cur);
diff --git a/src/dbgengine/nmv-gdbmi-parser.h b/src/dbgengine/nmv-gdbmi-parser.h
index 03cb3db..1b60620 100644
--- a/src/dbgengine/nmv-gdbmi-parser.h
+++ b/src/dbgengine/nmv-gdbmi-parser.h
@@ -302,6 +302,10 @@ operator<< (ostream &a_out, const GDBMIValueSafePtr &a_val);
std::ostream&
operator<< (std::ostream &a_out, const IDebugger::Variable &a_var);
+std::ostream&
+operator<< (std::ostream &a_out, const IDebugger::AsmInstr &a_inst);
+
+
//******************************************
//</gdbmi datastructure streaming operators>
//******************************************
@@ -604,6 +608,12 @@ public:
size_t& a_start_addr,
std::vector<uint8_t> &a_values);
+ /// parse an asm instruction description as returned
+ /// by GDB/MI
+ bool parse_asm_instruction_list (UString::size_type a_from,
+ UString::size_type &a_to,
+ std::list<IDebugger::AsmInstr> &a_asm);
+
bool parse_variable (UString::size_type a_from,
UString::size_type &a_to,
IDebugger::VariableSafePtr &a_var);
diff --git a/src/dbgengine/nmv-i-debugger.h b/src/dbgengine/nmv-i-debugger.h
index dab0164..9b40c5d 100644
--- a/src/dbgengine/nmv-i-debugger.h
+++ b/src/dbgengine/nmv-i-debugger.h
@@ -767,6 +767,83 @@ public:
SIGNAL_RECEIVED
};//end enum StopReason
+ /// Assembly instruction type
+ /// It carries the address of the instruction,
+ /// the function the instruction is from, offset of the instruction
+ /// starting from the beginning of the function, and the instruction
+ /// itself, represented by a string.
+ class AsmInstr {
+ size_t m_address;
+ string m_func;
+ int m_offset;
+ string m_instr;
+
+ public:
+ explicit AsmInstr ():
+ m_address (0),
+ m_offset (0)
+ {
+ }
+
+ AsmInstr (size_t a_address,
+ string &a_func,
+ int a_offset,
+ string &a_instr):
+ m_address (a_address),
+ m_func (a_func),
+ m_offset (a_offset),
+ m_instr (a_instr)
+ {
+ }
+
+ virtual ~AsmInstr ()
+ {
+ }
+
+ size_t address () const {return m_address;}
+ void address (size_t a) {m_address = a;}
+
+ const string& function () const {return m_func;}
+ void function (const string &a_str) {m_func = a_str;}
+
+ int offset () const {return m_offset;}
+ void offset (int a_o) {m_offset = a_o;}
+
+ const string& instruction () const {return m_instr;}
+ void instruction (const string &a_instr) {m_instr = a_instr;}
+ };//end class AsmInstr
+
+ class DisassembleInfo {
+ // no need of copy constructor yet,
+ // as we don't have any pointer member.
+ UString m_function_name;
+ UString m_file_name;
+ size_t m_start_address;
+ size_t m_end_address;
+
+ public:
+ DisassembleInfo () :
+ m_start_address (0),
+ m_end_address (0)
+ {
+ }
+ ~DisassembleInfo ()
+ {
+ }
+
+ const UString& function_name () const {return m_function_name;}
+ void function_name (const UString &a_name) {m_function_name = a_name;}
+
+ const UString& file_name () const {return m_file_name;}
+ void file_name (const UString &a_name) {m_file_name = a_name;}
+
+ size_t start_address () const {return m_start_address;}
+ void start_address (size_t a) {m_start_address = a;}
+
+ size_t end_address () const {return m_end_address;}
+ void end_address (size_t a) {m_end_address = a;}
+ };// end class DisassembleInfo
+
virtual ~IDebugger () {}
/// \name events you can connect to.
@@ -950,6 +1027,16 @@ public:
const UString& >&
set_memory_signal () const = 0;
+ // TODO: export informations about what file is being disassembled,
+ // what function, which line (if possible) etc.
+ // So that the code receiving the signal can adjust accordingly,
+ // without having to fidle with
+ virtual sigc::signal<void,
+ IDebugger::DisassembleInfo&,
+ const std::list<IDebugger::AsmInstr>&,
+ const UString& /*cookie*/>&
+ instructions_disassembled_signal () const = 0;
+
virtual sigc::signal<void, const VariableSafePtr, const UString&>&
variable_created_signal () const = 0;
@@ -1162,6 +1249,17 @@ public:
const std::vector<uint8_t>& a_bytes,
const UString& a_cookie="") = 0;
+ virtual void disassemble (size_t a_start_addr,
+ size_t a_end_addr,
+ bool a_start_addr_relative_to_pc = false,
+ bool a_end_addr_relative_to_pc = false,
+ const UString &a_cookie = "") = 0;
+
+ virtual void disassemble (const UString &a_file_name,
+ int a_line_num,
+ int a_nb_disassembled_lines,
+ const UString &a_cookie = "") = 0;
+
typedef sigc::slot<void, const VariableSafePtr> ConstVariableSlot;
typedef sigc::slot<void, const VariableList> ConstVariableListSlot;
typedef sigc::slot<void, const UString&> ConstUStringSlot;
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 35caf7a..37fcdaf 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -12,7 +12,7 @@ runtestwatchpoint runtestderef \
runtestlocalvarslist runtestcpplexer \
runtestcppparser runtestvarpathexpr \
runtestlibtoolwrapperdetection \
-runtestenv runtesttypes
+runtestenv runtesttypes runtestdisassemble
else
@@ -129,6 +129,11 @@ runtesttypes_LDADD= NEMIVERCOMMON_LIBS@ \
@BOOST_UNIT_TEST_FRAMEWORK_STATIC_LIB@ \
$(top_builddir)/src/common/libnemivercommon.la
+runtestdisassemble_SOURCES=test-disassemble.cc
+runtestdisassemble_LDADD= NEMIVERCOMMON_LIBS@ \
+ BOOST_TEST_EXEC_MONITOR_LIB@ \
+$(top_builddir)/src/common/libnemivercommon.la
+
docore_SOURCES=do-core.cc
docore_LDADD= NEMIVERCOMMON_LIBS@
diff --git a/tests/test-disassemble.cc b/tests/test-disassemble.cc
new file mode 100644
index 0000000..98d78fa
--- /dev/null
+++ b/tests/test-disassemble.cc
@@ -0,0 +1,180 @@
+// Author: Dodji Seketeli
+/*
+ *This file is part of the Nemiver project
+ *
+ *Nemiver is free software; you can redistribute
+ *it and/or modify it under the terms of
+ *the GNU General Public License as published by the
+ *Free Software Foundation; either version 2,
+ *or (at your option) any later version.
+ *
+ *Nemiver is distributed in the hope that it will
+ *be useful, but WITHOUT ANY WARRANTY;
+ *without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *See the GNU General Public License for more details.
+ *
+ *You should have received a copy of the
+ *GNU General Public License along with Nemiver;
+ *see the file COPYING.
+ *If not, write to the Free Software Foundation,
+ *Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *See COPYRIGHT file copyright information.
+ */
+
+#include <iostream>
+#include <iomanip>
+#include <boost/test/test_tools.hpp>
+#include <boost/test/minimal.hpp>
+#include <glibmm.h>
+#include "common/nmv-initializer.h"
+#include "common/nmv-safe-ptr-utils.h"
+#include "nmv-i-debugger.h"
+#include "nmv-dbg-common.h"
+
+using namespace nemiver;
+using namespace nemiver::common;
+using namespace std;
+
+Glib::RefPtr<Glib::MainLoop> loop =
+ Glib::MainLoop::create (Glib::MainContext::get_default ()) ;
+IDebuggerSafePtr debugger;
+
+static const char *PROG_TO_DEBUG = "./fooprog";
+static const char *DISASSEMBLE_COOKIE_1 =
+ "disassemble-20-instructions-after-pc";
+static const char *DISASSEMBLE_COOKIE_2 = "disassemble-20-lines-in-main";
+static bool seen_disassemble_cookie_1;
+static bool seen_disassemble_cookie_2;
+
+void
+on_engine_died_signal ()
+{
+ loop->quit ();
+ BOOST_FAIL ("engine died");
+}
+
+void
+on_program_finished_signal ()
+{
+ MESSAGE ("program finished");
+ loop->quit ();
+ BOOST_REQUIRE_MESSAGE (seen_disassemble_cookie_1,
+ "seen_disassemble_cookie_1"
+ << seen_disassemble_cookie_1);
+ BOOST_REQUIRE_MESSAGE (seen_disassemble_cookie_2,
+ "seen_disassemble_cookie_2"
+ << seen_disassemble_cookie_2);
+}
+
+void
+on_stopped_signal (IDebugger::StopReason a_reason,
+ bool a_has_frame,
+ const IDebugger::Frame &a_frame,
+ int /*a_thread_id*/,
+ int /*a_bp_num*/,
+ const UString &/*a_cookie*/)
+{
+ MESSAGE ("stopped, reason is: " << a_reason);
+ if (a_reason != IDebugger::BREAKPOINT_HIT)
+ return;
+ BOOST_REQUIRE (a_has_frame);
+
+ MESSAGE ("current frame: '" << a_frame.function_name ().raw () << "'");
+
+ if (a_frame.function_name () != "main")
+ return;
+
+ BOOST_REQUIRE (debugger);
+
+ debugger->disassemble (0, 20, true, true, DISASSEMBLE_COOKIE_1);
+ debugger->disassemble (a_frame.file_name (), a_frame.line (),
+ 20, DISASSEMBLE_COOKIE_2);
+ debugger->do_continue ();
+}
+
+typedef list<IDebugger::AsmInstr> AsmInstrs;
+
+void
+on_instructions_disassembled_signal (IDebugger::DisassembleInfo &/*a_info*/,
+ const AsmInstrs &a_instrs,
+ const UString &a_cookie)
+{
+ if (a_cookie == DISASSEMBLE_COOKIE_1)
+ seen_disassemble_cookie_1 = true;
+ if (a_cookie == DISASSEMBLE_COOKIE_2)
+ seen_disassemble_cookie_2 = true;
+
+ cout << "<AssemblyInstructionList nb='" << a_instrs.size ()
+ << "'>" << endl;
+ for (AsmInstrs::const_iterator it = a_instrs.begin ();
+ it != a_instrs.end ();
+ ++it) {
+ cout << " <instruction>" << endl;
+ cout << " @" << setbase (16) << it->address ()
+ << setbase (10) << endl;
+ cout << " func: " << it->function () << endl;
+ cout << " offset: " << it->offset () << endl;
+ cout << " instr: " << it->instruction () << endl;
+ cout << " </instruction>\n";
+ }
+ cout << "</AssemblyInstructionList>" << endl;
+}
+
+NEMIVER_API int
+test_main (int, char**)
+{
+ NEMIVER_TRY
+
+ Initializer::do_init ();
+
+ THROW_IF_FAIL (loop);
+
+ DynamicModuleManager module_manager;
+ debugger = module_manager.load_iface<IDebugger> ("gdbengine",
+ "IDebugger");
+
+ debugger->set_event_loop_context (loop->get_context ());
+
+ //*****************************
+ //<connect to IDebugger events>
+ //*****************************
+
+ debugger->engine_died_signal ().connect (&on_engine_died_signal);
+ debugger->program_finished_signal ().connect
+ (&on_program_finished_signal);
+ debugger->stopped_signal ().connect (&on_stopped_signal);
+ debugger->instructions_disassembled_signal ().connect
+ (&on_instructions_disassembled_signal);
+
+ //*****************************
+ //</connect to IDebugger events>
+ //*****************************
+
+ vector<UString> args, source_search_dir;
+ source_search_dir.push_back (".");
+
+ // load the program to debug.
+ debugger->load_program (PROG_TO_DEBUG, args, ".", source_search_dir);
+
+ // set a breakpoint in the main function.
+ debugger->set_breakpoint ("main");
+
+ // run the debugger. This will not take action until we run the
+ // even loop.
+ debugger->run ();
+
+ // run the even loop. This runs for ever, until someone from within
+ // the loop calls loop->quit (); In which case the call returns.
+ loop->run ();
+
+ NEMIVER_CATCH_AND_RETURN_NOX (-1);
+
+ debugger.reset ();
+ loop.reset ();
+
+ return 0;
+}
+
+
diff --git a/tests/test-gdbmi.cc b/tests/test-gdbmi.cc
index 16ba020..a9d738f 100644
--- a/tests/test-gdbmi.cc
+++ b/tests/test-gdbmi.cc
@@ -1,3 +1,4 @@
+#include <iostream>
#include <list>
#include <map>
#include <boost/test/unit_test.hpp>
@@ -158,6 +159,12 @@ static const char* gv_breakpoint1 =
static const char* gv_breakpoint2 =
"bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"/home/philip/nemiver:temp/main.cpp:78\",times=\"0\",original-location=\"/home/philip/nemiver:temp/main.cpp:78\"}";
+ const char *gv_disassemble0 =
+ "asm_insns=[{address=\"0x08048dc3\",func-name=\"main\",offset=\"0\",inst=\"lea 0x4(%esp),%ecx\"},{address=\"0x08048dc7\",func-name=\"main\",offset=\"4\",inst=\"and $0xfffffff0,%esp\"},{address=\"0x08048dca\",func-name=\"main\",offset=\"7\",inst=\"pushl -0x4(%ecx)\"},{address=\"0x08048dcd\",func-name=\"main\",offset=\"10\",inst=\"push %ebp\"},{address=\"0x08048dce\",func-name=\"main\",offset=\"11\",inst=\"mov %esp,%ebp\"},{address=\"0x08048dd0\",func-name=\"main\",offset=\"13\",inst=\"push %esi\"},{address=\"0x08048dd1\",func-name=\"main\",offset=\"14\",inst=\"push %ebx\"},{address=\"0x08048dd2\",func-name=\"main\",offset=\"15\",inst=\"push %ecx\"},{address=\"0x08048dd3\",func-name=\"main\",offset=\"16\",inst=\"sub $0x5c,%esp\"},{address=\"0x08048dd6\",func-name=\"main\",offset=\"19\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048dd9\",func-name=\"main\",offset=\"22\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ddc\",func-name=\"main\",offset=\"
25\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048de1\",func-name=\"main\",offset=\"30\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048de4\",func-name=\"main\",offset=\"33\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048de8\",func-name=\"main\",offset=\"37\",inst=\"movl $0x8049485,0x4(%esp)\"},{address=\"0x08048df0\",func-name=\"main\",offset=\"45\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048df3\",func-name=\"main\",offset=\"48\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048df6\",func-name=\"main\",offset=\"51\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x08048dfb\",func-name=\"main\",offset=\"56\",inst=\"lea -0x1d(%ebp),%eax\"},{address=\"0x08048dfe\",func-name=\"main\",offset=\"59\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e01\",func-name=\"main\",offset=\"62\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048e06\",func-name=\"main\",offset=\"67\",inst=\"lea -0x1d(%ebp),%eax\"},{addre
ss=\"0x08048e09\",func-name=\"main\",offset=\"70\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048e0d\",func-name=\"main\",offset=\"74\",inst=\"movl $0x804948c,0x4(%esp)\"},{address=\"0x08048e15\",func-name=\"main\",offset=\"82\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e18\",func-name=\"main\",offset=\"85\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e1b\",func-name=\"main\",offset=\"88\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x08048e20\",func-name=\"main\",offset=\"93\",inst=\"movl $0xf,0xc(%esp)\"},{address=\"0x08048e28\",func-name=\"main\",offset=\"101\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048e2b\",func-name=\"main\",offset=\"104\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048e2f\",func-name=\"main\",offset=\"108\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e32\",func-name=\"main\",offset=\"111\",inst=\"mov %eax,0x4(%esp)\"},{address=\"0x08048e36\",func-name=\"main\",offset=\"115\",inst=\"lea
-0x38(%ebp),%eax\"},{address=\"0x08048e39\",func-name=\"main\",offset=\"118\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e3c\",func-name=\"main\",offset=\"121\",inst=\"call 0x8049178 <Person>\"},{address=\"0x08048e41\",func-name=\"main\",offset=\"126\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e44\",func-name=\"main\",offset=\"129\",inst=\"mov %eax,-0x48(%ebp)\"},{address=\"0x08048e47\",func-name=\"main\",offset=\"132\",inst=\"mov -0x48(%ebp),%eax\"},{address=\"0x08048e4a\",func-name=\"main\",offset=\"135\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e4d\",func-name=\"main\",offset=\"138\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048e52\",func-name=\"main\",offset=\"143\",inst=\"jmp 0x8048e79 <main+182>\"},{address=\"0x08048e54\",func-name=\"main\",offset=\"145\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048e57\",func-name=\"main\",offset=\"148\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048e5a\",func-name=\"main\",o
ffset=\"151\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048e5d\",func-name=\"main\",offset=\"154\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048e60\",func-name=\"main\",offset=\"157\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e63\",func-name=\"main\",offset=\"160\",inst=\"mov %eax,-0x48(%ebp)\"},{address=\"0x08048e66\",func-name=\"main\",offset=\"163\",inst=\"mov -0x48(%ebp),%eax\"},{address=\"0x08048e69\",func-name=\"main\",offset=\"166\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e6c\",func-name=\"main\",offset=\"169\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048e71\",func-name=\"main\",offset=\"174\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048e74\",func-name=\"main\",offset=\"177\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048e77\",func-name=\"main\",offset=\"180\",inst=\"jmp 0x8048ebc <main+249>\"},{address=\"0x08048e79\",func-name=\"main\",offset=\"182\",inst=\"lea -0x1d(%ebp),%eax\"},{address=\"0x
08048e7c\",func-name=\"main\",offset=\"185\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e7f\",func-name=\"main\",offset=\"188\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048e84\",func-name=\"main\",offset=\"193\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048e87\",func-name=\"main\",offset=\"196\",inst=\"mov %eax,-0x4c(%ebp)\"},{address=\"0x08048e8a\",func-name=\"main\",offset=\"199\",inst=\"mov -0x4c(%ebp),%eax\"},{address=\"0x08048e8d\",func-name=\"main\",offset=\"202\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e90\",func-name=\"main\",offset=\"205\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048e95\",func-name=\"main\",offset=\"210\",inst=\"jmp 0x8048ef2 <main+303>\"},{address=\"0x08048e97\",func-name=\"main\",offset=\"212\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048e9a\",func-name=\"main\",offset=\"215\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048e9d\",func-name=\"main\",offset=\"218\",inst=\"mo
v -0x50(%ebp),%esi\"},{address=\"0x08048ea0\",func-name=\"main\",offset=\"221\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048ea3\",func-name=\"main\",offset=\"224\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08048ea6\",func-name=\"main\",offset=\"227\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ea9\",func-name=\"main\",offset=\"230\",inst=\"call 0x804921a <~Person>\"},{address=\"0x08048eae\",func-name=\"main\",offset=\"235\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048eb1\",func-name=\"main\",offset=\"238\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048eb4\",func-name=\"main\",offset=\"241\",inst=\"jmp 0x8048ebc <main+249>\"},{address=\"0x08048eb6\",func-name=\"main\",offset=\"243\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048eb9\",func-name=\"main\",offset=\"246\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048ebc\",func-name=\"main\",offset=\"249\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048ebf\",func-name=\"main\"
,offset=\"252\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048ec2\",func-name=\"main\",offset=\"255\",inst=\"lea -0x1d(%ebp),%eax\"},{address=\"0x08048ec5\",func-name=\"main\",offset=\"258\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ec8\",func-name=\"main\",offset=\"261\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048ecd\",func-name=\"main\",offset=\"266\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048ed0\",func-name=\"main\",offset=\"269\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048ed3\",func-name=\"main\",offset=\"272\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048ed6\",func-name=\"main\",offset=\"275\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048ed9\",func-name=\"main\",offset=\"278\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048edc\",func-name=\"main\",offset=\"281\",inst=\"mov %eax,-0x4c(%ebp)\"},{address=\"0x08048edf\",func-name=\"main\",offset=\"284\",inst=\"mov -0x4c(%ebp),%eax\"},{address=\"0
x08048ee2\",func-name=\"main\",offset=\"287\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ee5\",func-name=\"main\",offset=\"290\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048eea\",func-name=\"main\",offset=\"295\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048eed\",func-name=\"main\",offset=\"298\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048ef0\",func-name=\"main\",offset=\"301\",inst=\"jmp 0x8048f62 <main+415>\"},{address=\"0x08048ef2\",func-name=\"main\",offset=\"303\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048ef5\",func-name=\"main\",offset=\"306\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ef8\",func-name=\"main\",offset=\"309\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048efd\",func-name=\"main\",offset=\"314\",inst=\"call 0x8048cd4 <_Z5func1v>\"},{address=\"0x08048f02\",func-name=\"main\",offset=\"319\",inst=\"movl $0x2,0x4(%esp)\"},{address=\"0x08048f0a\",func-name=\"main\",offset=\"327\",inst=
\"movl $0x1,(%esp)\"},{address=\"0x08048f11\",func-name=\"main\",offset=\"334\",inst=\"call 0x8048ce7 <_Z5func2ii>\"},{address=\"0x08048f16\",func-name=\"main\",offset=\"339\",inst=\"lea -0x15(%ebp),%eax\"},{address=\"0x08048f19\",func-name=\"main\",offset=\"342\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f1c\",func-name=\"main\",offset=\"345\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048f21\",func-name=\"main\",offset=\"350\",inst=\"lea -0x15(%ebp),%eax\"},{address=\"0x08048f24\",func-name=\"main\",offset=\"353\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048f28\",func-name=\"main\",offset=\"357\",inst=\"movl $0x8049490,0x4(%esp)\"},{address=\"0x08048f30\",func-name=\"main\",offset=\"365\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048f33\",func-name=\"main\",offset=\"368\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f36\",func-name=\"main\",offset=\"371\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x0804
8f3b\",func-name=\"main\",offset=\"376\",inst=\"jmp 0x8048f84 <main+449>\"},{address=\"0x08048f3d\",func-name=\"main\",offset=\"378\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048f40\",func-name=\"main\",offset=\"381\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048f43\",func-name=\"main\",offset=\"384\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048f46\",func-name=\"main\",offset=\"387\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048f49\",func-name=\"main\",offset=\"390\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08048f4c\",func-name=\"main\",offset=\"393\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f4f\",func-name=\"main\",offset=\"396\",inst=\"call 0x804921a <~Person>\"},{address=\"0x08048f54\",func-name=\"main\",offset=\"401\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048f57\",func-name=\"main\",offset=\"404\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048f5a\",func-name=\"main\",offset=\"407\",inst=\"jmp 0x8048f62 <m
ain+415>\"},{address=\"0x08048f5c\",func-name=\"main\",offset=\"409\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048f5f\",func-name=\"main\",offset=\"412\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048f62\",func-name=\"main\",offset=\"415\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048f65\",func-name=\"main\",offset=\"418\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048f68\",func-name=\"main\",offset=\"421\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048f6b\",func-name=\"main\",offset=\"424\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f6e\",func-name=\"main\",offset=\"427\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048f73\",func-name=\"main\",offset=\"432\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048f76\",func-name=\"main\",offset=\"435\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048f79\",func-name=\"main\",offset=\"438\",inst=\"mov -0x54(%ebp),%eax\"},{address=\"0x08048f7c\",func-name=\"main\",offset=
\"441\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f7f\",func-name=\"main\",offset=\"444\",inst=\"call 0x8048bd4 <_Unwind_Resume plt>\"},{address=\"0x08048f84\",func-name=\"main\",offset=\"449\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048f87\",func-name=\"main\",offset=\"452\",inst=\"mov %eax,0x4(%esp)\"},{address=\"0x08048f8b\",func-name=\"main\",offset=\"456\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08048f8e\",func-name=\"main\",offset=\"459\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f91\",func-name=\"main\",offset=\"462\",inst=\"call 0x8049140 <_ZN6Person14set_first_nameERKSs>\"},{address=\"0x08048f96\",func-name=\"main\",offset=\"467\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048f99\",func-name=\"main\",offset=\"470\",inst=\"mov %eax,-0x44(%ebp)\"},{address=\"0x08048f9c\",func-name=\"main\",offset=\"473\",inst=\"mov -0x44(%ebp),%eax\"},{address=\"0x08048f9f\",func-name=\"main\",offset=\"476\",inst=\"mov %eax,(%esp)\"},{ad
dress=\"0x08048fa2\",func-name=\"main\",offset=\"479\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048fa7\",func-name=\"main\",offset=\"484\",inst=\"jmp 0x8048fce <main+523>\"},{address=\"0x08048fa9\",func-name=\"main\",offset=\"486\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048fac\",func-name=\"main\",offset=\"489\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048faf\",func-name=\"main\",offset=\"492\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048fb2\",func-name=\"main\",offset=\"495\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048fb5\",func-name=\"main\",offset=\"498\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048fb8\",func-name=\"main\",offset=\"501\",inst=\"mov %eax,-0x44(%ebp)\"},{address=\"0x08048fbb\",func-name=\"main\",offset=\"504\",inst=\"mov -0x44(%ebp),%eax\"},{address=\"0x08048fbe\",func-name=\"main\",offset=\"507\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048fc1\",func-name=\"main\",offset=\"510\",inst=\
"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048fc6\",func-name=\"main\",offset=\"515\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048fc9\",func-name=\"main\",offset=\"518\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048fcc\",func-name=\"main\",offset=\"521\",inst=\"jmp 0x8049006 <main+579>\"},{address=\"0x08048fce\",func-name=\"main\",offset=\"523\",inst=\"lea -0x15(%ebp),%eax\"},{address=\"0x08048fd1\",func-name=\"main\",offset=\"526\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048fd4\",func-name=\"main\",offset=\"529\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048fd9\",func-name=\"main\",offset=\"534\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x08048fdc\",func-name=\"main\",offset=\"537\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048fdf\",func-name=\"main\",offset=\"540\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048fe4\",func-name=\"main\",offset=\"545\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x080
48fe7\",func-name=\"main\",offset=\"548\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048feb\",func-name=\"main\",offset=\"552\",inst=\"movl $0x8049494,0x4(%esp)\"},{address=\"0x08048ff3\",func-name=\"main\",offset=\"560\",inst=\"lea -0x14(%ebp),%eax\"},{address=\"0x08048ff6\",func-name=\"main\",offset=\"563\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ff9\",func-name=\"main\",offset=\"566\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x08048ffe\",func-name=\"main\",offset=\"571\",inst=\"jmp 0x8049022 <main+607>\"},{address=\"0x08049000\",func-name=\"main\",offset=\"573\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08049003\",func-name=\"main\",offset=\"576\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08049006\",func-name=\"main\",offset=\"579\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08049009\",func-name=\"main\",offset=\"582\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x0804900c\",func-name=\"main\",offset=\"585\",inst=\"l
ea -0x15(%ebp),%eax\"},{address=\"0x0804900f\",func-name=\"main\",offset=\"588\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049012\",func-name=\"main\",offset=\"591\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08049017\",func-name=\"main\",offset=\"596\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x0804901a\",func-name=\"main\",offset=\"599\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x0804901d\",func-name=\"main\",offset=\"602\",inst=\"jmp 0x80490fa <main+823>\"},{address=\"0x08049022\",func-name=\"main\",offset=\"607\",inst=\"lea -0x14(%ebp),%eax\"},{address=\"0x08049025\",func-name=\"main\",offset=\"610\",inst=\"mov %eax,0x4(%esp)\"},{address=\"0x08049029\",func-name=\"main\",offset=\"614\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x0804902c\",func-name=\"main\",offset=\"617\",inst=\"mov %eax,(%esp)\"},{address=\"0x0804902f\",func-name=\"main\",offset=\"620\",inst=\"call 0x804915a <_ZN6Person15set_family_nameERKSs>\"},{address=\"
0x08049034\",func-name=\"main\",offset=\"625\",inst=\"lea -0x14(%ebp),%eax\"},{address=\"0x08049037\",func-name=\"main\",offset=\"628\",inst=\"mov %eax,-0x40(%ebp)\"},{address=\"0x0804903a\",func-name=\"main\",offset=\"631\",inst=\"mov -0x40(%ebp),%eax\"},{address=\"0x0804903d\",func-name=\"main\",offset=\"634\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049040\",func-name=\"main\",offset=\"637\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08049045\",func-name=\"main\",offset=\"642\",inst=\"jmp 0x804906c <main+681>\"},{address=\"0x08049047\",func-name=\"main\",offset=\"644\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x0804904a\",func-name=\"main\",offset=\"647\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x0804904d\",func-name=\"main\",offset=\"650\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08049050\",func-name=\"main\",offset=\"653\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08049053\",func-name=\"main\",offset=\"656\",inst=\"lea
-0x14(%ebp),%eax\"},{address=\"0x08049056\",func-name=\"main\",offset=\"659\",inst=\"mov %eax,-0x40(%ebp)\"},{address=\"0x08049059\",func-name=\"main\",offset=\"662\",inst=\"mov -0x40(%ebp),%eax\"},{address=\"0x0804905c\",func-name=\"main\",offset=\"665\",inst=\"mov %eax,(%esp)\"},{address=\"0x0804905f\",func-name=\"main\",offset=\"668\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08049064\",func-name=\"main\",offset=\"673\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08049067\",func-name=\"main\",offset=\"676\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x0804906a\",func-name=\"main\",offset=\"679\",inst=\"jmp 0x804908a <main+711>\"},{address=\"0x0804906c\",func-name=\"main\",offset=\"681\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x0804906f\",func-name=\"main\",offset=\"684\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049072\",func-name=\"main\",offset=\"687\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08049077\",func-name=\
"main\",offset=\"692\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x0804907a\",func-name=\"main\",offset=\"695\",inst=\"mov %eax,(%esp)\"},{address=\"0x0804907d\",func-name=\"main\",offset=\"698\",inst=\"call 0x8049272 <_ZN6Person7do_thisEv>\"},{address=\"0x08049082\",func-name=\"main\",offset=\"703\",inst=\"jmp 0x80490a3 <main+736>\"},{address=\"0x08049084\",func-name=\"main\",offset=\"705\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08049087\",func-name=\"main\",offset=\"708\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x0804908a\",func-name=\"main\",offset=\"711\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x0804908d\",func-name=\"main\",offset=\"714\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08049090\",func-name=\"main\",offset=\"717\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x08049093\",func-name=\"main\",offset=\"720\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049096\",func-name=\"main\",offset=\"723\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev
@plt>\"},{address=\"0x0804909b\",func-name=\"main\",offset=\"728\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x0804909e\",func-name=\"main\",offset=\"731\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x080490a1\",func-name=\"main\",offset=\"734\",inst=\"jmp 0x80490fa <main+823>\"},{address=\"0x080490a3\",func-name=\"main\",offset=\"736\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490a6\",func-name=\"main\",offset=\"739\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490a9\",func-name=\"main\",offset=\"742\",inst=\"call 0x804911c <_ZN6Person8overloadEv>\"},{address=\"0x080490ae\",func-name=\"main\",offset=\"747\",inst=\"movl $0x0,0x4(%esp)\"},{address=\"0x080490b6\",func-name=\"main\",offset=\"755\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490b9\",func-name=\"main\",offset=\"758\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490bc\",func-name=\"main\",offset=\"761\",inst=\"call 0x8049130 <_ZN6Person8overloadEi>\"},{address=\"0x080490c1\",func-name=
\"main\",offset=\"766\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490c4\",func-name=\"main\",offset=\"769\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490c7\",func-name=\"main\",offset=\"772\",inst=\"call 0x8048db0 <_Z5func3R6Person>\"},{address=\"0x080490cc\",func-name=\"main\",offset=\"777\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490cf\",func-name=\"main\",offset=\"780\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490d2\",func-name=\"main\",offset=\"783\",inst=\"call 0x8048cff <_Z5func4R6Person>\"},{address=\"0x080490d7\",func-name=\"main\",offset=\"788\",inst=\"mov $0x0,%ebx\"},{address=\"0x080490dc\",func-name=\"main\",offset=\"793\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490df\",func-name=\"main\",offset=\"796\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490e2\",func-name=\"main\",offset=\"799\",inst=\"call 0x804921a <~Person>\"},{address=\"0x080490e7\",func-name=\"main\",offset=\"804\",inst=\"mov %ebx,%eax\"},{address=\"0x
080490e9\",func-name=\"main\",offset=\"806\",inst=\"add $0x5c,%esp\"},{address=\"0x080490ec\",func-name=\"main\",offset=\"809\",inst=\"pop %ecx\"},{address=\"0x080490ed\",func-name=\"main\",offset=\"810\",inst=\"pop %ebx\"},{address=\"0x080490ee\",func-name=\"main\",offset=\"811\",inst=\"pop %esi\"},{address=\"0x080490ef\",func-name=\"main\",offset=\"812\",inst=\"pop %ebp\"},{address=\"0x080490f0\",func-name=\"main\",offset=\"813\",inst=\"lea -0x4(%ecx),%esp\"},{address=\"0x080490f3\",func-name=\"main\",offset=\"816\",inst=\"ret \"},{address=\"0x080490f4\",func-name=\"main\",offset=\"817\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x080490f7\",func-name=\"main\",offset=\"820\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x080490fa\",func-name=\"main\",offset=\"823\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x080490fd\",func-name=\"main\",offset=\"826\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08049100\",func-name=\"main\",offset=\"829\",ins
t=\"lea -0x38(%ebp),%eax\"},{address=\"0x08049103\",func-name=\"main\",offset=\"832\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049106\",func-name=\"main\",offset=\"835\",inst=\"call 0x804921a <~Person>\"},{address=\"0x0804910b\",func-name=\"main\",offset=\"840\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x0804910e\",func-name=\"main\",offset=\"843\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08049111\",func-name=\"main\",offset=\"846\",inst=\"mov -0x54(%ebp),%eax\"},{address=\"0x08049114\",func-name=\"main\",offset=\"849\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049117\",func-name=\"main\",offset=\"852\",inst=\"call 0x8048bd4 <_Unwind_Resume plt>\"}]";
+
+ const char *gv_disassemble1 =
+ "^done,asm_insns=[{address=\"0x08048dc3\",func-name=\"main\",offset=\"0\",inst=\"lea 0x4(%esp),%ecx\"},{address=\"0x08048dc7\",func-name=\"main\",offset=\"4\",inst=\"and $0xfffffff0,%esp\"},{address=\"0x08048dca\",func-name=\"main\",offset=\"7\",inst=\"pushl -0x4(%ecx)\"},{address=\"0x08048dcd\",func-name=\"main\",offset=\"10\",inst=\"push %ebp\"},{address=\"0x08048dce\",func-name=\"main\",offset=\"11\",inst=\"mov %esp,%ebp\"},{address=\"0x08048dd0\",func-name=\"main\",offset=\"13\",inst=\"push %esi\"},{address=\"0x08048dd1\",func-name=\"main\",offset=\"14\",inst=\"push %ebx\"},{address=\"0x08048dd2\",func-name=\"main\",offset=\"15\",inst=\"push %ecx\"},{address=\"0x08048dd3\",func-name=\"main\",offset=\"16\",inst=\"sub $0x5c,%esp\"},{address=\"0x08048dd6\",func-name=\"main\",offset=\"19\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048dd9\",func-name=\"main\",offset=\"22\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ddc\",func-name=\"main\",off
set=\"25\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048de1\",func-name=\"main\",offset=\"30\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048de4\",func-name=\"main\",offset=\"33\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048de8\",func-name=\"main\",offset=\"37\",inst=\"movl $0x8049485,0x4(%esp)\"},{address=\"0x08048df0\",func-name=\"main\",offset=\"45\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048df3\",func-name=\"main\",offset=\"48\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048df6\",func-name=\"main\",offset=\"51\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x08048dfb\",func-name=\"main\",offset=\"56\",inst=\"lea -0x1d(%ebp),%eax\"},{address=\"0x08048dfe\",func-name=\"main\",offset=\"59\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e01\",func-name=\"main\",offset=\"62\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048e06\",func-name=\"main\",offset=\"67\",inst=\"lea -0x1d(%ebp),%eax\"},
{address=\"0x08048e09\",func-name=\"main\",offset=\"70\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048e0d\",func-name=\"main\",offset=\"74\",inst=\"movl $0x804948c,0x4(%esp)\"},{address=\"0x08048e15\",func-name=\"main\",offset=\"82\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e18\",func-name=\"main\",offset=\"85\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e1b\",func-name=\"main\",offset=\"88\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x08048e20\",func-name=\"main\",offset=\"93\",inst=\"movl $0xf,0xc(%esp)\"},{address=\"0x08048e28\",func-name=\"main\",offset=\"101\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048e2b\",func-name=\"main\",offset=\"104\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048e2f\",func-name=\"main\",offset=\"108\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e32\",func-name=\"main\",offset=\"111\",inst=\"mov %eax,0x4(%esp)\"},{address=\"0x08048e36\",func-name=\"main\",offset=\"115\",inst=\"l
ea -0x38(%ebp),%eax\"},{address=\"0x08048e39\",func-name=\"main\",offset=\"118\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e3c\",func-name=\"main\",offset=\"121\",inst=\"call 0x8049178 <Person>\"},{address=\"0x08048e41\",func-name=\"main\",offset=\"126\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e44\",func-name=\"main\",offset=\"129\",inst=\"mov %eax,-0x48(%ebp)\"},{address=\"0x08048e47\",func-name=\"main\",offset=\"132\",inst=\"mov -0x48(%ebp),%eax\"},{address=\"0x08048e4a\",func-name=\"main\",offset=\"135\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e4d\",func-name=\"main\",offset=\"138\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048e52\",func-name=\"main\",offset=\"143\",inst=\"jmp 0x8048e79 <main+182>\"},{address=\"0x08048e54\",func-name=\"main\",offset=\"145\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048e57\",func-name=\"main\",offset=\"148\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048e5a\",func-name=\"ma
in\",offset=\"151\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048e5d\",func-name=\"main\",offset=\"154\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048e60\",func-name=\"main\",offset=\"157\",inst=\"lea -0x24(%ebp),%eax\"},{address=\"0x08048e63\",func-name=\"main\",offset=\"160\",inst=\"mov %eax,-0x48(%ebp)\"},{address=\"0x08048e66\",func-name=\"main\",offset=\"163\",inst=\"mov -0x48(%ebp),%eax\"},{address=\"0x08048e69\",func-name=\"main\",offset=\"166\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e6c\",func-name=\"main\",offset=\"169\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048e71\",func-name=\"main\",offset=\"174\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048e74\",func-name=\"main\",offset=\"177\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048e77\",func-name=\"main\",offset=\"180\",inst=\"jmp 0x8048ebc <main+249>\"},{address=\"0x08048e79\",func-name=\"main\",offset=\"182\",inst=\"lea -0x1d(%ebp),%eax\"},{addres
s=\"0x08048e7c\",func-name=\"main\",offset=\"185\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e7f\",func-name=\"main\",offset=\"188\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048e84\",func-name=\"main\",offset=\"193\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048e87\",func-name=\"main\",offset=\"196\",inst=\"mov %eax,-0x4c(%ebp)\"},{address=\"0x08048e8a\",func-name=\"main\",offset=\"199\",inst=\"mov -0x4c(%ebp),%eax\"},{address=\"0x08048e8d\",func-name=\"main\",offset=\"202\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048e90\",func-name=\"main\",offset=\"205\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048e95\",func-name=\"main\",offset=\"210\",inst=\"jmp 0x8048ef2 <main+303>\"},{address=\"0x08048e97\",func-name=\"main\",offset=\"212\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048e9a\",func-name=\"main\",offset=\"215\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048e9d\",func-name=\"main\",offset=\"218\",ins
t=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048ea0\",func-name=\"main\",offset=\"221\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048ea3\",func-name=\"main\",offset=\"224\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08048ea6\",func-name=\"main\",offset=\"227\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ea9\",func-name=\"main\",offset=\"230\",inst=\"call 0x804921a <~Person>\"},{address=\"0x08048eae\",func-name=\"main\",offset=\"235\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048eb1\",func-name=\"main\",offset=\"238\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048eb4\",func-name=\"main\",offset=\"241\",inst=\"jmp 0x8048ebc <main+249>\"},{address=\"0x08048eb6\",func-name=\"main\",offset=\"243\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048eb9\",func-name=\"main\",offset=\"246\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048ebc\",func-name=\"main\",offset=\"249\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048ebf\",func-name=\"
main\",offset=\"252\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048ec2\",func-name=\"main\",offset=\"255\",inst=\"lea -0x1d(%ebp),%eax\"},{address=\"0x08048ec5\",func-name=\"main\",offset=\"258\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ec8\",func-name=\"main\",offset=\"261\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048ecd\",func-name=\"main\",offset=\"266\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048ed0\",func-name=\"main\",offset=\"269\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048ed3\",func-name=\"main\",offset=\"272\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048ed6\",func-name=\"main\",offset=\"275\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048ed9\",func-name=\"main\",offset=\"278\",inst=\"lea -0x2c(%ebp),%eax\"},{address=\"0x08048edc\",func-name=\"main\",offset=\"281\",inst=\"mov %eax,-0x4c(%ebp)\"},{address=\"0x08048edf\",func-name=\"main\",offset=\"284\",inst=\"mov -0x4c(%ebp),%eax\"},{addre
ss=\"0x08048ee2\",func-name=\"main\",offset=\"287\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ee5\",func-name=\"main\",offset=\"290\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048eea\",func-name=\"main\",offset=\"295\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048eed\",func-name=\"main\",offset=\"298\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048ef0\",func-name=\"main\",offset=\"301\",inst=\"jmp 0x8048f62 <main+415>\"},{address=\"0x08048ef2\",func-name=\"main\",offset=\"303\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048ef5\",func-name=\"main\",offset=\"306\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ef8\",func-name=\"main\",offset=\"309\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048efd\",func-name=\"main\",offset=\"314\",inst=\"call 0x8048cd4 <_Z5func1v>\"},{address=\"0x08048f02\",func-name=\"main\",offset=\"319\",inst=\"movl $0x2,0x4(%esp)\"},{address=\"0x08048f0a\",func-name=\"main\",offset=\"327\"
,inst=\"movl $0x1,(%esp)\"},{address=\"0x08048f11\",func-name=\"main\",offset=\"334\",inst=\"call 0x8048ce7 <_Z5func2ii>\"},{address=\"0x08048f16\",func-name=\"main\",offset=\"339\",inst=\"lea -0x15(%ebp),%eax\"},{address=\"0x08048f19\",func-name=\"main\",offset=\"342\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f1c\",func-name=\"main\",offset=\"345\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048f21\",func-name=\"main\",offset=\"350\",inst=\"lea -0x15(%ebp),%eax\"},{address=\"0x08048f24\",func-name=\"main\",offset=\"353\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048f28\",func-name=\"main\",offset=\"357\",inst=\"movl $0x8049490,0x4(%esp)\"},{address=\"0x08048f30\",func-name=\"main\",offset=\"365\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048f33\",func-name=\"main\",offset=\"368\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f36\",func-name=\"main\",offset=\"371\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"
0x08048f3b\",func-name=\"main\",offset=\"376\",inst=\"jmp 0x8048f84 <main+449>\"},{address=\"0x08048f3d\",func-name=\"main\",offset=\"378\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048f40\",func-name=\"main\",offset=\"381\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048f43\",func-name=\"main\",offset=\"384\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048f46\",func-name=\"main\",offset=\"387\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048f49\",func-name=\"main\",offset=\"390\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08048f4c\",func-name=\"main\",offset=\"393\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f4f\",func-name=\"main\",offset=\"396\",inst=\"call 0x804921a <~Person>\"},{address=\"0x08048f54\",func-name=\"main\",offset=\"401\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048f57\",func-name=\"main\",offset=\"404\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048f5a\",func-name=\"main\",offset=\"407\",inst=\"jmp 0x8048
f62 <main+415>\"},{address=\"0x08048f5c\",func-name=\"main\",offset=\"409\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048f5f\",func-name=\"main\",offset=\"412\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048f62\",func-name=\"main\",offset=\"415\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048f65\",func-name=\"main\",offset=\"418\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048f68\",func-name=\"main\",offset=\"421\",inst=\"lea -0x25(%ebp),%eax\"},{address=\"0x08048f6b\",func-name=\"main\",offset=\"424\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f6e\",func-name=\"main\",offset=\"427\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048f73\",func-name=\"main\",offset=\"432\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048f76\",func-name=\"main\",offset=\"435\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048f79\",func-name=\"main\",offset=\"438\",inst=\"mov -0x54(%ebp),%eax\"},{address=\"0x08048f7c\",func-name=\"main\",o
ffset=\"441\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f7f\",func-name=\"main\",offset=\"444\",inst=\"call 0x8048bd4 <_Unwind_Resume plt>\"},{address=\"0x08048f84\",func-name=\"main\",offset=\"449\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048f87\",func-name=\"main\",offset=\"452\",inst=\"mov %eax,0x4(%esp)\"},{address=\"0x08048f8b\",func-name=\"main\",offset=\"456\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08048f8e\",func-name=\"main\",offset=\"459\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048f91\",func-name=\"main\",offset=\"462\",inst=\"call 0x8049140 <_ZN6Person14set_first_nameERKSs>\"},{address=\"0x08048f96\",func-name=\"main\",offset=\"467\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048f99\",func-name=\"main\",offset=\"470\",inst=\"mov %eax,-0x44(%ebp)\"},{address=\"0x08048f9c\",func-name=\"main\",offset=\"473\",inst=\"mov -0x44(%ebp),%eax\"},{address=\"0x08048f9f\",func-name=\"main\",offset=\"476\",inst=\"mov %eax,(%esp)\
"},{address=\"0x08048fa2\",func-name=\"main\",offset=\"479\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048fa7\",func-name=\"main\",offset=\"484\",inst=\"jmp 0x8048fce <main+523>\"},{address=\"0x08048fa9\",func-name=\"main\",offset=\"486\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08048fac\",func-name=\"main\",offset=\"489\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08048faf\",func-name=\"main\",offset=\"492\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08048fb2\",func-name=\"main\",offset=\"495\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08048fb5\",func-name=\"main\",offset=\"498\",inst=\"lea -0x1c(%ebp),%eax\"},{address=\"0x08048fb8\",func-name=\"main\",offset=\"501\",inst=\"mov %eax,-0x44(%ebp)\"},{address=\"0x08048fbb\",func-name=\"main\",offset=\"504\",inst=\"mov -0x44(%ebp),%eax\"},{address=\"0x08048fbe\",func-name=\"main\",offset=\"507\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048fc1\",func-name=\"main\",offset=\"510\",
inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08048fc6\",func-name=\"main\",offset=\"515\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08048fc9\",func-name=\"main\",offset=\"518\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08048fcc\",func-name=\"main\",offset=\"521\",inst=\"jmp 0x8049006 <main+579>\"},{address=\"0x08048fce\",func-name=\"main\",offset=\"523\",inst=\"lea -0x15(%ebp),%eax\"},{address=\"0x08048fd1\",func-name=\"main\",offset=\"526\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048fd4\",func-name=\"main\",offset=\"529\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08048fd9\",func-name=\"main\",offset=\"534\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x08048fdc\",func-name=\"main\",offset=\"537\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048fdf\",func-name=\"main\",offset=\"540\",inst=\"call 0x8048be4 <_ZNSaIcEC1Ev plt>\"},{address=\"0x08048fe4\",func-name=\"main\",offset=\"545\",inst=\"lea -0xd(%ebp),%eax\"},{address=\
"0x08048fe7\",func-name=\"main\",offset=\"548\",inst=\"mov %eax,0x8(%esp)\"},{address=\"0x08048feb\",func-name=\"main\",offset=\"552\",inst=\"movl $0x8049494,0x4(%esp)\"},{address=\"0x08048ff3\",func-name=\"main\",offset=\"560\",inst=\"lea -0x14(%ebp),%eax\"},{address=\"0x08048ff6\",func-name=\"main\",offset=\"563\",inst=\"mov %eax,(%esp)\"},{address=\"0x08048ff9\",func-name=\"main\",offset=\"566\",inst=\"call 0x8048b84 <_ZNSsC1EPKcRKSaIcE plt>\"},{address=\"0x08048ffe\",func-name=\"main\",offset=\"571\",inst=\"jmp 0x8049022 <main+607>\"},{address=\"0x08049000\",func-name=\"main\",offset=\"573\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08049003\",func-name=\"main\",offset=\"576\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x08049006\",func-name=\"main\",offset=\"579\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08049009\",func-name=\"main\",offset=\"582\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x0804900c\",func-name=\"main\",offset=\"585\",in
st=\"lea -0x15(%ebp),%eax\"},{address=\"0x0804900f\",func-name=\"main\",offset=\"588\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049012\",func-name=\"main\",offset=\"591\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08049017\",func-name=\"main\",offset=\"596\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x0804901a\",func-name=\"main\",offset=\"599\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x0804901d\",func-name=\"main\",offset=\"602\",inst=\"jmp 0x80490fa <main+823>\"},{address=\"0x08049022\",func-name=\"main\",offset=\"607\",inst=\"lea -0x14(%ebp),%eax\"},{address=\"0x08049025\",func-name=\"main\",offset=\"610\",inst=\"mov %eax,0x4(%esp)\"},{address=\"0x08049029\",func-name=\"main\",offset=\"614\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x0804902c\",func-name=\"main\",offset=\"617\",inst=\"mov %eax,(%esp)\"},{address=\"0x0804902f\",func-name=\"main\",offset=\"620\",inst=\"call 0x804915a <_ZN6Person15set_family_nameERKSs>\"},{addr
ess=\"0x08049034\",func-name=\"main\",offset=\"625\",inst=\"lea -0x14(%ebp),%eax\"},{address=\"0x08049037\",func-name=\"main\",offset=\"628\",inst=\"mov %eax,-0x40(%ebp)\"},{address=\"0x0804903a\",func-name=\"main\",offset=\"631\",inst=\"mov -0x40(%ebp),%eax\"},{address=\"0x0804903d\",func-name=\"main\",offset=\"634\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049040\",func-name=\"main\",offset=\"637\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08049045\",func-name=\"main\",offset=\"642\",inst=\"jmp 0x804906c <main+681>\"},{address=\"0x08049047\",func-name=\"main\",offset=\"644\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x0804904a\",func-name=\"main\",offset=\"647\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x0804904d\",func-name=\"main\",offset=\"650\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x08049050\",func-name=\"main\",offset=\"653\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08049053\",func-name=\"main\",offset=\"656\",inst=\"l
ea -0x14(%ebp),%eax\"},{address=\"0x08049056\",func-name=\"main\",offset=\"659\",inst=\"mov %eax,-0x40(%ebp)\"},{address=\"0x08049059\",func-name=\"main\",offset=\"662\",inst=\"mov -0x40(%ebp),%eax\"},{address=\"0x0804905c\",func-name=\"main\",offset=\"665\",inst=\"mov %eax,(%esp)\"},{address=\"0x0804905f\",func-name=\"main\",offset=\"668\",inst=\"call 0x8048bb4 <_ZNSsD1Ev plt>\"},{address=\"0x08049064\",func-name=\"main\",offset=\"673\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x08049067\",func-name=\"main\",offset=\"676\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x0804906a\",func-name=\"main\",offset=\"679\",inst=\"jmp 0x804908a <main+711>\"},{address=\"0x0804906c\",func-name=\"main\",offset=\"681\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x0804906f\",func-name=\"main\",offset=\"684\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049072\",func-name=\"main\",offset=\"687\",inst=\"call 0x8048b74 <_ZNSaIcED1Ev plt>\"},{address=\"0x08049077\",func-
name=\"main\",offset=\"692\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x0804907a\",func-name=\"main\",offset=\"695\",inst=\"mov %eax,(%esp)\"},{address=\"0x0804907d\",func-name=\"main\",offset=\"698\",inst=\"call 0x8049272 <_ZN6Person7do_thisEv>\"},{address=\"0x08049082\",func-name=\"main\",offset=\"703\",inst=\"jmp 0x80490a3 <main+736>\"},{address=\"0x08049084\",func-name=\"main\",offset=\"705\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x08049087\",func-name=\"main\",offset=\"708\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x0804908a\",func-name=\"main\",offset=\"711\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x0804908d\",func-name=\"main\",offset=\"714\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08049090\",func-name=\"main\",offset=\"717\",inst=\"lea -0xd(%ebp),%eax\"},{address=\"0x08049093\",func-name=\"main\",offset=\"720\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049096\",func-name=\"main\",offset=\"723\",inst=\"call 0x8048b74 <_ZNSaI
cED1Ev plt>\"},{address=\"0x0804909b\",func-name=\"main\",offset=\"728\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x0804909e\",func-name=\"main\",offset=\"731\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x080490a1\",func-name=\"main\",offset=\"734\",inst=\"jmp 0x80490fa <main+823>\"},{address=\"0x080490a3\",func-name=\"main\",offset=\"736\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490a6\",func-name=\"main\",offset=\"739\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490a9\",func-name=\"main\",offset=\"742\",inst=\"call 0x804911c <_ZN6Person8overloadEv>\"},{address=\"0x080490ae\",func-name=\"main\",offset=\"747\",inst=\"movl $0x0,0x4(%esp)\"},{address=\"0x080490b6\",func-name=\"main\",offset=\"755\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490b9\",func-name=\"main\",offset=\"758\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490bc\",func-name=\"main\",offset=\"761\",inst=\"call 0x8049130 <_ZN6Person8overloadEi>\"},{address=\"0x080490c1\",func
-name=\"main\",offset=\"766\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490c4\",func-name=\"main\",offset=\"769\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490c7\",func-name=\"main\",offset=\"772\",inst=\"call 0x8048db0 <_Z5func3R6Person>\"},{address=\"0x080490cc\",func-name=\"main\",offset=\"777\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490cf\",func-name=\"main\",offset=\"780\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490d2\",func-name=\"main\",offset=\"783\",inst=\"call 0x8048cff <_Z5func4R6Person>\"},{address=\"0x080490d7\",func-name=\"main\",offset=\"788\",inst=\"mov $0x0,%ebx\"},{address=\"0x080490dc\",func-name=\"main\",offset=\"793\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x080490df\",func-name=\"main\",offset=\"796\",inst=\"mov %eax,(%esp)\"},{address=\"0x080490e2\",func-name=\"main\",offset=\"799\",inst=\"call 0x804921a <~Person>\"},{address=\"0x080490e7\",func-name=\"main\",offset=\"804\",inst=\"mov %ebx,%eax\"},{addres
s=\"0x080490e9\",func-name=\"main\",offset=\"806\",inst=\"add $0x5c,%esp\"},{address=\"0x080490ec\",func-name=\"main\",offset=\"809\",inst=\"pop %ecx\"},{address=\"0x080490ed\",func-name=\"main\",offset=\"810\",inst=\"pop %ebx\"},{address=\"0x080490ee\",func-name=\"main\",offset=\"811\",inst=\"pop %esi\"},{address=\"0x080490ef\",func-name=\"main\",offset=\"812\",inst=\"pop %ebp\"},{address=\"0x080490f0\",func-name=\"main\",offset=\"813\",inst=\"lea -0x4(%ecx),%esp\"},{address=\"0x080490f3\",func-name=\"main\",offset=\"816\",inst=\"ret \"},{address=\"0x080490f4\",func-name=\"main\",offset=\"817\",inst=\"mov %eax,-0x54(%ebp)\"},{address=\"0x080490f7\",func-name=\"main\",offset=\"820\",inst=\"mov %edx,-0x50(%ebp)\"},{address=\"0x080490fa\",func-name=\"main\",offset=\"823\",inst=\"mov -0x50(%ebp),%esi\"},{address=\"0x080490fd\",func-name=\"main\",offset=\"826\",inst=\"mov -0x54(%ebp),%ebx\"},{address=\"0x08049100\",func-name=\"main\",offset=\"829
\",inst=\"lea -0x38(%ebp),%eax\"},{address=\"0x08049103\",func-name=\"main\",offset=\"832\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049106\",func-name=\"main\",offset=\"835\",inst=\"call 0x804921a <~Person>\"},{address=\"0x0804910b\",func-name=\"main\",offset=\"840\",inst=\"mov %ebx,-0x54(%ebp)\"},{address=\"0x0804910e\",func-name=\"main\",offset=\"843\",inst=\"mov %esi,-0x50(%ebp)\"},{address=\"0x08049111\",func-name=\"main\",offset=\"846\",inst=\"mov -0x54(%ebp),%eax\"},{address=\"0x08049114\",func-name=\"main\",offset=\"849\",inst=\"mov %eax,(%esp)\"},{address=\"0x08049117\",func-name=\"main\",offset=\"852\",inst=\"call 0x8048bd4 <_Unwind_Resume plt>\"}]\n";
+
static const char* gv_file_list1 =
"files=[{file=\"fooprog.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/tests/fooprog.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/locale_facets.h\",fullname=\"/usr/include/c++/4.3.2/bits/locale_facets.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/x86_64-redhat-linux/bits/ctype_base.h\",fullname=\"/usr/include/c++/4.3.2/x86_64-redhat-linux/bits/ctype_base.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/numeric_traits.h\",fullname=\"/usr/include/c++/4.3.2/ext/numeric_traits.h\"},{file=\"/usr/include/wctype.h\",fullname=\"/usr/include/wctype.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/locale_classes.h\",fullname=\"/usr/include/c++/4.3.2/bits/locale_classes.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.tcc\"}
,{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stringfwd.h\",fullname=\"/usr/include/c++/4.3.2/bits/stringfwd.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/x86_64-redhat-linux/bits/atomic_word.h\",fullname=\"/usr/include/c++/4.3.2/x86_64-redhat-linux/bits/atomic_word.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/x86_64-redhat-linux/bits/gthr-default.h\",fullname=\"/usr/include/c++/4.3.2/x86_64-redhat-linux/bits/gthr-default.h\"},{file=\"/usr/include/bits/pthreadtypes.h\",fullname=\"/usr/include/bits/pthreadtypes.h\"},{file=\"/usr/include/locale.h\",fullname=\"/usr/include/locale.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/include/_G_config.h\",fullname=\"/usr/include/_G_config.h\"},{file=\"/usr/include/bits/types.h\",fullname=\"/usr/include/bits/t
ypes.h\"},{file=\"/usr/include/time.h\",fullname=\"/usr/include/time.h\"},{file=\"/usr/include/wchar.h\",fullname=\"/usr/include/wchar.h\"},{file=\"/home/dodji/.ccache/fooprog.tmp.tutu.605.ii\"},{file=\"/usr/include/libio.h\",fullname=\"/usr/include/libio.h\"},{file=\"/usr/include/stdio.h\",fullname=\"/usr/include/stdio.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/include/stddef.h\",fullname=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/include/stddef.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/debug/debug.h\",fullname=\"/usr/include/c++/4.3.2/debug/debug.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h\",fullname=\"/usr/include/c++/4.3.2/bits/cpp_type_traits.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../inclu
de/c++/4.3.2/cwctype\",fullname=\"/usr/include/c++/4.3.2/cwctype\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.h\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/ios_base.h\",fullname=\"/usr/include/c++/4.3.2/bits/ios_base.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/clocale\",fullname=\"/usr/include/c++/4.3.2/clocale\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/cstdio\",fullname=\"/usr/include/c++/4.3.2/cstdio\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/cwchar\",fullname=\"/usr/include/c++/4.3.2/cwchar\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/cstddef\",fullname=\"/usr/include/c++/4.3.2/cstddef\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/iostream\",fulln
ame=\"/usr/include/c++/4.3.2/iostream\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/iostream\",fullname=\"/usr/include/c++/4.3.2/iostream\"},{file=\"nmv-safe-ptr.h\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/list.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/list.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algo.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algo.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-proc-mgr.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_
64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_types.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_types.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_list.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_list.h\"},{file=\"nmv-proc-mgr.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-proc-mgr.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-proc-mgr.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-proc-utils.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.h\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/refptr.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/refptr.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4
.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/backward/auto_ptr.h\",fullname=\"/usr/include/c++/4.3.2/backward/auto_ptr.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"nmv-proc-utils.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-proc-utils.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redh
at-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"nmv-delete-statement.cc\"},{file=\"nmv-sql-statement.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-delete-statement.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-delete-statement.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fulln
ame=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/..
/../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"nmv-insert-statement.cc\"},{file=\"nmv-sql-statement.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-insert-statement.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-insert-statement.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-sql-statement.cc\"},{file=\"nmv-sql-statement.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-sql-statement.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++
/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_funcs.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_funcs.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_types.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_types.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/deque.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/deque.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3
.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_stack.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_stack.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"nmv-transaction.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_deque.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_deque.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-transaction.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-transaction.cc\"},{file=\"nmv-tools.cc\"},{file=\"nmv-transaction.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/u
string.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-buffer.h\"},{file=\"nmv-tools.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-tools.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"nmv-conf-manager.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_constru
ct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_pair.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_pair.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_function.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_function.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_map.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_map.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../.
./../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\"},{file=\"nmv-libxml-utils.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_tree.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_tree.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/ios_base.h\",fullname=\"/usr/include/c++/4.3.2/bits/ios_base.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-conf-manager.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-conf-manager.cc\"},{file=\"/usr/l
ib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/in
clude/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"nmv-parsing-utils.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-parsing-utils.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-parsing-utils.cc\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"nmv-connection.cc\"},{file=\"nmv-connection.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/com
mon/nmv-connection.cc\"},{file=\"nmv-dynamic-module.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"nmv-connection-manager.cc\"},{file=\"nmv-safe-ptr.h\"},{file=\"nmv-i-connection-manager-driver.h\"},{file=\"nmv-connection-manager.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-connection-manager.cc\"},{file=\"nmv-option-utils.cc\"},{file=\"nmv-option-utils.h\"},{file=\"nmv-option-utils.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-option-utils.cc\"},{file=\"nmv-sequence.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"nmv-sequence.cc\"},{file=\"nmv-safe-ptr.h\"},{file=\"nmv-sequence.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-sequence.cc\"},{file=\"nmv-dynamic-module.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bi
ts/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_funcs.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_funcs.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_types.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_types.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_pair.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_pair.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_function.h\",fullname=\"/u
sr/include/c++/4.3.2/bits/stl_function.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_map.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_map.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../includ
e/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"nmv-plugin.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_tree.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_tree.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\"},{file=\"nmv-plugin.h\"},{file=\"nmv-libxml-utils.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/fileutils.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/fileutils.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-plugin.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-plugin.cc\"},{file=\"/usr/include/glibm
m-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64
-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\"},{file=\"nmv-env.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-env.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-env.cc\"},{file=\"nmv-date-utils.cc\"},{file=\"nmv-date-utils.cc\",fullname
=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-date-utils.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"nmv-dynamic-module.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_pair.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_pair.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.h\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../i
nclude/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_function.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_function.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_map.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_map.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/
lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"nmv-dynamic-module.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_tree.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_tree.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\"},{file=\"nmv-libxml-utils.h\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-dynamic-module.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-dynamic-module.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fu
llname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"nmv-initializer.cc\"},{file=\"nmv-initializer.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-initializer.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-exception.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/stdexcept\",fullname=\"/usr/include/c++/4.3.2/stdexcept\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/exception\",fullname=\"/usr/include/c++/4.3.2/exception\"},{file=\"nmv-exception.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-exception.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-scope-logger.cc\"},{file=\"nmv-safe-ptr.h\"},{file=\"nmv-scope-logger.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-scope-logger.cc\"},{file=\"/usr/lib/gc
c/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/tr1_impl/unordered_map\",fullname=\"/usr/include/c++/4.3.2/tr1_impl/unordered_map\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/list.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/list.tcc\"},{file=\"/usr/include/glibmm-2.4/glibmm/thread.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/thread.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.h\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/char_traits.h\",fullname=\"/usr/include/c++/4.
3.2/bits/char_traits.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/iostream\",fullname=\"/usr/include/c++/4.3.2/iostream\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_funcs.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_funcs.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_types.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_types.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/tr1_impl/hashtable\",fullname=\"/usr/include/c++/4.3.2/tr1_impl/hashtable\"},{file=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\",
fullname=\"/usr/include/glibmm-2.4/glibmm/arrayhandle.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_function.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_function.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_list.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_list.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr
/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_pair.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_pair.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/containerhandle_shared.h\"},{file=\"nmv-log-stream.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/tr1_impl/hashtable_policy.h\",fullname=\"/usr/include/c++/4.3.2/tr1_impl/hashtable_policy.h\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/ios_base.h\",fullname=\"/usr/include/c++/4.3.2/bits/ios_base.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-log-stream.cc\",fu
llname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-log-stream.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"nmv-libxml-utils.cc\"},{file=\"nmv-libxml-utils.h\"},{file=\"nmv-libxml-utils.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-libxml-utils.cc\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_pair.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_pair.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_function.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_function.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_map.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_map.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../
../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"nmv-object.cc\"},{file=\"nmv-safe-ptr.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_tree.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_tree.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"nmv-object.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-object.cc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/vector.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/vector.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_uninitialized.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_uninitialized.h\"},{file
=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.tcc\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.tcc\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_funcs.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_funcs.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator_base_types.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator_base_types.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/type_traits.h\",fullname=\"/usr/include/c++/4.3.2/ext/type_traits.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algobase.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_algobase.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_construct.h\"},{file=\"/usr
/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_function.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_function.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/char_traits.h\",fullname=\"/usr/include/c++/4.3.2/bits/char_traits.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/basic_string.h\",fullname=\"/usr/include/c++/4.3.2/bits/basic_string.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/allocator.h\",fullname=\"/usr/include/c++/4.3.2/bits/allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/new_allocator.h\",fullname=\"/usr/include/c++/4.3.2/ext/new_allocator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_iterator.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_iterator.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.
3.2/bits/stl_vector.h\",fullname=\"/usr/include/c++/4.3.2/bits/stl_vector.h\"},{file=\"nmv-ustring.cc\"},{file=\"nmv-safe-ptr-utils.h\"},{file=\"nmv-safe-ptr.h\"},{file=\"/usr/include/glibmm-2.4/glibmm/ustring.h\",fullname=\"/usr/include/glibmm-2.4/glibmm/ustring.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/new\",fullname=\"/usr/include/c++/4.3.2/new\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/ext/atomicity.h\",fullname=\"/usr/include/c++/4.3.2/ext/atomicity.h\"},{file=\"/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/x86_64-redhat-linux/bits/gthr-default.h\",fullname=\"/usr/include/c++/4.3.2/x86_64-redhat-linux/bits/gthr-default.h\"},{file=\"nmv-ustring.cc\",fullname=\"/home/dodji/devel/git/nemiver.git/src/common/nmv-ustring.cc\"}]";
@@ -842,6 +849,37 @@ test_breakpoint ()
}
void
+test_disassemble ()
+{
+ typedef list<IDebugger::AsmInstr> AsmInstrList;
+ AsmInstrList instrs;
+ UString::size_type cur = 0;
+ GDBMIParser parser (gv_disassemble0);
+ BOOST_REQUIRE (parser.parse_asm_instruction_list (cur, cur, instrs));
+ int nb_instrs = instrs.size ();
+ // There should be 253 assembly instructions in gv_disassemble0.
+ // Yes, I counted them all.
+ BOOST_REQUIRE_MESSAGE (nb_instrs == 253, "nb_instrs was: " << nb_instrs);
+ std::cout << "========== asm instructions =============\n";
+ for (AsmInstrList::const_iterator it = instrs.begin ();
+ it != instrs.end ();
+ ++it) {
+ std::cout << *it;
+ }
+ std::cout << "========== end of asm instructions =============\n";
+
+ Output::ResultRecord record;
+ cur = 0;
+ parser.push_input (gv_disassemble1);
+ BOOST_REQUIRE (parser.parse_result_record (cur, cur, record));
+ BOOST_REQUIRE (record.has_asm_instruction_list ());
+ nb_instrs = record.asm_instruction_list ().size ();
+ // There should be 253 assembly instructions in gv_disassemble1.
+ BOOST_REQUIRE_MESSAGE (nb_instrs == 253, "nb_instrs was: " << nb_instrs);
+}
+
+
+void
test_file_list ()
{
UString::size_type from=0, to=0;
@@ -891,6 +929,7 @@ init_unit_test_suite (int argc, char **argv)
suite->add (BOOST_TEST_CASE (&test_gdbmi_result));
suite->add (BOOST_TEST_CASE (&test_breakpoint_table));
suite->add (BOOST_TEST_CASE (&test_breakpoint));
+ suite->add (BOOST_TEST_CASE (&test_disassemble));
suite->add (BOOST_TEST_CASE (&test_file_list));
return suite;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]