1 // SPDX-License-Identifier: GPL-2.0 2 #include <string.h> 3 #include <stdlib.h> 4 #include <stdio.h> 5 #include "tests.h" 6 #include "session.h" 7 #include "debug.h" 8 #include "demangle-ocaml.h" 9 10 static int test__demangle_ocaml(struct test *test __maybe_unused, int subtest __maybe_unused) 11 { 12 int ret = TEST_OK; 13 char *buf = NULL; 14 size_t i; 15 16 struct { 17 const char *mangled, *demangled; 18 } test_cases[] = { 19 { "main", 20 NULL }, 21 { "camlStdlib__array__map_154", 22 "Stdlib.array.map_154" }, 23 { "camlStdlib__anon_fn$5bstdlib$2eml$3a334$2c0$2d$2d54$5d_1453", 24 "Stdlib.anon_fn[stdlib.ml:334,0--54]_1453" }, 25 { "camlStdlib__bytes__$2b$2b_2205", 26 "Stdlib.bytes.++_2205" }, 27 }; 28 29 for (i = 0; i < ARRAY_SIZE(test_cases); i++) { 30 buf = ocaml_demangle_sym(test_cases[i].mangled); 31 if ((buf == NULL && test_cases[i].demangled != NULL) 32 || (buf != NULL && test_cases[i].demangled == NULL) 33 || (buf != NULL && strcmp(buf, test_cases[i].demangled))) { 34 pr_debug("FAILED: %s: %s != %s\n", test_cases[i].mangled, 35 buf == NULL ? "(null)" : buf, 36 test_cases[i].demangled == NULL ? "(null)" : test_cases[i].demangled); 37 ret = TEST_FAIL; 38 } 39 free(buf); 40 } 41 42 return ret; 43 } 44 45 DEFINE_SUITE("Demangle OCaml", demangle_ocaml); 46