BE8 elf format on gold

Hi Guys ,

We are trying to enable LTO on our code base for clang(3.8) using
gold linker , and we are stuck with below error

bash-4.1$ /arm-install/bin/ --be8

/arm-install/bin/ --be8: unknown option

And found that ,Be8 (byte invariant addressing) is not supported in
the gold linker,

Questions is ,how do we go from here ?

Do be8 format is very mandatory for armv7(big endian) ? Or we can
proceed without –be8 option ??
Or What else options we have

Any comments or suggestion are appreciated here guys ??

Thank you


You should be fine. It looks like gold does support big-endian on ARM,
and the default is almost certainly BE8 (BE32 is widely regarded as a
mistake best forgotten).



Thank you Tim and Doug you said that BE8 is not supported and i'm bit
confused now :frowning:


While most parts of gold are written to support both big and little endian targets, the arm32 backend has not been tested on anything that is not little-endian. Pure big-endian config might work out of the box but I have never tried it myself.

If I understand correctly, --be8 tells the linker to emit output with little-endian instruction but big-endian data. gold currently does not support this. We need to add code to emit branch stubs in correct endianness and also byte swap the input instructions.


Believe Doug over me, I'm very much a binutils outsider and was just
going by apparent references to big-endian in the code and the fact
that no-one would intentionally only support BE32 these days.