User Details
- User Since
- Dec 28 2012, 2:34 PM (420 w, 2 d)
Fri, Jan 15
This causes us to reject the following (reduced from AOSP):
int sprintf(char* __s, const char* __fmt, ...) __attribute__((__format__(printf, 2, 3))) ; int sprintf(char* dest, const char* format) __attribute__((overloadable)) __attribute__((enable_if(((__builtin_object_size(((dest)), (1))) != ((unsigned long) -1) && (__builtin_object_size(((dest)), (1))) < (__builtin_strlen(format))), "format string will always overflow destination buffer")))
Tue, Jan 12
- Instead of updating an existing ring buffer entry, create a new entry
- Disable memory tagging in the test allocator if disabled via prctl()
Fri, Jan 8
Thu, Jan 7
Fixes for Fuchsia
Wed, Jan 6
It's ready to go in if you don't mind me breaking Fuchsia. Otherwise I can wait for a Fuchsia implementation of setMemoryPermission() from you.
Tue, Jan 5
- Rename test
Wed, Dec 30
Sure, here is the .ll file.
Reproduces with opt -O2 -S test2.ll.
Tue, Dec 29
It looks like this patch caused an assertion failure:
$ cat test.ii # 1 "" 3 typedef int a; typedef unsigned b; struct c { template <typename d> c(d e) : f(e) {} int f; }; struct g { template <typename h, typename ad> g(h e, ad) : ae(e), af(0) {} c ae; c af; }; template <typename ag, typename i> auto ah(ag e, i) { return g(e, 0); } class j { public: void k(); }; class l; class m { public: m(int, l, int); }; class l { public: l(int, int); }; class n { bool o(); int ax; }; template <typename> using ay = m; template <typename, typename> using bc = l; class p { public: int *m_fn3(); a q(); }; class r { public: r(int) : bh(0, bc<int, int>(int(), bi), bi), bj(int(), bi), bk(int(), bi), bl(int(), bi) { p bn; int *base = bn.m_fn3(); a bo = base == nullptr ?: bn.q(); if (bo) for (auto bp = ah(bo, 0); __builtin_expect(bp.ae.f >= bp.af.f, false);) j().k(); } int bi; ay<bc<int, int>> bh; bc<int, int> bj; bc<b, bool> bk; bc<b, int> bl; }; bool n::o() { r bq(ax); } $ ~/l2/ra/bin/clang -O2 test.ii clang: ../llvm/include/llvm/IR/Instructions.h:2767: llvm::Value *llvm::PHINode::getIncomingValueForBlock(const llvm::BasicBlock *) const: Assertion `Idx >= 0 && "Invalid basic block argument!"' failed.
Wed, Dec 23
- Set MAP_MEMTAG only if tagging enabled
Tue, Dec 22
Mon, Dec 21
Show fault address for SEGV_MTESERR
Dec 17 2020
Add test
Dec 16 2020
Fix MTE issue
I don't think we should do this unless it fixes a bug. What happens if you remove it from the other two places?
Dec 15 2020
Dec 14 2020
Dec 9 2020
LGTM
Dec 8 2020
Dec 4 2020
Dec 3 2020
Dec 1 2020
I think @cferris was asking whether old scudo was still being used by asan/hwasan. To which the answer is "no" I believe, the sanitizers have their own independent copy of the allocator.
Nov 23 2020
LGTM
Nov 20 2020
Can we not just drop support for Android in non-standalone Scudo? As far as I know it is only being used (if at all) on a limited set of platforms which does not include Android.
LGTM
Nov 19 2020
Nov 18 2020
I've said before that I think that --lto-whole-program-visibility should relax visibility of vtable symbols etc to hidden. That way, --export-dynamic wouldn't actually allow you to make this kind of mistake.
Nov 16 2020
What is the use case?
Nov 13 2020
How does Zircon handle tagged addresses in syscalls? Are they handled equivalently to Linux's tagged address ABI?
Nov 10 2020
Nov 5 2020
With this change we will end up with blocks distributed randomly among all of the transfer batches that we create at one time instead of having all of a transfer batch's blocks be consecutive. So we improve randomness at the cost of some locality which could impact performance. I'd be fine with letting this land though and we can see if it significantly impacts performance in practice once it's picked up downstream.
Nov 4 2020
Nov 3 2020
I agree with @MaskRay that this should be a binutils-specific option. The flag -mlinker-version seems to have been designed around macOS-specific assumptions i.e. there is a single linker (ld64) and that the linker and assembler are not version coupled. Having this option be binutils-specific seems like the best way to reflect the binutils-specific requirements.
Oct 30 2020
Correct, clang no longer uses objcopy for this as of D47093.
Oct 29 2020
Revert unnecessary change, fix tests
For the kernel I measured a small regression in boot time (with a version of this change that uses x20 for the v1 checks as well since the kernel doesn't use short granules yet) -- from 6.65s to 6.70s or 0.8%. But that's a fraction of the size gains which were 4% for kernel and (as mentioned) 3% for userspace.