bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/30979] objdump --disassemble of a .o file ignores the relo


From: nickc at redhat dot com
Subject: [Bug binutils/30979] objdump --disassemble of a .o file ignores the relocations
Date: Wed, 18 Oct 2023 13:23:50 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=30979

Nick Clifton <nickc at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nickc at redhat dot com

--- Comment #8 from Nick Clifton <nickc at redhat dot com> ---
(In reply to Bruno Haible from comment #4)
>   3b:   e8 00 00 00 00          call   40 <fesetround>
>                         3c: R_X86_64_PLT32      __stack_chk_fail-0x4
> 
> which is not satisfactory, because
>   - "40 <fesetround>" is still nonsense.
>   - The -0x4 gives a misleading impression as well.

The reason for this behaviour is that the disassembler prefers accuracy over
readability.  So for example the "40 <fesetround>" is accurate.  That is where
the call instruction at address 3b will go.  That is unless a relocation is
applied to the instruction.  But in the object file, the relocations are
present, not applied.

The "__stack_chk_fail-0x4" is also accurate, as this is the address that is
stored in the relocation.  The fact that the address is biased by -0x4 is
because of the nature of the call instruction, which automatically adds 0x4 to
whatever offset is stored inside it.

Of course the disassembler could produce more human readable output, as you
suggest.  But this would be this would be disingenuous - the output would no
longer accurately reflect the input - and prone to errors when the "obvious
human readable" version is in fact wrong due to whatever circumstances may
apply.

In the end, it comes down to the fact that if you are reading the output of the
disassembler, you are expected to know the instruction set, and the
relocations, and be able to perceive the intent of the code without the
disassembler holding your hand.

Having said all of that however, I am not going to object if you wish to submit
a patch to add an option that changes the disassembler's behaviour.  Perhaps
other people would prefer your version of the output too.  But I am not going
to write such a patch, as for me, I do not think that it is needed.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]