[all-commits] [llvm/llvm-project] 37bd09: [LLD][COFF] Fix absolute & synthetic symbols in CO...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Mon Sep 26 01:07:08 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 37bd099dafbdf71274f43b869904f710546f4bb9
      https://github.com/llvm/llvm-project/commit/37bd099dafbdf71274f43b869904f710546f4bb9
  Author: Alvin Wong <alvin at alvinhc.com>
  Date:   2022-09-26 (Mon, 26 Sep 2022)

  Changed paths:
    M lld/COFF/Writer.cpp
    A lld/test/COFF/symtab-DefinedSynthetic.s
    M lld/test/COFF/symtab.test
    M lld/test/COFF/wrap-i386.s
    M lld/test/COFF/wrap.s

  Log Message:
  -----------
  [LLD][COFF] Fix absolute & synthetic symbols in COFF symbol table

Absolute symbol should contain its absolute value, but LLD had been
writing its RVA instead. Write its VA instead.

DefinedSynthetic were being skipped before with the reasoning "Relative
symbols are unrepresentable in a COFF symbol table", which is only true
if the RVA points to outside of a section. LLD does create synthetic
symbols which points to actual data chunks (typical for symbols embedded
into the load config directory). Write these symbols to the COFF symbol
table too.

Reviewed By: mstorsjo

Differential Revision: https://reviews.llvm.org/D134462


  Commit: be5582981a748b9a48db71911dad9136d19c7997
      https://github.com/llvm/llvm-project/commit/be5582981a748b9a48db71911dad9136d19c7997
  Author: Alvin Wong <alvin at alvinhc.com>
  Date:   2022-09-26 (Mon, 26 Sep 2022)

  Changed paths:
    A llvm/test/tools/llvm-readobj/COFF/exports-forwarder.yaml
    M llvm/tools/llvm-readobj/COFFDumper.cpp

  Log Message:
  -----------
  [llvm-readobj][COFF] Print forwarder export symbols correctly

Reviewed By: mstorsjo

Differential Revision: https://reviews.llvm.org/D134528


  Commit: 8a3597d73c8f694ca8c991d8cb4bb97a4ac8ba8c
      https://github.com/llvm/llvm-project/commit/8a3597d73c8f694ca8c991d8cb4bb97a4ac8ba8c
  Author: Martin Storsjö <martin at martin.st>
  Date:   2022-09-26 (Mon, 26 Sep 2022)

  Changed paths:
    M lldb/source/Interpreter/CommandInterpreter.cpp
    A lldb/test/Shell/Driver/CommandOnCrashMultiThreaded.test
    A lldb/test/Shell/Driver/Inputs/CommandOnCrashMultiThreaded.cpp

  Log Message:
  -----------
  [lldb] Fix CommandInterpreter::DidProcessStopAbnormally() with multiple threads

If a process has multiple threads, the thread with the stop
info might not be the first one in the thread list.

On Windows, under certain circumstances, processes seem to have
one or more extra threads that haven't been launched by the
executable itself, waiting in NtWaitForWorkViaWorkerFactory. If the
main (stopped) thread isn't the first one in the list (the order
seems nondeterministic), DidProcessStopAbnormally() would return
false prematurely, instead of inspecting later threads.

The main observable effect of DidProcessStopAbnormally() erroneously
returning false, is when running lldb with multiple "-o" parameters
to specify multiple commands to execute on the command line.

After an abnormal stop, lldb would stop executing "-o" parameters
and execute "-k" parameters instead - but due to this issue, it
would instead keep executing "-o" parameters as if there was no
abnormal stop. (If multiple parameters are specified via a script
file via the "-s" option, all of the commands in that file are
executed regardless of whether there's an abnormal stop inbetween.)

Differential Revision: https://reviews.llvm.org/D134037


Compare: https://github.com/llvm/llvm-project/compare/a096164134ab...8a3597d73c8f


More information about the All-commits mailing list