diff --git a/absl/cleanup/internal/cleanup.h b/absl/cleanup/internal/cleanup.h
index 967513a8..4dd6f913 100644
--- a/absl/cleanup/internal/cleanup.h
+++ b/absl/cleanup/internal/cleanup.h
@@ -88,7 +88,7 @@ class Storage {
private:
bool is_callback_engaged_;
- alignas(Callback) char callback_buffer_[sizeof(Callback)];
+ alignas(Callback) unsigned char callback_buffer_[sizeof(Callback)];
};
} // namespace cleanup_internal
diff --git a/absl/container/fixed_array.h b/absl/container/fixed_array.h
index b213eb13..8bf8e6cf 100644
--- a/absl/container/fixed_array.h
+++ b/absl/container/fixed_array.h
@@ -447,7 +447,8 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
private:
ABSL_ADDRESS_SANITIZER_REDZONE(redzone_begin_);
- alignas(StorageElement) char buff_[sizeof(StorageElement[inline_elements])];
+ alignas(StorageElement) unsigned char buff_[sizeof(
+ StorageElement[inline_elements])];
ABSL_ADDRESS_SANITIZER_REDZONE(redzone_end_);
};
diff --git a/absl/container/internal/inlined_vector.h b/absl/container/internal/inlined_vector.h
index a3b14a22..b0d3f077 100644
--- a/absl/container/internal/inlined_vector.h
+++ b/absl/container/internal/inlined_vector.h
@@ -543,7 +543,7 @@ class Storage {
(std::max)(N, sizeof(Allocated) / sizeof(ValueType));
struct Inlined {
- alignas(ValueType) char inlined_data[sizeof(
+ alignas(ValueType) unsigned char inlined_data[sizeof(
ValueType[kOptimalInlinedSize])];
};
diff --git a/absl/flags/internal/flag.h b/absl/flags/internal/flag.h
index a243b795..ef739e7f 100644
--- a/absl/flags/internal/flag.h
+++ b/absl/flags/internal/flag.h
@@ -783,7 +783,7 @@ class FlagImpl final : public CommandLineFlag {
// heap allocation during initialization, which is both slows program startup
// and can fail. Using reserved space + placement new allows us to avoid both
// problems.
- alignas(absl::Mutex) mutable char data_guard_[sizeof(absl::Mutex)];
+ alignas(absl::Mutex) mutable unsigned char data_guard_[sizeof(absl::Mutex)];
};
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic pop
@@ -876,7 +876,8 @@ class FlagImplPeer {
template
void* FlagOps(FlagOp op, const void* v1, void* v2, void* v3) {
struct AlignedSpace {
- alignas(MaskedPointer::RequiredAlignment()) alignas(T) char buf[sizeof(T)];
+ alignas(MaskedPointer::RequiredAlignment()) alignas(
+ T) unsigned char buf[sizeof(T)];
};
using Allocator = std::allocator;
switch (op) {
diff --git a/absl/flags/internal/registry.h b/absl/flags/internal/registry.h
index 4b68c85f..a57ba3c5 100644
--- a/absl/flags/internal/registry.h
+++ b/absl/flags/internal/registry.h
@@ -73,7 +73,7 @@ void FinalizeRegistry();
//
// Retire flag with name "name" and type indicated by ops.
-void Retire(const char* name, FlagFastTypeId type_id, char* buf);
+void Retire(const char* name, FlagFastTypeId type_id, unsigned char* buf);
constexpr size_t kRetiredFlagObjSize = 3 * sizeof(void*);
constexpr size_t kRetiredFlagObjAlignment = alignof(void*);
@@ -87,7 +87,7 @@ class RetiredFlag {
}
private:
- alignas(kRetiredFlagObjAlignment) char buf_[kRetiredFlagObjSize];
+ alignas(kRetiredFlagObjAlignment) unsigned char buf_[kRetiredFlagObjSize];
};
} // namespace flags_internal
diff --git a/absl/flags/reflection.cc b/absl/flags/reflection.cc
index ea856ff9..b8b4a2ea 100644
--- a/absl/flags/reflection.cc
+++ b/absl/flags/reflection.cc
@@ -289,11 +289,10 @@ class RetiredFlagObj final : public CommandLineFlag {
} // namespace
-void Retire(const char* name, FlagFastTypeId type_id, char* buf) {
+void Retire(const char* name, FlagFastTypeId type_id, unsigned char* buf) {
static_assert(sizeof(RetiredFlagObj) == kRetiredFlagObjSize, "");
static_assert(alignof(RetiredFlagObj) == kRetiredFlagObjAlignment, "");
- auto* flag = ::new (static_cast(buf))
- flags_internal::RetiredFlagObj(name, type_id);
+ auto* flag = ::new (buf) flags_internal::RetiredFlagObj(name, type_id);
FlagRegistry::GlobalRegistry().RegisterFlag(*flag, nullptr);
}
diff --git a/absl/functional/internal/any_invocable.h b/absl/functional/internal/any_invocable.h
index 6bfc4d1a..167d947d 100644
--- a/absl/functional/internal/any_invocable.h
+++ b/absl/functional/internal/any_invocable.h
@@ -174,7 +174,7 @@ union TypeErasedState {
} remote;
// Local-storage for the type-erased object when small and trivial enough
- alignas(kAlignment) char storage[kStorageSize];
+ alignas(kAlignment) unsigned char storage[kStorageSize];
};
// A typed accessor for the object in `TypeErasedState` storage
diff --git a/absl/synchronization/mutex_test.cc b/absl/synchronization/mutex_test.cc
index 2dc4d739..d8c4fdf2 100644
--- a/absl/synchronization/mutex_test.cc
+++ b/absl/synchronization/mutex_test.cc
@@ -1725,7 +1725,7 @@ TEST(Mutex, Logging) {
TEST(Mutex, LoggingAddressReuse) {
// Repeatedly re-create a Mutex with debug logging at the same address.
ScopedInvariantDebugging scoped_debugging;
- alignas(absl::Mutex) char storage[sizeof(absl::Mutex)];
+ alignas(absl::Mutex) unsigned char storage[sizeof(absl::Mutex)];
auto invariant =
+[](void *alive) { EXPECT_TRUE(*static_cast(alive)); };
constexpr size_t kIters = 10;