summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2020-10-27 21:13:04 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-10-27 21:13:04 +0000
commit6ad34acca5379ddfa6a6ab87d9d65ddbf007003a (patch)
treec692a6c44df756b5abbec213cea79f0c03e278de
parent4f7525108bd0969c13b8653505eb83b512d3b55d (diff)
parent3827989879956d03496780b3f8119dc4139eb45b (diff)
downloadlibcxxabi-6ad34acca5379ddfa6a6ab87d9d65ddbf007003a.tar.gz
libcxxabi: ld128 demangle: allow space for 'L' suffix. am: 2d219d5cf1 am: 7aab6b7d6c am: 7ad3c1475e am: 3827989879
Original change: https://android-review.googlesource.com/c/platform/external/libcxxabi/+/1475460 Change-Id: Ib6bb6175f6e817e6587a83e8418257f119113259
-rw-r--r--src/demangle/ItaniumDemangle.h2
-rw-r--r--test/test_demangle.pass.cpp7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/demangle/ItaniumDemangle.h b/src/demangle/ItaniumDemangle.h
index 9e9d183..7dc6e8e 100644
--- a/src/demangle/ItaniumDemangle.h
+++ b/src/demangle/ItaniumDemangle.h
@@ -4896,7 +4896,7 @@ struct FloatData<long double>
#else
static const size_t mangled_size = 20; // May need to be adjusted to 16 or 24 on other platforms
#endif
- static const size_t max_demangled_size = 40;
+ static const size_t max_demangled_size = 41;
static constexpr const char *spec = "%LaL";
};
diff --git a/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp
index 7c1fd2d..02e8407 100644
--- a/test/test_demangle.pass.cpp
+++ b/test/test_demangle.pass.cpp
@@ -16,6 +16,8 @@
// Is long double fp80? (Only x87 extended double has 64-bit mantissa)
#define LDBL_FP80 (__LDBL_MANT_DIG__ == 64)
+// Is long double fp128?
+#define LDBL_FP128 (__LDBL_MANT_DIG__ == 113)
const char* cases[][2] =
{
@@ -29785,6 +29787,11 @@ struct FPLiteralCase {
"void test0::h<float>(char (&) [(unsigned int)((sizeof (float)) + (0xap-1L))])",
}},
#endif
+#if LDBL_FP128
+ // This was found by libFuzzer+HWASan on aarch64 Android.
+ {"1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE",
+ {"\x6<-0x1.cecececececececececececececep+11983"}},
+#endif
};
const unsigned NF = sizeof(fp_literal_cases) / sizeof(fp_literal_cases[0]);
const unsigned NEF = sizeof(fp_literal_cases[0].expecting) / sizeof(fp_literal_cases[0].expecting[0]);