This is the mail archive of the gas2@sourceware.cygnus.com mailing list for the gas2 project.


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

A GNU ld ELF bug (more info)


More info on it. There is NO .dynsym section in libmine.so created
by the SVR4/x86 ld.

H.J.
----
This test case shows a GNU ld ELF bug.

-- 
H.J. Lu
NYNEX Science and Technology, Inc.			hjl@nynexst.com
---
This directory contains files for SVR4/x86. There are two .s files,
main.s and libmine.s. libmine.s is used to build libmine.so. In ./lib,
there are three speciall files, crtbegin.o, crtend.o and libgcc.a.
The goal is build libmine.so and link it with main.o, then run the
resulting binary, TEST. The expected output is:

# LD_LIBRARY_PATH=. TEST
A ctor called
Hello foo
Hello ELF C++
A dtor called

But if libmine.so is built with the GNU ld in gas-941012, the output
is:

# LD_LIBRARY_PATH=. TEST
Hello foo
Hello ELF C++

Two calls in libmine.so are missing.

libmine.so.gnu is built with the GNU ld:

# gnu-ld -shared -o libmine.so ./lib/crtbegin.o -L. -L./lib libmine.o -lgcc ./lib/crtend.o -lgcc

and libmine.so.svr4 is built with the SVR4/x86 ld:

# /usr/ccs/bin/ld -V -G -dy -Y P,/usr/ccs/lib:/usr/lib -Qy -o libmine.so ./lib/crtbegin.o -L. -L./lib libmine.o -lgcc ./lib/crtend.o -lgcc

For the timeing, this test case has to be run under SVR4/x86. TEST
is built with

# gcc  -L. -B./lib/ -o TEST main.s -lmine