9
9
// This test is too big for most embedded devices.
10
10
// XFAIL: LIBCXX-PICOLIBC-FIXME
11
11
12
- // This test exercises support for char array initializer lists added in dd8b266ef.
12
+ // This test exercises support for char array initializer lists added in
13
+ // dd8b266ef.
13
14
// UNSUPPORTED: using-built-library-before-llvm-20
14
15
15
16
// Android's long double on x86[-64] is (64/128)-bits instead of Linux's usual
32
33
// Is long double fp128?
33
34
#define LDBL_FP128 (__LDBL_MANT_DIG__ == 113)
34
35
35
- // clang-format off
36
- const char* cases[][2] =
37
- {
36
+ const char *cases[][2] = {
37
+ // clang-format off
38
38
{"_Z1A", "A"},
39
39
{"_Z1Av", "A()"},
40
40
{"_Z1A1B1C", "A(B, C)"},
@@ -30245,16 +30245,17 @@ const char* cases[][2] =
30245
30245
{"_Z1fDSDRj", "f(_Sat unsigned _Fract)"},
30246
30246
{"_Z1fDSDRl", "f(_Sat long _Fract)"},
30247
30247
{"_Z1fDSDRm", "f(_Sat unsigned long _Fract)"},
30248
+ // clang-format on
30248
30249
};
30249
- // clang-format on
30250
30250
30251
30251
const unsigned N = sizeof(cases) / sizeof(cases[0]);
30252
30252
30253
30253
struct FPLiteralCase {
30254
- const char* mangled;
30254
+ const char * mangled;
30255
30255
// There are four possible demanglings of a given float.
30256
30256
std::string expecting[4];
30257
30257
} fp_literal_cases[] = {
30258
+ // clang-format off
30258
30259
{"_ZN5test01gIfEEvRAszplcvT__ELf40a00000E_c",
30259
30260
{
30260
30261
"void test0::g<float>(char (&) [sizeof ((float)() + 0x1.4p+2f)])",
@@ -30280,15 +30281,17 @@ struct FPLiteralCase {
30280
30281
#endif
30281
30282
#if LDBL_FP128
30282
30283
// A 32-character FP literal of long double type
30283
- {"3FooILeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEE", {"Foo<-0x1.eeeeeeeeeeeeeeeeeeeeeeeeeeeep+12015L>"}},
30284
+ {"3FooILeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEE",
30285
+ {"Foo<-0x1.eeeeeeeeeeeeeeeeeeeeeeeeeeeep+12015L>"}},
30284
30286
#endif
30287
+ // clang-format on
30285
30288
};
30286
30289
const unsigned NF = sizeof(fp_literal_cases) / sizeof(fp_literal_cases[0]);
30287
- const unsigned NEF = sizeof(fp_literal_cases[0].expecting) / sizeof(fp_literal_cases[0].expecting[0]);
30290
+ const unsigned NEF = sizeof(fp_literal_cases[0].expecting) /
30291
+ sizeof(fp_literal_cases[0].expecting[0]);
30288
30292
30289
-
30290
- const char* invalid_cases[] =
30291
- {
30293
+ const char *invalid_cases[] = {
30294
+ // clang-format off
30292
30295
"_ZIPPreEncode",
30293
30296
"Agentt",
30294
30297
"NSoERj5E=Y1[uM:ga",
@@ -30299,7 +30302,7 @@ const char* invalid_cases[] =
30299
30302
#if !LDBL_FP80
30300
30303
"_ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c",
30301
30304
#endif
30302
- // The following test cases were found by libFuzzer+ASAN
30305
+ // The following test cases were found by libFuzzer+ASAN
30303
30306
"\x44\x74\x70\x74\x71\x75\x34\x43\x41\x72\x4D\x6E\x65\x34\x9F\xC1\x43\x41\x72\x4D\x6E\x77\x38\x9A\x8E\x44\x6F\x64\x6C\x53\xF9\x5F\x70\x74\x70\x69\x45\x34\xD3\x73\x9E\x2A\x37",
30304
30307
"\x4D\x41\x72\x63\x4E\x39\x44\x76\x72\x4D\x34\x44\x53\x4B\x6F\x44\x54\x6E\x61\x37\x47\x77\x78\x38\x43\x27\x41\x5F\x73\x70\x69\x45*",
30305
30308
"\x41\x64\x6E\x32*",
@@ -30345,128 +30348,114 @@ const char* invalid_cases[] =
30345
30348
"_ZGI3Foo",
30346
30349
"_ZGIW3Foov",
30347
30350
"W1x",
30351
+ // clang-format on
30348
30352
};
30349
30353
30350
30354
const unsigned NI = sizeof(invalid_cases) / sizeof(invalid_cases[0]);
30351
30355
30352
- void test()
30353
- {
30354
- std::size_t len = 0;
30355
- char* buf = nullptr;
30356
- bool failed = false;
30357
- for (unsigned i = 0; i < N; ++i)
30358
- {
30359
- int status;
30360
- char* demang =
30361
- __cxxabiv1::__cxa_demangle(cases[i][0], buf, &len, &status);
30362
- if (!demang || std::strcmp(demang, cases[i][1]) != 0)
30363
- {
30364
- std::fprintf(stderr, "ERROR demangling %s\n"
30365
- "expected: %s\n"
30366
- "got: %d, %s\n",
30367
- cases[i][0], cases[i][1], status,
30368
- demang ? demang : "(null)");
30369
- failed = true;
30370
- }
30371
- if (demang)
30372
- buf = demang;
30356
+ void test() {
30357
+ std::size_t len = 0;
30358
+ char *buf = nullptr;
30359
+ bool failed = false;
30360
+ for (unsigned i = 0; i < N; ++i) {
30361
+ int status;
30362
+ char *demang = __cxxabiv1::__cxa_demangle(cases[i][0], buf, &len, &status);
30363
+ if (!demang || std::strcmp(demang, cases[i][1]) != 0) {
30364
+ std::fprintf(stderr,
30365
+ "ERROR demangling %s\n"
30366
+ "expected: %s\n"
30367
+ "got: %d, %s\n",
30368
+ cases[i][0], cases[i][1], status,
30369
+ demang ? demang : "(null)");
30370
+ failed = true;
30373
30371
}
30374
- free(buf);
30375
- assert(!failed && "demangle failed");
30372
+ if (demang)
30373
+ buf = demang;
30374
+ }
30375
+ free(buf);
30376
+ assert(!failed && "demangle failed");
30376
30377
}
30377
30378
30378
- void test_invalid_cases()
30379
- {
30380
- std::size_t len = 0;
30381
- char* buf = nullptr;
30382
- bool passed = false;
30383
- for (unsigned i = 0; i < NI; ++i)
30384
- {
30385
- int status;
30386
- char* demang =
30387
- __cxxabiv1::__cxa_demangle(invalid_cases[i], buf, &len, &status);
30388
- if (status != -2)
30389
- {
30390
- std::printf("%s should be invalid but is not\n", invalid_cases[i]);
30391
- std::printf("Got: %d, %s\n", status, demang ? demang : "(null)");
30392
- passed = true;
30393
- }
30394
- if (demang)
30395
- buf = demang;
30379
+ void test_invalid_cases() {
30380
+ std::size_t len = 0;
30381
+ char *buf = nullptr;
30382
+ bool passed = false;
30383
+ for (unsigned i = 0; i < NI; ++i) {
30384
+ int status;
30385
+ char *demang =
30386
+ __cxxabiv1::__cxa_demangle(invalid_cases[i], buf, &len, &status);
30387
+ if (status != -2) {
30388
+ std::printf("%s should be invalid but is not\n", invalid_cases[i]);
30389
+ std::printf("Got: %d, %s\n", status, demang ? demang : "(null)");
30390
+ passed = true;
30396
30391
}
30397
- free(buf);
30398
- assert(!passed && "demangle did not fail");
30392
+ if (demang)
30393
+ buf = demang;
30394
+ }
30395
+ free(buf);
30396
+ assert(!passed && "demangle did not fail");
30399
30397
}
30400
30398
30401
30399
const char *const xfail_cases[] = {
30402
30400
// Sentinel value
30403
- nullptr
30401
+ nullptr,
30404
30402
};
30405
30403
30406
- void test_xfail_cases()
30407
- {
30408
- std::size_t len = 0;
30409
- char* buf = nullptr;
30410
- for (const char *c_str : xfail_cases)
30411
- {
30412
- if (!c_str)
30413
- break;
30414
- int status;
30415
- char* demang = __cxxabiv1::__cxa_demangle(c_str, buf, &len, &status);
30416
- if (status != -2)
30417
- {
30418
- std::printf("%s was documented as xfail but passed\n", c_str);
30419
- std::printf("Got status = %d\n", status);
30420
- assert(status == -2);
30421
- }
30422
- else
30423
- {
30424
- buf = demang;
30425
- }
30404
+ void test_xfail_cases() {
30405
+ std::size_t len = 0;
30406
+ char *buf = nullptr;
30407
+ for (const char *c_str : xfail_cases) {
30408
+ if (!c_str)
30409
+ break;
30410
+ int status;
30411
+ char *demang = __cxxabiv1::__cxa_demangle(c_str, buf, &len, &status);
30412
+ if (status != -2) {
30413
+ std::printf("%s was documented as xfail but passed\n", c_str);
30414
+ std::printf("Got status = %d\n", status);
30415
+ assert(status == -2);
30416
+ } else {
30417
+ buf = demang;
30426
30418
}
30427
- free(buf);
30419
+ }
30420
+ free(buf);
30428
30421
}
30429
30422
30430
- void testFPLiterals()
30431
- {
30432
- std::size_t len = 0;
30433
- char* buf = nullptr;
30434
- for (unsigned i = 0; i < NF; ++i)
30435
- {
30436
- FPLiteralCase *fpCase = fp_literal_cases+i;
30437
- int status;
30438
- char* demang = __cxxabiv1::__cxa_demangle(fpCase->mangled, buf, &len, &status);
30439
- if (demang == 0)
30440
- {
30441
- std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30442
- std::printf("Got instead: NULL, %d\n", status);
30443
- assert(false);
30444
- continue;
30445
- }
30446
- std::string *e_beg = fpCase->expecting;
30447
- std::string *e_end = fpCase->expecting + NEF;
30448
- if (std::find(e_beg, e_end, demang) == e_end)
30449
- {
30450
- std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30451
- std::printf("Got instead: %s\n", demang);
30452
- assert(false);
30453
- continue;
30454
- }
30455
- buf = demang;
30423
+ void testFPLiterals() {
30424
+ std::size_t len = 0;
30425
+ char *buf = nullptr;
30426
+ for (unsigned i = 0; i < NF; ++i) {
30427
+ FPLiteralCase *fpCase = fp_literal_cases + i;
30428
+ int status;
30429
+ char *demang =
30430
+ __cxxabiv1::__cxa_demangle(fpCase->mangled, buf, &len, &status);
30431
+ if (demang == 0) {
30432
+ std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30433
+ std::printf("Got instead: NULL, %d\n", status);
30434
+ assert(false);
30435
+ continue;
30456
30436
}
30457
- free(buf);
30437
+ std::string *e_beg = fpCase->expecting;
30438
+ std::string *e_end = fpCase->expecting + NEF;
30439
+ if (std::find(e_beg, e_end, demang) == e_end) {
30440
+ std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30441
+ std::printf("Got instead: %s\n", demang);
30442
+ assert(false);
30443
+ continue;
30444
+ }
30445
+ buf = demang;
30446
+ }
30447
+ free(buf);
30458
30448
}
30459
30449
30460
- int main(int, char**)
30461
- {
30462
- std::printf("Testing %d symbols.\n", N);
30463
- {
30464
- timer t;
30465
- test();
30466
- test_invalid_cases();
30467
- test_xfail_cases();
30468
- testFPLiterals();
30469
- }
30450
+ int main(int, char **) {
30451
+ std::printf("Testing %d symbols.\n", N);
30452
+ {
30453
+ timer t;
30454
+ test();
30455
+ test_invalid_cases();
30456
+ test_xfail_cases();
30457
+ testFPLiterals();
30458
+ }
30470
30459
#if 0
30471
30460
std::string input;
30472
30461
while (std::cin)
@@ -30502,5 +30491,5 @@ int main(int, char**)
30502
30491
}
30503
30492
#endif
30504
30493
30505
- return 0;
30494
+ return 0;
30506
30495
}
0 commit comments