[all-commits] [llvm/llvm-project] 201d76: [ELF] Add context-aware diagnostic functions (#112...

Fangrui Song via All-commits all-commits at lists.llvm.org
Wed Nov 6 08:26:20 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 201d7607f87afff999b1257d27569a3053b85143
      https://github.com/llvm/llvm-project/commit/201d7607f87afff999b1257d27569a3053b85143
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-11-06 (Wed, 06 Nov 2024)

  Changed paths:
    M lld/Common/ErrorHandler.cpp
    M lld/ELF/Config.h
    M lld/ELF/Driver.cpp
    M lld/ELF/InputFiles.cpp
    M lld/ELF/InputFiles.h
    M lld/ELF/Target.cpp
    M lld/ELF/Target.h
    M lld/include/lld/Common/ErrorHandler.h

  Log Message:
  -----------
  [ELF] Add context-aware diagnostic functions (#112319)

The current diagnostic functions log/warn/error/fatal lack a context
argument and call the global `lld::errorHandler()`, which prevents
multiple lld instances in one process.

This patch introduces context-aware replacements:

* log => Log(ctx)
* warn => Warn(ctx)
* errorOrWarn => Err(ctx)
* error => ErrAlways(ctx)
* fatal => Fatal(ctx)

Example: `errorOrWarn(toString(f) + "xxx")` => `Err(ctx) << f << "xxx"`.
(`toString(f)` is shortened to `f` as a bonus and may access `ctx`
without accessing the global variable (see `Target.cpp`)).

`ctx.e = &context->e;` can be replaced with a non-global Errorhandler
when `ctx` becomes a local variable.

(For the ELF port, the long term goal is to eliminate `error`. Most can
be straightforwardly converted to `Err(ctx)`.)



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