[llvm-bugs] [Bug 33820] New: After r307364, some versioned symbols do not appear in .so files

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Jul 17 10:46:50 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=33820

            Bug ID: 33820
           Summary: After r307364, some versioned symbols do not appear in
                    .so files
           Product: lld
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: ELF
          Assignee: unassignedbugs at nondot.org
          Reporter: dimitry at andric.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 18806
  --> https://bugs.llvm.org/attachment.cgi?id=18806&action=edit
Minimized test case for symbol versioning problem

As reported on https://reviews.llvm.org/rL307364, after this change I got
errors while linking the FreeBSD base system, similar to:

ld.lld: error: undefined symbol: openat
>>> referenced by dma-mbox-create.c:175 (/home/dim/src/clang500-import/contrib/dma/dma-mbox-create.c:175)
>>>               dma-mbox-create.o:(main)

It turns out openat is a versioned symbol, which appears twice in libc.so.7:

$ readelf -sW /lib/libc.so.7 | grep -w openat
  3087: 000000000004e2e0   203 FUNC    WEAK   DEFAULT   11 openat at FBSD_1.1
  3088: 000000000004e2e0   203 FUNC    WEAK   DEFAULT   11 openat@@FBSD_1.2

When doing the link with lld, on aarch64, the openat@@FBSD_1.2 version
disappears, for some reason.

I've attached a minimized test case in a tarball.  There is a Makefile in the
extracted directory, which links with both ld.bfd and ld.ldd, and shows the
difference in output.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170717/6d04cd54/attachment.html>


More information about the llvm-bugs mailing list