o->newline() << "#ifdef STP_OVERLOAD";
o->newline() << "c->cycles_sum = 0;";
o->newline() << "c->cycles_base = 0;";
- o->newline() << "#endif";
+ o->newline() << "#endif";
*/
}
// XXX: it is probably desirable to search other CU's declarations
// in the same module.
-
+
if (v->find(name) == v->end())
return NULL;
dwarf_query * q = static_cast<dwarf_query *>(data);
int lineno = lines[0];
auto_free_ref<Dwarf_Line**> free_srcsp(srcsp);
-
+
get_module_dwarf();
- if (line_type == RELATIVE)
+ if (line_type == RELATIVE)
{
Dwarf_Addr addr;
Dwarf_Line *line;
int line_number;
-
+
dwarf_assert ("dwarf_entrypc", dwarf_entrypc (this->function, &addr));
line = dwarf_getsrc_die (this->cu, addr);
dwarf_assert ("dwarf_getsrc_die", line == NULL);
}
else if (line_type == WILDCARD)
function_line (&lineno);
-
+
for (int l = lineno; ; l = l + 1)
{
set<int> lines_probed;
else
{
// We have the pointer: cast it to an integral type via &(*(...))
-
+
// NB: per bug #1187, at one point char*-like types were
// automagically converted here to systemtap string values.
// For several reasons, this was taken back out, leaving
// pointer-to-string "conversion" (copying) to tapset functions.
-
+
ty = pe_long;
if (typetag == DW_TAG_array_type)
c_translate_array (pool, 1, module_bias, typedie, tail, NULL, 0);
assert (module);
assert (cu);
dwarf_query * q = static_cast<dwarf_query *>(data);
-
+
string key = module_name + ":" + cu_name;
cu_function_cache_t *v = cu_function_cache[key];
if (v == 0)
if (q->sess.verbose > 4)
clog << "function cache " << key << " size " << v->size() << endl;
}
-
+
string subkey = q->function;
if (v->find(subkey) != v->end())
{
{
if (q->sess.verbose > 4)
clog << "function cache " << key << " match " << func_name << " vs " << subkey << endl;
-
+
rc = (*callback)(& die, data);
if (rc != DWARF_CB_OK) break;
}
blfn_ret += ")$";
blfile += ")$";
- if (sess.verbose > 2)
+ if (sess.verbose > 2)
{
clog << "blacklist regexps:" << endl;
clog << "blfn: " << blfn << endl;
while (i != e && *i != ':' && *i != '+')
file += *i++;
- if (*i == ':')
+ if (*i == ':')
{
if (*(i + 1) == '*')
line_type = WILDCARD;
if (line_type != WILDCARD)
{
string::const_iterator dash = i;
-
+
while (dash != e && *dash != '-')
dash++;
if (dash == e)
line[1] = lex_cast<int>(string(dash + 1, e));
}
}
-
+
if (sess.verbose>2)
clog << "parsed '" << spec
<< "' -> func '"<< function
if (rc != DWARF_CB_OK)
q->query_done = true;
- if (q->sess.prologue_searching
+ if (q->sess.prologue_searching
&& !q->has_statement_str && !q->has_statement_num) // PR 2608
if (! q->filtered_functions.empty())
q->dw.resolve_prologue_endings (q->filtered_functions);
Dwarf_Die *scopes;
if (dwarf_getscopes_die (scope_die, &scopes) == 0)
return;
-
+
target_symbol *tsym = new target_symbol;
print_format* pf = new print_format;
{
tsym->tok = e->tok;
tsym->base_name = "$return";
-
+
// Ignore any variable that isn't accessible.
tsym->saved_conversion_error = 0;
this->visit_target_symbol(tsym); // NB: throws nothing ...
if (e->base_name == "$$locals")
continue;
break;
-
+
default:
continue;
}
-
+
const char *diename = dwarf_diename (&result);
tsym->tok = e->tok;
tsym->base_name = "$";
tsym->base_name += diename;
-
+
// Ignore any variable that isn't accessible.
tsym->saved_conversion_error = 0;
this->visit_target_symbol(tsym); // NB: throws nothing ...
sess.sym_kprobes_text_end = lookup_symbol_address (km, "__kprobes_text_end");
if (! sess.sym_stext)
sess.sym_stext = lookup_symbol_address (km, "_stext");
-
+
if (sess.verbose > 2)
{
clog << "control symbols:"
line++;
if (ret < 3)
{
- cerr << "Symbol table error: Line "
+ cerr << "Symbol table error: Line "
<< line
<< " of symbol list from "
<< path
mark_cache_const_iterator_pair_t ret;
mark_cache_const_iterator_t it;
bool matching_format_string = false;
-
+
ret = mark_cache.equal_range(name);
for (it = ret.first; it != ret.second; ++it)
{