[PATCH] D86378: [tsan On arm64e, strip out ptrauth bits from incoming PCs

Julian Lettner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 21 15:42:13 PDT 2020


yln added a comment.

Thanks for tackling this!

I grepped for "pc" in the header and there are a couple more.

  ➤ grep "pc" compiler-rt/lib/tsan/rtl/tsan_interface.h
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read1_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read2_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read4_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read8_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read16_pc(void *addr, void *pc);  << defined in different file
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_write1_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_write2_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_write4_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_write8_pc(void *addr, void *pc);
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_write16_pc(void *addr, void *pc);  << defined in different file
  SANITIZER_INTERFACE_ATTRIBUTE void __tsan_func_entry(void *call_pc);
  
  void __tsan_external_read(void *addr, void *caller_pc, void *tag);  << missing
  void __tsan_external_write(void *addr, void *caller_pc, void *tag);  << missing
  void __tsan_read_range_pc(void *addr, unsigned long size, void *pc);  << ok
  void __tsan_write_range_pc(void *addr, unsigned long size, void *pc);  << ok
  
  // Do we even care about the go ones?
  
  void __tsan_go_atomic32_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic64_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic32_store(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic64_store(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic32_fetch_add(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic64_fetch_add(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic32_exchange(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic64_exchange(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
  void __tsan_go_atomic32_compare_exchange(ThreadState *thr, uptr cpc, uptr pc,
  void __tsan_go_atomic64_compare_exchange(ThreadState *thr, uptr cpc, uptr pc,


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86378/new/

https://reviews.llvm.org/D86378



More information about the llvm-commits mailing list