18 Commits

Author SHA1 Message Date
NAKAMURA Takumi
8f86c6bf95 compiler-rt: Fix variadic macro warnings [-Wc++20-extensions]
They began complaining since #84520.
2024-03-26 08:45:12 +09:00
Vitaly Buka
693aa68b65 [NFC][sanitizer] Remove InternalScopedString::Append nullptr workaround
AppendF actually appends "<null>" which is not needed here.
2023-09-15 23:08:13 -07:00
Vitaly Buka
591266c56c
[NFC][sanitizer] Add InternalScopedString::Append (#66559) 2023-09-15 22:40:08 -07:00
Vitaly Buka
5b7dfa968f
[NFC][sanitizer] Rename InternalScopedString::append to AppendF (#66558)
Prepare to introduce trivial InternalScopedString::Append(const char*).
2023-09-15 17:06:20 -07:00
Vitaly Buka
254f9311fe [NFC][sanitizer] Fix veradic-macro warning in RAW_CHECK 2021-11-17 18:10:54 -08:00
Vitaly Buka
6934ab5f40 [sanitizer] Improve VSNPrintf internal diagnostics 2021-08-14 18:34:26 -07:00
Dmitry Vyukov
d4d2b0c682 sanitizer_common: support %l in format strings
Currently we only support %z and %ll width modifiers,
but surprisingly not %l. This makes it impossible to print longs
(sizeof(long) not necessary equal to sizeof(size_t)).
We had some printf's that printed longs with %zu,
but that's wrong and now with __attribute__((format)) in place
they are flagged by compiler. So we either have a choice of
doing static_cast<uptr>(long) everywhere or add %l.
Adding %l looks better, that's a standard modifier.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D108066
2021-08-14 17:57:40 -07:00
Dmitry Vyukov
ef6e1945af sanitizer_common: declare vars more locally in VSNPrintf
No point in declaring variables separately before use.

Depends on D107979.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D108015
2021-08-13 13:44:31 +02:00
Dmitry Vyukov
2a63edd64f Revert "sanitizer_common: support printing __m128i type"
This reverts commits
"sanitizer_common: support printing __m128i type"
and "[sanitizer] Fix VSNPrintf %V on Windows".

Unfortunately, custom "%V" is inherently incompatible with -Wformat,
it produces both:
warning: invalid conversion specifier 'V' [-Wformat-invalid-specifier]
warning: data argument not used by format string [-Wformat-extra-args]
If we disable both of these warnings we lose lots of useful warnings as well.

Depends on D107978.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D107979
2021-08-13 13:44:21 +02:00
Dmitry Vyukov
9c8f888f5f sanitizer_common: prepare for enabling format string checking
The __attribute__((format)) was added somewhere in 2012,
the lost during refactoring, then re-added in 2014 but
to te source files, which is a no-op.
Move it back to header files so that it actually takes effect.
But over the past 7 years we've accumulated whole lot of
format string bugs of different types, so disable the warning
with -Wno-format for now for incremental clean up.

Among the bugs that it warns about are all kinds of bad things:
 - wrong sizes of arguments
 - missing/excessive arguments
 - printing wrong things (e.g. *ptr instead of ptr)
 - completely messed up format strings
 - security issues where external string is used as format

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D107977
2021-08-13 13:43:57 +02:00
Vitaly Buka
2bc07083a2 [sanitizer] Fix VSNPrintf %V on Windows 2021-07-13 10:56:17 -07:00
Dmitry Vyukov
6ca7247866 sanitizer_common: support printing __m128i type
__m128i is vector SSE type used in tsan.
It's handy to be able to print it for debugging.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D102167
2021-07-12 16:12:46 +02:00
Vitaly Buka
674d276d1b [sanitizer] Grow buffer in SharedPrintfCodeNoBuffer 2021-03-17 20:17:35 -07:00
Vitaly Buka
e0dadf3de2 [sanitizer] Remove max_len parameter from InternalScopedString
InternalScopedString uses InternalMmapVector internally
so it can be resized dynamically as needed.

Reviewed By: eugenis

Differential Revision: https://reviews.llvm.org/D98751
2021-03-17 16:57:09 -07:00
Vitaly Buka
f5e6182ce6 [sanitizer][NFC] Remove InternalScopedString::size()
size() is inconsistent with length().
In most size() use cases we can replace InternalScopedString with
InternalMmapVector.

Remove non-constant data() to avoid direct manipulations of internal
buffer. append() should be enought to modify InternalScopedString.
2021-03-16 14:11:59 -07:00
Matt Morehouse
da6cb7ba4c [sanitizer_common] Remove OnPrint from Go build.
Summary: Go now uses __sanitizer_on_print instead.

Reviewers: vitalybuka, dvyukov

Reviewed By: vitalybuka

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 374258
2019-10-09 22:57:07 +00:00
Matt Morehouse
e55c442b1b [sanitizer_common] Rename OnPrint to __sanitizer_on_print.
Summary:
https://reviews.llvm.org/D28596 exposed OnPrint in the global namespace,
which can cause collisions with user-defined OnPrint() functions.

Reviewers: vitalybuka, dvyukov

Reviewed By: vitalybuka, dvyukov

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 373518
2019-10-02 20:13:21 +00:00
Nico Weber
65492d959b compiler-rt: Rename .cc file in lib/sanitizer_common to .cpp
See https://reviews.llvm.org/D58620 for discussion, and for the commands
I ran. In addition I also ran

  for f in $(svn diff | diffstat | grep .cc | cut -f 2 -d ' '); do rg $f . ; done

and manually updated (many) references to renamed files found by that.

llvm-svn: 367463
2019-07-31 18:51:27 +00:00