This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: MIPS textrel fix


Thiemo Seufer wrote:
David Daney wrote:

Daniel Jacobowitz wrote:

While stuck offline earlier today, I revisited the textrel-1 MIPS
failure.  Eric originally tried setting DF_TEXTREL during section
relocation, but it's too late: we add the entry in size_dynamic_sections.
But I couldn't see any other way to get it right, since there's no
hook to predict whether elf-eh-frame.c will eliminate a relocation.

The easiest approach I found was to annul the DT_TEXTREL and DT_FLAGS
changes in finish_dynamic_sections if no text relocations were
actually generated.  This is not immensely pretty, but does work.
OK?

For background, the problem arises from the use of absolute addresses
in .eh_frame.  In this case, they're being produced by gas CFI
directives.  Is there a reason we can't mix and match encodings?
i.e. why not have gas use a PC-relative format?  I'm sure there's
a reason, but I can't think of it...


Could it be related to the reason that GCC no longer generates a PC-relative .eh_frame?


I never fully understood the reason, but I think it has to do with MIPS-ELF specifications not allowing the needed relocation types (even though they work well in binutils/glibc/linux).


The needed relocation types were originally defined for embedded PIC
MIPS and are not available in the ABI spec, their use for eh_frame
was an accident. When the removal of embedded PIC support broke the
toolchain, the fix chosen was to become ABI compatible again.


Not to beat a dead horse, but it would be nice to have a gnu extension that allows us to have read-only eh_frame sections. Large C++ shared libraries have way to many relocations. It is a lot of dirty pages in the name of ABI compliance.


David Daney.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]