[all-commits] [llvm/llvm-project] a2b502: [ELF] ICF: replace includeInDynsym with isExported

Fangrui Song via All-commits all-commits at lists.llvm.org
Mon Feb 17 16:16:29 PST 2025


  Branch: refs/heads/release/20.x
  Home:   https://github.com/llvm/llvm-project
  Commit: a2b502050302a4cf8a9c4e623331810eed51bb81
      https://github.com/llvm/llvm-project/commit/a2b502050302a4cf8a9c4e623331810eed51bb81
  Author: Fangrui Song <i at maskray.me>
  Date:   2025-02-17 (Mon, 17 Feb 2025)

  Changed paths:
    M lld/ELF/Driver.cpp
    M lld/test/ELF/icf-safe.s

  Log Message:
  -----------
  [ELF] ICF: replace includeInDynsym with isExported

Similar to the change to MarkLive.cpp when isExported was introduced.
includeInDynsym might return true even when isExported is false for
statically linked executables.

(cherry picked from commit 45f538ecba1a51768002a5bc0c194b5af4cd9c27)


  Commit: 02a511e42c6783f14ac45d71c5278dd031c1bcf7
      https://github.com/llvm/llvm-project/commit/02a511e42c6783f14ac45d71c5278dd031c1bcf7
  Author: Fangrui Song <i at maskray.me>
  Date:   2025-02-17 (Mon, 17 Feb 2025)

  Changed paths:
    M lld/ELF/Driver.cpp
    M lld/ELF/InputFiles.cpp
    M lld/ELF/SymbolTable.cpp
    M lld/ELF/Symbols.cpp
    M lld/ELF/Symbols.h
    M lld/ELF/SyntheticSections.cpp
    M lld/ELF/Writer.cpp

  Log Message:
  -----------
  [ELF] Merge exportDynamic/isExported and remove Symbol::includeInDynsym

Commit 3733ed6f1c6b0eef1e13e175ac81ad309fc0b080 introduced isExported to
cache includeInDynsym. If we don't unnecessarily set isExported for
undefined symbols, exportDynamic/includeInDynsym can be replaced with
isExported.

(cherry picked from commit d6fa74ab3d4cc77005836e72a2d6fe222bab4c59)


  Commit: 9bcc825ee491a85c2f7b1573d6a3abf6d5cf0c8a
      https://github.com/llvm/llvm-project/commit/9bcc825ee491a85c2f7b1573d6a3abf6d5cf0c8a
  Author: Fangrui Song <i at maskray.me>
  Date:   2025-02-17 (Mon, 17 Feb 2025)

  Changed paths:
    M lld/ELF/Config.h
    M lld/ELF/Driver.cpp
    M lld/ELF/Symbols.cpp
    M lld/ELF/SyntheticSections.cpp
    M lld/ELF/Writer.cpp
    M lld/test/ELF/executable-undefined-ignoreall.s
    M lld/test/ELF/ppc32-weak-undef-call.s
    M lld/test/ELF/ppc64-undefined-weak.s
    M lld/test/ELF/riscv-gp.s
    M lld/test/ELF/weak-undef-lib.s
    M lld/test/ELF/weak-undef-no-dynamic-linker.s
    M lld/test/ELF/weak-undef-rw.s

  Log Message:
  -----------
  [ELF] Refine isExported/isPreemptible condition

Reland 994cea3f0a2d0caf4d66321ad5a06ab330144d89 after bolt tests no
longer rely on -pie --unresolved-symbols=ignore-all with no input DSO
generating PLT entries.

---

Commit f10441ad003236ef3b9e5415a571d2be0c0ce5ce , while dropping a
special case for isUndefWeak and --no-dynamic-linking, made
--export-dynamic ineffective when -pie is used without any input DSO.

This change restores --export-dynamic and unifies -pie and -pie
--no-dynamic-linker when there is no input DSO.

* -pie with no input DSO suppresses undefined symbols in .dynsym.
  Previously this only appied to -pie --no-dynamic-linker.
* As a side effect, -pie with no input DSO suppresses PLT.

(cherry picked from commit 52fc6ffcda0895c0c7b976ad1f5cb5a282b571d2)


Compare: https://github.com/llvm/llvm-project/compare/94291653a741...9bcc825ee491

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