[all-commits] [llvm/llvm-project] 381599: [ELF] Allow KEEP within OVERLAY (#130661)

Nathan Chancellor via All-commits all-commits at lists.llvm.org
Tue Mar 11 11:58:36 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 381599f1fe973afad3094e55ec99b1620dba7d8c
      https://github.com/llvm/llvm-project/commit/381599f1fe973afad3094e55ec99b1620dba7d8c
  Author: Nathan Chancellor <nathan at kernel.org>
  Date:   2025-03-11 (Tue, 11 Mar 2025)

  Changed paths:
    M lld/ELF/ScriptParser.cpp
    A lld/test/ELF/linkerscript/overlay-keep.test

  Log Message:
  -----------
  [ELF] Allow KEEP within OVERLAY (#130661)

When attempting to add KEEP within an OVERLAY description, which the
Linux kernel would like to do for ARCH=arm to avoid dropping the
.vectors sections with '--gc-sections' [1], ld.lld errors with:

  ld.lld: error: ./arch/arm/kernel/vmlinux.lds:37: section pattern is expected
  >>>  __vectors_lma = .; OVERLAY 0xffff0000 : AT(__vectors_lma) { .vectors { KEEP(*(.vectors)) } ...
  >>>                                                                               ^

readOverlaySectionDescription() does not handle all input section
description keywords, despite GNU ld's documentation stating that "The
section definitions within the OVERLAY construct are identical to those
within the general SECTIONS construct, except that no addresses and no
memory regions may be defined for sections within an OVERLAY."

Reuse the existing parsing in readInputSectionDescription(), which
handles KEEP, allowing the Linux kernel's use case to work properly.

[1]: https://lore.kernel.org/20250221125520.14035-1-ceggers@arri.de/



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list