Fix handling of pointer printing tests in 32-bit builds

Fixes #2079

PiperOrigin-RevId: 937602751
Change-Id: I000f5af57d00837b1d08bf41410c0eb3ce1191c5
diff --git a/absl/log/check_test_impl.inc b/absl/log/check_test_impl.inc
index 47af1dd..c78bbd4 100644
--- a/absl/log/check_test_impl.inc
+++ b/absl/log/check_test_impl.inc
@@ -727,11 +727,9 @@
 TEST(CHECKDeathTest, TestPointerPrintedAsNumberDespiteAbslStringify) {
   const auto* p = reinterpret_cast<const PointerIsStringifiable*>(0x1234);
 
-  EXPECT_DEATH(
-      ABSL_TEST_CHECK_EQ(p, nullptr),
-      AnyOf(
-          HasSubstr("Check failed: p == nullptr (0000000000001234 vs. (null))"),
-          HasSubstr("Check failed: p == nullptr (0x1234 vs. (null))")));
+  EXPECT_DEATH(ABSL_TEST_CHECK_EQ(p, nullptr),
+               ContainsRegex(
+                   "Check failed: p == nullptr \\(0+x?1234 vs. \\(null\\)\\)"));
 }
 
 // An uncopyable object with operator<<.
diff --git a/absl/strings/BUILD.bazel b/absl/strings/BUILD.bazel
index 6b96d0c..21479a7 100644
--- a/absl/strings/BUILD.bazel
+++ b/absl/strings/BUILD.bazel
@@ -1617,12 +1617,12 @@
     linkopts = ABSL_DEFAULT_LINKOPTS,
     deps = [
         ":generic_printer",
+        ":str_format",
         ":strings",
         "//absl/base:config",
         "//absl/base:core_headers",
         "//absl/cleanup",
         "//absl/container:flat_hash_map",
-        "//absl/log",
         "//absl/status",
         "//absl/status:statusor",
         "@googletest//:gtest",
diff --git a/absl/strings/CMakeLists.txt b/absl/strings/CMakeLists.txt
index ca07c3e..b6f2aa7 100644
--- a/absl/strings/CMakeLists.txt
+++ b/absl/strings/CMakeLists.txt
@@ -1319,9 +1319,9 @@
     absl::config
     absl::flat_hash_map
     absl::generic_printer_internal
-    absl::log
     absl::status
     absl::statusor
+    absl::str_format
     absl::strings
     GTest::gmock_main
 )
diff --git a/absl/strings/internal/generic_printer_test.cc b/absl/strings/internal/generic_printer_test.cc
index 071bf76..be6e003 100644
--- a/absl/strings/internal/generic_printer_test.cc
+++ b/absl/strings/internal/generic_printer_test.cc
@@ -15,6 +15,7 @@
 #include "absl/strings/internal/generic_printer.h"
 
 #include <array>
+#include <cinttypes>
 #include <clocale>
 #include <cstdint>
 #include <limits>
@@ -38,6 +39,7 @@
 #include "absl/status/status.h"
 #include "absl/status/statusor.h"
 #include "absl/strings/str_cat.h"
+#include "absl/strings/str_format.h"
 #include "absl/strings/substitute.h"
 
 namespace generic_logging_test {
@@ -521,23 +523,26 @@
   auto cp = std::make_unique<char*>(memory);
 
   EXPECT_THAT(GenericPrintToString(i),
-              AnyOf(Eq(absl::StrFormat("<%016X pointing to 5>",
-                                       reinterpret_cast<intptr_t>(&*i))),
+              AnyOf(Eq(absl::StrFormat("<%0*" PRIXPTR " pointing to 5>",
+                                       sizeof(void*) * 2,
+                                       reinterpret_cast<uintptr_t>(&*i))),
                     Eq(absl::StrFormat("<%#x pointing to 5>",
-                                       reinterpret_cast<intptr_t>(&*i)))));
+                                       reinterpret_cast<uintptr_t>(&*i)))));
 
   EXPECT_THAT(
       GenericPrintToString(c),
-      AnyOf(HasSubstr(absl::StrFormat("<%016X pointing to 'z'",
-                                      reinterpret_cast<intptr_t>(&*c))),
+      AnyOf(HasSubstr(absl::StrFormat("<%0*" PRIXPTR " pointing to 'z'",
+                                      sizeof(void*) * 2,
+                                      reinterpret_cast<uintptr_t>(&*c))),
             HasSubstr(absl::StrFormat("<%#x pointing to 'z'",
-                                      reinterpret_cast<intptr_t>(&*c)))));
+                                      reinterpret_cast<uintptr_t>(&*c)))));
 
   EXPECT_THAT(GenericPrintToString(cp),
-              AnyOf(Eq(absl::StrFormat("<%016X pointing to abcdefg>",
-                                       reinterpret_cast<intptr_t>(&*cp))),
+              AnyOf(Eq(absl::StrFormat("<%0*" PRIXPTR " pointing to abcdefg>",
+                                       sizeof(void*) * 2,
+                                       reinterpret_cast<uintptr_t>(&*cp))),
                     Eq(absl::StrFormat("<%#x pointing to abcdefg>",
-                                       reinterpret_cast<intptr_t>(&*cp)))));
+                                       reinterpret_cast<uintptr_t>(&*cp)))));
 }
 
 TEST(GenericPrinterTest, SmartPointerToArrayOnlyPrintsAddressAndHelpText) {
@@ -552,18 +557,20 @@
   EXPECT_THAT(
       GenericPrintToString(nonempty),
       AllOf(AnyOf(HasSubstr(absl::StrFormat(
-                      "%016X", reinterpret_cast<intptr_t>(nonempty.get()))),
+                      "%0*" PRIXPTR, sizeof(void*) * 2,
+                      reinterpret_cast<uintptr_t>(nonempty.get()))),
                   HasSubstr(absl::StrFormat(
-                      "%#x", reinterpret_cast<intptr_t>(nonempty.get())))),
+                      "%#x", reinterpret_cast<uintptr_t>(nonempty.get())))),
             HasSubstr("array"), Not(HasSubstr("to 54321")),
             Not(HasSubstr("to 12345"))));
 
   EXPECT_THAT(
       GenericPrintToString(empty),
       AllOf(AnyOf(HasSubstr(absl::StrFormat(
-                      "%016X", reinterpret_cast<intptr_t>(empty.get()))),
+                      "%0*" PRIXPTR, sizeof(void*) * 2,
+                      reinterpret_cast<uintptr_t>(empty.get()))),
                   HasSubstr(absl::StrFormat(
-                      "%#x", reinterpret_cast<intptr_t>(empty.get())))),
+                      "%#x", reinterpret_cast<uintptr_t>(empty.get())))),
             HasSubstr("array")));
 }