Here it is.

On 27/07/2015 07:53 μμ, Bill Williams wrote:
On 07/27/2015 11:41 AM, Ioannis Konstadelias wrote:
Sorry,

My bad. I should've tell you. I've also tried includeUninstrumentable =
true but the results were the same.

That seems fishy. Mind sending me the mutatee binary?

On 27/07/2015 07:01 μμ, Bill Williams wrote:
On 07/25/2015 11:44 AM, Ioannis Konstadelias wrote:
Hi everyone,

first of all I use the latest version of dyninstAPI (git head).

I was experimenting with the mutator program of the Appendix A from the
manuals (not the re-tee one),
and tried the custom really simple mutatee program below:

    #include <stdio.h>

    int foo() {return 1;}

    int main(void)
    {
         puts("Hello, world!");
         foo();
         return 0;
    }


I added the counter snippet for main and it worked. But never worked for
function foo. The error I took was:

    Reading symbols from ./func_instr...done.
    (gdb) run
    Starting program: /home/gon1332/Training/Dyninst/func_instr
    Traceback (most recent call last):
       File
"/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py",

    line 63, in <module>
         from libstdcxx.v6.printers import register_libstdcxx_printers
    ImportError: No module named 'libstdcxx'
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library
    "/lib/x86_64-linux-gnu/libthread_db.so.1".
    [New Thread 0x7ffff46af700 (LWP 23032)]
    [New Thread 0x7ffff3eae700 (LWP 23033)]
    [New Thread 0x7ffff34a4700 (LWP 23034)]
    *--SERIOUS-- #100: Image: Unable to find function: foo*

    Program received signal SIGSEGV, Segmentation fault.
    0x00000000004018c7 in findEntryPoint (app=0x63c100) at
func_instr.cc:50
    50        points = functions[0]->findPoint(BPatch_entry);
    (gdb) q
    A debugging session is active.

         Inferior 1 [process 23027] will be killed.

I tried nm and the foo function was there mangled:

    ➜  Dyninst  nm hello | grep foo
    000000000040057d T _Z3foov

but according to your note about findFunction:

    /*"*[NOTE: If name is not found to match any demangled function
names in the module, the search is repeated as if name is a mangled
    function name. If this second search succeeds, functions with
    mangled names matching name are returned instead.]*"*/

shouldn't it be working?

It should, but very small functions are not always marked as
instrumentable (which in practice means instrumentable without using
traps). Try findFunction with includeUninstrumentable = true, and let
me know if that works.

Should I demangle (or mangle) it by myshelf and then search?

Thanks,

Ioannis Konstantelias,
Undergraduate at University of Thessaly


_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api







--
Konstantelias Ioannis
Undergraduate at
Department of Electrical and Computer Engineering
University of Thessaly, Greece

Attachment: hello
Description: Binary data

_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to