Date: Sun, 15 Nov 2020 11:28:02 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r367704 - in stable: 11/contrib/llvm-project/lld/ELF 12/contrib/llvm-project/lld/ELF Message-ID: <202011151128.0AFBS2JJ055309@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Sun Nov 15 11:28:02 2020 New Revision: 367704 URL: https://svnweb.freebsd.org/changeset/base/367704 Log: MFC r367623: Merge commit 8df4e6094 from llvm git (by Fangrui Song): [ELF] Don't consider SHF_ALLOC ".debug*" sections debug sections Fixes PR48071 * The Rust compiler produces SHF_ALLOC `.debug_gdb_scripts` (which normally does not have the flag) * `.debug_gdb_scripts` sections are removed from `inputSections` due to --strip-debug/--strip-all * When processing --gc-sections, pieces of a SHF_MERGE section can be marked live separately `=>` segfault when marking liveness of a `.debug_gdb_scripts` which is not split into pieces (because it is not in `inputSections`) This patch circumvents the problem by not treating SHF_ALLOC ".debug*" as debug sections (to prevent --strip-debug's stripping) (which is still useful on its own). Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D91291 This should fix lld segfaulting when linking the rust-based parts of the devel/py-maturin port. Reported by: Nick Venenga <nijave@gmail.com> PR: 250783 Modified: stable/12/contrib/llvm-project/lld/ELF/InputSection.h Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/contrib/llvm-project/lld/ELF/InputSection.h Directory Properties: stable/11/ (props changed) Modified: stable/12/contrib/llvm-project/lld/ELF/InputSection.h ============================================================================== --- stable/12/contrib/llvm-project/lld/ELF/InputSection.h Sun Nov 15 07:57:45 2020 (r367703) +++ stable/12/contrib/llvm-project/lld/ELF/InputSection.h Sun Nov 15 11:28:02 2020 (r367704) @@ -358,7 +358,8 @@ class InputSection : public InputSectionBase { (privat }; inline bool isDebugSection(const InputSectionBase &sec) { - return sec.name.startswith(".debug") || sec.name.startswith(".zdebug"); + return (sec.flags & llvm::ELF::SHF_ALLOC) == 0 && + (sec.name.startswith(".debug") || sec.name.startswith(".zdebug")); } // The list of all input sections.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202011151128.0AFBS2JJ055309>