[all-commits] [llvm/llvm-project] 5748a7: [builtins] Fix integer/pointer confusion in gcc_pe...

Jessica Clarke via All-commits all-commits at lists.llvm.org
Wed Jan 27 11:34:36 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5748a71ba3da69e9f0bfb2024eadfe6eeacade01
      https://github.com/llvm/llvm-project/commit/5748a71ba3da69e9f0bfb2024eadfe6eeacade01
  Author: Jessica Clarke <jrtc27 at jrtc27.com>
  Date:   2021-01-27 (Wed, 27 Jan 2021)

  Changed paths:
    M compiler-rt/lib/builtins/gcc_personality_v0.c

  Log Message:
  -----------
  [builtins] Fix integer/pointer confusion in gcc_personality_v0.c

This fixes the implementation for architectures like CHERI with strong
pointer provenance (pointers, and thus uintptr_t, are represented as
hardware capabilities). Specifically, adding two uintptr_t's together
(as is done for `start + length` and `funcStart + landingPad`) has
ambiguous provenance, whereas using a plain integer (such as size_t) for
the offset operand does not. Also, readULEB128 is creating a plain
integer, not a pointer.

On all currently-supported architectures this should be an NFC, as
size_t and uintptr_t end up being the same underlying plain integer
type.

Reviewed By: MaskRay

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




More information about the All-commits mailing list