I am using the "parseThat" program that ships with Dyninst. Executed it as:Â
parseThat --binary-edit=ssh-dyn -i 0 /usr/bin/ssh
Can you send me the source for the program you're using to do the
rewriting?
-- John
On 6/1/2016 12:04 PM, Mohamed Elsabagh
wrote:
No. Ubuntu 16.04 x86_64.
Mohamed,
Is this on Windows?
On 5/31/2016 6:25 PM, Mohamed Elsabagh wrote:
Hi John,
I pulled the latest commits to master. Now I don't
get any errors, but the resulting executable file
still doesn't run. It gives the same error: "cannot execute binary file:
Exec format error." ÂAny suggestions?
Mohamed
Hey Mohamed,
We found the issue that was causing the assert
and we updated the master branch on github. If you
want to clone or pull the most recent version it
should have the fix for your issue.
Let me know if you have any other issues,
-- John
On 5/31/2016 3:57 PM, Mohamed Elsabagh wrote:
Hi Josh,Â
decodeOneOperand() called with unknown
addressing method 18
And the resulting binary does not run: Exec
format error.Â
I also tried: `parseThat
--binary-edit=ssh.dyn -i 0 /us/bin/ssh`,Âand the resulting
binary (ssh.dyn) also fails to load, giving
the same Exec format error.
When I run
`file ssh.dyn`, the output shows no
interpreter.Â
What do you think?
Mohamed
Mohamed,
I did a fresh clone from github and I was
able to instrument /usr/bin/ssh on Ubuntu
16.04 server addition, are you sure you
are setting your LD_LIBRARY_PATH,
C_INCLUDE_PATH and CPLUS_INCLUDE_PATH to
the right directories? You may be
installing the newly built libraries into
a directory that isn't being searched by
GCC.
If you are installing globally and you
are installing into `/usr/local` you may
have to include these directories in your
environment:
export LD_LIBRARY_PATH="/usr/local/lib"
export
C_INCLUDE_PATH="/usr/local/include"
export
CPLUS_INCLUDE_PATH="/usr/local/include"
If you are still having issues, could you
send me a tarball of your dyninst
directory (source included)? That way I
know we're both looking at the same thing.
-- John
On 5/31/2016 12:52 PM, Mohamed Elsabagh
wrote:
Yes, that's what I did. I
did a fresh clone and install from github.com/dyninst/dyninst.
But I am now getting a different error:Â
decodeOneOperand() called with
unknown addressing method 18
And even though the output binary
is created, it does not execute
(exec format error). Â
Again,
I am testing with /usr/bin/ssh on
Ubuntu 16.04, without any
instrumentation (open, get default
module, get procedures, save).
Thanks,
Mohamed
On 5/31/2016 11:57 AM, Mohamed
Elsabagh wrote:
Hi John,Â
I pulled the latest commit
from git.dyninst.org,
which resulted in the error in
my previous email.Â
Now using a clone from the
github path your provided, I
am getting the following
message on stderr:Â
decodeOneOperand() called
with unknown addressing method
18
And even though the output
binary is created, it does not
execute (exec format error). Â
Again,
I am testing with
/usr/bin/ssh on Ubuntu
16.04, without any
instrumentation (open, get
default module, get
procedures, save).
Thanks,
Mohamed
Mohamed,
Are you sure you are using
the latest master? In my
version of
arch-x86.C line 7993 isn't
inside the ia32_decode
function. Could you
try pulling from master and
rebuilding/rerunning? If you
could provide
another stack trace that
would be really helpful.
-- John
P.S. here is the latest
commit information for
master
(http://github.com/dyninst/dyninst):
commit
df1523dd4003107b959046dd047402642f530c43
Merge: 85cebd3 06c649f
Author: Bill Williams <wwilliam47@xxxxxxxxx>
Date:Â ÂFri May 27 14:37:50
2016 -0500
  ÂMerge pull request #61
from
dyninst/Functions_not_filed_into_correct_Modules
  ÂFix Function/Module
mapping
On 5/30/2016 9:06 PM,
Mohamed Elsabagh wrote:
> There seems to be a
different issue now: calling
getProcedures() on
> the default module of a
stripped PIE results in an
assertion failure
> at
common/src/arc-x86.C:7993.
It seems that the heuristic
gap parser
> is trying to decode the
assembly as x86_32 instead
of x86_64 (I may be
> wrong though). Exact
stack trace is attached.
>
> This is triggered by
simply opening the binary,
getting the default
> module, then calling
getProcedure.
>
> Sample offending
program is /usr/bin/ssh on
Ubuntu 16.04 x86_64.
|