[all-commits] [llvm/llvm-project] d34cb5: BOLT asserts on out-of-range pending relocs

Paschalis Mpeis via All-commits all-commits at lists.llvm.org
Mon Jan 20 08:27:37 PST 2025


  Branch: refs/heads/users/paschalis-mpeis/skip-oob-pending-relocs
  Home:   https://github.com/llvm/llvm-project
  Commit: d34cb521b1ae133a1e49a1ec12c21e3e5c8b32ed
      https://github.com/llvm/llvm-project/commit/d34cb521b1ae133a1e49a1ec12c21e3e5c8b32ed
  Author: Paschalis Mpeis <Paschalis.Mpeis at arm.com>
  Date:   2025-01-20 (Mon, 20 Jan 2025)

  Changed paths:
    M bolt/unittests/Core/BinaryContext.cpp

  Log Message:
  -----------
  BOLT asserts on out-of-range pending relocs


  Commit: b3902db9e7c40fc6bb04cb671a2601d35a14e51d
      https://github.com/llvm/llvm-project/commit/b3902db9e7c40fc6bb04cb671a2601d35a14e51d
  Author: Paschalis Mpeis <Paschalis.Mpeis at arm.com>
  Date:   2025-01-20 (Mon, 20 Jan 2025)

  Changed paths:
    M bolt/include/bolt/Core/BinarySection.h
    M bolt/include/bolt/Core/Relocation.h
    M bolt/lib/Core/BinaryFunction.cpp
    M bolt/lib/Core/BinarySection.cpp
    M bolt/lib/Core/Relocation.cpp
    M bolt/unittests/Core/BinaryContext.cpp

  Log Message:
  -----------
  [BOLT] Skip flushing optional out-of-range pending relocs

When a pending relocation is created it is also marked whether it is
optional or not. It can be optional when such relocation is added as
part of an optimization (i.e., `scanExternalRefs`).

When bolt tries to `flushPendingRelocations`, it safely skips any
optional relocations that cannot be encoded.

Background:
BOLT, as part of scanExternalRefs, identifies external references from
calls and creates some pending relocations for them. Those when flushed
will update references to point to the optimized functions. This
optimization can be disabled using `--no-scan`.

BOLT can assert if any of these pending relocations cannot be encoded.

This patch does not disable this optimization but instead selectively
applies it given that a pending relocation is optional.


Compare: https://github.com/llvm/llvm-project/compare/e9b0066e7e8f...b3902db9e7c4

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