Diff
Modified: trunk/Source/bmalloc/ChangeLog (284894 => 284895)
--- trunk/Source/bmalloc/ChangeLog 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/ChangeLog 2021-10-26 21:08:08 UTC (rev 284895)
@@ -1,3 +1,79 @@
+2021-10-26 David Kilzer <[email protected]>
+
+ [libpas] Add printf format attributes
+ <https://webkit.org/b/232291>
+ <rdar://problem/84643135>
+
+ Reviewed by Yusuke Suzuki.
+
+ Define PAS_FORMAT_PRINTF() macro in pas_utils.h, apply it to
+ functions that take format strings, then fix all the issues
+ found during compilation.
+
+ These changes also let us remove the clang pragma macros that
+ ignored -Wformat-nonliteral warnings in pas_log.c and
+ pas_string_stream.c.
+
+ * libpas/src/libpas/pas_all_heaps.c:
+ (verify_in_steady_state_segregated_directory_callback):
+ * libpas/src/libpas/pas_bitfit_directory.c:
+ (pas_bitfit_directory_take_last_empty):
+ * libpas/src/libpas/pas_bitfit_heap.c:
+ (pas_bitfit_heap_select_variant):
+ * libpas/src/libpas/pas_bitfit_page_inlines.h:
+ (pas_bitfit_page_allocate):
+ (pas_bitfit_page_deallocate_with_page_impl):
+ * libpas/src/libpas/pas_commit_span.c:
+ (pas_commit_span_construct):
+ (pas_commit_span_add_unchanged):
+ * libpas/src/libpas/pas_enumerate_large_heaps.c:
+ (record_span):
+ (pas_enumerate_large_heaps):
+ * libpas/src/libpas/pas_fd_stream.c:
+ (fd_stream_vprintf):
+ * libpas/src/libpas/pas_fd_stream.h:
+ * libpas/src/libpas/pas_hashtable.h:
+ * libpas/src/libpas/pas_large_map.c:
+ (pas_large_map_add):
+ (pas_large_map_take):
+ * libpas/src/libpas/pas_large_sharing_pool.c:
+ (validate_min_heap):
+ * libpas/src/libpas/pas_local_allocator_inlines.h:
+ (pas_local_allocator_scan_bits_to_set_up_free_bits):
+ (pas_local_allocator_return_memory_to_page):
+ (pas_local_allocator_try_allocate_inline_cases):
+ * libpas/src/libpas/pas_log.c:
+ * libpas/src/libpas/pas_log.h:
+ * libpas/src/libpas/pas_page_sharing_pool.c:
+ (pas_page_sharing_pool_add_at_index):
+ * libpas/src/libpas/pas_segregated_directory_inlines.h:
+ (pas_segregated_directory_iterate_iterate_callback):
+ (pas_segregated_directory_iterate_forward):
+ * libpas/src/libpas/pas_segregated_heap.c:
+ (pas_segregated_heap_ensure_size_directory_for_count):
+ * libpas/src/libpas/pas_segregated_shared_page_directory.c:
+ (pas_segregated_shared_page_directory_find_first_eligible):
+ * libpas/src/libpas/pas_segregated_shared_view.c:
+ (compute_summary):
+ * libpas/src/libpas/pas_segregated_view.c:
+ (for_each_live_object):
+ (should_be_eligible):
+ * libpas/src/libpas/pas_status_reporter.c:
+ (pas_status_reporter_dump_large_map):
+ * libpas/src/libpas/pas_stream.h:
+ * libpas/src/libpas/pas_string_stream.c:
+ (string_stream_vprintf):
+ * libpas/src/libpas/pas_string_stream.h:
+ * libpas/src/libpas/pas_thread_local_cache.c:
+ (suspend):
+ * libpas/src/libpas/pas_tiny_large_map_entry.h:
+ (pas_tiny_large_map_entry_can_create):
+ * libpas/src/libpas/pas_try_allocate_common.h:
+ (pas_try_allocate_common_impl_fast):
+ (pas_try_allocate_common_impl_slow):
+ * libpas/src/libpas/pas_try_allocate_intrinsic.h:
+ * libpas/src/libpas/pas_utils.h:
+
2021-10-20 Michael Catanzaro <[email protected]>
Do not use strerror()
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_all_heaps.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_all_heaps.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_all_heaps.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -367,8 +367,7 @@
if (is_empty) {
dump_directory_nicely(directory);
dump_view_nicely(index, view);
- pas_log(": didn't expect it to be empty.\n",
- index, view);
+ pas_log(": didn't expect it to be empty.\n");
PAS_ASSERT(!is_empty);
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -437,7 +437,7 @@
/* If a page's num_live_bits drops to zero then we will mark it empty in the directory that
owns it while holding the lock. Newly created pages start out empty. */
if (max_free != PAS_BITFIT_MAX_FREE_EMPTY) {
- pas_log("%p:%u: found non-empty page that is dead when taking last empty.\n");
+ pas_log("%p:%zu: found non-empty page that is dead when taking last empty.\n", page, index);
PAS_ASSERT(max_free == PAS_BITFIT_MAX_FREE_EMPTY);
}
} else {
@@ -444,7 +444,7 @@
/* If a page's num_live_bits goes above zero then we mark it unprocessed while holding the
lock. */
if (max_free == PAS_BITFIT_MAX_FREE_EMPTY) {
- pas_log("%p:%u: found empty page that is not dead when taking last empty.\n");
+ pas_log("%p:%zu: found empty page that is not dead when taking last empty.\n", page, index);
PAS_ASSERT(max_free != PAS_BITFIT_MAX_FREE_EMPTY);
}
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_heap.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_heap.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_heap.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -83,7 +83,7 @@
continue;
if (verbose)
- pas_log("max object size = %u\n", page_config.base.max_object_size);
+ pas_log("max object size = %zu\n", page_config.base.max_object_size);
PAS_ASSERT(
page_config.base.max_object_size
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_page_inlines.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_page_inlines.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_page_inlines.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -369,7 +369,7 @@
if (verbose) {
pas_log("Need to do a search starting at word_index = %lu + 1, "
- "num_remaining_needed_bits = %lu\n",
+ "num_remaining_needed_bits = %llu\n",
word_index, num_remaining_needed_bits);
}
@@ -383,7 +383,7 @@
unsigned pages_to_commit_on_reloop;
if (verbose) {
- pas_log("At other_word_index = %lu, num_remaining_needed_bits = %lu\n",
+ pas_log("At other_word_index = %lu, num_remaining_needed_bits = %llu\n",
other_word_index, num_remaining_needed_bits);
}
@@ -796,7 +796,7 @@
intermediate_word_index++)
free_words[intermediate_word_index] = UINT64_MAX;
if (verbose) {
- pas_log("object_end_bit_index = %lu, mask = %llu\n",
+ pas_log("object_end_bit_index = %llu, mask = %llu\n",
object_end_bit_index, pas_make_mask64(object_end_bit_index + 1));
}
break;
@@ -804,7 +804,7 @@
if (verbose) {
pas_log("word_index = %lu, bit_index_in_word = %lu, other_word_index = %lu, "
- "object_end_bit_index = %lu\n",
+ "object_end_bit_index = %llu\n",
word_index, bit_index_in_word, other_word_index, object_end_bit_index);
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_commit_span.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_commit_span.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_commit_span.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -39,7 +39,7 @@
void pas_commit_span_construct(pas_commit_span* span)
{
if (verbose)
- pas_log("%p: creating commit span.\n");
+ pas_log("%p: creating commit span.\n", span);
span->index_of_start_of_span = UINTPTR_MAX;
span->did_add_first = false;
span->total_bytes = 0;
@@ -66,7 +66,7 @@
return;
if (verbose)
- pas_log("%p: adding a thing.\n");
+ pas_log("%p: adding a thing.\n", span);
PAS_ASSERT(span->index_of_start_of_span < granule_index);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_enumerate_large_heaps.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_enumerate_large_heaps.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_enumerate_large_heaps.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -53,7 +53,7 @@
{
static const bool verbose = false;
if (verbose)
- pas_log("record_span: %p...%p\n", range.begin, range.end);
+ pas_log("record_span: %p...%p\n", (void*)range.begin, (void*)range.end);
pas_enumerator_record(
enumerator, (void*)range.begin, pas_range_size(range), pas_enumerator_payload_record);
}
@@ -140,7 +140,7 @@
PAS_ASSERT(page);
if (verbose)
- pas_log("Looking at page %p\n", page);
+ pas_log("Looking at page %p\n", (void*)page);
if (!pas_enumerator_exclude_accounted_page(enumerator, (void*)page))
continue;
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_fd_stream.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_fd_stream.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_fd_stream.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -31,7 +31,7 @@
#include "pas_log.h"
-static void fd_stream_vprintf(pas_stream* stream, const char* format, va_list arg_list)
+static PAS_FORMAT_PRINTF(2, 0) void fd_stream_vprintf(pas_stream* stream, const char* format, va_list arg_list)
{
pas_fd_stream_vprintf((pas_fd_stream*)stream, format, arg_list);
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_fd_stream.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_fd_stream.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_fd_stream.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -49,7 +49,7 @@
PAS_API void pas_fd_stream_construct(pas_fd_stream* stream, int fd);
-PAS_API void pas_fd_stream_vprintf(pas_fd_stream* stream, const char* format, va_list arg_list);
+PAS_API void pas_fd_stream_vprintf(pas_fd_stream* stream, const char* format, va_list arg_list) PAS_FORMAT_PRINTF(2, 0);
#define pas_fd_stream_printf(stream, ...) \
pas_stream_printf((pas_stream*)(stream), __VA_ARGS__)
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_hashtable.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_hashtable.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_hashtable.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -112,7 +112,7 @@
new_table_mask = new_size - 1; \
new_byte_size = (size_t)new_size * sizeof(entry_type); \
if (verbose) \
- pas_log("Allocating a new table with new_size = %zu, new_byte_size = %zu.\n", new_size, new_byte_size); \
+ pas_log("Allocating a new table with new_size = %u, new_byte_size = %zu.\n", new_size, new_byte_size); \
new_table = (entry_type*)allocation_config->allocate( \
new_byte_size, #name "/table", pas_object_allocation, allocation_config->arg); \
\
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_large_map.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_large_map.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_large_map.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -92,7 +92,7 @@
tiny_entry = pas_tiny_large_map_entry_create(entry);
if (verbose)
- pas_log("adding base = %p.\n", tiny_base);
+ pas_log("adding base = %p.\n", (void*)tiny_base);
add_result = pas_tiny_large_map_hashtable_add(
&pas_tiny_large_map_hashtable_instance, tiny_base,
@@ -159,7 +159,7 @@
tiny_base = pas_tiny_large_map_entry_base(begin);
if (verbose)
- pas_log("tiny_base = %p.\n", tiny_base);
+ pas_log("tiny_base = %p.\n", (void*)tiny_base);
first_level_tiny_entry = pas_tiny_large_map_hashtable_find(
&pas_tiny_large_map_hashtable_instance, tiny_base);
if (first_level_tiny_entry) {
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -120,7 +120,7 @@
&pas_large_sharing_min_heap_instance, index);
if (verbose) {
- pas_log(" %zu:%p:%lu-%lu:%llu",
+ pas_log(" %d:%p:%lu-%lu:%llu",
node->index_in_min_heap,
node, node->range.begin, node->range.end,
node->use_epoch);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_local_allocator_inlines.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_local_allocator_inlines.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_local_allocator_inlines.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -161,7 +161,7 @@
data.granule_size = page_config.base.granule_size;
if (verbose) {
- pas_log("%p, %s: Setting up alloc bits in range %zu...%zu\n",
+ pas_log("%p, %s: Setting up alloc bits in range %u...%u\n",
allocator,
pas_local_allocator_config_kind_get_string(allocator->config_kind),
full_alloc_bits.word_index_begin,
@@ -1288,7 +1288,7 @@
pas_full_alloc_bits_create_for_view_and_directory(view, directory, page_config);
if (verbose) {
- pas_log("Full alloc bits have range %zu...%zu\n",
+ pas_log("Full alloc bits have range %u...%u\n",
full_alloc_bits.word_index_begin,
full_alloc_bits.word_index_end);
}
@@ -1453,7 +1453,7 @@
uintptr_t result;
if (verbose)
- pas_log("payload_end = %p\n", allocator->payload_end);
+ pas_log("payload_end = %p\n", (void*)allocator->payload_end);
PAS_TESTING_ASSERT(allocator->payload_end);
PAS_TESTING_ASSERT(remaining - object_size < allocator->remaining);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_log.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_log.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_log.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -33,9 +33,6 @@
#include "pas_snprintf.h"
#include <unistd.h>
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wformat-nonliteral"
-
pthread_t pas_thread_that_is_crash_logging;
void pas_vlog_fd(int fd, const char* format, va_list list)
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_log.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_log.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_log.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -41,11 +41,11 @@
/* Logging functions that don't require any allocation. You cannot log more than
PAS_LOG_MAX_BYTES at a time. */
-PAS_API void pas_vlog_fd(int fd, const char* format, va_list);
-PAS_API void pas_log_fd(int fd, const char* format, ...);
+PAS_API void pas_vlog_fd(int fd, const char* format, va_list) PAS_FORMAT_PRINTF(2, 0);
+PAS_API void pas_log_fd(int fd, const char* format, ...) PAS_FORMAT_PRINTF(2, 3);
-PAS_API void pas_vlog(const char* format, va_list);
-PAS_API void pas_log(const char* format, ...);
+PAS_API void pas_vlog(const char* format, va_list) PAS_FORMAT_PRINTF(1, 0);
+PAS_API void pas_log(const char* format, ...) PAS_FORMAT_PRINTF(1, 2);
PAS_API void pas_start_crash_logging(void);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_page_sharing_pool.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_page_sharing_pool.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_page_sharing_pool.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -233,9 +233,9 @@
if (verbose) {
pas_log("Adding participant %p to pool %p (%s), index = %zu.\n",
participant,
+ pool,
pas_page_sharing_participant_kind_get_string(
pas_page_sharing_participant_get_kind(participant)),
- pool,
index_in_sharing_pool);
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_directory_inlines.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_directory_inlines.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_directory_inlines.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -116,7 +116,7 @@
if (config->first_considered == SIZE_MAX) {
if (verbose)
- pas_log("%p: setting first_considered to 0\n", config->directory, config->index);
+ pas_log("%p: setting first_considered to %zu\n", config->directory, config->index);
config->first_considered = config->index;
} else {
if (verbose) {
@@ -181,7 +181,7 @@
if (verbose) {
pas_log("Actually using segmented bitvector iteration.\n");
- pas_log("Segmented bitvector size = %zu\n", data->bitvectors.size);
+ pas_log("Segmented bitvector size = %u\n", data->bitvectors.size);
}
found_index = pas_segregated_directory_segmented_bitvectors_iterate(
&data->bitvectors, PAS_BITVECTOR_WORD_INDEX(PAS_MAX((size_t)1, config->index) - 1),
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_heap.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_heap.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_heap.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -1255,7 +1255,7 @@
index_to_small_size_directory + candidate_index);
if (candidate) {
if (verbose)
- pas_log("Have candidate with size = %zu\n", candidate->object_size);
+ pas_log("Have candidate with size = %d\n", candidate->object_size);
/* If the candidate at this index has an object size that is no larger than the
one we picked, then we should have just simply used this candidate for our
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_shared_page_directory.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_shared_page_directory.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_shared_page_directory.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -128,7 +128,7 @@
page_config = *page_config_ptr;
if (verbose)
- pas_log("trying to allocate size = %zu, alignment = %zu.\n", size, alignment);
+ pas_log("trying to allocate size = %u, alignment = %u.\n", size, alignment);
data.size = size;
data.alignment = alignment;
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_shared_view.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_shared_view.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_shared_view.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -268,7 +268,7 @@
end_of_page = page_config.base.page_size;
if (verbose)
- pas_log("index = %zu, bump_offset = %lu/%lu.\n", view->index, end_of_payload, end_of_page);
+ pas_log("index = %d, bump_offset = %lu/%lu.\n", view->index, end_of_payload, end_of_page);
PAS_ASSERT(start_of_payload >= start_of_page);
PAS_ASSERT(end_of_payload >= start_of_payload);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_view.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_view.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_view.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -370,7 +370,7 @@
object_size = pas_segregated_view_get_size_directory(view)->object_size;
if (verbose) {
- pas_log("page = %p, got alloc bits range %zu...%zu.\n",
+ pas_log("page = %p, got alloc bits range %u...%u.\n",
page,
full_alloc_bits.word_index_begin,
full_alloc_bits.word_index_end);
@@ -461,7 +461,7 @@
if (verbose) {
pas_log("Checking if can bump for shared view %p, bump %u, max object size %zu, "
- "bump limit %u\n",
+ "bump limit %zu\n",
shared_view, shared_view->bump_offset, page_config->base.max_object_size,
pas_segregated_page_config_object_payload_end_offset_from_boundary(*page_config));
}
@@ -483,7 +483,7 @@
full_alloc_bits = pas_full_alloc_bits_create_for_view(view, *page_config);
if (verbose) {
- pas_log("page = %p, got alloc bits range %zu...%zu.\n",
+ pas_log("page = %p, got alloc bits range %u...%u.\n",
page,
full_alloc_bits.word_index_begin,
full_alloc_bits.word_index_end);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_status_reporter.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_status_reporter.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_status_reporter.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -418,19 +418,19 @@
pas_stream_printf(stream, " Large Map:\n");
pas_stream_printf(
stream,
- " Tiny Map: Num Entries: %zu, Num Deleted: %zu, Table Size: %zu\n",
+ " Tiny Map: Num Entries: %u, Num Deleted: %u, Table Size: %u\n",
pas_tiny_large_map_hashtable_instance.key_count,
pas_tiny_large_map_hashtable_instance.deleted_count,
pas_tiny_large_map_hashtable_instance.table_size);
pas_stream_printf(
stream,
- " Small Fallback Map: Num Entries: %zu, Num Deleted: %zu, Table Size: %zu\n",
+ " Small Fallback Map: Num Entries: %u, Num Deleted: %u, Table Size: %u\n",
pas_small_large_map_hashtable_instance.key_count,
pas_small_large_map_hashtable_instance.deleted_count,
pas_small_large_map_hashtable_instance.table_size);
pas_stream_printf(
stream,
- " Fallback Map: Num Entries: %zu, Num Deleted: %zu, Table Size: %zu\n",
+ " Fallback Map: Num Entries: %u, Num Deleted: %u, Table Size: %u\n",
pas_large_map_hashtable_instance.key_count,
pas_large_map_hashtable_instance.deleted_count,
pas_large_map_hashtable_instance.table_size);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_stream.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_stream.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_stream.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -43,13 +43,13 @@
};
struct pas_stream_functions {
- void (*vprintf)(pas_stream* stream, const char* format, va_list arg_list);
+ void (*vprintf)(pas_stream* stream, const char* format, va_list) PAS_FORMAT_PRINTF(2, 0);
};
#define PAS_STREAM_INITIALIZER(passed_functions) { .functions = (passed_functions) }
-PAS_API void pas_stream_vprintf(pas_stream* stream, const char* format, va_list);
-PAS_API void pas_stream_printf(pas_stream* stream, const char* format, ...);
+PAS_API void pas_stream_vprintf(pas_stream* stream, const char* format, va_list) PAS_FORMAT_PRINTF(2, 0);
+PAS_API void pas_stream_printf(pas_stream* stream, const char* format, ...) PAS_FORMAT_PRINTF(2, 3);
static inline void pas_stream_print_comma(pas_stream* stream, bool* comma, const char* string)
{
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_string_stream.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_string_stream.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_string_stream.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -32,10 +32,7 @@
#include "pas_bootstrap_free_heap.h"
#include "pas_snprintf.h"
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wformat-nonliteral"
-
-static void string_stream_vprintf(pas_stream* stream, const char* format, va_list arg_list)
+static PAS_FORMAT_PRINTF(2, 0) void string_stream_vprintf(pas_stream* stream, const char* format, va_list arg_list)
{
pas_string_stream_vprintf((pas_string_stream*)stream, format, arg_list);
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_string_stream.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_string_stream.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_string_stream.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -51,7 +51,7 @@
PAS_API void pas_string_stream_destruct(pas_string_stream* stream);
PAS_API void pas_string_stream_reset(pas_string_stream* stream);
-PAS_API void pas_string_stream_vprintf(pas_string_stream* stream, const char* format, va_list);
+PAS_API void pas_string_stream_vprintf(pas_string_stream* stream, const char* format, va_list) PAS_FORMAT_PRINTF(2, 0);
#define pas_string_stream_printf(stream, ...) \
pas_stream_printf((pas_stream*)(stream), __VA_ARGS__)
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_thread_local_cache.c (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_thread_local_cache.c 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_thread_local_cache.c 2021-10-26 21:08:08 UTC (rev 284895)
@@ -555,7 +555,7 @@
heap lock. */
if (result != KERN_SUCCESS) {
- pas_log("[%d] Failed to suspend pthread %p (mach thread %p) associated with TLC %p: %d\n",
+ pas_log("[%d] Failed to suspend pthread %p (mach thread %d) associated with TLC %p: %d\n",
getpid(), thread, mach_thread, cache, result);
dump_thread_diagnostics(thread);
PAS_ASSERT(result == KERN_SUCCESS);
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_tiny_large_map_entry.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_tiny_large_map_entry.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_tiny_large_map_entry.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -113,7 +113,7 @@
}
base = pas_tiny_large_map_entry_base(entry.begin);
if (verbose)
- pas_log("base = %p.\n", base);
+ pas_log("base = %p.\n", (void*)base);
result = pas_tiny_large_map_entry_create(entry);
if (verbose) {
pas_log("encoded: %u, %u, %u, %u, %u\n",
@@ -123,9 +123,9 @@
(unsigned)result.bytes[3],
(unsigned)result.bytes[4]);
pas_log("round tripped: %p...%p, heap = %p.\n",
- pas_tiny_large_map_entry_begin(result, base),
- pas_tiny_large_map_entry_end(result, base),
- pas_tiny_large_map_entry_heap(result));
+ (void*)pas_tiny_large_map_entry_begin(result, base),
+ (void*)pas_tiny_large_map_entry_end(result, base),
+ (void*)pas_tiny_large_map_entry_heap(result));
}
return entry.begin == pas_tiny_large_map_entry_begin(result, base)
&& entry.end == pas_tiny_large_map_entry_end(result, base)
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_try_allocate_common.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_try_allocate_common.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_try_allocate_common.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -74,7 +74,7 @@
allocator_counts,
result_filter);
if (verbose)
- pas_log("in common - result.begin = %p\n", result.begin);
+ pas_log("in common - result.begin = %p\n", (void*)result.begin);
return result;
}
@@ -112,7 +112,7 @@
pas_log("Debug heap enabled, asking debug heap.\n");
result = pas_debug_heap_allocate(size, alignment);
if (verbose)
- pas_log("Got result.ptr = %p, did_succeed = %d\n", result.begin, result.did_succeed);
+ pas_log("Got result.ptr = %p, did_succeed = %d\n", (void*)result.begin, result.did_succeed);
return result;
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -321,7 +321,7 @@
static const bool verbose = false; \
pas_allocation_result result = name(size, 1); \
if (verbose) \
- pas_log("result.begin = %p\n", result.begin); \
+ pas_log("result.begin = %p\n", (void*)result.begin); \
return result; \
} \
\
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h (284894 => 284895)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h 2021-10-26 21:07:13 UTC (rev 284894)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h 2021-10-26 21:08:08 UTC (rev 284895)
@@ -68,6 +68,8 @@
#define PAS_ALIGNED(amount) __attribute__((aligned(amount)))
+#define PAS_FORMAT_PRINTF(fmt, args) __attribute__((format(__printf__, fmt, args)))
+
#define PAS_UNUSED __attribute__((unused))
#define PAS_OFFSETOF(type, field) __PAS_OFFSETOF(type, field)
@@ -82,7 +84,7 @@
#define PAS_ARM __PAS_ARM
/* NOTE: panic format string must have \n at the end. */
-PAS_API PAS_NO_RETURN void pas_panic(const char* format, ...);
+PAS_API PAS_NO_RETURN void pas_panic(const char* format, ...) PAS_FORMAT_PRINTF(1, 2);
#define pas_set_deallocation_did_fail_callback __pas_set_deallocation_did_fail_callback
#define pas_set_reallocation_did_fail_callback __pas_set_reallocation_did_fail_callback