|
@@ -686,6 +686,25 @@ static int find_variable(Dwarf_Die *sp_die, struct probe_finder *pf)
|
|
|
char buf[32], *ptr;
|
|
|
int ret, nscopes;
|
|
|
|
|
|
+ if (!is_c_varname(pf->pvar->var)) {
|
|
|
+ /* Copy raw parameters */
|
|
|
+ pf->tvar->value = strdup(pf->pvar->var);
|
|
|
+ if (pf->tvar->value == NULL)
|
|
|
+ return -ENOMEM;
|
|
|
+ if (pf->pvar->type) {
|
|
|
+ pf->tvar->type = strdup(pf->pvar->type);
|
|
|
+ if (pf->tvar->type == NULL)
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+ if (pf->pvar->name) {
|
|
|
+ pf->tvar->name = strdup(pf->pvar->name);
|
|
|
+ if (pf->tvar->name == NULL)
|
|
|
+ return -ENOMEM;
|
|
|
+ } else
|
|
|
+ pf->tvar->name = NULL;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
if (pf->pvar->name)
|
|
|
pf->tvar->name = strdup(pf->pvar->name);
|
|
|
else {
|
|
@@ -700,19 +719,6 @@ static int find_variable(Dwarf_Die *sp_die, struct probe_finder *pf)
|
|
|
if (pf->tvar->name == NULL)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- if (!is_c_varname(pf->pvar->var)) {
|
|
|
- /* Copy raw parameters */
|
|
|
- pf->tvar->value = strdup(pf->pvar->var);
|
|
|
- if (pf->tvar->value == NULL)
|
|
|
- return -ENOMEM;
|
|
|
- if (pf->pvar->type) {
|
|
|
- pf->tvar->type = strdup(pf->pvar->type);
|
|
|
- if (pf->tvar->type == NULL)
|
|
|
- return -ENOMEM;
|
|
|
- }
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
pr_debug("Searching '%s' variable in context.\n",
|
|
|
pf->pvar->var);
|
|
|
/* Search child die for local variables and parameters. */
|