[adtools] Re: use libgcc.so instead of libgcc_s.so

  • From: Jens Langner <Jens.Langner@xxxxxxxxxxxxxx>
  • To: adtools@xxxxxxxxxxxxx, Jörg Strohmayer <j_s@xxxxxx>
  • Date: Tue, 08 Jul 2008 10:05:21 +0200

Henning Nielsen Lund schrieb:
Hi Jens

I have tried to check the old ppc-amigaos-gcc specs... could you please
try with simply exchange the REAL_LIBGCC_SPEC define in
gcc/gcc/config/rs6000/amigaos.h with the following:

#define REAL_LIBGCC_SPEC "-lgcc"

I will be away from my amiga untill sunday, so I will not be able to test
anymore this week.

This seems to work now, yes. However, I have just tested it with creating an own "specs" file. Now I don't need to explicitly specify "-static" to get everything linked statically. However, to link shared a linkage with "-use-dynld" alone doesn't seem to be enough anymore, I definitly have to specify "-shared" on the command-line to get GCC to link correctly or otherwise I get numerous of those "_Unwind_SjLj" errors again. But when I specify -shared everything seems to work. So again, what is this "-use-dynld" all about and why aren't we using "-shared" instead for linking an application against shared objects?

In addition, I also had a look at the shared linked binary and I notice that it was only linked shared against libstdc++.so and libc.so. The shared linkage against libgcc.so seems to be missing:

-- cut here --
Dynamic section at offset 0x56c10 contains 20 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
-- cut here --

The interesting think is, as soon as I rename the libgcc.a file to e.g. libgcc.a_bak so that it won't be found at link time I can spot that the binary will be correctly linked against libgcc.so:

-- cut here --
Dynamic section at offset 0x53e18 contains 17 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so]
 0x00000001 (NEEDED)                     Shared library: [libgcc.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
-- cut here --

So I guess our renaming of libgcc_s.so to libgcc.so is the reason for the above confusion, isn't it? The question is now how we can solve the problem so that we get a shared linkage of libgcc.so when "-shared" is used while when linked statically it uses libgcc.a? Should be perhaps rename libgcc.a to something else or should we go back to naming the shared lib libgcc_s.so and ask developers to update their suites?

P.S: I forwarded this mail to Jörg as well so that he might have a chance to comment. Jörg, don't you want to join the adtools mailing list to help us out a bit with all that fuzz stuff?

cheers,
jens
--
Jens Langner, Dresden/Germany
http://www.jens-langner.de/
______________________________________________________________________________
Amiga Development tools ML - //www.freelists.org/list/adtools
Homepage...................: http://www.sourceforge.net/projects/adtools
Listserver help............: mailto:adtools-request@xxxxxxxxxxxxx?Subject=HELP

Other related posts: