objdump of binary for micromips.
Kenneth Johansson
kenneth.johansson@inteno.se
Wed Jan 11 19:22:00 GMT 2017
On 2017-01-11 19:55, Maciej W. Rozycki wrote:
> On Tue, 27 Dec 2016, Kenneth Johansson wrote:
>
>>> you specified the arch as mips, so you'll get mips32. if you run
>>> `objdump -h`, you'll see a huge list of other arch values. you
>>> probably want to use something like "mips:micromips".
>>> -mike
>> tanks I did not understand the syntax but it did still not work out. the
>> lauterbach trace32 debug understands the code but objdump gets confused.
> The `-M mips:micromips' option is only really there for binaries with no
> symbol information available, so that you can manually choose the correct
> disassembly mode, e.g. for the binary or SREC BFD. If the binary you
> examine does have symbol information, then the ISA mode will be determined
> on a function by function basis according to ISA annotation recorded with
> individual symbols in the symbol table, ignoring any `-M mips:micromips'
> (or `-M mips:16') override. So either your code is really made of regular
> MIPS instructions or you have got symbol annotation wrong in your binary
> -- which sometimes happens in handcoded assembly that hasn't been written
> correctly (GCC is supposed to get it right for generated code).
>
> If you think the binary has been or should have been annotated correctly
> and believe this is a toolchain bug, then please provide us with a test
> case and we will investigate.
no this was from a binary blob so no symbols no nothing and turned out
to be a mix of normal mips32 and mips16 and not micromips as I thought
it was.
The only way I could read it was to disassemble only small parts at a
time and then change the flags if it looked to strange.
But one thing I do think is a "bug" or at least a missing feature is
that there seems to be no way to make loads and stores that is relative
to a register display the offset in hex now it only uses decimal and
that is very inconvenient.
890372a: f401 da88 sw a0,3080(v0)
would have been much easier to read/grep if it would have been
890372a: f401 da88 sw a0,0xc08(v0)
as it happens that most(all) documentation for hardware uses hex numbers
for hardware register addresses.
More information about the Binutils
mailing list