[all-commits] [llvm/llvm-project] 375371: [ELF] Fix includeInDynsym() when an undefined weak...

Fangrui Song via All-commits all-commits at lists.llvm.org
Thu Jan 9 16:24:08 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 375371cc8bff7ba02d0a2203f80de5e640fcadf1
      https://github.com/llvm/llvm-project/commit/375371cc8bff7ba02d0a2203f80de5e640fcadf1
  Author: Fangrui Song <maskray at google.com>
  Date:   2020-01-09 (Thu, 09 Jan 2020)

  Changed paths:
    M lld/ELF/Symbols.cpp
    M lld/test/ELF/weak-undef-lib.s

  Log Message:
  -----------
  [ELF] Fix includeInDynsym() when an undefined weak is merged with a lazy definition

An undefined weak does not fetch the lazy definition. A lazy weak symbol
should be considered undefined, and thus preemptible if .dynsym exists.

D71795 is not quite an NFC. It errors on an R_X86_64_PLT32 referencing
an undefined weak symbol. isPreemptible is false (incorrect) => R_PLT_PC
is optimized to R_PC => in isStaticLinkTimeConstant, an error is emitted
when an R_PC is applied on an undefined weak (considered absolute).




More information about the All-commits mailing list