From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 88009 invoked by alias); 4 Oct 2018 10:19:22 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 87959 invoked by uid 48); 4 Oct 2018 10:19:18 -0000 From: "jose.marchesi at oracle dot com" To: elfutils-devel@sourceware.org Subject: [Bug general/23732] Test failures on sparc64-linux-gnu Date: Thu, 04 Oct 2018 10:19:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: elfutils X-Bugzilla-Component: general X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jose.marchesi at oracle dot com X-Bugzilla-Status: RESOLVED X-Bugzilla-Resolution: FIXED X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: jose.marchesi at oracle dot com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2018-q4/txt/msg00003.txt.bz2 https://sourceware.org/bugzilla/show_bug.cgi?id=3D23732 Jose E. Marchesi changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution|--- |FIXED --- Comment #2 from Jose E. Marchesi --- Allright, this turned out to be a BFD bug, not an elfutils bug. Fixed with the binutils commit below. Salud! commit 6d0a6093c5fe82eb4c2b67d3d10fa44eeb0bc98b Author: Jose E. Marchesi Date: Thu Oct 4 02:12:48 2018 -0700 bfd,sparc: fix the .dynsym sh_index when stripping all symbols in ld The SPARC ELF BFD backend uses a hack in order to accomodate the STT_REGISTER symbols mandated by the SPARC V9 ABI for 64-bit objects. The hack works as follows: - Early in `size_dynamic_symbols', it adds the dynamic STT_REGISTER symbols and the corresponding DT_SPARC_REGISTER tags if needed, i.e. if the input object has been annotated by the assembler to use any of the global registers requiring annotations by the ABI. The STT_REGISTER symbols are not local, but nevertheless they are added to the end of the dynlocal linked list (eek, yes) to be fixed "later". This is done so the symbols are emitted in the symtab. - Consequently, when the `sh_info' field of the .dynsym section is calculated in `bfd_elf_final_link' to be `local_dynsymcount + 1', it may have the wrong value, since the real first global symbol is the first STT_REGISTER symbol. - However, this temporary inconsistency is fixed in the `elf64_sparc_output_arch_syms' backend hook: the sh_index is adjusted to its rightful value. So all is well and good. However the 2015 changeset commit 8539e4e89eb4c54bb6668582cd709765a3803588 Author: Alan Modra Date: Thu Jan 15 19:42:59 2015 +1030 Fix ARM fail of gap test ld-elf/gap test was failing due to the ARM backend attempting to ou= tput arch symbols when ld -s (strip all symbols) is in force. This patch stops that happening and tidies the code a little. made the `elf_backend_output_arch_syms' backend hook to not be called when all symbols are to be stripped. This resulted in an incorrect sh_index for .dynsym when a link is performed with -s (strip_all), in 64-bit sparc ELF objects. This patch moves the sh_index adjusting code from the target `output_arch_syms' to `finish_dynamic_sections'. It also removes the strip_all check from `elf64_sparc_output_arch_syms', as the function is no longer called in that case. Tested in sparc64-linux-gnu and sparc-linux-gnu. No regressions observed. bfd/ChangeLog: 2018-10-04 Jose E. Marchesi * elf64-sparc.c (elf64_sparc_output_arch_syms): Do not correct = the impact of STT_REGISTER symbols in the dynsym sh_index here... * elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_sections): ... b= ut do it here. --=20 You are receiving this mail because: You are on the CC list for the bug.