Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
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); << missing, 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); << missing, 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,
Comment Actions
Great finds, thanks! I've updated the missing places. I'm leaving the Go parts alone, for now, as Go isn't using ptrauth.