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)"},
@@ -30244,16 +30244,17 @@ const char* cases[][2] =
30244
30244
{"_Z1fDSDRj", "f(_Sat unsigned _Fract)"},
30245
30245
{"_Z1fDSDRl", "f(_Sat long _Fract)"},
30246
30246
{"_Z1fDSDRm", "f(_Sat unsigned long _Fract)"},
30247
+ // clang-format on
30247
30248
};
30248
- // clang-format on
30249
30249
30250
30250
const unsigned N = sizeof(cases) / sizeof(cases[0]);
30251
30251
30252
30252
struct FPLiteralCase {
30253
- const char* mangled;
30253
+ const char * mangled;
30254
30254
// There are four possible demanglings of a given float.
30255
30255
std::string expecting[4];
30256
30256
} fp_literal_cases[] = {
30257
+ // clang-format off
30257
30258
{"_ZN5test01gIfEEvRAszplcvT__ELf40a00000E_c",
30258
30259
{
30259
30260
"void test0::g<float>(char (&) [sizeof ((float)() + 0x1.4p+2f)])",
@@ -30279,15 +30280,17 @@ struct FPLiteralCase {
30279
30280
#endif
30280
30281
#if LDBL_FP128
30281
30282
// A 32-character FP literal of long double type
30282
- {"3FooILeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEE", {"Foo<-0x1.eeeeeeeeeeeeeeeeeeeeeeeeeeeep+12015L>"}},
30283
+ {"3FooILeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEE",
30284
+ {"Foo<-0x1.eeeeeeeeeeeeeeeeeeeeeeeeeeeep+12015L>"}},
30283
30285
#endif
30286
+ // clang-format on
30284
30287
};
30285
30288
const unsigned NF = sizeof(fp_literal_cases) / sizeof(fp_literal_cases[0]);
30286
- const unsigned NEF = sizeof(fp_literal_cases[0].expecting) / sizeof(fp_literal_cases[0].expecting[0]);
30289
+ const unsigned NEF = sizeof(fp_literal_cases[0].expecting) /
30290
+ sizeof(fp_literal_cases[0].expecting[0]);
30287
30291
30288
-
30289
- const char* invalid_cases[] =
30290
- {
30292
+ const char *invalid_cases[] = {
30293
+ // clang-format off
30291
30294
"_ZIPPreEncode",
30292
30295
"Agentt",
30293
30296
"NSoERj5E=Y1[uM:ga",
@@ -30298,7 +30301,7 @@ const char* invalid_cases[] =
30298
30301
#if !LDBL_FP80
30299
30302
"_ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c",
30300
30303
#endif
30301
- // The following test cases were found by libFuzzer+ASAN
30304
+ // The following test cases were found by libFuzzer+ASAN
30302
30305
"\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",
30303
30306
"\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*",
30304
30307
"\x41\x64\x6E\x32*",
@@ -30344,128 +30347,114 @@ const char* invalid_cases[] =
30344
30347
"_ZGI3Foo",
30345
30348
"_ZGIW3Foov",
30346
30349
"W1x",
30350
+ // clang-format on
30347
30351
};
30348
30352
30349
30353
const unsigned NI = sizeof(invalid_cases) / sizeof(invalid_cases[0]);
30350
30354
30351
- void test()
30352
- {
30353
- std::size_t len = 0;
30354
- char* buf = nullptr;
30355
- bool failed = false;
30356
- for (unsigned i = 0; i < N; ++i)
30357
- {
30358
- int status;
30359
- char* demang =
30360
- __cxxabiv1::__cxa_demangle(cases[i][0], buf, &len, &status);
30361
- if (!demang || std::strcmp(demang, cases[i][1]) != 0)
30362
- {
30363
- std::fprintf(stderr, "ERROR demangling %s\n"
30364
- "expected: %s\n"
30365
- "got: %d, %s\n",
30366
- cases[i][0], cases[i][1], status,
30367
- demang ? demang : "(null)");
30368
- failed = true;
30369
- }
30370
- if (demang)
30371
- buf = demang;
30355
+ void test() {
30356
+ std::size_t len = 0;
30357
+ char *buf = nullptr;
30358
+ bool failed = false;
30359
+ for (unsigned i = 0; i < N; ++i) {
30360
+ int status;
30361
+ char *demang = __cxxabiv1::__cxa_demangle(cases[i][0], buf, &len, &status);
30362
+ if (!demang || std::strcmp(demang, cases[i][1]) != 0) {
30363
+ std::fprintf(stderr,
30364
+ "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;
30372
30370
}
30373
- free(buf);
30374
- assert(!failed && "demangle failed");
30371
+ if (demang)
30372
+ buf = demang;
30373
+ }
30374
+ free(buf);
30375
+ assert(!failed && "demangle failed");
30375
30376
}
30376
30377
30377
- void test_invalid_cases()
30378
- {
30379
- std::size_t len = 0;
30380
- char* buf = nullptr;
30381
- bool passed = false;
30382
- for (unsigned i = 0; i < NI; ++i)
30383
- {
30384
- int status;
30385
- char* demang =
30386
- __cxxabiv1::__cxa_demangle(invalid_cases[i], buf, &len, &status);
30387
- if (status != -2)
30388
- {
30389
- std::printf("%s should be invalid but is not\n", invalid_cases[i]);
30390
- std::printf("Got: %d, %s\n", status, demang ? demang : "(null)");
30391
- passed = true;
30392
- }
30393
- if (demang)
30394
- buf = demang;
30378
+ void test_invalid_cases() {
30379
+ std::size_t len = 0;
30380
+ char *buf = nullptr;
30381
+ bool passed = false;
30382
+ for (unsigned i = 0; i < NI; ++i) {
30383
+ int status;
30384
+ char *demang =
30385
+ __cxxabiv1::__cxa_demangle(invalid_cases[i], buf, &len, &status);
30386
+ if (status != -2) {
30387
+ std::printf("%s should be invalid but is not\n", invalid_cases[i]);
30388
+ std::printf("Got: %d, %s\n", status, demang ? demang : "(null)");
30389
+ passed = true;
30395
30390
}
30396
- free(buf);
30397
- assert(!passed && "demangle did not fail");
30391
+ if (demang)
30392
+ buf = demang;
30393
+ }
30394
+ free(buf);
30395
+ assert(!passed && "demangle did not fail");
30398
30396
}
30399
30397
30400
30398
const char *const xfail_cases[] = {
30401
30399
// Sentinel value
30402
- nullptr
30400
+ nullptr,
30403
30401
};
30404
30402
30405
- void test_xfail_cases()
30406
- {
30407
- std::size_t len = 0;
30408
- char* buf = nullptr;
30409
- for (const char *c_str : xfail_cases)
30410
- {
30411
- if (!c_str)
30412
- break;
30413
- int status;
30414
- char* demang = __cxxabiv1::__cxa_demangle(c_str, buf, &len, &status);
30415
- if (status != -2)
30416
- {
30417
- std::printf("%s was documented as xfail but passed\n", c_str);
30418
- std::printf("Got status = %d\n", status);
30419
- assert(status == -2);
30420
- }
30421
- else
30422
- {
30423
- buf = demang;
30424
- }
30403
+ void test_xfail_cases() {
30404
+ std::size_t len = 0;
30405
+ char *buf = nullptr;
30406
+ for (const char *c_str : xfail_cases) {
30407
+ if (!c_str)
30408
+ break;
30409
+ int status;
30410
+ char *demang = __cxxabiv1::__cxa_demangle(c_str, buf, &len, &status);
30411
+ if (status != -2) {
30412
+ std::printf("%s was documented as xfail but passed\n", c_str);
30413
+ std::printf("Got status = %d\n", status);
30414
+ assert(status == -2);
30415
+ } else {
30416
+ buf = demang;
30425
30417
}
30426
- free(buf);
30418
+ }
30419
+ free(buf);
30427
30420
}
30428
30421
30429
- void testFPLiterals()
30430
- {
30431
- std::size_t len = 0;
30432
- char* buf = nullptr;
30433
- for (unsigned i = 0; i < NF; ++i)
30434
- {
30435
- FPLiteralCase *fpCase = fp_literal_cases+i;
30436
- int status;
30437
- char* demang = __cxxabiv1::__cxa_demangle(fpCase->mangled, buf, &len, &status);
30438
- if (demang == 0)
30439
- {
30440
- std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30441
- std::printf("Got instead: NULL, %d\n", status);
30442
- assert(false);
30443
- continue;
30444
- }
30445
- std::string *e_beg = fpCase->expecting;
30446
- std::string *e_end = fpCase->expecting + NEF;
30447
- if (std::find(e_beg, e_end, demang) == e_end)
30448
- {
30449
- std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30450
- std::printf("Got instead: %s\n", demang);
30451
- assert(false);
30452
- continue;
30453
- }
30454
- buf = demang;
30422
+ void testFPLiterals() {
30423
+ std::size_t len = 0;
30424
+ char *buf = nullptr;
30425
+ for (unsigned i = 0; i < NF; ++i) {
30426
+ FPLiteralCase *fpCase = fp_literal_cases + i;
30427
+ int status;
30428
+ char *demang =
30429
+ __cxxabiv1::__cxa_demangle(fpCase->mangled, buf, &len, &status);
30430
+ if (demang == 0) {
30431
+ std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30432
+ std::printf("Got instead: NULL, %d\n", status);
30433
+ assert(false);
30434
+ continue;
30455
30435
}
30456
- free(buf);
30436
+ std::string *e_beg = fpCase->expecting;
30437
+ std::string *e_end = fpCase->expecting + NEF;
30438
+ if (std::find(e_beg, e_end, demang) == e_end) {
30439
+ std::printf("%s -> %s\n", fpCase->mangled, fpCase->expecting[0].c_str());
30440
+ std::printf("Got instead: %s\n", demang);
30441
+ assert(false);
30442
+ continue;
30443
+ }
30444
+ buf = demang;
30445
+ }
30446
+ free(buf);
30457
30447
}
30458
30448
30459
- int main(int, char**)
30460
- {
30461
- std::printf("Testing %d symbols.\n", N);
30462
- {
30463
- timer t;
30464
- test();
30465
- test_invalid_cases();
30466
- test_xfail_cases();
30467
- testFPLiterals();
30468
- }
30449
+ int main(int, char **) {
30450
+ std::printf("Testing %d symbols.\n", N);
30451
+ {
30452
+ timer t;
30453
+ test();
30454
+ test_invalid_cases();
30455
+ test_xfail_cases();
30456
+ testFPLiterals();
30457
+ }
30469
30458
#if 0
30470
30459
std::string input;
30471
30460
while (std::cin)
@@ -30501,5 +30490,5 @@ int main(int, char**)
30501
30490
}
30502
30491
#endif
30503
30492
30504
- return 0;
30493
+ return 0;
30505
30494
}
0 commit comments