Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hi Francois,

On Mon, 2011-04-04 at 22:51 +0200, Francois Tigeot wrote:
During the last few days, my builds have been broken with this error message:
  makedepend: Shared object has no run-time symbol table

        Oh - that is a downer indeed. What system are you using ?

It adds the "--hash-style=gnu" string on ld invocations.
--hash-style=gnu sets the type of linker's hash tables to a new ".gnu.hash"
format.

        Right - if your gcc supports that, presumably your system library
should too [ after all, it is trivial to implement, and a huge speedup
for linking ].

The problem is, this flag also prevents ld to write classic ELF ".hash"
sections, preventing some systems to be able to run the generated binaries.

        Right - because they are big, and there is not much point in dragging
all that obsolete bloat around ;-)

One of my machines is using binutils-2.21 and cannot run binaries linked with
the --hash-style=gnu option. I need to investigate.

        So - if you want to create binaries to run on other systems, then you
need to beware. You will have hideous problems beyond belief, and way
beyond just linking issues: glibc symbol versions alone will break
almost everything :-)

Howewer, the fix is quite simple: replace --hash-style=gnu by
--hash-style=both The --hash-style=both option generates both old
and new-style sections, keeping all binutils happy.

        Well - we need to do this for the 'Generic' builds with an explicit
=both (cf. distro-configs) so it can run even on ancient systems, but
Linux distributions in general should use the --hash-style=gnu if it is
present in the toolchain (IMHO).

The attached patch does just that.

        So - I'm really not convinced :-) What system are you compiling on,
and/or did you upgrade your gcc/binutils without upgrading glibc ?

        I guess it might be a good idea to default to 'auto' for hash-style,
and compile and link a small test program with that, defaulting to 'gnu'
if that is supported, and no flag if not. Should be fairly easy to do
that with an AC_TRY_RUN (?).

        ie. since the win from --hash-style=gnu is fairly huge, I'd like to
have this by default wherever possible, --hash-style=both adds some real
chunk of data we don't need to the output, so it is not a great default
for a fast office suite :-)

        ATB,

                Michael.

-- 
 michael.meeks@novell.com  <><, Pseudo Engineer, itinerant idiot



Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.