bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/27666] New: ar doesn't create indices on Solaris/sparcv9


From: ro at gcc dot gnu.org
Subject: [Bug binutils/27666] New: ar doesn't create indices on Solaris/sparcv9
Date: Tue, 30 Mar 2021 12:35:21 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=27666

            Bug ID: 27666
           Summary: ar doesn't create indices on Solaris/sparcv9
           Product: binutils
           Version: 2.37 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: ro at gcc dot gnu.org
                CC: amodra at gmail dot com
  Target Milestone: ---
            Target: sparcv9-sun-solaris2.*

On binutils master, quite a number of tests currently fail on Solaris/sparcv9.

E.g.

FAIL: ar thin archive

and several more where the Archive index: section is missing from the nm
--print-armap output.

Likewise, several ld tests FAIL like this:

./ld-new: tmpdir/libpr25910.a: error adding symbols: archive has no index; run
ranlib to add one
failed with: <./ld-new: tmpdir/libpr25910.a: error adding symbols: archive has
no index; run ranlib to add one>, no expected output
FAIL: --export-dynamic-symbol foo archive

And indeed, even with an explicit ar rs no index is created.  This is not very
easy to diagnose, it seems: I needed to use file to note the common issue of
missing archive index.

Looking back, this has worked in binutils 2.35, but was already broken in 2.36.

Using side-by-side debugging with (working) Solaris/amd64 and (broken)
Solaris/sparcv9, I found that in _bfd_write_archive_contents hasobjects 
remains 0 after the bfd_check_format call.

In format.c (bfd_check_format_matches), the second call to

BFD_SEND_FMT (abfd, _bfd_check_format, (abfd))

on l.343 matches only once on amd64 (for x86_64_elf64_sol2_vec), while it
matches twice on sparcv9 (both for sparc_elf64_sol2_vec and sparc_elf64_vec).

That sort of rang a bell and I found that

https://sourceware.org/pipermail/binutils/2021-January/114778.html

commit 3677b7296185e6abfe8327c00c460712151ade15
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Jan 6 12:01:10 2021 +1030

    sparc-sun-solaris2 and sparc64-sun-solaris2 config

had added the non-_sol2 vectors on Solaris/SPARC.  Reverting the config.bfd
part of the patch fixed the archive index issue.

I believe that I had omitted the non-_sol2 vectors for a reason back in 2010:

http://sourceware.org/ml/binutils/2010-10/msg00348.html

There were similar ambiguities IIRC.

On top of that, I believe the failing tests are better fixed differently:

* You've already taken the first step in making the dump files both forms of
  the target names, with and without the _sol2 suffix.

* The next step, I believe, would be to pass -m..._sol2 on Solaris (both sparc
  and x86).

* The ugliest part is that due to differences in the Solaris ABI, the dumps
  differ from the Linux ones.  Unfortunately, there's no way to represent
  conditional sections in the dumps and keeping separate copies almost
guarantees
  that they diverge in the future.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]