Page MenuHomePhabricator

[WIP][clang][Fuchsia] Support HWASan for Fuchsia
Needs ReviewPublic

Authored by leonardchan on Nov 13 2020, 3:10 PM.

Details

Summary

This tracks all the compiler/llvm changes needed for building Fuchsia with the HWASan variant.

Diff Detail

Event Timeline

leonardchan created this revision.Nov 13 2020, 3:10 PM
Herald added subscribers: Restricted Project, mgorny. · View Herald TranscriptNov 13 2020, 3:10 PM
leonardchan requested review of this revision.Nov 13 2020, 3:10 PM
leonardchan planned changes to this revision.
pcc added a subscriber: pcc.Nov 13 2020, 4:11 PM

How does Zircon handle tagged addresses in syscalls? Are they handled equivalently to Linux's tagged address ABI?

Locally I'm able to build and run the bringup.arm64 config (that is launch the shell and run some commands).

Herald added a project: Restricted Project. · View Herald TranscriptJan 15 2021, 5:09 PM
leonardchan added a comment.EditedJan 15 2021, 5:13 PM
In D91466#2395297, @pcc wrote:

How does Zircon handle tagged addresses in syscalls? Are they handled equivalently to Linux's tagged address ABI?

Woops, accidentally let this slide. I'm guessing you saw this in the Fuchsia patch, but I believe we haven't made a final decision yet on how syscalls will handle tagged pointers.

phosek added inline comments.Feb 18 2021, 12:03 AM
clang/lib/Driver/ToolChains/Fuchsia.cpp
100–101

Nit: can you move this above TSan so it's alphabetically sorted?

222
222–229

Can you move this above relative-vtables so we keep all sanitizers together?

225
compiler-rt/lib/hwasan/hwasan_fuchsia.cpp
122–124

I don't think this applies to Fuchsia.

compiler-rt/lib/hwasan/hwasan_poisoning.cpp
22

It might be better to move this function to a per-platform file rather than conditionally compiling the entire body.

@leonardchan would it be possible to break up this patch into multiple changes:

  • Clang driver
  • Cache file
  • hwasan_new_delete.cpp
  • HWAddressSanitizer.cpp
  • sanitizer_platform_limits_fuchsia.h
  • sanitizer_symbolizer_markup.cpp
  • the rest

Rebase against submitted changes.