diff --git a/libc/include/inttypes.h b/libc/include/inttypes.h index 81d23152e..73b22db44 100644 --- a/libc/include/inttypes.h +++ b/libc/include/inttypes.h @@ -56,7 +56,7 @@ #define PRIdFAST64 "lld" /* int_fast64_t */ #define PRIdMAX "jd" /* intmax_t */ -#define PRIdPTR "ld" /* intptr_t */ +#define PRIdPTR "d" /* intptr_t */ #define PRIi8 "i" /* int8_t */ #define PRIi16 "i" /* int16_t */ @@ -74,7 +74,7 @@ #define PRIiFAST64 "lli" /* int_fast64_t */ #define PRIiMAX "ji" /* intmax_t */ -#define PRIiPTR "li" /* intptr_t */ +#define PRIiPTR "i" /* intptr_t */ /* fprintf macros for unsigned integers */ #define PRIo8 "o" /* int8_t */ @@ -93,7 +93,7 @@ #define PRIoFAST64 "llo" /* int_fast64_t */ #define PRIoMAX "jo" /* intmax_t */ -#define PRIoPTR "lo" /* intptr_t */ +#define PRIoPTR "o" /* intptr_t */ #define PRIu8 "u" /* uint8_t */ #define PRIu16 "u" /* uint16_t */ @@ -111,7 +111,7 @@ #define PRIuFAST64 "llu" /* uint_fast64_t */ #define PRIuMAX "ju" /* uintmax_t */ -#define PRIuPTR "lu" /* uintptr_t */ +#define PRIuPTR "u" /* uintptr_t */ #define PRIx8 "x" /* uint8_t */ #define PRIx16 "x" /* uint16_t */ @@ -129,7 +129,7 @@ #define PRIxFAST64 "llx" /* uint_fast64_t */ #define PRIxMAX "jx" /* uintmax_t */ -#define PRIxPTR "lx" /* uintptr_t */ +#define PRIxPTR "x" /* uintptr_t */ #define PRIX8 "X" /* uint8_t */ #define PRIX16 "X" /* uint16_t */ @@ -147,7 +147,7 @@ #define PRIXFAST64 "llX" /* uint_fast64_t */ #define PRIXMAX "jX" /* uintmax_t */ -#define PRIXPTR "lX" /* uintptr_t */ +#define PRIXPTR "X" /* uintptr_t */ /* fscanf macros for signed integers */ #define SCNd8 "hhd" /* int8_t */ @@ -166,7 +166,7 @@ #define SCNdFAST64 "lld" /* int_fast64_t */ #define SCNdMAX "jd" /* intmax_t */ -#define SCNdPTR "ld" /* intptr_t */ +#define SCNdPTR "d" /* intptr_t */ #define SCNi8 "hhi" /* int8_t */ #define SCNi16 "hi" /* int16_t */ @@ -184,7 +184,7 @@ #define SCNiFAST64 "lli" /* int_fast64_t */ #define SCNiMAX "ji" /* intmax_t */ -#define SCNiPTR "li" /* intptr_t */ +#define SCNiPTR "i" /* intptr_t */ /* fscanf macros for unsigned integers */ #define SCNo8 "hho" /* uint8_t */ @@ -203,7 +203,7 @@ #define SCNoFAST64 "llo" /* uint_fast64_t */ #define SCNoMAX "jo" /* uintmax_t */ -#define SCNoPTR "lo" /* uintptr_t */ +#define SCNoPTR "o" /* uintptr_t */ #define SCNu8 "hhu" /* uint8_t */ #define SCNu16 "hu" /* uint16_t */ @@ -221,7 +221,7 @@ #define SCNuFAST64 "llu" /* uint_fast64_t */ #define SCNuMAX "ju" /* uintmax_t */ -#define SCNuPTR "lu" /* uintptr_t */ +#define SCNuPTR "u" /* uintptr_t */ #define SCNx8 "hhx" /* uint8_t */ #define SCNx16 "hx" /* uint16_t */ @@ -239,7 +239,7 @@ #define SCNxFAST64 "llx" /* uint_fast64_t */ #define SCNxMAX "jx" /* uintmax_t */ -#define SCNxPTR "lx" /* uintptr_t */ +#define SCNxPTR "x" /* uintptr_t */ #endif /* __cplusplus || __STDC_FORMAT_MACROS */ diff --git a/tests/Android.mk b/tests/Android.mk index b7a608097..34aaec933 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -63,6 +63,7 @@ test_src_files = \ fenv_test.cpp \ getauxval_test.cpp \ getcwd_test.cpp \ + inttypes_test.cpp \ libc_logging_test.cpp \ libgen_test.cpp \ malloc_test.cpp \ diff --git a/tests/inttypes_test.cpp b/tests/inttypes_test.cpp new file mode 100644 index 000000000..ec4a10401 --- /dev/null +++ b/tests/inttypes_test.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#define __STDC_FORMAT_MACROS // Otherwise not available in C++. + +#include +#include + +#if defined(__BIONIC__) // Doesn't work on glibc because we use -m32. +TEST(inttypes, misc) { + char buf[512]; + + intptr_t i = 0; + uintptr_t u = 0; + + snprintf(buf, sizeof(buf), "%08" PRIdPTR, i); + snprintf(buf, sizeof(buf), "%08" PRIiPTR, i); + snprintf(buf, sizeof(buf), "%08" PRIoPTR, i); + snprintf(buf, sizeof(buf), "%08" PRIuPTR, u); + snprintf(buf, sizeof(buf), "%08" PRIxPTR, u); + snprintf(buf, sizeof(buf), "%08" PRIXPTR, u); + + sscanf(buf, "%08" SCNdPTR, &i); + sscanf(buf, "%08" SCNiPTR, &i); + sscanf(buf, "%08" SCNoPTR, &u); + sscanf(buf, "%08" SCNuPTR, &u); + sscanf(buf, "%08" SCNxPTR, &u); +} +#endif