Skip to content

Commit 4a57314

Browse files
giordanocopybara-github
authored andcommitted
[compiler-rt] Define __STDC_FORMAT_MACROS to ensure PRId64 is available (#102980)
In JuliaPackaging/Yggdrasil#9246 (comment) we ran into ``` [20:54:03] [ 65%] Building CXX object lib/scudo/standalone/CMakeFiles/RTScudoStandalone.x86_64.dir/timing.cpp.o [20:54:03] cd /workspace/srcdir/compiler-rt-17.0.6.src/build/lib/scudo/standalone && /opt/bin/x86_64-linux-gnu-libgfortran5-cxx11/x86_64-linux-gnu-g++ --sysroot=/opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/ -I/workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/../.. -I/workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/include -Wall -Wno-unused-parameter -O3 -DNDEBUG -m64 -Werror=conversion -Wall -Wextra -pedantic -g -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-pedantic -fno-lto -O3 -fno-omit-frame-pointer -DGWP_ASAN_HOOKS -std=c++17 -MD -MT lib/scudo/standalone/CMakeFiles/RTScudoStandalone.x86_64.dir/timing.cpp.o -MF CMakeFiles/RTScudoStandalone.x86_64.dir/timing.cpp.o.d -o CMakeFiles/RTScudoStandalone.x86_64.dir/timing.cpp.o -c /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.cpp [...] [20:54:03] In file included from /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.cpp:9: [20:54:03] /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.h: In member function ‘void scudo::TimingManager::printImpl(scudo::ScopedString&, scudo::u32, scudo::u32)’: [20:54:03] /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.h:182:21: error: expected ‘)’ before ‘PRId64’ [20:54:03] Str.append("%14" PRId64 ".%" PRId64 "(ns) %-11s", Integral, Fraction, " "); [20:54:03] ~ ^~~~~~~ [20:54:03] ) [20:54:03] /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.h:182:16: warning: conversion lacks type at end of format [-Wformat=] [20:54:03] Str.append("%14" PRId64 ".%" PRId64 "(ns) %-11s", Integral, Fraction, " "); [20:54:03] ^~~~~ [20:54:03] /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.h:182:16: warning: too many arguments for format [-Wformat-extra-args] [20:54:03] /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.h:186:23: error: expected ‘)’ before ‘PRId64’ [20:54:03] Str.append("%s (%" PRId64 ")\n", Timers[HandleId].Name, Occurrence); [20:54:03] ~ ^~~~~~~ [20:54:03] ) [20:54:03] /workspace/srcdir/compiler-rt-17.0.6.src/lib/scudo/standalone/timing.h:186:16: warning: spurious trailing ‘%’ in format [-Wformat=] [20:54:03] Str.append("%s (%" PRId64 ")\n", Timers[HandleId].Name, Occurrence); [20:54:03] ^~~~~~~ ``` when compiling compiler-rt with GCC 8. This was resolved by defining `__STDC_FORMAT_MACROS`. GitOrigin-RevId: 248e88523518ae66a20d02bd3636cd0a15453958 Change-Id: I9c34b332cfb7abcfc8bc541ef676e887af6726f4
1 parent 9e57ee6 commit 4a57314

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

standalone/timing.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
#include "string_utils.h"
1515
#include "thread_annotations.h"
1616

17+
#ifndef __STDC_FORMAT_MACROS
18+
// Ensure PRId64 macro is available
19+
#define __STDC_FORMAT_MACROS 1
20+
#endif
1721
#include <inttypes.h>
1822
#include <string.h>
1923

0 commit comments

Comments
 (0)