[all-commits] [llvm/llvm-project] 3d1739: [ELF] Add context-aware diagnostic functions

Fangrui Song via All-commits all-commits at lists.llvm.org
Wed Oct 30 00:18:41 PDT 2024


  Branch: refs/heads/users/MaskRay/spr/elf-add-context-aware-diagnostic-functions
  Home:   https://github.com/llvm/llvm-project
  Commit: 3d1739d821f916c754dada7c4ed0dbc228358ae8
      https://github.com/llvm/llvm-project/commit/3d1739d821f916c754dada7c4ed0dbc228358ae8
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-10-30 (Wed, 30 Oct 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

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)`.)

Pull Request: https://github.com/llvm/llvm-project/pull/112319



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