aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2016-12-05 10:00:49 -0500
committerRobert Haas <rhaas@postgresql.org>2016-12-05 10:01:08 -0500
commit670b3bc8f5d1000b5475e41c6f023c490e8500fe (patch)
tree22ed2c01cb359f922772b2b73e9d7178bf3d13d6 /src
parent7dd8eb39bd2b9e06eeef038f80ae327efb4a7d55 (diff)
downloadpostgresql-670b3bc8f5d1000b5475e41c6f023c490e8500fe.tar.gz
postgresql-670b3bc8f5d1000b5475e41c6f023c490e8500fe.zip
Try to fix some DSA-related compiler warnings.
Commit 13df76a537cca3b8884911d8fdf7c89a457a8dd3 was overconfident about how portable %016lx is. Some compilers complain because they need %016llx, while platforms where DSA pointers are only 32 bits get unhappy about using a 64-bit format for a 32-bit quantity. Thomas Munro, per an off-list suggestion from me.
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/mmgr/dsa.c7
-rw-r--r--src/include/utils/dsa.h2
2 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/utils/mmgr/dsa.c b/src/backend/utils/mmgr/dsa.c
index 9095da0f771..0e49e7020df 100644
--- a/src/backend/utils/mmgr/dsa.c
+++ b/src/backend/utils/mmgr/dsa.c
@@ -1099,9 +1099,10 @@ dsa_dump(dsa_area *area)
span = dsa_get_address(area, span_pointer);
fprintf(stderr,
- " span descriptor at %016lx, "
- "superblock at %016lx, pages = %zu, "
- "objects free = %hu/%hu\n",
+ " span descriptor at "
+ DSA_POINTER_FORMAT ", superblock at "
+ DSA_POINTER_FORMAT
+ ", pages = %zu, objects free = %hu/%hu\n",
span_pointer, span->start, span->npages,
span->nallocatable, span->nmax);
span_pointer = span->nextspan;
diff --git a/src/include/utils/dsa.h b/src/include/utils/dsa.h
index b05ab2c7f45..a6d674df577 100644
--- a/src/include/utils/dsa.h
+++ b/src/include/utils/dsa.h
@@ -54,6 +54,7 @@ typedef pg_atomic_uint32 dsa_pointer_atomic;
#define dsa_pointer_atomic_write pg_atomic_write_u32
#define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u32
#define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u32
+#define DSA_POINTER_FORMAT "%08x"
#else
typedef uint64 dsa_pointer;
typedef pg_atomic_uint64 dsa_pointer_atomic;
@@ -62,6 +63,7 @@ typedef pg_atomic_uint64 dsa_pointer_atomic;
#define dsa_pointer_atomic_write pg_atomic_write_u64
#define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u64
#define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u64
+#define DSA_POINTER_FORMAT "%016" INT64_MODIFIER "x"
#endif
/* A sentinel value for dsa_pointer used to indicate failure to allocate. */