From 04d0d2ad6989939f0fcfc7a98a3b0e8ba3c4bd8c Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 10 Apr 2024 01:25:17 +0000 Subject: [PATCH 01/31] add riscv syscalls implementations --- client/minilibc.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/client/minilibc.c b/client/minilibc.c index 87f1738..1190ea7 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -282,6 +282,76 @@ get_thread_area(void) { return tp; } +#elif defined(__riscv) +#define R_RELATIVE R_RISCV_RELATIVE +#define __asm_syscall(...) \ + __asm__ __volatile__ ("ecall\n\t" \ + : "+r"(a0) : __VA_ARGS__ : "memory"); \ + return a0; \ + +static size_t syscall0(int n) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0"); + __asm_syscall("r"(a7)) +} + +static size_t syscall1(int n, size_t a) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0") = a; + __asm_syscall("r"(a7), "0"(a0)) +} + +static size_t syscall2(int n, size_t a, size_t b) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0") = a; + register size_t a1 __asm__("a1") = b; + __asm_syscall("r"(a7), "0"(a0), "r"(a1)) +} + +static size_t syscall3(int n, size_t a, size_t b, size_t c) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0") = a; + register size_t a1 __asm__("a1") = b; + register size_t a2 __asm__("a2") = c; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2)) +} + +static size_t syscall4(int n, size_t a, size_t b, size_t c, size_t d) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0") = a; + register size_t a1 __asm__("a1") = b; + register size_t a2 __asm__("a2") = c; + register size_t a3 __asm__("a3") = d; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3)) +} + +static size_t syscall5(int n, size_t a, size_t b, size_t c, size_t d, size_t e) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0") = a; + register size_t a1 __asm__("a1") = b; + register size_t a2 __asm__("a2") = c; + register size_t a3 __asm__("a3") = d; + register size_t a4 __asm__("a4") = e; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4)) +} + +static size_t syscall6(int n, size_t a, size_t b, size_t c, size_t d, size_t e, size_t f) +{ + register size_t a7 __asm__("a7") = n; + register size_t a0 __asm__("a0") = a; + register size_t a1 __asm__("a1") = b; + register size_t a2 __asm__("a2") = c; + register size_t a3 __asm__("a3") = d; + register size_t a4 __asm__("a4") = e; + register size_t a5 __asm__("a5") = f; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)) +} #else #error #endif From 11d16bd8c985ccbbf89ef1e04340091a626cd494 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 10 Apr 2024 01:26:38 +0000 Subject: [PATCH 02/31] add clone syscall implementation riscv --- client/emulate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/emulate.c b/client/emulate.c index 60cef21..971e66e 100644 --- a/client/emulate.c +++ b/client/emulate.c @@ -249,7 +249,8 @@ handle_clone(struct State* state, struct clone_args* uargs, size_t usize) { ssize_t res = syscall(__NR_clone, flags, 0, args.parent_tid, args.tls, args.child_tid, 0); #else -#error "clone not implemented for target" + ssize_t res = syscall(__NR_clone, flags, 0, args.parent_tid, args.tls, + args.child_tid, 0); #endif if (res < 0) { From 5c0cd621696b1d7671b23abf3094690bc97cf82e Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Mon, 13 May 2024 20:50:29 +0000 Subject: [PATCH 03/31] fix macros --- client/main.c | 2 ++ client/rtld.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/client/main.c b/client/main.c index aab33fc..10ef38c 100644 --- a/client/main.c +++ b/client/main.c @@ -54,6 +54,8 @@ int main(int argc, char** argv) { state.tsc.tsc_stack_alignment = 8; #elif defined(__aarch64__) state.tsc.tsc_host_arch = EM_AARCH64; +#elif defined(__riscv) + state.tsc.tsc_host_arch = EM_RISCV; #else #error "Unsupported architecture!" #endif diff --git a/client/rtld.c b/client/rtld.c index 8429bd3..8b8fd7c 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -21,6 +21,10 @@ #define EM_CURRENT EM_X86_64 #elif defined(__aarch64__) #define EM_CURRENT EM_AARCH64 +#elif defined(__riscv) +#define EM_CURRENT EM_RISCV +#else +#error #endif #define elf_check_arch(x) ((x)->e_machine == EM_CURRENT) @@ -86,6 +90,8 @@ static const struct PltEntry plt_entries[] = { #define PLT_FUNC_SIZE 8 #elif defined(__aarch64__) #define PLT_FUNC_SIZE 8 +#elif defined(__riscv) +#define PLT_FUNC_SIZE 8 #else #error "currently unsupported architecture" #endif @@ -117,6 +123,8 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { #elif defined(__aarch64__) *((uint32_t*) code_ptr+0) = 0x58000011 | (offset << 3); // ldr x17, [pc+off] *((uint32_t*) code_ptr+1) = 0xd61f0220; // br x17 +#elif defined(__riscv) +#error #else #error #endif // defined(__x86_64__) From a3008119566de1cb6bb8758fe5b4b65903c63609 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Sun, 6 Oct 2024 12:53:24 +0000 Subject: [PATCH 04/31] client: implement syscalls and funcions for rv64 --- client/emulate.c | 17 ++++++++++++++++- client/memory.c | 2 +- client/minilibc.c | 39 ++++++++++++++++++++++++++++++++++++++- client/rtld.c | 4 ++-- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/client/emulate.c b/client/emulate.c index 971e66e..4987f8c 100644 --- a/client/emulate.c +++ b/client/emulate.c @@ -475,7 +475,11 @@ emulate_syscall(uint64_t* cpu_regs) { res = syscall(__NR_pipe2, arg0, 0, 0, 0, 0, 0); break; case 82: // rename +#ifdef __riscv + res = syscall(__NR_renameat2, AT_FDCWD, arg0, AT_FDCWD, arg1, 0, 0); +#elif res = syscall(__NR_renameat, AT_FDCWD, arg0, AT_FDCWD, arg1, 0, 0); +#endif break; case 83: // mkdir res = syscall(__NR_mkdirat, AT_FDCWD, arg0, arg1, 0, 0, 0); @@ -752,7 +756,18 @@ emulate_syscall_generic(struct CpuState* cpu_state, uint64_t* resp, uint64_t nr, } case 29: nr = __NR_ioctl; goto native; // TODO: catch dangerous commands case 35: nr = __NR_unlinkat; goto native; - case 38: nr = __NR_renameat; goto native; + case 38: +#ifdef __riscv +#ifdef SYS_renameat + nr = SYS_renameat; +#else + nr = __NR_renameat2; + arg5 = 0; +#endif +#elif + nr = __NR_renameat; +#endif + goto native; case 46: nr = __NR_ftruncate; goto native; case 48: nr = __NR_faccessat; goto native; case 49: nr = __NR_chdir; goto native; diff --git a/client/memory.c b/client/memory.c index 0c4eb81..d8cbfa0 100644 --- a/client/memory.c +++ b/client/memory.c @@ -113,7 +113,7 @@ mem_write_code(void* dst, const void* src, size_t size) { } __asm__ volatile("isb"); #else -#error "Implement ICache flush for unknown target" +//#error "Implement ICache flush for unknown target" #endif return 0; } diff --git a/client/minilibc.c b/client/minilibc.c index 1190ea7..eb06dec 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -284,11 +284,29 @@ get_thread_area(void) { #elif defined(__riscv) #define R_RELATIVE R_RISCV_RELATIVE + +//TODO: maybe put this def to common? +#ifndef SA_RESTORER +#define SA_RESTORER 0x04000000 +#endif + #define __asm_syscall(...) \ __asm__ __volatile__ ("ecall\n\t" \ : "+r"(a0) : __VA_ARGS__ : "memory"); \ return a0; \ +ASM_BLOCK( + .weak _DYNAMIC; + .hidden _DYNAMIC; + .globl _start; +_start: + mv fp, x0; + mv a0, sp; + la a2, _DYNAMIC; + andi sp, sp, 0xfffffffffffffff0; + call __start_main; +); + static size_t syscall0(int n) { register size_t a7 __asm__("a7") = n; @@ -352,6 +370,23 @@ static size_t syscall6(int n, size_t a, size_t b, size_t c, size_t d, size_t e, register size_t a5 __asm__("a5") = f; __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)) } + +int +set_thread_area(void* tp) { + __asm__ volatile ("mv %0, a0\n\t" + "li a0, 0\r\n" :: "r"(tp) : "memory"); + return 0; +} + +void* get_thread_area(void) { +#ifdef SYS_set_thread_area + void* tp; + syscall1(SYS_set_thread_area, tp); +#else + return (void*)-ENOSYS; +#endif +} + #else #error #endif @@ -810,7 +845,9 @@ sigaction(int num, const struct sigaction* restrict act, if (act) { kact = *act; kact.sa_flags |= SA_RESTORER; - kact.sa_restorer = __restore; +#ifndef __riscv + kact.sa_restorer = __restore; +#endif act = &kact; } return syscall4(__NR_rt_sigaction, num, (uintptr_t) act, (uintptr_t) oact, diff --git a/client/rtld.c b/client/rtld.c index 8b8fd7c..971e896 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -124,7 +124,7 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { *((uint32_t*) code_ptr+0) = 0x58000011 | (offset << 3); // ldr x17, [pc+off] *((uint32_t*) code_ptr+1) = 0xd61f0220; // br x17 #elif defined(__riscv) -#error +//#error #else #error #endif // defined(__x86_64__) @@ -171,7 +171,7 @@ rtld_patch_create_stub(Rtld* rtld, const struct RtldPatchData* patch_data, return -EINVAL; rtld_blend(stcode + 4, 0x03ffffff, (jmptgtdiff - 4) >> 2); #else -#error "missing patch stub" +//#error "missing patch stub" #endif memcpy(stcode+sizeof(stcode)-sizeof(*patch_data), patch_data, sizeof(*patch_data)); From 3f3aacb7cdfe3359c4b667bbfc2672367ff92822 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 9 Oct 2024 12:19:33 +0000 Subject: [PATCH 05/31] (WIP) patch assembly --- client/main.c | 1 + client/minilibc.c | 71 +++++++++++++++++++++++++++++++++++++++-- client/rtld.c | 2 +- server/rewriteserver.cc | 1 + 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/client/main.c b/client/main.c index 10ef38c..15b427a 100644 --- a/client/main.c +++ b/client/main.c @@ -16,6 +16,7 @@ int main(int argc, char** argv) { + printf("client main\n"); int i; int retval; diff --git a/client/minilibc.c b/client/minilibc.c index eb06dec..024b39b 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -296,15 +296,77 @@ get_thread_area(void) { return a0; \ ASM_BLOCK( + .text; + .type _start, %function; .weak _DYNAMIC; .hidden _DYNAMIC; .globl _start; _start: mv fp, x0; mv a0, sp; - la a2, _DYNAMIC; + lla a1, _DYNAMIC; andi sp, sp, 0xfffffffffffffff0; - call __start_main; + jal __start_main; + +// li a7, 93; +// ecall +); +// ASM_BLOCK( +// .text; +// .global _start\n" +// ".type _start,%function\n" +// "_start:\n" +// .weak __global_pointer$\n" +// ".hidden __global_pointer$\n" +// ".option push\n" +// ".option norelax\n\t" +// "lla gp, __global_pointer$\n" +// ".option pop\n\t" +// "mv a0, sp\n" +// ".weak _DYNAMIC\n" +// ".hidden _DYNAMIC\n\t" +// "lla a1, _DYNAMIC\n\t" +// "andi sp, sp, -16\n\t" +// "jal __start_main" +// ); + +ASM_BLOCK( + .global __clone; + .type __clone, %function; +__clone: + // Save func and arg to stack + addi a1, a1, -16; + sd a0, 0(a1); + sd a3, 8(a1); + + // Call SYS_clone + mv a0, a2; + mv a2, a4; + mv a3, a5; + mv a4, a6; + li a7, 220; // SYS_clone + ecall; + + beqz a0, 1f; + // Parent + ret; + + // Child +1: ld a1, 0(sp); + ld a0, 8(sp); + jalr a1; + + // Exit + li a7, 93; // SYS_exit + ecall; +); + +ASM_BLOCK( + .globl __restore; + .type __rectore, %function; +__restore: + li a0, __NR_rt_sigreturn; + ecall; ); static size_t syscall0(int n) @@ -912,6 +974,7 @@ GNU_FORCE_EXTERN void __start_main(const size_t* initial_stack, const size_t* dynv) { + printf("__start_main\n"); int argc = (int) initial_stack[0]; char** local_environ = (char**) &initial_stack[argc + 2]; @@ -955,12 +1018,14 @@ __start_main(const size_t* initial_stack, const size_t* dynv) *((size_t*) (base + rel[0])) += base; } for (; relasz; rela += 3, relasz -= 3*sizeof(size_t)) { + printf("R_RELATIVE = %d\n", R_RELATIVE); + printf("rela = %zu\n", rela[1]); if (ELF_R_TYPE(rela[1]) != R_RELATIVE) _exit(-ENOEXEC); *((size_t*) (base + rela[0])) = base + rela[2]; } } - + __asm__ volatile("" ::: "memory"); // memory barrier for compiler environ = local_environ; diff --git a/client/rtld.c b/client/rtld.c index 971e896..e1d695d 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -124,7 +124,7 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { *((uint32_t*) code_ptr+0) = 0x58000011 | (offset << 3); // ldr x17, [pc+off] *((uint32_t*) code_ptr+1) = 0xd61f0220; // br x17 #elif defined(__riscv) -//#error + *((uint32_t*) code_ptr+0) = 0x000000ef | (offset << 16); // jal x0, offset #else #error #endif // defined(__x86_64__) diff --git a/server/rewriteserver.cc b/server/rewriteserver.cc index 122075c..3438f4a 100644 --- a/server/rewriteserver.cc +++ b/server/rewriteserver.cc @@ -366,6 +366,7 @@ struct IWState { int main(int argc, char** argv) { + printf("server main"); llvm::cl::HideUnrelatedOptions({&InstrewCategory, &CodeGenCategory}); auto& optionMap = llvm::cl::getRegisteredOptions(); optionMap["time-passes"]->setHiddenFlag(llvm::cl::Hidden); From d4534bf715d7fb6085e472133503672b31c9dc60 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 23 Oct 2024 14:26:08 +0000 Subject: [PATCH 06/31] client: patch assembly for rv64 (2) --- client/minilibc.c | 63 ++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/client/minilibc.c b/client/minilibc.c index 024b39b..c30cbff 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -295,40 +295,41 @@ get_thread_area(void) { : "+r"(a0) : __VA_ARGS__ : "memory"); \ return a0; \ -ASM_BLOCK( - .text; - .type _start, %function; - .weak _DYNAMIC; - .hidden _DYNAMIC; - .globl _start; -_start: - mv fp, x0; - mv a0, sp; - lla a1, _DYNAMIC; - andi sp, sp, 0xfffffffffffffff0; - jal __start_main; - +//ASM_BLOCK( +// .text; +// .type _start, %function; +// .weak _DYNAMIC; +// .hidden _DYNAMIC; +// .globl _start; +//_start: +// mv fp, x0; +// mv a0, sp; +// lla a1, _DYNAMIC; +// andi sp, sp, 0xfffffffffffffff0; +// jal __start_main; +// // li a7, 93; // ecall +//); + +ASM_BLOCK( + .text; + .global _start; + .type _start, %function; + _start: + .weak __global_pointer$; + .hidden __global_pointer$; + .option push; + .option norelax; + lla gp, __global_pointer$; + .option pop; + mv a0, sp; + .weak _DYNAMIC; + .hidden _DYNAMIC; + lla a1, _DYNAMIC; + andi sp, sp, -16; + tail __start_main; ); -// ASM_BLOCK( -// .text; -// .global _start\n" -// ".type _start,%function\n" -// "_start:\n" -// .weak __global_pointer$\n" -// ".hidden __global_pointer$\n" -// ".option push\n" -// ".option norelax\n\t" -// "lla gp, __global_pointer$\n" -// ".option pop\n\t" -// "mv a0, sp\n" -// ".weak _DYNAMIC\n" -// ".hidden _DYNAMIC\n\t" -// "lla a1, _DYNAMIC\n\t" -// "andi sp, sp, -16\n\t" -// "jal __start_main" -// ); ASM_BLOCK( .global __clone; From 22773f5d4c0cb2147f45f8f4441047f55f8d1985 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 23 Oct 2024 14:26:44 +0000 Subject: [PATCH 07/31] client: fix cc flags for rv64 host --- client/meson.build | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/meson.build b/client/meson.build index 910d871..f575ed7 100644 --- a/client/meson.build +++ b/client/meson.build @@ -21,10 +21,14 @@ client_c_args = ['-D_GNU_SOURCE', '-nostdlib', '-fno-builtin', client_link_args = ['-nostdlib', '-nostartfiles', '-lgcc'] cc = meson.get_compiler('c') -if cc.has_argument('-static-pie') - client_link_args += ['-static-pie'] -else - client_link_args += ['-Wl,-static', '-Wl,-pie', '-Wl,--no-dynamic-linker', '-Wl,-z,text'] +if host_machine.cpu_family() == 'riscv64' + client_link_args += ['-Wl,-static', '-Wl,-pie', '-Wl,--no-dynamic-linker', '-Wl,-z,text'] +elif + if cc.has_argument('-static-pie') + client_link_args += ['-static-pie'] + else + client_link_args += ['-Wl,-static', '-Wl,-pie', '-Wl,--no-dynamic-linker', '-Wl,-z,text'] + endif endif if host_machine.cpu_family() == 'x86_64' From dc2472613b1d0c647e9bb258edfb3d0e2355098d Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 23 Oct 2024 14:32:46 +0000 Subject: [PATCH 08/31] client: fix relasz in minilibc && CodeModel in codegenerator --- client/main.c | 2 +- client/minilibc.c | 7 ++++--- server/codegenerator.cc | 4 ++++ server/rewriteserver.cc | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/client/main.c b/client/main.c index 15b427a..65db159 100644 --- a/client/main.c +++ b/client/main.c @@ -16,7 +16,7 @@ int main(int argc, char** argv) { - printf("client main\n"); + printf("client main, argc = %d\n", argc); int i; int retval; diff --git a/client/minilibc.c b/client/minilibc.c index c30cbff..1b4c4d3 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -1018,15 +1018,16 @@ __start_main(const size_t* initial_stack, const size_t* dynv) _exit(-ENOEXEC); *((size_t*) (base + rel[0])) += base; } +#if defined (__riscv) + relasz -= 24; //magic +#endif for (; relasz; rela += 3, relasz -= 3*sizeof(size_t)) { - printf("R_RELATIVE = %d\n", R_RELATIVE); - printf("rela = %zu\n", rela[1]); if (ELF_R_TYPE(rela[1]) != R_RELATIVE) _exit(-ENOEXEC); *((size_t*) (base + rela[0])) = base + rela[2]; } } - + __asm__ volatile("" ::: "memory"); // memory barrier for compiler environ = local_environ; diff --git a/server/codegenerator.cc b/server/codegenerator.cc index 797fb11..c695985 100644 --- a/server/codegenerator.cc +++ b/server/codegenerator.cc @@ -68,6 +68,10 @@ class CodeGenerator::impl { // The AArch64 target doesn't support the medium code model. cm = pic ? llvm::CodeModel::Large : llvm::CodeModel::Small; break; + case EM_RISCV: + triple = "riscv64-unknown-linux-gnu"; + cm = pic ? llvm::CodeModel::Medium : llvm::CodeModel::Small; + break; default: std::cerr << "unknown host architecture" << std::endl; abort(); diff --git a/server/rewriteserver.cc b/server/rewriteserver.cc index 3438f4a..b1daa08 100644 --- a/server/rewriteserver.cc +++ b/server/rewriteserver.cc @@ -366,7 +366,7 @@ struct IWState { int main(int argc, char** argv) { - printf("server main"); + printf("server main\n"); llvm::cl::HideUnrelatedOptions({&InstrewCategory, &CodeGenCategory}); auto& optionMap = llvm::cl::getRegisteredOptions(); optionMap["time-passes"]->setHiddenFlag(llvm::cl::Hidden); From 5acbcde40fe4e42f9b780f34accbe7cf0df7f15e Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 14 Nov 2024 16:50:01 +0000 Subject: [PATCH 09/31] (WIP) implement relocations and add test file --- client/rtld.c | 43 ++++++++++++++++++++++++++++++++++++++- test/riscv64/build-rec.sh | 2 ++ test/riscv64/rec.c | 14 +++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100755 test/riscv64/build-rec.sh create mode 100644 test/riscv64/rec.c diff --git a/client/rtld.c b/client/rtld.c index e1d695d..f5bd1e8 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -98,6 +98,7 @@ static const struct PltEntry plt_entries[] = { static int plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { +// printf("plt_create\n"); size_t plt_entry_count = sizeof(plt_entries) / sizeof(plt_entries[0]) - 1; size_t code_size = plt_entry_count * PLT_FUNC_SIZE; size_t data_offset = ALIGN_UP(code_size, 0x40u); @@ -111,6 +112,8 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { uintptr_t* data_ptr = &plt[data_offset / sizeof(uintptr_t) + i]; ptrdiff_t offset = (char*) data_ptr - (char*) code_ptr; +// printf("offset = %p, ", offset); + if (i == 0) *data_ptr = disp_info->quick_dispatch_func; else if (i == 1) @@ -124,7 +127,9 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { *((uint32_t*) code_ptr+0) = 0x58000011 | (offset << 3); // ldr x17, [pc+off] *((uint32_t*) code_ptr+1) = 0xd61f0220; // br x17 #elif defined(__riscv) - *((uint32_t*) code_ptr+0) = 0x000000ef | (offset << 16); // jal x0, offset + *((uint32_t*) code_ptr+0) = 0x0000006f | (offset << 20); // jal x0, offset +// uint32_t tmp = 0x0000006f | (offset << 20); +// printf("tmp = %p\n", tmp); #else #error #endif // defined(__x86_64__) @@ -144,6 +149,7 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { static int rtld_patch_create_stub(Rtld* rtld, const struct RtldPatchData* patch_data, uintptr_t* out_stub) { + printf("rtld_patch_create_stub\n"); _Static_assert(_Alignof(struct RtldPatchData) <= 0x10, "patch data alignment too big"); _Alignas(0x10) uint8_t stcode[0x10 + sizeof(*patch_data)]; @@ -351,6 +357,9 @@ rtld_elf_add_stub(uintptr_t sym, uintptr_t* out_stub) { static int rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { + +// printf("rtld_reloc_at\n"); + uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; @@ -445,6 +454,38 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { case R_AARCH64_MOVW_UABS_G3: rtld_blend(tgt, 0xffff << 5, syma >> 48 << 5); break; +#elif defined(__riscv) + case R_RISCV_32_PCREL: +// printf("R_RISCV_32_PCREL\n"); + printf("tgt before = %p, ", *((uint32_t*)tgt)); + printf("sym = %p, ", sym); + printf("add = %p, ", patch_data->addend); + printf("pc = %p, ", pc); + printf("prel_syma = %p, ", prel_syma); + + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_32_PCREL")) + return -EINVAL; + rtld_blend(tgt, 0xffffffff, prel_syma); + printf("tgt after = %p\n", *((uint32_t*)tgt)); + break; + case R_RISCV_ADD32: + printf("tgt before = %p, ", *((uint32_t*)tgt)); + uint64_t res = syma + (*(uint64_t*)pc); + printf("sym = %p, ", sym); + printf("add = %p, ", patch_data->addend); + printf("*pc = %p, ", (*(uint64_t*)pc)); + printf("res = %p, ", res); + + if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) + return -EINVAL; + rtld_blend(tgt, 0xffffffff, res); +// *((uint32_t*)tgt) += (uint32_t) syma; + printf("tgt after = %p\n", *((uint32_t*)tgt)); + break; + case R_RISCV_SUB32: + break; + case R_RISCV_CALL_PLT: + break; #endif default: dprintf(2, "unhandled relocation %u\n", patch_data->rel_type); diff --git a/test/riscv64/build-rec.sh b/test/riscv64/build-rec.sh new file mode 100755 index 0000000..477e39e --- /dev/null +++ b/test/riscv64/build-rec.sh @@ -0,0 +1,2 @@ +#!/bin/bash +gcc -Wall -Wpedantic -static -no-pie rec.c -o rec diff --git a/test/riscv64/rec.c b/test/riscv64/rec.c new file mode 100644 index 0000000..35351ed --- /dev/null +++ b/test/riscv64/rec.c @@ -0,0 +1,14 @@ +//#include +//#include + +int rec(int n) { + if (n <= 0) + return 1; + return n * rec(n - 1); +} + +int main(int argc, char *argv[]) { + int n = 5; +// printf("rec(%d) = %d\n", n, rec(n)); + return rec(n); +} From 0d368e2cf1b854248296e028e84b9d47dd5f16d9 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 28 Nov 2024 15:17:56 +0000 Subject: [PATCH 10/31] (wip stash) --- callgrind.out.52927 | 6585 +++++++++++++++++++++++++++++++++++++ callgrind.out.53033 | 6585 +++++++++++++++++++++++++++++++++++++ client/dispatch.c | 15 +- client/main.c | 2 +- client/meson.build | 2 +- client/minilibc.c | 12 +- client/rtld.c | 41 +- test/riscv64/build-rec.sh | 1 + 8 files changed, 13227 insertions(+), 16 deletions(-) create mode 100644 callgrind.out.52927 create mode 100644 callgrind.out.53033 diff --git a/callgrind.out.52927 b/callgrind.out.52927 new file mode 100644 index 0000000..e0ddbfa --- /dev/null +++ b/callgrind.out.52927 @@ -0,0 +1,6585 @@ +# callgrind format +version: 1 +creator: callgrind-3.21.0.GIT +pid: 52927 +cmd: ./build/server/instrew /bin/ls +part: 1 + + +desc: I1 cache: +desc: D1 cache: +desc: LL cache: + +desc: Timerange: Basic block 0 - 3375057 +desc: Trigger: Program termination + +positions: line +events: Ir +summary: 25203449 + + +ob=(5) /mnt/sda1/mikhaylov/instrew/build/server/instrew +fl=(90) ??? +fn=(348) 0x0000000000017942 +0 3 + +ob=(9) /usr/lib/riscv64-linux-gnu/libm.so.6 +fl=(99) ??? +fn=(378) 0x000000000000c4a8 +0 12 + +ob=(1) /usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1 +fl=(21) ./elf/./elf/dl-minimal-malloc.c +fn=(46) __minimal_calloc +82 46 ++3 276 +fi=(20) ./elf/../include/rtld-malloc.h +-29 138 +cfi=(21) +cfn=(51) __minimal_malloc'2 +calls=5 -21 +* 158 +cfi=(21) +cfn=(50) __minimal_malloc +calls=41 -21 +* 1217 +fe=(21) + +fn=(106) __minimal_free +95 12 ++2 12 +-2 6 ++2 6 +-2 6 ++2 6 ++7 30 + +fn=(50) +35 172 ++1 258 +-1 344 ++1 86 ++11 170 ++1 85 +-1 85 ++3 170 +-3 1 ++1 1 +-1 1 ++3 162 ++5 36 ++1 6 ++2 6 ++1 42 +cfi=(54) ./misc/../sysdeps/unix/sysv/linux/mmap64.c +cfn=(166) mmap +calls=6 -9 +* 42 ++2 6 +-2 6 ++2 6 ++2 12 ++2 8 ++4 4 +-1 4 ++1 4 ++2 24 +-3 82 ++1 82 ++2 492 +cfi=(59) ./elf/./elf/dl-deps.c +cfn=(179) _dl_map_object_deps'2 +calls=1 423 +* 83648 +-3 2 +-3 4 ++4 4 +-27 2 +-1 2 ++1 2 ++1 2 +-2 2 + +fn=(51) +35 68 ++1 102 +-1 136 ++1 34 ++11 68 ++1 34 +-1 34 ++3 134 ++5 6 ++1 1 ++2 1 ++1 7 +cfi=(54) +cfn=(166) +calls=1 -9 +* 7 ++2 1 +-2 1 ++2 1 ++2 2 ++2 2 ++4 1 +-1 1 ++1 1 ++2 6 +-3 33 ++1 33 ++2 198 +cfi=(59) +cfn=(179) +calls=17 423 +* 838808 + +fl=(75) ./elf/./dl-find_object.h +fn=(286) _dl_find_object_from_map +95 44 ++1 66 ++1 44 ++6 132 ++1 22 ++1 66 +-1 278 ++1 300 ++2 55 ++5 11 ++4 22 ++4 11 + +fl=(16) ./elf/../sysdeps/nptl/dl-tls_init_tp.c +fn=(36) __tls_pre_init_tp +56 4 ++1 2 ++1 2 ++3 2 +-5 2 ++1 2 ++1 2 ++3 2 ++1 2 ++2 1 + +fn=(58) rtld_mutex_dummy +44 432 + +fl=(45) ./setjmp/../sysdeps/riscv/setjmp.S +fn=(134) __sigsetjmp +31 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++3 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++5 68 ++1 68 + +fl=(61) ./elf/./elf/dl-cache.c +fn=(192) search_cache +206 38 ++5 19 +-5 133 ++5 57 ++6 19 +-11 38 ++5 19 +-5 171 ++5 19 +cfi=(11) ./elf/./elf/dl-tunables.c +cfn=(28) __tunable_get_val +calls=19 408 +* 418 +* 19 ++17 19 ++3 38 +-15 19 ++14 76 +-36 19 ++36 19 ++9 19 +-8 38 +-47 38 ++55 19 +-4 19 +-5 608 +-36 152 ++36 152 ++9 152 +-8 304 +-47 304 ++55 152 +-4 152 ++4 171 +cfn=(194) _dl_cache_libcmp +calls=171 368 +* 12284 ++1 171 +356 152 ++3 86 +228 86 +363 304 +-6 66 +228 142 ++22 36 ++5 18 +-71 36 ++71 18 +-2 18 ++2 18 +cfn=(194) +calls=18 368 +* 1281 +* 37 +-7 38 +-34 114 +-1 95 ++64 19 +170 19 +277 19 +170 57 ++97 20 ++4 1 +-87 2 ++87 1 ++1 3 +cfn=(194) +calls=1 +96 +* 170 +* 1 ++5 38 ++75 3 +-74 36 ++7 54 +fi=(62) ./elf/../sysdeps/generic/dl-cache.h +125 18 +fe=(61) +303 18 +fi=(62) +125 36 +fe=(61) +303 36 ++3 54 ++34 54 ++2 18 + +fn=(332) _dl_unload_cache +536 6 ++2 1 +-3 2 ++3 1 +cfi=(73) ./misc/../sysdeps/unix/syscall-template.S +cfn=(334) munmap +calls=1 120 +* 5 ++7 1 +-6 2 ++4 2 ++2 2 + +fn=(186) _dl_load_cache_lookup +413 190 ++2 57 +-2 19 ++2 38 ++3 76 ++69 36 ++5 38 ++3 19 +-3 19 ++3 114 +cfn=(192) +calls=19 206 +* 19097 +* 19 ++15 57 ++4 19 ++8 36 +cfi=(34) ./string/./string/strlen.c +cfn=(90) strlen +calls=18 39 +* 1406 ++1 72 ++1 72 +cfi=(22) ./string/./string/memcpy.c +cfn=(52) memcpy +calls=18 29 +* 1912 ++1 18 +cfi=(36) ./string/./string/strdup.c +cfn=(102) strdup +calls=18 40 +* 3493 ++1 209 +-37 2 +-68 6 +cfi=(46) ./elf/./elf/dl-misc.c +cfn=(188) _dl_sysdep_read_whole_file +calls=1 36 +* 85 ++8 1 +-8 1 ++8 4 ++1 4 +cfi=(18) ./string/./string/memcmp.c +cfn=(40) bcmp +calls=1 309 +* 67 +* 1 ++3 3 ++1 1 +-1 1 +fi=(62) +194 1 ++1 4 +fe=(61) +441 1 ++1 2 + +fn=(194) +368 380 ++2 380 ++20 1048 ++2 1044 ++4 880 ++1 880 +-29 1810 ++4 1076 +-2 2152 ++2 2152 +-2 1076 ++2 28 ++8 25 +-2 50 ++2 50 +-1 50 ++1 25 ++1 20 +-1 4 ++1 4 +-1 12 ++2 25 +-3 25 ++3 75 ++1 20 +-1 4 ++1 4 +-1 12 ++2 25 ++16 57 +-9 4 ++10 4 +-8 328 +-5 6 + +fl=(17) ./elf/./elf/dl-environ.c +fn=(38) _dl_next_ld_env_entry +29 3 +-1 3 ++4 6 ++2 2 ++1 4 +-3 31 ++13 31 +-13 31 ++2 66 ++1 20 ++5 2 +-3 2 ++3 2 ++2 2 ++7 1 + +fl=(69) ./elf/../include/list.h +fn=(250) __tls_init_tp +43 3 +fi=(16) ++25 3 +fe=(69) +-24 3 +-1 1 +fi=(16) ++29 1 +fe=(69) +-27 1 +fi=(16) ++24 1 +fe=(69) +-23 1 +fi=(16) ++29 1 +fe=(69) +-28 1 +fi=(16) ++28 2 ++7 3 ++5 1 +-11 1 ++1 1 ++5 1 ++8 1 +-15 1 ++1 1 ++1 1 ++10 1 ++2 1 ++1 1 ++3 4 ++2 3 ++3 1 ++8 4 +cfi=(11) +cfn=(28) +calls=1 408 +* 21 ++24 2 +fi=(104) ./elf/../sysdeps/unix/sysv/linux/rseq-internal.h +-83 1 +fi=(16) ++84 1 +fi=(104) +-84 1 +fi=(16) ++83 1 ++1 3 +fe=(69) + +fl=(42) ./string/./string/wordcopy.c +fn=(142) _wordcopy_fwd_aligned +37 688 ++33 6 ++2 6 +-1 6 ++2 6 ++29 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++4 6 +-1 6 +-1 6 ++4 6 +-22 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++4 6 +-1 6 +-1 6 ++4 6 +-19 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++4 7 +-1 7 +-1 7 ++4 7 +-16 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++4 6 +-1 6 +-1 6 ++4 6 +-13 40 ++4 40 +-3 40 ++2 40 ++4 40 +-3 40 ++2 40 ++4 40 +-3 40 ++4 40 +-1 40 +-1 40 ++4 40 +-10 18 ++4 18 +-3 18 ++2 18 ++4 18 +-3 18 ++4 18 +-1 18 +-1 18 ++4 18 +-7 9 ++4 9 +-3 9 ++4 9 +-1 9 +-1 9 ++4 9 +-28 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 12 ++29 86 ++1 86 +-90 9 ++2 9 +-1 9 ++1 9 ++1 9 ++1 9 ++2 18 ++2 18 +-1 18 ++2 18 ++1 18 ++2 40 ++2 40 +-1 40 ++1 40 ++1 40 ++1 40 ++2 6 ++2 6 +-1 6 ++2 6 ++1 6 ++2 7 ++2 7 +-1 7 ++1 7 ++1 7 ++1 7 + +fn=(122) _wordcopy_fwd_dest_aligned +150 75 ++7 25 +-6 25 ++6 25 +-6 25 ++4 25 ++2 105 ++17 17 ++13 3 +-4 3 ++1 3 ++4 3 ++29 12 ++1 25 +-21 3 +-1 1 ++4 1 +-3 1 ++3 3 +-1 1 ++4 1 +-3 1 ++3 3 ++3 1 +-4 1 ++1 1 ++3 3 ++3 1 +-4 1 ++5 1 +-4 1 ++3 1 +-1 1 ++4 1 +-12 51 +-1 17 ++4 17 +-3 17 ++3 51 ++3 17 +-4 17 ++1 17 ++3 51 ++3 17 +-4 17 ++5 17 +-4 17 ++3 17 +-1 17 ++4 17 +-6 15 ++3 5 +-4 5 ++5 5 +-4 5 ++3 5 +-1 5 ++4 5 ++5 110 +-57 5 ++1 5 ++1 5 ++1 10 ++1 5 ++1 5 ++11 17 ++1 34 ++2 34 ++2 17 + +fn=(222) _wordcopy_bwd_aligned +234 16 ++77 2 ++1 2 ++2 2 ++5 2 +-4 2 ++2 2 ++1 2 ++3 2 ++5 2 ++1 2 +-82 2 +-1 2 +-1 2 ++3 2 ++1 2 + +fl=(50) ./io/../sysdeps/unix/sysv/linux/stat64.c +fn=(158) fstat +29 21 +fi=(51) ./io/../sysdeps/unix/sysv/linux/fstat64.c ++1 21 ++5 84 +cfi=(52) ./io/../sysdeps/unix/sysv/linux/fstatat64.c +cfn=(162) fstatat +calls=21 +64 +* 147 +fe=(50) + +fl=(71) ./elf/./elf/dl-lookup.c +fn=(268) check_match +71 135720 ++3 16965 +-3 67860 ++3 16965 +-3 50895 ++1 16965 ++2 67857 ++13 67856 ++3 21197 +cfi=(24) ./string/./string/strcmp.c +cfn=(60) strcmp +calls=1058 -52 +* 120644 +* 1058 ++4 16965 ++1 16965 ++2 15941 ++19 63764 ++1 31882 +-1 15941 ++1 111587 ++2 162 ++1 20 +-41 16920 ++84 135720 +-18 1024 ++2 4092 ++1 2046 +-1 2046 ++1 1023 +-1 1023 ++4 2 ++1 6 ++2 2 +-75 90 ++39 47661 +cfi=(24) +cfn=(60) +calls=15887 -80 +* 997541 +* 15887 +-44 9 + +fn=(266) do_lookup_x +348 85295 ++1 17059 +-1 307062 ++7 34118 ++41 34118 ++3 34118 +-33 17059 ++33 17059 +-25 34118 ++86 17059 +-61 102354 +-19 155594 ++8 77797 ++1 77797 +-1 155594 ++1 77797 ++3 77797 +-8 77797 ++1 77797 ++3 77797 ++1 77797 ++4 77797 ++4 77797 ++3 77797 +-3 77797 +-2 233391 ++5 77797 ++3 388985 ++99 182628 +359 155594 ++3 77797 ++4 77797 ++4 233391 ++4 233391 +fi=(23) ./elf/../sysdeps/generic/ldsodefs.h +141 33842 +fe=(71) +460 33842 ++3 33842 ++4 94367 ++16 16835 ++2 16835 +-2 16835 ++1 16835 ++1 16835 +-78 20171 +-1 100855 ++2 20171 ++2 77048 ++7 38524 +-1 250406 ++7 57480 +-10 144320 ++2 16965 ++1 33930 +-1 33930 ++2 50895 +-1 33930 ++1 16965 +-1 135720 +cfn=(268) +calls=16965 71 +* 2082301 ++4 16965 ++3 90 ++82 138 ++1 255885 +-35 15996 +223 344 ++2 344 +-2 86 ++2 258 ++2 86 +-2 258 +-2 86 ++2 172 +cfi=(16) +cfn=(58) +calls=86 44 +* 172 ++2 86 ++1 86 ++1 258 ++2 170 ++1 170 +-1 340 ++1 170 +-1 1015 ++24 189 ++3 105 ++1 210 +-24 190 ++1 190 +-1 190 ++1 2 +cfi=(24) +cfn=(60) +calls=1 38 +* 157 +* 1 ++2 2 ++10 1 ++1 2 ++2 6 +cfi=(16) +cfn=(58) +calls=1 44 +* 2 +485 2 +-31 4685 ++2 1 +263 1680 ++49 170 +-1 85 ++19 255 ++2 85 +-2 680 ++2 255 +cfi=(16) +cfn=(58) +calls=85 44 +* 170 ++2 170 +485 85 +335 85 +-1 85 ++1 85 +177 435 +-2 92 ++1 184 +-3 354 +319 85 +180 85 ++1 85 ++1 85 ++1 85 +319 255 +-59 110 +fi=(20) +44 7 +cfi=(21) +cfn=(46) +calls=1 +38 +* 36 +* 1 +fe=(71) +303 1 +-72 2 +-59 2 +307 1 ++1 4 +-2 1 ++1 1 ++1 1 +-7 1 +172 1 +-1 21081 ++99 8 +cfi=(46) +cfn=(280) _dl_higher_prime_number +calls=2 125 +* 143 +fi=(20) +44 2 +fe=(71) +270 2 +fi=(20) +44 8 +cfi=(21) +cfn=(46) +calls=2 +38 +* 102 +* 2 +fe=(71) +273 2 ++7 8 +172 6 +280 2 ++1 184 ++1 210 +171 140 ++1 70 +-1 70 ++1 70 ++1 295 ++2 14 ++1 28 +-3 168 ++7 70 ++1 70 ++1 70 ++1 70 ++97 184 ++6 24 +-16 2 ++16 2 +cfi=(21) +cfn=(106) +calls=2 95 +* 26 +172 2 +290 4 +-3 2 +172 2 +289 2 ++1 6 +172 4 +-1 6 ++6 10 +437 169200 + +fn=(262) _dl_lookup_symbol_x +756 50910 ++2 33940 +-2 322430 ++2 16970 +fi=(72) ./elf/../sysdeps/generic/dl-new-hash.h +74 16970 ++3 16970 +-7 16970 +-1 16970 ++1 16970 ++10 33940 ++1 16970 +-1 805282 ++1 402641 ++20 1644636 ++1 822318 ++3 822318 +-31 411159 ++30 411159 +-27 411159 +fe=(71) +762 50910 +-4 16970 ++1 16970 ++3 16970 +-4 16970 ++1 16970 ++3 16970 ++4 48764 ++5 33940 +-2 16970 ++6 16970 +-7 101820 ++7 552 ++1 187649 +cfn=(266) +calls=17059 348 +* 7495906 +* 17059 ++28 16970 +-23 16970 ++23 16970 +-23 16970 ++24 84589 ++7 16921 +-7 16921 ++35 101526 ++14 33842 ++3 50763 ++17 16921 ++2 33842 +-76 16921 ++76 236992 +-76 49 ++76 686 +fi=(72) +87 8452 ++2 16904 ++1 8452 +fe=(71) +783 245 ++18 147 ++54 3 + +fl=(34) +fn=(90) +39 214 +-1 102 ++2 230 +-1 460 ++2 460 ++38 40 +-41 280 ++32 112 ++2 280 +-34 204 ++32 102 ++2 255 +-2 534 ++2 1335 ++6 214 ++2 174 ++2 158 ++2 134 ++4 104 ++2 92 ++2 58 ++2 18 +-56 534 ++57 18 ++4 9 +-18 24 ++2 36 ++2 45 ++4 18 ++2 51 ++2 60 + +fl=(54) +fn=(166) +50 116 ++8 232 ++2 58 + +fl=(78) ./elf/../sysdeps/nptl/dl-mutex.c +fn=(300) __rtld_mutex_init +30 2 ++10 1 +-3 2 ++3 8 +-10 2 ++10 1 +cfi=(79) ./elf/./elf/dl-lookup-direct.c +cfn=(302) _dl_lookup_direct +calls=1 +34 +* 327 ++4 1 ++1 8 ++2 1 +-2 3 ++2 8 +-2 1 ++2 1 +cfi=(79) +cfn=(302) +calls=1 +27 +* 311 ++4 1 ++1 8 ++1 2 +-1 2 ++1 3 + +fl=(37) ./elf/./elf/dl-debug.c +fn=(114) _dl_debug_state +117 2 + +fn=(154) _dl_debug_update +38 21 ++3 42 +-1 21 ++4 42 ++4 21 + +fn=(108) _dl_debug_initialize +56 1 ++3 1 ++26 2 +-22 1 ++22 1 ++10 1 +-32 1 ++1 2 ++21 1 ++5 1 ++5 1 +-5 1 ++1 3 ++1 1 ++3 1 ++4 1 ++8 1 +-50 4 ++39 11 + +fl=(7) ./elf/./elf/dl-setup_hash.c +fn=(12) _dl_setup_hash +28 44 ++3 66 ++1 44 ++2 22 +-1 22 ++3 88 ++5 44 ++3 22 ++1 22 +-8 22 ++4 22 ++3 22 ++1 22 +-7 22 ++3 22 +-3 22 ++7 22 +-4 22 ++4 44 +-7 22 ++2 22 ++3 22 ++2 22 ++5 22 + +fl=(58) ./io/../sysdeps/unix/sysv/linux/access.c +fn=(176) access +25 2 ++4 10 ++2 1 + +fl=(14) ./elf/../sysdeps/unix/sysv/linux/brk.c +fn=(30) brk +36 1 +fi=(105) ./elf/../sysdeps/unix/sysv/linux/brk_call.h +-12 2 +fe=(14) ++13 2 ++1 1 ++6 1 ++1 1 + +fl=(31) ./elf/./elf/dl-hwcaps-subdirs.c +fn=(76) _dl_hwcaps_subdirs_active +29 2 + +fl=(59) +fn=(178) _dl_map_object_deps +144 7 +-1 1 ++1 1 +-1 14 ++1 3 +-14 1 +-2 1 ++1 1 ++1 1 ++13 1 +-7 1 ++7 2 +-7 7 ++24 3 +-28 1 +-2 4 ++31 1 +-31 3 +-2 1 ++1 1 ++1 1 ++6 2 ++24 1 +-24 3 +-6 1 ++30 2 +-32 4 ++60 1 +-60 2 ++54 3 +fi=(63) ./elf/../include/scratch_buffer.h +78 2 +fe=(59) +184 2 ++82 2 +fi=(63) +77 1 +fe=(59) +184 1 ++82 1 +-38 1 ++4 1 +-4 1 +fi=(63) +77 1 +fe=(59) +232 1 +-4 1 ++4 1 +-35 1 +-33 1 ++68 1 +-39 1 ++35 4 +-35 1 ++4 1 ++11 2 +-11 2 ++1 2 ++12 1 ++11 1 +-11 2 ++7 1 ++4 1 +-11 1 ++6 1 +-1 1 ++2 1 ++4 2 +-31 1 ++32 1 ++6 3 +-6 1 ++6 4 +cfi=(29) ./elf/./elf/dl-load.c +cfn=(98) _dl_dst_count +calls=1 +10 +* 102 +* 2 ++4 2 +-4 1 ++4 2 +-2 1 ++2 1 +cfi=(29) +cfn=(98) +calls=1 +6 +* 162179 +cfi=(44) ./elf/./elf/dl-error-skeleton.c +cfn=(132) _dl_catch_exception +calls=1 -57 +* 5612 +* 31 +fi=(2) ./elf/./elf/rtld.c +1982 5 ++1 6 +-1 1 ++1 3 +-1 1 ++1 42 +-1 21 ++1 63 +-1 21 ++4 4 ++1 1 ++1 1 ++2 49 ++1 32 ++46 1 +-42 1 ++8 7 ++1 1 ++2 2 ++4 1 +-2 1 ++16 1 ++2 1 +-1 1 ++1 2 ++2 2 ++1 1 +-28 1 ++37 1 +-1 5 ++2 8 +cfi=(44) +cfn=(230) _dl_receive_error +calls=1 238 +* 91242 ++10 3 ++1 2 +-1 1 ++1 1 ++3 1 +842 2 +fi=(106) ./elf/../sysdeps/unix/sysv/linux/dl-osinfo.h +37 22 ++2 1 +fi=(2) +846 3 +fi=(106) +52 16 +fi=(2) +860 2 +-5 4 +2058 2 +2267 1 +-6 2 ++6 1 +-10 1 ++13 1 +-13 2 ++4 2 ++6 1 ++3 2 ++19 1 ++3 1 ++5 1 +-8 1 ++3 1 ++6 1 +-6 1 ++6 44 ++2 22 ++9 22 +-9 44 ++5 44 ++2 22 ++6 66 ++2 22 ++1 126 +cfi=(70) ./elf/./elf/dl-reloc.c +cfn=(254) _dl_relocate_object +calls=21 207 +* 24897661 ++4 56 ++1 6 +-23 3 ++23 3 +cfi=(38) ./elf/./elf/dl-tls.c +cfn=(276) _dl_add_to_slotinfo +calls=3 1015 +* 108 +-23 5 ++32 3 ++4 5 ++2 4 ++7 5 +cfi=(38) +cfn=(282) _dl_allocate_tls_init +calls=1 528 +* 451 ++3 6 ++10 4 ++2 1 ++33 4 +cfi=(80) ./elf/./elf/dl-call-libc-early-init.c +cfn=(306) _dl_call_libc_early_init +calls=1 29 +* 2088 +-82 1 ++1 1 +-3 1 +2008 4 +-2 2 ++5 1 +-1 1 ++41 2 +cfn=(238) init_tls +calls=1 736 +* 937 +* 3 +2368 2 +cfi=(74) ./elf/./elf/dl-find_object.c +cfn=(284) _dl_find_object_init +calls=1 564 +* 3438 ++5 3 +cfi=(6) ./elf/./elf/dl-minimal.c +cfn=(292) __rtld_malloc_init_real +calls=1 76 +* 3484 ++3 1 +cfi=(78) +cfn=(300) +calls=1 30 +* 693 ++6 1 ++1 2 +-1 1 ++1 2 +-1 2 ++1 3 +cfi=(70) +cfn=(254) +calls=1 207 +* 5752 +* 1 +fe=(59) + +fn=(179) +208 51 +-18 3 ++18 3 +417 3 ++2 6 ++3 2 +-3 2 ++3 2 +-3 2 +fi=(20) +56 12 +cfi=(21) +cfn=(51) +calls=1 -21 +* 26 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(59) +423 20 +fi=(20) +56 20 +fe=(59) +423 20 ++7 80 +-1 20 ++1 40 ++1 20 +-1 20 +cfi=(22) +cfn=(52) +calls=20 29 +* 1380 ++1 120 +cfi=(22) +cfn=(52) +calls=20 29 +* 1380 ++2 20 ++2 20 +-1 20 ++1 60 ++4 42 +188 20 ++5 20 ++4 20 +-4 20 ++4 60 ++1 80 +fi=(63) +-67 76 +cfi=(64) ./malloc/./malloc/scratch_buffer_set_array_size.c +cfn=(203) __libc_scratch_buffer_set_array_size'2 +calls=19 30 +* 380 +fe=(59) ++70 40 ++4 40 ++5 18 ++11 18 +-11 36 ++7 18 ++4 18 +-11 18 ++6 18 +-1 18 ++2 18 ++4 36 +-31 18 ++32 18 ++6 54 +-6 18 ++6 72 +cfi=(29) +cfn=(99) _dl_dst_count'2 +calls=18 +10 +* 1541 +* 132 ++4 132 +-4 66 ++4 132 +-2 66 ++2 66 +cfi=(21) +cfn=(51) +calls=17 35 +* 839250 +cfi=(21) +cfn=(50) +calls=1 35 +* 83674 +cfi=(64) +cfn=(202) __libc_scratch_buffer_set_array_size +calls=1 30 +* 137415 +cfi=(29) +cfn=(99) +calls=47 +6 +* 3185305 +cfi=(44) +cfn=(132) +calls=66 -57 +* 142597 +* 5114 +fi=(63) +85 2 +fe=(59) +448 5 ++1 1 ++3 2 +fi=(20) +56 2 +fe=(59) +463 2 +fi=(20) +56 5 +cfi=(21) +cfn=(51) +calls=1 -21 +* 26 +fe=(59) +465 1 +fi=(20) +56 1 +fe=(59) +465 1 ++5 4 ++1 1 +-1 1 ++4 1 +-2 1 ++6 44 ++5 22 ++2 110 ++5 66 +-16 44 ++21 2 ++37 1 ++15 1 +-11 1 ++11 1 +-14 1 ++20 1 +-1 2 ++1 1 +-1 1 ++5 1 +-4 6 +-1 5 +cfi=(13) ./elf/./elf/dl-sort-maps.c +cfn=(226) _dl_sort_maps +calls=1 304 +* 1997 ++5 1 ++1 1 ++2 2 +-1 1 ++1 2 ++1 1 ++7 1 ++3 1 ++3 16 +-91 2 +-41 40 +-1 21 ++1 21 +183 7 +547 4 +cfi=(22) +cfn=(52) +calls=1 29 +* 133 +* 2 + +fn=(180) openaux +61 201 ++3 67 +-3 67 ++3 67 ++1 134 +-1 134 ++2 61 +-2 305 +cfi=(29) +cfn=(138) _dl_map_object +calls=61 1971 +* 113465 +* 24 +cfi=(29) +cfn=(138) +calls=6 1971 +* 29061 ++5 67 +-5 67 ++5 201 + +fl=(86) ./elf/../sysdeps/riscv/dl-trampoline.S +fn=(322) _dl_runtime_resolve +34 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++3 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++4 9 ++1 9 ++1 9 ++1 18 ++1 9 +cfi=(87) ./elf/./elf/dl-runtime.c +cfn=(324) _dl_fixup +calls=9 -7 +* 8556 ++1 9 ++3 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++3 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++3 9 ++3 9 + +fl=(13) +fn=(228) dfs_traversal.part.0 +140 120 ++8 15 ++2 15 +-10 15 ++8 30 +-8 30 ++10 15 ++2 28 +-7 14 ++7 14 +-7 206 ++7 256 ++9 15 ++15 15 ++2 30 +-2 30 ++1 15 ++1 117 +cfn=(229) dfs_traversal.part.0'2 +calls=4 -38 +* 374 +* 8 + +fn=(229) +140 56 ++8 7 ++2 7 +-10 7 ++8 14 +-8 14 ++10 7 ++2 12 +-7 6 ++7 6 +-7 57 ++7 68 ++9 7 ++15 7 ++2 14 +-2 14 ++1 7 ++1 58 +cfn=(229) +calls=3 -38 +* 135 +* 6 + +fn=(226) +304 15 ++8 2 +-8 4 ++8 1 ++4 16 +188 1 ++28 1 +-28 1 +-2 1 ++1 1 ++29 1 +-28 8 ++1 1 +-1 2 ++1 3 +-1 1 ++1 21 +-1 42 ++1 63 +-1 21 ++28 5 ++5 2 ++2 1 ++1 2 +-79 1 ++81 1 +-81 2 ++81 65 ++2 22 +-83 111 +cfn=(228) +calls=15 -5 +* 1362 +* 30 ++86 44 ++18 2 ++13 1 ++54 1 +-47 3 +cfi=(22) +cfn=(52) +calls=1 29 +* 133 ++13 3 + +fn=(26) _dl_sort_maps_init +295 1 ++1 3 +-1 1 ++1 1 +cfi=(11) +cfn=(28) +calls=1 408 +* 21 +* 1 ++3 1 +-1 2 +-1 2 ++2 2 + +fl=(38) +fn=(248) allocate_dtv +365 4 ++5 2 +-5 1 ++9 1 +fi=(20) +44 5 +cfi=(21) +cfn=(46) +calls=1 +38 +* 36 +fe=(38) +376 1 ++3 1 ++6 3 ++6 5 + +fn=(242) _dl_tls_static_surplus_init +97 2 ++4 1 +-4 1 ++4 2 +-4 1 ++4 1 +-4 2 ++4 1 +cfi=(11) +cfn=(28) +calls=1 408 +* 22 ++1 1 +-1 1 ++1 3 +cfi=(11) +cfn=(28) +calls=1 408 +* 22 ++6 1 +-6 1 ++6 3 ++2 3 ++7 1 +-34 5 ++35 2 +-35 1 ++34 1 +-2 2 ++2 2 ++1 4 + +fn=(244) _dl_determine_tlsoffset +227 3 +-6 2 ++6 1 ++3 2 ++84 2 ++2 1 +-2 2 +-2 1 +-88 1 +-1 1 +-1 1 ++94 3 ++3 3 +-1 3 ++1 3 +-1 6 ++3 3 ++2 12 ++14 12 ++1 6 ++3 3 ++1 6 ++6 3 +-34 3 ++16 3 +-16 9 ++38 3 ++8 1 +-9 1 ++1 3 ++7 1 +-7 1 ++8 2 + +fn=(246) _dl_allocate_tls_storage +422 1 ++13 2 ++1 1 +-14 1 ++13 1 +-13 2 ++14 1 +-14 1 +fi=(20) +56 4 +cfi=(21) +cfn=(50) +calls=1 -21 +* 56 +fe=(38) +437 1 ++20 4 ++7 2 +-7 1 ++7 2 +cfi=(9) ./string/./string/memset.c +cfn=(18) memset +calls=1 31 +* 331 ++7 1 +-2 1 ++2 1 +cfn=(248) +calls=1 365 +* 59 ++1 1 ++3 6 + +fn=(276) +1015 6 ++9 6 +-9 12 ++6 3 ++3 3 +-9 15 ++14 6 ++34 3 ++7 27 +-4 15 ++1 9 ++3 3 + +fn=(198) _dl_assign_tls_modid +147 6 +-13 3 ++13 3 +-13 3 ++52 3 ++2 6 +-2 3 ++2 3 ++3 6 + +fn=(110) _dl_count_modids +199 4 ++1 2 + +fn=(282) +528 16 ++1 1 ++4 1 ++6 5 +cfi=(16) +cfn=(58) +calls=1 44 +* 2 ++3 5 ++12 1 +-18 1 +-1 1 ++43 1 ++3 1 +-22 8 ++6 4 ++3 3 ++1 3 ++6 9 ++1 4 ++2 1 ++4 1 +-4 3 ++1 1 ++3 1 +-1 1 +-3 2 ++4 2 +-4 6 ++1 2 ++3 2 +-1 2 ++4 3 ++1 9 ++20 3 +-15 3 ++7 3 ++8 3 ++2 9 +cfi=(22) +cfn=(52) +calls=3 29 +* 131 +* 18 +cfi=(9) +cfn=(18) +calls=3 31 +* 137 ++6 6 +-55 12 ++61 5 +cfi=(16) +cfn=(58) +calls=1 44 +* 2 ++3 1 ++3 16 + +fl=(70) +fn=(272) _dl_protect_relro +356 44 ++3 22 +-4 22 ++1 88 ++3 22 +-4 66 ++4 22 +-3 22 ++7 22 ++7 88 +-6 66 +cfi=(73) +cfn=(274) mprotect +calls=22 120 +* 110 +* 22 + +fn=(254) +207 330 ++16 44 +-16 88 ++14 22 ++2 22 ++2 44 ++1 22 +-1 22 ++1 22 ++19 66 ++6 22 +-34 12 ++38 110 ++7 44 +fi=(4) ./elf/../sysdeps/riscv/dl-machine.h ++51 44 ++3 80 ++4 40 ++2 60 ++1 20 ++3 88 +fe=(70) +-25 896 +-83 50 +-28 20 +fi=(4) ++3 10 +fi=(5) ./elf/./elf/do-rel.h +-43 10 +fe=(70) ++40 40 +fi=(5) +49 10 ++4 10 +-3 10 +-1 10 ++4 10 +fe=(70) +301 10 +fi=(5) +48 10 ++1 30 ++1 10 ++30 10 +fe=(70) +218 60 +-28 24 +fi=(4) ++3 12 +fi=(5) +-43 12 +fe=(70) ++40 48 +fi=(5) +49 12 ++4 12 +-3 12 +-1 12 ++4 12 +fe=(70) +301 12 +fi=(5) +48 12 ++1 36 ++1 12 ++30 12 +-31 22 ++4 22 +-3 22 +-1 22 ++4 22 +fe=(70) +301 22 +fi=(5) +48 22 ++1 66 ++1 22 ++30 22 +fi=(4) +282 10 +fi=(5) +83 10 +fi=(4) +278 2073 ++1 2073 +-1 2073 ++4 2073 ++2 4146 +fi=(5) +83 4146 +fe=(70) +301 132 +fi=(5) +51 66 +fe=(70) +304 88 ++24 66 ++3 22 ++17 44 ++1 44 +cfn=(272) +calls=22 +7 +* 616 ++1 352 +-98 44 ++1 20 +fi=(4) ++33 2073 ++1 8292 +fe=(70) ++14 80 +fi=(5) +114 102 ++9 53 +fi=(4) ++39 21 +fi=(5) +-38 21 +-1 21 +fi=(4) ++39 42 ++1 168 +fi=(5) +-39 21 +fi=(4) ++39 168 +fi=(5) +-40 21 +fi=(4) ++39 305867 +fi=(5) +-38 305867 +-1 305867 +fi=(4) ++39 611734 ++1 2446936 +fi=(5) +-39 305867 +fi=(4) ++39 2446936 +fi=(5) +-40 305867 ++3 34 +-73 34 ++73 34 ++3 90 ++2 30 ++2 60 +fi=(4) ++51 40 +-6 20 ++6 20 +fe=(70) ++6 20 +fi=(4) ++3 20 +-15 20 +fe=(70) ++12 20 +fi=(4) ++3 80 +fi=(5) +-60 40 ++2 20 +-2 60 ++1 20 +-1 20 ++1 40 ++2 20 +-2 20 +-1 20 ++1 40 +-1 20 +fe=(70) ++37 20 +fi=(5) +-34 60 +fe=(70) ++34 20 +fi=(5) +-35 20 ++1 20 +fi=(4) ++42 20 +fe=(70) +-8 20 +fi=(5) +-37 65330 ++2 32665 +-2 97995 ++1 32665 +-1 32665 ++1 65330 ++2 32665 +-2 32665 +-1 32665 ++1 65330 +-1 32665 +fe=(70) ++37 32665 +fi=(5) +-34 97995 +fe=(70) ++34 32665 +fi=(5) +-35 32665 ++1 32665 +fi=(4) ++42 32665 +fe=(70) +-8 32665 +fi=(23) +-28 32666 +fe=(70) ++29 32666 +fi=(23) +-29 32666 +fe=(70) ++29 65332 ++3 97998 ++8 16948 +-8 38694 ++8 43182 ++4 19192 +-3 4798 ++1 4798 ++2 9596 ++1 4798 ++1 4798 +-2 48600 +-3 12150 ++1 12150 ++2 24300 ++1 12150 ++1 79942 ++2 101688 +cfi=(71) +cfn=(262) +calls=16948 756 +* 15054557 ++3 16948 +-3 16948 ++4 16948 +-1 16948 +fi=(4) +-10 32666 ++1 32622 ++9 261480 ++7 32650 +fi=(5) +-50 98055 +-19 98095 ++20 19156 +fi=(4) ++64 30 ++2 60 ++1 90 +-8 14 ++1 42 +-6 13 ++1 58 +-22 261147 ++3 130564 +-5 44 ++4 88 +fi=(5) +-29 15718 +fe=(70) ++18 62858 ++2 47154 ++1 15718 ++18 15718 +-19 31436 ++1 31436 +fi=(4) +337 1 +-4 1 ++1 1 ++3 7 +-4 2 ++1 1 ++2 1 ++1 1 +cfi=(71) +cfn=(262) +calls=1 756 +* 1172 ++2 2 +fe=(70) +175 63 +301 30 +fi=(5) +179 4 +fi=(4) ++5 2 +-6 2 ++6 2 +fe=(70) ++6 4 +fi=(4) +-12 4 +fe=(70) ++12 8 +fi=(5) +-9 2 ++1 2 +-1 10 ++1 2 +-1 4 +fi=(4) +-3 2 +fe=(70) +-8 2 +fi=(4) ++8 2 +fe=(70) +-8 4 +fi=(5) ++11 6 ++1 6 +-1 30 ++1 6 +-1 12 +fi=(4) +-3 6 +fe=(70) +-8 6 +fi=(4) ++8 6 +fe=(70) +-8 12 +fi=(23) +-28 8 +fe=(70) ++29 8 +fi=(23) +-29 8 +fe=(70) ++29 16 ++3 24 ++8 8 +-8 16 ++12 32 ++4 16 +-4 8 +-3 8 ++7 8 +-6 8 ++6 40 +cfi=(71) +cfn=(262) +calls=8 756 +* 8497 ++3 8 +-3 8 ++4 8 +-1 8 +fi=(4) +-10 8 +-1 4 ++4 4 ++1 16 ++6 64 ++7 8 +fi=(5) +-5 24 +-16 30 +fi=(4) ++5 28 ++2 4 +-2 4 +fe=(70) + +fl=(35) ./string/./string/strchr.c +fn=(100) index +46 91 +-5 91 ++5 103 ++1 355 +-1 355 ++4 355 +-4 355 ++2 710 +179 2 +71 819 ++61 91 +-14 182 ++14 91 +-11 91 ++11 91 +-8 91 ++8 364 +-14 160 ++14 80 +-11 80 ++11 80 +-8 80 ++8 320 ++8 182 ++2 89 ++2 148 ++2 74 ++2 124 ++2 62 ++2 94 ++2 47 ++4 80 ++2 40 ++2 72 ++2 36 ++2 54 ++2 27 ++2 26 ++2 13 +51 89 +179 89 +35 160 + +fl=(88) ./elf/./elf/dl-init.c +fn=(338) _dl_init +97 9 ++5 2 +-4 1 ++1 1 +-2 3 ++5 1 ++33 1 ++1 5 ++1 5 +-1 1 ++1 2 +cfn=(340) call_init +calls=1 30 +* 76 +* 35 +-1 7 ++1 14 +cfn=(340) +calls=7 30 +* 8662 +-1 7 +-32 1 +cfn=(340) +calls=1 -74 +* 76 ++1 2 ++4 1 ++1 1 ++1 4 ++5 4 ++4 3 ++1 3 ++1 2 +-1 1 ++1 3 +cob=(5) +cfi=(90) +cfn=(348) +calls=1 0 +* 3 +-1 2 + +fn=(340) +30 18 ++6 9 +-8 63 ++8 54 ++2 18 ++6 9 ++14 27 ++4 9 +-18 18 ++14 9 ++1 9 ++3 18 ++5 36 ++12 9 ++1 9 ++6 8 ++2 16 +-2 8 ++2 8 +-2 16 ++3 57 ++1 5 +cob=(3) /usr/lib/riscv64-linux-gnu/libc.so.6 +cfi=(96) ./libio/./libio/vtables.c +cfn=(364) check_stdfiles_vtables +calls=1 -6 +* 15 +* 40 +cob=(11) /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.32 +cfi=(101) ??? +cfn=(390) 0x00000000000a4192 +calls=1 -90 +* 7914 +cob=(10) /usr/lib/riscv64-linux-gnu/libgcc_s.so.1 +cfi=(100) ??? +cfn=(384) 0x000000000000352c +calls=1 -90 +* 12 +cob=(9) +cfi=(99) +cfn=(378) +calls=1 -90 +* 12 +cob=(8) /usr/lib/riscv64-linux-gnu/liblzma.so.5.4.1 +cfi=(98) ??? +cfn=(372) 0x0000000000003a68 +calls=1 -90 +* 12 +cob=(7) /usr/lib/riscv64-linux-gnu/libmd.so.0.0.5 +cfi=(97) ??? +cfn=(366) 0x0000000000001ed8 +calls=1 -90 +* 12 +cob=(3) +cfi=(92) ./csu/./csu/init-first.c +cfn=(356) _init_first +calls=1 -44 +* 260 +cob=(6) /usr/lib/riscv64-linux-gnu/libicudata.so.72.1 +cfi=(91) ??? +cfn=(350) 0x0000000000000428 +calls=1 -90 +* 12 +cob=(4) /usr/libexec/valgrind/vgpreload_core-riscv64-linux.so +cfi=(89) ??? +cfn=(342) 0x0000000000000508 +calls=1 -90 +* 12 +-1 16 ++3 64 + +fl=(15) ./elf/../misc/sbrk.c +fn=(32) sbrk +37 2 ++3 2 +-3 1 ++3 1 +-3 3 ++21 1 ++4 1 ++16 7 + +fl=(40) ./elf/./elf/dl-audit.c +fn=(116) _dl_audit_activity_map +29 2 ++1 2 ++1 1 +-2 7 ++1 1 ++1 1 ++6 10 + +fn=(330) _dl_audit_activity_nsid +46 3 ++5 1 + +fn=(174) _dl_audit_objopen +77 40 ++1 60 +-1 160 ++1 20 ++15 220 + +fl=(74) +fn=(290) _dlfo_sort_mappings +537 2 ++3 3 ++4 1 ++1 1 +-1 1 ++1 1 +-1 19 ++1 19 +-1 19 ++1 59 ++1 20 +-1 20 ++1 210 +-1 190 ++1 220 +-1 420 ++8 60 ++1 80 +-1 60 ++1 80 ++1 80 +-15 40 ++17 1 + +fn=(288) _dlfo_process_initial +474 4 ++1 4 ++3 2 +-4 22 ++4 2 +-1 6 ++1 2 ++26 16 ++7 2 ++8 2 ++2 4 +-16 4 ++3 128 +-2 44 +-1 44 +-1 8 ++27 4 +-2 2 ++2 26 +-20 126 ++2 84 ++3 21 +-1 63 +cfi=(75) +cfn=(286) +calls=21 95 +* 998 ++2 84 + +fn=(284) +564 2 ++2 1 +-5 6 ++5 2 ++13 1 +cfn=(288) +calls=1 474 +* 310 +* 1 +fi=(20) +56 2 +fe=(74) +580 1 +fi=(20) +56 3 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(74) +580 1 +fi=(20) +56 1 +fe=(74) +582 1 ++3 1 ++5 2 ++1 1 +cfn=(288) +calls=1 474 +* 1392 ++3 2 ++10 7 +-37 3 +cfi=(75) +cfn=(286) +calls=1 95 +* 53 +* 3 ++29 2 +cfn=(290) +calls=1 -59 +* 1606 ++3 7 ++2 1 + +fl=(6) +fn=(292) +76 1 ++10 3 +fi=(76) ./elf/../sysdeps/generic/dl-hash.h +-43 1 +fe=(6) ++33 6 ++11 1 +fi=(76) +-42 1 +-1 2 +-1 1 ++5 3 +-3 1 ++17 3 +-17 1 ++3 12 +-3 4 ++17 12 +-17 4 +fe=(6) ++46 1 +fi=(76) +-24 2 +fe=(6) ++24 4 +fi=(76) +-19 1 +fe=(6) ++17 1 ++2 1 +cfn=(296) lookup_malloc_symbol +calls=1 -30 +* 839 +* 1 ++1 5 +cfn=(296) +calls=1 -31 +* 849 +* 1 ++1 5 +cfn=(296) +calls=1 -32 +* 889 +* 1 ++1 4 +-1 1 ++1 1 +cfn=(296) +calls=1 -33 +* 809 ++5 2 ++4 1 +-2 1 ++2 1 +-4 1 ++1 1 ++2 1 ++1 5 + +fn=(10) __rtld_malloc_init_stubs +43 5 ++1 3 ++1 3 ++1 3 ++1 1 + +fn=(296) +61 4 ++3 4 +-3 16 ++3 20 +-3 16 ++2 4 ++1 4 +cfi=(71) +cfn=(262) +calls=4 756 +* 3198 ++4 20 ++1 36 +fi=(77) ./elf/./dl-sym-post.h +-28 12 +fe=(6) ++28 4 ++2 4 +fi=(77) +-30 4 ++12 8 +fe=(6) ++19 32 + +fn=(94) strsep +242 12 ++2 4 ++1 4 ++4 10 ++5 2 +-5 52 ++5 40 ++2 126 +-7 28 ++11 28 +-11 30 ++18 2 ++3 2 ++1 2 + +fl=(29) +fn=(98) +238 4 ++3 4 +-3 24 ++3 4 +cfi=(35) +cfn=(100) +calls=4 46 +* 348 ++4 4 +-1 4 ++20 36 +cfi=(59) +cfn=(179) +calls=1 -36 +* 162068 + +fn=(99) +238 66 ++3 66 +-3 396 ++3 66 +cfi=(35) +cfn=(100) +calls=66 46 +* 4811 ++4 66 +-1 66 ++20 594 +cfi=(59) +cfn=(179) +calls=47 -36 +* 3180762 +-11 2 ++1 2 ++1 2 +-4 1 ++2 3 +cfn=(208) is_dst +calls=1 -51 +* 116 +* 1 ++1 2 +-1 1 ++6 1 +-3 1 ++3 3 +cfi=(35) +cfn=(100) +calls=1 46 +* 52 ++2 2 + +fn=(152) _dl_map_object_from_fd +944 320 ++10 20 +-10 160 ++10 20 +cfi=(37) +cfn=(154) +calls=20 38 +* 140 ++7 60 +-7 20 ++7 20 ++85 60 ++10 100 ++7 140 +cfi=(19) ./elf/./elf/dl-object.c +cfn=(42) _dl_new_object +calls=20 59 +* 11188 +* 20 ++1 20 ++13 40 ++3 20 +-5 20 ++4 20 ++1 20 +-1 40 +-3 20 ++1 20 +-2 20 ++5 40 ++1 40 ++19 20 +-2 20 ++2 120 ++10 20 +-10 20 ++10 20 ++27 20 ++36 20 +-62 20 ++62 20 +-62 20 ++26 20 ++9 20 +-36 20 +-6 20 +-1 20 +-1 20 +-1 20 +-5 20 ++15 20 ++93 20 +-93 60 ++62 100 +-62 144 ++20 2 +-21 268 ++1 577 +1223 40 +1110 20 +1223 40 +1110 20 +1228 100 ++10 20 ++1 20 +-1 80 ++1 20 +-1 80 ++7 20 +1076 20 +1245 20 ++10 80 ++7 120 +fi=(53) ./elf/./dl-map-segments.h +28 20 +fe=(29) +1262 20 +fi=(53) +28 20 ++1 180 +cfi=(54) +cfn=(166) +calls=20 +21 +* 140 ++72 20 ++1 40 +-73 20 ++73 20 ++3 40 ++3 20 +-2 40 ++2 20 ++17 20 ++2 20 +-2 40 +fi=(55) ./elf/./dl-load.h +-34 80 +fi=(53) ++58 120 ++6 20 ++2 20 +-2 20 ++2 20 ++1 20 +-1 20 +-1 20 ++1 50 ++8 20 ++3 60 ++8 140 +cfi=(9) +cfn=(18) +calls=20 31 +* 4198 +* 60 ++6 20 ++12 40 +-59 200 ++2 60 ++2 200 +cfi=(54) +cfn=(166) +calls=20 -89 +* 140 +* 60 +fe=(29) +1111 61 ++26 200 ++10 40 ++4 40 +-2 80 +-2 200 +-1 40 ++1 40 ++2 40 ++2 40 +-2 40 +-3 40 ++1 40 ++1 40 ++3 40 +-6 40 ++6 100 ++2 100 ++13 20 +-13 100 ++13 60 ++7 40 +-1 80 ++1 120 +-1 40 ++1 80 +-1 40 +-27 40 ++38 40 +-66 40 ++9 40 +-1 20 ++1 40 +-2 20 ++2 60 +-1 20 ++1 20 +-2 20 ++1 20 ++1 40 ++60 6 ++4 3 ++1 6 +-67 3 ++68 3 ++3 9 ++1 3 ++8 3 +-5 3 +-3 3 ++8 6 ++15 20 ++1 20 +fi=(49) ./elf/../sysdeps/posix/dl-fileid.h +37 60 +cfi=(50) +cfn=(158) +calls=20 -8 +* 260 +* 20 +fe=(29) +999 140 +fi=(49) +40 20 ++1 20 +fe=(29) +999 40 +fi=(49) +40 20 ++1 20 +fe=(29) +999 480 ++1 690 +fi=(49) +49 840 +fe=(29) +1525 340 +1278 60 ++1 60 +fi=(56) ./elf/./elf/get-dynamic-info.h +39 20 ++6 20 +-2 20 ++2 20 ++9 20 +-5 20 ++5 40 ++2 20 ++3 40 +-1 20 +-3 20 +-6 519 ++5 268 ++1 114 ++13 342 +-23 342 ++23 1215 +-23 1215 ++65 40 ++5 54 ++7 40 ++1 80 ++6 40 ++18 40 ++5 24 ++2 24 ++1 2 ++1 24 ++2 24 ++4 40 ++2 24 ++1 24 ++9 36 ++6 24 ++4 40 ++2 1 +fe=(29) +1285 1 ++5 2 +-5 20 ++5 38 +-5 19 ++2 20 ++11 40 ++19 60 ++2 140 ++52 40 ++1 9 ++6 6 ++1 3 +-1 12 ++1 3 +-1 37 ++1 17 +-1 68 ++1 17 +-1 171 ++1 154 ++6 154 +-6 154 ++11 40 +cfi=(57) ./io/../sysdeps/unix/sysv/linux/close_nocancel.c +cfn=(172) __GI___close_nocancel +calls=20 26 +* 120 +* 20 ++13 40 ++2 40 ++2 20 +-2 40 ++2 40 ++16 40 +cfi=(7) +cfn=(12) +calls=20 28 +* 660 ++4 40 ++1 40 ++17 60 ++1 1 ++3 4 ++5 2 +-5 76 ++5 38 ++10 40 ++7 200 ++10 40 ++1 12 ++5 6 +cfi=(38) +cfn=(198) +calls=3 147 +* 36 ++7 60 +cfi=(19) +cfn=(56) _dl_add_to_namespace_list +calls=20 31 +* 1610 ++3 60 ++23 220 ++1 60 +cfi=(40) +cfn=(174) +calls=20 77 +* 500 +* 20 +fi=(55) +92 76 ++2 19 +-1 38 ++1 38 +-1 19 ++1 19 +-1 19 ++1 19 +-1 19 ++3 76 +fi=(56) +-40 60 +fe=(29) +1018 40 +fi=(56) +59 40 +fe=(29) +1516 40 +fi=(56) +62 80 ++2 60 +181 30 +-15 6 +-7 20 +fi=(53) ++27 80 +cfi=(54) +cfn=(166) +calls=10 50 +* 70 ++3 30 +fe=(29) +1472 14 ++1 6 ++1 18 +-1 12 ++1 6 +-1 12 +cfi=(24) +cfn=(60) +calls=6 38 +* 197 +* 6 ++2 2 +1285 16 +1429 8 ++4 2 ++5 2 +-1 2 +-4 2 ++5 2 +-4 4 ++3 4 +cfi=(67) ./string/./string/memmove.c +cfn=(220) memmove +calls=2 44 +* 116 ++4 8 + +fn=(96) expand_dynamic_string_token +385 9 ++10 3 +-10 15 ++10 3 +cfn=(99) +calls=1 238 +* 236 +cfn=(98) +calls=2 238 +* 215 ++3 3 ++1 2 ++11 12 +-11 2 +cfi=(36) +cfn=(102) +calls=2 40 +* 417 +* 1 ++3 2 +cfi=(34) +cfn=(90) +calls=1 39 +* 40 +* 7 +cfi=(34) +cfn=(90) +calls=1 39 +* 49 +* 9 ++3 1 +fi=(20) +56 4 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 1 +fe=(29) +406 1 ++3 1 ++1 4 +-1 1 ++1 2 +-1 1 +cfn=(214) _dl_dst_substitute +calls=1 276 +* 384 + +fn=(208) +202 6 ++13 2 +-13 8 ++13 2 +cfi=(34) +cfn=(90) +calls=2 39 +* 62 +-9 4 ++9 2 +-9 2 ++10 8 +cfi=(65) ./string/./string/strncmp.c +cfn=(210) strncmp +calls=2 37 +* 90 +* 2 ++13 14 +-11 12 ++1 6 ++1 8 ++1 4 + +fn=(214) +276 11 ++13 1 +-13 3 ++13 2 +-4 1 ++4 1 ++6 3 ++56 14 ++3 14 +-60 8 +-5 8 ++6 3 +cfn=(208) +calls=1 -93 +* 116 +* 2 ++22 3 ++5 2 ++10 3 ++2 2 +cfi=(66) ./string/./string/stpcpy.c +cfn=(216) stpcpy +calls=1 35 +* 168 ++1 1 ++19 1 +-20 1 ++20 1 ++11 1 ++7 1 ++3 13 + +fn=(182) open_path +1819 336 ++1 21 +-1 42 ++1 21 +-1 42 ++7 21 ++5 147 +-7 42 ++7 105 ++70 42 +-70 21 +-8 63 ++31 21 +-3 21 ++50 84 +-67 84 ++9 21 ++7 105 +cfi=(22) +cfn=(52) +calls=21 29 +* 2074 +* 21 +-12 21 ++13 21 +-1 21 ++1 52 ++3 84 ++5 168 +cfi=(22) +cfn=(52) +calls=24 29 +* 636 +* 120 +cfi=(22) +cfn=(52) +calls=24 29 +* 2161 ++9 24 +-9 24 ++3 24 ++6 48 ++3 168 +cfn=(144) open_verify.constprop.0 +calls=24 1578 +* 1817 ++2 24 +-2 24 ++2 24 ++2 6 ++1 2 ++25 2 +fi=(20) +56 7 +cfi=(21) +cfn=(51) +calls=1 -21 +* 26 +fe=(29) +1926 1 ++1 1 ++2 3 +cfi=(22) +cfn=(52) +calls=1 29 +* 71 ++35 357 +1851 144 ++89 96 ++7 80 +-2 60 ++2 20 ++3 40 +1829 38 ++70 72 ++2 18 +-21 10 ++1 55 ++6 15 ++2 15 +cfi=(60) ./gmon/../sysdeps/unix/sysv/linux/prof-freq.c +cfn=(184) stat +calls=5 28 +* 72 ++3 5 +-3 9 +-38 12 ++39 5 ++4 3 +-43 3 +1954 2 +fi=(20) +50 4 +cfi=(21) +cfn=(106) +calls=1 +45 +* 13 +fe=(29) +1959 6 ++1 2 +1829 2 + +fn=(92) fillin_rpath.isra.0 +468 40 ++4 4 ++37 4 +fi=(20) +50 4 +fe=(29) +532 4 +-32 2 +-26 6 +cfi=(6) +cfn=(94) +calls=2 242 +* 330 +* 6 +cfi=(6) +cfn=(94) +calls=2 242 +* 12 +* 8 ++7 4 ++2 6 +cfn=(96) +calls=2 -98 +* 1063 +* 2 ++4 2 ++5 2 +cfi=(34) +cfn=(90) +calls=2 39 +* 96 +* 2 ++8 2 +-7 2 ++78 4 ++3 4 +-3 2 ++3 26 +-74 10 ++5 4 ++4 2 +-4 4 ++4 2 ++19 8 +cfi=(34) +cfn=(90) +calls=1 39 +* 67 +* 2 ++4 1 +fi=(20) +56 3 +fe=(29) +532 1 +fi=(20) +56 1 +fe=(29) +532 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +532 1 +fi=(20) +56 3 +fe=(29) +532 1 +fi=(20) +56 1 +fe=(29) +532 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 2 +fe=(29) +534 2 ++5 2 ++1 4 +-1 6 +-1 2 ++2 2 +cfi=(22) +cfn=(52) +calls=2 29 +* 194 ++3 4 +-3 2 ++3 2 +-3 2 ++1 2 ++2 2 ++1 1 ++5 1 ++1 1 +-1 3 ++1 1 +-1 1 ++1 1 +-1 3 ++1 5 ++1 2 +-1 6 ++1 2 +-1 6 ++3 4 ++1 4 ++2 3 +-1 4 +cfi=(22) +cfn=(52) +calls=1 29 +* 125 ++6 2 ++4 2 +-10 2 ++6 2 ++1 2 ++3 8 +-56 18 ++1 18 +fi=(20) +50 6 +cfi=(21) +cfn=(106) +calls=2 +45 +* 26 ++1 2 +fe=(29) +522 2 + +fn=(144) +1578 559 ++32 86 +-32 172 ++32 43 ++19 129 +cfi=(47) ./io/../sysdeps/unix/sysv/linux/open64_nocancel.c +cfn=(146) __open_nocancel +calls=43 28 +* 1144 ++2 43 +-2 43 ++2 43 ++8 40 ++1 20 ++5 60 ++6 20 +-6 80 +cfi=(48) ./io/../sysdeps/unix/sysv/linux/read_nocancel.c +cfn=(148) __read_nocancel +calls=20 26 +* 100 ++2 20 ++2 60 ++2 20 ++6 40 ++17 89 +-59 46 ++59 140 +cfi=(18) +cfn=(40) +calls=20 309 +* 1140 +* 40 ++81 60 +fi=(4) +61 60 ++7 80 +fe=(29) +1766 100 ++6 60 ++6 20 ++1 20 +-1 60 ++1 40 ++26 645 + +fn=(204) decompose_rpath +580 8 ++11 2 +-9 1 +-2 3 ++11 1 ++31 2 ++7 2 +cfi=(36) +cfn=(102) +calls=1 40 +* 202 +* 1 ++1 1 ++8 3 +-1 1 ++1 1 ++2 1 +-2 1 ++2 2 +-2 14 ++2 13 +-2 13 ++2 26 +-2 13 ++6 2 +fi=(20) +56 3 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 1 +fe=(29) +646 1 ++8 8 +cfn=(92) +calls=1 468 +* 1480 +fi=(20) +50 5 +cfi=(21) +cfn=(106) +calls=1 +45 +* 13 +fe=(29) +661 2 ++9 1 +-2 1 ++2 1 ++1 1 ++1 9 + +fn=(138) +1971 952 ++8 68 ++1 476 ++3 1732 ++5 3240 ++2 1620 +cfi=(46) +cfn=(140) _dl_name_match_p +calls=540 68 +* 33240 +* 540 ++4 1968 ++1 984 ++3 373 ++1 1119 ++1 373 +-1 746 ++1 746 +cfi=(24) +cfn=(60) +calls=373 38 +* 9224 +* 373 +2274 1088 +2013 60 ++2 60 +-2 40 ++10 20 +-50 20 ++50 20 ++17 40 +-2 20 ++2 20 +cfi=(35) +cfn=(100) +calls=20 46 +* 1332 +* 20 +2206 1 +-1 3 +cfn=(96) +calls=1 385 +* 388 +-1 1 ++1 1 ++2 2 ++4 8 +cfn=(144) +calls=1 1578 +* 184 ++3 1 +-3 1 ++3 1 ++12 5 ++46 4 +-1 2 ++1 6 +-1 1 ++1 1 +cfn=(152) +calls=1 944 +* 1630 +* 76 +-1 38 ++1 114 +-1 19 ++1 19 +cfn=(152) +calls=19 944 +* 36539 +* 40 +2044 38 +cfi=(34) +cfn=(90) +calls=19 39 +* 974 ++2 19 +-2 38 ++2 38 ++7 57 ++50 40 ++1 266 +cfn=(182) +calls=19 1819 +* 8397 ++6 19 +-6 19 ++6 19 +2226 90 +682 57 +2111 5 +685 5 +2113 13 +cfn=(182) +calls=1 1819 +* 769 ++4 1 +-4 1 ++4 1 +-39 44 +682 44 +2079 11 +682 11 +2057 11 ++8 11 +-7 11 ++7 77 +682 11 +2065 66 +-3 46 +682 23 +2063 23 +682 23 ++3 5 ++3 10 ++3 5 ++1 71 +2077 11 ++1 11 ++10 11 ++15 55 ++1 11 ++72 162 +cfn=(144) +calls=18 1578 +* 3321 ++4 36 +-4 18 ++4 18 ++18 18 +-17 18 ++17 54 ++28 1 ++2 1 +-2 3 ++2 1 +688 10 ++8 1 ++1 3 +-1 3 ++1 1 +-1 3 +cfn=(204) +calls=1 580 +* 1865 +2111 1 ++22 15 +-14 15 ++14 30 ++2 38 ++4 38 +cfi=(61) +cfn=(186) +calls=19 413 +* 27200 +* 19 ++2 19 ++12 90 +-20 4 +691 4 +2119 4 ++14 8 ++20 1 ++39 4 ++1 3 ++1 13 +cfn=(182) +calls=1 1819 +* 906 ++4 2 +-4 1 ++4 2 + +fn=(72) _dl_init_paths +706 17 ++14 2 +-14 2 ++14 5 +fi=(20) +56 2 +fe=(29) +706 2 ++14 1 +cfi=(30) ./elf/./elf/dl-hwcaps.c +cfn=(74) _dl_important_hwcaps +calls=1 175 +* 529 +fi=(20) +56 1 +fe=(29) +720 1 +fi=(20) +56 1 +fe=(29) +720 1 +fi=(20) +56 1 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +725 1 ++2 1 ++8 1 +-1 1 +fi=(20) +56 1 +fe=(29) +735 2 +-1 1 +fi=(20) +56 1 +fe=(29) +739 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +741 1 +-2 1 ++2 2 ++7 2 +-1 2 ++20 1 +-6 2 +-5 1 ++5 1 ++1 1 +-4 2 ++4 1 ++6 1 +-12 1 ++2 1 ++1 1 ++11 4 +-2 1 +-5 2 ++4 4 ++1 16 +cfi=(9) +cfn=(18) +calls=4 31 +* 108 ++2 4 +-8 3 ++8 6 +-14 3 ++6 3 +-4 3 ++1 3 ++2 3 ++5 3 +-3 6 ++3 3 +-10 3 ++10 6 +-3 3 ++9 6 +-2 1 ++6 1 ++1 1 +-1 2 ++6 2 ++2 1 ++3 4 ++2 2 ++36 4 ++32 16 +-30 3 +cfi=(34) +cfn=(90) +calls=1 39 +* 40 +* 7 +cfi=(22) +cfn=(52) +calls=1 29 +* 99 ++5 1 +-5 1 ++5 2 +-1 1 ++2 3 ++1 2 +-2 1 ++2 2 +-2 1 ++2 1 +-2 1 ++1 26 ++1 26 +-2 13 ++2 26 +-2 13 ++2 13 +-2 13 ++5 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +836 1 +fi=(20) +56 1 +fe=(29) +838 1 ++6 7 +cfn=(92) +calls=1 468 +* 819 ++3 3 ++6 2 +-27 1 +-18 1 +-2 2 ++2 1 ++14 2 + +fl=(67) +fn=(220) +44 12 ++6 2 +-6 2 ++6 2 ++61 16 +-21 2 +-4 2 ++1 2 ++3 2 ++3 4 ++1 2 ++7 12 ++6 2 +-6 2 +cfi=(42) +cfn=(222) +calls=2 234 +* 46 +* 2 +-15 4 + +fl=(87) +fn=(324) +54 9 +-8 9 ++2 9 ++7 9 +-9 9 ++9 36 ++1 9 +-8 9 +-2 9 ++10 9 +-8 9 +-2 9 ++3 9 ++7 27 +-7 9 +-3 9 ++2 9 ++10 9 +-2 9 ++7 9 +-17 18 ++10 9 ++7 18 +-14 9 ++9 9 ++5 9 ++4 27 ++4 18 ++4 18 ++1 9 +-1 27 ++1 45 ++1 9 +-8 27 ++16 9 +-1 9 ++1 9 ++10 72 +cfi=(71) +cfn=(262) +calls=9 756 +* 7674 ++4 9 +-4 9 ++4 9 ++10 108 ++15 54 ++9 18 ++29 9 +-3 18 +fi=(4) +-11 9 +fe=(87) ++15 63 + +fl=(65) +fn=(210) +37 4 ++2 6 ++5 2 ++2 2 ++1 2 ++1 4 ++2 2 ++4 2 ++1 2 +-4 2 ++1 4 ++2 2 ++1 2 ++1 4 ++2 2 +-16 2 ++1 2 ++1 2 ++18 6 ++4 4 +-4 4 ++2 4 ++1 4 +-1 4 ++1 4 ++1 4 ++5 2 ++1 2 +-13 4 + +fl=(41) ./string/./string/strcspn.c +fn=(120) strcspn +32 3 ++1 1 +-1 1 ++1 1 ++1 2 ++5 2 ++1 1 ++1 1 ++1 1 +-3 7 ++8 1 +-7 7 ++1 7 ++1 7 ++5 4 ++1 1 +-1 8 ++1 2 ++3 5 ++1 5 ++1 5 ++1 5 ++2 1 ++6 1 ++2 1 +-1 1 ++2 1 +-3 1 ++2 1 +-1 1 ++2 1 +-3 1 ++2 2 ++3 1 +-6 1 ++6 4 +-5 12 ++2 12 +-1 12 ++2 12 +-3 12 ++2 12 +-1 12 ++2 12 +-3 12 ++2 24 ++3 12 +-6 12 ++6 48 ++2 1 ++1 1 ++1 2 +-1 2 ++1 2 + +fl=(60) +fn=(184) +28 5 +fi=(50) ++1 20 +cfi=(52) +cfn=(162) +calls=5 +70 +* 47 +fe=(60) + +fl=(1) ??? +fn=(0) (below main) +0 2 +cfi=(2) +cfn=(2) _dl_start +calls=1 519 +0 25203447 + +fl=(57) +fn=(172) +26 126 + +fl=(11) +fn=(22) __GI___tunables_init +282 2 +-9 3 ++9 13 +-9 1 +151 2 +307 4 +77 1 +305 1 ++2 2 +71 1 +307 33 +71 101 ++6 1828 ++9 33 +-15 33 ++15 66 +fi=(12) ./elf/./elf/dl-tunables.h ++54 66 ++1 43 +-1 192 +fe=(11) ++91 66 ++74 2871 ++6 4125 +71 297 +fi=(12) ++69 961 ++1 332 +-1 140 +fe=(11) +357 15 + +fn=(28) +408 260 ++9 26 +-9 52 ++9 3 ++17 156 ++2 26 +-9 23 ++1 23 + +fl=(47) +fn=(146) +28 132 ++3 44 +-3 264 ++3 264 ++8 285 ++2 42 +-2 69 ++2 69 + +fl=(9) +fn=(18) +31 29 +-2 29 ++2 29 ++5 29 ++5 58 ++4 87 ++2 4 ++1 4 +-3 9 ++4 1 ++4 1 ++1 1 +-1 28 ++1 76 ++2 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 +-10 16 ++2 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 +-10 401 ++16 32 ++1 16 +-1 26 ++1 91 ++2 26 ++1 26 +-3 26 ++2 56 ++1 56 +-3 108 ++6 26 +-41 52 ++45 26 +-4 3 +-41 6 ++45 3 ++8 29 + +fl=(22) +fn=(52) +29 1212 ++7 202 +-7 202 ++1 202 ++1 202 ++5 202 ++3 333 ++1 117 +-9 6 ++9 76 ++11 641 +cfi=(42) +cfn=(142) +calls=86 -14 +* 2638 +* 444 ++6 6705 ++3 1616 +-9 25 +cfi=(42) +cfn=(122) +calls=25 +99 +* 1070 +* 25 +-21 210 + +fl=(24) +fn=(60) +38 19978 ++1 19978 +-1 19978 ++1 19978 ++1 19978 ++3 19978 +cfn=(61) strcmp'2 +calls=18445 -5 +* 1058835 ++2 1533 ++1 1533 + +fn=(61) +38 173193 ++1 173193 +-1 173193 ++1 173193 ++1 173193 ++3 155980 +cfn=(61) +calls=154748 -5 +* 6853284 ++2 1232 ++1 1232 +-5 34426 + +fl=(68) ./elf/./elf/dl-version.c +fn=(234) _dl_check_all_versions +392 7 ++4 4 +-2 1 ++3 24 ++1 132 +cfn=(236) _dl_check_map_versions +calls=22 170 +* 90919 +-2 22 ++2 22 +-1 44 +-1 22 ++5 9 + +fn=(236) +170 22 +-15 308 ++15 22 ++2 44 ++2 22 ++1 44 +-3 22 ++5 22 ++3 19 ++4 19 +-28 19 ++24 19 ++4 19 +-20 19 ++20 19 ++40 38 ++7 19 +-7 19 ++7 114 +36 19 +200 19 +36 133 +200 38 +36 61 +200 42 +36 294 +200 84 +36 42 ++1 603 +-1 603 ++2 1992 +cfi=(46) +cfn=(140) +calls=664 +30 +* 38133 +* 664 +204 61 ++4 61 ++5 61 +94 122 +213 61 +94 244 +218 61 +-1 122 ++1 61 +-1 61 ++1 151 +-1 180 ++1 90 +-1 90 ++1 336 +64 453 +-8 151 +221 151 +56 302 ++8 151 +221 151 +-3 151 +56 151 ++8 151 ++6 302 ++16 151 ++1 151 ++2 302 ++5 302 ++14 3542 ++12 3240 ++4 4860 +-30 3240 +231 723 ++3 453 ++5 270 +-24 90 +110 151 ++3 755 +cfi=(24) +cfn=(60) +calls=151 -75 +* 11233 +* 151 +224 453 +-6 244 ++25 122 ++5 126 +-50 42 ++59 57 ++3 42 ++3 70 +-3 2 ++3 19 ++3 45 +-3 30 ++7 45 +-7 60 ++7 558 +-7 941 ++3 603 ++8 15 ++6 20 +fi=(20) +44 120 +cfi=(21) +cfn=(46) +calls=20 +38 +* 748 +fe=(68) +279 20 ++1 20 ++1 20 ++13 40 +-3 20 ++3 60 ++2 20 ++3 19 ++7 38 +-7 19 ++12 19 +-8 183 ++18 270 +-15 90 ++2 90 +-2 90 ++2 90 +-2 61 ++2 61 +-2 61 ++2 61 ++4 151 ++1 151 +-3 755 ++1 151 ++1 151 ++1 151 +-3 151 ++1 151 ++1 151 ++1 151 ++3 302 ++8 122 ++5 126 +-28 42 ++33 19 ++3 15 ++10 30 +-10 30 ++20 603 +-14 648 +-2 201 ++6 201 ++1 201 +-7 402 ++7 201 ++1 402 +-1 804 ++1 201 +-1 201 ++1 201 ++1 201 ++3 432 ++12 15 ++1 38 ++1 38 ++20 352 +156 3 ++8 3 ++93 5 ++17 5 ++60 1 + +fl=(44) +fn=(230) +238 2 ++1 2 +-1 2 ++2 1 +-1 1 +-1 2 ++8 1 +-3 1 ++1 1 ++2 1 +cfi=(2) +cfn=(232) version_check_doit +calls=1 678 +* 91220 ++4 1 +-2 1 ++1 1 ++1 5 + +fn=(128) _dl_catch_error +225 7 ++2 3 +-2 1 ++2 1 +cfn=(132) +calls=1 -52 +* 2577 +* 17 +fi=(2) +822 2 ++8 1 ++6 2 +-6 1 ++6 3 +-6 1 ++6 2 +fe=(44) + +fn=(132) +175 136 ++5 204 +-5 136 ++5 68 +-5 136 ++3 68 ++21 68 ++7 136 +-7 68 ++1 136 ++3 136 ++3 68 +cfi=(45) +cfn=(134) +calls=68 31 +* 1904 +* 68 ++2 204 +cfi=(59) +cfn=(180) +calls=67 61 +* 143921 +cfi=(2) +cfn=(136) map_doit +calls=1 645 +* 2513 ++1 204 ++1 272 +-25 68 ++34 272 + +fl=(46) +fn=(188) +36 3 ++3 1 +-3 4 ++3 1 +cfi=(47) +cfn=(146) +calls=1 -11 +* 25 ++1 1 ++2 3 +cfi=(50) +cfn=(158) +calls=1 -13 +* 13 +* 1 ++2 2 ++3 1 ++13 2 +cfi=(57) +cfn=(172) +calls=1 -34 +* 6 ++3 7 +-14 6 +cfi=(54) +cfn=(166) +calls=1 +1 +* 7 +* 2 + +fn=(280) +125 4 +-1 4 ++3 2 ++3 20 +-1 56 +-2 7 ++2 35 +-2 5 ++19 4 +-15 6 + +fn=(140) +68 3612 ++1 1204 +-1 3612 ++1 1204 +cfi=(24) +cfn=(60) +calls=1204 -31 +* 9638 +* 1204 ++3 1204 ++2 1204 ++6 2364 +-6 1182 ++1 3873 +cfi=(24) +cfn=(60) +calls=1291 -37 +* 32557 +* 1291 ++8 327 +-13 109 ++13 3503 +-1 1095 ++1 2190 + +fl=(48) +fn=(148) +26 80 ++1 20 + +fl=(52) +fn=(162) +99 52 ++70 100 ++1 22 +-2 12 ++1 8 + +fl=(30) +fn=(74) +175 15 ++1 1 +-1 3 ++1 3 +-1 5 ++1 1 +cfi=(11) +cfn=(28) +calls=1 408 +* 22 ++2 3 ++1 1 +-1 1 ++10 2 +-10 1 ++1 2 ++8 1 +cfi=(31) +cfn=(76) +calls=1 29 +* 2 +* 2 +fi=(33) ./elf/./dl-hwcaps.h +-99 1 +-34 1 ++2 1 ++32 1 ++1 1 +fe=(30) ++99 1 +fi=(33) +-98 1 +fe=(30) +-35 2 +cfi=(32) ./elf/./elf/dl-hwcaps_split.c +cfn=(78) _dl_hwcaps_split_masked +calls=1 -4 +* 23 +* 1 +fi=(33) ++33 1 +-34 3 ++34 1 ++1 1 +-33 1 ++33 1 ++1 1 +fe=(30) +-35 2 +cfi=(32) +cfn=(78) +calls=1 -4 +* 31 +* 1 +fi=(20) ++1 4 +fe=(30) ++47 2 +fi=(20) +-47 1 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(30) ++47 1 ++2 1 +fi=(33) +-51 1 +fe=(30) ++64 1 +-10 1 +fi=(33) +-54 1 ++2 1 +fe=(30) ++55 1 ++7 1 +fi=(33) +-61 1 +fe=(30) ++58 2 +cfi=(32) +cfn=(80) _dl_hwcaps_split +calls=1 -90 +* 12 +* 1 +fi=(33) +-27 1 +fe=(30) ++43 1 +fi=(33) +-77 1 ++34 1 ++1 1 +-33 1 +fe=(30) ++75 1 +fi=(33) +-42 1 ++1 1 +fe=(30) ++38 2 +cfi=(32) +cfn=(78) +calls=1 -77 +* 31 +* 1 ++8 1 ++9 6 ++54 2 +-1 1 ++1 1 +-1 1 ++1 1 ++4 1 ++5 2 ++20 4 ++1 1 ++9 4 ++7 5 ++1 2 ++3 2 ++4 1 ++1 1 +-1 1 ++21 4 +fi=(20) +56 3 +fe=(30) +274 1 ++7 2 +fi=(20) +56 1 +fe=(30) +274 2 +fi=(20) +56 1 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 2 +fe=(30) +282 1 ++8 1 ++1 2 +-1 3 ++1 2 +-2 1 ++2 1 +cfn=(86) copy_hwcaps +calls=1 77 +* 51 ++1 6 +cfn=(86) +calls=1 77 +* 59 ++11 1 +-8 1 ++1 1 ++7 1 ++8 3 ++62 1 +-59 1 ++86 1 +-86 1 ++86 16 +254 3 ++55 1 +-3 2 +-1 1 ++2 1 ++1 1 ++1 2 +cfi=(22) +cfn=(52) +calls=1 29 +* 39 +* 1 ++1 3 + +fn=(86) +77 14 +fi=(33) +-23 2 ++2 2 ++32 2 ++1 4 +fe=(30) +-6 4 ++4 2 +fi=(33) ++3 2 +fe=(30) +-10 4 +cfi=(32) +cfn=(78) +calls=2 -29 +* 54 ++3 4 +-3 2 ++13 14 + +fl=(73) +fn=(334) +120 4 ++2 1 + +fn=(274) +120 88 ++2 22 + +fl=(80) +fn=(306) +29 1 +-2 1 ++6 2 +-6 1 ++6 7 +-6 3 ++6 1 +cfi=(79) +cfn=(302) +calls=1 +41 +* 311 ++4 1 ++2 6 ++2 2 +-1 1 ++1 1 +-2 1 ++2 1 +-1 1 +cob=(3) +cfi=(81) ./elf/./elf/libc_early_init.c +cfn=(308) __libc_early_init +calls=1 -7 +* 1747 + +fl=(2) +fn=(124) do_preload +809 6 ++12 2 +-4 1 +-8 1 ++10 2 ++2 4 +-12 2 ++10 1 +-8 1 ++4 1 ++1 1 ++1 1 ++4 1 +cfi=(44) +cfn=(128) +calls=1 225 +* 2618 +* 3 ++76 1 +-18 2 ++21 17 + +fn=(2) +0 11 +fi=(1) +cfi=(88) +cfn=(338) +calls=1 97 +0 8938 +519 15 ++26 2 ++4 1 +-1 2 +fi=(3) ./elf/./get-dynamic-info.h +45 1 +fe=(2) +549 1 +fi=(4) +83 2 +fe=(2) +549 1 +-4 1 ++3 1 +-29 1 +fi=(3) +45 1 ++9 1 +-5 1 ++19 2 +-14 2 ++2 1 ++3 2 +-1 1 +-3 1 +-6 17 ++5 10 ++1 4 ++13 12 +-23 12 ++23 39 +-23 39 ++65 2 ++5 3 ++7 2 ++1 4 ++6 2 ++4 2 ++1 2 ++5 2 ++3 2 +fe=(2) +553 2 ++12 34 +fi=(4) +178 1 ++6 3 +-6 1 ++6 1 +fi=(5) +49 1 ++4 1 +fe=(2) +565 1 +fi=(5) +49 1 ++1 1 ++3 1 +-4 3 ++1 1 ++3 1 ++3 1 +-7 1 ++4 1 +fe=(2) +565 1 +fi=(5) +49 1 ++1 1 ++3 1 +-4 3 ++1 1 ++3 1 ++3 1 +fi=(4) +162 12 +fi=(5) +57 12 +-1 12 +fi=(4) +162 12 +fi=(5) +57 12 +fi=(4) +162 60 ++1 24 +-1 12 ++1 96 +fi=(5) +56 12 +fi=(4) +187 2 ++6 4 +fi=(5) +61 2 ++2 5 ++2 5 +fi=(4) +184 5 +fi=(5) +63 5 ++1 20 ++1 5 +fi=(4) +178 5 ++6 45 ++3 5 ++6 5 +fi=(5) +61 10 +fe=(2) +565 6 +fi=(5) +51 2 +fi=(3) ++5 3 ++3 2 +fe=(2) +565 3 +fi=(4) +193 7 ++7 5 ++1 5 +fe=(2) +567 1 +460 2 +567 2 ++13 1 +cfi=(6) +cfn=(10) +calls=1 43 +* 15 +460 2 ++18 2 +-18 1 ++18 1 +cfi=(7) +cfn=(12) +calls=1 28 +* 33 ++18 1 +-17 3 ++17 2 +-15 3 +-1 1 ++10 2 ++6 1 +cfi=(8) ./elf/../sysdeps/unix/sysv/linux/dl-sysdep.c +cfn=(14) _dl_sysdep_start +calls=1 102 +* 25193731 +fi=(3) +62 4 ++2 3 +fe=(2) +565 4 ++18 3 + +fn=(118) handle_preload_list +874 12 ++5 1 +-5 3 ++5 1 ++10 1 +-6 1 ++6 2 +-6 4 +-8 3 ++7 2 +190 2 +896 2 ++1 4 +cfn=(124) +calls=1 -88 +* 2665 +-15 3 +cfi=(41) +cfn=(120) +calls=1 32 +* 307 ++1 1 +-1 1 ++1 1 ++2 4 +cfi=(22) +cfn=(52) +calls=1 29 +* 126 ++1 1 ++6 1 +-6 1 ++7 1 +182 1 +894 2 +182 1 +1858 2 ++16 6 +cfi=(58) +cfn=(176) +calls=1 25 +* 13 +* 3 ++76 3 ++16 2 ++10 10 +cfi=(59) +cfn=(178) +calls=1 144 +* 25174834 +-22 7 ++1 1 ++3 5 ++1 1 +-1 1 ++2 1 +-6 1 ++7 1 +1853 4 + +fn=(136) +645 1 +-2 2 ++3 1 +-3 1 ++2 1 ++1 1 +-1 1 ++1 3 +-3 1 ++3 1 +cfi=(29) +cfn=(138) +calls=1 1971 +* 2495 ++2 1 +-2 1 ++2 3 + +fn=(34) dl_main +fi=(8) +143 7 +fe=(2) +1351 19 +196 1 ++1 1 ++1 1 ++97 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 +1362 1 +cfi=(16) +cfn=(36) +calls=1 56 +* 21 +2552 3 ++6 3 +-6 1 ++6 8 +-4 2 ++10 1 ++9 3 +-13 2 +cfi=(17) +cfn=(38) +calls=1 29 +* 38 +* 4 +cfi=(17) +cfn=(38) +calls=2 29 +* 168 +* 6 ++4 2 +-2 2 ++2 4 ++1 19 +-1 76 ++9 14 +2691 3 ++25 2 +1378 3 ++1 1 +-1 1 ++1 3 +-1 1 ++1 1 +2649 1 ++1 1 +-1 1 ++1 4 +cfi=(18) +cfn=(40) +calls=1 309 +* 92 +* 2 +-56 5 +cfi=(18) +cfn=(40) +calls=1 309 +* 14 +* 2 +1648 9 +cfi=(19) +cfn=(42) +calls=1 59 +* 290 ++2 2 ++3 1 +-1 1 ++5 1 +-4 1 +-2 1 ++1 1 ++1 1 ++5 5 +-5 1 ++4 1 +cfi=(19) +cfn=(56) +calls=1 31 +* 46 ++1 4 +1121 1 +-1 3 +1356 2 +1129 1 ++1 1 ++18 2 +-19 1 ++1 1 ++18 1 +-21 1 +-2 1 ++2 1 ++2 1 ++1 1 ++18 2 ++57 1 +-34 1 +-22 1 ++56 1 +-56 1 +-1 2 +-25 1 ++22 1 ++4 4 ++19 2 ++3 2 +-22 62 ++56 2 +-1 2 ++2 2 +-1 2 +-1 2 ++2 2 ++1 1 ++2 9 ++5 2 ++1 2 +-1 4 ++1 2 ++1 2 ++4 4 +-72 12 +1259 5 ++6 1 +-6 10 ++6 9 +-6 9 +-1 12 ++13 2 ++3 2 ++2 3 +1683 3 ++2 1 ++1 1 +-2 1 ++2 2 +-2 1 ++2 2 +-2 4 +cfi=(24) +cfn=(60) +calls=1 38 +* 8 +* 3 ++7 2 ++3 1 +-5 2 ++3 1 +-3 1 ++3 1 ++2 1 ++1 3 ++4 4 ++2 1 +fi=(3) +39 2 ++6 1 +-2 1 ++2 1 ++9 1 +-5 1 ++5 2 ++2 1 ++3 2 +-1 1 +-3 1 +-6 30 ++5 12 ++1 5 ++13 15 +-23 15 ++23 75 +-23 75 ++65 2 ++5 3 ++7 2 ++1 4 ++6 2 ++18 2 ++15 2 ++2 2 ++1 2 ++9 3 ++6 2 ++4 2 +fe=(2) +1709 2 ++7 4 +cfi=(7) +cfn=(12) +calls=1 28 +* 33 +* 2 ++3 3 +fi=(25) ./elf/./setup-vdso.h +24 2 +fi=(28) ./elf/./dl-main.h ++88 6 +fi=(27) ./elf/../sysdeps/unix/sysv/linux/dl-vdso-setup.h +-67 1 +fi=(28) ++67 1 +cfi=(29) +cfn=(72) +calls=1 706 +* 2044 +fe=(2) +1744 4 +cfi=(37) +cfn=(108) +calls=1 56 +* 36 ++7 1 +-5 1 ++5 2 +-7 1 ++7 1 ++4 1 ++15 3 +-15 1 ++4 1 +-4 3 ++3 1 +-2 1 ++3 1 +-1 1 ++1 1 +-2 1 ++1 2 ++12 2 ++1 3 ++5 1 +-3 3 ++2 3 ++5 2 +-4 1 ++6 1 +-7 1 ++7 2 +-1 1 ++1 5 ++2 5 ++6 3 +224 2 +-1 1 ++1 2 ++1 1 +-2 1 ++2 1 +1799 2 ++5 1 +-1 1 ++1 3 ++24 1 +cfi=(38) +cfn=(110) +calls=1 199 +* 6 +fi=(39) ./elf/../sysdeps/generic/dl-debug.h +29 2 +fe=(2) +1828 1 +fi=(39) +29 2 ++1 1 +fe=(2) +1834 4 ++1 1 +cfi=(37) +cfn=(114) +calls=1 117 +* 1 ++5 4 +cfi=(40) +cfn=(116) +calls=1 29 +* 24 ++5 5 ++4 1 +-2 1 ++2 2 +1153 1 +-5 1 ++5 2 +-5 1 ++11 2 +-1 1 ++1 1 +-1 1 ++1 4 +-1 1 ++1 1 +-1 1 ++1 1 +-11 2 ++21 2 ++9 1 +-7 1 +-2 1 +-1 1 ++10 1 ++18 2 +-47 7 +1252 2 +1148 1 +1252 2 +1148 2 +1248 1 +1148 1 +1248 1 +1148 1 +fi=(3) +56 3 +fe=(2) +2335 2 +fi=(3) +59 2 ++3 4 ++2 3 +fi=(26) ./elf/../sysdeps/unix/sysv/linux/dl-vdso.h +-24 1 ++1 6 +fi=(27) +-11 2 ++3 2 ++6 2 +fi=(26) ++16 2 +fe=(2) +2601 5 +cfi=(18) +cfn=(40) +calls=1 309 +* 57 +* 1 +1210 2 +2603 2 ++1 1 ++48 1 ++1 2 +-1 1 ++1 1 ++1 1 +1754 5 ++99 6 +cfn=(118) +calls=1 874 +* 25178049 + +fn=(232) +678 1 +-2 2 ++2 1 +-2 1 ++2 2 +-2 1 ++2 1 +cfi=(68) +cfn=(234) +calls=1 392 +* 91206 +* 1 ++4 4 + +fn=(238) +736 2 ++2 2 +-2 1 ++2 1 ++4 1 +-6 3 ++2 1 ++4 1 +fi=(20) +44 1 +fe=(2) +753 1 +fi=(20) +44 5 +cfi=(21) +cfn=(46) +calls=1 +38 +* 36 +* 2 +fe=(2) +763 1 +-12 1 +-3 1 ++10 1 ++1 1 +-2 1 ++6 1 ++2 1 +-1 1 ++1 1 ++2 44 ++4 9 ++2 3 +-7 3 +-1 3 ++1 19 +-1 19 ++10 2 ++3 2 +cfi=(38) +cfn=(242) +calls=1 97 +* 86 ++3 1 +cfi=(38) +cfn=(244) +calls=1 227 +* 107 ++7 1 +cfi=(38) +cfn=(246) +calls=1 422 +* 480 +* 1 ++1 1 ++6 1 ++3 1 +-3 1 ++6 1 +cfi=(69) +cfn=(250) +calls=1 43 +* 74 ++4 2 +-3 3 ++3 6 + +fl=(36) +fn=(102) +40 105 ++1 21 +cfi=(34) +cfn=(90) +calls=21 -2 +* 1272 +* 21 +fi=(107) ./string/../include/rtld-malloc.h ++15 84 +cfi=(21) +cfn=(51) +calls=4 -21 +* 104 +cfi=(21) +cfn=(50) +calls=17 -21 +* 442 +fe=(36) +-12 21 ++3 21 ++1 42 +-1 21 ++1 42 +-1 21 +cfi=(22) +cfn=(52) +calls=21 -18 +* 1895 + +fl=(8) +fn=(328) _dl_sysdep_start_cleanup +148 1 + +fn=(14) +102 6 ++1 2 ++3 1 +-3 1 ++3 1 +cfn=(16) _dl_sysdep_parse_arguments +calls=1 -27 +* 480 ++4 3 +cfi=(11) +cfn=(22) +calls=1 282 +* 11232 ++3 1 +cfi=(13) +cfn=(26) +calls=1 295 +* 35 ++2 1 ++7 2 +-7 1 +cfi=(14) +cfn=(30) +calls=1 -79 +* 8 ++7 2 ++3 2 +cfi=(15) +cfn=(32) +calls=1 -88 +* 18 +* 3 ++12 2 ++3 5 +cfi=(2) +cfn=(34) +calls=1 1351 +* 25181907 +fi=(2) +498 3 ++89 15 +fe=(8) + +fn=(16) +79 1 +-1 2 ++3 1 +-1 1 ++1 2 ++2 1 +-4 2 +-1 4 ++2 2 ++1 2 +-3 1 ++5 34 +-1 33 ++1 33 ++7 1 +-4 3 ++4 2 +-4 1 ++4 1 +cfi=(9) +cfn=(18) +calls=1 -59 +* 101 +fi=(10) ./elf/../sysdeps/unix/sysv/linux/dl-parse_auxv.h +-57 1 ++8 1 +-9 2 ++7 1 +-7 1 ++1 1 ++6 1 ++2 1 ++1 1 ++1 3 +-1 1 ++1 66 +-1 22 ++1 46 +-2 69 +fe=(8) ++52 1 ++1 1 ++1 1 +fi=(10) +-50 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 +fe=(8) ++42 2 +fi=(10) +-50 2 +-1 1 ++3 1 ++1 1 ++1 1 ++1 1 ++2 1 ++1 1 +-7 1 ++5 1 +fe=(8) ++41 1 ++1 1 ++1 1 +fi=(10) +-49 1 +fe=(8) ++50 5 + +fl=(79) +fn=(304) check_match +32 3 +-1 3 ++2 3 +-1 3 +-1 3 ++2 3 +-1 3 +-1 3 ++2 9 +-1 3 ++1 3 +-2 18 ++5 3 +-5 9 ++4 3 ++1 3 ++12 12 ++3 3 ++2 3 +-2 6 ++2 6 +cfi=(24) +cfn=(60) +calls=3 -15 +* 351 +* 3 ++4 3 ++1 3 +-1 9 ++1 21 ++1 9 +cfi=(24) +cfn=(60) +calls=3 -21 +* 219 +-19 9 ++24 27 + +fn=(302) +74 9 ++1 3 +-1 24 ++4 3 +-4 9 ++2 3 ++2 9 ++37 3 +-37 12 ++1 3 ++2 12 ++3 3 ++2 6 +-2 6 ++3 15 +-3 5 ++2 4 +-2 4 ++3 10 +-3 2 ++3 3 +cfn=(304) +calls=3 -55 +* 759 ++3 3 ++3 6 ++23 33 + +fl=(18) +fn=(40) +309 24 +-3 24 ++3 24 ++34 69 ++3 23 +-1 23 ++1 23 ++1 23 ++2 23 ++1 23 +-4 137 +-1 137 ++1 137 ++1 137 ++2 137 ++1 137 +-7 159 ++12 22 ++1 22 +-43 4 ++17 1 +-1 1 +-27 1 +122 1 +329 1 +122 5 ++4 1 ++1 1 ++1 1 ++1 1 ++1 1 ++46 1 ++1 1 ++1 1 +337 1 ++2 1 +-2 1 ++1 1 ++5 8 ++3 4 +-1 4 ++1 4 ++1 4 ++2 4 ++1 4 ++5 1 ++1 2 +190 1 +-7 1 ++2 1 +351 2 + +fl=(19) +fn=(42) +59 63 ++3 21 +-3 231 ++3 21 +-3 105 ++3 21 ++21 40 +cfi=(34) +cfn=(90) +calls=20 -44 +* 1057 +-3 40 ++7 40 +-4 20 ++9 40 +-9 20 +fi=(20) +-39 80 +cfi=(21) +cfn=(46) +calls=20 +38 +* 832 +* 4 +cfi=(21) +cfn=(46) +calls=1 +38 +* 45 +* 21 +fe=(19) ++51 21 ++5 42 ++3 21 +-1 21 +-4 21 ++1 21 ++5 84 +cfi=(22) +cfn=(52) +calls=21 -75 +* 1773 ++2 21 +-2 21 ++2 21 ++13 42 ++6 1 ++2 6 ++3 4 +-3 120 ++3 80 ++4 21 +-2 21 ++2 21 ++2 21 ++3 30 ++2 16 +-2 48 +fi=(23) +1348 16 +-7 16 +fe=(19) +155 147 +-6 21 ++1 21 +-1 21 ++1 21 ++29 21 +-24 21 ++2 40 ++3 20 +-3 20 ++7 120 ++4 20 ++8 1 ++3 1 ++10 2 +-10 20 ++10 40 ++2 40 +cfi=(34) +cfn=(90) +calls=20 39 +* 1243 ++4 20 +-4 40 ++4 20 ++68 315 +131 63 +-12 40 ++4 20 +-4 20 ++34 1 ++7 3 ++85 60 +cfi=(22) +cfn=(52) +calls=20 29 +* 1768 +* 20 ++6 60 +-1 20 ++1 582 +-1 281 ++1 281 ++2 20 ++3 20 ++3 40 +-91 60 +fi=(20) +56 80 +cfi=(21) +cfn=(51) +calls=5 -21 +* 130 +cfi=(21) +cfn=(50) +calls=15 -21 +* 390 +* 20 +fe=(19) +200 20 +64 3 ++2 1 ++1 5 ++10 1 +-6 3 + +fn=(56) +31 63 ++2 42 +-2 42 ++2 42 +-2 21 ++2 21 +cfi=(16) +cfn=(58) +calls=21 +11 +* 42 ++2 168 ++3 690 ++2 20 ++2 20 ++4 80 ++1 60 +-1 40 ++5 20 +-4 20 ++4 40 +-3 40 ++2 80 ++1 20 +-1 20 +cfi=(16) +cfn=(58) +calls=20 -6 +* 40 +-4 4 ++1 3 +-1 2 ++5 1 +-4 1 ++4 2 +-3 2 ++2 4 ++1 1 +-1 1 +cfi=(16) +cfn=(58) +calls=1 -6 +* 2 +-5 2 + +fl=(64) +fn=(202) +30 1 ++4 1 +-4 4 ++4 2 +-4 2 ++4 1 ++29 4 +-17 1 ++17 2 +cfi=(59) +cfn=(179) +calls=1 201 +* 137395 +-18 2 + +fn=(203) +30 19 ++4 19 +-4 76 ++4 38 +-4 38 ++4 19 ++29 76 +-17 19 ++17 38 +-18 38 + +fl=(66) +fn=(216) +35 3 ++1 1 +-1 4 ++1 1 +cfi=(34) +cfn=(90) +calls=1 +3 +* 49 +* 1 ++1 4 +cfi=(22) +cfn=(52) +calls=1 -8 +* 98 ++1 7 + +fl=(32) +fn=(80) +25 12 ++1 6 +-1 12 ++1 6 ++4 3 ++4 6 +-4 6 ++4 6 ++2 3 ++11 18 +-20 6 ++20 12 + +fn=(78) +51 20 ++3 10 +cfn=(80) +calls=5 -29 +* 84 +* 5 ++8 20 + +ob=(10) +fl=(100) +fn=(384) +0 12 + +ob=(3) +fl=(92) +fn=(356) +46 3 ++5 2 +-5 1 ++5 1 ++4 7 ++6 3 ++10 1 ++1 2 +-10 1 ++1 3 ++9 1 +-1 1 +cfi=(93) ./misc/./misc/init-misc.c +cfn=(358) __init_misc +calls=1 -40 +* 234 + +fl=(81) +fn=(308) +fi=(2) +2398 1 +cob=(1) +cfi=(8) +cfn=(328) +calls=1 148 +* 1 ++4 3 +cob=(1) +cfi=(40) +cfn=(330) +calls=1 46 +* 4 ++5 2 +cob=(1) +cfi=(37) +cfn=(154) +calls=1 38 +* 7 ++1 1 ++1 1 +cob=(1) +cfi=(37) +cfn=(114) +calls=1 117 +* 1 ++5 1 +cob=(1) +cfi=(61) +cfn=(332) +calls=1 536 +* 22 ++5 16 +fe=(81) +33 10 ++2 1 +cfi=(82) ./ctype/./ctype/ctype-info.c +cfn=(310) __ctype_init +calls=1 -4 +* 24 ++3 2 +fi=(84) ./elf/../sysdeps/nptl/pthread_early_init.h +-5 2 +fe=(81) ++5 1 ++3 4 +fi=(84) +-8 1 +cfi=(83) ./resource/../sysdeps/unix/sysv/linux/getrlimit64.c +cfn=(312) getrlimit +calls=1 +5 +* 12 +* 2 ++1 3 ++4 3 ++7 2 +fi=(108) ./elf/../nptl/nptl-stack.h ++13 2 +fi=(84) +-13 1 +fi=(108) ++13 3 +fi=(84) +-12 3 +fi=(108) ++12 1 +fi=(84) +-12 1 ++6 6 ++1 2 +-1 1 ++1 1 ++1 1 ++3 1 +cfi=(85) ./nptl/./nptl/pthread_mutex_conf.c +cfn=(316) __pthread_tunables_init +calls=1 -7 +* 1597 +fe=(81) + +fl=(83) +fn=(312) +38 2 ++1 10 + +fl=(85) +fn=(316) +50 3 ++1 1 +-1 5 ++1 4 +-1 1 ++1 1 +cob=(1) +cfi=(11) +cfn=(28) +calls=2 408 +* 43 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 -17 +* 1500 +* 29 +fi=(81) +-2 10 +fe=(85) + +fl=(103) ./nptl/./nptl/pthread_once.c +fn=(434) pthread_once@@GLIBC_2.34 +139 2 ++1 2 ++3 1 +cfn=(436) __pthread_once_slow +calls=1 -75 +* 17 + +fn=(436) +68 13 ++8 2 ++4 2 + +fl=(95) ./string/./string/strchr.c +fn=(362) index +46 4 +-5 4 ++5 4 ++1 9 +-1 9 ++4 9 +-4 9 ++2 20 +179 2 +71 27 ++61 3 +-14 6 ++14 3 +-11 3 ++11 3 +-8 3 ++8 12 ++8 6 ++2 2 ++2 4 ++2 2 ++2 4 ++2 2 ++2 4 ++2 2 ++4 4 ++2 2 ++2 4 ++2 1 +51 1 +179 1 +-17 2 + +fl=(82) +fn=(310) +31 4 ++2 2 +-2 3 ++2 1 +-2 1 ++4 2 +-4 1 ++2 1 ++2 2 +-4 1 ++2 1 ++2 1 +-4 1 ++2 1 ++2 1 ++1 1 + +fl=(93) +fn=(358) +31 1 +-1 2 ++1 1 +-1 3 ++1 1 ++2 3 +cfi=(94) ./string/./string/strrchr.c +cfn=(360) rindex +calls=1 -4 +* 209 ++1 1 ++3 4 ++1 4 ++2 5 + +fl=(96) +fn=(364) +84 6 ++1 4 ++1 4 ++2 1 + +fl=(94) +fn=(360) +29 7 ++7 2 ++7 6 +-3 9 +cfi=(95) +cfn=(362) +calls=3 +6 +* 139 +* 3 +cfi=(95) +cfn=(362) +calls=1 +6 +* 32 +* 4 ++7 7 + +fl=(102) ./string/./string/memset.c +fn=(418) memset +31 2 +-2 2 ++2 2 ++5 2 ++5 4 ++4 6 ++8 2 ++1 8 ++2 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 +-10 2 ++2 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 +-10 14 ++16 4 ++1 2 ++6 2 +-41 4 ++45 2 ++8 2 + +ob=(4) +fl=(89) +fn=(342) +0 10 + +ob=(7) +fl=(97) +fn=(366) +0 11 + +ob=(4) +fl=(89) +fn=(342) +0 1 + +ob=(7) +fl=(97) +fn=(366) +0 1 + +ob=(4) +fl=(89) +fn=(342) +0 1 + +ob=(8) +fl=(98) +fn=(372) +0 12 + +ob=(11) +fl=(101) +fn=(422) std::locale::facet::_S_get_c_name() +0 3 + +fn=(400) std::locale::locale() +0 8 +cfn=(402) 0x00000000000b5f2c +calls=1 0 +0 6100 + +fn=(414) std::locale::_Impl::_Impl(unsigned long) +0 22 +cfn=(426) std::ctype::ctype(unsigned short const*, bool, unsigned long) +calls=1 0 +0 2228 +cfn=(422) +calls=1 0 +0 3 +cob=(3) +cfi=(102) +cfn=(418) +calls=2 31 +0 168 +cob=(1) +cfi=(86) +cfn=(322) +calls=3 34 +0 2714 +0 83 + +fn=(396) std::ios_base::Init::Init() +0 54 +cfn=(400) +calls=1 0 +0 6108 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 816 +0 11 + +fn=(402) +0 11 +cfn=(414) +calls=1 0 +0 5218 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 851 +0 11 +0 9 + +fn=(426) +0 15 +cfn=(430) std::locale::facet::_S_get_c_locale() +calls=1 0 +0 1218 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 984 +0 11 + +fn=(430) +0 7 +cob=(3) +cfi=(103) +cfn=(434) +calls=1 139 +0 22 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 1178 +0 11 + +fn=(390) +0 5 +cfn=(396) +calls=1 0 +0 6989 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 909 +0 11 + +ob=(6) +fl=(91) +fn=(350) +0 12 + +totals: 25203449 diff --git a/callgrind.out.53033 b/callgrind.out.53033 new file mode 100644 index 0000000..7c076db --- /dev/null +++ b/callgrind.out.53033 @@ -0,0 +1,6585 @@ +# callgrind format +version: 1 +creator: callgrind-3.21.0.GIT +pid: 53033 +cmd: ./build/server/instrew /bin/ls +part: 1 + + +desc: I1 cache: +desc: D1 cache: +desc: LL cache: + +desc: Timerange: Basic block 0 - 3375057 +desc: Trigger: Program termination + +positions: line +events: Ir +summary: 25203449 + + +ob=(5) /mnt/sda1/mikhaylov/instrew/build/server/instrew +fl=(90) ??? +fn=(348) 0x0000000000017942 +0 3 + +ob=(9) /usr/lib/riscv64-linux-gnu/libm.so.6 +fl=(99) ??? +fn=(378) 0x000000000000c4a8 +0 12 + +ob=(1) /usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1 +fl=(21) ./elf/./elf/dl-minimal-malloc.c +fn=(46) __minimal_calloc +82 46 ++3 276 +fi=(20) ./elf/../include/rtld-malloc.h +-29 138 +cfi=(21) +cfn=(51) __minimal_malloc'2 +calls=5 -21 +* 158 +cfi=(21) +cfn=(50) __minimal_malloc +calls=41 -21 +* 1217 +fe=(21) + +fn=(106) __minimal_free +95 12 ++2 12 +-2 6 ++2 6 +-2 6 ++2 6 ++7 30 + +fn=(50) +35 172 ++1 258 +-1 344 ++1 86 ++11 170 ++1 85 +-1 85 ++3 170 +-3 1 ++1 1 +-1 1 ++3 162 ++5 36 ++1 6 ++2 6 ++1 42 +cfi=(54) ./misc/../sysdeps/unix/sysv/linux/mmap64.c +cfn=(166) mmap +calls=6 -9 +* 42 ++2 6 +-2 6 ++2 6 ++2 12 ++2 8 ++4 4 +-1 4 ++1 4 ++2 24 +-3 82 ++1 82 ++2 492 +cfi=(59) ./elf/./elf/dl-deps.c +cfn=(179) _dl_map_object_deps'2 +calls=1 423 +* 83648 +-3 2 +-3 4 ++4 4 +-27 2 +-1 2 ++1 2 ++1 2 +-2 2 + +fn=(51) +35 68 ++1 102 +-1 136 ++1 34 ++11 68 ++1 34 +-1 34 ++3 134 ++5 6 ++1 1 ++2 1 ++1 7 +cfi=(54) +cfn=(166) +calls=1 -9 +* 7 ++2 1 +-2 1 ++2 1 ++2 2 ++2 2 ++4 1 +-1 1 ++1 1 ++2 6 +-3 33 ++1 33 ++2 198 +cfi=(59) +cfn=(179) +calls=17 423 +* 838808 + +fl=(75) ./elf/./dl-find_object.h +fn=(286) _dl_find_object_from_map +95 44 ++1 66 ++1 44 ++6 132 ++1 22 ++1 66 +-1 278 ++1 300 ++2 55 ++5 11 ++4 22 ++4 11 + +fl=(16) ./elf/../sysdeps/nptl/dl-tls_init_tp.c +fn=(36) __tls_pre_init_tp +56 4 ++1 2 ++1 2 ++3 2 +-5 2 ++1 2 ++1 2 ++3 2 ++1 2 ++2 1 + +fn=(58) rtld_mutex_dummy +44 432 + +fl=(45) ./setjmp/../sysdeps/riscv/setjmp.S +fn=(134) __sigsetjmp +31 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++3 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++1 68 ++5 68 ++1 68 + +fl=(61) ./elf/./elf/dl-cache.c +fn=(192) search_cache +206 38 ++5 19 +-5 133 ++5 57 ++6 19 +-11 38 ++5 19 +-5 171 ++5 19 +cfi=(11) ./elf/./elf/dl-tunables.c +cfn=(28) __tunable_get_val +calls=19 408 +* 418 +* 19 ++17 19 ++3 38 +-15 19 ++14 76 +-36 19 ++36 19 ++9 19 +-8 38 +-47 38 ++55 19 +-4 19 +-5 608 +-36 152 ++36 152 ++9 152 +-8 304 +-47 304 ++55 152 +-4 152 ++4 171 +cfn=(194) _dl_cache_libcmp +calls=171 368 +* 12284 ++1 171 +356 152 ++3 86 +228 86 +363 304 +-6 66 +228 142 ++22 36 ++5 18 +-71 36 ++71 18 +-2 18 ++2 18 +cfn=(194) +calls=18 368 +* 1281 +* 37 +-7 38 +-34 114 +-1 95 ++64 19 +170 19 +277 19 +170 57 ++97 20 ++4 1 +-87 2 ++87 1 ++1 3 +cfn=(194) +calls=1 +96 +* 170 +* 1 ++5 38 ++75 3 +-74 36 ++7 54 +fi=(62) ./elf/../sysdeps/generic/dl-cache.h +125 18 +fe=(61) +303 18 +fi=(62) +125 36 +fe=(61) +303 36 ++3 54 ++34 54 ++2 18 + +fn=(332) _dl_unload_cache +536 6 ++2 1 +-3 2 ++3 1 +cfi=(73) ./misc/../sysdeps/unix/syscall-template.S +cfn=(334) munmap +calls=1 120 +* 5 ++7 1 +-6 2 ++4 2 ++2 2 + +fn=(186) _dl_load_cache_lookup +413 190 ++2 57 +-2 19 ++2 38 ++3 76 ++69 36 ++5 38 ++3 19 +-3 19 ++3 114 +cfn=(192) +calls=19 206 +* 19097 +* 19 ++15 57 ++4 19 ++8 36 +cfi=(34) ./string/./string/strlen.c +cfn=(90) strlen +calls=18 39 +* 1406 ++1 72 ++1 72 +cfi=(22) ./string/./string/memcpy.c +cfn=(52) memcpy +calls=18 29 +* 1912 ++1 18 +cfi=(36) ./string/./string/strdup.c +cfn=(102) strdup +calls=18 40 +* 3493 ++1 209 +-37 2 +-68 6 +cfi=(46) ./elf/./elf/dl-misc.c +cfn=(188) _dl_sysdep_read_whole_file +calls=1 36 +* 85 ++8 1 +-8 1 ++8 4 ++1 4 +cfi=(18) ./string/./string/memcmp.c +cfn=(40) bcmp +calls=1 309 +* 67 +* 1 ++3 3 ++1 1 +-1 1 +fi=(62) +194 1 ++1 4 +fe=(61) +441 1 ++1 2 + +fn=(194) +368 380 ++2 380 ++20 1048 ++2 1044 ++4 880 ++1 880 +-29 1810 ++4 1076 +-2 2152 ++2 2152 +-2 1076 ++2 28 ++8 25 +-2 50 ++2 50 +-1 50 ++1 25 ++1 20 +-1 4 ++1 4 +-1 12 ++2 25 +-3 25 ++3 75 ++1 20 +-1 4 ++1 4 +-1 12 ++2 25 ++16 57 +-9 4 ++10 4 +-8 328 +-5 6 + +fl=(17) ./elf/./elf/dl-environ.c +fn=(38) _dl_next_ld_env_entry +29 3 +-1 3 ++4 6 ++2 2 ++1 4 +-3 31 ++13 31 +-13 31 ++2 66 ++1 20 ++5 2 +-3 2 ++3 2 ++2 2 ++7 1 + +fl=(69) ./elf/../include/list.h +fn=(250) __tls_init_tp +43 3 +fi=(16) ++25 3 +fe=(69) +-24 3 +-1 1 +fi=(16) ++29 1 +fe=(69) +-27 1 +fi=(16) ++24 1 +fe=(69) +-23 1 +fi=(16) ++29 1 +fe=(69) +-28 1 +fi=(16) ++28 2 ++7 3 ++5 1 +-11 1 ++1 1 ++5 1 ++8 1 +-15 1 ++1 1 ++1 1 ++10 1 ++2 1 ++1 1 ++3 4 ++2 3 ++3 1 ++8 4 +cfi=(11) +cfn=(28) +calls=1 408 +* 21 ++24 2 +fi=(104) ./elf/../sysdeps/unix/sysv/linux/rseq-internal.h +-83 1 +fi=(16) ++84 1 +fi=(104) +-84 1 +fi=(16) ++83 1 ++1 3 +fe=(69) + +fl=(42) ./string/./string/wordcopy.c +fn=(142) _wordcopy_fwd_aligned +37 688 ++33 6 ++2 6 +-1 6 ++2 6 ++29 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++4 6 +-1 6 +-1 6 ++4 6 +-22 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++4 6 +-1 6 +-1 6 ++4 6 +-19 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++2 7 ++4 7 +-3 7 ++4 7 +-1 7 +-1 7 ++4 7 +-16 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 6 ++4 6 +-1 6 +-1 6 ++4 6 +-13 40 ++4 40 +-3 40 ++2 40 ++4 40 +-3 40 ++2 40 ++4 40 +-3 40 ++4 40 +-1 40 +-1 40 ++4 40 +-10 18 ++4 18 +-3 18 ++2 18 ++4 18 +-3 18 ++4 18 +-1 18 +-1 18 ++4 18 +-7 9 ++4 9 +-3 9 ++4 9 +-1 9 +-1 9 ++4 9 +-28 6 ++4 6 +-3 6 ++2 6 ++4 6 +-3 12 ++29 86 ++1 86 +-90 9 ++2 9 +-1 9 ++1 9 ++1 9 ++1 9 ++2 18 ++2 18 +-1 18 ++2 18 ++1 18 ++2 40 ++2 40 +-1 40 ++1 40 ++1 40 ++1 40 ++2 6 ++2 6 +-1 6 ++2 6 ++1 6 ++2 7 ++2 7 +-1 7 ++1 7 ++1 7 ++1 7 + +fn=(122) _wordcopy_fwd_dest_aligned +150 75 ++7 25 +-6 25 ++6 25 +-6 25 ++4 25 ++2 105 ++17 17 ++13 3 +-4 3 ++1 3 ++4 3 ++29 12 ++1 25 +-21 3 +-1 1 ++4 1 +-3 1 ++3 3 +-1 1 ++4 1 +-3 1 ++3 3 ++3 1 +-4 1 ++1 1 ++3 3 ++3 1 +-4 1 ++5 1 +-4 1 ++3 1 +-1 1 ++4 1 +-12 51 +-1 17 ++4 17 +-3 17 ++3 51 ++3 17 +-4 17 ++1 17 ++3 51 ++3 17 +-4 17 ++5 17 +-4 17 ++3 17 +-1 17 ++4 17 +-6 15 ++3 5 +-4 5 ++5 5 +-4 5 ++3 5 +-1 5 ++4 5 ++5 110 +-57 5 ++1 5 ++1 5 ++1 10 ++1 5 ++1 5 ++11 17 ++1 34 ++2 34 ++2 17 + +fn=(222) _wordcopy_bwd_aligned +234 16 ++77 2 ++1 2 ++2 2 ++5 2 +-4 2 ++2 2 ++1 2 ++3 2 ++5 2 ++1 2 +-82 2 +-1 2 +-1 2 ++3 2 ++1 2 + +fl=(50) ./io/../sysdeps/unix/sysv/linux/stat64.c +fn=(158) fstat +29 21 +fi=(51) ./io/../sysdeps/unix/sysv/linux/fstat64.c ++1 21 ++5 84 +cfi=(52) ./io/../sysdeps/unix/sysv/linux/fstatat64.c +cfn=(162) fstatat +calls=21 +64 +* 147 +fe=(50) + +fl=(71) ./elf/./elf/dl-lookup.c +fn=(268) check_match +71 135720 ++3 16965 +-3 67860 ++3 16965 +-3 50895 ++1 16965 ++2 67857 ++13 67856 ++3 21197 +cfi=(24) ./string/./string/strcmp.c +cfn=(60) strcmp +calls=1058 -52 +* 120644 +* 1058 ++4 16965 ++1 16965 ++2 15941 ++19 63764 ++1 31882 +-1 15941 ++1 111587 ++2 162 ++1 20 +-41 16920 ++84 135720 +-18 1024 ++2 4092 ++1 2046 +-1 2046 ++1 1023 +-1 1023 ++4 2 ++1 6 ++2 2 +-75 90 ++39 47661 +cfi=(24) +cfn=(60) +calls=15887 -80 +* 997541 +* 15887 +-44 9 + +fn=(266) do_lookup_x +348 85295 ++1 17059 +-1 307062 ++7 34118 ++41 34118 ++3 34118 +-33 17059 ++33 17059 +-25 34118 ++86 17059 +-61 102354 +-19 155594 ++8 77797 ++1 77797 +-1 155594 ++1 77797 ++3 77797 +-8 77797 ++1 77797 ++3 77797 ++1 77797 ++4 77797 ++4 77797 ++3 77797 +-3 77797 +-2 233391 ++5 77797 ++3 388985 ++99 182628 +359 155594 ++3 77797 ++4 77797 ++4 233391 ++4 233391 +fi=(23) ./elf/../sysdeps/generic/ldsodefs.h +141 33842 +fe=(71) +460 33842 ++3 33842 ++4 94367 ++16 16835 ++2 16835 +-2 16835 ++1 16835 ++1 16835 +-78 20171 +-1 100855 ++2 20171 ++2 77048 ++7 38524 +-1 250406 ++7 57480 +-10 144320 ++2 16965 ++1 33930 +-1 33930 ++2 50895 +-1 33930 ++1 16965 +-1 135720 +cfn=(268) +calls=16965 71 +* 2082301 ++4 16965 ++3 90 ++82 138 ++1 255885 +-35 15996 +223 344 ++2 344 +-2 86 ++2 258 ++2 86 +-2 258 +-2 86 ++2 172 +cfi=(16) +cfn=(58) +calls=86 44 +* 172 ++2 86 ++1 86 ++1 258 ++2 170 ++1 170 +-1 340 ++1 170 +-1 1015 ++24 189 ++3 105 ++1 210 +-24 190 ++1 190 +-1 190 ++1 2 +cfi=(24) +cfn=(60) +calls=1 38 +* 157 +* 1 ++2 2 ++10 1 ++1 2 ++2 6 +cfi=(16) +cfn=(58) +calls=1 44 +* 2 +485 2 +-31 4685 ++2 1 +263 1680 ++49 170 +-1 85 ++19 255 ++2 85 +-2 680 ++2 255 +cfi=(16) +cfn=(58) +calls=85 44 +* 170 ++2 170 +485 85 +335 85 +-1 85 ++1 85 +177 435 +-2 92 ++1 184 +-3 354 +319 85 +180 85 ++1 85 ++1 85 ++1 85 +319 255 +-59 110 +fi=(20) +44 7 +cfi=(21) +cfn=(46) +calls=1 +38 +* 36 +* 1 +fe=(71) +303 1 +-72 2 +-59 2 +307 1 ++1 4 +-2 1 ++1 1 ++1 1 +-7 1 +172 1 +-1 21081 ++99 8 +cfi=(46) +cfn=(280) _dl_higher_prime_number +calls=2 125 +* 143 +fi=(20) +44 2 +fe=(71) +270 2 +fi=(20) +44 8 +cfi=(21) +cfn=(46) +calls=2 +38 +* 102 +* 2 +fe=(71) +273 2 ++7 8 +172 6 +280 2 ++1 184 ++1 210 +171 140 ++1 70 +-1 70 ++1 70 ++1 295 ++2 14 ++1 28 +-3 168 ++7 70 ++1 70 ++1 70 ++1 70 ++97 184 ++6 24 +-16 2 ++16 2 +cfi=(21) +cfn=(106) +calls=2 95 +* 26 +172 2 +290 4 +-3 2 +172 2 +289 2 ++1 6 +172 4 +-1 6 ++6 10 +437 169200 + +fn=(262) _dl_lookup_symbol_x +756 50910 ++2 33940 +-2 322430 ++2 16970 +fi=(72) ./elf/../sysdeps/generic/dl-new-hash.h +74 16970 ++3 16970 +-7 16970 +-1 16970 ++1 16970 ++10 33940 ++1 16970 +-1 805282 ++1 402641 ++20 1644636 ++1 822318 ++3 822318 +-31 411159 ++30 411159 +-27 411159 +fe=(71) +762 50910 +-4 16970 ++1 16970 ++3 16970 +-4 16970 ++1 16970 ++3 16970 ++4 48764 ++5 33940 +-2 16970 ++6 16970 +-7 101820 ++7 552 ++1 187649 +cfn=(266) +calls=17059 348 +* 7495906 +* 17059 ++28 16970 +-23 16970 ++23 16970 +-23 16970 ++24 84589 ++7 16921 +-7 16921 ++35 101526 ++14 33842 ++3 50763 ++17 16921 ++2 33842 +-76 16921 ++76 236992 +-76 49 ++76 686 +fi=(72) +87 8452 ++2 16904 ++1 8452 +fe=(71) +783 245 ++18 147 ++54 3 + +fl=(34) +fn=(90) +39 214 +-1 102 ++2 230 +-1 460 ++2 460 ++38 40 +-41 280 ++32 112 ++2 280 +-34 204 ++32 102 ++2 255 +-2 534 ++2 1335 ++6 214 ++2 174 ++2 158 ++2 134 ++4 104 ++2 92 ++2 58 ++2 18 +-56 534 ++57 18 ++4 9 +-18 24 ++2 36 ++2 45 ++4 18 ++2 51 ++2 60 + +fl=(54) +fn=(166) +50 116 ++8 232 ++2 58 + +fl=(78) ./elf/../sysdeps/nptl/dl-mutex.c +fn=(300) __rtld_mutex_init +30 2 ++10 1 +-3 2 ++3 8 +-10 2 ++10 1 +cfi=(79) ./elf/./elf/dl-lookup-direct.c +cfn=(302) _dl_lookup_direct +calls=1 +34 +* 327 ++4 1 ++1 8 ++2 1 +-2 3 ++2 8 +-2 1 ++2 1 +cfi=(79) +cfn=(302) +calls=1 +27 +* 311 ++4 1 ++1 8 ++1 2 +-1 2 ++1 3 + +fl=(37) ./elf/./elf/dl-debug.c +fn=(114) _dl_debug_state +117 2 + +fn=(154) _dl_debug_update +38 21 ++3 42 +-1 21 ++4 42 ++4 21 + +fn=(108) _dl_debug_initialize +56 1 ++3 1 ++26 2 +-22 1 ++22 1 ++10 1 +-32 1 ++1 2 ++21 1 ++5 1 ++5 1 +-5 1 ++1 3 ++1 1 ++3 1 ++4 1 ++8 1 +-50 4 ++39 11 + +fl=(7) ./elf/./elf/dl-setup_hash.c +fn=(12) _dl_setup_hash +28 44 ++3 66 ++1 44 ++2 22 +-1 22 ++3 88 ++5 44 ++3 22 ++1 22 +-8 22 ++4 22 ++3 22 ++1 22 +-7 22 ++3 22 +-3 22 ++7 22 +-4 22 ++4 44 +-7 22 ++2 22 ++3 22 ++2 22 ++5 22 + +fl=(58) ./io/../sysdeps/unix/sysv/linux/access.c +fn=(176) access +25 2 ++4 10 ++2 1 + +fl=(14) ./elf/../sysdeps/unix/sysv/linux/brk.c +fn=(30) brk +36 1 +fi=(105) ./elf/../sysdeps/unix/sysv/linux/brk_call.h +-12 2 +fe=(14) ++13 2 ++1 1 ++6 1 ++1 1 + +fl=(31) ./elf/./elf/dl-hwcaps-subdirs.c +fn=(76) _dl_hwcaps_subdirs_active +29 2 + +fl=(59) +fn=(178) _dl_map_object_deps +144 7 +-1 1 ++1 1 +-1 14 ++1 3 +-14 1 +-2 1 ++1 1 ++1 1 ++13 1 +-7 1 ++7 2 +-7 7 ++24 3 +-28 1 +-2 4 ++31 1 +-31 3 +-2 1 ++1 1 ++1 1 ++6 2 ++24 1 +-24 3 +-6 1 ++30 2 +-32 4 ++60 1 +-60 2 ++54 3 +fi=(63) ./elf/../include/scratch_buffer.h +78 2 +fe=(59) +184 2 ++82 2 +fi=(63) +77 1 +fe=(59) +184 1 ++82 1 +-38 1 ++4 1 +-4 1 +fi=(63) +77 1 +fe=(59) +232 1 +-4 1 ++4 1 +-35 1 +-33 1 ++68 1 +-39 1 ++35 4 +-35 1 ++4 1 ++11 2 +-11 2 ++1 2 ++12 1 ++11 1 +-11 2 ++7 1 ++4 1 +-11 1 ++6 1 +-1 1 ++2 1 ++4 2 +-31 1 ++32 1 ++6 3 +-6 1 ++6 4 +cfi=(29) ./elf/./elf/dl-load.c +cfn=(98) _dl_dst_count +calls=1 +10 +* 102 +* 2 ++4 2 +-4 1 ++4 2 +-2 1 ++2 1 +cfi=(29) +cfn=(98) +calls=1 +6 +* 162179 +cfi=(44) ./elf/./elf/dl-error-skeleton.c +cfn=(132) _dl_catch_exception +calls=1 -57 +* 5612 +* 31 +fi=(2) ./elf/./elf/rtld.c +1982 5 ++1 6 +-1 1 ++1 3 +-1 1 ++1 42 +-1 21 ++1 63 +-1 21 ++4 4 ++1 1 ++1 1 ++2 49 ++1 32 ++46 1 +-42 1 ++8 7 ++1 1 ++2 2 ++4 1 +-2 1 ++16 1 ++2 1 +-1 1 ++1 2 ++2 2 ++1 1 +-28 1 ++37 1 +-1 5 ++2 8 +cfi=(44) +cfn=(230) _dl_receive_error +calls=1 238 +* 91242 ++10 3 ++1 2 +-1 1 ++1 1 ++3 1 +842 2 +fi=(106) ./elf/../sysdeps/unix/sysv/linux/dl-osinfo.h +37 22 ++2 1 +fi=(2) +846 3 +fi=(106) +52 16 +fi=(2) +860 2 +-5 4 +2058 2 +2267 1 +-6 2 ++6 1 +-10 1 ++13 1 +-13 2 ++4 2 ++6 1 ++3 2 ++19 1 ++3 1 ++5 1 +-8 1 ++3 1 ++6 1 +-6 1 ++6 44 ++2 22 ++9 22 +-9 44 ++5 44 ++2 22 ++6 66 ++2 22 ++1 126 +cfi=(70) ./elf/./elf/dl-reloc.c +cfn=(254) _dl_relocate_object +calls=21 207 +* 24897661 ++4 56 ++1 6 +-23 3 ++23 3 +cfi=(38) ./elf/./elf/dl-tls.c +cfn=(276) _dl_add_to_slotinfo +calls=3 1015 +* 108 +-23 5 ++32 3 ++4 5 ++2 4 ++7 5 +cfi=(38) +cfn=(282) _dl_allocate_tls_init +calls=1 528 +* 451 ++3 6 ++10 4 ++2 1 ++33 4 +cfi=(80) ./elf/./elf/dl-call-libc-early-init.c +cfn=(306) _dl_call_libc_early_init +calls=1 29 +* 2088 +-82 1 ++1 1 +-3 1 +2008 4 +-2 2 ++5 1 +-1 1 ++41 2 +cfn=(238) init_tls +calls=1 736 +* 937 +* 3 +2368 2 +cfi=(74) ./elf/./elf/dl-find_object.c +cfn=(284) _dl_find_object_init +calls=1 564 +* 3438 ++5 3 +cfi=(6) ./elf/./elf/dl-minimal.c +cfn=(292) __rtld_malloc_init_real +calls=1 76 +* 3484 ++3 1 +cfi=(78) +cfn=(300) +calls=1 30 +* 693 ++6 1 ++1 2 +-1 1 ++1 2 +-1 2 ++1 3 +cfi=(70) +cfn=(254) +calls=1 207 +* 5752 +* 1 +fe=(59) + +fn=(179) +208 51 +-18 3 ++18 3 +417 3 ++2 6 ++3 2 +-3 2 ++3 2 +-3 2 +fi=(20) +56 12 +cfi=(21) +cfn=(51) +calls=1 -21 +* 26 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(59) +423 20 +fi=(20) +56 20 +fe=(59) +423 20 ++7 80 +-1 20 ++1 40 ++1 20 +-1 20 +cfi=(22) +cfn=(52) +calls=20 29 +* 1380 ++1 120 +cfi=(22) +cfn=(52) +calls=20 29 +* 1380 ++2 20 ++2 20 +-1 20 ++1 60 ++4 42 +188 20 ++5 20 ++4 20 +-4 20 ++4 60 ++1 80 +fi=(63) +-67 76 +cfi=(64) ./malloc/./malloc/scratch_buffer_set_array_size.c +cfn=(203) __libc_scratch_buffer_set_array_size'2 +calls=19 30 +* 380 +fe=(59) ++70 40 ++4 40 ++5 18 ++11 18 +-11 36 ++7 18 ++4 18 +-11 18 ++6 18 +-1 18 ++2 18 ++4 36 +-31 18 ++32 18 ++6 54 +-6 18 ++6 72 +cfi=(29) +cfn=(99) _dl_dst_count'2 +calls=18 +10 +* 1541 +* 132 ++4 132 +-4 66 ++4 132 +-2 66 ++2 66 +cfi=(21) +cfn=(51) +calls=17 35 +* 839250 +cfi=(21) +cfn=(50) +calls=1 35 +* 83674 +cfi=(64) +cfn=(202) __libc_scratch_buffer_set_array_size +calls=1 30 +* 137415 +cfi=(29) +cfn=(99) +calls=47 +6 +* 3185305 +cfi=(44) +cfn=(132) +calls=66 -57 +* 142597 +* 5114 +fi=(63) +85 2 +fe=(59) +448 5 ++1 1 ++3 2 +fi=(20) +56 2 +fe=(59) +463 2 +fi=(20) +56 5 +cfi=(21) +cfn=(51) +calls=1 -21 +* 26 +fe=(59) +465 1 +fi=(20) +56 1 +fe=(59) +465 1 ++5 4 ++1 1 +-1 1 ++4 1 +-2 1 ++6 44 ++5 22 ++2 110 ++5 66 +-16 44 ++21 2 ++37 1 ++15 1 +-11 1 ++11 1 +-14 1 ++20 1 +-1 2 ++1 1 +-1 1 ++5 1 +-4 6 +-1 5 +cfi=(13) ./elf/./elf/dl-sort-maps.c +cfn=(226) _dl_sort_maps +calls=1 304 +* 1997 ++5 1 ++1 1 ++2 2 +-1 1 ++1 2 ++1 1 ++7 1 ++3 1 ++3 16 +-91 2 +-41 40 +-1 21 ++1 21 +183 7 +547 4 +cfi=(22) +cfn=(52) +calls=1 29 +* 133 +* 2 + +fn=(180) openaux +61 201 ++3 67 +-3 67 ++3 67 ++1 134 +-1 134 ++2 61 +-2 305 +cfi=(29) +cfn=(138) _dl_map_object +calls=61 1971 +* 113465 +* 24 +cfi=(29) +cfn=(138) +calls=6 1971 +* 29061 ++5 67 +-5 67 ++5 201 + +fl=(86) ./elf/../sysdeps/riscv/dl-trampoline.S +fn=(322) _dl_runtime_resolve +34 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++3 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++4 9 ++1 9 ++1 9 ++1 18 ++1 9 +cfi=(87) ./elf/./elf/dl-runtime.c +cfn=(324) _dl_fixup +calls=9 -7 +* 8556 ++1 9 ++3 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++3 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++1 9 ++3 9 ++3 9 + +fl=(13) +fn=(228) dfs_traversal.part.0 +140 120 ++8 15 ++2 15 +-10 15 ++8 30 +-8 30 ++10 15 ++2 28 +-7 14 ++7 14 +-7 206 ++7 256 ++9 15 ++15 15 ++2 30 +-2 30 ++1 15 ++1 117 +cfn=(229) dfs_traversal.part.0'2 +calls=4 -38 +* 374 +* 8 + +fn=(229) +140 56 ++8 7 ++2 7 +-10 7 ++8 14 +-8 14 ++10 7 ++2 12 +-7 6 ++7 6 +-7 57 ++7 68 ++9 7 ++15 7 ++2 14 +-2 14 ++1 7 ++1 58 +cfn=(229) +calls=3 -38 +* 135 +* 6 + +fn=(226) +304 15 ++8 2 +-8 4 ++8 1 ++4 16 +188 1 ++28 1 +-28 1 +-2 1 ++1 1 ++29 1 +-28 8 ++1 1 +-1 2 ++1 3 +-1 1 ++1 21 +-1 42 ++1 63 +-1 21 ++28 5 ++5 2 ++2 1 ++1 2 +-79 1 ++81 1 +-81 2 ++81 65 ++2 22 +-83 111 +cfn=(228) +calls=15 -5 +* 1362 +* 30 ++86 44 ++18 2 ++13 1 ++54 1 +-47 3 +cfi=(22) +cfn=(52) +calls=1 29 +* 133 ++13 3 + +fn=(26) _dl_sort_maps_init +295 1 ++1 3 +-1 1 ++1 1 +cfi=(11) +cfn=(28) +calls=1 408 +* 21 +* 1 ++3 1 +-1 2 +-1 2 ++2 2 + +fl=(38) +fn=(248) allocate_dtv +365 4 ++5 2 +-5 1 ++9 1 +fi=(20) +44 5 +cfi=(21) +cfn=(46) +calls=1 +38 +* 36 +fe=(38) +376 1 ++3 1 ++6 3 ++6 5 + +fn=(242) _dl_tls_static_surplus_init +97 2 ++4 1 +-4 1 ++4 2 +-4 1 ++4 1 +-4 2 ++4 1 +cfi=(11) +cfn=(28) +calls=1 408 +* 22 ++1 1 +-1 1 ++1 3 +cfi=(11) +cfn=(28) +calls=1 408 +* 22 ++6 1 +-6 1 ++6 3 ++2 3 ++7 1 +-34 5 ++35 2 +-35 1 ++34 1 +-2 2 ++2 2 ++1 4 + +fn=(244) _dl_determine_tlsoffset +227 3 +-6 2 ++6 1 ++3 2 ++84 2 ++2 1 +-2 2 +-2 1 +-88 1 +-1 1 +-1 1 ++94 3 ++3 3 +-1 3 ++1 3 +-1 6 ++3 3 ++2 12 ++14 12 ++1 6 ++3 3 ++1 6 ++6 3 +-34 3 ++16 3 +-16 9 ++38 3 ++8 1 +-9 1 ++1 3 ++7 1 +-7 1 ++8 2 + +fn=(246) _dl_allocate_tls_storage +422 1 ++13 2 ++1 1 +-14 1 ++13 1 +-13 2 ++14 1 +-14 1 +fi=(20) +56 4 +cfi=(21) +cfn=(50) +calls=1 -21 +* 56 +fe=(38) +437 1 ++20 4 ++7 2 +-7 1 ++7 2 +cfi=(9) ./string/./string/memset.c +cfn=(18) memset +calls=1 31 +* 331 ++7 1 +-2 1 ++2 1 +cfn=(248) +calls=1 365 +* 59 ++1 1 ++3 6 + +fn=(276) +1015 6 ++9 6 +-9 12 ++6 3 ++3 3 +-9 15 ++14 6 ++34 3 ++7 27 +-4 15 ++1 9 ++3 3 + +fn=(198) _dl_assign_tls_modid +147 6 +-13 3 ++13 3 +-13 3 ++52 3 ++2 6 +-2 3 ++2 3 ++3 6 + +fn=(110) _dl_count_modids +199 4 ++1 2 + +fn=(282) +528 16 ++1 1 ++4 1 ++6 5 +cfi=(16) +cfn=(58) +calls=1 44 +* 2 ++3 5 ++12 1 +-18 1 +-1 1 ++43 1 ++3 1 +-22 8 ++6 4 ++3 3 ++1 3 ++6 9 ++1 4 ++2 1 ++4 1 +-4 3 ++1 1 ++3 1 +-1 1 +-3 2 ++4 2 +-4 6 ++1 2 ++3 2 +-1 2 ++4 3 ++1 9 ++20 3 +-15 3 ++7 3 ++8 3 ++2 9 +cfi=(22) +cfn=(52) +calls=3 29 +* 131 +* 18 +cfi=(9) +cfn=(18) +calls=3 31 +* 137 ++6 6 +-55 12 ++61 5 +cfi=(16) +cfn=(58) +calls=1 44 +* 2 ++3 1 ++3 16 + +fl=(70) +fn=(272) _dl_protect_relro +356 44 ++3 22 +-4 22 ++1 88 ++3 22 +-4 66 ++4 22 +-3 22 ++7 22 ++7 88 +-6 66 +cfi=(73) +cfn=(274) mprotect +calls=22 120 +* 110 +* 22 + +fn=(254) +207 330 ++16 44 +-16 88 ++14 22 ++2 22 ++2 44 ++1 22 +-1 22 ++1 22 ++19 66 ++6 22 +-34 12 ++38 110 ++7 44 +fi=(4) ./elf/../sysdeps/riscv/dl-machine.h ++51 44 ++3 80 ++4 40 ++2 60 ++1 20 ++3 88 +fe=(70) +-25 896 +-83 50 +-28 20 +fi=(4) ++3 10 +fi=(5) ./elf/./elf/do-rel.h +-43 10 +fe=(70) ++40 40 +fi=(5) +49 10 ++4 10 +-3 10 +-1 10 ++4 10 +fe=(70) +301 10 +fi=(5) +48 10 ++1 30 ++1 10 ++30 10 +fe=(70) +218 60 +-28 24 +fi=(4) ++3 12 +fi=(5) +-43 12 +fe=(70) ++40 48 +fi=(5) +49 12 ++4 12 +-3 12 +-1 12 ++4 12 +fe=(70) +301 12 +fi=(5) +48 12 ++1 36 ++1 12 ++30 12 +-31 22 ++4 22 +-3 22 +-1 22 ++4 22 +fe=(70) +301 22 +fi=(5) +48 22 ++1 66 ++1 22 ++30 22 +fi=(4) +282 10 +fi=(5) +83 10 +fi=(4) +278 2073 ++1 2073 +-1 2073 ++4 2073 ++2 4146 +fi=(5) +83 4146 +fe=(70) +301 132 +fi=(5) +51 66 +fe=(70) +304 88 ++24 66 ++3 22 ++17 44 ++1 44 +cfn=(272) +calls=22 +7 +* 616 ++1 352 +-98 44 ++1 20 +fi=(4) ++33 2073 ++1 8292 +fe=(70) ++14 80 +fi=(5) +114 102 ++9 53 +fi=(4) ++39 21 +fi=(5) +-38 21 +-1 21 +fi=(4) ++39 42 ++1 168 +fi=(5) +-39 21 +fi=(4) ++39 168 +fi=(5) +-40 21 +fi=(4) ++39 305867 +fi=(5) +-38 305867 +-1 305867 +fi=(4) ++39 611734 ++1 2446936 +fi=(5) +-39 305867 +fi=(4) ++39 2446936 +fi=(5) +-40 305867 ++3 34 +-73 34 ++73 34 ++3 90 ++2 30 ++2 60 +fi=(4) ++51 40 +-6 20 ++6 20 +fe=(70) ++6 20 +fi=(4) ++3 20 +-15 20 +fe=(70) ++12 20 +fi=(4) ++3 80 +fi=(5) +-60 40 ++2 20 +-2 60 ++1 20 +-1 20 ++1 40 ++2 20 +-2 20 +-1 20 ++1 40 +-1 20 +fe=(70) ++37 20 +fi=(5) +-34 60 +fe=(70) ++34 20 +fi=(5) +-35 20 ++1 20 +fi=(4) ++42 20 +fe=(70) +-8 20 +fi=(5) +-37 65330 ++2 32665 +-2 97995 ++1 32665 +-1 32665 ++1 65330 ++2 32665 +-2 32665 +-1 32665 ++1 65330 +-1 32665 +fe=(70) ++37 32665 +fi=(5) +-34 97995 +fe=(70) ++34 32665 +fi=(5) +-35 32665 ++1 32665 +fi=(4) ++42 32665 +fe=(70) +-8 32665 +fi=(23) +-28 32666 +fe=(70) ++29 32666 +fi=(23) +-29 32666 +fe=(70) ++29 65332 ++3 97998 ++8 16948 +-8 38694 ++8 43182 ++4 19192 +-3 4798 ++1 4798 ++2 9596 ++1 4798 ++1 4798 +-2 48600 +-3 12150 ++1 12150 ++2 24300 ++1 12150 ++1 79942 ++2 101688 +cfi=(71) +cfn=(262) +calls=16948 756 +* 15054557 ++3 16948 +-3 16948 ++4 16948 +-1 16948 +fi=(4) +-10 32666 ++1 32622 ++9 261480 ++7 32650 +fi=(5) +-50 98055 +-19 98095 ++20 19156 +fi=(4) ++64 30 ++2 60 ++1 90 +-8 14 ++1 42 +-6 13 ++1 58 +-22 261147 ++3 130564 +-5 44 ++4 88 +fi=(5) +-29 15718 +fe=(70) ++18 62858 ++2 47154 ++1 15718 ++18 15718 +-19 31436 ++1 31436 +fi=(4) +337 1 +-4 1 ++1 1 ++3 7 +-4 2 ++1 1 ++2 1 ++1 1 +cfi=(71) +cfn=(262) +calls=1 756 +* 1172 ++2 2 +fe=(70) +175 63 +301 30 +fi=(5) +179 4 +fi=(4) ++5 2 +-6 2 ++6 2 +fe=(70) ++6 4 +fi=(4) +-12 4 +fe=(70) ++12 8 +fi=(5) +-9 2 ++1 2 +-1 10 ++1 2 +-1 4 +fi=(4) +-3 2 +fe=(70) +-8 2 +fi=(4) ++8 2 +fe=(70) +-8 4 +fi=(5) ++11 6 ++1 6 +-1 30 ++1 6 +-1 12 +fi=(4) +-3 6 +fe=(70) +-8 6 +fi=(4) ++8 6 +fe=(70) +-8 12 +fi=(23) +-28 8 +fe=(70) ++29 8 +fi=(23) +-29 8 +fe=(70) ++29 16 ++3 24 ++8 8 +-8 16 ++12 32 ++4 16 +-4 8 +-3 8 ++7 8 +-6 8 ++6 40 +cfi=(71) +cfn=(262) +calls=8 756 +* 8497 ++3 8 +-3 8 ++4 8 +-1 8 +fi=(4) +-10 8 +-1 4 ++4 4 ++1 16 ++6 64 ++7 8 +fi=(5) +-5 24 +-16 30 +fi=(4) ++5 28 ++2 4 +-2 4 +fe=(70) + +fl=(35) ./string/./string/strchr.c +fn=(100) index +46 91 +-5 91 ++5 103 ++1 355 +-1 355 ++4 355 +-4 355 ++2 710 +179 2 +71 819 ++61 91 +-14 182 ++14 91 +-11 91 ++11 91 +-8 91 ++8 364 +-14 160 ++14 80 +-11 80 ++11 80 +-8 80 ++8 320 ++8 182 ++2 89 ++2 148 ++2 74 ++2 124 ++2 62 ++2 94 ++2 47 ++4 80 ++2 40 ++2 72 ++2 36 ++2 54 ++2 27 ++2 26 ++2 13 +51 89 +179 89 +35 160 + +fl=(88) ./elf/./elf/dl-init.c +fn=(338) _dl_init +97 9 ++5 2 +-4 1 ++1 1 +-2 3 ++5 1 ++33 1 ++1 5 ++1 5 +-1 1 ++1 2 +cfn=(340) call_init +calls=1 30 +* 76 +* 35 +-1 7 ++1 14 +cfn=(340) +calls=7 30 +* 8662 +-1 7 +-32 1 +cfn=(340) +calls=1 -74 +* 76 ++1 2 ++4 1 ++1 1 ++1 4 ++5 4 ++4 3 ++1 3 ++1 2 +-1 1 ++1 3 +cob=(5) +cfi=(90) +cfn=(348) +calls=1 0 +* 3 +-1 2 + +fn=(340) +30 18 ++6 9 +-8 63 ++8 54 ++2 18 ++6 9 ++14 27 ++4 9 +-18 18 ++14 9 ++1 9 ++3 18 ++5 36 ++12 9 ++1 9 ++6 8 ++2 16 +-2 8 ++2 8 +-2 16 ++3 57 ++1 5 +cob=(3) /usr/lib/riscv64-linux-gnu/libc.so.6 +cfi=(96) ./libio/./libio/vtables.c +cfn=(364) check_stdfiles_vtables +calls=1 -6 +* 15 +* 40 +cob=(11) /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.32 +cfi=(101) ??? +cfn=(390) 0x00000000000a4192 +calls=1 -90 +* 7914 +cob=(10) /usr/lib/riscv64-linux-gnu/libgcc_s.so.1 +cfi=(100) ??? +cfn=(384) 0x000000000000352c +calls=1 -90 +* 12 +cob=(9) +cfi=(99) +cfn=(378) +calls=1 -90 +* 12 +cob=(8) /usr/lib/riscv64-linux-gnu/liblzma.so.5.4.1 +cfi=(98) ??? +cfn=(372) 0x0000000000003a68 +calls=1 -90 +* 12 +cob=(7) /usr/lib/riscv64-linux-gnu/libmd.so.0.0.5 +cfi=(97) ??? +cfn=(366) 0x0000000000001ed8 +calls=1 -90 +* 12 +cob=(3) +cfi=(92) ./csu/./csu/init-first.c +cfn=(356) _init_first +calls=1 -44 +* 260 +cob=(6) /usr/lib/riscv64-linux-gnu/libicudata.so.72.1 +cfi=(91) ??? +cfn=(350) 0x0000000000000428 +calls=1 -90 +* 12 +cob=(4) /usr/libexec/valgrind/vgpreload_core-riscv64-linux.so +cfi=(89) ??? +cfn=(342) 0x0000000000000508 +calls=1 -90 +* 12 +-1 16 ++3 64 + +fl=(15) ./elf/../misc/sbrk.c +fn=(32) sbrk +37 2 ++3 2 +-3 1 ++3 1 +-3 3 ++21 1 ++4 1 ++16 7 + +fl=(40) ./elf/./elf/dl-audit.c +fn=(116) _dl_audit_activity_map +29 2 ++1 2 ++1 1 +-2 7 ++1 1 ++1 1 ++6 10 + +fn=(330) _dl_audit_activity_nsid +46 3 ++5 1 + +fn=(174) _dl_audit_objopen +77 40 ++1 60 +-1 160 ++1 20 ++15 220 + +fl=(74) +fn=(290) _dlfo_sort_mappings +537 2 ++3 3 ++4 1 ++1 1 +-1 1 ++1 1 +-1 19 ++1 19 +-1 19 ++1 59 ++1 20 +-1 20 ++1 210 +-1 190 ++1 220 +-1 420 ++8 60 ++1 80 +-1 60 ++1 80 ++1 80 +-15 40 ++17 1 + +fn=(288) _dlfo_process_initial +474 4 ++1 4 ++3 2 +-4 22 ++4 2 +-1 6 ++1 2 ++26 16 ++7 2 ++8 2 ++2 4 +-16 4 ++3 128 +-2 44 +-1 44 +-1 8 ++27 4 +-2 2 ++2 26 +-20 126 ++2 84 ++3 21 +-1 63 +cfi=(75) +cfn=(286) +calls=21 95 +* 998 ++2 84 + +fn=(284) +564 2 ++2 1 +-5 6 ++5 2 ++13 1 +cfn=(288) +calls=1 474 +* 310 +* 1 +fi=(20) +56 2 +fe=(74) +580 1 +fi=(20) +56 3 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(74) +580 1 +fi=(20) +56 1 +fe=(74) +582 1 ++3 1 ++5 2 ++1 1 +cfn=(288) +calls=1 474 +* 1392 ++3 2 ++10 7 +-37 3 +cfi=(75) +cfn=(286) +calls=1 95 +* 53 +* 3 ++29 2 +cfn=(290) +calls=1 -59 +* 1606 ++3 7 ++2 1 + +fl=(6) +fn=(292) +76 1 ++10 3 +fi=(76) ./elf/../sysdeps/generic/dl-hash.h +-43 1 +fe=(6) ++33 6 ++11 1 +fi=(76) +-42 1 +-1 2 +-1 1 ++5 3 +-3 1 ++17 3 +-17 1 ++3 12 +-3 4 ++17 12 +-17 4 +fe=(6) ++46 1 +fi=(76) +-24 2 +fe=(6) ++24 4 +fi=(76) +-19 1 +fe=(6) ++17 1 ++2 1 +cfn=(296) lookup_malloc_symbol +calls=1 -30 +* 839 +* 1 ++1 5 +cfn=(296) +calls=1 -31 +* 849 +* 1 ++1 5 +cfn=(296) +calls=1 -32 +* 889 +* 1 ++1 4 +-1 1 ++1 1 +cfn=(296) +calls=1 -33 +* 809 ++5 2 ++4 1 +-2 1 ++2 1 +-4 1 ++1 1 ++2 1 ++1 5 + +fn=(10) __rtld_malloc_init_stubs +43 5 ++1 3 ++1 3 ++1 3 ++1 1 + +fn=(296) +61 4 ++3 4 +-3 16 ++3 20 +-3 16 ++2 4 ++1 4 +cfi=(71) +cfn=(262) +calls=4 756 +* 3198 ++4 20 ++1 36 +fi=(77) ./elf/./dl-sym-post.h +-28 12 +fe=(6) ++28 4 ++2 4 +fi=(77) +-30 4 ++12 8 +fe=(6) ++19 32 + +fn=(94) strsep +242 12 ++2 4 ++1 4 ++4 10 ++5 2 +-5 52 ++5 40 ++2 126 +-7 28 ++11 28 +-11 30 ++18 2 ++3 2 ++1 2 + +fl=(29) +fn=(98) +238 4 ++3 4 +-3 24 ++3 4 +cfi=(35) +cfn=(100) +calls=4 46 +* 348 ++4 4 +-1 4 ++20 36 +cfi=(59) +cfn=(179) +calls=1 -36 +* 162068 + +fn=(99) +238 66 ++3 66 +-3 396 ++3 66 +cfi=(35) +cfn=(100) +calls=66 46 +* 4811 ++4 66 +-1 66 ++20 594 +cfi=(59) +cfn=(179) +calls=47 -36 +* 3180762 +-11 2 ++1 2 ++1 2 +-4 1 ++2 3 +cfn=(208) is_dst +calls=1 -51 +* 116 +* 1 ++1 2 +-1 1 ++6 1 +-3 1 ++3 3 +cfi=(35) +cfn=(100) +calls=1 46 +* 52 ++2 2 + +fn=(152) _dl_map_object_from_fd +944 320 ++10 20 +-10 160 ++10 20 +cfi=(37) +cfn=(154) +calls=20 38 +* 140 ++7 60 +-7 20 ++7 20 ++85 60 ++10 100 ++7 140 +cfi=(19) ./elf/./elf/dl-object.c +cfn=(42) _dl_new_object +calls=20 59 +* 11188 +* 20 ++1 20 ++13 40 ++3 20 +-5 20 ++4 20 ++1 20 +-1 40 +-3 20 ++1 20 +-2 20 ++5 40 ++1 40 ++19 20 +-2 20 ++2 120 ++10 20 +-10 20 ++10 20 ++27 20 ++36 20 +-62 20 ++62 20 +-62 20 ++26 20 ++9 20 +-36 20 +-6 20 +-1 20 +-1 20 +-1 20 +-5 20 ++15 20 ++93 20 +-93 60 ++62 100 +-62 144 ++20 2 +-21 268 ++1 577 +1223 40 +1110 20 +1223 40 +1110 20 +1228 100 ++10 20 ++1 20 +-1 80 ++1 20 +-1 80 ++7 20 +1076 20 +1245 20 ++10 80 ++7 120 +fi=(53) ./elf/./dl-map-segments.h +28 20 +fe=(29) +1262 20 +fi=(53) +28 20 ++1 180 +cfi=(54) +cfn=(166) +calls=20 +21 +* 140 ++72 20 ++1 40 +-73 20 ++73 20 ++3 40 ++3 20 +-2 40 ++2 20 ++17 20 ++2 20 +-2 40 +fi=(55) ./elf/./dl-load.h +-34 80 +fi=(53) ++58 120 ++6 20 ++2 20 +-2 20 ++2 20 ++1 20 +-1 20 +-1 20 ++1 50 ++8 20 ++3 60 ++8 140 +cfi=(9) +cfn=(18) +calls=20 31 +* 4198 +* 60 ++6 20 ++12 40 +-59 200 ++2 60 ++2 200 +cfi=(54) +cfn=(166) +calls=20 -89 +* 140 +* 60 +fe=(29) +1111 61 ++26 200 ++10 40 ++4 40 +-2 80 +-2 200 +-1 40 ++1 40 ++2 40 ++2 40 +-2 40 +-3 40 ++1 40 ++1 40 ++3 40 +-6 40 ++6 100 ++2 100 ++13 20 +-13 100 ++13 60 ++7 40 +-1 80 ++1 120 +-1 40 ++1 80 +-1 40 +-27 40 ++38 40 +-66 40 ++9 40 +-1 20 ++1 40 +-2 20 ++2 60 +-1 20 ++1 20 +-2 20 ++1 20 ++1 40 ++60 6 ++4 3 ++1 6 +-67 3 ++68 3 ++3 9 ++1 3 ++8 3 +-5 3 +-3 3 ++8 6 ++15 20 ++1 20 +fi=(49) ./elf/../sysdeps/posix/dl-fileid.h +37 60 +cfi=(50) +cfn=(158) +calls=20 -8 +* 260 +* 20 +fe=(29) +999 140 +fi=(49) +40 20 ++1 20 +fe=(29) +999 40 +fi=(49) +40 20 ++1 20 +fe=(29) +999 480 ++1 690 +fi=(49) +49 840 +fe=(29) +1525 340 +1278 60 ++1 60 +fi=(56) ./elf/./elf/get-dynamic-info.h +39 20 ++6 20 +-2 20 ++2 20 ++9 20 +-5 20 ++5 40 ++2 20 ++3 40 +-1 20 +-3 20 +-6 519 ++5 268 ++1 114 ++13 342 +-23 342 ++23 1215 +-23 1215 ++65 40 ++5 54 ++7 40 ++1 80 ++6 40 ++18 40 ++5 24 ++2 24 ++1 2 ++1 24 ++2 24 ++4 40 ++2 24 ++1 24 ++9 36 ++6 24 ++4 40 ++2 1 +fe=(29) +1285 1 ++5 2 +-5 20 ++5 38 +-5 19 ++2 20 ++11 40 ++19 60 ++2 140 ++52 40 ++1 9 ++6 6 ++1 3 +-1 12 ++1 3 +-1 37 ++1 17 +-1 68 ++1 17 +-1 171 ++1 154 ++6 154 +-6 154 ++11 40 +cfi=(57) ./io/../sysdeps/unix/sysv/linux/close_nocancel.c +cfn=(172) __GI___close_nocancel +calls=20 26 +* 120 +* 20 ++13 40 ++2 40 ++2 20 +-2 40 ++2 40 ++16 40 +cfi=(7) +cfn=(12) +calls=20 28 +* 660 ++4 40 ++1 40 ++17 60 ++1 1 ++3 4 ++5 2 +-5 76 ++5 38 ++10 40 ++7 200 ++10 40 ++1 12 ++5 6 +cfi=(38) +cfn=(198) +calls=3 147 +* 36 ++7 60 +cfi=(19) +cfn=(56) _dl_add_to_namespace_list +calls=20 31 +* 1610 ++3 60 ++23 220 ++1 60 +cfi=(40) +cfn=(174) +calls=20 77 +* 500 +* 20 +fi=(55) +92 76 ++2 19 +-1 38 ++1 38 +-1 19 ++1 19 +-1 19 ++1 19 +-1 19 ++3 76 +fi=(56) +-40 60 +fe=(29) +1018 40 +fi=(56) +59 40 +fe=(29) +1516 40 +fi=(56) +62 80 ++2 60 +181 30 +-15 6 +-7 20 +fi=(53) ++27 80 +cfi=(54) +cfn=(166) +calls=10 50 +* 70 ++3 30 +fe=(29) +1472 14 ++1 6 ++1 18 +-1 12 ++1 6 +-1 12 +cfi=(24) +cfn=(60) +calls=6 38 +* 197 +* 6 ++2 2 +1285 16 +1429 8 ++4 2 ++5 2 +-1 2 +-4 2 ++5 2 +-4 4 ++3 4 +cfi=(67) ./string/./string/memmove.c +cfn=(220) memmove +calls=2 44 +* 116 ++4 8 + +fn=(96) expand_dynamic_string_token +385 9 ++10 3 +-10 15 ++10 3 +cfn=(99) +calls=1 238 +* 236 +cfn=(98) +calls=2 238 +* 215 ++3 3 ++1 2 ++11 12 +-11 2 +cfi=(36) +cfn=(102) +calls=2 40 +* 417 +* 1 ++3 2 +cfi=(34) +cfn=(90) +calls=1 39 +* 40 +* 7 +cfi=(34) +cfn=(90) +calls=1 39 +* 49 +* 9 ++3 1 +fi=(20) +56 4 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 1 +fe=(29) +406 1 ++3 1 ++1 4 +-1 1 ++1 2 +-1 1 +cfn=(214) _dl_dst_substitute +calls=1 276 +* 384 + +fn=(208) +202 6 ++13 2 +-13 8 ++13 2 +cfi=(34) +cfn=(90) +calls=2 39 +* 62 +-9 4 ++9 2 +-9 2 ++10 8 +cfi=(65) ./string/./string/strncmp.c +cfn=(210) strncmp +calls=2 37 +* 90 +* 2 ++13 14 +-11 12 ++1 6 ++1 8 ++1 4 + +fn=(214) +276 11 ++13 1 +-13 3 ++13 2 +-4 1 ++4 1 ++6 3 ++56 14 ++3 14 +-60 8 +-5 8 ++6 3 +cfn=(208) +calls=1 -93 +* 116 +* 2 ++22 3 ++5 2 ++10 3 ++2 2 +cfi=(66) ./string/./string/stpcpy.c +cfn=(216) stpcpy +calls=1 35 +* 168 ++1 1 ++19 1 +-20 1 ++20 1 ++11 1 ++7 1 ++3 13 + +fn=(182) open_path +1819 336 ++1 21 +-1 42 ++1 21 +-1 42 ++7 21 ++5 147 +-7 42 ++7 105 ++70 42 +-70 21 +-8 63 ++31 21 +-3 21 ++50 84 +-67 84 ++9 21 ++7 105 +cfi=(22) +cfn=(52) +calls=21 29 +* 2074 +* 21 +-12 21 ++13 21 +-1 21 ++1 52 ++3 84 ++5 168 +cfi=(22) +cfn=(52) +calls=24 29 +* 636 +* 120 +cfi=(22) +cfn=(52) +calls=24 29 +* 2161 ++9 24 +-9 24 ++3 24 ++6 48 ++3 168 +cfn=(144) open_verify.constprop.0 +calls=24 1578 +* 1817 ++2 24 +-2 24 ++2 24 ++2 6 ++1 2 ++25 2 +fi=(20) +56 7 +cfi=(21) +cfn=(51) +calls=1 -21 +* 26 +fe=(29) +1926 1 ++1 1 ++2 3 +cfi=(22) +cfn=(52) +calls=1 29 +* 71 ++35 357 +1851 144 ++89 96 ++7 80 +-2 60 ++2 20 ++3 40 +1829 38 ++70 72 ++2 18 +-21 10 ++1 55 ++6 15 ++2 15 +cfi=(60) ./gmon/../sysdeps/unix/sysv/linux/prof-freq.c +cfn=(184) stat +calls=5 28 +* 72 ++3 5 +-3 9 +-38 12 ++39 5 ++4 3 +-43 3 +1954 2 +fi=(20) +50 4 +cfi=(21) +cfn=(106) +calls=1 +45 +* 13 +fe=(29) +1959 6 ++1 2 +1829 2 + +fn=(92) fillin_rpath.isra.0 +468 40 ++4 4 ++37 4 +fi=(20) +50 4 +fe=(29) +532 4 +-32 2 +-26 6 +cfi=(6) +cfn=(94) +calls=2 242 +* 330 +* 6 +cfi=(6) +cfn=(94) +calls=2 242 +* 12 +* 8 ++7 4 ++2 6 +cfn=(96) +calls=2 -98 +* 1063 +* 2 ++4 2 ++5 2 +cfi=(34) +cfn=(90) +calls=2 39 +* 96 +* 2 ++8 2 +-7 2 ++78 4 ++3 4 +-3 2 ++3 26 +-74 10 ++5 4 ++4 2 +-4 4 ++4 2 ++19 8 +cfi=(34) +cfn=(90) +calls=1 39 +* 67 +* 2 ++4 1 +fi=(20) +56 3 +fe=(29) +532 1 +fi=(20) +56 1 +fe=(29) +532 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +532 1 +fi=(20) +56 3 +fe=(29) +532 1 +fi=(20) +56 1 +fe=(29) +532 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 2 +fe=(29) +534 2 ++5 2 ++1 4 +-1 6 +-1 2 ++2 2 +cfi=(22) +cfn=(52) +calls=2 29 +* 194 ++3 4 +-3 2 ++3 2 +-3 2 ++1 2 ++2 2 ++1 1 ++5 1 ++1 1 +-1 3 ++1 1 +-1 1 ++1 1 +-1 3 ++1 5 ++1 2 +-1 6 ++1 2 +-1 6 ++3 4 ++1 4 ++2 3 +-1 4 +cfi=(22) +cfn=(52) +calls=1 29 +* 125 ++6 2 ++4 2 +-10 2 ++6 2 ++1 2 ++3 8 +-56 18 ++1 18 +fi=(20) +50 6 +cfi=(21) +cfn=(106) +calls=2 +45 +* 26 ++1 2 +fe=(29) +522 2 + +fn=(144) +1578 559 ++32 86 +-32 172 ++32 43 ++19 129 +cfi=(47) ./io/../sysdeps/unix/sysv/linux/open64_nocancel.c +cfn=(146) __open_nocancel +calls=43 28 +* 1144 ++2 43 +-2 43 ++2 43 ++8 40 ++1 20 ++5 60 ++6 20 +-6 80 +cfi=(48) ./io/../sysdeps/unix/sysv/linux/read_nocancel.c +cfn=(148) __read_nocancel +calls=20 26 +* 100 ++2 20 ++2 60 ++2 20 ++6 40 ++17 89 +-59 46 ++59 140 +cfi=(18) +cfn=(40) +calls=20 309 +* 1140 +* 40 ++81 60 +fi=(4) +61 60 ++7 80 +fe=(29) +1766 100 ++6 60 ++6 20 ++1 20 +-1 60 ++1 40 ++26 645 + +fn=(204) decompose_rpath +580 8 ++11 2 +-9 1 +-2 3 ++11 1 ++31 2 ++7 2 +cfi=(36) +cfn=(102) +calls=1 40 +* 202 +* 1 ++1 1 ++8 3 +-1 1 ++1 1 ++2 1 +-2 1 ++2 2 +-2 14 ++2 13 +-2 13 ++2 26 +-2 13 ++6 2 +fi=(20) +56 3 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 1 +fe=(29) +646 1 ++8 8 +cfn=(92) +calls=1 468 +* 1480 +fi=(20) +50 5 +cfi=(21) +cfn=(106) +calls=1 +45 +* 13 +fe=(29) +661 2 ++9 1 +-2 1 ++2 1 ++1 1 ++1 9 + +fn=(138) +1971 952 ++8 68 ++1 476 ++3 1732 ++5 3240 ++2 1620 +cfi=(46) +cfn=(140) _dl_name_match_p +calls=540 68 +* 33240 +* 540 ++4 1968 ++1 984 ++3 373 ++1 1119 ++1 373 +-1 746 ++1 746 +cfi=(24) +cfn=(60) +calls=373 38 +* 9224 +* 373 +2274 1088 +2013 60 ++2 60 +-2 40 ++10 20 +-50 20 ++50 20 ++17 40 +-2 20 ++2 20 +cfi=(35) +cfn=(100) +calls=20 46 +* 1332 +* 20 +2206 1 +-1 3 +cfn=(96) +calls=1 385 +* 388 +-1 1 ++1 1 ++2 2 ++4 8 +cfn=(144) +calls=1 1578 +* 184 ++3 1 +-3 1 ++3 1 ++12 5 ++46 4 +-1 2 ++1 6 +-1 1 ++1 1 +cfn=(152) +calls=1 944 +* 1630 +* 76 +-1 38 ++1 114 +-1 19 ++1 19 +cfn=(152) +calls=19 944 +* 36539 +* 40 +2044 38 +cfi=(34) +cfn=(90) +calls=19 39 +* 974 ++2 19 +-2 38 ++2 38 ++7 57 ++50 40 ++1 266 +cfn=(182) +calls=19 1819 +* 8397 ++6 19 +-6 19 ++6 19 +2226 90 +682 57 +2111 5 +685 5 +2113 13 +cfn=(182) +calls=1 1819 +* 769 ++4 1 +-4 1 ++4 1 +-39 44 +682 44 +2079 11 +682 11 +2057 11 ++8 11 +-7 11 ++7 77 +682 11 +2065 66 +-3 46 +682 23 +2063 23 +682 23 ++3 5 ++3 10 ++3 5 ++1 71 +2077 11 ++1 11 ++10 11 ++15 55 ++1 11 ++72 162 +cfn=(144) +calls=18 1578 +* 3321 ++4 36 +-4 18 ++4 18 ++18 18 +-17 18 ++17 54 ++28 1 ++2 1 +-2 3 ++2 1 +688 10 ++8 1 ++1 3 +-1 3 ++1 1 +-1 3 +cfn=(204) +calls=1 580 +* 1865 +2111 1 ++22 15 +-14 15 ++14 30 ++2 38 ++4 38 +cfi=(61) +cfn=(186) +calls=19 413 +* 27200 +* 19 ++2 19 ++12 90 +-20 4 +691 4 +2119 4 ++14 8 ++20 1 ++39 4 ++1 3 ++1 13 +cfn=(182) +calls=1 1819 +* 906 ++4 2 +-4 1 ++4 2 + +fn=(72) _dl_init_paths +706 17 ++14 2 +-14 2 ++14 5 +fi=(20) +56 2 +fe=(29) +706 2 ++14 1 +cfi=(30) ./elf/./elf/dl-hwcaps.c +cfn=(74) _dl_important_hwcaps +calls=1 175 +* 529 +fi=(20) +56 1 +fe=(29) +720 1 +fi=(20) +56 1 +fe=(29) +720 1 +fi=(20) +56 1 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +725 1 ++2 1 ++8 1 +-1 1 +fi=(20) +56 1 +fe=(29) +735 2 +-1 1 +fi=(20) +56 1 +fe=(29) +739 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +741 1 +-2 1 ++2 2 ++7 2 +-1 2 ++20 1 +-6 2 +-5 1 ++5 1 ++1 1 +-4 2 ++4 1 ++6 1 +-12 1 ++2 1 ++1 1 ++11 4 +-2 1 +-5 2 ++4 4 ++1 16 +cfi=(9) +cfn=(18) +calls=4 31 +* 108 ++2 4 +-8 3 ++8 6 +-14 3 ++6 3 +-4 3 ++1 3 ++2 3 ++5 3 +-3 6 ++3 3 +-10 3 ++10 6 +-3 3 ++9 6 +-2 1 ++6 1 ++1 1 +-1 2 ++6 2 ++2 1 ++3 4 ++2 2 ++36 4 ++32 16 +-30 3 +cfi=(34) +cfn=(90) +calls=1 39 +* 40 +* 7 +cfi=(22) +cfn=(52) +calls=1 29 +* 99 ++5 1 +-5 1 ++5 2 +-1 1 ++2 3 ++1 2 +-2 1 ++2 2 +-2 1 ++2 1 +-2 1 ++1 26 ++1 26 +-2 13 ++2 26 +-2 13 ++2 13 +-2 13 ++5 2 +fi=(20) +56 2 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(29) +836 1 +fi=(20) +56 1 +fe=(29) +838 1 ++6 7 +cfn=(92) +calls=1 468 +* 819 ++3 3 ++6 2 +-27 1 +-18 1 +-2 2 ++2 1 ++14 2 + +fl=(67) +fn=(220) +44 12 ++6 2 +-6 2 ++6 2 ++61 16 +-21 2 +-4 2 ++1 2 ++3 2 ++3 4 ++1 2 ++7 12 ++6 2 +-6 2 +cfi=(42) +cfn=(222) +calls=2 234 +* 46 +* 2 +-15 4 + +fl=(87) +fn=(324) +54 9 +-8 9 ++2 9 ++7 9 +-9 9 ++9 36 ++1 9 +-8 9 +-2 9 ++10 9 +-8 9 +-2 9 ++3 9 ++7 27 +-7 9 +-3 9 ++2 9 ++10 9 +-2 9 ++7 9 +-17 18 ++10 9 ++7 18 +-14 9 ++9 9 ++5 9 ++4 27 ++4 18 ++4 18 ++1 9 +-1 27 ++1 45 ++1 9 +-8 27 ++16 9 +-1 9 ++1 9 ++10 72 +cfi=(71) +cfn=(262) +calls=9 756 +* 7674 ++4 9 +-4 9 ++4 9 ++10 108 ++15 54 ++9 18 ++29 9 +-3 18 +fi=(4) +-11 9 +fe=(87) ++15 63 + +fl=(65) +fn=(210) +37 4 ++2 6 ++5 2 ++2 2 ++1 2 ++1 4 ++2 2 ++4 2 ++1 2 +-4 2 ++1 4 ++2 2 ++1 2 ++1 4 ++2 2 +-16 2 ++1 2 ++1 2 ++18 6 ++4 4 +-4 4 ++2 4 ++1 4 +-1 4 ++1 4 ++1 4 ++5 2 ++1 2 +-13 4 + +fl=(41) ./string/./string/strcspn.c +fn=(120) strcspn +32 3 ++1 1 +-1 1 ++1 1 ++1 2 ++5 2 ++1 1 ++1 1 ++1 1 +-3 7 ++8 1 +-7 7 ++1 7 ++1 7 ++5 4 ++1 1 +-1 8 ++1 2 ++3 5 ++1 5 ++1 5 ++1 5 ++2 1 ++6 1 ++2 1 +-1 1 ++2 1 +-3 1 ++2 1 +-1 1 ++2 1 +-3 1 ++2 2 ++3 1 +-6 1 ++6 4 +-5 12 ++2 12 +-1 12 ++2 12 +-3 12 ++2 12 +-1 12 ++2 12 +-3 12 ++2 24 ++3 12 +-6 12 ++6 48 ++2 1 ++1 1 ++1 2 +-1 2 ++1 2 + +fl=(60) +fn=(184) +28 5 +fi=(50) ++1 20 +cfi=(52) +cfn=(162) +calls=5 +70 +* 47 +fe=(60) + +fl=(1) ??? +fn=(0) (below main) +0 2 +cfi=(2) +cfn=(2) _dl_start +calls=1 519 +0 25203447 + +fl=(57) +fn=(172) +26 126 + +fl=(11) +fn=(22) __GI___tunables_init +282 2 +-9 3 ++9 13 +-9 1 +151 2 +307 4 +77 1 +305 1 ++2 2 +71 1 +307 33 +71 101 ++6 1828 ++9 33 +-15 33 ++15 66 +fi=(12) ./elf/./elf/dl-tunables.h ++54 66 ++1 43 +-1 192 +fe=(11) ++91 66 ++74 2871 ++6 4125 +71 297 +fi=(12) ++69 961 ++1 332 +-1 140 +fe=(11) +357 15 + +fn=(28) +408 260 ++9 26 +-9 52 ++9 3 ++17 156 ++2 26 +-9 23 ++1 23 + +fl=(47) +fn=(146) +28 132 ++3 44 +-3 264 ++3 264 ++8 285 ++2 42 +-2 69 ++2 69 + +fl=(9) +fn=(18) +31 29 +-2 29 ++2 29 ++5 29 ++5 58 ++4 87 ++2 4 ++1 4 +-3 9 ++4 1 ++4 1 ++1 1 +-1 28 ++1 76 ++2 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 ++1 16 +-10 16 ++2 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 ++1 369 +-10 401 ++16 32 ++1 16 +-1 26 ++1 91 ++2 26 ++1 26 +-3 26 ++2 56 ++1 56 +-3 108 ++6 26 +-41 52 ++45 26 +-4 3 +-41 6 ++45 3 ++8 29 + +fl=(22) +fn=(52) +29 1212 ++7 202 +-7 202 ++1 202 ++1 202 ++5 202 ++3 333 ++1 117 +-9 6 ++9 76 ++11 641 +cfi=(42) +cfn=(142) +calls=86 -14 +* 2638 +* 444 ++6 6705 ++3 1616 +-9 25 +cfi=(42) +cfn=(122) +calls=25 +99 +* 1070 +* 25 +-21 210 + +fl=(24) +fn=(60) +38 19978 ++1 19978 +-1 19978 ++1 19978 ++1 19978 ++3 19978 +cfn=(61) strcmp'2 +calls=18445 -5 +* 1058835 ++2 1533 ++1 1533 + +fn=(61) +38 173193 ++1 173193 +-1 173193 ++1 173193 ++1 173193 ++3 155980 +cfn=(61) +calls=154748 -5 +* 6853284 ++2 1232 ++1 1232 +-5 34426 + +fl=(68) ./elf/./elf/dl-version.c +fn=(234) _dl_check_all_versions +392 7 ++4 4 +-2 1 ++3 24 ++1 132 +cfn=(236) _dl_check_map_versions +calls=22 170 +* 90919 +-2 22 ++2 22 +-1 44 +-1 22 ++5 9 + +fn=(236) +170 22 +-15 308 ++15 22 ++2 44 ++2 22 ++1 44 +-3 22 ++5 22 ++3 19 ++4 19 +-28 19 ++24 19 ++4 19 +-20 19 ++20 19 ++40 38 ++7 19 +-7 19 ++7 114 +36 19 +200 19 +36 133 +200 38 +36 61 +200 42 +36 294 +200 84 +36 42 ++1 603 +-1 603 ++2 1992 +cfi=(46) +cfn=(140) +calls=664 +30 +* 38133 +* 664 +204 61 ++4 61 ++5 61 +94 122 +213 61 +94 244 +218 61 +-1 122 ++1 61 +-1 61 ++1 151 +-1 180 ++1 90 +-1 90 ++1 336 +64 453 +-8 151 +221 151 +56 302 ++8 151 +221 151 +-3 151 +56 151 ++8 151 ++6 302 ++16 151 ++1 151 ++2 302 ++5 302 ++14 3542 ++12 3240 ++4 4860 +-30 3240 +231 723 ++3 453 ++5 270 +-24 90 +110 151 ++3 755 +cfi=(24) +cfn=(60) +calls=151 -75 +* 11233 +* 151 +224 453 +-6 244 ++25 122 ++5 126 +-50 42 ++59 57 ++3 42 ++3 70 +-3 2 ++3 19 ++3 45 +-3 30 ++7 45 +-7 60 ++7 558 +-7 941 ++3 603 ++8 15 ++6 20 +fi=(20) +44 120 +cfi=(21) +cfn=(46) +calls=20 +38 +* 748 +fe=(68) +279 20 ++1 20 ++1 20 ++13 40 +-3 20 ++3 60 ++2 20 ++3 19 ++7 38 +-7 19 ++12 19 +-8 183 ++18 270 +-15 90 ++2 90 +-2 90 ++2 90 +-2 61 ++2 61 +-2 61 ++2 61 ++4 151 ++1 151 +-3 755 ++1 151 ++1 151 ++1 151 +-3 151 ++1 151 ++1 151 ++1 151 ++3 302 ++8 122 ++5 126 +-28 42 ++33 19 ++3 15 ++10 30 +-10 30 ++20 603 +-14 648 +-2 201 ++6 201 ++1 201 +-7 402 ++7 201 ++1 402 +-1 804 ++1 201 +-1 201 ++1 201 ++1 201 ++3 432 ++12 15 ++1 38 ++1 38 ++20 352 +156 3 ++8 3 ++93 5 ++17 5 ++60 1 + +fl=(44) +fn=(230) +238 2 ++1 2 +-1 2 ++2 1 +-1 1 +-1 2 ++8 1 +-3 1 ++1 1 ++2 1 +cfi=(2) +cfn=(232) version_check_doit +calls=1 678 +* 91220 ++4 1 +-2 1 ++1 1 ++1 5 + +fn=(128) _dl_catch_error +225 7 ++2 3 +-2 1 ++2 1 +cfn=(132) +calls=1 -52 +* 2577 +* 17 +fi=(2) +822 2 ++8 1 ++6 2 +-6 1 ++6 3 +-6 1 ++6 2 +fe=(44) + +fn=(132) +175 136 ++5 204 +-5 136 ++5 68 +-5 136 ++3 68 ++21 68 ++7 136 +-7 68 ++1 136 ++3 136 ++3 68 +cfi=(45) +cfn=(134) +calls=68 31 +* 1904 +* 68 ++2 204 +cfi=(59) +cfn=(180) +calls=67 61 +* 143921 +cfi=(2) +cfn=(136) map_doit +calls=1 645 +* 2513 ++1 204 ++1 272 +-25 68 ++34 272 + +fl=(46) +fn=(188) +36 3 ++3 1 +-3 4 ++3 1 +cfi=(47) +cfn=(146) +calls=1 -11 +* 25 ++1 1 ++2 3 +cfi=(50) +cfn=(158) +calls=1 -13 +* 13 +* 1 ++2 2 ++3 1 ++13 2 +cfi=(57) +cfn=(172) +calls=1 -34 +* 6 ++3 7 +-14 6 +cfi=(54) +cfn=(166) +calls=1 +1 +* 7 +* 2 + +fn=(280) +125 4 +-1 4 ++3 2 ++3 20 +-1 56 +-2 7 ++2 35 +-2 5 ++19 4 +-15 6 + +fn=(140) +68 3612 ++1 1204 +-1 3612 ++1 1204 +cfi=(24) +cfn=(60) +calls=1204 -31 +* 9638 +* 1204 ++3 1204 ++2 1204 ++6 2364 +-6 1182 ++1 3873 +cfi=(24) +cfn=(60) +calls=1291 -37 +* 32557 +* 1291 ++8 327 +-13 109 ++13 3503 +-1 1095 ++1 2190 + +fl=(48) +fn=(148) +26 80 ++1 20 + +fl=(52) +fn=(162) +99 52 ++70 100 ++1 22 +-2 12 ++1 8 + +fl=(30) +fn=(74) +175 15 ++1 1 +-1 3 ++1 3 +-1 5 ++1 1 +cfi=(11) +cfn=(28) +calls=1 408 +* 22 ++2 3 ++1 1 +-1 1 ++10 2 +-10 1 ++1 2 ++8 1 +cfi=(31) +cfn=(76) +calls=1 29 +* 2 +* 2 +fi=(33) ./elf/./dl-hwcaps.h +-99 1 +-34 1 ++2 1 ++32 1 ++1 1 +fe=(30) ++99 1 +fi=(33) +-98 1 +fe=(30) +-35 2 +cfi=(32) ./elf/./elf/dl-hwcaps_split.c +cfn=(78) _dl_hwcaps_split_masked +calls=1 -4 +* 23 +* 1 +fi=(33) ++33 1 +-34 3 ++34 1 ++1 1 +-33 1 ++33 1 ++1 1 +fe=(30) +-35 2 +cfi=(32) +cfn=(78) +calls=1 -4 +* 31 +* 1 +fi=(20) ++1 4 +fe=(30) ++47 2 +fi=(20) +-47 1 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +fe=(30) ++47 1 ++2 1 +fi=(33) +-51 1 +fe=(30) ++64 1 +-10 1 +fi=(33) +-54 1 ++2 1 +fe=(30) ++55 1 ++7 1 +fi=(33) +-61 1 +fe=(30) ++58 2 +cfi=(32) +cfn=(80) _dl_hwcaps_split +calls=1 -90 +* 12 +* 1 +fi=(33) +-27 1 +fe=(30) ++43 1 +fi=(33) +-77 1 ++34 1 ++1 1 +-33 1 +fe=(30) ++75 1 +fi=(33) +-42 1 ++1 1 +fe=(30) ++38 2 +cfi=(32) +cfn=(78) +calls=1 -77 +* 31 +* 1 ++8 1 ++9 6 ++54 2 +-1 1 ++1 1 +-1 1 ++1 1 ++4 1 ++5 2 ++20 4 ++1 1 ++9 4 ++7 5 ++1 2 ++3 2 ++4 1 ++1 1 +-1 1 ++21 4 +fi=(20) +56 3 +fe=(30) +274 1 ++7 2 +fi=(20) +56 1 +fe=(30) +274 2 +fi=(20) +56 1 +cfi=(21) +cfn=(50) +calls=1 -21 +* 26 +* 2 +fe=(30) +282 1 ++8 1 ++1 2 +-1 3 ++1 2 +-2 1 ++2 1 +cfn=(86) copy_hwcaps +calls=1 77 +* 51 ++1 6 +cfn=(86) +calls=1 77 +* 59 ++11 1 +-8 1 ++1 1 ++7 1 ++8 3 ++62 1 +-59 1 ++86 1 +-86 1 ++86 16 +254 3 ++55 1 +-3 2 +-1 1 ++2 1 ++1 1 ++1 2 +cfi=(22) +cfn=(52) +calls=1 29 +* 39 +* 1 ++1 3 + +fn=(86) +77 14 +fi=(33) +-23 2 ++2 2 ++32 2 ++1 4 +fe=(30) +-6 4 ++4 2 +fi=(33) ++3 2 +fe=(30) +-10 4 +cfi=(32) +cfn=(78) +calls=2 -29 +* 54 ++3 4 +-3 2 ++13 14 + +fl=(73) +fn=(334) +120 4 ++2 1 + +fn=(274) +120 88 ++2 22 + +fl=(80) +fn=(306) +29 1 +-2 1 ++6 2 +-6 1 ++6 7 +-6 3 ++6 1 +cfi=(79) +cfn=(302) +calls=1 +41 +* 311 ++4 1 ++2 6 ++2 2 +-1 1 ++1 1 +-2 1 ++2 1 +-1 1 +cob=(3) +cfi=(81) ./elf/./elf/libc_early_init.c +cfn=(308) __libc_early_init +calls=1 -7 +* 1747 + +fl=(2) +fn=(124) do_preload +809 6 ++12 2 +-4 1 +-8 1 ++10 2 ++2 4 +-12 2 ++10 1 +-8 1 ++4 1 ++1 1 ++1 1 ++4 1 +cfi=(44) +cfn=(128) +calls=1 225 +* 2618 +* 3 ++76 1 +-18 2 ++21 17 + +fn=(2) +0 11 +fi=(1) +cfi=(88) +cfn=(338) +calls=1 97 +0 8938 +519 15 ++26 2 ++4 1 +-1 2 +fi=(3) ./elf/./get-dynamic-info.h +45 1 +fe=(2) +549 1 +fi=(4) +83 2 +fe=(2) +549 1 +-4 1 ++3 1 +-29 1 +fi=(3) +45 1 ++9 1 +-5 1 ++19 2 +-14 2 ++2 1 ++3 2 +-1 1 +-3 1 +-6 17 ++5 10 ++1 4 ++13 12 +-23 12 ++23 39 +-23 39 ++65 2 ++5 3 ++7 2 ++1 4 ++6 2 ++4 2 ++1 2 ++5 2 ++3 2 +fe=(2) +553 2 ++12 34 +fi=(4) +178 1 ++6 3 +-6 1 ++6 1 +fi=(5) +49 1 ++4 1 +fe=(2) +565 1 +fi=(5) +49 1 ++1 1 ++3 1 +-4 3 ++1 1 ++3 1 ++3 1 +-7 1 ++4 1 +fe=(2) +565 1 +fi=(5) +49 1 ++1 1 ++3 1 +-4 3 ++1 1 ++3 1 ++3 1 +fi=(4) +162 12 +fi=(5) +57 12 +-1 12 +fi=(4) +162 12 +fi=(5) +57 12 +fi=(4) +162 60 ++1 24 +-1 12 ++1 96 +fi=(5) +56 12 +fi=(4) +187 2 ++6 4 +fi=(5) +61 2 ++2 5 ++2 5 +fi=(4) +184 5 +fi=(5) +63 5 ++1 20 ++1 5 +fi=(4) +178 5 ++6 45 ++3 5 ++6 5 +fi=(5) +61 10 +fe=(2) +565 6 +fi=(5) +51 2 +fi=(3) ++5 3 ++3 2 +fe=(2) +565 3 +fi=(4) +193 7 ++7 5 ++1 5 +fe=(2) +567 1 +460 2 +567 2 ++13 1 +cfi=(6) +cfn=(10) +calls=1 43 +* 15 +460 2 ++18 2 +-18 1 ++18 1 +cfi=(7) +cfn=(12) +calls=1 28 +* 33 ++18 1 +-17 3 ++17 2 +-15 3 +-1 1 ++10 2 ++6 1 +cfi=(8) ./elf/../sysdeps/unix/sysv/linux/dl-sysdep.c +cfn=(14) _dl_sysdep_start +calls=1 102 +* 25193731 +fi=(3) +62 4 ++2 3 +fe=(2) +565 4 ++18 3 + +fn=(118) handle_preload_list +874 12 ++5 1 +-5 3 ++5 1 ++10 1 +-6 1 ++6 2 +-6 4 +-8 3 ++7 2 +190 2 +896 2 ++1 4 +cfn=(124) +calls=1 -88 +* 2665 +-15 3 +cfi=(41) +cfn=(120) +calls=1 32 +* 307 ++1 1 +-1 1 ++1 1 ++2 4 +cfi=(22) +cfn=(52) +calls=1 29 +* 126 ++1 1 ++6 1 +-6 1 ++7 1 +182 1 +894 2 +182 1 +1858 2 ++16 6 +cfi=(58) +cfn=(176) +calls=1 25 +* 13 +* 3 ++76 3 ++16 2 ++10 10 +cfi=(59) +cfn=(178) +calls=1 144 +* 25174834 +-22 7 ++1 1 ++3 5 ++1 1 +-1 1 ++2 1 +-6 1 ++7 1 +1853 4 + +fn=(136) +645 1 +-2 2 ++3 1 +-3 1 ++2 1 ++1 1 +-1 1 ++1 3 +-3 1 ++3 1 +cfi=(29) +cfn=(138) +calls=1 1971 +* 2495 ++2 1 +-2 1 ++2 3 + +fn=(34) dl_main +fi=(8) +143 7 +fe=(2) +1351 19 +196 1 ++1 1 ++1 1 ++97 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 +1362 1 +cfi=(16) +cfn=(36) +calls=1 56 +* 21 +2552 3 ++6 3 +-6 1 ++6 8 +-4 2 ++10 1 ++9 3 +-13 2 +cfi=(17) +cfn=(38) +calls=1 29 +* 38 +* 4 +cfi=(17) +cfn=(38) +calls=2 29 +* 168 +* 6 ++4 2 +-2 2 ++2 4 ++1 19 +-1 76 ++9 14 +2691 3 ++25 2 +1378 3 ++1 1 +-1 1 ++1 3 +-1 1 ++1 1 +2649 1 ++1 1 +-1 1 ++1 4 +cfi=(18) +cfn=(40) +calls=1 309 +* 92 +* 2 +-56 5 +cfi=(18) +cfn=(40) +calls=1 309 +* 14 +* 2 +1648 9 +cfi=(19) +cfn=(42) +calls=1 59 +* 290 ++2 2 ++3 1 +-1 1 ++5 1 +-4 1 +-2 1 ++1 1 ++1 1 ++5 5 +-5 1 ++4 1 +cfi=(19) +cfn=(56) +calls=1 31 +* 46 ++1 4 +1121 1 +-1 3 +1356 2 +1129 1 ++1 1 ++18 2 +-19 1 ++1 1 ++18 1 +-21 1 +-2 1 ++2 1 ++2 1 ++1 1 ++18 2 ++57 1 +-34 1 +-22 1 ++56 1 +-56 1 +-1 2 +-25 1 ++22 1 ++4 4 ++19 2 ++3 2 +-22 62 ++56 2 +-1 2 ++2 2 +-1 2 +-1 2 ++2 2 ++1 1 ++2 9 ++5 2 ++1 2 +-1 4 ++1 2 ++1 2 ++4 4 +-72 12 +1259 5 ++6 1 +-6 10 ++6 9 +-6 9 +-1 12 ++13 2 ++3 2 ++2 3 +1683 3 ++2 1 ++1 1 +-2 1 ++2 2 +-2 1 ++2 2 +-2 4 +cfi=(24) +cfn=(60) +calls=1 38 +* 8 +* 3 ++7 2 ++3 1 +-5 2 ++3 1 +-3 1 ++3 1 ++2 1 ++1 3 ++4 4 ++2 1 +fi=(3) +39 2 ++6 1 +-2 1 ++2 1 ++9 1 +-5 1 ++5 2 ++2 1 ++3 2 +-1 1 +-3 1 +-6 30 ++5 12 ++1 5 ++13 15 +-23 15 ++23 75 +-23 75 ++65 2 ++5 3 ++7 2 ++1 4 ++6 2 ++18 2 ++15 2 ++2 2 ++1 2 ++9 3 ++6 2 ++4 2 +fe=(2) +1709 2 ++7 4 +cfi=(7) +cfn=(12) +calls=1 28 +* 33 +* 2 ++3 3 +fi=(25) ./elf/./setup-vdso.h +24 2 +fi=(28) ./elf/./dl-main.h ++88 6 +fi=(27) ./elf/../sysdeps/unix/sysv/linux/dl-vdso-setup.h +-67 1 +fi=(28) ++67 1 +cfi=(29) +cfn=(72) +calls=1 706 +* 2044 +fe=(2) +1744 4 +cfi=(37) +cfn=(108) +calls=1 56 +* 36 ++7 1 +-5 1 ++5 2 +-7 1 ++7 1 ++4 1 ++15 3 +-15 1 ++4 1 +-4 3 ++3 1 +-2 1 ++3 1 +-1 1 ++1 1 +-2 1 ++1 2 ++12 2 ++1 3 ++5 1 +-3 3 ++2 3 ++5 2 +-4 1 ++6 1 +-7 1 ++7 2 +-1 1 ++1 5 ++2 5 ++6 3 +224 2 +-1 1 ++1 2 ++1 1 +-2 1 ++2 1 +1799 2 ++5 1 +-1 1 ++1 3 ++24 1 +cfi=(38) +cfn=(110) +calls=1 199 +* 6 +fi=(39) ./elf/../sysdeps/generic/dl-debug.h +29 2 +fe=(2) +1828 1 +fi=(39) +29 2 ++1 1 +fe=(2) +1834 4 ++1 1 +cfi=(37) +cfn=(114) +calls=1 117 +* 1 ++5 4 +cfi=(40) +cfn=(116) +calls=1 29 +* 24 ++5 5 ++4 1 +-2 1 ++2 2 +1153 1 +-5 1 ++5 2 +-5 1 ++11 2 +-1 1 ++1 1 +-1 1 ++1 4 +-1 1 ++1 1 +-1 1 ++1 1 +-11 2 ++21 2 ++9 1 +-7 1 +-2 1 +-1 1 ++10 1 ++18 2 +-47 7 +1252 2 +1148 1 +1252 2 +1148 2 +1248 1 +1148 1 +1248 1 +1148 1 +fi=(3) +56 3 +fe=(2) +2335 2 +fi=(3) +59 2 ++3 4 ++2 3 +fi=(26) ./elf/../sysdeps/unix/sysv/linux/dl-vdso.h +-24 1 ++1 6 +fi=(27) +-11 2 ++3 2 ++6 2 +fi=(26) ++16 2 +fe=(2) +2601 5 +cfi=(18) +cfn=(40) +calls=1 309 +* 57 +* 1 +1210 2 +2603 2 ++1 1 ++48 1 ++1 2 +-1 1 ++1 1 ++1 1 +1754 5 ++99 6 +cfn=(118) +calls=1 874 +* 25178049 + +fn=(232) +678 1 +-2 2 ++2 1 +-2 1 ++2 2 +-2 1 ++2 1 +cfi=(68) +cfn=(234) +calls=1 392 +* 91206 +* 1 ++4 4 + +fn=(238) +736 2 ++2 2 +-2 1 ++2 1 ++4 1 +-6 3 ++2 1 ++4 1 +fi=(20) +44 1 +fe=(2) +753 1 +fi=(20) +44 5 +cfi=(21) +cfn=(46) +calls=1 +38 +* 36 +* 2 +fe=(2) +763 1 +-12 1 +-3 1 ++10 1 ++1 1 +-2 1 ++6 1 ++2 1 +-1 1 ++1 1 ++2 44 ++4 9 ++2 3 +-7 3 +-1 3 ++1 19 +-1 19 ++10 2 ++3 2 +cfi=(38) +cfn=(242) +calls=1 97 +* 86 ++3 1 +cfi=(38) +cfn=(244) +calls=1 227 +* 107 ++7 1 +cfi=(38) +cfn=(246) +calls=1 422 +* 480 +* 1 ++1 1 ++6 1 ++3 1 +-3 1 ++6 1 +cfi=(69) +cfn=(250) +calls=1 43 +* 74 ++4 2 +-3 3 ++3 6 + +fl=(36) +fn=(102) +40 105 ++1 21 +cfi=(34) +cfn=(90) +calls=21 -2 +* 1272 +* 21 +fi=(107) ./string/../include/rtld-malloc.h ++15 84 +cfi=(21) +cfn=(51) +calls=4 -21 +* 104 +cfi=(21) +cfn=(50) +calls=17 -21 +* 442 +fe=(36) +-12 21 ++3 21 ++1 42 +-1 21 ++1 42 +-1 21 +cfi=(22) +cfn=(52) +calls=21 -18 +* 1895 + +fl=(8) +fn=(328) _dl_sysdep_start_cleanup +148 1 + +fn=(14) +102 6 ++1 2 ++3 1 +-3 1 ++3 1 +cfn=(16) _dl_sysdep_parse_arguments +calls=1 -27 +* 480 ++4 3 +cfi=(11) +cfn=(22) +calls=1 282 +* 11232 ++3 1 +cfi=(13) +cfn=(26) +calls=1 295 +* 35 ++2 1 ++7 2 +-7 1 +cfi=(14) +cfn=(30) +calls=1 -79 +* 8 ++7 2 ++3 2 +cfi=(15) +cfn=(32) +calls=1 -88 +* 18 +* 3 ++12 2 ++3 5 +cfi=(2) +cfn=(34) +calls=1 1351 +* 25181907 +fi=(2) +498 3 ++89 15 +fe=(8) + +fn=(16) +79 1 +-1 2 ++3 1 +-1 1 ++1 2 ++2 1 +-4 2 +-1 4 ++2 2 ++1 2 +-3 1 ++5 34 +-1 33 ++1 33 ++7 1 +-4 3 ++4 2 +-4 1 ++4 1 +cfi=(9) +cfn=(18) +calls=1 -59 +* 101 +fi=(10) ./elf/../sysdeps/unix/sysv/linux/dl-parse_auxv.h +-57 1 ++8 1 +-9 2 ++7 1 +-7 1 ++1 1 ++6 1 ++2 1 ++1 1 ++1 3 +-1 1 ++1 66 +-1 22 ++1 46 +-2 69 +fe=(8) ++52 1 ++1 1 ++1 1 +fi=(10) +-50 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 ++1 1 +fe=(8) ++42 2 +fi=(10) +-50 2 +-1 1 ++3 1 ++1 1 ++1 1 ++1 1 ++2 1 ++1 1 +-7 1 ++5 1 +fe=(8) ++41 1 ++1 1 ++1 1 +fi=(10) +-49 1 +fe=(8) ++50 5 + +fl=(79) +fn=(304) check_match +32 3 +-1 3 ++2 3 +-1 3 +-1 3 ++2 3 +-1 3 +-1 3 ++2 9 +-1 3 ++1 3 +-2 18 ++5 3 +-5 9 ++4 3 ++1 3 ++12 12 ++3 3 ++2 3 +-2 6 ++2 6 +cfi=(24) +cfn=(60) +calls=3 -15 +* 351 +* 3 ++4 3 ++1 3 +-1 9 ++1 21 ++1 9 +cfi=(24) +cfn=(60) +calls=3 -21 +* 219 +-19 9 ++24 27 + +fn=(302) +74 9 ++1 3 +-1 24 ++4 3 +-4 9 ++2 3 ++2 9 ++37 3 +-37 12 ++1 3 ++2 12 ++3 3 ++2 6 +-2 6 ++3 15 +-3 5 ++2 4 +-2 4 ++3 10 +-3 2 ++3 3 +cfn=(304) +calls=3 -55 +* 759 ++3 3 ++3 6 ++23 33 + +fl=(18) +fn=(40) +309 24 +-3 24 ++3 24 ++34 69 ++3 23 +-1 23 ++1 23 ++1 23 ++2 23 ++1 23 +-4 137 +-1 137 ++1 137 ++1 137 ++2 137 ++1 137 +-7 159 ++12 22 ++1 22 +-43 4 ++17 1 +-1 1 +-27 1 +122 1 +329 1 +122 5 ++4 1 ++1 1 ++1 1 ++1 1 ++1 1 ++46 1 ++1 1 ++1 1 +337 1 ++2 1 +-2 1 ++1 1 ++5 8 ++3 4 +-1 4 ++1 4 ++1 4 ++2 4 ++1 4 ++5 1 ++1 2 +190 1 +-7 1 ++2 1 +351 2 + +fl=(19) +fn=(42) +59 63 ++3 21 +-3 231 ++3 21 +-3 105 ++3 21 ++21 40 +cfi=(34) +cfn=(90) +calls=20 -44 +* 1057 +-3 40 ++7 40 +-4 20 ++9 40 +-9 20 +fi=(20) +-39 80 +cfi=(21) +cfn=(46) +calls=20 +38 +* 832 +* 4 +cfi=(21) +cfn=(46) +calls=1 +38 +* 45 +* 21 +fe=(19) ++51 21 ++5 42 ++3 21 +-1 21 +-4 21 ++1 21 ++5 84 +cfi=(22) +cfn=(52) +calls=21 -75 +* 1773 ++2 21 +-2 21 ++2 21 ++13 42 ++6 1 ++2 6 ++3 4 +-3 120 ++3 80 ++4 21 +-2 21 ++2 21 ++2 21 ++3 30 ++2 16 +-2 48 +fi=(23) +1348 16 +-7 16 +fe=(19) +155 147 +-6 21 ++1 21 +-1 21 ++1 21 ++29 21 +-24 21 ++2 40 ++3 20 +-3 20 ++7 120 ++4 20 ++8 1 ++3 1 ++10 2 +-10 20 ++10 40 ++2 40 +cfi=(34) +cfn=(90) +calls=20 39 +* 1243 ++4 20 +-4 40 ++4 20 ++68 315 +131 63 +-12 40 ++4 20 +-4 20 ++34 1 ++7 3 ++85 60 +cfi=(22) +cfn=(52) +calls=20 29 +* 1768 +* 20 ++6 60 +-1 20 ++1 582 +-1 281 ++1 281 ++2 20 ++3 20 ++3 40 +-91 60 +fi=(20) +56 80 +cfi=(21) +cfn=(51) +calls=5 -21 +* 130 +cfi=(21) +cfn=(50) +calls=15 -21 +* 390 +* 20 +fe=(19) +200 20 +64 3 ++2 1 ++1 5 ++10 1 +-6 3 + +fn=(56) +31 63 ++2 42 +-2 42 ++2 42 +-2 21 ++2 21 +cfi=(16) +cfn=(58) +calls=21 +11 +* 42 ++2 168 ++3 690 ++2 20 ++2 20 ++4 80 ++1 60 +-1 40 ++5 20 +-4 20 ++4 40 +-3 40 ++2 80 ++1 20 +-1 20 +cfi=(16) +cfn=(58) +calls=20 -6 +* 40 +-4 4 ++1 3 +-1 2 ++5 1 +-4 1 ++4 2 +-3 2 ++2 4 ++1 1 +-1 1 +cfi=(16) +cfn=(58) +calls=1 -6 +* 2 +-5 2 + +fl=(64) +fn=(202) +30 1 ++4 1 +-4 4 ++4 2 +-4 2 ++4 1 ++29 4 +-17 1 ++17 2 +cfi=(59) +cfn=(179) +calls=1 201 +* 137395 +-18 2 + +fn=(203) +30 19 ++4 19 +-4 76 ++4 38 +-4 38 ++4 19 ++29 76 +-17 19 ++17 38 +-18 38 + +fl=(66) +fn=(216) +35 3 ++1 1 +-1 4 ++1 1 +cfi=(34) +cfn=(90) +calls=1 +3 +* 49 +* 1 ++1 4 +cfi=(22) +cfn=(52) +calls=1 -8 +* 98 ++1 7 + +fl=(32) +fn=(80) +25 12 ++1 6 +-1 12 ++1 6 ++4 3 ++4 6 +-4 6 ++4 6 ++2 3 ++11 18 +-20 6 ++20 12 + +fn=(78) +51 20 ++3 10 +cfn=(80) +calls=5 -29 +* 84 +* 5 ++8 20 + +ob=(10) +fl=(100) +fn=(384) +0 12 + +ob=(3) +fl=(92) +fn=(356) +46 3 ++5 2 +-5 1 ++5 1 ++4 7 ++6 3 ++10 1 ++1 2 +-10 1 ++1 3 ++9 1 +-1 1 +cfi=(93) ./misc/./misc/init-misc.c +cfn=(358) __init_misc +calls=1 -40 +* 234 + +fl=(81) +fn=(308) +fi=(2) +2398 1 +cob=(1) +cfi=(8) +cfn=(328) +calls=1 148 +* 1 ++4 3 +cob=(1) +cfi=(40) +cfn=(330) +calls=1 46 +* 4 ++5 2 +cob=(1) +cfi=(37) +cfn=(154) +calls=1 38 +* 7 ++1 1 ++1 1 +cob=(1) +cfi=(37) +cfn=(114) +calls=1 117 +* 1 ++5 1 +cob=(1) +cfi=(61) +cfn=(332) +calls=1 536 +* 22 ++5 16 +fe=(81) +33 10 ++2 1 +cfi=(82) ./ctype/./ctype/ctype-info.c +cfn=(310) __ctype_init +calls=1 -4 +* 24 ++3 2 +fi=(84) ./elf/../sysdeps/nptl/pthread_early_init.h +-5 2 +fe=(81) ++5 1 ++3 4 +fi=(84) +-8 1 +cfi=(83) ./resource/../sysdeps/unix/sysv/linux/getrlimit64.c +cfn=(312) getrlimit +calls=1 +5 +* 12 +* 2 ++1 3 ++4 3 ++7 2 +fi=(108) ./elf/../nptl/nptl-stack.h ++13 2 +fi=(84) +-13 1 +fi=(108) ++13 3 +fi=(84) +-12 3 +fi=(108) ++12 1 +fi=(84) +-12 1 ++6 6 ++1 2 +-1 1 ++1 1 ++1 1 ++3 1 +cfi=(85) ./nptl/./nptl/pthread_mutex_conf.c +cfn=(316) __pthread_tunables_init +calls=1 -7 +* 1597 +fe=(81) + +fl=(83) +fn=(312) +38 2 ++1 10 + +fl=(85) +fn=(316) +50 3 ++1 1 +-1 5 ++1 4 +-1 1 ++1 1 +cob=(1) +cfi=(11) +cfn=(28) +calls=2 408 +* 43 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 -17 +* 1500 +* 29 +fi=(81) +-2 10 +fe=(85) + +fl=(103) ./nptl/./nptl/pthread_once.c +fn=(434) pthread_once@@GLIBC_2.34 +139 2 ++1 2 ++3 1 +cfn=(436) __pthread_once_slow +calls=1 -75 +* 17 + +fn=(436) +68 13 ++8 2 ++4 2 + +fl=(95) ./string/./string/strchr.c +fn=(362) index +46 4 +-5 4 ++5 4 ++1 9 +-1 9 ++4 9 +-4 9 ++2 20 +179 2 +71 27 ++61 3 +-14 6 ++14 3 +-11 3 ++11 3 +-8 3 ++8 12 ++8 6 ++2 2 ++2 4 ++2 2 ++2 4 ++2 2 ++2 4 ++2 2 ++4 4 ++2 2 ++2 4 ++2 1 +51 1 +179 1 +-17 2 + +fl=(82) +fn=(310) +31 4 ++2 2 +-2 3 ++2 1 +-2 1 ++4 2 +-4 1 ++2 1 ++2 2 +-4 1 ++2 1 ++2 1 +-4 1 ++2 1 ++2 1 ++1 1 + +fl=(93) +fn=(358) +31 1 +-1 2 ++1 1 +-1 3 ++1 1 ++2 3 +cfi=(94) ./string/./string/strrchr.c +cfn=(360) rindex +calls=1 -4 +* 209 ++1 1 ++3 4 ++1 4 ++2 5 + +fl=(96) +fn=(364) +84 6 ++1 4 ++1 4 ++2 1 + +fl=(94) +fn=(360) +29 7 ++7 2 ++7 6 +-3 9 +cfi=(95) +cfn=(362) +calls=3 +6 +* 139 +* 3 +cfi=(95) +cfn=(362) +calls=1 +6 +* 32 +* 4 ++7 7 + +fl=(102) ./string/./string/memset.c +fn=(418) memset +31 2 +-2 2 ++2 2 ++5 2 ++5 4 ++4 6 ++8 2 ++1 8 ++2 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 ++1 2 +-10 2 ++2 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 ++1 10 +-10 14 ++16 4 ++1 2 ++6 2 +-41 4 ++45 2 ++8 2 + +ob=(4) +fl=(89) +fn=(342) +0 10 + +ob=(7) +fl=(97) +fn=(366) +0 11 + +ob=(4) +fl=(89) +fn=(342) +0 1 + +ob=(7) +fl=(97) +fn=(366) +0 1 + +ob=(4) +fl=(89) +fn=(342) +0 1 + +ob=(8) +fl=(98) +fn=(372) +0 12 + +ob=(11) +fl=(101) +fn=(422) std::locale::facet::_S_get_c_name() +0 3 + +fn=(400) std::locale::locale() +0 8 +cfn=(402) 0x00000000000b5f2c +calls=1 0 +0 6100 + +fn=(414) std::locale::_Impl::_Impl(unsigned long) +0 22 +cfn=(426) std::ctype::ctype(unsigned short const*, bool, unsigned long) +calls=1 0 +0 2228 +cfn=(422) +calls=1 0 +0 3 +cob=(3) +cfi=(102) +cfn=(418) +calls=2 31 +0 168 +cob=(1) +cfi=(86) +cfn=(322) +calls=3 34 +0 2714 +0 83 + +fn=(396) std::ios_base::Init::Init() +0 54 +cfn=(400) +calls=1 0 +0 6108 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 816 +0 11 + +fn=(402) +0 11 +cfn=(414) +calls=1 0 +0 5218 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 851 +0 11 +0 9 + +fn=(426) +0 15 +cfn=(430) std::locale::facet::_S_get_c_locale() +calls=1 0 +0 1218 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 984 +0 11 + +fn=(430) +0 7 +cob=(3) +cfi=(103) +cfn=(434) +calls=1 139 +0 22 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 1178 +0 11 + +fn=(390) +0 5 +cfn=(396) +calls=1 0 +0 6989 +cob=(1) +cfi=(86) +cfn=(322) +calls=1 34 +0 909 +0 11 + +ob=(6) +fl=(91) +fn=(350) +0 12 + +totals: 25203449 diff --git a/client/dispatch.c b/client/dispatch.c index 68164ee..ad7bed8 100644 --- a/client/dispatch.c +++ b/client/dispatch.c @@ -54,6 +54,7 @@ GNU_FORCE_EXTERN uintptr_t resolve_func(struct CpuState* cpu_state, uintptr_t addr, struct RtldPatchData* patch_data) { + printf("resolve_func\n"); struct State* state = cpu_state->state; if (patch_data) @@ -74,11 +75,15 @@ resolve_func(struct CpuState* cpu_state, uintptr_t addr, goto error; retval = rtld_add_object(&state->rtld, obj_base, obj_size, addr); - if (retval < 0) + if (retval < 0) { +// printf("rtld_add_object error\n"); goto error; + } retval = rtld_resolve(&state->rtld, addr, &func); - if (retval < 0) + if (retval < 0) { +// printf("rtld_resolve error\n"); goto error; + } if (UNLIKELY(state->tc.tc_profile)) { clock_gettime(CLOCK_MONOTONIC, &end_time); @@ -120,9 +125,10 @@ inline void dispatch_cdecl(uint64_t* cpu_regs) { uintptr_t hash = QUICK_TLB_HASH(addr); uintptr_t func = cpu_state->quick_tlb[hash][1]; - if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) + if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) { + printf("dispatch_cdecl: unlikely\n"); func = resolve_func(cpu_state, addr, NULL); - + } void(* func_p)(void*); *((void**) &func_p) = (void*) func; func_p(cpu_regs); @@ -460,6 +466,7 @@ ASM_BLOCK( const struct DispatcherInfo* dispatch_get(struct State* state) { +// printf("dispatch_get :)\n"); static const struct DispatcherInfo infos[] = { [0] = { .loop_func = dispatch_cdecl_loop, diff --git a/client/main.c b/client/main.c index 65db159..15b427a 100644 --- a/client/main.c +++ b/client/main.c @@ -16,7 +16,7 @@ int main(int argc, char** argv) { - printf("client main, argc = %d\n", argc); + printf("client main\n"); int i; int retval; diff --git a/client/meson.build b/client/meson.build index f575ed7..37231d4 100644 --- a/client/meson.build +++ b/client/meson.build @@ -22,7 +22,7 @@ client_link_args = ['-nostdlib', '-nostartfiles', '-lgcc'] cc = meson.get_compiler('c') if host_machine.cpu_family() == 'riscv64' - client_link_args += ['-Wl,-static', '-Wl,-pie', '-Wl,--no-dynamic-linker', '-Wl,-z,text'] + client_link_args += ['-static-pie', '-Wl,-static', '-Wl,-pie', '-Wl,--no-dynamic-linker', '-Wl,-z,text'] elif if cc.has_argument('-static-pie') client_link_args += ['-static-pie'] diff --git a/client/minilibc.c b/client/minilibc.c index 1b4c4d3..c6941c6 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -944,7 +944,9 @@ size_t getpagesize(void) { } // May be overriden by an architecture-specific implementation. +#ifndef __riscv __attribute__((weak)) GNU_FORCE_EXTERN +#endif void* memset(void* s, int c, size_t n) { unsigned char* sptr = s; for (; n > 0; n--, sptr++) @@ -1018,14 +1020,18 @@ __start_main(const size_t* initial_stack, const size_t* dynv) _exit(-ENOEXEC); *((size_t*) (base + rel[0])) += base; } -#if defined (__riscv) - relasz -= 24; //magic -#endif + + int c = 0; +//#if defined (__riscv) +// relasz -= 24; //magic +//#endif for (; relasz; rela += 3, relasz -= 3*sizeof(size_t)) { if (ELF_R_TYPE(rela[1]) != R_RELATIVE) _exit(-ENOEXEC); *((size_t*) (base + rela[0])) = base + rela[2]; + c++; } + printf("count = %u\n", c); } __asm__ volatile("" ::: "memory"); // memory barrier for compiler diff --git a/client/rtld.c b/client/rtld.c index f5bd1e8..c771c33 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -363,6 +363,7 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; + uint64_t res; switch (patch_data->rel_type) { #if defined(__x86_64__) @@ -457,34 +458,59 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { #elif defined(__riscv) case R_RISCV_32_PCREL: // printf("R_RISCV_32_PCREL\n"); - printf("tgt before = %p, ", *((uint32_t*)tgt)); +// printf("tgt before 32pcrel = %p, ", *((uint32_t*)tgt)); printf("sym = %p, ", sym); printf("add = %p, ", patch_data->addend); printf("pc = %p, ", pc); printf("prel_syma = %p, ", prel_syma); +// res = *((uint64_t*)sym) + patch_data->addend + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_32_PCREL")) return -EINVAL; - rtld_blend(tgt, 0xffffffff, prel_syma); - printf("tgt after = %p\n", *((uint32_t*)tgt)); + rtld_blend(tgt, 0xffffffffff, prel_syma); +// printf("tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_ADD32: - printf("tgt before = %p, ", *((uint32_t*)tgt)); - uint64_t res = syma + (*(uint64_t*)pc); + printf("tgt before add32 = %p, ", *((uint32_t*)tgt)); + res = syma + (*(uint64_t*)pc); printf("sym = %p, ", sym); printf("add = %p, ", patch_data->addend); printf("*pc = %p, ", (*(uint64_t*)pc)); printf("res = %p, ", res); - if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) - return -EINVAL; +// if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) +// return -EINVAL; rtld_blend(tgt, 0xffffffff, res); // *((uint32_t*)tgt) += (uint32_t) syma; printf("tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_SUB32: + printf("tgt before sub32 = %p, ", *((uint32_t*)tgt)); + res = (*(uint64_t*)pc) - (uint64_t)sym - (uint64_t)patch_data->addend; + printf("sym = %p, ", sym); + printf("add = %p, ", patch_data->addend); + printf("*pc = %p, ", (*(uint64_t*)pc)); + printf("res = %p, ", res); + +// if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) +// return -EINVAL; + rtld_blend(tgt, 0xffffffff, res); + printf("tgt after = %p\n", *((uint32_t*)tgt)); + break; case R_RISCV_CALL_PLT: +// printf("tgt before call_plt = %p, ", *((uint32_t*)tgt)); +// res = syma - pc; + printf("sym = %p, ", sym); + printf("add = %p, ", patch_data->addend); + printf("pc = %p, ", pc); + printf("prel_syma = %p, ", prel_syma); + + if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) + return -EINVAL; + rtld_blend(tgt, 0xffffffffff, prel_syma); +// printf("tgt after = %p\n", *((uint32_t*)tgt)); + break; #endif default: @@ -839,6 +865,7 @@ rtld_resolve(Rtld* r, uintptr_t addr, void** out_entry) { void rtld_patch(struct RtldPatchData* patch_data, void* sym) { // Ignore relocations failures and cases where nothing is to patch. + printf("rtld_patch: sym = %p\n"); char reloc_buf[8]; if (!patch_data) return; diff --git a/test/riscv64/build-rec.sh b/test/riscv64/build-rec.sh index 477e39e..e8881ac 100755 --- a/test/riscv64/build-rec.sh +++ b/test/riscv64/build-rec.sh @@ -1,2 +1,3 @@ #!/bin/bash gcc -Wall -Wpedantic -static -no-pie rec.c -o rec +gcc -Wall -Wpedantic -static -no-pie -fno-pie -nostdlib rec_nolibc.c -o rec_nolibc From dd92048368606a6d1c5bd2580e8189c0a55117cd Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 28 Nov 2024 15:19:43 +0000 Subject: [PATCH 11/31] (wip) stash 2 --- client/translator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/translator.c b/client/translator.c index 2113ddc..66d6d8a 100644 --- a/client/translator.c +++ b/client/translator.c @@ -42,7 +42,7 @@ static int32_t translator_hdr_recv(Translator* t, uint32_t id) { int translator_init(Translator* t, const char* server_config, const struct TranslatorServerConfig* tsc) { int socket = 0; - for (size_t i = 0; server_config[i]; i++) + for (size_t i = 0; server_config[i]; i++) socket = socket * 10 + server_config[i] - '0'; t->socket = socket; From 03f9aa6b58d06bd090e2c8f85118e77bada498f3 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Sat, 30 Nov 2024 23:22:18 +0000 Subject: [PATCH 12/31] client: fix CALL_PLT relocation for rv64 --- .test/a.out | Bin 0 -> 1664 bytes .test/func_1010c.elf | Bin 0 -> 1040 bytes .test/sc.S | 2 ++ .test/sc.c | 2 ++ .test/sc.o | Bin 0 -> 1536 bytes client/rtld.c | 34 ++++++++++++++++++++-------------- test/riscv64/build-rec.sh | 3 +++ 7 files changed, 27 insertions(+), 14 deletions(-) create mode 100755 .test/a.out create mode 100644 .test/func_1010c.elf create mode 100644 .test/sc.S create mode 100644 .test/sc.c create mode 100644 .test/sc.o diff --git a/.test/a.out b/.test/a.out new file mode 100755 index 0000000000000000000000000000000000000000..d03b6a5e2e22f9c4ad46f0c25e6d7adc9e789bff GIT binary patch literal 1664 zcmbtU&ubG=5T3W2XoOHwqfn@aN-9>wWmAF#@sPBewn8b?c<{Dtl5HEvFLs|HRlyVy zJb3fq!GFPP(WBma^*`_;_NaLD5NCGZq?{QQS>tl|9n(}y6Q3$d8iUP^#vlK-Z~PnxxRjHX~lADO{cSzFBq$ad8gpH{ll)Gzoh^uFQUL} z`t?4Dc^oD(Nw0sm&|K~1Db;zVV|BRhQJxMOlp;OCF`cSE#dL@?i;7b@6Yy&kr-!xt zcimv?Q~04?KsvUcs~E@-e}VfbWZpz~8NZA9!FeKP27C=gll`2#JhN@}j&AeI1 zP}M3wD%)$7%?CTSjq|l?)voMV!MNu8wl5t|f`91OomR`HyhxhVxD7`-V7r|LfZ-pu zrBg#Mz0e=jy?4w-Jvns_&%L= ze=(9AKpLRFJy#G`-?v*a7d(x@%|a2|8$zZs1ACAiOR?Ie*v&v BlkWfk literal 0 HcmV?d00001 diff --git a/.test/func_1010c.elf b/.test/func_1010c.elf new file mode 100644 index 0000000000000000000000000000000000000000..b474ef5025b127dfe7ca143e3f9074cd04b83f36 GIT binary patch literal 1040 zcmbVK!AiqG5S^`wR4CHgi%=0EXG5w*Dk!8-6+}cTUc8hv#$gZJ<1rBW~7 zSLSv7Iwpww_4bG#guoGAI@!O(HU`t~e=5T4Clwc4Yk21KY2Cn*}iE=f5>eLCsY1}P$<&*gHx+F*W^+ch*IXz@jS z^3i|CHy`~|6#sxalbcPK_41+%mv82qZ)WypH}`&L?{Q5CFiXI1IQI;T=$+f~%#0y` z6=(=?){NGm**=AaFGK@lAJO(AK{4^_0}{L2+YiH5lK1-QDC|UXOSU(oBA-mhs&ku( zSxtaCqxbeXh<8G)2Q_FRca8ZOB&+rAY3-Ar1k2F#Qp5RZj#*Qmc|9Zw-qT7iRePWLFmOM!!+f!Gom=mX63@ zz?aqBpa;t?1y_-|V!iLYzsh6=a<3i2#>sr5YO1nyFxV%eEOnhLK0vg088Y8QyvQ~| z$o4HnTMtrAhdS*c>Y~IWW9j@vgFHxe3bLmZ$ZR|u<|E`rW1Y+0r!O~^PP5k_i+qsE z{AmBMNQXJPbT4G8b5^)8UsUNkp4 z#edDegSk|*jgP%d|C=_6w&`#1uEp8X&$eUPCeKh$&>+tJCw*Z-%xJ*9u{#)`nZ`!I z_>2p7*}sHHXJqot_v8g~IJ;w(&EW@I=02N%yZ@@allCVk+~hX Y_unMPT5f;(##QBi<@`e{mrOVR4?uKRga7~l literal 0 HcmV?d00001 diff --git a/client/rtld.c b/client/rtld.c index c771c33..b1904c9 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -457,8 +457,9 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { break; #elif defined(__riscv) case R_RISCV_32_PCREL: -// printf("R_RISCV_32_PCREL\n"); -// printf("tgt before 32pcrel = %p, ", *((uint32_t*)tgt)); + printf("R_RISCV_32_PCREL\n"); + printf("tgt = %p\n", tgt); + printf("*tgt before 32pcrel = %p, ", *((uint32_t*)tgt)); printf("sym = %p, ", sym); printf("add = %p, ", patch_data->addend); printf("pc = %p, ", pc); @@ -467,8 +468,8 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_32_PCREL")) return -EINVAL; - rtld_blend(tgt, 0xffffffffff, prel_syma); -// printf("tgt after = %p\n", *((uint32_t*)tgt)); + rtld_blend(tgt, 0xffffffff, prel_syma); + printf("*tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_ADD32: printf("tgt before add32 = %p, ", *((uint32_t*)tgt)); @@ -499,17 +500,22 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { break; case R_RISCV_CALL_PLT: -// printf("tgt before call_plt = %p, ", *((uint32_t*)tgt)); -// res = syma - pc; - printf("sym = %p, ", sym); - printf("add = %p, ", patch_data->addend); - printf("pc = %p, ", pc); - printf("prel_syma = %p, ", prel_syma); - - if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) +// printf("tgt = %p\n", tgt + 4); +// printf("*tgt after = %p\n", *((uint32_t*)tgt)); +// printf("*(tgt + 4) before call_plt = %p, ", *((uint32_t*)tgt + 4)); +// printf("sym = %p, ", sym); +// printf("add = %p, ", patch_data->addend); +// printf("pc = %p, ", pc); +// printf("prel_syma = %p, ", prel_syma); + + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_CALL_PLT")) return -EINVAL; - rtld_blend(tgt, 0xffffffffff, prel_syma); -// printf("tgt after = %p\n", *((uint32_t*)tgt)); + + rtld_blend(tgt + 4, 0xfff00000 , prel_syma << 20); + rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); + +// printf("*tgt after = %p\n", *((uint32_t*)tgt)); +// printf("*(tgt + 4) after = %p\n", *((uint32_t*)tgt + 4)); break; #endif diff --git a/test/riscv64/build-rec.sh b/test/riscv64/build-rec.sh index e8881ac..b1d0f0d 100755 --- a/test/riscv64/build-rec.sh +++ b/test/riscv64/build-rec.sh @@ -1,3 +1,6 @@ #!/bin/bash gcc -Wall -Wpedantic -static -no-pie rec.c -o rec gcc -Wall -Wpedantic -static -no-pie -fno-pie -nostdlib rec_nolibc.c -o rec_nolibc + +gcc -Wall -Wpedantic -static -nostdlib -no-pie -fno-pie -fno-pic exit.S -o exit +gcc -Wall -Wpedantic -static -nostdlib exit.S -o exit-pie From 4a0b790632cde17408f568ded3c0853e46591e31 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Sun, 1 Dec 2024 01:39:03 +0000 Subject: [PATCH 13/31] client: fix PLT func size && plt entries --- client/dispatch.c | 12 +++--------- client/main.c | 1 - client/minilibc.c | 7 ------- client/rtld.c | 31 ++++++++++++++----------------- server/rewriteserver.cc | 1 - test/riscv64/build-rec.sh | 2 +- test/riscv64/rec_nolibc.c | 21 +++++++++++++++++++++ 7 files changed, 39 insertions(+), 36 deletions(-) create mode 100644 test/riscv64/rec_nolibc.c diff --git a/client/dispatch.c b/client/dispatch.c index ad7bed8..723a3bc 100644 --- a/client/dispatch.c +++ b/client/dispatch.c @@ -54,7 +54,6 @@ GNU_FORCE_EXTERN uintptr_t resolve_func(struct CpuState* cpu_state, uintptr_t addr, struct RtldPatchData* patch_data) { - printf("resolve_func\n"); struct State* state = cpu_state->state; if (patch_data) @@ -75,15 +74,12 @@ resolve_func(struct CpuState* cpu_state, uintptr_t addr, goto error; retval = rtld_add_object(&state->rtld, obj_base, obj_size, addr); - if (retval < 0) { -// printf("rtld_add_object error\n"); + if (retval < 0) goto error; - } + retval = rtld_resolve(&state->rtld, addr, &func); - if (retval < 0) { -// printf("rtld_resolve error\n"); + if (retval < 0) goto error; - } if (UNLIKELY(state->tc.tc_profile)) { clock_gettime(CLOCK_MONOTONIC, &end_time); @@ -126,7 +122,6 @@ inline void dispatch_cdecl(uint64_t* cpu_regs) { uintptr_t func = cpu_state->quick_tlb[hash][1]; if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) { - printf("dispatch_cdecl: unlikely\n"); func = resolve_func(cpu_state, addr, NULL); } void(* func_p)(void*); @@ -466,7 +461,6 @@ ASM_BLOCK( const struct DispatcherInfo* dispatch_get(struct State* state) { -// printf("dispatch_get :)\n"); static const struct DispatcherInfo infos[] = { [0] = { .loop_func = dispatch_cdecl_loop, diff --git a/client/main.c b/client/main.c index 15b427a..10ef38c 100644 --- a/client/main.c +++ b/client/main.c @@ -16,7 +16,6 @@ int main(int argc, char** argv) { - printf("client main\n"); int i; int retval; diff --git a/client/minilibc.c b/client/minilibc.c index c6941c6..0b5e75f 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -977,7 +977,6 @@ GNU_FORCE_EXTERN void __start_main(const size_t* initial_stack, const size_t* dynv) { - printf("__start_main\n"); int argc = (int) initial_stack[0]; char** local_environ = (char**) &initial_stack[argc + 2]; @@ -1021,17 +1020,11 @@ __start_main(const size_t* initial_stack, const size_t* dynv) *((size_t*) (base + rel[0])) += base; } - int c = 0; -//#if defined (__riscv) -// relasz -= 24; //magic -//#endif for (; relasz; rela += 3, relasz -= 3*sizeof(size_t)) { if (ELF_R_TYPE(rela[1]) != R_RELATIVE) _exit(-ENOEXEC); *((size_t*) (base + rela[0])) = base + rela[2]; - c++; } - printf("count = %u\n", c); } __asm__ volatile("" ::: "memory"); // memory barrier for compiler diff --git a/client/rtld.c b/client/rtld.c index b1904c9..381f6b8 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -91,14 +91,13 @@ static const struct PltEntry plt_entries[] = { #elif defined(__aarch64__) #define PLT_FUNC_SIZE 8 #elif defined(__riscv) -#define PLT_FUNC_SIZE 8 +#define PLT_FUNC_SIZE 16 #else #error "currently unsupported architecture" #endif static int plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { -// printf("plt_create\n"); size_t plt_entry_count = sizeof(plt_entries) / sizeof(plt_entries[0]) - 1; size_t code_size = plt_entry_count * PLT_FUNC_SIZE; size_t data_offset = ALIGN_UP(code_size, 0x40u); @@ -112,8 +111,6 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { uintptr_t* data_ptr = &plt[data_offset / sizeof(uintptr_t) + i]; ptrdiff_t offset = (char*) data_ptr - (char*) code_ptr; -// printf("offset = %p, ", offset); - if (i == 0) *data_ptr = disp_info->quick_dispatch_func; else if (i == 1) @@ -127,9 +124,12 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { *((uint32_t*) code_ptr+0) = 0x58000011 | (offset << 3); // ldr x17, [pc+off] *((uint32_t*) code_ptr+1) = 0xd61f0220; // br x17 #elif defined(__riscv) - *((uint32_t*) code_ptr+0) = 0x0000006f | (offset << 20); // jal x0, offset + *((uint32_t*) code_ptr+0) = 0x00000297 | ((offset + 0x800) & 0xfffff000); // auipc, t0, offset[31:12] + *((uint32_t*) code_ptr+1) = 0x0002b283 | (offset << 20); // ld t0, offset[11:0](t0) + *((uint32_t*) code_ptr+2) = 0x00028067; // jalr, x0, 0(t0) + *((uint32_t*) code_ptr+3) = 0x00000013; // nop +// *((uint32_t*) code_ptr+2) = 0x00028067 | (offset << 20); // jalr, x0, offset[11:0](t0) // uint32_t tmp = 0x0000006f | (offset << 20); -// printf("tmp = %p\n", tmp); #else #error #endif // defined(__x86_64__) @@ -357,9 +357,6 @@ rtld_elf_add_stub(uintptr_t sym, uintptr_t* out_stub) { static int rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { - -// printf("rtld_reloc_at\n"); - uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; @@ -457,19 +454,19 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { break; #elif defined(__riscv) case R_RISCV_32_PCREL: - printf("R_RISCV_32_PCREL\n"); - printf("tgt = %p\n", tgt); - printf("*tgt before 32pcrel = %p, ", *((uint32_t*)tgt)); - printf("sym = %p, ", sym); - printf("add = %p, ", patch_data->addend); - printf("pc = %p, ", pc); - printf("prel_syma = %p, ", prel_syma); +// printf("R_RISCV_32_PCREL\n"); +// printf("tgt = %p\n", tgt); +// printf("*tgt before 32pcrel = %p, ", *((uint32_t*)tgt)); +// printf("sym = %p, ", sym); +// printf("add = %p, ", patch_data->addend); +// printf("pc = %p, ", pc); +// printf("prel_syma = %p, ", prel_syma); // res = *((uint64_t*)sym) + patch_data->addend + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_32_PCREL")) return -EINVAL; rtld_blend(tgt, 0xffffffff, prel_syma); - printf("*tgt after = %p\n", *((uint32_t*)tgt)); +// printf("*tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_ADD32: printf("tgt before add32 = %p, ", *((uint32_t*)tgt)); diff --git a/server/rewriteserver.cc b/server/rewriteserver.cc index b1daa08..122075c 100644 --- a/server/rewriteserver.cc +++ b/server/rewriteserver.cc @@ -366,7 +366,6 @@ struct IWState { int main(int argc, char** argv) { - printf("server main\n"); llvm::cl::HideUnrelatedOptions({&InstrewCategory, &CodeGenCategory}); auto& optionMap = llvm::cl::getRegisteredOptions(); optionMap["time-passes"]->setHiddenFlag(llvm::cl::Hidden); diff --git a/test/riscv64/build-rec.sh b/test/riscv64/build-rec.sh index b1d0f0d..021b3be 100755 --- a/test/riscv64/build-rec.sh +++ b/test/riscv64/build-rec.sh @@ -1,5 +1,5 @@ #!/bin/bash -gcc -Wall -Wpedantic -static -no-pie rec.c -o rec +gcc -Wall -Wpedantic -static rec.c -o rec gcc -Wall -Wpedantic -static -no-pie -fno-pie -nostdlib rec_nolibc.c -o rec_nolibc gcc -Wall -Wpedantic -static -nostdlib -no-pie -fno-pie -fno-pic exit.S -o exit diff --git a/test/riscv64/rec_nolibc.c b/test/riscv64/rec_nolibc.c new file mode 100644 index 0000000..97fe658 --- /dev/null +++ b/test/riscv64/rec_nolibc.c @@ -0,0 +1,21 @@ +//#include +//#include + +int rec(int n) { + if (n <= 0) + return 1; + return n * rec(n - 1); +} + +__attribute__((force_align_arg_pointer)) +void _start() { + int n = 5; +// printf("rec(%d) = %d\n", n, rec(n)); + int res = rec(n); + asm("lb a0, %0\n" + "li a7, 93\n" + "ecall\n" :: "m"(res) + ); + __builtin_unreachable(); +} + From abf011edc98d766264dc4af5fa9c092b6c883529 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 5 Dec 2024 11:55:43 +0000 Subject: [PATCH 14/31] client: add plt entries --- .gitignore | 1 + .test/a.out | Bin 1664 -> 0 bytes callgrind.out.52927 | 6585 ------------------------------------- callgrind.out.53033 | 6585 ------------------------------------- client/minilibc.c | 10 +- client/plt.inc | 3 + client/rtld.c | 37 +- test/riscv64/build-rec.sh | 6 - test/riscv64/rec.c | 14 - test/riscv64/rec_nolibc.c | 21 - 10 files changed, 28 insertions(+), 13234 deletions(-) delete mode 100755 .test/a.out delete mode 100644 callgrind.out.52927 delete mode 100644 callgrind.out.53033 delete mode 100755 test/riscv64/build-rec.sh delete mode 100644 test/riscv64/rec.c delete mode 100644 test/riscv64/rec_nolibc.c diff --git a/.gitignore b/.gitignore index 117d589..16ece7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /*.sublime-* /build* /install +/.test diff --git a/.test/a.out b/.test/a.out deleted file mode 100755 index d03b6a5e2e22f9c4ad46f0c25e6d7adc9e789bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1664 zcmbtU&ubG=5T3W2XoOHwqfn@aN-9>wWmAF#@sPBewn8b?c<{Dtl5HEvFLs|HRlyVy zJb3fq!GFPP(WBma^*`_;_NaLD5NCGZq?{QQS>tl|9n(}y6Q3$d8iUP^#vlK-Z~PnxxRjHX~lADO{cSzFBq$ad8gpH{ll)Gzoh^uFQUL} z`t?4Dc^oD(Nw0sm&|K~1Db;zVV|BRhQJxMOlp;OCF`cSE#dL@?i;7b@6Yy&kr-!xt zcimv?Q~04?KsvUcs~E@-e}VfbWZpz~8NZA9!FeKP27C=gll`2#JhN@}j&AeI1 zP}M3wD%)$7%?CTSjq|l?)voMV!MNu8wl5t|f`91OomR`HyhxhVxD7`-V7r|LfZ-pu zrBg#Mz0e=jy?4w-Jvns_&%L= ze=(9AKpLRFJy#G`-?v*a7d(x@%|a2|8$zZs1ACAiOR?Ie*v&v BlkWfk diff --git a/callgrind.out.52927 b/callgrind.out.52927 deleted file mode 100644 index e0ddbfa..0000000 --- a/callgrind.out.52927 +++ /dev/null @@ -1,6585 +0,0 @@ -# callgrind format -version: 1 -creator: callgrind-3.21.0.GIT -pid: 52927 -cmd: ./build/server/instrew /bin/ls -part: 1 - - -desc: I1 cache: -desc: D1 cache: -desc: LL cache: - -desc: Timerange: Basic block 0 - 3375057 -desc: Trigger: Program termination - -positions: line -events: Ir -summary: 25203449 - - -ob=(5) /mnt/sda1/mikhaylov/instrew/build/server/instrew -fl=(90) ??? -fn=(348) 0x0000000000017942 -0 3 - -ob=(9) /usr/lib/riscv64-linux-gnu/libm.so.6 -fl=(99) ??? -fn=(378) 0x000000000000c4a8 -0 12 - -ob=(1) /usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1 -fl=(21) ./elf/./elf/dl-minimal-malloc.c -fn=(46) __minimal_calloc -82 46 -+3 276 -fi=(20) ./elf/../include/rtld-malloc.h --29 138 -cfi=(21) -cfn=(51) __minimal_malloc'2 -calls=5 -21 -* 158 -cfi=(21) -cfn=(50) __minimal_malloc -calls=41 -21 -* 1217 -fe=(21) - -fn=(106) __minimal_free -95 12 -+2 12 --2 6 -+2 6 --2 6 -+2 6 -+7 30 - -fn=(50) -35 172 -+1 258 --1 344 -+1 86 -+11 170 -+1 85 --1 85 -+3 170 --3 1 -+1 1 --1 1 -+3 162 -+5 36 -+1 6 -+2 6 -+1 42 -cfi=(54) ./misc/../sysdeps/unix/sysv/linux/mmap64.c -cfn=(166) mmap -calls=6 -9 -* 42 -+2 6 --2 6 -+2 6 -+2 12 -+2 8 -+4 4 --1 4 -+1 4 -+2 24 --3 82 -+1 82 -+2 492 -cfi=(59) ./elf/./elf/dl-deps.c -cfn=(179) _dl_map_object_deps'2 -calls=1 423 -* 83648 --3 2 --3 4 -+4 4 --27 2 --1 2 -+1 2 -+1 2 --2 2 - -fn=(51) -35 68 -+1 102 --1 136 -+1 34 -+11 68 -+1 34 --1 34 -+3 134 -+5 6 -+1 1 -+2 1 -+1 7 -cfi=(54) -cfn=(166) -calls=1 -9 -* 7 -+2 1 --2 1 -+2 1 -+2 2 -+2 2 -+4 1 --1 1 -+1 1 -+2 6 --3 33 -+1 33 -+2 198 -cfi=(59) -cfn=(179) -calls=17 423 -* 838808 - -fl=(75) ./elf/./dl-find_object.h -fn=(286) _dl_find_object_from_map -95 44 -+1 66 -+1 44 -+6 132 -+1 22 -+1 66 --1 278 -+1 300 -+2 55 -+5 11 -+4 22 -+4 11 - -fl=(16) ./elf/../sysdeps/nptl/dl-tls_init_tp.c -fn=(36) __tls_pre_init_tp -56 4 -+1 2 -+1 2 -+3 2 --5 2 -+1 2 -+1 2 -+3 2 -+1 2 -+2 1 - -fn=(58) rtld_mutex_dummy -44 432 - -fl=(45) ./setjmp/../sysdeps/riscv/setjmp.S -fn=(134) __sigsetjmp -31 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+3 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+5 68 -+1 68 - -fl=(61) ./elf/./elf/dl-cache.c -fn=(192) search_cache -206 38 -+5 19 --5 133 -+5 57 -+6 19 --11 38 -+5 19 --5 171 -+5 19 -cfi=(11) ./elf/./elf/dl-tunables.c -cfn=(28) __tunable_get_val -calls=19 408 -* 418 -* 19 -+17 19 -+3 38 --15 19 -+14 76 --36 19 -+36 19 -+9 19 --8 38 --47 38 -+55 19 --4 19 --5 608 --36 152 -+36 152 -+9 152 --8 304 --47 304 -+55 152 --4 152 -+4 171 -cfn=(194) _dl_cache_libcmp -calls=171 368 -* 12284 -+1 171 -356 152 -+3 86 -228 86 -363 304 --6 66 -228 142 -+22 36 -+5 18 --71 36 -+71 18 --2 18 -+2 18 -cfn=(194) -calls=18 368 -* 1281 -* 37 --7 38 --34 114 --1 95 -+64 19 -170 19 -277 19 -170 57 -+97 20 -+4 1 --87 2 -+87 1 -+1 3 -cfn=(194) -calls=1 +96 -* 170 -* 1 -+5 38 -+75 3 --74 36 -+7 54 -fi=(62) ./elf/../sysdeps/generic/dl-cache.h -125 18 -fe=(61) -303 18 -fi=(62) -125 36 -fe=(61) -303 36 -+3 54 -+34 54 -+2 18 - -fn=(332) _dl_unload_cache -536 6 -+2 1 --3 2 -+3 1 -cfi=(73) ./misc/../sysdeps/unix/syscall-template.S -cfn=(334) munmap -calls=1 120 -* 5 -+7 1 --6 2 -+4 2 -+2 2 - -fn=(186) _dl_load_cache_lookup -413 190 -+2 57 --2 19 -+2 38 -+3 76 -+69 36 -+5 38 -+3 19 --3 19 -+3 114 -cfn=(192) -calls=19 206 -* 19097 -* 19 -+15 57 -+4 19 -+8 36 -cfi=(34) ./string/./string/strlen.c -cfn=(90) strlen -calls=18 39 -* 1406 -+1 72 -+1 72 -cfi=(22) ./string/./string/memcpy.c -cfn=(52) memcpy -calls=18 29 -* 1912 -+1 18 -cfi=(36) ./string/./string/strdup.c -cfn=(102) strdup -calls=18 40 -* 3493 -+1 209 --37 2 --68 6 -cfi=(46) ./elf/./elf/dl-misc.c -cfn=(188) _dl_sysdep_read_whole_file -calls=1 36 -* 85 -+8 1 --8 1 -+8 4 -+1 4 -cfi=(18) ./string/./string/memcmp.c -cfn=(40) bcmp -calls=1 309 -* 67 -* 1 -+3 3 -+1 1 --1 1 -fi=(62) -194 1 -+1 4 -fe=(61) -441 1 -+1 2 - -fn=(194) -368 380 -+2 380 -+20 1048 -+2 1044 -+4 880 -+1 880 --29 1810 -+4 1076 --2 2152 -+2 2152 --2 1076 -+2 28 -+8 25 --2 50 -+2 50 --1 50 -+1 25 -+1 20 --1 4 -+1 4 --1 12 -+2 25 --3 25 -+3 75 -+1 20 --1 4 -+1 4 --1 12 -+2 25 -+16 57 --9 4 -+10 4 --8 328 --5 6 - -fl=(17) ./elf/./elf/dl-environ.c -fn=(38) _dl_next_ld_env_entry -29 3 --1 3 -+4 6 -+2 2 -+1 4 --3 31 -+13 31 --13 31 -+2 66 -+1 20 -+5 2 --3 2 -+3 2 -+2 2 -+7 1 - -fl=(69) ./elf/../include/list.h -fn=(250) __tls_init_tp -43 3 -fi=(16) -+25 3 -fe=(69) --24 3 --1 1 -fi=(16) -+29 1 -fe=(69) --27 1 -fi=(16) -+24 1 -fe=(69) --23 1 -fi=(16) -+29 1 -fe=(69) --28 1 -fi=(16) -+28 2 -+7 3 -+5 1 --11 1 -+1 1 -+5 1 -+8 1 --15 1 -+1 1 -+1 1 -+10 1 -+2 1 -+1 1 -+3 4 -+2 3 -+3 1 -+8 4 -cfi=(11) -cfn=(28) -calls=1 408 -* 21 -+24 2 -fi=(104) ./elf/../sysdeps/unix/sysv/linux/rseq-internal.h --83 1 -fi=(16) -+84 1 -fi=(104) --84 1 -fi=(16) -+83 1 -+1 3 -fe=(69) - -fl=(42) ./string/./string/wordcopy.c -fn=(142) _wordcopy_fwd_aligned -37 688 -+33 6 -+2 6 --1 6 -+2 6 -+29 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+4 6 --1 6 --1 6 -+4 6 --22 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+4 6 --1 6 --1 6 -+4 6 --19 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+4 7 --1 7 --1 7 -+4 7 --16 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+4 6 --1 6 --1 6 -+4 6 --13 40 -+4 40 --3 40 -+2 40 -+4 40 --3 40 -+2 40 -+4 40 --3 40 -+4 40 --1 40 --1 40 -+4 40 --10 18 -+4 18 --3 18 -+2 18 -+4 18 --3 18 -+4 18 --1 18 --1 18 -+4 18 --7 9 -+4 9 --3 9 -+4 9 --1 9 --1 9 -+4 9 --28 6 -+4 6 --3 6 -+2 6 -+4 6 --3 12 -+29 86 -+1 86 --90 9 -+2 9 --1 9 -+1 9 -+1 9 -+1 9 -+2 18 -+2 18 --1 18 -+2 18 -+1 18 -+2 40 -+2 40 --1 40 -+1 40 -+1 40 -+1 40 -+2 6 -+2 6 --1 6 -+2 6 -+1 6 -+2 7 -+2 7 --1 7 -+1 7 -+1 7 -+1 7 - -fn=(122) _wordcopy_fwd_dest_aligned -150 75 -+7 25 --6 25 -+6 25 --6 25 -+4 25 -+2 105 -+17 17 -+13 3 --4 3 -+1 3 -+4 3 -+29 12 -+1 25 --21 3 --1 1 -+4 1 --3 1 -+3 3 --1 1 -+4 1 --3 1 -+3 3 -+3 1 --4 1 -+1 1 -+3 3 -+3 1 --4 1 -+5 1 --4 1 -+3 1 --1 1 -+4 1 --12 51 --1 17 -+4 17 --3 17 -+3 51 -+3 17 --4 17 -+1 17 -+3 51 -+3 17 --4 17 -+5 17 --4 17 -+3 17 --1 17 -+4 17 --6 15 -+3 5 --4 5 -+5 5 --4 5 -+3 5 --1 5 -+4 5 -+5 110 --57 5 -+1 5 -+1 5 -+1 10 -+1 5 -+1 5 -+11 17 -+1 34 -+2 34 -+2 17 - -fn=(222) _wordcopy_bwd_aligned -234 16 -+77 2 -+1 2 -+2 2 -+5 2 --4 2 -+2 2 -+1 2 -+3 2 -+5 2 -+1 2 --82 2 --1 2 --1 2 -+3 2 -+1 2 - -fl=(50) ./io/../sysdeps/unix/sysv/linux/stat64.c -fn=(158) fstat -29 21 -fi=(51) ./io/../sysdeps/unix/sysv/linux/fstat64.c -+1 21 -+5 84 -cfi=(52) ./io/../sysdeps/unix/sysv/linux/fstatat64.c -cfn=(162) fstatat -calls=21 +64 -* 147 -fe=(50) - -fl=(71) ./elf/./elf/dl-lookup.c -fn=(268) check_match -71 135720 -+3 16965 --3 67860 -+3 16965 --3 50895 -+1 16965 -+2 67857 -+13 67856 -+3 21197 -cfi=(24) ./string/./string/strcmp.c -cfn=(60) strcmp -calls=1058 -52 -* 120644 -* 1058 -+4 16965 -+1 16965 -+2 15941 -+19 63764 -+1 31882 --1 15941 -+1 111587 -+2 162 -+1 20 --41 16920 -+84 135720 --18 1024 -+2 4092 -+1 2046 --1 2046 -+1 1023 --1 1023 -+4 2 -+1 6 -+2 2 --75 90 -+39 47661 -cfi=(24) -cfn=(60) -calls=15887 -80 -* 997541 -* 15887 --44 9 - -fn=(266) do_lookup_x -348 85295 -+1 17059 --1 307062 -+7 34118 -+41 34118 -+3 34118 --33 17059 -+33 17059 --25 34118 -+86 17059 --61 102354 --19 155594 -+8 77797 -+1 77797 --1 155594 -+1 77797 -+3 77797 --8 77797 -+1 77797 -+3 77797 -+1 77797 -+4 77797 -+4 77797 -+3 77797 --3 77797 --2 233391 -+5 77797 -+3 388985 -+99 182628 -359 155594 -+3 77797 -+4 77797 -+4 233391 -+4 233391 -fi=(23) ./elf/../sysdeps/generic/ldsodefs.h -141 33842 -fe=(71) -460 33842 -+3 33842 -+4 94367 -+16 16835 -+2 16835 --2 16835 -+1 16835 -+1 16835 --78 20171 --1 100855 -+2 20171 -+2 77048 -+7 38524 --1 250406 -+7 57480 --10 144320 -+2 16965 -+1 33930 --1 33930 -+2 50895 --1 33930 -+1 16965 --1 135720 -cfn=(268) -calls=16965 71 -* 2082301 -+4 16965 -+3 90 -+82 138 -+1 255885 --35 15996 -223 344 -+2 344 --2 86 -+2 258 -+2 86 --2 258 --2 86 -+2 172 -cfi=(16) -cfn=(58) -calls=86 44 -* 172 -+2 86 -+1 86 -+1 258 -+2 170 -+1 170 --1 340 -+1 170 --1 1015 -+24 189 -+3 105 -+1 210 --24 190 -+1 190 --1 190 -+1 2 -cfi=(24) -cfn=(60) -calls=1 38 -* 157 -* 1 -+2 2 -+10 1 -+1 2 -+2 6 -cfi=(16) -cfn=(58) -calls=1 44 -* 2 -485 2 --31 4685 -+2 1 -263 1680 -+49 170 --1 85 -+19 255 -+2 85 --2 680 -+2 255 -cfi=(16) -cfn=(58) -calls=85 44 -* 170 -+2 170 -485 85 -335 85 --1 85 -+1 85 -177 435 --2 92 -+1 184 --3 354 -319 85 -180 85 -+1 85 -+1 85 -+1 85 -319 255 --59 110 -fi=(20) -44 7 -cfi=(21) -cfn=(46) -calls=1 +38 -* 36 -* 1 -fe=(71) -303 1 --72 2 --59 2 -307 1 -+1 4 --2 1 -+1 1 -+1 1 --7 1 -172 1 --1 21081 -+99 8 -cfi=(46) -cfn=(280) _dl_higher_prime_number -calls=2 125 -* 143 -fi=(20) -44 2 -fe=(71) -270 2 -fi=(20) -44 8 -cfi=(21) -cfn=(46) -calls=2 +38 -* 102 -* 2 -fe=(71) -273 2 -+7 8 -172 6 -280 2 -+1 184 -+1 210 -171 140 -+1 70 --1 70 -+1 70 -+1 295 -+2 14 -+1 28 --3 168 -+7 70 -+1 70 -+1 70 -+1 70 -+97 184 -+6 24 --16 2 -+16 2 -cfi=(21) -cfn=(106) -calls=2 95 -* 26 -172 2 -290 4 --3 2 -172 2 -289 2 -+1 6 -172 4 --1 6 -+6 10 -437 169200 - -fn=(262) _dl_lookup_symbol_x -756 50910 -+2 33940 --2 322430 -+2 16970 -fi=(72) ./elf/../sysdeps/generic/dl-new-hash.h -74 16970 -+3 16970 --7 16970 --1 16970 -+1 16970 -+10 33940 -+1 16970 --1 805282 -+1 402641 -+20 1644636 -+1 822318 -+3 822318 --31 411159 -+30 411159 --27 411159 -fe=(71) -762 50910 --4 16970 -+1 16970 -+3 16970 --4 16970 -+1 16970 -+3 16970 -+4 48764 -+5 33940 --2 16970 -+6 16970 --7 101820 -+7 552 -+1 187649 -cfn=(266) -calls=17059 348 -* 7495906 -* 17059 -+28 16970 --23 16970 -+23 16970 --23 16970 -+24 84589 -+7 16921 --7 16921 -+35 101526 -+14 33842 -+3 50763 -+17 16921 -+2 33842 --76 16921 -+76 236992 --76 49 -+76 686 -fi=(72) -87 8452 -+2 16904 -+1 8452 -fe=(71) -783 245 -+18 147 -+54 3 - -fl=(34) -fn=(90) -39 214 --1 102 -+2 230 --1 460 -+2 460 -+38 40 --41 280 -+32 112 -+2 280 --34 204 -+32 102 -+2 255 --2 534 -+2 1335 -+6 214 -+2 174 -+2 158 -+2 134 -+4 104 -+2 92 -+2 58 -+2 18 --56 534 -+57 18 -+4 9 --18 24 -+2 36 -+2 45 -+4 18 -+2 51 -+2 60 - -fl=(54) -fn=(166) -50 116 -+8 232 -+2 58 - -fl=(78) ./elf/../sysdeps/nptl/dl-mutex.c -fn=(300) __rtld_mutex_init -30 2 -+10 1 --3 2 -+3 8 --10 2 -+10 1 -cfi=(79) ./elf/./elf/dl-lookup-direct.c -cfn=(302) _dl_lookup_direct -calls=1 +34 -* 327 -+4 1 -+1 8 -+2 1 --2 3 -+2 8 --2 1 -+2 1 -cfi=(79) -cfn=(302) -calls=1 +27 -* 311 -+4 1 -+1 8 -+1 2 --1 2 -+1 3 - -fl=(37) ./elf/./elf/dl-debug.c -fn=(114) _dl_debug_state -117 2 - -fn=(154) _dl_debug_update -38 21 -+3 42 --1 21 -+4 42 -+4 21 - -fn=(108) _dl_debug_initialize -56 1 -+3 1 -+26 2 --22 1 -+22 1 -+10 1 --32 1 -+1 2 -+21 1 -+5 1 -+5 1 --5 1 -+1 3 -+1 1 -+3 1 -+4 1 -+8 1 --50 4 -+39 11 - -fl=(7) ./elf/./elf/dl-setup_hash.c -fn=(12) _dl_setup_hash -28 44 -+3 66 -+1 44 -+2 22 --1 22 -+3 88 -+5 44 -+3 22 -+1 22 --8 22 -+4 22 -+3 22 -+1 22 --7 22 -+3 22 --3 22 -+7 22 --4 22 -+4 44 --7 22 -+2 22 -+3 22 -+2 22 -+5 22 - -fl=(58) ./io/../sysdeps/unix/sysv/linux/access.c -fn=(176) access -25 2 -+4 10 -+2 1 - -fl=(14) ./elf/../sysdeps/unix/sysv/linux/brk.c -fn=(30) brk -36 1 -fi=(105) ./elf/../sysdeps/unix/sysv/linux/brk_call.h --12 2 -fe=(14) -+13 2 -+1 1 -+6 1 -+1 1 - -fl=(31) ./elf/./elf/dl-hwcaps-subdirs.c -fn=(76) _dl_hwcaps_subdirs_active -29 2 - -fl=(59) -fn=(178) _dl_map_object_deps -144 7 --1 1 -+1 1 --1 14 -+1 3 --14 1 --2 1 -+1 1 -+1 1 -+13 1 --7 1 -+7 2 --7 7 -+24 3 --28 1 --2 4 -+31 1 --31 3 --2 1 -+1 1 -+1 1 -+6 2 -+24 1 --24 3 --6 1 -+30 2 --32 4 -+60 1 --60 2 -+54 3 -fi=(63) ./elf/../include/scratch_buffer.h -78 2 -fe=(59) -184 2 -+82 2 -fi=(63) -77 1 -fe=(59) -184 1 -+82 1 --38 1 -+4 1 --4 1 -fi=(63) -77 1 -fe=(59) -232 1 --4 1 -+4 1 --35 1 --33 1 -+68 1 --39 1 -+35 4 --35 1 -+4 1 -+11 2 --11 2 -+1 2 -+12 1 -+11 1 --11 2 -+7 1 -+4 1 --11 1 -+6 1 --1 1 -+2 1 -+4 2 --31 1 -+32 1 -+6 3 --6 1 -+6 4 -cfi=(29) ./elf/./elf/dl-load.c -cfn=(98) _dl_dst_count -calls=1 +10 -* 102 -* 2 -+4 2 --4 1 -+4 2 --2 1 -+2 1 -cfi=(29) -cfn=(98) -calls=1 +6 -* 162179 -cfi=(44) ./elf/./elf/dl-error-skeleton.c -cfn=(132) _dl_catch_exception -calls=1 -57 -* 5612 -* 31 -fi=(2) ./elf/./elf/rtld.c -1982 5 -+1 6 --1 1 -+1 3 --1 1 -+1 42 --1 21 -+1 63 --1 21 -+4 4 -+1 1 -+1 1 -+2 49 -+1 32 -+46 1 --42 1 -+8 7 -+1 1 -+2 2 -+4 1 --2 1 -+16 1 -+2 1 --1 1 -+1 2 -+2 2 -+1 1 --28 1 -+37 1 --1 5 -+2 8 -cfi=(44) -cfn=(230) _dl_receive_error -calls=1 238 -* 91242 -+10 3 -+1 2 --1 1 -+1 1 -+3 1 -842 2 -fi=(106) ./elf/../sysdeps/unix/sysv/linux/dl-osinfo.h -37 22 -+2 1 -fi=(2) -846 3 -fi=(106) -52 16 -fi=(2) -860 2 --5 4 -2058 2 -2267 1 --6 2 -+6 1 --10 1 -+13 1 --13 2 -+4 2 -+6 1 -+3 2 -+19 1 -+3 1 -+5 1 --8 1 -+3 1 -+6 1 --6 1 -+6 44 -+2 22 -+9 22 --9 44 -+5 44 -+2 22 -+6 66 -+2 22 -+1 126 -cfi=(70) ./elf/./elf/dl-reloc.c -cfn=(254) _dl_relocate_object -calls=21 207 -* 24897661 -+4 56 -+1 6 --23 3 -+23 3 -cfi=(38) ./elf/./elf/dl-tls.c -cfn=(276) _dl_add_to_slotinfo -calls=3 1015 -* 108 --23 5 -+32 3 -+4 5 -+2 4 -+7 5 -cfi=(38) -cfn=(282) _dl_allocate_tls_init -calls=1 528 -* 451 -+3 6 -+10 4 -+2 1 -+33 4 -cfi=(80) ./elf/./elf/dl-call-libc-early-init.c -cfn=(306) _dl_call_libc_early_init -calls=1 29 -* 2088 --82 1 -+1 1 --3 1 -2008 4 --2 2 -+5 1 --1 1 -+41 2 -cfn=(238) init_tls -calls=1 736 -* 937 -* 3 -2368 2 -cfi=(74) ./elf/./elf/dl-find_object.c -cfn=(284) _dl_find_object_init -calls=1 564 -* 3438 -+5 3 -cfi=(6) ./elf/./elf/dl-minimal.c -cfn=(292) __rtld_malloc_init_real -calls=1 76 -* 3484 -+3 1 -cfi=(78) -cfn=(300) -calls=1 30 -* 693 -+6 1 -+1 2 --1 1 -+1 2 --1 2 -+1 3 -cfi=(70) -cfn=(254) -calls=1 207 -* 5752 -* 1 -fe=(59) - -fn=(179) -208 51 --18 3 -+18 3 -417 3 -+2 6 -+3 2 --3 2 -+3 2 --3 2 -fi=(20) -56 12 -cfi=(21) -cfn=(51) -calls=1 -21 -* 26 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(59) -423 20 -fi=(20) -56 20 -fe=(59) -423 20 -+7 80 --1 20 -+1 40 -+1 20 --1 20 -cfi=(22) -cfn=(52) -calls=20 29 -* 1380 -+1 120 -cfi=(22) -cfn=(52) -calls=20 29 -* 1380 -+2 20 -+2 20 --1 20 -+1 60 -+4 42 -188 20 -+5 20 -+4 20 --4 20 -+4 60 -+1 80 -fi=(63) --67 76 -cfi=(64) ./malloc/./malloc/scratch_buffer_set_array_size.c -cfn=(203) __libc_scratch_buffer_set_array_size'2 -calls=19 30 -* 380 -fe=(59) -+70 40 -+4 40 -+5 18 -+11 18 --11 36 -+7 18 -+4 18 --11 18 -+6 18 --1 18 -+2 18 -+4 36 --31 18 -+32 18 -+6 54 --6 18 -+6 72 -cfi=(29) -cfn=(99) _dl_dst_count'2 -calls=18 +10 -* 1541 -* 132 -+4 132 --4 66 -+4 132 --2 66 -+2 66 -cfi=(21) -cfn=(51) -calls=17 35 -* 839250 -cfi=(21) -cfn=(50) -calls=1 35 -* 83674 -cfi=(64) -cfn=(202) __libc_scratch_buffer_set_array_size -calls=1 30 -* 137415 -cfi=(29) -cfn=(99) -calls=47 +6 -* 3185305 -cfi=(44) -cfn=(132) -calls=66 -57 -* 142597 -* 5114 -fi=(63) -85 2 -fe=(59) -448 5 -+1 1 -+3 2 -fi=(20) -56 2 -fe=(59) -463 2 -fi=(20) -56 5 -cfi=(21) -cfn=(51) -calls=1 -21 -* 26 -fe=(59) -465 1 -fi=(20) -56 1 -fe=(59) -465 1 -+5 4 -+1 1 --1 1 -+4 1 --2 1 -+6 44 -+5 22 -+2 110 -+5 66 --16 44 -+21 2 -+37 1 -+15 1 --11 1 -+11 1 --14 1 -+20 1 --1 2 -+1 1 --1 1 -+5 1 --4 6 --1 5 -cfi=(13) ./elf/./elf/dl-sort-maps.c -cfn=(226) _dl_sort_maps -calls=1 304 -* 1997 -+5 1 -+1 1 -+2 2 --1 1 -+1 2 -+1 1 -+7 1 -+3 1 -+3 16 --91 2 --41 40 --1 21 -+1 21 -183 7 -547 4 -cfi=(22) -cfn=(52) -calls=1 29 -* 133 -* 2 - -fn=(180) openaux -61 201 -+3 67 --3 67 -+3 67 -+1 134 --1 134 -+2 61 --2 305 -cfi=(29) -cfn=(138) _dl_map_object -calls=61 1971 -* 113465 -* 24 -cfi=(29) -cfn=(138) -calls=6 1971 -* 29061 -+5 67 --5 67 -+5 201 - -fl=(86) ./elf/../sysdeps/riscv/dl-trampoline.S -fn=(322) _dl_runtime_resolve -34 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+3 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+4 9 -+1 9 -+1 9 -+1 18 -+1 9 -cfi=(87) ./elf/./elf/dl-runtime.c -cfn=(324) _dl_fixup -calls=9 -7 -* 8556 -+1 9 -+3 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+3 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+3 9 -+3 9 - -fl=(13) -fn=(228) dfs_traversal.part.0 -140 120 -+8 15 -+2 15 --10 15 -+8 30 --8 30 -+10 15 -+2 28 --7 14 -+7 14 --7 206 -+7 256 -+9 15 -+15 15 -+2 30 --2 30 -+1 15 -+1 117 -cfn=(229) dfs_traversal.part.0'2 -calls=4 -38 -* 374 -* 8 - -fn=(229) -140 56 -+8 7 -+2 7 --10 7 -+8 14 --8 14 -+10 7 -+2 12 --7 6 -+7 6 --7 57 -+7 68 -+9 7 -+15 7 -+2 14 --2 14 -+1 7 -+1 58 -cfn=(229) -calls=3 -38 -* 135 -* 6 - -fn=(226) -304 15 -+8 2 --8 4 -+8 1 -+4 16 -188 1 -+28 1 --28 1 --2 1 -+1 1 -+29 1 --28 8 -+1 1 --1 2 -+1 3 --1 1 -+1 21 --1 42 -+1 63 --1 21 -+28 5 -+5 2 -+2 1 -+1 2 --79 1 -+81 1 --81 2 -+81 65 -+2 22 --83 111 -cfn=(228) -calls=15 -5 -* 1362 -* 30 -+86 44 -+18 2 -+13 1 -+54 1 --47 3 -cfi=(22) -cfn=(52) -calls=1 29 -* 133 -+13 3 - -fn=(26) _dl_sort_maps_init -295 1 -+1 3 --1 1 -+1 1 -cfi=(11) -cfn=(28) -calls=1 408 -* 21 -* 1 -+3 1 --1 2 --1 2 -+2 2 - -fl=(38) -fn=(248) allocate_dtv -365 4 -+5 2 --5 1 -+9 1 -fi=(20) -44 5 -cfi=(21) -cfn=(46) -calls=1 +38 -* 36 -fe=(38) -376 1 -+3 1 -+6 3 -+6 5 - -fn=(242) _dl_tls_static_surplus_init -97 2 -+4 1 --4 1 -+4 2 --4 1 -+4 1 --4 2 -+4 1 -cfi=(11) -cfn=(28) -calls=1 408 -* 22 -+1 1 --1 1 -+1 3 -cfi=(11) -cfn=(28) -calls=1 408 -* 22 -+6 1 --6 1 -+6 3 -+2 3 -+7 1 --34 5 -+35 2 --35 1 -+34 1 --2 2 -+2 2 -+1 4 - -fn=(244) _dl_determine_tlsoffset -227 3 --6 2 -+6 1 -+3 2 -+84 2 -+2 1 --2 2 --2 1 --88 1 --1 1 --1 1 -+94 3 -+3 3 --1 3 -+1 3 --1 6 -+3 3 -+2 12 -+14 12 -+1 6 -+3 3 -+1 6 -+6 3 --34 3 -+16 3 --16 9 -+38 3 -+8 1 --9 1 -+1 3 -+7 1 --7 1 -+8 2 - -fn=(246) _dl_allocate_tls_storage -422 1 -+13 2 -+1 1 --14 1 -+13 1 --13 2 -+14 1 --14 1 -fi=(20) -56 4 -cfi=(21) -cfn=(50) -calls=1 -21 -* 56 -fe=(38) -437 1 -+20 4 -+7 2 --7 1 -+7 2 -cfi=(9) ./string/./string/memset.c -cfn=(18) memset -calls=1 31 -* 331 -+7 1 --2 1 -+2 1 -cfn=(248) -calls=1 365 -* 59 -+1 1 -+3 6 - -fn=(276) -1015 6 -+9 6 --9 12 -+6 3 -+3 3 --9 15 -+14 6 -+34 3 -+7 27 --4 15 -+1 9 -+3 3 - -fn=(198) _dl_assign_tls_modid -147 6 --13 3 -+13 3 --13 3 -+52 3 -+2 6 --2 3 -+2 3 -+3 6 - -fn=(110) _dl_count_modids -199 4 -+1 2 - -fn=(282) -528 16 -+1 1 -+4 1 -+6 5 -cfi=(16) -cfn=(58) -calls=1 44 -* 2 -+3 5 -+12 1 --18 1 --1 1 -+43 1 -+3 1 --22 8 -+6 4 -+3 3 -+1 3 -+6 9 -+1 4 -+2 1 -+4 1 --4 3 -+1 1 -+3 1 --1 1 --3 2 -+4 2 --4 6 -+1 2 -+3 2 --1 2 -+4 3 -+1 9 -+20 3 --15 3 -+7 3 -+8 3 -+2 9 -cfi=(22) -cfn=(52) -calls=3 29 -* 131 -* 18 -cfi=(9) -cfn=(18) -calls=3 31 -* 137 -+6 6 --55 12 -+61 5 -cfi=(16) -cfn=(58) -calls=1 44 -* 2 -+3 1 -+3 16 - -fl=(70) -fn=(272) _dl_protect_relro -356 44 -+3 22 --4 22 -+1 88 -+3 22 --4 66 -+4 22 --3 22 -+7 22 -+7 88 --6 66 -cfi=(73) -cfn=(274) mprotect -calls=22 120 -* 110 -* 22 - -fn=(254) -207 330 -+16 44 --16 88 -+14 22 -+2 22 -+2 44 -+1 22 --1 22 -+1 22 -+19 66 -+6 22 --34 12 -+38 110 -+7 44 -fi=(4) ./elf/../sysdeps/riscv/dl-machine.h -+51 44 -+3 80 -+4 40 -+2 60 -+1 20 -+3 88 -fe=(70) --25 896 --83 50 --28 20 -fi=(4) -+3 10 -fi=(5) ./elf/./elf/do-rel.h --43 10 -fe=(70) -+40 40 -fi=(5) -49 10 -+4 10 --3 10 --1 10 -+4 10 -fe=(70) -301 10 -fi=(5) -48 10 -+1 30 -+1 10 -+30 10 -fe=(70) -218 60 --28 24 -fi=(4) -+3 12 -fi=(5) --43 12 -fe=(70) -+40 48 -fi=(5) -49 12 -+4 12 --3 12 --1 12 -+4 12 -fe=(70) -301 12 -fi=(5) -48 12 -+1 36 -+1 12 -+30 12 --31 22 -+4 22 --3 22 --1 22 -+4 22 -fe=(70) -301 22 -fi=(5) -48 22 -+1 66 -+1 22 -+30 22 -fi=(4) -282 10 -fi=(5) -83 10 -fi=(4) -278 2073 -+1 2073 --1 2073 -+4 2073 -+2 4146 -fi=(5) -83 4146 -fe=(70) -301 132 -fi=(5) -51 66 -fe=(70) -304 88 -+24 66 -+3 22 -+17 44 -+1 44 -cfn=(272) -calls=22 +7 -* 616 -+1 352 --98 44 -+1 20 -fi=(4) -+33 2073 -+1 8292 -fe=(70) -+14 80 -fi=(5) -114 102 -+9 53 -fi=(4) -+39 21 -fi=(5) --38 21 --1 21 -fi=(4) -+39 42 -+1 168 -fi=(5) --39 21 -fi=(4) -+39 168 -fi=(5) --40 21 -fi=(4) -+39 305867 -fi=(5) --38 305867 --1 305867 -fi=(4) -+39 611734 -+1 2446936 -fi=(5) --39 305867 -fi=(4) -+39 2446936 -fi=(5) --40 305867 -+3 34 --73 34 -+73 34 -+3 90 -+2 30 -+2 60 -fi=(4) -+51 40 --6 20 -+6 20 -fe=(70) -+6 20 -fi=(4) -+3 20 --15 20 -fe=(70) -+12 20 -fi=(4) -+3 80 -fi=(5) --60 40 -+2 20 --2 60 -+1 20 --1 20 -+1 40 -+2 20 --2 20 --1 20 -+1 40 --1 20 -fe=(70) -+37 20 -fi=(5) --34 60 -fe=(70) -+34 20 -fi=(5) --35 20 -+1 20 -fi=(4) -+42 20 -fe=(70) --8 20 -fi=(5) --37 65330 -+2 32665 --2 97995 -+1 32665 --1 32665 -+1 65330 -+2 32665 --2 32665 --1 32665 -+1 65330 --1 32665 -fe=(70) -+37 32665 -fi=(5) --34 97995 -fe=(70) -+34 32665 -fi=(5) --35 32665 -+1 32665 -fi=(4) -+42 32665 -fe=(70) --8 32665 -fi=(23) --28 32666 -fe=(70) -+29 32666 -fi=(23) --29 32666 -fe=(70) -+29 65332 -+3 97998 -+8 16948 --8 38694 -+8 43182 -+4 19192 --3 4798 -+1 4798 -+2 9596 -+1 4798 -+1 4798 --2 48600 --3 12150 -+1 12150 -+2 24300 -+1 12150 -+1 79942 -+2 101688 -cfi=(71) -cfn=(262) -calls=16948 756 -* 15054557 -+3 16948 --3 16948 -+4 16948 --1 16948 -fi=(4) --10 32666 -+1 32622 -+9 261480 -+7 32650 -fi=(5) --50 98055 --19 98095 -+20 19156 -fi=(4) -+64 30 -+2 60 -+1 90 --8 14 -+1 42 --6 13 -+1 58 --22 261147 -+3 130564 --5 44 -+4 88 -fi=(5) --29 15718 -fe=(70) -+18 62858 -+2 47154 -+1 15718 -+18 15718 --19 31436 -+1 31436 -fi=(4) -337 1 --4 1 -+1 1 -+3 7 --4 2 -+1 1 -+2 1 -+1 1 -cfi=(71) -cfn=(262) -calls=1 756 -* 1172 -+2 2 -fe=(70) -175 63 -301 30 -fi=(5) -179 4 -fi=(4) -+5 2 --6 2 -+6 2 -fe=(70) -+6 4 -fi=(4) --12 4 -fe=(70) -+12 8 -fi=(5) --9 2 -+1 2 --1 10 -+1 2 --1 4 -fi=(4) --3 2 -fe=(70) --8 2 -fi=(4) -+8 2 -fe=(70) --8 4 -fi=(5) -+11 6 -+1 6 --1 30 -+1 6 --1 12 -fi=(4) --3 6 -fe=(70) --8 6 -fi=(4) -+8 6 -fe=(70) --8 12 -fi=(23) --28 8 -fe=(70) -+29 8 -fi=(23) --29 8 -fe=(70) -+29 16 -+3 24 -+8 8 --8 16 -+12 32 -+4 16 --4 8 --3 8 -+7 8 --6 8 -+6 40 -cfi=(71) -cfn=(262) -calls=8 756 -* 8497 -+3 8 --3 8 -+4 8 --1 8 -fi=(4) --10 8 --1 4 -+4 4 -+1 16 -+6 64 -+7 8 -fi=(5) --5 24 --16 30 -fi=(4) -+5 28 -+2 4 --2 4 -fe=(70) - -fl=(35) ./string/./string/strchr.c -fn=(100) index -46 91 --5 91 -+5 103 -+1 355 --1 355 -+4 355 --4 355 -+2 710 -179 2 -71 819 -+61 91 --14 182 -+14 91 --11 91 -+11 91 --8 91 -+8 364 --14 160 -+14 80 --11 80 -+11 80 --8 80 -+8 320 -+8 182 -+2 89 -+2 148 -+2 74 -+2 124 -+2 62 -+2 94 -+2 47 -+4 80 -+2 40 -+2 72 -+2 36 -+2 54 -+2 27 -+2 26 -+2 13 -51 89 -179 89 -35 160 - -fl=(88) ./elf/./elf/dl-init.c -fn=(338) _dl_init -97 9 -+5 2 --4 1 -+1 1 --2 3 -+5 1 -+33 1 -+1 5 -+1 5 --1 1 -+1 2 -cfn=(340) call_init -calls=1 30 -* 76 -* 35 --1 7 -+1 14 -cfn=(340) -calls=7 30 -* 8662 --1 7 --32 1 -cfn=(340) -calls=1 -74 -* 76 -+1 2 -+4 1 -+1 1 -+1 4 -+5 4 -+4 3 -+1 3 -+1 2 --1 1 -+1 3 -cob=(5) -cfi=(90) -cfn=(348) -calls=1 0 -* 3 --1 2 - -fn=(340) -30 18 -+6 9 --8 63 -+8 54 -+2 18 -+6 9 -+14 27 -+4 9 --18 18 -+14 9 -+1 9 -+3 18 -+5 36 -+12 9 -+1 9 -+6 8 -+2 16 --2 8 -+2 8 --2 16 -+3 57 -+1 5 -cob=(3) /usr/lib/riscv64-linux-gnu/libc.so.6 -cfi=(96) ./libio/./libio/vtables.c -cfn=(364) check_stdfiles_vtables -calls=1 -6 -* 15 -* 40 -cob=(11) /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.32 -cfi=(101) ??? -cfn=(390) 0x00000000000a4192 -calls=1 -90 -* 7914 -cob=(10) /usr/lib/riscv64-linux-gnu/libgcc_s.so.1 -cfi=(100) ??? -cfn=(384) 0x000000000000352c -calls=1 -90 -* 12 -cob=(9) -cfi=(99) -cfn=(378) -calls=1 -90 -* 12 -cob=(8) /usr/lib/riscv64-linux-gnu/liblzma.so.5.4.1 -cfi=(98) ??? -cfn=(372) 0x0000000000003a68 -calls=1 -90 -* 12 -cob=(7) /usr/lib/riscv64-linux-gnu/libmd.so.0.0.5 -cfi=(97) ??? -cfn=(366) 0x0000000000001ed8 -calls=1 -90 -* 12 -cob=(3) -cfi=(92) ./csu/./csu/init-first.c -cfn=(356) _init_first -calls=1 -44 -* 260 -cob=(6) /usr/lib/riscv64-linux-gnu/libicudata.so.72.1 -cfi=(91) ??? -cfn=(350) 0x0000000000000428 -calls=1 -90 -* 12 -cob=(4) /usr/libexec/valgrind/vgpreload_core-riscv64-linux.so -cfi=(89) ??? -cfn=(342) 0x0000000000000508 -calls=1 -90 -* 12 --1 16 -+3 64 - -fl=(15) ./elf/../misc/sbrk.c -fn=(32) sbrk -37 2 -+3 2 --3 1 -+3 1 --3 3 -+21 1 -+4 1 -+16 7 - -fl=(40) ./elf/./elf/dl-audit.c -fn=(116) _dl_audit_activity_map -29 2 -+1 2 -+1 1 --2 7 -+1 1 -+1 1 -+6 10 - -fn=(330) _dl_audit_activity_nsid -46 3 -+5 1 - -fn=(174) _dl_audit_objopen -77 40 -+1 60 --1 160 -+1 20 -+15 220 - -fl=(74) -fn=(290) _dlfo_sort_mappings -537 2 -+3 3 -+4 1 -+1 1 --1 1 -+1 1 --1 19 -+1 19 --1 19 -+1 59 -+1 20 --1 20 -+1 210 --1 190 -+1 220 --1 420 -+8 60 -+1 80 --1 60 -+1 80 -+1 80 --15 40 -+17 1 - -fn=(288) _dlfo_process_initial -474 4 -+1 4 -+3 2 --4 22 -+4 2 --1 6 -+1 2 -+26 16 -+7 2 -+8 2 -+2 4 --16 4 -+3 128 --2 44 --1 44 --1 8 -+27 4 --2 2 -+2 26 --20 126 -+2 84 -+3 21 --1 63 -cfi=(75) -cfn=(286) -calls=21 95 -* 998 -+2 84 - -fn=(284) -564 2 -+2 1 --5 6 -+5 2 -+13 1 -cfn=(288) -calls=1 474 -* 310 -* 1 -fi=(20) -56 2 -fe=(74) -580 1 -fi=(20) -56 3 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(74) -580 1 -fi=(20) -56 1 -fe=(74) -582 1 -+3 1 -+5 2 -+1 1 -cfn=(288) -calls=1 474 -* 1392 -+3 2 -+10 7 --37 3 -cfi=(75) -cfn=(286) -calls=1 95 -* 53 -* 3 -+29 2 -cfn=(290) -calls=1 -59 -* 1606 -+3 7 -+2 1 - -fl=(6) -fn=(292) -76 1 -+10 3 -fi=(76) ./elf/../sysdeps/generic/dl-hash.h --43 1 -fe=(6) -+33 6 -+11 1 -fi=(76) --42 1 --1 2 --1 1 -+5 3 --3 1 -+17 3 --17 1 -+3 12 --3 4 -+17 12 --17 4 -fe=(6) -+46 1 -fi=(76) --24 2 -fe=(6) -+24 4 -fi=(76) --19 1 -fe=(6) -+17 1 -+2 1 -cfn=(296) lookup_malloc_symbol -calls=1 -30 -* 839 -* 1 -+1 5 -cfn=(296) -calls=1 -31 -* 849 -* 1 -+1 5 -cfn=(296) -calls=1 -32 -* 889 -* 1 -+1 4 --1 1 -+1 1 -cfn=(296) -calls=1 -33 -* 809 -+5 2 -+4 1 --2 1 -+2 1 --4 1 -+1 1 -+2 1 -+1 5 - -fn=(10) __rtld_malloc_init_stubs -43 5 -+1 3 -+1 3 -+1 3 -+1 1 - -fn=(296) -61 4 -+3 4 --3 16 -+3 20 --3 16 -+2 4 -+1 4 -cfi=(71) -cfn=(262) -calls=4 756 -* 3198 -+4 20 -+1 36 -fi=(77) ./elf/./dl-sym-post.h --28 12 -fe=(6) -+28 4 -+2 4 -fi=(77) --30 4 -+12 8 -fe=(6) -+19 32 - -fn=(94) strsep -242 12 -+2 4 -+1 4 -+4 10 -+5 2 --5 52 -+5 40 -+2 126 --7 28 -+11 28 --11 30 -+18 2 -+3 2 -+1 2 - -fl=(29) -fn=(98) -238 4 -+3 4 --3 24 -+3 4 -cfi=(35) -cfn=(100) -calls=4 46 -* 348 -+4 4 --1 4 -+20 36 -cfi=(59) -cfn=(179) -calls=1 -36 -* 162068 - -fn=(99) -238 66 -+3 66 --3 396 -+3 66 -cfi=(35) -cfn=(100) -calls=66 46 -* 4811 -+4 66 --1 66 -+20 594 -cfi=(59) -cfn=(179) -calls=47 -36 -* 3180762 --11 2 -+1 2 -+1 2 --4 1 -+2 3 -cfn=(208) is_dst -calls=1 -51 -* 116 -* 1 -+1 2 --1 1 -+6 1 --3 1 -+3 3 -cfi=(35) -cfn=(100) -calls=1 46 -* 52 -+2 2 - -fn=(152) _dl_map_object_from_fd -944 320 -+10 20 --10 160 -+10 20 -cfi=(37) -cfn=(154) -calls=20 38 -* 140 -+7 60 --7 20 -+7 20 -+85 60 -+10 100 -+7 140 -cfi=(19) ./elf/./elf/dl-object.c -cfn=(42) _dl_new_object -calls=20 59 -* 11188 -* 20 -+1 20 -+13 40 -+3 20 --5 20 -+4 20 -+1 20 --1 40 --3 20 -+1 20 --2 20 -+5 40 -+1 40 -+19 20 --2 20 -+2 120 -+10 20 --10 20 -+10 20 -+27 20 -+36 20 --62 20 -+62 20 --62 20 -+26 20 -+9 20 --36 20 --6 20 --1 20 --1 20 --1 20 --5 20 -+15 20 -+93 20 --93 60 -+62 100 --62 144 -+20 2 --21 268 -+1 577 -1223 40 -1110 20 -1223 40 -1110 20 -1228 100 -+10 20 -+1 20 --1 80 -+1 20 --1 80 -+7 20 -1076 20 -1245 20 -+10 80 -+7 120 -fi=(53) ./elf/./dl-map-segments.h -28 20 -fe=(29) -1262 20 -fi=(53) -28 20 -+1 180 -cfi=(54) -cfn=(166) -calls=20 +21 -* 140 -+72 20 -+1 40 --73 20 -+73 20 -+3 40 -+3 20 --2 40 -+2 20 -+17 20 -+2 20 --2 40 -fi=(55) ./elf/./dl-load.h --34 80 -fi=(53) -+58 120 -+6 20 -+2 20 --2 20 -+2 20 -+1 20 --1 20 --1 20 -+1 50 -+8 20 -+3 60 -+8 140 -cfi=(9) -cfn=(18) -calls=20 31 -* 4198 -* 60 -+6 20 -+12 40 --59 200 -+2 60 -+2 200 -cfi=(54) -cfn=(166) -calls=20 -89 -* 140 -* 60 -fe=(29) -1111 61 -+26 200 -+10 40 -+4 40 --2 80 --2 200 --1 40 -+1 40 -+2 40 -+2 40 --2 40 --3 40 -+1 40 -+1 40 -+3 40 --6 40 -+6 100 -+2 100 -+13 20 --13 100 -+13 60 -+7 40 --1 80 -+1 120 --1 40 -+1 80 --1 40 --27 40 -+38 40 --66 40 -+9 40 --1 20 -+1 40 --2 20 -+2 60 --1 20 -+1 20 --2 20 -+1 20 -+1 40 -+60 6 -+4 3 -+1 6 --67 3 -+68 3 -+3 9 -+1 3 -+8 3 --5 3 --3 3 -+8 6 -+15 20 -+1 20 -fi=(49) ./elf/../sysdeps/posix/dl-fileid.h -37 60 -cfi=(50) -cfn=(158) -calls=20 -8 -* 260 -* 20 -fe=(29) -999 140 -fi=(49) -40 20 -+1 20 -fe=(29) -999 40 -fi=(49) -40 20 -+1 20 -fe=(29) -999 480 -+1 690 -fi=(49) -49 840 -fe=(29) -1525 340 -1278 60 -+1 60 -fi=(56) ./elf/./elf/get-dynamic-info.h -39 20 -+6 20 --2 20 -+2 20 -+9 20 --5 20 -+5 40 -+2 20 -+3 40 --1 20 --3 20 --6 519 -+5 268 -+1 114 -+13 342 --23 342 -+23 1215 --23 1215 -+65 40 -+5 54 -+7 40 -+1 80 -+6 40 -+18 40 -+5 24 -+2 24 -+1 2 -+1 24 -+2 24 -+4 40 -+2 24 -+1 24 -+9 36 -+6 24 -+4 40 -+2 1 -fe=(29) -1285 1 -+5 2 --5 20 -+5 38 --5 19 -+2 20 -+11 40 -+19 60 -+2 140 -+52 40 -+1 9 -+6 6 -+1 3 --1 12 -+1 3 --1 37 -+1 17 --1 68 -+1 17 --1 171 -+1 154 -+6 154 --6 154 -+11 40 -cfi=(57) ./io/../sysdeps/unix/sysv/linux/close_nocancel.c -cfn=(172) __GI___close_nocancel -calls=20 26 -* 120 -* 20 -+13 40 -+2 40 -+2 20 --2 40 -+2 40 -+16 40 -cfi=(7) -cfn=(12) -calls=20 28 -* 660 -+4 40 -+1 40 -+17 60 -+1 1 -+3 4 -+5 2 --5 76 -+5 38 -+10 40 -+7 200 -+10 40 -+1 12 -+5 6 -cfi=(38) -cfn=(198) -calls=3 147 -* 36 -+7 60 -cfi=(19) -cfn=(56) _dl_add_to_namespace_list -calls=20 31 -* 1610 -+3 60 -+23 220 -+1 60 -cfi=(40) -cfn=(174) -calls=20 77 -* 500 -* 20 -fi=(55) -92 76 -+2 19 --1 38 -+1 38 --1 19 -+1 19 --1 19 -+1 19 --1 19 -+3 76 -fi=(56) --40 60 -fe=(29) -1018 40 -fi=(56) -59 40 -fe=(29) -1516 40 -fi=(56) -62 80 -+2 60 -181 30 --15 6 --7 20 -fi=(53) -+27 80 -cfi=(54) -cfn=(166) -calls=10 50 -* 70 -+3 30 -fe=(29) -1472 14 -+1 6 -+1 18 --1 12 -+1 6 --1 12 -cfi=(24) -cfn=(60) -calls=6 38 -* 197 -* 6 -+2 2 -1285 16 -1429 8 -+4 2 -+5 2 --1 2 --4 2 -+5 2 --4 4 -+3 4 -cfi=(67) ./string/./string/memmove.c -cfn=(220) memmove -calls=2 44 -* 116 -+4 8 - -fn=(96) expand_dynamic_string_token -385 9 -+10 3 --10 15 -+10 3 -cfn=(99) -calls=1 238 -* 236 -cfn=(98) -calls=2 238 -* 215 -+3 3 -+1 2 -+11 12 --11 2 -cfi=(36) -cfn=(102) -calls=2 40 -* 417 -* 1 -+3 2 -cfi=(34) -cfn=(90) -calls=1 39 -* 40 -* 7 -cfi=(34) -cfn=(90) -calls=1 39 -* 49 -* 9 -+3 1 -fi=(20) -56 4 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 1 -fe=(29) -406 1 -+3 1 -+1 4 --1 1 -+1 2 --1 1 -cfn=(214) _dl_dst_substitute -calls=1 276 -* 384 - -fn=(208) -202 6 -+13 2 --13 8 -+13 2 -cfi=(34) -cfn=(90) -calls=2 39 -* 62 --9 4 -+9 2 --9 2 -+10 8 -cfi=(65) ./string/./string/strncmp.c -cfn=(210) strncmp -calls=2 37 -* 90 -* 2 -+13 14 --11 12 -+1 6 -+1 8 -+1 4 - -fn=(214) -276 11 -+13 1 --13 3 -+13 2 --4 1 -+4 1 -+6 3 -+56 14 -+3 14 --60 8 --5 8 -+6 3 -cfn=(208) -calls=1 -93 -* 116 -* 2 -+22 3 -+5 2 -+10 3 -+2 2 -cfi=(66) ./string/./string/stpcpy.c -cfn=(216) stpcpy -calls=1 35 -* 168 -+1 1 -+19 1 --20 1 -+20 1 -+11 1 -+7 1 -+3 13 - -fn=(182) open_path -1819 336 -+1 21 --1 42 -+1 21 --1 42 -+7 21 -+5 147 --7 42 -+7 105 -+70 42 --70 21 --8 63 -+31 21 --3 21 -+50 84 --67 84 -+9 21 -+7 105 -cfi=(22) -cfn=(52) -calls=21 29 -* 2074 -* 21 --12 21 -+13 21 --1 21 -+1 52 -+3 84 -+5 168 -cfi=(22) -cfn=(52) -calls=24 29 -* 636 -* 120 -cfi=(22) -cfn=(52) -calls=24 29 -* 2161 -+9 24 --9 24 -+3 24 -+6 48 -+3 168 -cfn=(144) open_verify.constprop.0 -calls=24 1578 -* 1817 -+2 24 --2 24 -+2 24 -+2 6 -+1 2 -+25 2 -fi=(20) -56 7 -cfi=(21) -cfn=(51) -calls=1 -21 -* 26 -fe=(29) -1926 1 -+1 1 -+2 3 -cfi=(22) -cfn=(52) -calls=1 29 -* 71 -+35 357 -1851 144 -+89 96 -+7 80 --2 60 -+2 20 -+3 40 -1829 38 -+70 72 -+2 18 --21 10 -+1 55 -+6 15 -+2 15 -cfi=(60) ./gmon/../sysdeps/unix/sysv/linux/prof-freq.c -cfn=(184) stat -calls=5 28 -* 72 -+3 5 --3 9 --38 12 -+39 5 -+4 3 --43 3 -1954 2 -fi=(20) -50 4 -cfi=(21) -cfn=(106) -calls=1 +45 -* 13 -fe=(29) -1959 6 -+1 2 -1829 2 - -fn=(92) fillin_rpath.isra.0 -468 40 -+4 4 -+37 4 -fi=(20) -50 4 -fe=(29) -532 4 --32 2 --26 6 -cfi=(6) -cfn=(94) -calls=2 242 -* 330 -* 6 -cfi=(6) -cfn=(94) -calls=2 242 -* 12 -* 8 -+7 4 -+2 6 -cfn=(96) -calls=2 -98 -* 1063 -* 2 -+4 2 -+5 2 -cfi=(34) -cfn=(90) -calls=2 39 -* 96 -* 2 -+8 2 --7 2 -+78 4 -+3 4 --3 2 -+3 26 --74 10 -+5 4 -+4 2 --4 4 -+4 2 -+19 8 -cfi=(34) -cfn=(90) -calls=1 39 -* 67 -* 2 -+4 1 -fi=(20) -56 3 -fe=(29) -532 1 -fi=(20) -56 1 -fe=(29) -532 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -532 1 -fi=(20) -56 3 -fe=(29) -532 1 -fi=(20) -56 1 -fe=(29) -532 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 2 -fe=(29) -534 2 -+5 2 -+1 4 --1 6 --1 2 -+2 2 -cfi=(22) -cfn=(52) -calls=2 29 -* 194 -+3 4 --3 2 -+3 2 --3 2 -+1 2 -+2 2 -+1 1 -+5 1 -+1 1 --1 3 -+1 1 --1 1 -+1 1 --1 3 -+1 5 -+1 2 --1 6 -+1 2 --1 6 -+3 4 -+1 4 -+2 3 --1 4 -cfi=(22) -cfn=(52) -calls=1 29 -* 125 -+6 2 -+4 2 --10 2 -+6 2 -+1 2 -+3 8 --56 18 -+1 18 -fi=(20) -50 6 -cfi=(21) -cfn=(106) -calls=2 +45 -* 26 -+1 2 -fe=(29) -522 2 - -fn=(144) -1578 559 -+32 86 --32 172 -+32 43 -+19 129 -cfi=(47) ./io/../sysdeps/unix/sysv/linux/open64_nocancel.c -cfn=(146) __open_nocancel -calls=43 28 -* 1144 -+2 43 --2 43 -+2 43 -+8 40 -+1 20 -+5 60 -+6 20 --6 80 -cfi=(48) ./io/../sysdeps/unix/sysv/linux/read_nocancel.c -cfn=(148) __read_nocancel -calls=20 26 -* 100 -+2 20 -+2 60 -+2 20 -+6 40 -+17 89 --59 46 -+59 140 -cfi=(18) -cfn=(40) -calls=20 309 -* 1140 -* 40 -+81 60 -fi=(4) -61 60 -+7 80 -fe=(29) -1766 100 -+6 60 -+6 20 -+1 20 --1 60 -+1 40 -+26 645 - -fn=(204) decompose_rpath -580 8 -+11 2 --9 1 --2 3 -+11 1 -+31 2 -+7 2 -cfi=(36) -cfn=(102) -calls=1 40 -* 202 -* 1 -+1 1 -+8 3 --1 1 -+1 1 -+2 1 --2 1 -+2 2 --2 14 -+2 13 --2 13 -+2 26 --2 13 -+6 2 -fi=(20) -56 3 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 1 -fe=(29) -646 1 -+8 8 -cfn=(92) -calls=1 468 -* 1480 -fi=(20) -50 5 -cfi=(21) -cfn=(106) -calls=1 +45 -* 13 -fe=(29) -661 2 -+9 1 --2 1 -+2 1 -+1 1 -+1 9 - -fn=(138) -1971 952 -+8 68 -+1 476 -+3 1732 -+5 3240 -+2 1620 -cfi=(46) -cfn=(140) _dl_name_match_p -calls=540 68 -* 33240 -* 540 -+4 1968 -+1 984 -+3 373 -+1 1119 -+1 373 --1 746 -+1 746 -cfi=(24) -cfn=(60) -calls=373 38 -* 9224 -* 373 -2274 1088 -2013 60 -+2 60 --2 40 -+10 20 --50 20 -+50 20 -+17 40 --2 20 -+2 20 -cfi=(35) -cfn=(100) -calls=20 46 -* 1332 -* 20 -2206 1 --1 3 -cfn=(96) -calls=1 385 -* 388 --1 1 -+1 1 -+2 2 -+4 8 -cfn=(144) -calls=1 1578 -* 184 -+3 1 --3 1 -+3 1 -+12 5 -+46 4 --1 2 -+1 6 --1 1 -+1 1 -cfn=(152) -calls=1 944 -* 1630 -* 76 --1 38 -+1 114 --1 19 -+1 19 -cfn=(152) -calls=19 944 -* 36539 -* 40 -2044 38 -cfi=(34) -cfn=(90) -calls=19 39 -* 974 -+2 19 --2 38 -+2 38 -+7 57 -+50 40 -+1 266 -cfn=(182) -calls=19 1819 -* 8397 -+6 19 --6 19 -+6 19 -2226 90 -682 57 -2111 5 -685 5 -2113 13 -cfn=(182) -calls=1 1819 -* 769 -+4 1 --4 1 -+4 1 --39 44 -682 44 -2079 11 -682 11 -2057 11 -+8 11 --7 11 -+7 77 -682 11 -2065 66 --3 46 -682 23 -2063 23 -682 23 -+3 5 -+3 10 -+3 5 -+1 71 -2077 11 -+1 11 -+10 11 -+15 55 -+1 11 -+72 162 -cfn=(144) -calls=18 1578 -* 3321 -+4 36 --4 18 -+4 18 -+18 18 --17 18 -+17 54 -+28 1 -+2 1 --2 3 -+2 1 -688 10 -+8 1 -+1 3 --1 3 -+1 1 --1 3 -cfn=(204) -calls=1 580 -* 1865 -2111 1 -+22 15 --14 15 -+14 30 -+2 38 -+4 38 -cfi=(61) -cfn=(186) -calls=19 413 -* 27200 -* 19 -+2 19 -+12 90 --20 4 -691 4 -2119 4 -+14 8 -+20 1 -+39 4 -+1 3 -+1 13 -cfn=(182) -calls=1 1819 -* 906 -+4 2 --4 1 -+4 2 - -fn=(72) _dl_init_paths -706 17 -+14 2 --14 2 -+14 5 -fi=(20) -56 2 -fe=(29) -706 2 -+14 1 -cfi=(30) ./elf/./elf/dl-hwcaps.c -cfn=(74) _dl_important_hwcaps -calls=1 175 -* 529 -fi=(20) -56 1 -fe=(29) -720 1 -fi=(20) -56 1 -fe=(29) -720 1 -fi=(20) -56 1 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -725 1 -+2 1 -+8 1 --1 1 -fi=(20) -56 1 -fe=(29) -735 2 --1 1 -fi=(20) -56 1 -fe=(29) -739 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -741 1 --2 1 -+2 2 -+7 2 --1 2 -+20 1 --6 2 --5 1 -+5 1 -+1 1 --4 2 -+4 1 -+6 1 --12 1 -+2 1 -+1 1 -+11 4 --2 1 --5 2 -+4 4 -+1 16 -cfi=(9) -cfn=(18) -calls=4 31 -* 108 -+2 4 --8 3 -+8 6 --14 3 -+6 3 --4 3 -+1 3 -+2 3 -+5 3 --3 6 -+3 3 --10 3 -+10 6 --3 3 -+9 6 --2 1 -+6 1 -+1 1 --1 2 -+6 2 -+2 1 -+3 4 -+2 2 -+36 4 -+32 16 --30 3 -cfi=(34) -cfn=(90) -calls=1 39 -* 40 -* 7 -cfi=(22) -cfn=(52) -calls=1 29 -* 99 -+5 1 --5 1 -+5 2 --1 1 -+2 3 -+1 2 --2 1 -+2 2 --2 1 -+2 1 --2 1 -+1 26 -+1 26 --2 13 -+2 26 --2 13 -+2 13 --2 13 -+5 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -836 1 -fi=(20) -56 1 -fe=(29) -838 1 -+6 7 -cfn=(92) -calls=1 468 -* 819 -+3 3 -+6 2 --27 1 --18 1 --2 2 -+2 1 -+14 2 - -fl=(67) -fn=(220) -44 12 -+6 2 --6 2 -+6 2 -+61 16 --21 2 --4 2 -+1 2 -+3 2 -+3 4 -+1 2 -+7 12 -+6 2 --6 2 -cfi=(42) -cfn=(222) -calls=2 234 -* 46 -* 2 --15 4 - -fl=(87) -fn=(324) -54 9 --8 9 -+2 9 -+7 9 --9 9 -+9 36 -+1 9 --8 9 --2 9 -+10 9 --8 9 --2 9 -+3 9 -+7 27 --7 9 --3 9 -+2 9 -+10 9 --2 9 -+7 9 --17 18 -+10 9 -+7 18 --14 9 -+9 9 -+5 9 -+4 27 -+4 18 -+4 18 -+1 9 --1 27 -+1 45 -+1 9 --8 27 -+16 9 --1 9 -+1 9 -+10 72 -cfi=(71) -cfn=(262) -calls=9 756 -* 7674 -+4 9 --4 9 -+4 9 -+10 108 -+15 54 -+9 18 -+29 9 --3 18 -fi=(4) --11 9 -fe=(87) -+15 63 - -fl=(65) -fn=(210) -37 4 -+2 6 -+5 2 -+2 2 -+1 2 -+1 4 -+2 2 -+4 2 -+1 2 --4 2 -+1 4 -+2 2 -+1 2 -+1 4 -+2 2 --16 2 -+1 2 -+1 2 -+18 6 -+4 4 --4 4 -+2 4 -+1 4 --1 4 -+1 4 -+1 4 -+5 2 -+1 2 --13 4 - -fl=(41) ./string/./string/strcspn.c -fn=(120) strcspn -32 3 -+1 1 --1 1 -+1 1 -+1 2 -+5 2 -+1 1 -+1 1 -+1 1 --3 7 -+8 1 --7 7 -+1 7 -+1 7 -+5 4 -+1 1 --1 8 -+1 2 -+3 5 -+1 5 -+1 5 -+1 5 -+2 1 -+6 1 -+2 1 --1 1 -+2 1 --3 1 -+2 1 --1 1 -+2 1 --3 1 -+2 2 -+3 1 --6 1 -+6 4 --5 12 -+2 12 --1 12 -+2 12 --3 12 -+2 12 --1 12 -+2 12 --3 12 -+2 24 -+3 12 --6 12 -+6 48 -+2 1 -+1 1 -+1 2 --1 2 -+1 2 - -fl=(60) -fn=(184) -28 5 -fi=(50) -+1 20 -cfi=(52) -cfn=(162) -calls=5 +70 -* 47 -fe=(60) - -fl=(1) ??? -fn=(0) (below main) -0 2 -cfi=(2) -cfn=(2) _dl_start -calls=1 519 -0 25203447 - -fl=(57) -fn=(172) -26 126 - -fl=(11) -fn=(22) __GI___tunables_init -282 2 --9 3 -+9 13 --9 1 -151 2 -307 4 -77 1 -305 1 -+2 2 -71 1 -307 33 -71 101 -+6 1828 -+9 33 --15 33 -+15 66 -fi=(12) ./elf/./elf/dl-tunables.h -+54 66 -+1 43 --1 192 -fe=(11) -+91 66 -+74 2871 -+6 4125 -71 297 -fi=(12) -+69 961 -+1 332 --1 140 -fe=(11) -357 15 - -fn=(28) -408 260 -+9 26 --9 52 -+9 3 -+17 156 -+2 26 --9 23 -+1 23 - -fl=(47) -fn=(146) -28 132 -+3 44 --3 264 -+3 264 -+8 285 -+2 42 --2 69 -+2 69 - -fl=(9) -fn=(18) -31 29 --2 29 -+2 29 -+5 29 -+5 58 -+4 87 -+2 4 -+1 4 --3 9 -+4 1 -+4 1 -+1 1 --1 28 -+1 76 -+2 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 --10 16 -+2 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 --10 401 -+16 32 -+1 16 --1 26 -+1 91 -+2 26 -+1 26 --3 26 -+2 56 -+1 56 --3 108 -+6 26 --41 52 -+45 26 --4 3 --41 6 -+45 3 -+8 29 - -fl=(22) -fn=(52) -29 1212 -+7 202 --7 202 -+1 202 -+1 202 -+5 202 -+3 333 -+1 117 --9 6 -+9 76 -+11 641 -cfi=(42) -cfn=(142) -calls=86 -14 -* 2638 -* 444 -+6 6705 -+3 1616 --9 25 -cfi=(42) -cfn=(122) -calls=25 +99 -* 1070 -* 25 --21 210 - -fl=(24) -fn=(60) -38 19978 -+1 19978 --1 19978 -+1 19978 -+1 19978 -+3 19978 -cfn=(61) strcmp'2 -calls=18445 -5 -* 1058835 -+2 1533 -+1 1533 - -fn=(61) -38 173193 -+1 173193 --1 173193 -+1 173193 -+1 173193 -+3 155980 -cfn=(61) -calls=154748 -5 -* 6853284 -+2 1232 -+1 1232 --5 34426 - -fl=(68) ./elf/./elf/dl-version.c -fn=(234) _dl_check_all_versions -392 7 -+4 4 --2 1 -+3 24 -+1 132 -cfn=(236) _dl_check_map_versions -calls=22 170 -* 90919 --2 22 -+2 22 --1 44 --1 22 -+5 9 - -fn=(236) -170 22 --15 308 -+15 22 -+2 44 -+2 22 -+1 44 --3 22 -+5 22 -+3 19 -+4 19 --28 19 -+24 19 -+4 19 --20 19 -+20 19 -+40 38 -+7 19 --7 19 -+7 114 -36 19 -200 19 -36 133 -200 38 -36 61 -200 42 -36 294 -200 84 -36 42 -+1 603 --1 603 -+2 1992 -cfi=(46) -cfn=(140) -calls=664 +30 -* 38133 -* 664 -204 61 -+4 61 -+5 61 -94 122 -213 61 -94 244 -218 61 --1 122 -+1 61 --1 61 -+1 151 --1 180 -+1 90 --1 90 -+1 336 -64 453 --8 151 -221 151 -56 302 -+8 151 -221 151 --3 151 -56 151 -+8 151 -+6 302 -+16 151 -+1 151 -+2 302 -+5 302 -+14 3542 -+12 3240 -+4 4860 --30 3240 -231 723 -+3 453 -+5 270 --24 90 -110 151 -+3 755 -cfi=(24) -cfn=(60) -calls=151 -75 -* 11233 -* 151 -224 453 --6 244 -+25 122 -+5 126 --50 42 -+59 57 -+3 42 -+3 70 --3 2 -+3 19 -+3 45 --3 30 -+7 45 --7 60 -+7 558 --7 941 -+3 603 -+8 15 -+6 20 -fi=(20) -44 120 -cfi=(21) -cfn=(46) -calls=20 +38 -* 748 -fe=(68) -279 20 -+1 20 -+1 20 -+13 40 --3 20 -+3 60 -+2 20 -+3 19 -+7 38 --7 19 -+12 19 --8 183 -+18 270 --15 90 -+2 90 --2 90 -+2 90 --2 61 -+2 61 --2 61 -+2 61 -+4 151 -+1 151 --3 755 -+1 151 -+1 151 -+1 151 --3 151 -+1 151 -+1 151 -+1 151 -+3 302 -+8 122 -+5 126 --28 42 -+33 19 -+3 15 -+10 30 --10 30 -+20 603 --14 648 --2 201 -+6 201 -+1 201 --7 402 -+7 201 -+1 402 --1 804 -+1 201 --1 201 -+1 201 -+1 201 -+3 432 -+12 15 -+1 38 -+1 38 -+20 352 -156 3 -+8 3 -+93 5 -+17 5 -+60 1 - -fl=(44) -fn=(230) -238 2 -+1 2 --1 2 -+2 1 --1 1 --1 2 -+8 1 --3 1 -+1 1 -+2 1 -cfi=(2) -cfn=(232) version_check_doit -calls=1 678 -* 91220 -+4 1 --2 1 -+1 1 -+1 5 - -fn=(128) _dl_catch_error -225 7 -+2 3 --2 1 -+2 1 -cfn=(132) -calls=1 -52 -* 2577 -* 17 -fi=(2) -822 2 -+8 1 -+6 2 --6 1 -+6 3 --6 1 -+6 2 -fe=(44) - -fn=(132) -175 136 -+5 204 --5 136 -+5 68 --5 136 -+3 68 -+21 68 -+7 136 --7 68 -+1 136 -+3 136 -+3 68 -cfi=(45) -cfn=(134) -calls=68 31 -* 1904 -* 68 -+2 204 -cfi=(59) -cfn=(180) -calls=67 61 -* 143921 -cfi=(2) -cfn=(136) map_doit -calls=1 645 -* 2513 -+1 204 -+1 272 --25 68 -+34 272 - -fl=(46) -fn=(188) -36 3 -+3 1 --3 4 -+3 1 -cfi=(47) -cfn=(146) -calls=1 -11 -* 25 -+1 1 -+2 3 -cfi=(50) -cfn=(158) -calls=1 -13 -* 13 -* 1 -+2 2 -+3 1 -+13 2 -cfi=(57) -cfn=(172) -calls=1 -34 -* 6 -+3 7 --14 6 -cfi=(54) -cfn=(166) -calls=1 +1 -* 7 -* 2 - -fn=(280) -125 4 --1 4 -+3 2 -+3 20 --1 56 --2 7 -+2 35 --2 5 -+19 4 --15 6 - -fn=(140) -68 3612 -+1 1204 --1 3612 -+1 1204 -cfi=(24) -cfn=(60) -calls=1204 -31 -* 9638 -* 1204 -+3 1204 -+2 1204 -+6 2364 --6 1182 -+1 3873 -cfi=(24) -cfn=(60) -calls=1291 -37 -* 32557 -* 1291 -+8 327 --13 109 -+13 3503 --1 1095 -+1 2190 - -fl=(48) -fn=(148) -26 80 -+1 20 - -fl=(52) -fn=(162) -99 52 -+70 100 -+1 22 --2 12 -+1 8 - -fl=(30) -fn=(74) -175 15 -+1 1 --1 3 -+1 3 --1 5 -+1 1 -cfi=(11) -cfn=(28) -calls=1 408 -* 22 -+2 3 -+1 1 --1 1 -+10 2 --10 1 -+1 2 -+8 1 -cfi=(31) -cfn=(76) -calls=1 29 -* 2 -* 2 -fi=(33) ./elf/./dl-hwcaps.h --99 1 --34 1 -+2 1 -+32 1 -+1 1 -fe=(30) -+99 1 -fi=(33) --98 1 -fe=(30) --35 2 -cfi=(32) ./elf/./elf/dl-hwcaps_split.c -cfn=(78) _dl_hwcaps_split_masked -calls=1 -4 -* 23 -* 1 -fi=(33) -+33 1 --34 3 -+34 1 -+1 1 --33 1 -+33 1 -+1 1 -fe=(30) --35 2 -cfi=(32) -cfn=(78) -calls=1 -4 -* 31 -* 1 -fi=(20) -+1 4 -fe=(30) -+47 2 -fi=(20) --47 1 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(30) -+47 1 -+2 1 -fi=(33) --51 1 -fe=(30) -+64 1 --10 1 -fi=(33) --54 1 -+2 1 -fe=(30) -+55 1 -+7 1 -fi=(33) --61 1 -fe=(30) -+58 2 -cfi=(32) -cfn=(80) _dl_hwcaps_split -calls=1 -90 -* 12 -* 1 -fi=(33) --27 1 -fe=(30) -+43 1 -fi=(33) --77 1 -+34 1 -+1 1 --33 1 -fe=(30) -+75 1 -fi=(33) --42 1 -+1 1 -fe=(30) -+38 2 -cfi=(32) -cfn=(78) -calls=1 -77 -* 31 -* 1 -+8 1 -+9 6 -+54 2 --1 1 -+1 1 --1 1 -+1 1 -+4 1 -+5 2 -+20 4 -+1 1 -+9 4 -+7 5 -+1 2 -+3 2 -+4 1 -+1 1 --1 1 -+21 4 -fi=(20) -56 3 -fe=(30) -274 1 -+7 2 -fi=(20) -56 1 -fe=(30) -274 2 -fi=(20) -56 1 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 2 -fe=(30) -282 1 -+8 1 -+1 2 --1 3 -+1 2 --2 1 -+2 1 -cfn=(86) copy_hwcaps -calls=1 77 -* 51 -+1 6 -cfn=(86) -calls=1 77 -* 59 -+11 1 --8 1 -+1 1 -+7 1 -+8 3 -+62 1 --59 1 -+86 1 --86 1 -+86 16 -254 3 -+55 1 --3 2 --1 1 -+2 1 -+1 1 -+1 2 -cfi=(22) -cfn=(52) -calls=1 29 -* 39 -* 1 -+1 3 - -fn=(86) -77 14 -fi=(33) --23 2 -+2 2 -+32 2 -+1 4 -fe=(30) --6 4 -+4 2 -fi=(33) -+3 2 -fe=(30) --10 4 -cfi=(32) -cfn=(78) -calls=2 -29 -* 54 -+3 4 --3 2 -+13 14 - -fl=(73) -fn=(334) -120 4 -+2 1 - -fn=(274) -120 88 -+2 22 - -fl=(80) -fn=(306) -29 1 --2 1 -+6 2 --6 1 -+6 7 --6 3 -+6 1 -cfi=(79) -cfn=(302) -calls=1 +41 -* 311 -+4 1 -+2 6 -+2 2 --1 1 -+1 1 --2 1 -+2 1 --1 1 -cob=(3) -cfi=(81) ./elf/./elf/libc_early_init.c -cfn=(308) __libc_early_init -calls=1 -7 -* 1747 - -fl=(2) -fn=(124) do_preload -809 6 -+12 2 --4 1 --8 1 -+10 2 -+2 4 --12 2 -+10 1 --8 1 -+4 1 -+1 1 -+1 1 -+4 1 -cfi=(44) -cfn=(128) -calls=1 225 -* 2618 -* 3 -+76 1 --18 2 -+21 17 - -fn=(2) -0 11 -fi=(1) -cfi=(88) -cfn=(338) -calls=1 97 -0 8938 -519 15 -+26 2 -+4 1 --1 2 -fi=(3) ./elf/./get-dynamic-info.h -45 1 -fe=(2) -549 1 -fi=(4) -83 2 -fe=(2) -549 1 --4 1 -+3 1 --29 1 -fi=(3) -45 1 -+9 1 --5 1 -+19 2 --14 2 -+2 1 -+3 2 --1 1 --3 1 --6 17 -+5 10 -+1 4 -+13 12 --23 12 -+23 39 --23 39 -+65 2 -+5 3 -+7 2 -+1 4 -+6 2 -+4 2 -+1 2 -+5 2 -+3 2 -fe=(2) -553 2 -+12 34 -fi=(4) -178 1 -+6 3 --6 1 -+6 1 -fi=(5) -49 1 -+4 1 -fe=(2) -565 1 -fi=(5) -49 1 -+1 1 -+3 1 --4 3 -+1 1 -+3 1 -+3 1 --7 1 -+4 1 -fe=(2) -565 1 -fi=(5) -49 1 -+1 1 -+3 1 --4 3 -+1 1 -+3 1 -+3 1 -fi=(4) -162 12 -fi=(5) -57 12 --1 12 -fi=(4) -162 12 -fi=(5) -57 12 -fi=(4) -162 60 -+1 24 --1 12 -+1 96 -fi=(5) -56 12 -fi=(4) -187 2 -+6 4 -fi=(5) -61 2 -+2 5 -+2 5 -fi=(4) -184 5 -fi=(5) -63 5 -+1 20 -+1 5 -fi=(4) -178 5 -+6 45 -+3 5 -+6 5 -fi=(5) -61 10 -fe=(2) -565 6 -fi=(5) -51 2 -fi=(3) -+5 3 -+3 2 -fe=(2) -565 3 -fi=(4) -193 7 -+7 5 -+1 5 -fe=(2) -567 1 -460 2 -567 2 -+13 1 -cfi=(6) -cfn=(10) -calls=1 43 -* 15 -460 2 -+18 2 --18 1 -+18 1 -cfi=(7) -cfn=(12) -calls=1 28 -* 33 -+18 1 --17 3 -+17 2 --15 3 --1 1 -+10 2 -+6 1 -cfi=(8) ./elf/../sysdeps/unix/sysv/linux/dl-sysdep.c -cfn=(14) _dl_sysdep_start -calls=1 102 -* 25193731 -fi=(3) -62 4 -+2 3 -fe=(2) -565 4 -+18 3 - -fn=(118) handle_preload_list -874 12 -+5 1 --5 3 -+5 1 -+10 1 --6 1 -+6 2 --6 4 --8 3 -+7 2 -190 2 -896 2 -+1 4 -cfn=(124) -calls=1 -88 -* 2665 --15 3 -cfi=(41) -cfn=(120) -calls=1 32 -* 307 -+1 1 --1 1 -+1 1 -+2 4 -cfi=(22) -cfn=(52) -calls=1 29 -* 126 -+1 1 -+6 1 --6 1 -+7 1 -182 1 -894 2 -182 1 -1858 2 -+16 6 -cfi=(58) -cfn=(176) -calls=1 25 -* 13 -* 3 -+76 3 -+16 2 -+10 10 -cfi=(59) -cfn=(178) -calls=1 144 -* 25174834 --22 7 -+1 1 -+3 5 -+1 1 --1 1 -+2 1 --6 1 -+7 1 -1853 4 - -fn=(136) -645 1 --2 2 -+3 1 --3 1 -+2 1 -+1 1 --1 1 -+1 3 --3 1 -+3 1 -cfi=(29) -cfn=(138) -calls=1 1971 -* 2495 -+2 1 --2 1 -+2 3 - -fn=(34) dl_main -fi=(8) -143 7 -fe=(2) -1351 19 -196 1 -+1 1 -+1 1 -+97 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -1362 1 -cfi=(16) -cfn=(36) -calls=1 56 -* 21 -2552 3 -+6 3 --6 1 -+6 8 --4 2 -+10 1 -+9 3 --13 2 -cfi=(17) -cfn=(38) -calls=1 29 -* 38 -* 4 -cfi=(17) -cfn=(38) -calls=2 29 -* 168 -* 6 -+4 2 --2 2 -+2 4 -+1 19 --1 76 -+9 14 -2691 3 -+25 2 -1378 3 -+1 1 --1 1 -+1 3 --1 1 -+1 1 -2649 1 -+1 1 --1 1 -+1 4 -cfi=(18) -cfn=(40) -calls=1 309 -* 92 -* 2 --56 5 -cfi=(18) -cfn=(40) -calls=1 309 -* 14 -* 2 -1648 9 -cfi=(19) -cfn=(42) -calls=1 59 -* 290 -+2 2 -+3 1 --1 1 -+5 1 --4 1 --2 1 -+1 1 -+1 1 -+5 5 --5 1 -+4 1 -cfi=(19) -cfn=(56) -calls=1 31 -* 46 -+1 4 -1121 1 --1 3 -1356 2 -1129 1 -+1 1 -+18 2 --19 1 -+1 1 -+18 1 --21 1 --2 1 -+2 1 -+2 1 -+1 1 -+18 2 -+57 1 --34 1 --22 1 -+56 1 --56 1 --1 2 --25 1 -+22 1 -+4 4 -+19 2 -+3 2 --22 62 -+56 2 --1 2 -+2 2 --1 2 --1 2 -+2 2 -+1 1 -+2 9 -+5 2 -+1 2 --1 4 -+1 2 -+1 2 -+4 4 --72 12 -1259 5 -+6 1 --6 10 -+6 9 --6 9 --1 12 -+13 2 -+3 2 -+2 3 -1683 3 -+2 1 -+1 1 --2 1 -+2 2 --2 1 -+2 2 --2 4 -cfi=(24) -cfn=(60) -calls=1 38 -* 8 -* 3 -+7 2 -+3 1 --5 2 -+3 1 --3 1 -+3 1 -+2 1 -+1 3 -+4 4 -+2 1 -fi=(3) -39 2 -+6 1 --2 1 -+2 1 -+9 1 --5 1 -+5 2 -+2 1 -+3 2 --1 1 --3 1 --6 30 -+5 12 -+1 5 -+13 15 --23 15 -+23 75 --23 75 -+65 2 -+5 3 -+7 2 -+1 4 -+6 2 -+18 2 -+15 2 -+2 2 -+1 2 -+9 3 -+6 2 -+4 2 -fe=(2) -1709 2 -+7 4 -cfi=(7) -cfn=(12) -calls=1 28 -* 33 -* 2 -+3 3 -fi=(25) ./elf/./setup-vdso.h -24 2 -fi=(28) ./elf/./dl-main.h -+88 6 -fi=(27) ./elf/../sysdeps/unix/sysv/linux/dl-vdso-setup.h --67 1 -fi=(28) -+67 1 -cfi=(29) -cfn=(72) -calls=1 706 -* 2044 -fe=(2) -1744 4 -cfi=(37) -cfn=(108) -calls=1 56 -* 36 -+7 1 --5 1 -+5 2 --7 1 -+7 1 -+4 1 -+15 3 --15 1 -+4 1 --4 3 -+3 1 --2 1 -+3 1 --1 1 -+1 1 --2 1 -+1 2 -+12 2 -+1 3 -+5 1 --3 3 -+2 3 -+5 2 --4 1 -+6 1 --7 1 -+7 2 --1 1 -+1 5 -+2 5 -+6 3 -224 2 --1 1 -+1 2 -+1 1 --2 1 -+2 1 -1799 2 -+5 1 --1 1 -+1 3 -+24 1 -cfi=(38) -cfn=(110) -calls=1 199 -* 6 -fi=(39) ./elf/../sysdeps/generic/dl-debug.h -29 2 -fe=(2) -1828 1 -fi=(39) -29 2 -+1 1 -fe=(2) -1834 4 -+1 1 -cfi=(37) -cfn=(114) -calls=1 117 -* 1 -+5 4 -cfi=(40) -cfn=(116) -calls=1 29 -* 24 -+5 5 -+4 1 --2 1 -+2 2 -1153 1 --5 1 -+5 2 --5 1 -+11 2 --1 1 -+1 1 --1 1 -+1 4 --1 1 -+1 1 --1 1 -+1 1 --11 2 -+21 2 -+9 1 --7 1 --2 1 --1 1 -+10 1 -+18 2 --47 7 -1252 2 -1148 1 -1252 2 -1148 2 -1248 1 -1148 1 -1248 1 -1148 1 -fi=(3) -56 3 -fe=(2) -2335 2 -fi=(3) -59 2 -+3 4 -+2 3 -fi=(26) ./elf/../sysdeps/unix/sysv/linux/dl-vdso.h --24 1 -+1 6 -fi=(27) --11 2 -+3 2 -+6 2 -fi=(26) -+16 2 -fe=(2) -2601 5 -cfi=(18) -cfn=(40) -calls=1 309 -* 57 -* 1 -1210 2 -2603 2 -+1 1 -+48 1 -+1 2 --1 1 -+1 1 -+1 1 -1754 5 -+99 6 -cfn=(118) -calls=1 874 -* 25178049 - -fn=(232) -678 1 --2 2 -+2 1 --2 1 -+2 2 --2 1 -+2 1 -cfi=(68) -cfn=(234) -calls=1 392 -* 91206 -* 1 -+4 4 - -fn=(238) -736 2 -+2 2 --2 1 -+2 1 -+4 1 --6 3 -+2 1 -+4 1 -fi=(20) -44 1 -fe=(2) -753 1 -fi=(20) -44 5 -cfi=(21) -cfn=(46) -calls=1 +38 -* 36 -* 2 -fe=(2) -763 1 --12 1 --3 1 -+10 1 -+1 1 --2 1 -+6 1 -+2 1 --1 1 -+1 1 -+2 44 -+4 9 -+2 3 --7 3 --1 3 -+1 19 --1 19 -+10 2 -+3 2 -cfi=(38) -cfn=(242) -calls=1 97 -* 86 -+3 1 -cfi=(38) -cfn=(244) -calls=1 227 -* 107 -+7 1 -cfi=(38) -cfn=(246) -calls=1 422 -* 480 -* 1 -+1 1 -+6 1 -+3 1 --3 1 -+6 1 -cfi=(69) -cfn=(250) -calls=1 43 -* 74 -+4 2 --3 3 -+3 6 - -fl=(36) -fn=(102) -40 105 -+1 21 -cfi=(34) -cfn=(90) -calls=21 -2 -* 1272 -* 21 -fi=(107) ./string/../include/rtld-malloc.h -+15 84 -cfi=(21) -cfn=(51) -calls=4 -21 -* 104 -cfi=(21) -cfn=(50) -calls=17 -21 -* 442 -fe=(36) --12 21 -+3 21 -+1 42 --1 21 -+1 42 --1 21 -cfi=(22) -cfn=(52) -calls=21 -18 -* 1895 - -fl=(8) -fn=(328) _dl_sysdep_start_cleanup -148 1 - -fn=(14) -102 6 -+1 2 -+3 1 --3 1 -+3 1 -cfn=(16) _dl_sysdep_parse_arguments -calls=1 -27 -* 480 -+4 3 -cfi=(11) -cfn=(22) -calls=1 282 -* 11232 -+3 1 -cfi=(13) -cfn=(26) -calls=1 295 -* 35 -+2 1 -+7 2 --7 1 -cfi=(14) -cfn=(30) -calls=1 -79 -* 8 -+7 2 -+3 2 -cfi=(15) -cfn=(32) -calls=1 -88 -* 18 -* 3 -+12 2 -+3 5 -cfi=(2) -cfn=(34) -calls=1 1351 -* 25181907 -fi=(2) -498 3 -+89 15 -fe=(8) - -fn=(16) -79 1 --1 2 -+3 1 --1 1 -+1 2 -+2 1 --4 2 --1 4 -+2 2 -+1 2 --3 1 -+5 34 --1 33 -+1 33 -+7 1 --4 3 -+4 2 --4 1 -+4 1 -cfi=(9) -cfn=(18) -calls=1 -59 -* 101 -fi=(10) ./elf/../sysdeps/unix/sysv/linux/dl-parse_auxv.h --57 1 -+8 1 --9 2 -+7 1 --7 1 -+1 1 -+6 1 -+2 1 -+1 1 -+1 3 --1 1 -+1 66 --1 22 -+1 46 --2 69 -fe=(8) -+52 1 -+1 1 -+1 1 -fi=(10) --50 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -fe=(8) -+42 2 -fi=(10) --50 2 --1 1 -+3 1 -+1 1 -+1 1 -+1 1 -+2 1 -+1 1 --7 1 -+5 1 -fe=(8) -+41 1 -+1 1 -+1 1 -fi=(10) --49 1 -fe=(8) -+50 5 - -fl=(79) -fn=(304) check_match -32 3 --1 3 -+2 3 --1 3 --1 3 -+2 3 --1 3 --1 3 -+2 9 --1 3 -+1 3 --2 18 -+5 3 --5 9 -+4 3 -+1 3 -+12 12 -+3 3 -+2 3 --2 6 -+2 6 -cfi=(24) -cfn=(60) -calls=3 -15 -* 351 -* 3 -+4 3 -+1 3 --1 9 -+1 21 -+1 9 -cfi=(24) -cfn=(60) -calls=3 -21 -* 219 --19 9 -+24 27 - -fn=(302) -74 9 -+1 3 --1 24 -+4 3 --4 9 -+2 3 -+2 9 -+37 3 --37 12 -+1 3 -+2 12 -+3 3 -+2 6 --2 6 -+3 15 --3 5 -+2 4 --2 4 -+3 10 --3 2 -+3 3 -cfn=(304) -calls=3 -55 -* 759 -+3 3 -+3 6 -+23 33 - -fl=(18) -fn=(40) -309 24 --3 24 -+3 24 -+34 69 -+3 23 --1 23 -+1 23 -+1 23 -+2 23 -+1 23 --4 137 --1 137 -+1 137 -+1 137 -+2 137 -+1 137 --7 159 -+12 22 -+1 22 --43 4 -+17 1 --1 1 --27 1 -122 1 -329 1 -122 5 -+4 1 -+1 1 -+1 1 -+1 1 -+1 1 -+46 1 -+1 1 -+1 1 -337 1 -+2 1 --2 1 -+1 1 -+5 8 -+3 4 --1 4 -+1 4 -+1 4 -+2 4 -+1 4 -+5 1 -+1 2 -190 1 --7 1 -+2 1 -351 2 - -fl=(19) -fn=(42) -59 63 -+3 21 --3 231 -+3 21 --3 105 -+3 21 -+21 40 -cfi=(34) -cfn=(90) -calls=20 -44 -* 1057 --3 40 -+7 40 --4 20 -+9 40 --9 20 -fi=(20) --39 80 -cfi=(21) -cfn=(46) -calls=20 +38 -* 832 -* 4 -cfi=(21) -cfn=(46) -calls=1 +38 -* 45 -* 21 -fe=(19) -+51 21 -+5 42 -+3 21 --1 21 --4 21 -+1 21 -+5 84 -cfi=(22) -cfn=(52) -calls=21 -75 -* 1773 -+2 21 --2 21 -+2 21 -+13 42 -+6 1 -+2 6 -+3 4 --3 120 -+3 80 -+4 21 --2 21 -+2 21 -+2 21 -+3 30 -+2 16 --2 48 -fi=(23) -1348 16 --7 16 -fe=(19) -155 147 --6 21 -+1 21 --1 21 -+1 21 -+29 21 --24 21 -+2 40 -+3 20 --3 20 -+7 120 -+4 20 -+8 1 -+3 1 -+10 2 --10 20 -+10 40 -+2 40 -cfi=(34) -cfn=(90) -calls=20 39 -* 1243 -+4 20 --4 40 -+4 20 -+68 315 -131 63 --12 40 -+4 20 --4 20 -+34 1 -+7 3 -+85 60 -cfi=(22) -cfn=(52) -calls=20 29 -* 1768 -* 20 -+6 60 --1 20 -+1 582 --1 281 -+1 281 -+2 20 -+3 20 -+3 40 --91 60 -fi=(20) -56 80 -cfi=(21) -cfn=(51) -calls=5 -21 -* 130 -cfi=(21) -cfn=(50) -calls=15 -21 -* 390 -* 20 -fe=(19) -200 20 -64 3 -+2 1 -+1 5 -+10 1 --6 3 - -fn=(56) -31 63 -+2 42 --2 42 -+2 42 --2 21 -+2 21 -cfi=(16) -cfn=(58) -calls=21 +11 -* 42 -+2 168 -+3 690 -+2 20 -+2 20 -+4 80 -+1 60 --1 40 -+5 20 --4 20 -+4 40 --3 40 -+2 80 -+1 20 --1 20 -cfi=(16) -cfn=(58) -calls=20 -6 -* 40 --4 4 -+1 3 --1 2 -+5 1 --4 1 -+4 2 --3 2 -+2 4 -+1 1 --1 1 -cfi=(16) -cfn=(58) -calls=1 -6 -* 2 --5 2 - -fl=(64) -fn=(202) -30 1 -+4 1 --4 4 -+4 2 --4 2 -+4 1 -+29 4 --17 1 -+17 2 -cfi=(59) -cfn=(179) -calls=1 201 -* 137395 --18 2 - -fn=(203) -30 19 -+4 19 --4 76 -+4 38 --4 38 -+4 19 -+29 76 --17 19 -+17 38 --18 38 - -fl=(66) -fn=(216) -35 3 -+1 1 --1 4 -+1 1 -cfi=(34) -cfn=(90) -calls=1 +3 -* 49 -* 1 -+1 4 -cfi=(22) -cfn=(52) -calls=1 -8 -* 98 -+1 7 - -fl=(32) -fn=(80) -25 12 -+1 6 --1 12 -+1 6 -+4 3 -+4 6 --4 6 -+4 6 -+2 3 -+11 18 --20 6 -+20 12 - -fn=(78) -51 20 -+3 10 -cfn=(80) -calls=5 -29 -* 84 -* 5 -+8 20 - -ob=(10) -fl=(100) -fn=(384) -0 12 - -ob=(3) -fl=(92) -fn=(356) -46 3 -+5 2 --5 1 -+5 1 -+4 7 -+6 3 -+10 1 -+1 2 --10 1 -+1 3 -+9 1 --1 1 -cfi=(93) ./misc/./misc/init-misc.c -cfn=(358) __init_misc -calls=1 -40 -* 234 - -fl=(81) -fn=(308) -fi=(2) -2398 1 -cob=(1) -cfi=(8) -cfn=(328) -calls=1 148 -* 1 -+4 3 -cob=(1) -cfi=(40) -cfn=(330) -calls=1 46 -* 4 -+5 2 -cob=(1) -cfi=(37) -cfn=(154) -calls=1 38 -* 7 -+1 1 -+1 1 -cob=(1) -cfi=(37) -cfn=(114) -calls=1 117 -* 1 -+5 1 -cob=(1) -cfi=(61) -cfn=(332) -calls=1 536 -* 22 -+5 16 -fe=(81) -33 10 -+2 1 -cfi=(82) ./ctype/./ctype/ctype-info.c -cfn=(310) __ctype_init -calls=1 -4 -* 24 -+3 2 -fi=(84) ./elf/../sysdeps/nptl/pthread_early_init.h --5 2 -fe=(81) -+5 1 -+3 4 -fi=(84) --8 1 -cfi=(83) ./resource/../sysdeps/unix/sysv/linux/getrlimit64.c -cfn=(312) getrlimit -calls=1 +5 -* 12 -* 2 -+1 3 -+4 3 -+7 2 -fi=(108) ./elf/../nptl/nptl-stack.h -+13 2 -fi=(84) --13 1 -fi=(108) -+13 3 -fi=(84) --12 3 -fi=(108) -+12 1 -fi=(84) --12 1 -+6 6 -+1 2 --1 1 -+1 1 -+1 1 -+3 1 -cfi=(85) ./nptl/./nptl/pthread_mutex_conf.c -cfn=(316) __pthread_tunables_init -calls=1 -7 -* 1597 -fe=(81) - -fl=(83) -fn=(312) -38 2 -+1 10 - -fl=(85) -fn=(316) -50 3 -+1 1 --1 5 -+1 4 --1 1 -+1 1 -cob=(1) -cfi=(11) -cfn=(28) -calls=2 408 -* 43 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 -17 -* 1500 -* 29 -fi=(81) --2 10 -fe=(85) - -fl=(103) ./nptl/./nptl/pthread_once.c -fn=(434) pthread_once@@GLIBC_2.34 -139 2 -+1 2 -+3 1 -cfn=(436) __pthread_once_slow -calls=1 -75 -* 17 - -fn=(436) -68 13 -+8 2 -+4 2 - -fl=(95) ./string/./string/strchr.c -fn=(362) index -46 4 --5 4 -+5 4 -+1 9 --1 9 -+4 9 --4 9 -+2 20 -179 2 -71 27 -+61 3 --14 6 -+14 3 --11 3 -+11 3 --8 3 -+8 12 -+8 6 -+2 2 -+2 4 -+2 2 -+2 4 -+2 2 -+2 4 -+2 2 -+4 4 -+2 2 -+2 4 -+2 1 -51 1 -179 1 --17 2 - -fl=(82) -fn=(310) -31 4 -+2 2 --2 3 -+2 1 --2 1 -+4 2 --4 1 -+2 1 -+2 2 --4 1 -+2 1 -+2 1 --4 1 -+2 1 -+2 1 -+1 1 - -fl=(93) -fn=(358) -31 1 --1 2 -+1 1 --1 3 -+1 1 -+2 3 -cfi=(94) ./string/./string/strrchr.c -cfn=(360) rindex -calls=1 -4 -* 209 -+1 1 -+3 4 -+1 4 -+2 5 - -fl=(96) -fn=(364) -84 6 -+1 4 -+1 4 -+2 1 - -fl=(94) -fn=(360) -29 7 -+7 2 -+7 6 --3 9 -cfi=(95) -cfn=(362) -calls=3 +6 -* 139 -* 3 -cfi=(95) -cfn=(362) -calls=1 +6 -* 32 -* 4 -+7 7 - -fl=(102) ./string/./string/memset.c -fn=(418) memset -31 2 --2 2 -+2 2 -+5 2 -+5 4 -+4 6 -+8 2 -+1 8 -+2 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 --10 2 -+2 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 --10 14 -+16 4 -+1 2 -+6 2 --41 4 -+45 2 -+8 2 - -ob=(4) -fl=(89) -fn=(342) -0 10 - -ob=(7) -fl=(97) -fn=(366) -0 11 - -ob=(4) -fl=(89) -fn=(342) -0 1 - -ob=(7) -fl=(97) -fn=(366) -0 1 - -ob=(4) -fl=(89) -fn=(342) -0 1 - -ob=(8) -fl=(98) -fn=(372) -0 12 - -ob=(11) -fl=(101) -fn=(422) std::locale::facet::_S_get_c_name() -0 3 - -fn=(400) std::locale::locale() -0 8 -cfn=(402) 0x00000000000b5f2c -calls=1 0 -0 6100 - -fn=(414) std::locale::_Impl::_Impl(unsigned long) -0 22 -cfn=(426) std::ctype::ctype(unsigned short const*, bool, unsigned long) -calls=1 0 -0 2228 -cfn=(422) -calls=1 0 -0 3 -cob=(3) -cfi=(102) -cfn=(418) -calls=2 31 -0 168 -cob=(1) -cfi=(86) -cfn=(322) -calls=3 34 -0 2714 -0 83 - -fn=(396) std::ios_base::Init::Init() -0 54 -cfn=(400) -calls=1 0 -0 6108 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 816 -0 11 - -fn=(402) -0 11 -cfn=(414) -calls=1 0 -0 5218 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 851 -0 11 -0 9 - -fn=(426) -0 15 -cfn=(430) std::locale::facet::_S_get_c_locale() -calls=1 0 -0 1218 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 984 -0 11 - -fn=(430) -0 7 -cob=(3) -cfi=(103) -cfn=(434) -calls=1 139 -0 22 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 1178 -0 11 - -fn=(390) -0 5 -cfn=(396) -calls=1 0 -0 6989 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 909 -0 11 - -ob=(6) -fl=(91) -fn=(350) -0 12 - -totals: 25203449 diff --git a/callgrind.out.53033 b/callgrind.out.53033 deleted file mode 100644 index 7c076db..0000000 --- a/callgrind.out.53033 +++ /dev/null @@ -1,6585 +0,0 @@ -# callgrind format -version: 1 -creator: callgrind-3.21.0.GIT -pid: 53033 -cmd: ./build/server/instrew /bin/ls -part: 1 - - -desc: I1 cache: -desc: D1 cache: -desc: LL cache: - -desc: Timerange: Basic block 0 - 3375057 -desc: Trigger: Program termination - -positions: line -events: Ir -summary: 25203449 - - -ob=(5) /mnt/sda1/mikhaylov/instrew/build/server/instrew -fl=(90) ??? -fn=(348) 0x0000000000017942 -0 3 - -ob=(9) /usr/lib/riscv64-linux-gnu/libm.so.6 -fl=(99) ??? -fn=(378) 0x000000000000c4a8 -0 12 - -ob=(1) /usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1 -fl=(21) ./elf/./elf/dl-minimal-malloc.c -fn=(46) __minimal_calloc -82 46 -+3 276 -fi=(20) ./elf/../include/rtld-malloc.h --29 138 -cfi=(21) -cfn=(51) __minimal_malloc'2 -calls=5 -21 -* 158 -cfi=(21) -cfn=(50) __minimal_malloc -calls=41 -21 -* 1217 -fe=(21) - -fn=(106) __minimal_free -95 12 -+2 12 --2 6 -+2 6 --2 6 -+2 6 -+7 30 - -fn=(50) -35 172 -+1 258 --1 344 -+1 86 -+11 170 -+1 85 --1 85 -+3 170 --3 1 -+1 1 --1 1 -+3 162 -+5 36 -+1 6 -+2 6 -+1 42 -cfi=(54) ./misc/../sysdeps/unix/sysv/linux/mmap64.c -cfn=(166) mmap -calls=6 -9 -* 42 -+2 6 --2 6 -+2 6 -+2 12 -+2 8 -+4 4 --1 4 -+1 4 -+2 24 --3 82 -+1 82 -+2 492 -cfi=(59) ./elf/./elf/dl-deps.c -cfn=(179) _dl_map_object_deps'2 -calls=1 423 -* 83648 --3 2 --3 4 -+4 4 --27 2 --1 2 -+1 2 -+1 2 --2 2 - -fn=(51) -35 68 -+1 102 --1 136 -+1 34 -+11 68 -+1 34 --1 34 -+3 134 -+5 6 -+1 1 -+2 1 -+1 7 -cfi=(54) -cfn=(166) -calls=1 -9 -* 7 -+2 1 --2 1 -+2 1 -+2 2 -+2 2 -+4 1 --1 1 -+1 1 -+2 6 --3 33 -+1 33 -+2 198 -cfi=(59) -cfn=(179) -calls=17 423 -* 838808 - -fl=(75) ./elf/./dl-find_object.h -fn=(286) _dl_find_object_from_map -95 44 -+1 66 -+1 44 -+6 132 -+1 22 -+1 66 --1 278 -+1 300 -+2 55 -+5 11 -+4 22 -+4 11 - -fl=(16) ./elf/../sysdeps/nptl/dl-tls_init_tp.c -fn=(36) __tls_pre_init_tp -56 4 -+1 2 -+1 2 -+3 2 --5 2 -+1 2 -+1 2 -+3 2 -+1 2 -+2 1 - -fn=(58) rtld_mutex_dummy -44 432 - -fl=(45) ./setjmp/../sysdeps/riscv/setjmp.S -fn=(134) __sigsetjmp -31 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+3 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+1 68 -+5 68 -+1 68 - -fl=(61) ./elf/./elf/dl-cache.c -fn=(192) search_cache -206 38 -+5 19 --5 133 -+5 57 -+6 19 --11 38 -+5 19 --5 171 -+5 19 -cfi=(11) ./elf/./elf/dl-tunables.c -cfn=(28) __tunable_get_val -calls=19 408 -* 418 -* 19 -+17 19 -+3 38 --15 19 -+14 76 --36 19 -+36 19 -+9 19 --8 38 --47 38 -+55 19 --4 19 --5 608 --36 152 -+36 152 -+9 152 --8 304 --47 304 -+55 152 --4 152 -+4 171 -cfn=(194) _dl_cache_libcmp -calls=171 368 -* 12284 -+1 171 -356 152 -+3 86 -228 86 -363 304 --6 66 -228 142 -+22 36 -+5 18 --71 36 -+71 18 --2 18 -+2 18 -cfn=(194) -calls=18 368 -* 1281 -* 37 --7 38 --34 114 --1 95 -+64 19 -170 19 -277 19 -170 57 -+97 20 -+4 1 --87 2 -+87 1 -+1 3 -cfn=(194) -calls=1 +96 -* 170 -* 1 -+5 38 -+75 3 --74 36 -+7 54 -fi=(62) ./elf/../sysdeps/generic/dl-cache.h -125 18 -fe=(61) -303 18 -fi=(62) -125 36 -fe=(61) -303 36 -+3 54 -+34 54 -+2 18 - -fn=(332) _dl_unload_cache -536 6 -+2 1 --3 2 -+3 1 -cfi=(73) ./misc/../sysdeps/unix/syscall-template.S -cfn=(334) munmap -calls=1 120 -* 5 -+7 1 --6 2 -+4 2 -+2 2 - -fn=(186) _dl_load_cache_lookup -413 190 -+2 57 --2 19 -+2 38 -+3 76 -+69 36 -+5 38 -+3 19 --3 19 -+3 114 -cfn=(192) -calls=19 206 -* 19097 -* 19 -+15 57 -+4 19 -+8 36 -cfi=(34) ./string/./string/strlen.c -cfn=(90) strlen -calls=18 39 -* 1406 -+1 72 -+1 72 -cfi=(22) ./string/./string/memcpy.c -cfn=(52) memcpy -calls=18 29 -* 1912 -+1 18 -cfi=(36) ./string/./string/strdup.c -cfn=(102) strdup -calls=18 40 -* 3493 -+1 209 --37 2 --68 6 -cfi=(46) ./elf/./elf/dl-misc.c -cfn=(188) _dl_sysdep_read_whole_file -calls=1 36 -* 85 -+8 1 --8 1 -+8 4 -+1 4 -cfi=(18) ./string/./string/memcmp.c -cfn=(40) bcmp -calls=1 309 -* 67 -* 1 -+3 3 -+1 1 --1 1 -fi=(62) -194 1 -+1 4 -fe=(61) -441 1 -+1 2 - -fn=(194) -368 380 -+2 380 -+20 1048 -+2 1044 -+4 880 -+1 880 --29 1810 -+4 1076 --2 2152 -+2 2152 --2 1076 -+2 28 -+8 25 --2 50 -+2 50 --1 50 -+1 25 -+1 20 --1 4 -+1 4 --1 12 -+2 25 --3 25 -+3 75 -+1 20 --1 4 -+1 4 --1 12 -+2 25 -+16 57 --9 4 -+10 4 --8 328 --5 6 - -fl=(17) ./elf/./elf/dl-environ.c -fn=(38) _dl_next_ld_env_entry -29 3 --1 3 -+4 6 -+2 2 -+1 4 --3 31 -+13 31 --13 31 -+2 66 -+1 20 -+5 2 --3 2 -+3 2 -+2 2 -+7 1 - -fl=(69) ./elf/../include/list.h -fn=(250) __tls_init_tp -43 3 -fi=(16) -+25 3 -fe=(69) --24 3 --1 1 -fi=(16) -+29 1 -fe=(69) --27 1 -fi=(16) -+24 1 -fe=(69) --23 1 -fi=(16) -+29 1 -fe=(69) --28 1 -fi=(16) -+28 2 -+7 3 -+5 1 --11 1 -+1 1 -+5 1 -+8 1 --15 1 -+1 1 -+1 1 -+10 1 -+2 1 -+1 1 -+3 4 -+2 3 -+3 1 -+8 4 -cfi=(11) -cfn=(28) -calls=1 408 -* 21 -+24 2 -fi=(104) ./elf/../sysdeps/unix/sysv/linux/rseq-internal.h --83 1 -fi=(16) -+84 1 -fi=(104) --84 1 -fi=(16) -+83 1 -+1 3 -fe=(69) - -fl=(42) ./string/./string/wordcopy.c -fn=(142) _wordcopy_fwd_aligned -37 688 -+33 6 -+2 6 --1 6 -+2 6 -+29 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+4 6 --1 6 --1 6 -+4 6 --22 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+4 6 --1 6 --1 6 -+4 6 --19 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+2 7 -+4 7 --3 7 -+4 7 --1 7 --1 7 -+4 7 --16 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+2 6 -+4 6 --3 6 -+4 6 --1 6 --1 6 -+4 6 --13 40 -+4 40 --3 40 -+2 40 -+4 40 --3 40 -+2 40 -+4 40 --3 40 -+4 40 --1 40 --1 40 -+4 40 --10 18 -+4 18 --3 18 -+2 18 -+4 18 --3 18 -+4 18 --1 18 --1 18 -+4 18 --7 9 -+4 9 --3 9 -+4 9 --1 9 --1 9 -+4 9 --28 6 -+4 6 --3 6 -+2 6 -+4 6 --3 12 -+29 86 -+1 86 --90 9 -+2 9 --1 9 -+1 9 -+1 9 -+1 9 -+2 18 -+2 18 --1 18 -+2 18 -+1 18 -+2 40 -+2 40 --1 40 -+1 40 -+1 40 -+1 40 -+2 6 -+2 6 --1 6 -+2 6 -+1 6 -+2 7 -+2 7 --1 7 -+1 7 -+1 7 -+1 7 - -fn=(122) _wordcopy_fwd_dest_aligned -150 75 -+7 25 --6 25 -+6 25 --6 25 -+4 25 -+2 105 -+17 17 -+13 3 --4 3 -+1 3 -+4 3 -+29 12 -+1 25 --21 3 --1 1 -+4 1 --3 1 -+3 3 --1 1 -+4 1 --3 1 -+3 3 -+3 1 --4 1 -+1 1 -+3 3 -+3 1 --4 1 -+5 1 --4 1 -+3 1 --1 1 -+4 1 --12 51 --1 17 -+4 17 --3 17 -+3 51 -+3 17 --4 17 -+1 17 -+3 51 -+3 17 --4 17 -+5 17 --4 17 -+3 17 --1 17 -+4 17 --6 15 -+3 5 --4 5 -+5 5 --4 5 -+3 5 --1 5 -+4 5 -+5 110 --57 5 -+1 5 -+1 5 -+1 10 -+1 5 -+1 5 -+11 17 -+1 34 -+2 34 -+2 17 - -fn=(222) _wordcopy_bwd_aligned -234 16 -+77 2 -+1 2 -+2 2 -+5 2 --4 2 -+2 2 -+1 2 -+3 2 -+5 2 -+1 2 --82 2 --1 2 --1 2 -+3 2 -+1 2 - -fl=(50) ./io/../sysdeps/unix/sysv/linux/stat64.c -fn=(158) fstat -29 21 -fi=(51) ./io/../sysdeps/unix/sysv/linux/fstat64.c -+1 21 -+5 84 -cfi=(52) ./io/../sysdeps/unix/sysv/linux/fstatat64.c -cfn=(162) fstatat -calls=21 +64 -* 147 -fe=(50) - -fl=(71) ./elf/./elf/dl-lookup.c -fn=(268) check_match -71 135720 -+3 16965 --3 67860 -+3 16965 --3 50895 -+1 16965 -+2 67857 -+13 67856 -+3 21197 -cfi=(24) ./string/./string/strcmp.c -cfn=(60) strcmp -calls=1058 -52 -* 120644 -* 1058 -+4 16965 -+1 16965 -+2 15941 -+19 63764 -+1 31882 --1 15941 -+1 111587 -+2 162 -+1 20 --41 16920 -+84 135720 --18 1024 -+2 4092 -+1 2046 --1 2046 -+1 1023 --1 1023 -+4 2 -+1 6 -+2 2 --75 90 -+39 47661 -cfi=(24) -cfn=(60) -calls=15887 -80 -* 997541 -* 15887 --44 9 - -fn=(266) do_lookup_x -348 85295 -+1 17059 --1 307062 -+7 34118 -+41 34118 -+3 34118 --33 17059 -+33 17059 --25 34118 -+86 17059 --61 102354 --19 155594 -+8 77797 -+1 77797 --1 155594 -+1 77797 -+3 77797 --8 77797 -+1 77797 -+3 77797 -+1 77797 -+4 77797 -+4 77797 -+3 77797 --3 77797 --2 233391 -+5 77797 -+3 388985 -+99 182628 -359 155594 -+3 77797 -+4 77797 -+4 233391 -+4 233391 -fi=(23) ./elf/../sysdeps/generic/ldsodefs.h -141 33842 -fe=(71) -460 33842 -+3 33842 -+4 94367 -+16 16835 -+2 16835 --2 16835 -+1 16835 -+1 16835 --78 20171 --1 100855 -+2 20171 -+2 77048 -+7 38524 --1 250406 -+7 57480 --10 144320 -+2 16965 -+1 33930 --1 33930 -+2 50895 --1 33930 -+1 16965 --1 135720 -cfn=(268) -calls=16965 71 -* 2082301 -+4 16965 -+3 90 -+82 138 -+1 255885 --35 15996 -223 344 -+2 344 --2 86 -+2 258 -+2 86 --2 258 --2 86 -+2 172 -cfi=(16) -cfn=(58) -calls=86 44 -* 172 -+2 86 -+1 86 -+1 258 -+2 170 -+1 170 --1 340 -+1 170 --1 1015 -+24 189 -+3 105 -+1 210 --24 190 -+1 190 --1 190 -+1 2 -cfi=(24) -cfn=(60) -calls=1 38 -* 157 -* 1 -+2 2 -+10 1 -+1 2 -+2 6 -cfi=(16) -cfn=(58) -calls=1 44 -* 2 -485 2 --31 4685 -+2 1 -263 1680 -+49 170 --1 85 -+19 255 -+2 85 --2 680 -+2 255 -cfi=(16) -cfn=(58) -calls=85 44 -* 170 -+2 170 -485 85 -335 85 --1 85 -+1 85 -177 435 --2 92 -+1 184 --3 354 -319 85 -180 85 -+1 85 -+1 85 -+1 85 -319 255 --59 110 -fi=(20) -44 7 -cfi=(21) -cfn=(46) -calls=1 +38 -* 36 -* 1 -fe=(71) -303 1 --72 2 --59 2 -307 1 -+1 4 --2 1 -+1 1 -+1 1 --7 1 -172 1 --1 21081 -+99 8 -cfi=(46) -cfn=(280) _dl_higher_prime_number -calls=2 125 -* 143 -fi=(20) -44 2 -fe=(71) -270 2 -fi=(20) -44 8 -cfi=(21) -cfn=(46) -calls=2 +38 -* 102 -* 2 -fe=(71) -273 2 -+7 8 -172 6 -280 2 -+1 184 -+1 210 -171 140 -+1 70 --1 70 -+1 70 -+1 295 -+2 14 -+1 28 --3 168 -+7 70 -+1 70 -+1 70 -+1 70 -+97 184 -+6 24 --16 2 -+16 2 -cfi=(21) -cfn=(106) -calls=2 95 -* 26 -172 2 -290 4 --3 2 -172 2 -289 2 -+1 6 -172 4 --1 6 -+6 10 -437 169200 - -fn=(262) _dl_lookup_symbol_x -756 50910 -+2 33940 --2 322430 -+2 16970 -fi=(72) ./elf/../sysdeps/generic/dl-new-hash.h -74 16970 -+3 16970 --7 16970 --1 16970 -+1 16970 -+10 33940 -+1 16970 --1 805282 -+1 402641 -+20 1644636 -+1 822318 -+3 822318 --31 411159 -+30 411159 --27 411159 -fe=(71) -762 50910 --4 16970 -+1 16970 -+3 16970 --4 16970 -+1 16970 -+3 16970 -+4 48764 -+5 33940 --2 16970 -+6 16970 --7 101820 -+7 552 -+1 187649 -cfn=(266) -calls=17059 348 -* 7495906 -* 17059 -+28 16970 --23 16970 -+23 16970 --23 16970 -+24 84589 -+7 16921 --7 16921 -+35 101526 -+14 33842 -+3 50763 -+17 16921 -+2 33842 --76 16921 -+76 236992 --76 49 -+76 686 -fi=(72) -87 8452 -+2 16904 -+1 8452 -fe=(71) -783 245 -+18 147 -+54 3 - -fl=(34) -fn=(90) -39 214 --1 102 -+2 230 --1 460 -+2 460 -+38 40 --41 280 -+32 112 -+2 280 --34 204 -+32 102 -+2 255 --2 534 -+2 1335 -+6 214 -+2 174 -+2 158 -+2 134 -+4 104 -+2 92 -+2 58 -+2 18 --56 534 -+57 18 -+4 9 --18 24 -+2 36 -+2 45 -+4 18 -+2 51 -+2 60 - -fl=(54) -fn=(166) -50 116 -+8 232 -+2 58 - -fl=(78) ./elf/../sysdeps/nptl/dl-mutex.c -fn=(300) __rtld_mutex_init -30 2 -+10 1 --3 2 -+3 8 --10 2 -+10 1 -cfi=(79) ./elf/./elf/dl-lookup-direct.c -cfn=(302) _dl_lookup_direct -calls=1 +34 -* 327 -+4 1 -+1 8 -+2 1 --2 3 -+2 8 --2 1 -+2 1 -cfi=(79) -cfn=(302) -calls=1 +27 -* 311 -+4 1 -+1 8 -+1 2 --1 2 -+1 3 - -fl=(37) ./elf/./elf/dl-debug.c -fn=(114) _dl_debug_state -117 2 - -fn=(154) _dl_debug_update -38 21 -+3 42 --1 21 -+4 42 -+4 21 - -fn=(108) _dl_debug_initialize -56 1 -+3 1 -+26 2 --22 1 -+22 1 -+10 1 --32 1 -+1 2 -+21 1 -+5 1 -+5 1 --5 1 -+1 3 -+1 1 -+3 1 -+4 1 -+8 1 --50 4 -+39 11 - -fl=(7) ./elf/./elf/dl-setup_hash.c -fn=(12) _dl_setup_hash -28 44 -+3 66 -+1 44 -+2 22 --1 22 -+3 88 -+5 44 -+3 22 -+1 22 --8 22 -+4 22 -+3 22 -+1 22 --7 22 -+3 22 --3 22 -+7 22 --4 22 -+4 44 --7 22 -+2 22 -+3 22 -+2 22 -+5 22 - -fl=(58) ./io/../sysdeps/unix/sysv/linux/access.c -fn=(176) access -25 2 -+4 10 -+2 1 - -fl=(14) ./elf/../sysdeps/unix/sysv/linux/brk.c -fn=(30) brk -36 1 -fi=(105) ./elf/../sysdeps/unix/sysv/linux/brk_call.h --12 2 -fe=(14) -+13 2 -+1 1 -+6 1 -+1 1 - -fl=(31) ./elf/./elf/dl-hwcaps-subdirs.c -fn=(76) _dl_hwcaps_subdirs_active -29 2 - -fl=(59) -fn=(178) _dl_map_object_deps -144 7 --1 1 -+1 1 --1 14 -+1 3 --14 1 --2 1 -+1 1 -+1 1 -+13 1 --7 1 -+7 2 --7 7 -+24 3 --28 1 --2 4 -+31 1 --31 3 --2 1 -+1 1 -+1 1 -+6 2 -+24 1 --24 3 --6 1 -+30 2 --32 4 -+60 1 --60 2 -+54 3 -fi=(63) ./elf/../include/scratch_buffer.h -78 2 -fe=(59) -184 2 -+82 2 -fi=(63) -77 1 -fe=(59) -184 1 -+82 1 --38 1 -+4 1 --4 1 -fi=(63) -77 1 -fe=(59) -232 1 --4 1 -+4 1 --35 1 --33 1 -+68 1 --39 1 -+35 4 --35 1 -+4 1 -+11 2 --11 2 -+1 2 -+12 1 -+11 1 --11 2 -+7 1 -+4 1 --11 1 -+6 1 --1 1 -+2 1 -+4 2 --31 1 -+32 1 -+6 3 --6 1 -+6 4 -cfi=(29) ./elf/./elf/dl-load.c -cfn=(98) _dl_dst_count -calls=1 +10 -* 102 -* 2 -+4 2 --4 1 -+4 2 --2 1 -+2 1 -cfi=(29) -cfn=(98) -calls=1 +6 -* 162179 -cfi=(44) ./elf/./elf/dl-error-skeleton.c -cfn=(132) _dl_catch_exception -calls=1 -57 -* 5612 -* 31 -fi=(2) ./elf/./elf/rtld.c -1982 5 -+1 6 --1 1 -+1 3 --1 1 -+1 42 --1 21 -+1 63 --1 21 -+4 4 -+1 1 -+1 1 -+2 49 -+1 32 -+46 1 --42 1 -+8 7 -+1 1 -+2 2 -+4 1 --2 1 -+16 1 -+2 1 --1 1 -+1 2 -+2 2 -+1 1 --28 1 -+37 1 --1 5 -+2 8 -cfi=(44) -cfn=(230) _dl_receive_error -calls=1 238 -* 91242 -+10 3 -+1 2 --1 1 -+1 1 -+3 1 -842 2 -fi=(106) ./elf/../sysdeps/unix/sysv/linux/dl-osinfo.h -37 22 -+2 1 -fi=(2) -846 3 -fi=(106) -52 16 -fi=(2) -860 2 --5 4 -2058 2 -2267 1 --6 2 -+6 1 --10 1 -+13 1 --13 2 -+4 2 -+6 1 -+3 2 -+19 1 -+3 1 -+5 1 --8 1 -+3 1 -+6 1 --6 1 -+6 44 -+2 22 -+9 22 --9 44 -+5 44 -+2 22 -+6 66 -+2 22 -+1 126 -cfi=(70) ./elf/./elf/dl-reloc.c -cfn=(254) _dl_relocate_object -calls=21 207 -* 24897661 -+4 56 -+1 6 --23 3 -+23 3 -cfi=(38) ./elf/./elf/dl-tls.c -cfn=(276) _dl_add_to_slotinfo -calls=3 1015 -* 108 --23 5 -+32 3 -+4 5 -+2 4 -+7 5 -cfi=(38) -cfn=(282) _dl_allocate_tls_init -calls=1 528 -* 451 -+3 6 -+10 4 -+2 1 -+33 4 -cfi=(80) ./elf/./elf/dl-call-libc-early-init.c -cfn=(306) _dl_call_libc_early_init -calls=1 29 -* 2088 --82 1 -+1 1 --3 1 -2008 4 --2 2 -+5 1 --1 1 -+41 2 -cfn=(238) init_tls -calls=1 736 -* 937 -* 3 -2368 2 -cfi=(74) ./elf/./elf/dl-find_object.c -cfn=(284) _dl_find_object_init -calls=1 564 -* 3438 -+5 3 -cfi=(6) ./elf/./elf/dl-minimal.c -cfn=(292) __rtld_malloc_init_real -calls=1 76 -* 3484 -+3 1 -cfi=(78) -cfn=(300) -calls=1 30 -* 693 -+6 1 -+1 2 --1 1 -+1 2 --1 2 -+1 3 -cfi=(70) -cfn=(254) -calls=1 207 -* 5752 -* 1 -fe=(59) - -fn=(179) -208 51 --18 3 -+18 3 -417 3 -+2 6 -+3 2 --3 2 -+3 2 --3 2 -fi=(20) -56 12 -cfi=(21) -cfn=(51) -calls=1 -21 -* 26 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(59) -423 20 -fi=(20) -56 20 -fe=(59) -423 20 -+7 80 --1 20 -+1 40 -+1 20 --1 20 -cfi=(22) -cfn=(52) -calls=20 29 -* 1380 -+1 120 -cfi=(22) -cfn=(52) -calls=20 29 -* 1380 -+2 20 -+2 20 --1 20 -+1 60 -+4 42 -188 20 -+5 20 -+4 20 --4 20 -+4 60 -+1 80 -fi=(63) --67 76 -cfi=(64) ./malloc/./malloc/scratch_buffer_set_array_size.c -cfn=(203) __libc_scratch_buffer_set_array_size'2 -calls=19 30 -* 380 -fe=(59) -+70 40 -+4 40 -+5 18 -+11 18 --11 36 -+7 18 -+4 18 --11 18 -+6 18 --1 18 -+2 18 -+4 36 --31 18 -+32 18 -+6 54 --6 18 -+6 72 -cfi=(29) -cfn=(99) _dl_dst_count'2 -calls=18 +10 -* 1541 -* 132 -+4 132 --4 66 -+4 132 --2 66 -+2 66 -cfi=(21) -cfn=(51) -calls=17 35 -* 839250 -cfi=(21) -cfn=(50) -calls=1 35 -* 83674 -cfi=(64) -cfn=(202) __libc_scratch_buffer_set_array_size -calls=1 30 -* 137415 -cfi=(29) -cfn=(99) -calls=47 +6 -* 3185305 -cfi=(44) -cfn=(132) -calls=66 -57 -* 142597 -* 5114 -fi=(63) -85 2 -fe=(59) -448 5 -+1 1 -+3 2 -fi=(20) -56 2 -fe=(59) -463 2 -fi=(20) -56 5 -cfi=(21) -cfn=(51) -calls=1 -21 -* 26 -fe=(59) -465 1 -fi=(20) -56 1 -fe=(59) -465 1 -+5 4 -+1 1 --1 1 -+4 1 --2 1 -+6 44 -+5 22 -+2 110 -+5 66 --16 44 -+21 2 -+37 1 -+15 1 --11 1 -+11 1 --14 1 -+20 1 --1 2 -+1 1 --1 1 -+5 1 --4 6 --1 5 -cfi=(13) ./elf/./elf/dl-sort-maps.c -cfn=(226) _dl_sort_maps -calls=1 304 -* 1997 -+5 1 -+1 1 -+2 2 --1 1 -+1 2 -+1 1 -+7 1 -+3 1 -+3 16 --91 2 --41 40 --1 21 -+1 21 -183 7 -547 4 -cfi=(22) -cfn=(52) -calls=1 29 -* 133 -* 2 - -fn=(180) openaux -61 201 -+3 67 --3 67 -+3 67 -+1 134 --1 134 -+2 61 --2 305 -cfi=(29) -cfn=(138) _dl_map_object -calls=61 1971 -* 113465 -* 24 -cfi=(29) -cfn=(138) -calls=6 1971 -* 29061 -+5 67 --5 67 -+5 201 - -fl=(86) ./elf/../sysdeps/riscv/dl-trampoline.S -fn=(322) _dl_runtime_resolve -34 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+3 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+4 9 -+1 9 -+1 9 -+1 18 -+1 9 -cfi=(87) ./elf/./elf/dl-runtime.c -cfn=(324) _dl_fixup -calls=9 -7 -* 8556 -+1 9 -+3 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+3 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+1 9 -+3 9 -+3 9 - -fl=(13) -fn=(228) dfs_traversal.part.0 -140 120 -+8 15 -+2 15 --10 15 -+8 30 --8 30 -+10 15 -+2 28 --7 14 -+7 14 --7 206 -+7 256 -+9 15 -+15 15 -+2 30 --2 30 -+1 15 -+1 117 -cfn=(229) dfs_traversal.part.0'2 -calls=4 -38 -* 374 -* 8 - -fn=(229) -140 56 -+8 7 -+2 7 --10 7 -+8 14 --8 14 -+10 7 -+2 12 --7 6 -+7 6 --7 57 -+7 68 -+9 7 -+15 7 -+2 14 --2 14 -+1 7 -+1 58 -cfn=(229) -calls=3 -38 -* 135 -* 6 - -fn=(226) -304 15 -+8 2 --8 4 -+8 1 -+4 16 -188 1 -+28 1 --28 1 --2 1 -+1 1 -+29 1 --28 8 -+1 1 --1 2 -+1 3 --1 1 -+1 21 --1 42 -+1 63 --1 21 -+28 5 -+5 2 -+2 1 -+1 2 --79 1 -+81 1 --81 2 -+81 65 -+2 22 --83 111 -cfn=(228) -calls=15 -5 -* 1362 -* 30 -+86 44 -+18 2 -+13 1 -+54 1 --47 3 -cfi=(22) -cfn=(52) -calls=1 29 -* 133 -+13 3 - -fn=(26) _dl_sort_maps_init -295 1 -+1 3 --1 1 -+1 1 -cfi=(11) -cfn=(28) -calls=1 408 -* 21 -* 1 -+3 1 --1 2 --1 2 -+2 2 - -fl=(38) -fn=(248) allocate_dtv -365 4 -+5 2 --5 1 -+9 1 -fi=(20) -44 5 -cfi=(21) -cfn=(46) -calls=1 +38 -* 36 -fe=(38) -376 1 -+3 1 -+6 3 -+6 5 - -fn=(242) _dl_tls_static_surplus_init -97 2 -+4 1 --4 1 -+4 2 --4 1 -+4 1 --4 2 -+4 1 -cfi=(11) -cfn=(28) -calls=1 408 -* 22 -+1 1 --1 1 -+1 3 -cfi=(11) -cfn=(28) -calls=1 408 -* 22 -+6 1 --6 1 -+6 3 -+2 3 -+7 1 --34 5 -+35 2 --35 1 -+34 1 --2 2 -+2 2 -+1 4 - -fn=(244) _dl_determine_tlsoffset -227 3 --6 2 -+6 1 -+3 2 -+84 2 -+2 1 --2 2 --2 1 --88 1 --1 1 --1 1 -+94 3 -+3 3 --1 3 -+1 3 --1 6 -+3 3 -+2 12 -+14 12 -+1 6 -+3 3 -+1 6 -+6 3 --34 3 -+16 3 --16 9 -+38 3 -+8 1 --9 1 -+1 3 -+7 1 --7 1 -+8 2 - -fn=(246) _dl_allocate_tls_storage -422 1 -+13 2 -+1 1 --14 1 -+13 1 --13 2 -+14 1 --14 1 -fi=(20) -56 4 -cfi=(21) -cfn=(50) -calls=1 -21 -* 56 -fe=(38) -437 1 -+20 4 -+7 2 --7 1 -+7 2 -cfi=(9) ./string/./string/memset.c -cfn=(18) memset -calls=1 31 -* 331 -+7 1 --2 1 -+2 1 -cfn=(248) -calls=1 365 -* 59 -+1 1 -+3 6 - -fn=(276) -1015 6 -+9 6 --9 12 -+6 3 -+3 3 --9 15 -+14 6 -+34 3 -+7 27 --4 15 -+1 9 -+3 3 - -fn=(198) _dl_assign_tls_modid -147 6 --13 3 -+13 3 --13 3 -+52 3 -+2 6 --2 3 -+2 3 -+3 6 - -fn=(110) _dl_count_modids -199 4 -+1 2 - -fn=(282) -528 16 -+1 1 -+4 1 -+6 5 -cfi=(16) -cfn=(58) -calls=1 44 -* 2 -+3 5 -+12 1 --18 1 --1 1 -+43 1 -+3 1 --22 8 -+6 4 -+3 3 -+1 3 -+6 9 -+1 4 -+2 1 -+4 1 --4 3 -+1 1 -+3 1 --1 1 --3 2 -+4 2 --4 6 -+1 2 -+3 2 --1 2 -+4 3 -+1 9 -+20 3 --15 3 -+7 3 -+8 3 -+2 9 -cfi=(22) -cfn=(52) -calls=3 29 -* 131 -* 18 -cfi=(9) -cfn=(18) -calls=3 31 -* 137 -+6 6 --55 12 -+61 5 -cfi=(16) -cfn=(58) -calls=1 44 -* 2 -+3 1 -+3 16 - -fl=(70) -fn=(272) _dl_protect_relro -356 44 -+3 22 --4 22 -+1 88 -+3 22 --4 66 -+4 22 --3 22 -+7 22 -+7 88 --6 66 -cfi=(73) -cfn=(274) mprotect -calls=22 120 -* 110 -* 22 - -fn=(254) -207 330 -+16 44 --16 88 -+14 22 -+2 22 -+2 44 -+1 22 --1 22 -+1 22 -+19 66 -+6 22 --34 12 -+38 110 -+7 44 -fi=(4) ./elf/../sysdeps/riscv/dl-machine.h -+51 44 -+3 80 -+4 40 -+2 60 -+1 20 -+3 88 -fe=(70) --25 896 --83 50 --28 20 -fi=(4) -+3 10 -fi=(5) ./elf/./elf/do-rel.h --43 10 -fe=(70) -+40 40 -fi=(5) -49 10 -+4 10 --3 10 --1 10 -+4 10 -fe=(70) -301 10 -fi=(5) -48 10 -+1 30 -+1 10 -+30 10 -fe=(70) -218 60 --28 24 -fi=(4) -+3 12 -fi=(5) --43 12 -fe=(70) -+40 48 -fi=(5) -49 12 -+4 12 --3 12 --1 12 -+4 12 -fe=(70) -301 12 -fi=(5) -48 12 -+1 36 -+1 12 -+30 12 --31 22 -+4 22 --3 22 --1 22 -+4 22 -fe=(70) -301 22 -fi=(5) -48 22 -+1 66 -+1 22 -+30 22 -fi=(4) -282 10 -fi=(5) -83 10 -fi=(4) -278 2073 -+1 2073 --1 2073 -+4 2073 -+2 4146 -fi=(5) -83 4146 -fe=(70) -301 132 -fi=(5) -51 66 -fe=(70) -304 88 -+24 66 -+3 22 -+17 44 -+1 44 -cfn=(272) -calls=22 +7 -* 616 -+1 352 --98 44 -+1 20 -fi=(4) -+33 2073 -+1 8292 -fe=(70) -+14 80 -fi=(5) -114 102 -+9 53 -fi=(4) -+39 21 -fi=(5) --38 21 --1 21 -fi=(4) -+39 42 -+1 168 -fi=(5) --39 21 -fi=(4) -+39 168 -fi=(5) --40 21 -fi=(4) -+39 305867 -fi=(5) --38 305867 --1 305867 -fi=(4) -+39 611734 -+1 2446936 -fi=(5) --39 305867 -fi=(4) -+39 2446936 -fi=(5) --40 305867 -+3 34 --73 34 -+73 34 -+3 90 -+2 30 -+2 60 -fi=(4) -+51 40 --6 20 -+6 20 -fe=(70) -+6 20 -fi=(4) -+3 20 --15 20 -fe=(70) -+12 20 -fi=(4) -+3 80 -fi=(5) --60 40 -+2 20 --2 60 -+1 20 --1 20 -+1 40 -+2 20 --2 20 --1 20 -+1 40 --1 20 -fe=(70) -+37 20 -fi=(5) --34 60 -fe=(70) -+34 20 -fi=(5) --35 20 -+1 20 -fi=(4) -+42 20 -fe=(70) --8 20 -fi=(5) --37 65330 -+2 32665 --2 97995 -+1 32665 --1 32665 -+1 65330 -+2 32665 --2 32665 --1 32665 -+1 65330 --1 32665 -fe=(70) -+37 32665 -fi=(5) --34 97995 -fe=(70) -+34 32665 -fi=(5) --35 32665 -+1 32665 -fi=(4) -+42 32665 -fe=(70) --8 32665 -fi=(23) --28 32666 -fe=(70) -+29 32666 -fi=(23) --29 32666 -fe=(70) -+29 65332 -+3 97998 -+8 16948 --8 38694 -+8 43182 -+4 19192 --3 4798 -+1 4798 -+2 9596 -+1 4798 -+1 4798 --2 48600 --3 12150 -+1 12150 -+2 24300 -+1 12150 -+1 79942 -+2 101688 -cfi=(71) -cfn=(262) -calls=16948 756 -* 15054557 -+3 16948 --3 16948 -+4 16948 --1 16948 -fi=(4) --10 32666 -+1 32622 -+9 261480 -+7 32650 -fi=(5) --50 98055 --19 98095 -+20 19156 -fi=(4) -+64 30 -+2 60 -+1 90 --8 14 -+1 42 --6 13 -+1 58 --22 261147 -+3 130564 --5 44 -+4 88 -fi=(5) --29 15718 -fe=(70) -+18 62858 -+2 47154 -+1 15718 -+18 15718 --19 31436 -+1 31436 -fi=(4) -337 1 --4 1 -+1 1 -+3 7 --4 2 -+1 1 -+2 1 -+1 1 -cfi=(71) -cfn=(262) -calls=1 756 -* 1172 -+2 2 -fe=(70) -175 63 -301 30 -fi=(5) -179 4 -fi=(4) -+5 2 --6 2 -+6 2 -fe=(70) -+6 4 -fi=(4) --12 4 -fe=(70) -+12 8 -fi=(5) --9 2 -+1 2 --1 10 -+1 2 --1 4 -fi=(4) --3 2 -fe=(70) --8 2 -fi=(4) -+8 2 -fe=(70) --8 4 -fi=(5) -+11 6 -+1 6 --1 30 -+1 6 --1 12 -fi=(4) --3 6 -fe=(70) --8 6 -fi=(4) -+8 6 -fe=(70) --8 12 -fi=(23) --28 8 -fe=(70) -+29 8 -fi=(23) --29 8 -fe=(70) -+29 16 -+3 24 -+8 8 --8 16 -+12 32 -+4 16 --4 8 --3 8 -+7 8 --6 8 -+6 40 -cfi=(71) -cfn=(262) -calls=8 756 -* 8497 -+3 8 --3 8 -+4 8 --1 8 -fi=(4) --10 8 --1 4 -+4 4 -+1 16 -+6 64 -+7 8 -fi=(5) --5 24 --16 30 -fi=(4) -+5 28 -+2 4 --2 4 -fe=(70) - -fl=(35) ./string/./string/strchr.c -fn=(100) index -46 91 --5 91 -+5 103 -+1 355 --1 355 -+4 355 --4 355 -+2 710 -179 2 -71 819 -+61 91 --14 182 -+14 91 --11 91 -+11 91 --8 91 -+8 364 --14 160 -+14 80 --11 80 -+11 80 --8 80 -+8 320 -+8 182 -+2 89 -+2 148 -+2 74 -+2 124 -+2 62 -+2 94 -+2 47 -+4 80 -+2 40 -+2 72 -+2 36 -+2 54 -+2 27 -+2 26 -+2 13 -51 89 -179 89 -35 160 - -fl=(88) ./elf/./elf/dl-init.c -fn=(338) _dl_init -97 9 -+5 2 --4 1 -+1 1 --2 3 -+5 1 -+33 1 -+1 5 -+1 5 --1 1 -+1 2 -cfn=(340) call_init -calls=1 30 -* 76 -* 35 --1 7 -+1 14 -cfn=(340) -calls=7 30 -* 8662 --1 7 --32 1 -cfn=(340) -calls=1 -74 -* 76 -+1 2 -+4 1 -+1 1 -+1 4 -+5 4 -+4 3 -+1 3 -+1 2 --1 1 -+1 3 -cob=(5) -cfi=(90) -cfn=(348) -calls=1 0 -* 3 --1 2 - -fn=(340) -30 18 -+6 9 --8 63 -+8 54 -+2 18 -+6 9 -+14 27 -+4 9 --18 18 -+14 9 -+1 9 -+3 18 -+5 36 -+12 9 -+1 9 -+6 8 -+2 16 --2 8 -+2 8 --2 16 -+3 57 -+1 5 -cob=(3) /usr/lib/riscv64-linux-gnu/libc.so.6 -cfi=(96) ./libio/./libio/vtables.c -cfn=(364) check_stdfiles_vtables -calls=1 -6 -* 15 -* 40 -cob=(11) /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.32 -cfi=(101) ??? -cfn=(390) 0x00000000000a4192 -calls=1 -90 -* 7914 -cob=(10) /usr/lib/riscv64-linux-gnu/libgcc_s.so.1 -cfi=(100) ??? -cfn=(384) 0x000000000000352c -calls=1 -90 -* 12 -cob=(9) -cfi=(99) -cfn=(378) -calls=1 -90 -* 12 -cob=(8) /usr/lib/riscv64-linux-gnu/liblzma.so.5.4.1 -cfi=(98) ??? -cfn=(372) 0x0000000000003a68 -calls=1 -90 -* 12 -cob=(7) /usr/lib/riscv64-linux-gnu/libmd.so.0.0.5 -cfi=(97) ??? -cfn=(366) 0x0000000000001ed8 -calls=1 -90 -* 12 -cob=(3) -cfi=(92) ./csu/./csu/init-first.c -cfn=(356) _init_first -calls=1 -44 -* 260 -cob=(6) /usr/lib/riscv64-linux-gnu/libicudata.so.72.1 -cfi=(91) ??? -cfn=(350) 0x0000000000000428 -calls=1 -90 -* 12 -cob=(4) /usr/libexec/valgrind/vgpreload_core-riscv64-linux.so -cfi=(89) ??? -cfn=(342) 0x0000000000000508 -calls=1 -90 -* 12 --1 16 -+3 64 - -fl=(15) ./elf/../misc/sbrk.c -fn=(32) sbrk -37 2 -+3 2 --3 1 -+3 1 --3 3 -+21 1 -+4 1 -+16 7 - -fl=(40) ./elf/./elf/dl-audit.c -fn=(116) _dl_audit_activity_map -29 2 -+1 2 -+1 1 --2 7 -+1 1 -+1 1 -+6 10 - -fn=(330) _dl_audit_activity_nsid -46 3 -+5 1 - -fn=(174) _dl_audit_objopen -77 40 -+1 60 --1 160 -+1 20 -+15 220 - -fl=(74) -fn=(290) _dlfo_sort_mappings -537 2 -+3 3 -+4 1 -+1 1 --1 1 -+1 1 --1 19 -+1 19 --1 19 -+1 59 -+1 20 --1 20 -+1 210 --1 190 -+1 220 --1 420 -+8 60 -+1 80 --1 60 -+1 80 -+1 80 --15 40 -+17 1 - -fn=(288) _dlfo_process_initial -474 4 -+1 4 -+3 2 --4 22 -+4 2 --1 6 -+1 2 -+26 16 -+7 2 -+8 2 -+2 4 --16 4 -+3 128 --2 44 --1 44 --1 8 -+27 4 --2 2 -+2 26 --20 126 -+2 84 -+3 21 --1 63 -cfi=(75) -cfn=(286) -calls=21 95 -* 998 -+2 84 - -fn=(284) -564 2 -+2 1 --5 6 -+5 2 -+13 1 -cfn=(288) -calls=1 474 -* 310 -* 1 -fi=(20) -56 2 -fe=(74) -580 1 -fi=(20) -56 3 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(74) -580 1 -fi=(20) -56 1 -fe=(74) -582 1 -+3 1 -+5 2 -+1 1 -cfn=(288) -calls=1 474 -* 1392 -+3 2 -+10 7 --37 3 -cfi=(75) -cfn=(286) -calls=1 95 -* 53 -* 3 -+29 2 -cfn=(290) -calls=1 -59 -* 1606 -+3 7 -+2 1 - -fl=(6) -fn=(292) -76 1 -+10 3 -fi=(76) ./elf/../sysdeps/generic/dl-hash.h --43 1 -fe=(6) -+33 6 -+11 1 -fi=(76) --42 1 --1 2 --1 1 -+5 3 --3 1 -+17 3 --17 1 -+3 12 --3 4 -+17 12 --17 4 -fe=(6) -+46 1 -fi=(76) --24 2 -fe=(6) -+24 4 -fi=(76) --19 1 -fe=(6) -+17 1 -+2 1 -cfn=(296) lookup_malloc_symbol -calls=1 -30 -* 839 -* 1 -+1 5 -cfn=(296) -calls=1 -31 -* 849 -* 1 -+1 5 -cfn=(296) -calls=1 -32 -* 889 -* 1 -+1 4 --1 1 -+1 1 -cfn=(296) -calls=1 -33 -* 809 -+5 2 -+4 1 --2 1 -+2 1 --4 1 -+1 1 -+2 1 -+1 5 - -fn=(10) __rtld_malloc_init_stubs -43 5 -+1 3 -+1 3 -+1 3 -+1 1 - -fn=(296) -61 4 -+3 4 --3 16 -+3 20 --3 16 -+2 4 -+1 4 -cfi=(71) -cfn=(262) -calls=4 756 -* 3198 -+4 20 -+1 36 -fi=(77) ./elf/./dl-sym-post.h --28 12 -fe=(6) -+28 4 -+2 4 -fi=(77) --30 4 -+12 8 -fe=(6) -+19 32 - -fn=(94) strsep -242 12 -+2 4 -+1 4 -+4 10 -+5 2 --5 52 -+5 40 -+2 126 --7 28 -+11 28 --11 30 -+18 2 -+3 2 -+1 2 - -fl=(29) -fn=(98) -238 4 -+3 4 --3 24 -+3 4 -cfi=(35) -cfn=(100) -calls=4 46 -* 348 -+4 4 --1 4 -+20 36 -cfi=(59) -cfn=(179) -calls=1 -36 -* 162068 - -fn=(99) -238 66 -+3 66 --3 396 -+3 66 -cfi=(35) -cfn=(100) -calls=66 46 -* 4811 -+4 66 --1 66 -+20 594 -cfi=(59) -cfn=(179) -calls=47 -36 -* 3180762 --11 2 -+1 2 -+1 2 --4 1 -+2 3 -cfn=(208) is_dst -calls=1 -51 -* 116 -* 1 -+1 2 --1 1 -+6 1 --3 1 -+3 3 -cfi=(35) -cfn=(100) -calls=1 46 -* 52 -+2 2 - -fn=(152) _dl_map_object_from_fd -944 320 -+10 20 --10 160 -+10 20 -cfi=(37) -cfn=(154) -calls=20 38 -* 140 -+7 60 --7 20 -+7 20 -+85 60 -+10 100 -+7 140 -cfi=(19) ./elf/./elf/dl-object.c -cfn=(42) _dl_new_object -calls=20 59 -* 11188 -* 20 -+1 20 -+13 40 -+3 20 --5 20 -+4 20 -+1 20 --1 40 --3 20 -+1 20 --2 20 -+5 40 -+1 40 -+19 20 --2 20 -+2 120 -+10 20 --10 20 -+10 20 -+27 20 -+36 20 --62 20 -+62 20 --62 20 -+26 20 -+9 20 --36 20 --6 20 --1 20 --1 20 --1 20 --5 20 -+15 20 -+93 20 --93 60 -+62 100 --62 144 -+20 2 --21 268 -+1 577 -1223 40 -1110 20 -1223 40 -1110 20 -1228 100 -+10 20 -+1 20 --1 80 -+1 20 --1 80 -+7 20 -1076 20 -1245 20 -+10 80 -+7 120 -fi=(53) ./elf/./dl-map-segments.h -28 20 -fe=(29) -1262 20 -fi=(53) -28 20 -+1 180 -cfi=(54) -cfn=(166) -calls=20 +21 -* 140 -+72 20 -+1 40 --73 20 -+73 20 -+3 40 -+3 20 --2 40 -+2 20 -+17 20 -+2 20 --2 40 -fi=(55) ./elf/./dl-load.h --34 80 -fi=(53) -+58 120 -+6 20 -+2 20 --2 20 -+2 20 -+1 20 --1 20 --1 20 -+1 50 -+8 20 -+3 60 -+8 140 -cfi=(9) -cfn=(18) -calls=20 31 -* 4198 -* 60 -+6 20 -+12 40 --59 200 -+2 60 -+2 200 -cfi=(54) -cfn=(166) -calls=20 -89 -* 140 -* 60 -fe=(29) -1111 61 -+26 200 -+10 40 -+4 40 --2 80 --2 200 --1 40 -+1 40 -+2 40 -+2 40 --2 40 --3 40 -+1 40 -+1 40 -+3 40 --6 40 -+6 100 -+2 100 -+13 20 --13 100 -+13 60 -+7 40 --1 80 -+1 120 --1 40 -+1 80 --1 40 --27 40 -+38 40 --66 40 -+9 40 --1 20 -+1 40 --2 20 -+2 60 --1 20 -+1 20 --2 20 -+1 20 -+1 40 -+60 6 -+4 3 -+1 6 --67 3 -+68 3 -+3 9 -+1 3 -+8 3 --5 3 --3 3 -+8 6 -+15 20 -+1 20 -fi=(49) ./elf/../sysdeps/posix/dl-fileid.h -37 60 -cfi=(50) -cfn=(158) -calls=20 -8 -* 260 -* 20 -fe=(29) -999 140 -fi=(49) -40 20 -+1 20 -fe=(29) -999 40 -fi=(49) -40 20 -+1 20 -fe=(29) -999 480 -+1 690 -fi=(49) -49 840 -fe=(29) -1525 340 -1278 60 -+1 60 -fi=(56) ./elf/./elf/get-dynamic-info.h -39 20 -+6 20 --2 20 -+2 20 -+9 20 --5 20 -+5 40 -+2 20 -+3 40 --1 20 --3 20 --6 519 -+5 268 -+1 114 -+13 342 --23 342 -+23 1215 --23 1215 -+65 40 -+5 54 -+7 40 -+1 80 -+6 40 -+18 40 -+5 24 -+2 24 -+1 2 -+1 24 -+2 24 -+4 40 -+2 24 -+1 24 -+9 36 -+6 24 -+4 40 -+2 1 -fe=(29) -1285 1 -+5 2 --5 20 -+5 38 --5 19 -+2 20 -+11 40 -+19 60 -+2 140 -+52 40 -+1 9 -+6 6 -+1 3 --1 12 -+1 3 --1 37 -+1 17 --1 68 -+1 17 --1 171 -+1 154 -+6 154 --6 154 -+11 40 -cfi=(57) ./io/../sysdeps/unix/sysv/linux/close_nocancel.c -cfn=(172) __GI___close_nocancel -calls=20 26 -* 120 -* 20 -+13 40 -+2 40 -+2 20 --2 40 -+2 40 -+16 40 -cfi=(7) -cfn=(12) -calls=20 28 -* 660 -+4 40 -+1 40 -+17 60 -+1 1 -+3 4 -+5 2 --5 76 -+5 38 -+10 40 -+7 200 -+10 40 -+1 12 -+5 6 -cfi=(38) -cfn=(198) -calls=3 147 -* 36 -+7 60 -cfi=(19) -cfn=(56) _dl_add_to_namespace_list -calls=20 31 -* 1610 -+3 60 -+23 220 -+1 60 -cfi=(40) -cfn=(174) -calls=20 77 -* 500 -* 20 -fi=(55) -92 76 -+2 19 --1 38 -+1 38 --1 19 -+1 19 --1 19 -+1 19 --1 19 -+3 76 -fi=(56) --40 60 -fe=(29) -1018 40 -fi=(56) -59 40 -fe=(29) -1516 40 -fi=(56) -62 80 -+2 60 -181 30 --15 6 --7 20 -fi=(53) -+27 80 -cfi=(54) -cfn=(166) -calls=10 50 -* 70 -+3 30 -fe=(29) -1472 14 -+1 6 -+1 18 --1 12 -+1 6 --1 12 -cfi=(24) -cfn=(60) -calls=6 38 -* 197 -* 6 -+2 2 -1285 16 -1429 8 -+4 2 -+5 2 --1 2 --4 2 -+5 2 --4 4 -+3 4 -cfi=(67) ./string/./string/memmove.c -cfn=(220) memmove -calls=2 44 -* 116 -+4 8 - -fn=(96) expand_dynamic_string_token -385 9 -+10 3 --10 15 -+10 3 -cfn=(99) -calls=1 238 -* 236 -cfn=(98) -calls=2 238 -* 215 -+3 3 -+1 2 -+11 12 --11 2 -cfi=(36) -cfn=(102) -calls=2 40 -* 417 -* 1 -+3 2 -cfi=(34) -cfn=(90) -calls=1 39 -* 40 -* 7 -cfi=(34) -cfn=(90) -calls=1 39 -* 49 -* 9 -+3 1 -fi=(20) -56 4 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 1 -fe=(29) -406 1 -+3 1 -+1 4 --1 1 -+1 2 --1 1 -cfn=(214) _dl_dst_substitute -calls=1 276 -* 384 - -fn=(208) -202 6 -+13 2 --13 8 -+13 2 -cfi=(34) -cfn=(90) -calls=2 39 -* 62 --9 4 -+9 2 --9 2 -+10 8 -cfi=(65) ./string/./string/strncmp.c -cfn=(210) strncmp -calls=2 37 -* 90 -* 2 -+13 14 --11 12 -+1 6 -+1 8 -+1 4 - -fn=(214) -276 11 -+13 1 --13 3 -+13 2 --4 1 -+4 1 -+6 3 -+56 14 -+3 14 --60 8 --5 8 -+6 3 -cfn=(208) -calls=1 -93 -* 116 -* 2 -+22 3 -+5 2 -+10 3 -+2 2 -cfi=(66) ./string/./string/stpcpy.c -cfn=(216) stpcpy -calls=1 35 -* 168 -+1 1 -+19 1 --20 1 -+20 1 -+11 1 -+7 1 -+3 13 - -fn=(182) open_path -1819 336 -+1 21 --1 42 -+1 21 --1 42 -+7 21 -+5 147 --7 42 -+7 105 -+70 42 --70 21 --8 63 -+31 21 --3 21 -+50 84 --67 84 -+9 21 -+7 105 -cfi=(22) -cfn=(52) -calls=21 29 -* 2074 -* 21 --12 21 -+13 21 --1 21 -+1 52 -+3 84 -+5 168 -cfi=(22) -cfn=(52) -calls=24 29 -* 636 -* 120 -cfi=(22) -cfn=(52) -calls=24 29 -* 2161 -+9 24 --9 24 -+3 24 -+6 48 -+3 168 -cfn=(144) open_verify.constprop.0 -calls=24 1578 -* 1817 -+2 24 --2 24 -+2 24 -+2 6 -+1 2 -+25 2 -fi=(20) -56 7 -cfi=(21) -cfn=(51) -calls=1 -21 -* 26 -fe=(29) -1926 1 -+1 1 -+2 3 -cfi=(22) -cfn=(52) -calls=1 29 -* 71 -+35 357 -1851 144 -+89 96 -+7 80 --2 60 -+2 20 -+3 40 -1829 38 -+70 72 -+2 18 --21 10 -+1 55 -+6 15 -+2 15 -cfi=(60) ./gmon/../sysdeps/unix/sysv/linux/prof-freq.c -cfn=(184) stat -calls=5 28 -* 72 -+3 5 --3 9 --38 12 -+39 5 -+4 3 --43 3 -1954 2 -fi=(20) -50 4 -cfi=(21) -cfn=(106) -calls=1 +45 -* 13 -fe=(29) -1959 6 -+1 2 -1829 2 - -fn=(92) fillin_rpath.isra.0 -468 40 -+4 4 -+37 4 -fi=(20) -50 4 -fe=(29) -532 4 --32 2 --26 6 -cfi=(6) -cfn=(94) -calls=2 242 -* 330 -* 6 -cfi=(6) -cfn=(94) -calls=2 242 -* 12 -* 8 -+7 4 -+2 6 -cfn=(96) -calls=2 -98 -* 1063 -* 2 -+4 2 -+5 2 -cfi=(34) -cfn=(90) -calls=2 39 -* 96 -* 2 -+8 2 --7 2 -+78 4 -+3 4 --3 2 -+3 26 --74 10 -+5 4 -+4 2 --4 4 -+4 2 -+19 8 -cfi=(34) -cfn=(90) -calls=1 39 -* 67 -* 2 -+4 1 -fi=(20) -56 3 -fe=(29) -532 1 -fi=(20) -56 1 -fe=(29) -532 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -532 1 -fi=(20) -56 3 -fe=(29) -532 1 -fi=(20) -56 1 -fe=(29) -532 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 2 -fe=(29) -534 2 -+5 2 -+1 4 --1 6 --1 2 -+2 2 -cfi=(22) -cfn=(52) -calls=2 29 -* 194 -+3 4 --3 2 -+3 2 --3 2 -+1 2 -+2 2 -+1 1 -+5 1 -+1 1 --1 3 -+1 1 --1 1 -+1 1 --1 3 -+1 5 -+1 2 --1 6 -+1 2 --1 6 -+3 4 -+1 4 -+2 3 --1 4 -cfi=(22) -cfn=(52) -calls=1 29 -* 125 -+6 2 -+4 2 --10 2 -+6 2 -+1 2 -+3 8 --56 18 -+1 18 -fi=(20) -50 6 -cfi=(21) -cfn=(106) -calls=2 +45 -* 26 -+1 2 -fe=(29) -522 2 - -fn=(144) -1578 559 -+32 86 --32 172 -+32 43 -+19 129 -cfi=(47) ./io/../sysdeps/unix/sysv/linux/open64_nocancel.c -cfn=(146) __open_nocancel -calls=43 28 -* 1144 -+2 43 --2 43 -+2 43 -+8 40 -+1 20 -+5 60 -+6 20 --6 80 -cfi=(48) ./io/../sysdeps/unix/sysv/linux/read_nocancel.c -cfn=(148) __read_nocancel -calls=20 26 -* 100 -+2 20 -+2 60 -+2 20 -+6 40 -+17 89 --59 46 -+59 140 -cfi=(18) -cfn=(40) -calls=20 309 -* 1140 -* 40 -+81 60 -fi=(4) -61 60 -+7 80 -fe=(29) -1766 100 -+6 60 -+6 20 -+1 20 --1 60 -+1 40 -+26 645 - -fn=(204) decompose_rpath -580 8 -+11 2 --9 1 --2 3 -+11 1 -+31 2 -+7 2 -cfi=(36) -cfn=(102) -calls=1 40 -* 202 -* 1 -+1 1 -+8 3 --1 1 -+1 1 -+2 1 --2 1 -+2 2 --2 14 -+2 13 --2 13 -+2 26 --2 13 -+6 2 -fi=(20) -56 3 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 1 -fe=(29) -646 1 -+8 8 -cfn=(92) -calls=1 468 -* 1480 -fi=(20) -50 5 -cfi=(21) -cfn=(106) -calls=1 +45 -* 13 -fe=(29) -661 2 -+9 1 --2 1 -+2 1 -+1 1 -+1 9 - -fn=(138) -1971 952 -+8 68 -+1 476 -+3 1732 -+5 3240 -+2 1620 -cfi=(46) -cfn=(140) _dl_name_match_p -calls=540 68 -* 33240 -* 540 -+4 1968 -+1 984 -+3 373 -+1 1119 -+1 373 --1 746 -+1 746 -cfi=(24) -cfn=(60) -calls=373 38 -* 9224 -* 373 -2274 1088 -2013 60 -+2 60 --2 40 -+10 20 --50 20 -+50 20 -+17 40 --2 20 -+2 20 -cfi=(35) -cfn=(100) -calls=20 46 -* 1332 -* 20 -2206 1 --1 3 -cfn=(96) -calls=1 385 -* 388 --1 1 -+1 1 -+2 2 -+4 8 -cfn=(144) -calls=1 1578 -* 184 -+3 1 --3 1 -+3 1 -+12 5 -+46 4 --1 2 -+1 6 --1 1 -+1 1 -cfn=(152) -calls=1 944 -* 1630 -* 76 --1 38 -+1 114 --1 19 -+1 19 -cfn=(152) -calls=19 944 -* 36539 -* 40 -2044 38 -cfi=(34) -cfn=(90) -calls=19 39 -* 974 -+2 19 --2 38 -+2 38 -+7 57 -+50 40 -+1 266 -cfn=(182) -calls=19 1819 -* 8397 -+6 19 --6 19 -+6 19 -2226 90 -682 57 -2111 5 -685 5 -2113 13 -cfn=(182) -calls=1 1819 -* 769 -+4 1 --4 1 -+4 1 --39 44 -682 44 -2079 11 -682 11 -2057 11 -+8 11 --7 11 -+7 77 -682 11 -2065 66 --3 46 -682 23 -2063 23 -682 23 -+3 5 -+3 10 -+3 5 -+1 71 -2077 11 -+1 11 -+10 11 -+15 55 -+1 11 -+72 162 -cfn=(144) -calls=18 1578 -* 3321 -+4 36 --4 18 -+4 18 -+18 18 --17 18 -+17 54 -+28 1 -+2 1 --2 3 -+2 1 -688 10 -+8 1 -+1 3 --1 3 -+1 1 --1 3 -cfn=(204) -calls=1 580 -* 1865 -2111 1 -+22 15 --14 15 -+14 30 -+2 38 -+4 38 -cfi=(61) -cfn=(186) -calls=19 413 -* 27200 -* 19 -+2 19 -+12 90 --20 4 -691 4 -2119 4 -+14 8 -+20 1 -+39 4 -+1 3 -+1 13 -cfn=(182) -calls=1 1819 -* 906 -+4 2 --4 1 -+4 2 - -fn=(72) _dl_init_paths -706 17 -+14 2 --14 2 -+14 5 -fi=(20) -56 2 -fe=(29) -706 2 -+14 1 -cfi=(30) ./elf/./elf/dl-hwcaps.c -cfn=(74) _dl_important_hwcaps -calls=1 175 -* 529 -fi=(20) -56 1 -fe=(29) -720 1 -fi=(20) -56 1 -fe=(29) -720 1 -fi=(20) -56 1 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -725 1 -+2 1 -+8 1 --1 1 -fi=(20) -56 1 -fe=(29) -735 2 --1 1 -fi=(20) -56 1 -fe=(29) -739 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -741 1 --2 1 -+2 2 -+7 2 --1 2 -+20 1 --6 2 --5 1 -+5 1 -+1 1 --4 2 -+4 1 -+6 1 --12 1 -+2 1 -+1 1 -+11 4 --2 1 --5 2 -+4 4 -+1 16 -cfi=(9) -cfn=(18) -calls=4 31 -* 108 -+2 4 --8 3 -+8 6 --14 3 -+6 3 --4 3 -+1 3 -+2 3 -+5 3 --3 6 -+3 3 --10 3 -+10 6 --3 3 -+9 6 --2 1 -+6 1 -+1 1 --1 2 -+6 2 -+2 1 -+3 4 -+2 2 -+36 4 -+32 16 --30 3 -cfi=(34) -cfn=(90) -calls=1 39 -* 40 -* 7 -cfi=(22) -cfn=(52) -calls=1 29 -* 99 -+5 1 --5 1 -+5 2 --1 1 -+2 3 -+1 2 --2 1 -+2 2 --2 1 -+2 1 --2 1 -+1 26 -+1 26 --2 13 -+2 26 --2 13 -+2 13 --2 13 -+5 2 -fi=(20) -56 2 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(29) -836 1 -fi=(20) -56 1 -fe=(29) -838 1 -+6 7 -cfn=(92) -calls=1 468 -* 819 -+3 3 -+6 2 --27 1 --18 1 --2 2 -+2 1 -+14 2 - -fl=(67) -fn=(220) -44 12 -+6 2 --6 2 -+6 2 -+61 16 --21 2 --4 2 -+1 2 -+3 2 -+3 4 -+1 2 -+7 12 -+6 2 --6 2 -cfi=(42) -cfn=(222) -calls=2 234 -* 46 -* 2 --15 4 - -fl=(87) -fn=(324) -54 9 --8 9 -+2 9 -+7 9 --9 9 -+9 36 -+1 9 --8 9 --2 9 -+10 9 --8 9 --2 9 -+3 9 -+7 27 --7 9 --3 9 -+2 9 -+10 9 --2 9 -+7 9 --17 18 -+10 9 -+7 18 --14 9 -+9 9 -+5 9 -+4 27 -+4 18 -+4 18 -+1 9 --1 27 -+1 45 -+1 9 --8 27 -+16 9 --1 9 -+1 9 -+10 72 -cfi=(71) -cfn=(262) -calls=9 756 -* 7674 -+4 9 --4 9 -+4 9 -+10 108 -+15 54 -+9 18 -+29 9 --3 18 -fi=(4) --11 9 -fe=(87) -+15 63 - -fl=(65) -fn=(210) -37 4 -+2 6 -+5 2 -+2 2 -+1 2 -+1 4 -+2 2 -+4 2 -+1 2 --4 2 -+1 4 -+2 2 -+1 2 -+1 4 -+2 2 --16 2 -+1 2 -+1 2 -+18 6 -+4 4 --4 4 -+2 4 -+1 4 --1 4 -+1 4 -+1 4 -+5 2 -+1 2 --13 4 - -fl=(41) ./string/./string/strcspn.c -fn=(120) strcspn -32 3 -+1 1 --1 1 -+1 1 -+1 2 -+5 2 -+1 1 -+1 1 -+1 1 --3 7 -+8 1 --7 7 -+1 7 -+1 7 -+5 4 -+1 1 --1 8 -+1 2 -+3 5 -+1 5 -+1 5 -+1 5 -+2 1 -+6 1 -+2 1 --1 1 -+2 1 --3 1 -+2 1 --1 1 -+2 1 --3 1 -+2 2 -+3 1 --6 1 -+6 4 --5 12 -+2 12 --1 12 -+2 12 --3 12 -+2 12 --1 12 -+2 12 --3 12 -+2 24 -+3 12 --6 12 -+6 48 -+2 1 -+1 1 -+1 2 --1 2 -+1 2 - -fl=(60) -fn=(184) -28 5 -fi=(50) -+1 20 -cfi=(52) -cfn=(162) -calls=5 +70 -* 47 -fe=(60) - -fl=(1) ??? -fn=(0) (below main) -0 2 -cfi=(2) -cfn=(2) _dl_start -calls=1 519 -0 25203447 - -fl=(57) -fn=(172) -26 126 - -fl=(11) -fn=(22) __GI___tunables_init -282 2 --9 3 -+9 13 --9 1 -151 2 -307 4 -77 1 -305 1 -+2 2 -71 1 -307 33 -71 101 -+6 1828 -+9 33 --15 33 -+15 66 -fi=(12) ./elf/./elf/dl-tunables.h -+54 66 -+1 43 --1 192 -fe=(11) -+91 66 -+74 2871 -+6 4125 -71 297 -fi=(12) -+69 961 -+1 332 --1 140 -fe=(11) -357 15 - -fn=(28) -408 260 -+9 26 --9 52 -+9 3 -+17 156 -+2 26 --9 23 -+1 23 - -fl=(47) -fn=(146) -28 132 -+3 44 --3 264 -+3 264 -+8 285 -+2 42 --2 69 -+2 69 - -fl=(9) -fn=(18) -31 29 --2 29 -+2 29 -+5 29 -+5 58 -+4 87 -+2 4 -+1 4 --3 9 -+4 1 -+4 1 -+1 1 --1 28 -+1 76 -+2 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 -+1 16 --10 16 -+2 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 -+1 369 --10 401 -+16 32 -+1 16 --1 26 -+1 91 -+2 26 -+1 26 --3 26 -+2 56 -+1 56 --3 108 -+6 26 --41 52 -+45 26 --4 3 --41 6 -+45 3 -+8 29 - -fl=(22) -fn=(52) -29 1212 -+7 202 --7 202 -+1 202 -+1 202 -+5 202 -+3 333 -+1 117 --9 6 -+9 76 -+11 641 -cfi=(42) -cfn=(142) -calls=86 -14 -* 2638 -* 444 -+6 6705 -+3 1616 --9 25 -cfi=(42) -cfn=(122) -calls=25 +99 -* 1070 -* 25 --21 210 - -fl=(24) -fn=(60) -38 19978 -+1 19978 --1 19978 -+1 19978 -+1 19978 -+3 19978 -cfn=(61) strcmp'2 -calls=18445 -5 -* 1058835 -+2 1533 -+1 1533 - -fn=(61) -38 173193 -+1 173193 --1 173193 -+1 173193 -+1 173193 -+3 155980 -cfn=(61) -calls=154748 -5 -* 6853284 -+2 1232 -+1 1232 --5 34426 - -fl=(68) ./elf/./elf/dl-version.c -fn=(234) _dl_check_all_versions -392 7 -+4 4 --2 1 -+3 24 -+1 132 -cfn=(236) _dl_check_map_versions -calls=22 170 -* 90919 --2 22 -+2 22 --1 44 --1 22 -+5 9 - -fn=(236) -170 22 --15 308 -+15 22 -+2 44 -+2 22 -+1 44 --3 22 -+5 22 -+3 19 -+4 19 --28 19 -+24 19 -+4 19 --20 19 -+20 19 -+40 38 -+7 19 --7 19 -+7 114 -36 19 -200 19 -36 133 -200 38 -36 61 -200 42 -36 294 -200 84 -36 42 -+1 603 --1 603 -+2 1992 -cfi=(46) -cfn=(140) -calls=664 +30 -* 38133 -* 664 -204 61 -+4 61 -+5 61 -94 122 -213 61 -94 244 -218 61 --1 122 -+1 61 --1 61 -+1 151 --1 180 -+1 90 --1 90 -+1 336 -64 453 --8 151 -221 151 -56 302 -+8 151 -221 151 --3 151 -56 151 -+8 151 -+6 302 -+16 151 -+1 151 -+2 302 -+5 302 -+14 3542 -+12 3240 -+4 4860 --30 3240 -231 723 -+3 453 -+5 270 --24 90 -110 151 -+3 755 -cfi=(24) -cfn=(60) -calls=151 -75 -* 11233 -* 151 -224 453 --6 244 -+25 122 -+5 126 --50 42 -+59 57 -+3 42 -+3 70 --3 2 -+3 19 -+3 45 --3 30 -+7 45 --7 60 -+7 558 --7 941 -+3 603 -+8 15 -+6 20 -fi=(20) -44 120 -cfi=(21) -cfn=(46) -calls=20 +38 -* 748 -fe=(68) -279 20 -+1 20 -+1 20 -+13 40 --3 20 -+3 60 -+2 20 -+3 19 -+7 38 --7 19 -+12 19 --8 183 -+18 270 --15 90 -+2 90 --2 90 -+2 90 --2 61 -+2 61 --2 61 -+2 61 -+4 151 -+1 151 --3 755 -+1 151 -+1 151 -+1 151 --3 151 -+1 151 -+1 151 -+1 151 -+3 302 -+8 122 -+5 126 --28 42 -+33 19 -+3 15 -+10 30 --10 30 -+20 603 --14 648 --2 201 -+6 201 -+1 201 --7 402 -+7 201 -+1 402 --1 804 -+1 201 --1 201 -+1 201 -+1 201 -+3 432 -+12 15 -+1 38 -+1 38 -+20 352 -156 3 -+8 3 -+93 5 -+17 5 -+60 1 - -fl=(44) -fn=(230) -238 2 -+1 2 --1 2 -+2 1 --1 1 --1 2 -+8 1 --3 1 -+1 1 -+2 1 -cfi=(2) -cfn=(232) version_check_doit -calls=1 678 -* 91220 -+4 1 --2 1 -+1 1 -+1 5 - -fn=(128) _dl_catch_error -225 7 -+2 3 --2 1 -+2 1 -cfn=(132) -calls=1 -52 -* 2577 -* 17 -fi=(2) -822 2 -+8 1 -+6 2 --6 1 -+6 3 --6 1 -+6 2 -fe=(44) - -fn=(132) -175 136 -+5 204 --5 136 -+5 68 --5 136 -+3 68 -+21 68 -+7 136 --7 68 -+1 136 -+3 136 -+3 68 -cfi=(45) -cfn=(134) -calls=68 31 -* 1904 -* 68 -+2 204 -cfi=(59) -cfn=(180) -calls=67 61 -* 143921 -cfi=(2) -cfn=(136) map_doit -calls=1 645 -* 2513 -+1 204 -+1 272 --25 68 -+34 272 - -fl=(46) -fn=(188) -36 3 -+3 1 --3 4 -+3 1 -cfi=(47) -cfn=(146) -calls=1 -11 -* 25 -+1 1 -+2 3 -cfi=(50) -cfn=(158) -calls=1 -13 -* 13 -* 1 -+2 2 -+3 1 -+13 2 -cfi=(57) -cfn=(172) -calls=1 -34 -* 6 -+3 7 --14 6 -cfi=(54) -cfn=(166) -calls=1 +1 -* 7 -* 2 - -fn=(280) -125 4 --1 4 -+3 2 -+3 20 --1 56 --2 7 -+2 35 --2 5 -+19 4 --15 6 - -fn=(140) -68 3612 -+1 1204 --1 3612 -+1 1204 -cfi=(24) -cfn=(60) -calls=1204 -31 -* 9638 -* 1204 -+3 1204 -+2 1204 -+6 2364 --6 1182 -+1 3873 -cfi=(24) -cfn=(60) -calls=1291 -37 -* 32557 -* 1291 -+8 327 --13 109 -+13 3503 --1 1095 -+1 2190 - -fl=(48) -fn=(148) -26 80 -+1 20 - -fl=(52) -fn=(162) -99 52 -+70 100 -+1 22 --2 12 -+1 8 - -fl=(30) -fn=(74) -175 15 -+1 1 --1 3 -+1 3 --1 5 -+1 1 -cfi=(11) -cfn=(28) -calls=1 408 -* 22 -+2 3 -+1 1 --1 1 -+10 2 --10 1 -+1 2 -+8 1 -cfi=(31) -cfn=(76) -calls=1 29 -* 2 -* 2 -fi=(33) ./elf/./dl-hwcaps.h --99 1 --34 1 -+2 1 -+32 1 -+1 1 -fe=(30) -+99 1 -fi=(33) --98 1 -fe=(30) --35 2 -cfi=(32) ./elf/./elf/dl-hwcaps_split.c -cfn=(78) _dl_hwcaps_split_masked -calls=1 -4 -* 23 -* 1 -fi=(33) -+33 1 --34 3 -+34 1 -+1 1 --33 1 -+33 1 -+1 1 -fe=(30) --35 2 -cfi=(32) -cfn=(78) -calls=1 -4 -* 31 -* 1 -fi=(20) -+1 4 -fe=(30) -+47 2 -fi=(20) --47 1 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -fe=(30) -+47 1 -+2 1 -fi=(33) --51 1 -fe=(30) -+64 1 --10 1 -fi=(33) --54 1 -+2 1 -fe=(30) -+55 1 -+7 1 -fi=(33) --61 1 -fe=(30) -+58 2 -cfi=(32) -cfn=(80) _dl_hwcaps_split -calls=1 -90 -* 12 -* 1 -fi=(33) --27 1 -fe=(30) -+43 1 -fi=(33) --77 1 -+34 1 -+1 1 --33 1 -fe=(30) -+75 1 -fi=(33) --42 1 -+1 1 -fe=(30) -+38 2 -cfi=(32) -cfn=(78) -calls=1 -77 -* 31 -* 1 -+8 1 -+9 6 -+54 2 --1 1 -+1 1 --1 1 -+1 1 -+4 1 -+5 2 -+20 4 -+1 1 -+9 4 -+7 5 -+1 2 -+3 2 -+4 1 -+1 1 --1 1 -+21 4 -fi=(20) -56 3 -fe=(30) -274 1 -+7 2 -fi=(20) -56 1 -fe=(30) -274 2 -fi=(20) -56 1 -cfi=(21) -cfn=(50) -calls=1 -21 -* 26 -* 2 -fe=(30) -282 1 -+8 1 -+1 2 --1 3 -+1 2 --2 1 -+2 1 -cfn=(86) copy_hwcaps -calls=1 77 -* 51 -+1 6 -cfn=(86) -calls=1 77 -* 59 -+11 1 --8 1 -+1 1 -+7 1 -+8 3 -+62 1 --59 1 -+86 1 --86 1 -+86 16 -254 3 -+55 1 --3 2 --1 1 -+2 1 -+1 1 -+1 2 -cfi=(22) -cfn=(52) -calls=1 29 -* 39 -* 1 -+1 3 - -fn=(86) -77 14 -fi=(33) --23 2 -+2 2 -+32 2 -+1 4 -fe=(30) --6 4 -+4 2 -fi=(33) -+3 2 -fe=(30) --10 4 -cfi=(32) -cfn=(78) -calls=2 -29 -* 54 -+3 4 --3 2 -+13 14 - -fl=(73) -fn=(334) -120 4 -+2 1 - -fn=(274) -120 88 -+2 22 - -fl=(80) -fn=(306) -29 1 --2 1 -+6 2 --6 1 -+6 7 --6 3 -+6 1 -cfi=(79) -cfn=(302) -calls=1 +41 -* 311 -+4 1 -+2 6 -+2 2 --1 1 -+1 1 --2 1 -+2 1 --1 1 -cob=(3) -cfi=(81) ./elf/./elf/libc_early_init.c -cfn=(308) __libc_early_init -calls=1 -7 -* 1747 - -fl=(2) -fn=(124) do_preload -809 6 -+12 2 --4 1 --8 1 -+10 2 -+2 4 --12 2 -+10 1 --8 1 -+4 1 -+1 1 -+1 1 -+4 1 -cfi=(44) -cfn=(128) -calls=1 225 -* 2618 -* 3 -+76 1 --18 2 -+21 17 - -fn=(2) -0 11 -fi=(1) -cfi=(88) -cfn=(338) -calls=1 97 -0 8938 -519 15 -+26 2 -+4 1 --1 2 -fi=(3) ./elf/./get-dynamic-info.h -45 1 -fe=(2) -549 1 -fi=(4) -83 2 -fe=(2) -549 1 --4 1 -+3 1 --29 1 -fi=(3) -45 1 -+9 1 --5 1 -+19 2 --14 2 -+2 1 -+3 2 --1 1 --3 1 --6 17 -+5 10 -+1 4 -+13 12 --23 12 -+23 39 --23 39 -+65 2 -+5 3 -+7 2 -+1 4 -+6 2 -+4 2 -+1 2 -+5 2 -+3 2 -fe=(2) -553 2 -+12 34 -fi=(4) -178 1 -+6 3 --6 1 -+6 1 -fi=(5) -49 1 -+4 1 -fe=(2) -565 1 -fi=(5) -49 1 -+1 1 -+3 1 --4 3 -+1 1 -+3 1 -+3 1 --7 1 -+4 1 -fe=(2) -565 1 -fi=(5) -49 1 -+1 1 -+3 1 --4 3 -+1 1 -+3 1 -+3 1 -fi=(4) -162 12 -fi=(5) -57 12 --1 12 -fi=(4) -162 12 -fi=(5) -57 12 -fi=(4) -162 60 -+1 24 --1 12 -+1 96 -fi=(5) -56 12 -fi=(4) -187 2 -+6 4 -fi=(5) -61 2 -+2 5 -+2 5 -fi=(4) -184 5 -fi=(5) -63 5 -+1 20 -+1 5 -fi=(4) -178 5 -+6 45 -+3 5 -+6 5 -fi=(5) -61 10 -fe=(2) -565 6 -fi=(5) -51 2 -fi=(3) -+5 3 -+3 2 -fe=(2) -565 3 -fi=(4) -193 7 -+7 5 -+1 5 -fe=(2) -567 1 -460 2 -567 2 -+13 1 -cfi=(6) -cfn=(10) -calls=1 43 -* 15 -460 2 -+18 2 --18 1 -+18 1 -cfi=(7) -cfn=(12) -calls=1 28 -* 33 -+18 1 --17 3 -+17 2 --15 3 --1 1 -+10 2 -+6 1 -cfi=(8) ./elf/../sysdeps/unix/sysv/linux/dl-sysdep.c -cfn=(14) _dl_sysdep_start -calls=1 102 -* 25193731 -fi=(3) -62 4 -+2 3 -fe=(2) -565 4 -+18 3 - -fn=(118) handle_preload_list -874 12 -+5 1 --5 3 -+5 1 -+10 1 --6 1 -+6 2 --6 4 --8 3 -+7 2 -190 2 -896 2 -+1 4 -cfn=(124) -calls=1 -88 -* 2665 --15 3 -cfi=(41) -cfn=(120) -calls=1 32 -* 307 -+1 1 --1 1 -+1 1 -+2 4 -cfi=(22) -cfn=(52) -calls=1 29 -* 126 -+1 1 -+6 1 --6 1 -+7 1 -182 1 -894 2 -182 1 -1858 2 -+16 6 -cfi=(58) -cfn=(176) -calls=1 25 -* 13 -* 3 -+76 3 -+16 2 -+10 10 -cfi=(59) -cfn=(178) -calls=1 144 -* 25174834 --22 7 -+1 1 -+3 5 -+1 1 --1 1 -+2 1 --6 1 -+7 1 -1853 4 - -fn=(136) -645 1 --2 2 -+3 1 --3 1 -+2 1 -+1 1 --1 1 -+1 3 --3 1 -+3 1 -cfi=(29) -cfn=(138) -calls=1 1971 -* 2495 -+2 1 --2 1 -+2 3 - -fn=(34) dl_main -fi=(8) -143 7 -fe=(2) -1351 19 -196 1 -+1 1 -+1 1 -+97 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -1362 1 -cfi=(16) -cfn=(36) -calls=1 56 -* 21 -2552 3 -+6 3 --6 1 -+6 8 --4 2 -+10 1 -+9 3 --13 2 -cfi=(17) -cfn=(38) -calls=1 29 -* 38 -* 4 -cfi=(17) -cfn=(38) -calls=2 29 -* 168 -* 6 -+4 2 --2 2 -+2 4 -+1 19 --1 76 -+9 14 -2691 3 -+25 2 -1378 3 -+1 1 --1 1 -+1 3 --1 1 -+1 1 -2649 1 -+1 1 --1 1 -+1 4 -cfi=(18) -cfn=(40) -calls=1 309 -* 92 -* 2 --56 5 -cfi=(18) -cfn=(40) -calls=1 309 -* 14 -* 2 -1648 9 -cfi=(19) -cfn=(42) -calls=1 59 -* 290 -+2 2 -+3 1 --1 1 -+5 1 --4 1 --2 1 -+1 1 -+1 1 -+5 5 --5 1 -+4 1 -cfi=(19) -cfn=(56) -calls=1 31 -* 46 -+1 4 -1121 1 --1 3 -1356 2 -1129 1 -+1 1 -+18 2 --19 1 -+1 1 -+18 1 --21 1 --2 1 -+2 1 -+2 1 -+1 1 -+18 2 -+57 1 --34 1 --22 1 -+56 1 --56 1 --1 2 --25 1 -+22 1 -+4 4 -+19 2 -+3 2 --22 62 -+56 2 --1 2 -+2 2 --1 2 --1 2 -+2 2 -+1 1 -+2 9 -+5 2 -+1 2 --1 4 -+1 2 -+1 2 -+4 4 --72 12 -1259 5 -+6 1 --6 10 -+6 9 --6 9 --1 12 -+13 2 -+3 2 -+2 3 -1683 3 -+2 1 -+1 1 --2 1 -+2 2 --2 1 -+2 2 --2 4 -cfi=(24) -cfn=(60) -calls=1 38 -* 8 -* 3 -+7 2 -+3 1 --5 2 -+3 1 --3 1 -+3 1 -+2 1 -+1 3 -+4 4 -+2 1 -fi=(3) -39 2 -+6 1 --2 1 -+2 1 -+9 1 --5 1 -+5 2 -+2 1 -+3 2 --1 1 --3 1 --6 30 -+5 12 -+1 5 -+13 15 --23 15 -+23 75 --23 75 -+65 2 -+5 3 -+7 2 -+1 4 -+6 2 -+18 2 -+15 2 -+2 2 -+1 2 -+9 3 -+6 2 -+4 2 -fe=(2) -1709 2 -+7 4 -cfi=(7) -cfn=(12) -calls=1 28 -* 33 -* 2 -+3 3 -fi=(25) ./elf/./setup-vdso.h -24 2 -fi=(28) ./elf/./dl-main.h -+88 6 -fi=(27) ./elf/../sysdeps/unix/sysv/linux/dl-vdso-setup.h --67 1 -fi=(28) -+67 1 -cfi=(29) -cfn=(72) -calls=1 706 -* 2044 -fe=(2) -1744 4 -cfi=(37) -cfn=(108) -calls=1 56 -* 36 -+7 1 --5 1 -+5 2 --7 1 -+7 1 -+4 1 -+15 3 --15 1 -+4 1 --4 3 -+3 1 --2 1 -+3 1 --1 1 -+1 1 --2 1 -+1 2 -+12 2 -+1 3 -+5 1 --3 3 -+2 3 -+5 2 --4 1 -+6 1 --7 1 -+7 2 --1 1 -+1 5 -+2 5 -+6 3 -224 2 --1 1 -+1 2 -+1 1 --2 1 -+2 1 -1799 2 -+5 1 --1 1 -+1 3 -+24 1 -cfi=(38) -cfn=(110) -calls=1 199 -* 6 -fi=(39) ./elf/../sysdeps/generic/dl-debug.h -29 2 -fe=(2) -1828 1 -fi=(39) -29 2 -+1 1 -fe=(2) -1834 4 -+1 1 -cfi=(37) -cfn=(114) -calls=1 117 -* 1 -+5 4 -cfi=(40) -cfn=(116) -calls=1 29 -* 24 -+5 5 -+4 1 --2 1 -+2 2 -1153 1 --5 1 -+5 2 --5 1 -+11 2 --1 1 -+1 1 --1 1 -+1 4 --1 1 -+1 1 --1 1 -+1 1 --11 2 -+21 2 -+9 1 --7 1 --2 1 --1 1 -+10 1 -+18 2 --47 7 -1252 2 -1148 1 -1252 2 -1148 2 -1248 1 -1148 1 -1248 1 -1148 1 -fi=(3) -56 3 -fe=(2) -2335 2 -fi=(3) -59 2 -+3 4 -+2 3 -fi=(26) ./elf/../sysdeps/unix/sysv/linux/dl-vdso.h --24 1 -+1 6 -fi=(27) --11 2 -+3 2 -+6 2 -fi=(26) -+16 2 -fe=(2) -2601 5 -cfi=(18) -cfn=(40) -calls=1 309 -* 57 -* 1 -1210 2 -2603 2 -+1 1 -+48 1 -+1 2 --1 1 -+1 1 -+1 1 -1754 5 -+99 6 -cfn=(118) -calls=1 874 -* 25178049 - -fn=(232) -678 1 --2 2 -+2 1 --2 1 -+2 2 --2 1 -+2 1 -cfi=(68) -cfn=(234) -calls=1 392 -* 91206 -* 1 -+4 4 - -fn=(238) -736 2 -+2 2 --2 1 -+2 1 -+4 1 --6 3 -+2 1 -+4 1 -fi=(20) -44 1 -fe=(2) -753 1 -fi=(20) -44 5 -cfi=(21) -cfn=(46) -calls=1 +38 -* 36 -* 2 -fe=(2) -763 1 --12 1 --3 1 -+10 1 -+1 1 --2 1 -+6 1 -+2 1 --1 1 -+1 1 -+2 44 -+4 9 -+2 3 --7 3 --1 3 -+1 19 --1 19 -+10 2 -+3 2 -cfi=(38) -cfn=(242) -calls=1 97 -* 86 -+3 1 -cfi=(38) -cfn=(244) -calls=1 227 -* 107 -+7 1 -cfi=(38) -cfn=(246) -calls=1 422 -* 480 -* 1 -+1 1 -+6 1 -+3 1 --3 1 -+6 1 -cfi=(69) -cfn=(250) -calls=1 43 -* 74 -+4 2 --3 3 -+3 6 - -fl=(36) -fn=(102) -40 105 -+1 21 -cfi=(34) -cfn=(90) -calls=21 -2 -* 1272 -* 21 -fi=(107) ./string/../include/rtld-malloc.h -+15 84 -cfi=(21) -cfn=(51) -calls=4 -21 -* 104 -cfi=(21) -cfn=(50) -calls=17 -21 -* 442 -fe=(36) --12 21 -+3 21 -+1 42 --1 21 -+1 42 --1 21 -cfi=(22) -cfn=(52) -calls=21 -18 -* 1895 - -fl=(8) -fn=(328) _dl_sysdep_start_cleanup -148 1 - -fn=(14) -102 6 -+1 2 -+3 1 --3 1 -+3 1 -cfn=(16) _dl_sysdep_parse_arguments -calls=1 -27 -* 480 -+4 3 -cfi=(11) -cfn=(22) -calls=1 282 -* 11232 -+3 1 -cfi=(13) -cfn=(26) -calls=1 295 -* 35 -+2 1 -+7 2 --7 1 -cfi=(14) -cfn=(30) -calls=1 -79 -* 8 -+7 2 -+3 2 -cfi=(15) -cfn=(32) -calls=1 -88 -* 18 -* 3 -+12 2 -+3 5 -cfi=(2) -cfn=(34) -calls=1 1351 -* 25181907 -fi=(2) -498 3 -+89 15 -fe=(8) - -fn=(16) -79 1 --1 2 -+3 1 --1 1 -+1 2 -+2 1 --4 2 --1 4 -+2 2 -+1 2 --3 1 -+5 34 --1 33 -+1 33 -+7 1 --4 3 -+4 2 --4 1 -+4 1 -cfi=(9) -cfn=(18) -calls=1 -59 -* 101 -fi=(10) ./elf/../sysdeps/unix/sysv/linux/dl-parse_auxv.h --57 1 -+8 1 --9 2 -+7 1 --7 1 -+1 1 -+6 1 -+2 1 -+1 1 -+1 3 --1 1 -+1 66 --1 22 -+1 46 --2 69 -fe=(8) -+52 1 -+1 1 -+1 1 -fi=(10) --50 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -+1 1 -fe=(8) -+42 2 -fi=(10) --50 2 --1 1 -+3 1 -+1 1 -+1 1 -+1 1 -+2 1 -+1 1 --7 1 -+5 1 -fe=(8) -+41 1 -+1 1 -+1 1 -fi=(10) --49 1 -fe=(8) -+50 5 - -fl=(79) -fn=(304) check_match -32 3 --1 3 -+2 3 --1 3 --1 3 -+2 3 --1 3 --1 3 -+2 9 --1 3 -+1 3 --2 18 -+5 3 --5 9 -+4 3 -+1 3 -+12 12 -+3 3 -+2 3 --2 6 -+2 6 -cfi=(24) -cfn=(60) -calls=3 -15 -* 351 -* 3 -+4 3 -+1 3 --1 9 -+1 21 -+1 9 -cfi=(24) -cfn=(60) -calls=3 -21 -* 219 --19 9 -+24 27 - -fn=(302) -74 9 -+1 3 --1 24 -+4 3 --4 9 -+2 3 -+2 9 -+37 3 --37 12 -+1 3 -+2 12 -+3 3 -+2 6 --2 6 -+3 15 --3 5 -+2 4 --2 4 -+3 10 --3 2 -+3 3 -cfn=(304) -calls=3 -55 -* 759 -+3 3 -+3 6 -+23 33 - -fl=(18) -fn=(40) -309 24 --3 24 -+3 24 -+34 69 -+3 23 --1 23 -+1 23 -+1 23 -+2 23 -+1 23 --4 137 --1 137 -+1 137 -+1 137 -+2 137 -+1 137 --7 159 -+12 22 -+1 22 --43 4 -+17 1 --1 1 --27 1 -122 1 -329 1 -122 5 -+4 1 -+1 1 -+1 1 -+1 1 -+1 1 -+46 1 -+1 1 -+1 1 -337 1 -+2 1 --2 1 -+1 1 -+5 8 -+3 4 --1 4 -+1 4 -+1 4 -+2 4 -+1 4 -+5 1 -+1 2 -190 1 --7 1 -+2 1 -351 2 - -fl=(19) -fn=(42) -59 63 -+3 21 --3 231 -+3 21 --3 105 -+3 21 -+21 40 -cfi=(34) -cfn=(90) -calls=20 -44 -* 1057 --3 40 -+7 40 --4 20 -+9 40 --9 20 -fi=(20) --39 80 -cfi=(21) -cfn=(46) -calls=20 +38 -* 832 -* 4 -cfi=(21) -cfn=(46) -calls=1 +38 -* 45 -* 21 -fe=(19) -+51 21 -+5 42 -+3 21 --1 21 --4 21 -+1 21 -+5 84 -cfi=(22) -cfn=(52) -calls=21 -75 -* 1773 -+2 21 --2 21 -+2 21 -+13 42 -+6 1 -+2 6 -+3 4 --3 120 -+3 80 -+4 21 --2 21 -+2 21 -+2 21 -+3 30 -+2 16 --2 48 -fi=(23) -1348 16 --7 16 -fe=(19) -155 147 --6 21 -+1 21 --1 21 -+1 21 -+29 21 --24 21 -+2 40 -+3 20 --3 20 -+7 120 -+4 20 -+8 1 -+3 1 -+10 2 --10 20 -+10 40 -+2 40 -cfi=(34) -cfn=(90) -calls=20 39 -* 1243 -+4 20 --4 40 -+4 20 -+68 315 -131 63 --12 40 -+4 20 --4 20 -+34 1 -+7 3 -+85 60 -cfi=(22) -cfn=(52) -calls=20 29 -* 1768 -* 20 -+6 60 --1 20 -+1 582 --1 281 -+1 281 -+2 20 -+3 20 -+3 40 --91 60 -fi=(20) -56 80 -cfi=(21) -cfn=(51) -calls=5 -21 -* 130 -cfi=(21) -cfn=(50) -calls=15 -21 -* 390 -* 20 -fe=(19) -200 20 -64 3 -+2 1 -+1 5 -+10 1 --6 3 - -fn=(56) -31 63 -+2 42 --2 42 -+2 42 --2 21 -+2 21 -cfi=(16) -cfn=(58) -calls=21 +11 -* 42 -+2 168 -+3 690 -+2 20 -+2 20 -+4 80 -+1 60 --1 40 -+5 20 --4 20 -+4 40 --3 40 -+2 80 -+1 20 --1 20 -cfi=(16) -cfn=(58) -calls=20 -6 -* 40 --4 4 -+1 3 --1 2 -+5 1 --4 1 -+4 2 --3 2 -+2 4 -+1 1 --1 1 -cfi=(16) -cfn=(58) -calls=1 -6 -* 2 --5 2 - -fl=(64) -fn=(202) -30 1 -+4 1 --4 4 -+4 2 --4 2 -+4 1 -+29 4 --17 1 -+17 2 -cfi=(59) -cfn=(179) -calls=1 201 -* 137395 --18 2 - -fn=(203) -30 19 -+4 19 --4 76 -+4 38 --4 38 -+4 19 -+29 76 --17 19 -+17 38 --18 38 - -fl=(66) -fn=(216) -35 3 -+1 1 --1 4 -+1 1 -cfi=(34) -cfn=(90) -calls=1 +3 -* 49 -* 1 -+1 4 -cfi=(22) -cfn=(52) -calls=1 -8 -* 98 -+1 7 - -fl=(32) -fn=(80) -25 12 -+1 6 --1 12 -+1 6 -+4 3 -+4 6 --4 6 -+4 6 -+2 3 -+11 18 --20 6 -+20 12 - -fn=(78) -51 20 -+3 10 -cfn=(80) -calls=5 -29 -* 84 -* 5 -+8 20 - -ob=(10) -fl=(100) -fn=(384) -0 12 - -ob=(3) -fl=(92) -fn=(356) -46 3 -+5 2 --5 1 -+5 1 -+4 7 -+6 3 -+10 1 -+1 2 --10 1 -+1 3 -+9 1 --1 1 -cfi=(93) ./misc/./misc/init-misc.c -cfn=(358) __init_misc -calls=1 -40 -* 234 - -fl=(81) -fn=(308) -fi=(2) -2398 1 -cob=(1) -cfi=(8) -cfn=(328) -calls=1 148 -* 1 -+4 3 -cob=(1) -cfi=(40) -cfn=(330) -calls=1 46 -* 4 -+5 2 -cob=(1) -cfi=(37) -cfn=(154) -calls=1 38 -* 7 -+1 1 -+1 1 -cob=(1) -cfi=(37) -cfn=(114) -calls=1 117 -* 1 -+5 1 -cob=(1) -cfi=(61) -cfn=(332) -calls=1 536 -* 22 -+5 16 -fe=(81) -33 10 -+2 1 -cfi=(82) ./ctype/./ctype/ctype-info.c -cfn=(310) __ctype_init -calls=1 -4 -* 24 -+3 2 -fi=(84) ./elf/../sysdeps/nptl/pthread_early_init.h --5 2 -fe=(81) -+5 1 -+3 4 -fi=(84) --8 1 -cfi=(83) ./resource/../sysdeps/unix/sysv/linux/getrlimit64.c -cfn=(312) getrlimit -calls=1 +5 -* 12 -* 2 -+1 3 -+4 3 -+7 2 -fi=(108) ./elf/../nptl/nptl-stack.h -+13 2 -fi=(84) --13 1 -fi=(108) -+13 3 -fi=(84) --12 3 -fi=(108) -+12 1 -fi=(84) --12 1 -+6 6 -+1 2 --1 1 -+1 1 -+1 1 -+3 1 -cfi=(85) ./nptl/./nptl/pthread_mutex_conf.c -cfn=(316) __pthread_tunables_init -calls=1 -7 -* 1597 -fe=(81) - -fl=(83) -fn=(312) -38 2 -+1 10 - -fl=(85) -fn=(316) -50 3 -+1 1 --1 5 -+1 4 --1 1 -+1 1 -cob=(1) -cfi=(11) -cfn=(28) -calls=2 408 -* 43 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 -17 -* 1500 -* 29 -fi=(81) --2 10 -fe=(85) - -fl=(103) ./nptl/./nptl/pthread_once.c -fn=(434) pthread_once@@GLIBC_2.34 -139 2 -+1 2 -+3 1 -cfn=(436) __pthread_once_slow -calls=1 -75 -* 17 - -fn=(436) -68 13 -+8 2 -+4 2 - -fl=(95) ./string/./string/strchr.c -fn=(362) index -46 4 --5 4 -+5 4 -+1 9 --1 9 -+4 9 --4 9 -+2 20 -179 2 -71 27 -+61 3 --14 6 -+14 3 --11 3 -+11 3 --8 3 -+8 12 -+8 6 -+2 2 -+2 4 -+2 2 -+2 4 -+2 2 -+2 4 -+2 2 -+4 4 -+2 2 -+2 4 -+2 1 -51 1 -179 1 --17 2 - -fl=(82) -fn=(310) -31 4 -+2 2 --2 3 -+2 1 --2 1 -+4 2 --4 1 -+2 1 -+2 2 --4 1 -+2 1 -+2 1 --4 1 -+2 1 -+2 1 -+1 1 - -fl=(93) -fn=(358) -31 1 --1 2 -+1 1 --1 3 -+1 1 -+2 3 -cfi=(94) ./string/./string/strrchr.c -cfn=(360) rindex -calls=1 -4 -* 209 -+1 1 -+3 4 -+1 4 -+2 5 - -fl=(96) -fn=(364) -84 6 -+1 4 -+1 4 -+2 1 - -fl=(94) -fn=(360) -29 7 -+7 2 -+7 6 --3 9 -cfi=(95) -cfn=(362) -calls=3 +6 -* 139 -* 3 -cfi=(95) -cfn=(362) -calls=1 +6 -* 32 -* 4 -+7 7 - -fl=(102) ./string/./string/memset.c -fn=(418) memset -31 2 --2 2 -+2 2 -+5 2 -+5 4 -+4 6 -+8 2 -+1 8 -+2 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 -+1 2 --10 2 -+2 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 -+1 10 --10 14 -+16 4 -+1 2 -+6 2 --41 4 -+45 2 -+8 2 - -ob=(4) -fl=(89) -fn=(342) -0 10 - -ob=(7) -fl=(97) -fn=(366) -0 11 - -ob=(4) -fl=(89) -fn=(342) -0 1 - -ob=(7) -fl=(97) -fn=(366) -0 1 - -ob=(4) -fl=(89) -fn=(342) -0 1 - -ob=(8) -fl=(98) -fn=(372) -0 12 - -ob=(11) -fl=(101) -fn=(422) std::locale::facet::_S_get_c_name() -0 3 - -fn=(400) std::locale::locale() -0 8 -cfn=(402) 0x00000000000b5f2c -calls=1 0 -0 6100 - -fn=(414) std::locale::_Impl::_Impl(unsigned long) -0 22 -cfn=(426) std::ctype::ctype(unsigned short const*, bool, unsigned long) -calls=1 0 -0 2228 -cfn=(422) -calls=1 0 -0 3 -cob=(3) -cfi=(102) -cfn=(418) -calls=2 31 -0 168 -cob=(1) -cfi=(86) -cfn=(322) -calls=3 34 -0 2714 -0 83 - -fn=(396) std::ios_base::Init::Init() -0 54 -cfn=(400) -calls=1 0 -0 6108 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 816 -0 11 - -fn=(402) -0 11 -cfn=(414) -calls=1 0 -0 5218 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 851 -0 11 -0 9 - -fn=(426) -0 15 -cfn=(430) std::locale::facet::_S_get_c_locale() -calls=1 0 -0 1218 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 984 -0 11 - -fn=(430) -0 7 -cob=(3) -cfi=(103) -cfn=(434) -calls=1 139 -0 22 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 1178 -0 11 - -fn=(390) -0 5 -cfn=(396) -calls=1 0 -0 6989 -cob=(1) -cfi=(86) -cfn=(322) -calls=1 34 -0 909 -0 11 - -ob=(6) -fl=(91) -fn=(350) -0 12 - -totals: 25203449 diff --git a/client/minilibc.c b/client/minilibc.c index 0b5e75f..03fae5f 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -335,12 +335,12 @@ ASM_BLOCK( .global __clone; .type __clone, %function; __clone: - // Save func and arg to stack + // Save func and arg to stack addi a1, a1, -16; sd a0, 0(a1); sd a3, 8(a1); - // Call SYS_clone + // Call SYS_clone mv a0, a2; mv a2, a4; mv a3, a5; @@ -349,15 +349,15 @@ ASM_BLOCK( ecall; beqz a0, 1f; - // Parent + // Parent ret; - // Child + // Child 1: ld a1, 0(sp); ld a0, 8(sp); jalr a1; - // Exit + // Exit li a7, 93; // SYS_exit ecall; ); diff --git a/client/plt.inc b/client/plt.inc index 35e1d44..0b7b020 100644 --- a/client/plt.inc +++ b/client/plt.inc @@ -6,6 +6,9 @@ PLT_ENTRY("__divti3", __divti3) // libgcc PLT_ENTRY("__udivti3", __udivti3) // libgcc PLT_ENTRY("__modti3", __modti3) // libgcc PLT_ENTRY("__umodti3", __umodti3) // libgcc +PLT_ENTRY("__muldi3", __muldi3) // libgcc +PLT_ENTRY("__umoddi3", __umoddi3) // libgcc +PLT_ENTRY("__udivdi3", __udivdi3) // libgcc PLT_ENTRY("floorf", floorf) // math.c PLT_ENTRY("floor", floor) // math.c PLT_ENTRY("ceilf", ceilf) // math.c diff --git a/client/rtld.c b/client/rtld.c index 381f6b8..79706d1 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -292,6 +292,7 @@ rtld_elf_resolve_sym(RtldElf* re, size_t symtab_idx, size_t sym_idx, if (sym->st_shndx == SHN_UNDEF) { const char* name = ""; rtld_elf_resolve_str(re, sym_shdr->sh_link, sym->st_name, &name); +// printf("name = %s\n", name); if (!strncmp(name, "glob_", 5)) { dprintf(2, "undefined symbol reference to %s\n", name); return -EINVAL; @@ -469,31 +470,32 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { // printf("*tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_ADD32: - printf("tgt before add32 = %p, ", *((uint32_t*)tgt)); - res = syma + (*(uint64_t*)pc); - printf("sym = %p, ", sym); - printf("add = %p, ", patch_data->addend); - printf("*pc = %p, ", (*(uint64_t*)pc)); - printf("res = %p, ", res); +// printf("tgt before add32 = %p, ", *((uint32_t*)tgt)); +// res = syma + (*(uint64_t*)pc);i +// printf("sym = %p, ", sym); +// printf("add = %p, ", patch_data->addend); +// printf("*pc = %p, ", (*(uint32_t*)pc)); +// printf("res = %p, ", res); // if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) // return -EINVAL; - rtld_blend(tgt, 0xffffffff, res); -// *((uint32_t*)tgt) += (uint32_t) syma; - printf("tgt after = %p\n", *((uint32_t*)tgt)); +// rtld_blend(tgt, 0xffffffff, ); + *((uint32_t*)tgt) += (uint32_t) syma; +// printf("tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_SUB32: - printf("tgt before sub32 = %p, ", *((uint32_t*)tgt)); - res = (*(uint64_t*)pc) - (uint64_t)sym - (uint64_t)patch_data->addend; - printf("sym = %p, ", sym); - printf("add = %p, ", patch_data->addend); - printf("*pc = %p, ", (*(uint64_t*)pc)); - printf("res = %p, ", res); +// printf("tgt before sub32 = %p, ", *((uint32_t*)tgt)); +// res = (*(uint64_t*)pc) - (uint64_t)sym - (uint64_t)patch_data->addend; +// printf("sym = %p, ", sym); +// printf("add = %p, ", patch_data->addend); +// printf("*pc = %p, ", (*(uint32_t*)pc)); +// printf("res = %p, ", res); // if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) // return -EINVAL; - rtld_blend(tgt, 0xffffffff, res); - printf("tgt after = %p\n", *((uint32_t*)tgt)); + *((uint32_t*)tgt) -= (uint32_t) syma; +// rtld_blend(tgt, 0xffffffff, res); +// printf("tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_CALL_PLT: @@ -868,7 +870,6 @@ rtld_resolve(Rtld* r, uintptr_t addr, void** out_entry) { void rtld_patch(struct RtldPatchData* patch_data, void* sym) { // Ignore relocations failures and cases where nothing is to patch. - printf("rtld_patch: sym = %p\n"); char reloc_buf[8]; if (!patch_data) return; diff --git a/test/riscv64/build-rec.sh b/test/riscv64/build-rec.sh deleted file mode 100755 index 021b3be..0000000 --- a/test/riscv64/build-rec.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -gcc -Wall -Wpedantic -static rec.c -o rec -gcc -Wall -Wpedantic -static -no-pie -fno-pie -nostdlib rec_nolibc.c -o rec_nolibc - -gcc -Wall -Wpedantic -static -nostdlib -no-pie -fno-pie -fno-pic exit.S -o exit -gcc -Wall -Wpedantic -static -nostdlib exit.S -o exit-pie diff --git a/test/riscv64/rec.c b/test/riscv64/rec.c deleted file mode 100644 index 35351ed..0000000 --- a/test/riscv64/rec.c +++ /dev/null @@ -1,14 +0,0 @@ -//#include -//#include - -int rec(int n) { - if (n <= 0) - return 1; - return n * rec(n - 1); -} - -int main(int argc, char *argv[]) { - int n = 5; -// printf("rec(%d) = %d\n", n, rec(n)); - return rec(n); -} diff --git a/test/riscv64/rec_nolibc.c b/test/riscv64/rec_nolibc.c deleted file mode 100644 index 97fe658..0000000 --- a/test/riscv64/rec_nolibc.c +++ /dev/null @@ -1,21 +0,0 @@ -//#include -//#include - -int rec(int n) { - if (n <= 0) - return 1; - return n * rec(n - 1); -} - -__attribute__((force_align_arg_pointer)) -void _start() { - int n = 5; -// printf("rec(%d) = %d\n", n, rec(n)); - int res = rec(n); - asm("lb a0, %0\n" - "li a7, 93\n" - "ecall\n" :: "m"(res) - ); - __builtin_unreachable(); -} - From 979d9922d5037b77b47d0e398acff7b8d7c9512e Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 5 Dec 2024 13:32:19 +0000 Subject: [PATCH 15/31] client: cleaning --- .test/func_1010c.elf | Bin 1040 -> 0 bytes .test/sc.S | 2 -- .test/sc.c | 2 -- .test/sc.o | Bin 1536 -> 0 bytes client/dispatch.c | 4 +-- client/memory.c | 3 +- client/minilibc.c | 64 ++++++++++++++++++++----------------------- client/rtld.c | 47 ------------------------------- 8 files changed, 33 insertions(+), 89 deletions(-) delete mode 100644 .test/func_1010c.elf delete mode 100644 .test/sc.S delete mode 100644 .test/sc.c delete mode 100644 .test/sc.o diff --git a/.test/func_1010c.elf b/.test/func_1010c.elf deleted file mode 100644 index b474ef5025b127dfe7ca143e3f9074cd04b83f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcmbVK!AiqG5S^`wR4CHgi%=0EXG5w*Dk!8-6+}cTUc8hv#$gZJ<1rBW~7 zSLSv7Iwpww_4bG#guoGAI@!O(HU`t~e=5T4Clwc4Yk21KY2Cn*}iE=f5>eLCsY1}P$<&*gHx+F*W^+ch*IXz@jS z^3i|CHy`~|6#sxalbcPK_41+%mv82qZ)WypH}`&L?{Q5CFiXI1IQI;T=$+f~%#0y` z6=(=?){NGm**=AaFGK@lAJO(AK{4^_0}{L2+YiH5lK1-QDC|UXOSU(oBA-mhs&ku( zSxtaCqxbeXh<8G)2Q_FRca8ZOB&+rAY3-Ar1k2F#Qp5RZj#*Qmc|9Zw-qT7iRePWLFmOM!!+f!Gom=mX63@ zz?aqBpa;t?1y_-|V!iLYzsh6=a<3i2#>sr5YO1nyFxV%eEOnhLK0vg088Y8QyvQ~| z$o4HnTMtrAhdS*c>Y~IWW9j@vgFHxe3bLmZ$ZR|u<|E`rW1Y+0r!O~^PP5k_i+qsE z{AmBMNQXJPbT4G8b5^)8UsUNkp4 z#edDegSk|*jgP%d|C=_6w&`#1uEp8X&$eUPCeKh$&>+tJCw*Z-%xJ*9u{#)`nZ`!I z_>2p7*}sHHXJqot_v8g~IJ;w(&EW@I=02N%yZ@@allCVk+~hX Y_unMPT5f;(##QBi<@`e{mrOVR4?uKRga7~l diff --git a/client/dispatch.c b/client/dispatch.c index 723a3bc..30789b6 100644 --- a/client/dispatch.c +++ b/client/dispatch.c @@ -76,7 +76,6 @@ resolve_func(struct CpuState* cpu_state, uintptr_t addr, retval = rtld_add_object(&state->rtld, obj_base, obj_size, addr); if (retval < 0) goto error; - retval = rtld_resolve(&state->rtld, addr, &func); if (retval < 0) goto error; @@ -121,9 +120,8 @@ inline void dispatch_cdecl(uint64_t* cpu_regs) { uintptr_t hash = QUICK_TLB_HASH(addr); uintptr_t func = cpu_state->quick_tlb[hash][1]; - if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) { + if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) func = resolve_func(cpu_state, addr, NULL); - } void(* func_p)(void*); *((void**) &func_p) = (void*) func; func_p(cpu_regs); diff --git a/client/memory.c b/client/memory.c index d8cbfa0..0773fc3 100644 --- a/client/memory.c +++ b/client/memory.c @@ -112,8 +112,9 @@ mem_write_code(void* dst, const void* src, size_t size) { __asm__ volatile("dsb ish"); } __asm__ volatile("isb"); +#elif defined(__riscv) #else -//#error "Implement ICache flush for unknown target" +#error "Implement ICache flush for unknown target" #endif return 0; } diff --git a/client/minilibc.c b/client/minilibc.c index 03fae5f..b0150f0 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -295,42 +295,39 @@ get_thread_area(void) { : "+r"(a0) : __VA_ARGS__ : "memory"); \ return a0; \ -//ASM_BLOCK( -// .text; -// .type _start, %function; -// .weak _DYNAMIC; -// .hidden _DYNAMIC; -// .globl _start; -//_start: -// mv fp, x0; -// mv a0, sp; -// lla a1, _DYNAMIC; -// andi sp, sp, 0xfffffffffffffff0; -// jal __start_main; -// -// li a7, 93; -// ecall -//); - ASM_BLOCK( - .text; - .global _start; - .type _start, %function; - _start: - .weak __global_pointer$; - .hidden __global_pointer$; - .option push; - .option norelax; - lla gp, __global_pointer$; - .option pop; - mv a0, sp; - .weak _DYNAMIC; - .hidden _DYNAMIC; - lla a1, _DYNAMIC; - andi sp, sp, -16; - tail __start_main; + .text; + .type _start, %function; + .weak _DYNAMIC; + .hidden _DYNAMIC; + .globl _start; +_start: + mv fp, x0; + mv a0, sp; + lla a1, _DYNAMIC; + andi sp, sp, 0xfffffffffffffff0; + jal __start_main; ); +//ASM_BLOCK( +// .text; +// .global _start; +// .type _start, %function; +// _start: +// .weak __global_pointer$; +// .hidden __global_pointer$; +// .option push; +// .option norelax; +// lla gp, __global_pointer$; +// .option pop; +// mv a0, sp; +// .weak _DYNAMIC; +// .hidden _DYNAMIC; +// lla a1, _DYNAMIC; +// andi sp, sp, -16; +// tail __start_main; +//); + ASM_BLOCK( .global __clone; .type __clone, %function; @@ -1019,7 +1016,6 @@ __start_main(const size_t* initial_stack, const size_t* dynv) _exit(-ENOEXEC); *((size_t*) (base + rel[0])) += base; } - for (; relasz; rela += 3, relasz -= 3*sizeof(size_t)) { if (ELF_R_TYPE(rela[1]) != R_RELATIVE) _exit(-ENOEXEC); diff --git a/client/rtld.c b/client/rtld.c index 79706d1..77c9ddb 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -361,7 +361,6 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; - uint64_t res; switch (patch_data->rel_type) { #if defined(__x86_64__) @@ -455,67 +454,21 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { break; #elif defined(__riscv) case R_RISCV_32_PCREL: -// printf("R_RISCV_32_PCREL\n"); -// printf("tgt = %p\n", tgt); -// printf("*tgt before 32pcrel = %p, ", *((uint32_t*)tgt)); -// printf("sym = %p, ", sym); -// printf("add = %p, ", patch_data->addend); -// printf("pc = %p, ", pc); -// printf("prel_syma = %p, ", prel_syma); -// res = *((uint64_t*)sym) + patch_data->addend + - if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_32_PCREL")) return -EINVAL; rtld_blend(tgt, 0xffffffff, prel_syma); -// printf("*tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_ADD32: -// printf("tgt before add32 = %p, ", *((uint32_t*)tgt)); -// res = syma + (*(uint64_t*)pc);i -// printf("sym = %p, ", sym); -// printf("add = %p, ", patch_data->addend); -// printf("*pc = %p, ", (*(uint32_t*)pc)); -// printf("res = %p, ", res); - -// if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) -// return -EINVAL; -// rtld_blend(tgt, 0xffffffff, ); *((uint32_t*)tgt) += (uint32_t) syma; -// printf("tgt after = %p\n", *((uint32_t*)tgt)); break; case R_RISCV_SUB32: -// printf("tgt before sub32 = %p, ", *((uint32_t*)tgt)); -// res = (*(uint64_t*)pc) - (uint64_t)sym - (uint64_t)patch_data->addend; -// printf("sym = %p, ", sym); -// printf("add = %p, ", patch_data->addend); -// printf("*pc = %p, ", (*(uint32_t*)pc)); -// printf("res = %p, ", res); - -// if (!rtld_elf_signed_range(res, 32, "R_RISCV_ADD32")) -// return -EINVAL; *((uint32_t*)tgt) -= (uint32_t) syma; -// rtld_blend(tgt, 0xffffffff, res); -// printf("tgt after = %p\n", *((uint32_t*)tgt)); - break; case R_RISCV_CALL_PLT: -// printf("tgt = %p\n", tgt + 4); -// printf("*tgt after = %p\n", *((uint32_t*)tgt)); -// printf("*(tgt + 4) before call_plt = %p, ", *((uint32_t*)tgt + 4)); -// printf("sym = %p, ", sym); -// printf("add = %p, ", patch_data->addend); -// printf("pc = %p, ", pc); -// printf("prel_syma = %p, ", prel_syma); - if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_CALL_PLT")) return -EINVAL; - rtld_blend(tgt + 4, 0xfff00000 , prel_syma << 20); rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); - -// printf("*tgt after = %p\n", *((uint32_t*)tgt)); -// printf("*(tgt + 4) after = %p\n", *((uint32_t*)tgt + 4)); - break; #endif default: From ea0b5d8f41083f01a354a6d48cafe0bb4cfef8ae Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 5 Dec 2024 13:53:15 +0000 Subject: [PATCH 16/31] test: add small tests --- test/riscv64/fact_rv64.S | 27 ++++++++ test/riscv64/fib_nolc.c | 21 ++++++ test/riscv64/meson.build | 4 ++ test/riscv64/rec_nolibc.c | 21 ++++++ test/riscv64/rv64_runtime.S | 129 ++++++++++++++++++++++++++++++++++++ 5 files changed, 202 insertions(+) create mode 100644 test/riscv64/fact_rv64.S create mode 100644 test/riscv64/fib_nolc.c create mode 100644 test/riscv64/rec_nolibc.c create mode 100644 test/riscv64/rv64_runtime.S diff --git a/test/riscv64/fact_rv64.S b/test/riscv64/fact_rv64.S new file mode 100644 index 0000000..c8e8444 --- /dev/null +++ b/test/riscv64/fact_rv64.S @@ -0,0 +1,27 @@ +# +# a0-a2 - parameters to linux function services +# a7 - linux function number +# + +# Provide program starting address to linker +.global _start +_start: li a0, 5 + call fac + call print_int + addi a0, x0, 0 # return 0 + #addi a7, x0, 93 # Service command code 93 terminates + li a7, 93 # Service command code 93 terminates + ecall # Call linux to terminate the program + +fac: # a0 is argument and return value + li a1, 1 # 1 + ble a0, a1, .fac_exit + mv a5, a0 + li a0, 1 +.fac_loop: + mv a4, a5 + addi a5, a5, -1 + mul a0, a4, a0 + bne a5, a1, .fac_loop +.fac_exit: + ret diff --git a/test/riscv64/fib_nolc.c b/test/riscv64/fib_nolc.c new file mode 100644 index 0000000..1accdb2 --- /dev/null +++ b/test/riscv64/fib_nolc.c @@ -0,0 +1,21 @@ +//#include +//#include + +int rec(int n) { + if (n <= 0) + return 1; + return n + rec(n - 1); +} + +__attribute__((force_align_arg_pointer)) +void _start() { + int n = 5; +// printf("rec(%d) = %d\n", n, rec(n)); + int res = rec(n); + asm("lb a0, %0\n" + "li a7, 93\n" + "ecall\n" :: "m"(res) + ); + __builtin_unreachable(); +} + diff --git a/test/riscv64/meson.build b/test/riscv64/meson.build index 336a994..7aa0f1b 100644 --- a/test/riscv64/meson.build +++ b/test/riscv64/meson.build @@ -3,4 +3,8 @@ triple = 'riscv64-linux-gnu' cases = [ {'name': 'exit', 'src': files('exit.S')}, {'name': 'lrsc-loop', 'src': files('lrsc-loop.S')}, + + {'name': 'fib_nolc', 'src': files('fib_nolc.c')}, + {'name': 'rec_nolibc', 'src': files('rec_nolibc.c')}, + {'name': 'fact_rv64', 'src': files('fact_rv64.S', 'rv64_runtime.S')}, ] diff --git a/test/riscv64/rec_nolibc.c b/test/riscv64/rec_nolibc.c new file mode 100644 index 0000000..97fe658 --- /dev/null +++ b/test/riscv64/rec_nolibc.c @@ -0,0 +1,21 @@ +//#include +//#include + +int rec(int n) { + if (n <= 0) + return 1; + return n * rec(n - 1); +} + +__attribute__((force_align_arg_pointer)) +void _start() { + int n = 5; +// printf("rec(%d) = %d\n", n, rec(n)); + int res = rec(n); + asm("lb a0, %0\n" + "li a7, 93\n" + "ecall\n" :: "m"(res) + ); + __builtin_unreachable(); +} + diff --git a/test/riscv64/rv64_runtime.S b/test/riscv64/rv64_runtime.S new file mode 100644 index 0000000..92678b3 --- /dev/null +++ b/test/riscv64/rv64_runtime.S @@ -0,0 +1,129 @@ +.section .data +str2: .string "01234567012345670123456701234567\n" # 32+1 bytes +#str2: .string "01234567\n" # 32+1 bytes +NOT_IMPLEMENTED_STR: .string "Not implemented\n\0" +.equ BUFSIZE,32 +.globl str2 +.text + +.global not_implemented +not_implemented: + li a7, 64 # write on RISCV linux" + li a0, 1 # stdout + la a1, NOT_IMPLEMENTED_STR + li a2, 16 + ecall + li a0, 1 + li a7, 93 + ecall + ret + +.global memset +memset: # a0 is addr, a1 is byte, a2 is length +memset_loop: + beq a2, zero, memset_fin + sb a1, (a0) + addi a0, a0, 1 + addi a2, a2, -1 + j memset_loop +memset_fin: + ret + +.global strlen +strlen: # a0 is a string, a0 is a result + li t0, 0 +strlen_loop: + ld t1, (a0) + bne zero, t1, strlen_fin + addi a0, a0, 1 + addi t0, t0, 1 + j strlen_loop +strlen_fin: + mv a0, t0 + ret + +.global memcpy +memcpy: # a0 dest, a1 src, a2 size. No intersection +memcpy_loop: + beq a2, zero, memcpy_fin + lb t0, (a1) + sb t0, (a0) + addi a0, a0, 1 + addi a1, a1, 1 + addi a2, a2, -1 + j memcpy_loop +memcpy_fin: + ret + +.global myitoa +myitoa: + # t2 is an arg, a0 is current pos, a1 is output len + li t1, 10 # t1 is basis + mv t2, a0 # argument + mv a1, zero # output length + la a0, str2 + addi a0, a0, BUFSIZE # 32 is preallocated space +myitoa_loop: + # + remu t4, t2, t1 + addi t4, t4, 0x30 # t4 stores one more char + addi a1, a1, 1 + addi a0, a0, -1 + sb t4, (a0) + divu t2, t2, t1 + bne t2, zero, myitoa_loop + ret + +.global trace_variable +trace_variable: + addi sp, sp, -8*4 + sd ra, 24(sp) # save ra beacuse we do calls IMPORTANT + sd a0, 16(sp) # a0 is varname + sd a1, 8(sp) # a1 is varname length + sd a2, (sp) # a2 is a value + # TODO: varname length + + la a0, str2 + li a1, 0x20 # space + li a2, BUFSIZE + call memset + + ld a0, (sp) + call myitoa + + la a0, str2 + ld a1, 16(sp) + ld a2, 8(sp) + call memcpy + + li a7, 64 # write on RISCV linux" + li a0, 1 + la a1, str2 + li a2, BUFSIZE+1 + ecall + ld ra, 24(sp) + addi sp, sp, 8*4 + ret + +.global print_int +print_int: + addi sp, sp, -16 + sd a0, 8(sp) + sd ra, (sp) + la a0, str2 + li a1, 0x20 # space + li a2, BUFSIZE + call memset + + ld a0, 8(sp) + call myitoa + + li a7, 64 # write on RISCV linux" + li a0, 1 + la a1, str2 + li a2, BUFSIZE+1 + ecall + + ld ra, (sp) + addi sp, sp, 16 + ret From 368b3ad759d3875be3377880d35444bf060f8b39 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Fri, 27 Dec 2024 19:11:58 +0000 Subject: [PATCH 17/31] client: attempt at enabling translation of dynamicaly-linked executables --- client/meson.build | 2 +- client/plt.inc | 3 +++ client/rtld.c | 31 +++++++++++++++++++++++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/client/meson.build b/client/meson.build index 37231d4..15cbc20 100644 --- a/client/meson.build +++ b/client/meson.build @@ -18,7 +18,7 @@ endif client_c_args = ['-D_GNU_SOURCE', '-nostdlib', '-fno-builtin', '-fno-stack-protector', '-fomit-frame-pointer', '-fPIC'] -client_link_args = ['-nostdlib', '-nostartfiles', '-lgcc'] +client_link_args = ['-nostdlib', '-nostartfiles', '-lgcc', '-latomic'] cc = meson.get_compiler('c') if host_machine.cpu_family() == 'riscv64' diff --git a/client/plt.inc b/client/plt.inc index 0b7b020..b0e7626 100644 --- a/client/plt.inc +++ b/client/plt.inc @@ -7,8 +7,11 @@ PLT_ENTRY("__udivti3", __udivti3) // libgcc PLT_ENTRY("__modti3", __modti3) // libgcc PLT_ENTRY("__umodti3", __umodti3) // libgcc PLT_ENTRY("__muldi3", __muldi3) // libgcc +PLT_ENTRY("__multi3", __multi3) // libgcc PLT_ENTRY("__umoddi3", __umoddi3) // libgcc PLT_ENTRY("__udivdi3", __udivdi3) // libgcc +PLT_ENTRY("__atomic_fetch_add_4", __atomic_fetch_add_4) +PLT_ENTRY("__atomic_exchange_4", __atomic_exchange_4) PLT_ENTRY("floorf", floorf) // math.c PLT_ENTRY("floor", floor) // math.c PLT_ENTRY("ceilf", ceilf) // math.c diff --git a/client/rtld.c b/client/rtld.c index 77c9ddb..79667dc 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -470,6 +470,32 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { rtld_blend(tgt + 4, 0xfff00000 , prel_syma << 20); rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); break; + case R_RISCV_SET6: + rtld_blend(tgt, 0xff >> 2, syma); + break; + case R_RISCV_SUB6: + *((uint8_t*)tgt) -= syma; + break; + case R_RISCV_SET8: + rtld_blend(tgt, 0xff, syma); + break; + case R_RISCV_SUB8: + *((uint8_t*)tgt) -= syma; + break; + case R_RISCV_SET16: + rtld_blend(tgt, 0xffff, syma); + break; + case R_RISCV_SUB16: + *((uint16_t*)tgt) -= syma; + break; + case R_RISCV_PCREL_HI20: + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_CALL_PLT")) + return -EINVAL; + rtld_blend(tgt + 4, 0xfff00000 , prel_syma << 20); + rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); + break; + case R_RISCV_PCREL_LO12_I: + break; #endif default: dprintf(2, "unhandled relocation %u\n", patch_data->rel_type); @@ -489,6 +515,7 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { if (rela_shdr->sh_entsize != sizeof(Elf64_Rela)) return -EINVAL; + Elf64_Rela* elf_rela = (Elf64_Rela*) ((uint8_t*) re->base + rela_shdr->sh_offset); Elf64_Rela* elf_rela_end = elf_rela + rela_shdr->sh_size / sizeof(Elf64_Rela); @@ -691,8 +718,8 @@ int rtld_add_object(Rtld* r, void* obj_base, size_t obj_size, uint64_t skew) { size_t totalign = 1; for (i = 0, elf_shnt = re.re_shdr; i < re.re_ehdr->e_shnum; i++, elf_shnt++) { // We don't support more flags - if (elf_shnt->sh_flags & ~(SHF_ALLOC|SHF_EXECINSTR|SHF_MERGE|SHF_STRINGS|SHF_INFO_LINK)) { - dprintf(2, "unsupported section flags\n"); + if (elf_shnt->sh_flags & ~(SHF_ALLOC|SHF_EXECINSTR|SHF_MERGE|SHF_STRINGS|SHF_INFO_LINK|SHF_WRITE)) { + dprintf(2, "unsupported section flags: %p\n", elf_shnt->sh_flags); return -EINVAL; } if (elf_shnt->sh_flags & SHF_ALLOC) { From cd5f8a23e01ec9d1d86b4fd99edc816ec0c8426a Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Tue, 18 Feb 2025 12:30:19 +0000 Subject: [PATCH 18/31] client: cleaning & refactoring --- .gitignore | 1 - client/dispatch.c | 1 + client/emulate.c | 4 +++- client/rtld.c | 8 ++------ client/translator.c | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 16ece7f..117d589 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /*.sublime-* /build* /install -/.test diff --git a/client/dispatch.c b/client/dispatch.c index 30789b6..68164ee 100644 --- a/client/dispatch.c +++ b/client/dispatch.c @@ -122,6 +122,7 @@ inline void dispatch_cdecl(uint64_t* cpu_regs) { uintptr_t func = cpu_state->quick_tlb[hash][1]; if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) func = resolve_func(cpu_state, addr, NULL); + void(* func_p)(void*); *((void**) &func_p) = (void*) func; func_p(cpu_regs); diff --git a/client/emulate.c b/client/emulate.c index 4987f8c..973c7df 100644 --- a/client/emulate.c +++ b/client/emulate.c @@ -248,9 +248,11 @@ handle_clone(struct State* state, struct clone_args* uargs, size_t usize) { // clone(flags, stack, parent_tid, tls, child_tid) ssize_t res = syscall(__NR_clone, flags, 0, args.parent_tid, args.tls, args.child_tid, 0); -#else +#elif defined(__riscv) ssize_t res = syscall(__NR_clone, flags, 0, args.parent_tid, args.tls, args.child_tid, 0); +#else +#error "clone not implemented for target" #endif if (res < 0) { diff --git a/client/rtld.c b/client/rtld.c index 79667dc..be8a3b8 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -128,8 +128,6 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { *((uint32_t*) code_ptr+1) = 0x0002b283 | (offset << 20); // ld t0, offset[11:0](t0) *((uint32_t*) code_ptr+2) = 0x00028067; // jalr, x0, 0(t0) *((uint32_t*) code_ptr+3) = 0x00000013; // nop -// *((uint32_t*) code_ptr+2) = 0x00028067 | (offset << 20); // jalr, x0, offset[11:0](t0) -// uint32_t tmp = 0x0000006f | (offset << 20); #else #error #endif // defined(__x86_64__) @@ -149,7 +147,6 @@ plt_create(const struct DispatcherInfo* disp_info, void** out_plt) { static int rtld_patch_create_stub(Rtld* rtld, const struct RtldPatchData* patch_data, uintptr_t* out_stub) { - printf("rtld_patch_create_stub\n"); _Static_assert(_Alignof(struct RtldPatchData) <= 0x10, "patch data alignment too big"); _Alignas(0x10) uint8_t stcode[0x10 + sizeof(*patch_data)]; @@ -176,8 +173,9 @@ rtld_patch_create_stub(Rtld* rtld, const struct RtldPatchData* patch_data, if (!rtld_elf_signed_range(jmptgtdiff - 4, 28, "R_AARCH64_JUMP26")) return -EINVAL; rtld_blend(stcode + 4, 0x03ffffff, (jmptgtdiff - 4) >> 2); +#elif defined(__riscv) #else -//#error "missing patch stub" +#error "missing patch stub" #endif memcpy(stcode+sizeof(stcode)-sizeof(*patch_data), patch_data, sizeof(*patch_data)); @@ -292,7 +290,6 @@ rtld_elf_resolve_sym(RtldElf* re, size_t symtab_idx, size_t sym_idx, if (sym->st_shndx == SHN_UNDEF) { const char* name = ""; rtld_elf_resolve_str(re, sym_shdr->sh_link, sym->st_name, &name); -// printf("name = %s\n", name); if (!strncmp(name, "glob_", 5)) { dprintf(2, "undefined symbol reference to %s\n", name); return -EINVAL; @@ -515,7 +512,6 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { if (rela_shdr->sh_entsize != sizeof(Elf64_Rela)) return -EINVAL; - Elf64_Rela* elf_rela = (Elf64_Rela*) ((uint8_t*) re->base + rela_shdr->sh_offset); Elf64_Rela* elf_rela_end = elf_rela + rela_shdr->sh_size / sizeof(Elf64_Rela); diff --git a/client/translator.c b/client/translator.c index 66d6d8a..2113ddc 100644 --- a/client/translator.c +++ b/client/translator.c @@ -42,7 +42,7 @@ static int32_t translator_hdr_recv(Translator* t, uint32_t id) { int translator_init(Translator* t, const char* server_config, const struct TranslatorServerConfig* tsc) { int socket = 0; - for (size_t i = 0; server_config[i]; i++) + for (size_t i = 0; server_config[i]; i++) socket = socket * 10 + server_config[i] - '0'; t->socket = socket; From 13b0b05dad24e1616779838b8d8c96dd3170f389 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Tue, 18 Feb 2025 14:11:59 +0000 Subject: [PATCH 19/31] client: cleaning & refactoring --- client/meson.build | 4 ++-- client/minilibc.c | 45 ++++++++++++------------------------- test/riscv64/fib_nolc.c | 4 ---- test/riscv64/meson.build | 4 ++-- test/riscv64/rec_nolibc.c | 4 ---- test/riscv64/rv64_runtime.S | 6 ++--- 6 files changed, 21 insertions(+), 46 deletions(-) diff --git a/client/meson.build b/client/meson.build index 15cbc20..dd8f3d7 100644 --- a/client/meson.build +++ b/client/meson.build @@ -21,9 +21,9 @@ client_c_args = ['-D_GNU_SOURCE', '-nostdlib', '-fno-builtin', client_link_args = ['-nostdlib', '-nostartfiles', '-lgcc', '-latomic'] cc = meson.get_compiler('c') -if host_machine.cpu_family() == 'riscv64' +if host_machine.cpu_family() == 'riscv64' and cc.get_id() == 'gcc' and cc.version() == '12' client_link_args += ['-static-pie', '-Wl,-static', '-Wl,-pie', '-Wl,--no-dynamic-linker', '-Wl,-z,text'] -elif +else if cc.has_argument('-static-pie') client_link_args += ['-static-pie'] else diff --git a/client/minilibc.c b/client/minilibc.c index b0150f0..3483bc0 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -290,11 +290,6 @@ get_thread_area(void) { #define SA_RESTORER 0x04000000 #endif -#define __asm_syscall(...) \ - __asm__ __volatile__ ("ecall\n\t" \ - : "+r"(a0) : __VA_ARGS__ : "memory"); \ - return a0; \ - ASM_BLOCK( .text; .type _start, %function; @@ -309,25 +304,6 @@ ASM_BLOCK( jal __start_main; ); -//ASM_BLOCK( -// .text; -// .global _start; -// .type _start, %function; -// _start: -// .weak __global_pointer$; -// .hidden __global_pointer$; -// .option push; -// .option norelax; -// lla gp, __global_pointer$; -// .option pop; -// mv a0, sp; -// .weak _DYNAMIC; -// .hidden _DYNAMIC; -// lla a1, _DYNAMIC; -// andi sp, sp, -16; -// tail __start_main; -//); - ASM_BLOCK( .global __clone; .type __clone, %function; @@ -371,14 +347,16 @@ static size_t syscall0(int n) { register size_t a7 __asm__("a7") = n; register size_t a0 __asm__("a0"); - __asm_syscall("r"(a7)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7) : "memory"); + return a0; } static size_t syscall1(int n, size_t a) { register size_t a7 __asm__("a7") = n; register size_t a0 __asm__("a0") = a; - __asm_syscall("r"(a7), "0"(a0)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7), "0"(a0) : "memory"); + return a0; } static size_t syscall2(int n, size_t a, size_t b) @@ -386,7 +364,8 @@ static size_t syscall2(int n, size_t a, size_t b) register size_t a7 __asm__("a7") = n; register size_t a0 __asm__("a0") = a; register size_t a1 __asm__("a1") = b; - __asm_syscall("r"(a7), "0"(a0), "r"(a1)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7), "0"(a0), "r"(a1) : "memory"); + return a0; } static size_t syscall3(int n, size_t a, size_t b, size_t c) @@ -395,7 +374,8 @@ static size_t syscall3(int n, size_t a, size_t b, size_t c) register size_t a0 __asm__("a0") = a; register size_t a1 __asm__("a1") = b; register size_t a2 __asm__("a2") = c; - __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7), "0"(a0), "r"(a1), "r"(a2) : "memory"); + return a0; } static size_t syscall4(int n, size_t a, size_t b, size_t c, size_t d) @@ -405,7 +385,8 @@ static size_t syscall4(int n, size_t a, size_t b, size_t c, size_t d) register size_t a1 __asm__("a1") = b; register size_t a2 __asm__("a2") = c; register size_t a3 __asm__("a3") = d; - __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3) : "memory"); + return a0; } static size_t syscall5(int n, size_t a, size_t b, size_t c, size_t d, size_t e) @@ -416,7 +397,8 @@ static size_t syscall5(int n, size_t a, size_t b, size_t c, size_t d, size_t e) register size_t a2 __asm__("a2") = c; register size_t a3 __asm__("a3") = d; register size_t a4 __asm__("a4") = e; - __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4) : "memory"); + return a0; } static size_t syscall6(int n, size_t a, size_t b, size_t c, size_t d, size_t e, size_t f) @@ -428,7 +410,8 @@ static size_t syscall6(int n, size_t a, size_t b, size_t c, size_t d, size_t e, register size_t a3 __asm__("a3") = d; register size_t a4 __asm__("a4") = e; register size_t a5 __asm__("a5") = f; - __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)) + __asm__ volatile ("ecall\n\t" : "+r"(a0) : "r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5) : "memory"); + return a0; } int diff --git a/test/riscv64/fib_nolc.c b/test/riscv64/fib_nolc.c index 1accdb2..37f30cc 100644 --- a/test/riscv64/fib_nolc.c +++ b/test/riscv64/fib_nolc.c @@ -1,6 +1,3 @@ -//#include -//#include - int rec(int n) { if (n <= 0) return 1; @@ -10,7 +7,6 @@ int rec(int n) { __attribute__((force_align_arg_pointer)) void _start() { int n = 5; -// printf("rec(%d) = %d\n", n, rec(n)); int res = rec(n); asm("lb a0, %0\n" "li a7, 93\n" diff --git a/test/riscv64/meson.build b/test/riscv64/meson.build index 7aa0f1b..ad0753e 100644 --- a/test/riscv64/meson.build +++ b/test/riscv64/meson.build @@ -4,7 +4,7 @@ cases = [ {'name': 'exit', 'src': files('exit.S')}, {'name': 'lrsc-loop', 'src': files('lrsc-loop.S')}, - {'name': 'fib_nolc', 'src': files('fib_nolc.c')}, - {'name': 'rec_nolibc', 'src': files('rec_nolibc.c')}, + {'name': 'fib_nolc', 'src': files('fib_nolc.c'), 'should_fail' : true}, + {'name': 'rec_nolibc', 'src': files('rec_nolibc.c'), 'should_fail' : true}, {'name': 'fact_rv64', 'src': files('fact_rv64.S', 'rv64_runtime.S')}, ] diff --git a/test/riscv64/rec_nolibc.c b/test/riscv64/rec_nolibc.c index 97fe658..5056a7e 100644 --- a/test/riscv64/rec_nolibc.c +++ b/test/riscv64/rec_nolibc.c @@ -1,6 +1,3 @@ -//#include -//#include - int rec(int n) { if (n <= 0) return 1; @@ -10,7 +7,6 @@ int rec(int n) { __attribute__((force_align_arg_pointer)) void _start() { int n = 5; -// printf("rec(%d) = %d\n", n, rec(n)); int res = rec(n); asm("lb a0, %0\n" "li a7, 93\n" diff --git a/test/riscv64/rv64_runtime.S b/test/riscv64/rv64_runtime.S index 92678b3..294f491 100644 --- a/test/riscv64/rv64_runtime.S +++ b/test/riscv64/rv64_runtime.S @@ -8,7 +8,7 @@ NOT_IMPLEMENTED_STR: .string "Not implemented\n\0" .global not_implemented not_implemented: - li a7, 64 # write on RISCV linux" + li a7, 64 # write on RISCV linux li a0, 1 # stdout la a1, NOT_IMPLEMENTED_STR li a2, 16 @@ -96,7 +96,7 @@ trace_variable: ld a2, 8(sp) call memcpy - li a7, 64 # write on RISCV linux" + li a7, 64 # write on RISCV linux li a0, 1 la a1, str2 li a2, BUFSIZE+1 @@ -118,7 +118,7 @@ print_int: ld a0, 8(sp) call myitoa - li a7, 64 # write on RISCV linux" + li a7, 64 # write on RISCV linux li a0, 1 la a1, str2 li a2, BUFSIZE+1 From 406bb3c84f1f92b4e182d68f0d80dd4c5b38f796 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Tue, 11 Mar 2025 06:56:56 +0000 Subject: [PATCH 20/31] Fix x86-64 host --- client/emulate.c | 4 ++-- client/plt.inc | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/emulate.c b/client/emulate.c index 973c7df..70b0fed 100644 --- a/client/emulate.c +++ b/client/emulate.c @@ -479,7 +479,7 @@ emulate_syscall(uint64_t* cpu_regs) { case 82: // rename #ifdef __riscv res = syscall(__NR_renameat2, AT_FDCWD, arg0, AT_FDCWD, arg1, 0, 0); -#elif +#else res = syscall(__NR_renameat, AT_FDCWD, arg0, AT_FDCWD, arg1, 0, 0); #endif break; @@ -766,7 +766,7 @@ emulate_syscall_generic(struct CpuState* cpu_state, uint64_t* resp, uint64_t nr, nr = __NR_renameat2; arg5 = 0; #endif -#elif +#else nr = __NR_renameat; #endif goto native; diff --git a/client/plt.inc b/client/plt.inc index b0e7626..7d4491b 100644 --- a/client/plt.inc +++ b/client/plt.inc @@ -6,12 +6,14 @@ PLT_ENTRY("__divti3", __divti3) // libgcc PLT_ENTRY("__udivti3", __udivti3) // libgcc PLT_ENTRY("__modti3", __modti3) // libgcc PLT_ENTRY("__umodti3", __umodti3) // libgcc +#if defined(__riscv) PLT_ENTRY("__muldi3", __muldi3) // libgcc PLT_ENTRY("__multi3", __multi3) // libgcc PLT_ENTRY("__umoddi3", __umoddi3) // libgcc PLT_ENTRY("__udivdi3", __udivdi3) // libgcc PLT_ENTRY("__atomic_fetch_add_4", __atomic_fetch_add_4) PLT_ENTRY("__atomic_exchange_4", __atomic_exchange_4) +#endif //defined(__riscv) PLT_ENTRY("floorf", floorf) // math.c PLT_ENTRY("floor", floor) // math.c PLT_ENTRY("ceilf", ceilf) // math.c From d0f0496fe79a5ccbf483ef58fde2f639f7b480e0 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 9 Apr 2025 16:25:12 +0000 Subject: [PATCH 21/31] CI: use jirutka instead of self-hosted runner --- .github/workflows/ci.yml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d1e212a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,40 @@ +name: Alpine Test CI + +on: + push: + branches: + - "tmp-host-riscv64" + +jobs: + build: + runs-on: ubuntu-latest + # defaults: + # run: + # shell: alpine.sh {0} + steps: + - name: Update & Upgrade + run: sudo apt update && sudo apt upgrade --yes + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: 'true' + - name: Setup Alpine Linux v3.20 for riscv64 + uses: jirutka/setup-alpine@v1 + with: + arch: riscv64 + branch: v3.20 + + - name: Run script inside Alpine chroot with riscv64 emulation + run: uname -m + shell: alpine.sh {0} + - name: Install dependencies + run: apk add gcc g++ meson llvm18-dev pkgconf libressl-dev + shell: alpine.sh --root {0} + - name: Build + run: | + meson setup build/ -Dbuildtype=release + ninja -C build + ninja -C build test + shell: alpine.sh {0} + + From faa3d5839578a020662e025d906aa93dacc6878c Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 10 Apr 2025 04:35:19 +0000 Subject: [PATCH 22/31] Update Rellume & Add clang-18 to ci.yml --- .github/workflows/ci.yml | 9 ++++++--- subprojects/rellume | 2 +- test/meson.build | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1e212a..3cf3dfb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,23 +18,26 @@ jobs: uses: actions/checkout@v4 with: submodules: 'true' - - name: Setup Alpine Linux v3.20 for riscv64 + - name: Setup Alpine Linux v3.21 for riscv64 uses: jirutka/setup-alpine@v1 with: arch: riscv64 - branch: v3.20 + branch: v3.21 - name: Run script inside Alpine chroot with riscv64 emulation run: uname -m shell: alpine.sh {0} - name: Install dependencies - run: apk add gcc g++ meson llvm18-dev pkgconf libressl-dev + run: | + apk add build-base gcc g++ cmake meson llvm18-dev clang18-dev lld18-dev pkgconf libressl-dev + ln -s /usr/bin/clang-18 /usr/bin/clang shell: alpine.sh --root {0} - name: Build run: | meson setup build/ -Dbuildtype=release ninja -C build ninja -C build test + cat build/meson-logs/meson-log.txt shell: alpine.sh {0} diff --git a/subprojects/rellume b/subprojects/rellume index 3e84ecb..47122ae 160000 --- a/subprojects/rellume +++ b/subprojects/rellume @@ -1 +1 @@ -Subproject commit 3e84ecbca930650131068c95ba34e8bfb08cb3e8 +Subproject commit 47122ae5e9f3b5a4caf25768afae661bfee20b99 diff --git a/test/meson.build b/test/meson.build index 9fc9025..29a7672 100644 --- a/test/meson.build +++ b/test/meson.build @@ -35,7 +35,7 @@ foreach arch : ['aarch64', 'riscv64', 'x86_64'] depfile: name + '.d', command: testcc + ['-MD', '-MF', '@DEPFILE@', '-o', '@OUTPUT@', '@INPUT@'] + case.get('compile_args', [])) test(name, instrew, suite: [arch], - args: case.get('instrew_args', []) + [exec] + case.get('args', []), + args: case.get('instrew_args', []) + ['--stub=' + client.path()] + [exec] + case.get('args', []), should_fail: case.get('should_fail', false)) endforeach endforeach From 04219fa4a594a4a5d2c1cee3b62f5e3a6bdcdde9 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 10 Apr 2025 07:04:00 +0000 Subject: [PATCH 23/31] Add PLT entries for translation static x86 binaries --- client/plt.inc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/plt.inc b/client/plt.inc index 7d4491b..cbc01d4 100644 --- a/client/plt.inc +++ b/client/plt.inc @@ -11,8 +11,18 @@ PLT_ENTRY("__muldi3", __muldi3) // libgcc PLT_ENTRY("__multi3", __multi3) // libgcc PLT_ENTRY("__umoddi3", __umoddi3) // libgcc PLT_ENTRY("__udivdi3", __udivdi3) // libgcc +PLT_ENTRY("__divdi3", __divdi3) // libgcc +PLT_ENTRY("__moddi3", __moddi3) // libgcc PLT_ENTRY("__atomic_fetch_add_4", __atomic_fetch_add_4) +PLT_ENTRY("__atomic_fetch_add_8", __atomic_fetch_add_8) +PLT_ENTRY("__atomic_fetch_sub_4", __atomic_fetch_sub_4) +PLT_ENTRY("__atomic_fetch_sub_8", __atomic_fetch_sub_8) +PLT_ENTRY("__atomic_fetch_or_4", __atomic_fetch_or_4) +PLT_ENTRY("__atomic_fetch_or_8", __atomic_fetch_or_8) PLT_ENTRY("__atomic_exchange_4", __atomic_exchange_4) +PLT_ENTRY("__atomic_exchange_8", __atomic_exchange_8) +PLT_ENTRY("__atomic_compare_exchange_4", __atomic_compare_exchange_4) +PLT_ENTRY("__atomic_compare_exchange_8", __atomic_compare_exchange_8) #endif //defined(__riscv) PLT_ENTRY("floorf", floorf) // math.c PLT_ENTRY("floor", floor) // math.c From 96bd553ce6397a96fa5c8244f6579d60821bc61c Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 30 Apr 2025 11:57:23 +0000 Subject: [PATCH 24/31] client: add relocation deb info --- .test/gdb/.gdbinit | 19 +++++++++++++++++++ client/rtld.c | 19 ++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 .test/gdb/.gdbinit diff --git a/.test/gdb/.gdbinit b/.test/gdb/.gdbinit new file mode 100644 index 0000000..6fe123b --- /dev/null +++ b/.test/gdb/.gdbinit @@ -0,0 +1,19 @@ +set history save +set breakpoint pending on +b connection.cc:197 +run +del +n +set follow-exec-mode new +# b dispatch.c:55 +# # b dispatch.c:77 +# c +# # s +# # finish +# # b rtld.c:296 +# # del 2 +b dispatch.c:128 +c +c +c + diff --git a/client/rtld.c b/client/rtld.c index be8a3b8..adb2e6c 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -358,6 +358,8 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; + + printf("rel: %u, tgt: %p, sym: %p, addend: %p, syma: %p, pc: %p, prel_syma: %p\n", patch_data->rel_type, *(uint64_t*)tgt,(uintptr_t)sym, patch_data->addend, syma, pc, prel_syma); switch (patch_data->rel_type) { #if defined(__x86_64__) @@ -468,30 +470,36 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); break; case R_RISCV_SET6: - rtld_blend(tgt, 0xff >> 2, syma); + rtld_blend(tgt, 0x3f, syma); break; case R_RISCV_SUB6: - *((uint8_t*)tgt) -= syma; +// uint8_t *res = *((uint8_t*)tgt); +// *res = (res - ((uint8_t)syma & 0x3f)) & 0x3f; + *((uint8_t*)tgt) = (*(uint8_t*)tgt - ((uint8_t)syma & 0x3f)) & 0x3f; break; case R_RISCV_SET8: rtld_blend(tgt, 0xff, syma); break; case R_RISCV_SUB8: - *((uint8_t*)tgt) -= syma; + *((uint8_t*)tgt) -= (uint8_t)syma; break; case R_RISCV_SET16: rtld_blend(tgt, 0xffff, syma); break; case R_RISCV_SUB16: - *((uint16_t*)tgt) -= syma; + *((uint16_t*)tgt) -= (uint16_t)syma; break; case R_RISCV_PCREL_HI20: - if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_CALL_PLT")) + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_PCREL_HI20")) return -EINVAL; rtld_blend(tgt + 4, 0xfff00000 , prel_syma << 20); rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); +// rtld_blend(tgt, 0xfffff000, (prel_syma + 0x800) & 0xfffff000); break; case R_RISCV_PCREL_LO12_I: + if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_PCREL_LO12_I")) + return -EINVAL; +// rtld_blend(tgt, 0xfff00000, (((uint64_t)((uintptr_t)sym - pc)) /*(prel_syma & 0xfff)*/ & 0xfff) << 20 ); break; #endif default: @@ -499,6 +507,7 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { return -EINVAL; } + printf("tgt after: %p\n", *(uint64_t*)tgt); return 0; } From f57663d9e0905cd99a62cd6d50080bfcbc53381a Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 1 May 2025 08:24:02 +0000 Subject: [PATCH 25/31] client: more verbose deb-info and add macros for deb printf --- client/dispatch.c | 10 ++++++++++ client/meson.build | 3 +++ client/rtld.c | 10 ++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/client/dispatch.c b/client/dispatch.c index 68164ee..548c327 100644 --- a/client/dispatch.c +++ b/client/dispatch.c @@ -14,6 +14,12 @@ // Prototype to make compilers happy. This is used in the assembly HHVM // dispatcher on x86-64 below. + +// #define DISPATCH_DEBUG + +#if defined DISPATCH_DEBUG +static uint64_t hunk_count = 0; +#endif uintptr_t resolve_func(struct CpuState*, uintptr_t, struct RtldPatchData*); static void @@ -119,6 +125,10 @@ inline void dispatch_cdecl(uint64_t* cpu_regs) { uintptr_t addr = cpu_regs[0]; uintptr_t hash = QUICK_TLB_HASH(addr); +#if defined DISPATCH_DEBUG + printf("hunk: %u\n", hunk_count); + hunk_count++; +#endif uintptr_t func = cpu_state->quick_tlb[hash][1]; if (UNLIKELY(cpu_state->quick_tlb[hash][0] != addr)) func = resolve_func(cpu_state, addr, NULL); diff --git a/client/meson.build b/client/meson.build index dd8f3d7..f299c49 100644 --- a/client/meson.build +++ b/client/meson.build @@ -49,3 +49,6 @@ client = executable('instrew-client', sources, override_options: ['b_sanitize=none']) test('mathlib', executable('test_mathlib', 'math.c', c_args: ['-DTEST', '-fno-builtin']), protocol: 'tap') +# test('rtldlib', executable('test_rtldlib', +# 'rtld.c', include_directories: include_directories('.'), +# c_args: client_c_args + '-DTEST', link_args: client_link_args), protocol: 'tap') diff --git a/client/rtld.c b/client/rtld.c index adb2e6c..1212598 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -32,6 +32,8 @@ ((val) >= -(1ll << (bits-1)) && (val) < (1ll << (bits-1))-1) #define CHECK_UNSIGNED_BITS(val,bits) ((val) < (1ull << (bits))-1) +// #define RTLD_DEBUG + static bool rtld_elf_signed_range(int64_t val, unsigned bits, const char* relinfo) { if (!CHECK_SIGNED_BITS(val, bits)) { @@ -354,12 +356,14 @@ rtld_elf_add_stub(uintptr_t sym, uintptr_t* out_stub) { #endif static int -rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { +rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct RtldPatchData* pending_reloc, void* pending_sym) { uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; - + +#if defined RTLD_DEBUG printf("rel: %u, tgt: %p, sym: %p, addend: %p, syma: %p, pc: %p, prel_syma: %p\n", patch_data->rel_type, *(uint64_t*)tgt,(uintptr_t)sym, patch_data->addend, syma, pc, prel_syma); +#endif switch (patch_data->rel_type) { #if defined(__x86_64__) @@ -507,7 +511,9 @@ rtld_reloc_at(const struct RtldPatchData* patch_data, void* tgt, void* sym) { return -EINVAL; } +#if defined RTLD_DEBUG printf("tgt after: %p\n", *(uint64_t*)tgt); +#endif return 0; } From ce97bdd6aa0f2a367b131b2d5417f75c544fd451 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Thu, 1 May 2025 08:25:57 +0000 Subject: [PATCH 26/31] client: (wip) add temp data struct for pending relocs --- client/rtld.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/client/rtld.c b/client/rtld.c index 1212598..9746538 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -496,14 +496,23 @@ rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct Rtl case R_RISCV_PCREL_HI20: if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_PCREL_HI20")) return -EINVAL; - rtld_blend(tgt + 4, 0xfff00000 , prel_syma << 20); - rtld_blend(tgt, 0xfffff000, prel_syma + 0x800); -// rtld_blend(tgt, 0xfffff000, (prel_syma + 0x800) & 0xfffff000); + rtld_blend(tgt, 0xfffff000, (prel_syma & 0x800) & 0xfffff000); + + *pending_reloc = *patch_data; + *(int64_t*)pending_sym = (int64_t)prel_syma; break; case R_RISCV_PCREL_LO12_I: if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_PCREL_LO12_I")) return -EINVAL; -// rtld_blend(tgt, 0xfff00000, (((uint64_t)((uintptr_t)sym - pc)) /*(prel_syma & 0xfff)*/ & 0xfff) << 20 ); + + if (pending_reloc && pending_sym) { +// printf("pending_reloc != 0, rel_type = %u\n", pending_reloc->rel_type); + if (pending_reloc->rel_type == R_RISCV_PCREL_HI20 && pending_reloc->patch_addr == (uintptr_t)sym) { +// printf("pending_reloc == R_RISCV_PCREL_HI20\n"); + prel_syma = *(int64_t*)pending_sym; + } + } + rtld_blend(tgt, 0xfff00000, (prel_syma & 0xfff) << 20 ); break; #endif default: @@ -540,6 +549,9 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { unsigned symtab_idx = rela_shdr->sh_link; + struct RtldPatchData* pending_reloc = mem_alloc_data(sizeof(struct RtldPatchData*), getpagesize()); + int64_t pending_sym; + for (; elf_rela != elf_rela_end; ++elf_rela) { // TODO: ensure that size doesn't overflow if (elf_rela->r_offset >= tgt_shdr->sh_size) @@ -558,7 +570,8 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { return -EINVAL; uint8_t* tgt = sec_write_addr + elf_rela->r_offset; - int retval = rtld_reloc_at(&reloc_patch, tgt, (void*) sym); + + int retval = rtld_reloc_at(&reloc_patch, tgt, (void*) sym, pending_reloc, &pending_sym); if (retval < 0) return retval; } @@ -867,6 +880,6 @@ rtld_patch(struct RtldPatchData* patch_data, void* sym) { if (patch_data->rel_size > sizeof reloc_buf) return; memcpy(reloc_buf, (void*) patch_data->patch_addr, patch_data->rel_size); - (void) rtld_reloc_at(patch_data, reloc_buf, sym); + (void) rtld_reloc_at(patch_data, reloc_buf, sym, NULL, NULL); mem_write_code((void*) patch_data->patch_addr, reloc_buf, patch_data->rel_size); } From 240cddf6eb5c90a466bf493b99bf90c359afc825 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Fri, 9 May 2025 14:52:13 +0000 Subject: [PATCH 27/31] client: (wip) add array of pending relocs --- client/rtld.c | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/client/rtld.c b/client/rtld.c index 9746538..4207096 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -32,7 +32,7 @@ ((val) >= -(1ll << (bits-1)) && (val) < (1ll << (bits-1))-1) #define CHECK_UNSIGNED_BITS(val,bits) ((val) < (1ull << (bits))-1) -// #define RTLD_DEBUG +//#define RTLD_DEBUG static bool rtld_elf_signed_range(int64_t val, unsigned bits, const char* relinfo) { @@ -355,8 +355,13 @@ rtld_elf_add_stub(uintptr_t sym, uintptr_t* out_stub) { } #endif +struct RtldPendingReloc { + struct RtldPatchData patch_data; + int64_t sym; +}; + static int -rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct RtldPatchData* pending_reloc, void* pending_sym) { +rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct RtldPendingReloc **pending_relocs) { uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; @@ -498,19 +503,30 @@ rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct Rtl return -EINVAL; rtld_blend(tgt, 0xfffff000, (prel_syma & 0x800) & 0xfffff000); - *pending_reloc = *patch_data; - *(int64_t*)pending_sym = (int64_t)prel_syma; + struct RtldPendingReloc *pcrel_hi20_reloc = mem_alloc_data(sizeof(struct RtldPendingReloc), getpagesize()); + pcrel_hi20_reloc->patch_data = *patch_data; + pcrel_hi20_reloc->sym = (int64_t)prel_syma; + + pending_relocs[0] = pcrel_hi20_reloc; break; case R_RISCV_PCREL_LO12_I: if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_PCREL_LO12_I")) return -EINVAL; - if (pending_reloc && pending_sym) { -// printf("pending_reloc != 0, rel_type = %u\n", pending_reloc->rel_type); - if (pending_reloc->rel_type == R_RISCV_PCREL_HI20 && pending_reloc->patch_addr == (uintptr_t)sym) { -// printf("pending_reloc == R_RISCV_PCREL_HI20\n"); - prel_syma = *(int64_t*)pending_sym; + if (pending_relocs && pending_relocs[0]) { +#if defined RTLD_DEBUG + printf("pending_relocs != 0, rel_type = %u\n", pending_relocs[0]->patch_data.rel_type); +#endif + if (pending_relocs[0]->patch_data.rel_type == R_RISCV_PCREL_HI20 && pending_relocs[0]->patch_data.patch_addr == (uintptr_t)sym) { +#if defined RTLD_DEBUG + printf("pending_relocs == R_RISCV_PCREL_HI20\n"); +#endif + prel_syma = pending_relocs[0]->sym; } + } else { +#if defined RTLD_DEBUG + printf("!pending_relocs\n"); +#endif } rtld_blend(tgt, 0xfff00000, (prel_syma & 0xfff) << 20 ); break; @@ -526,6 +542,8 @@ rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct Rtl return 0; } + + static int rtld_elf_process_rela(RtldElf* re, int rela_idx) { if (rela_idx == 0 || rela_idx >= re->re_ehdr->e_shnum) @@ -549,8 +567,11 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { unsigned symtab_idx = rela_shdr->sh_link; - struct RtldPatchData* pending_reloc = mem_alloc_data(sizeof(struct RtldPatchData*), getpagesize()); - int64_t pending_sym; + size_t pending_relocs_count = rela_shdr->sh_size / sizeof(Elf64_Rela); +#if defined RTLD_DEBUG + printf("rela_shdr->sh_size: %u\n", pending_relocs_count); +#endif + struct RtldPendingReloc **pending_relocs = mem_alloc_data(pending_relocs_count * sizeof(struct RtldPendingReloc*), getpagesize()); for (; elf_rela != elf_rela_end; ++elf_rela) { // TODO: ensure that size doesn't overflow @@ -571,7 +592,7 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { uint8_t* tgt = sec_write_addr + elf_rela->r_offset; - int retval = rtld_reloc_at(&reloc_patch, tgt, (void*) sym, pending_reloc, &pending_sym); + int retval = rtld_reloc_at(&reloc_patch, tgt, (void*) sym, pending_relocs); if (retval < 0) return retval; } @@ -880,6 +901,6 @@ rtld_patch(struct RtldPatchData* patch_data, void* sym) { if (patch_data->rel_size > sizeof reloc_buf) return; memcpy(reloc_buf, (void*) patch_data->patch_addr, patch_data->rel_size); - (void) rtld_reloc_at(patch_data, reloc_buf, sym, NULL, NULL); + (void) rtld_reloc_at(patch_data, reloc_buf, sym, NULL); mem_write_code((void*) patch_data->patch_addr, reloc_buf, patch_data->rel_size); } From a3198b89379bf07f9c0f7306c27901ed1c1d891e Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Sun, 11 May 2025 06:57:47 +0000 Subject: [PATCH 28/31] client: add processing of pending relocs --- client/rtld.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/client/rtld.c b/client/rtld.c index 4207096..522e4da 100644 --- a/client/rtld.c +++ b/client/rtld.c @@ -32,7 +32,7 @@ ((val) >= -(1ll << (bits-1)) && (val) < (1ll << (bits-1))-1) #define CHECK_UNSIGNED_BITS(val,bits) ((val) < (1ull << (bits))-1) -//#define RTLD_DEBUG +// #define RTLD_DEBUG static bool rtld_elf_signed_range(int64_t val, unsigned bits, const char* relinfo) { @@ -361,7 +361,7 @@ struct RtldPendingReloc { }; static int -rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct RtldPendingReloc **pending_relocs) { +rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct RtldPendingReloc **pending_relocs, uint64_t *pending_relocs_length) { uint64_t syma = (uintptr_t) sym + patch_data->addend; uint64_t pc = patch_data->patch_addr; int64_t prel_syma = syma - (int64_t) pc; @@ -508,20 +508,28 @@ rtld_reloc_at(struct RtldPatchData* patch_data, void* tgt, void* sym, struct Rtl pcrel_hi20_reloc->sym = (int64_t)prel_syma; pending_relocs[0] = pcrel_hi20_reloc; + (*pending_relocs_length)++; break; case R_RISCV_PCREL_LO12_I: if (!rtld_elf_signed_range(prel_syma, 32, "R_RISCV_PCREL_LO12_I")) return -EINVAL; - if (pending_relocs && pending_relocs[0]) { + if (pending_relocs && pending_relocs_length) { #if defined RTLD_DEBUG - printf("pending_relocs != 0, rel_type = %u\n", pending_relocs[0]->patch_data.rel_type); + printf("pending_relocs != 0, pending_relocs_length != 0\n"); #endif - if (pending_relocs[0]->patch_data.rel_type == R_RISCV_PCREL_HI20 && pending_relocs[0]->patch_data.patch_addr == (uintptr_t)sym) { + for (int i = *pending_relocs_length; i >= 0; i--) { + if (!pending_relocs[i]) + continue; #if defined RTLD_DEBUG - printf("pending_relocs == R_RISCV_PCREL_HI20\n"); + printf("pending_relocs[i] != 0, rel_type = %u\n", pending_relocs[i]->patch_data.rel_type); #endif - prel_syma = pending_relocs[0]->sym; + if (pending_relocs[i]->patch_data.rel_type == R_RISCV_PCREL_HI20 && pending_relocs[i]->patch_data.patch_addr == (uintptr_t)sym) { +#if defined RTLD_DEBUG + printf("pending_relocs == R_RISCV_PCREL_HI20\n"); +#endif + prel_syma = pending_relocs[i]->sym; + } } } else { #if defined RTLD_DEBUG @@ -572,6 +580,7 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { printf("rela_shdr->sh_size: %u\n", pending_relocs_count); #endif struct RtldPendingReloc **pending_relocs = mem_alloc_data(pending_relocs_count * sizeof(struct RtldPendingReloc*), getpagesize()); + uint64_t pending_relocs_length = 0; for (; elf_rela != elf_rela_end; ++elf_rela) { // TODO: ensure that size doesn't overflow @@ -592,7 +601,7 @@ rtld_elf_process_rela(RtldElf* re, int rela_idx) { uint8_t* tgt = sec_write_addr + elf_rela->r_offset; - int retval = rtld_reloc_at(&reloc_patch, tgt, (void*) sym, pending_relocs); + int retval = rtld_reloc_at(&reloc_patch, tgt, (void*) sym, pending_relocs, &pending_relocs_length); if (retval < 0) return retval; } @@ -901,6 +910,6 @@ rtld_patch(struct RtldPatchData* patch_data, void* sym) { if (patch_data->rel_size > sizeof reloc_buf) return; memcpy(reloc_buf, (void*) patch_data->patch_addr, patch_data->rel_size); - (void) rtld_reloc_at(patch_data, reloc_buf, sym, NULL); + (void) rtld_reloc_at(patch_data, reloc_buf, sym, NULL, NULL); mem_write_code((void*) patch_data->patch_addr, reloc_buf, patch_data->rel_size); } From 687c6c49ab4dfe53cfc241be9219808ec8506bd3 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Sat, 31 May 2025 17:24:35 +0000 Subject: [PATCH 29/31] client: fix function name of __restore in minilibc --- client/minilibc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/minilibc.c b/client/minilibc.c index 3483bc0..9835ff7 100644 --- a/client/minilibc.c +++ b/client/minilibc.c @@ -337,7 +337,7 @@ ASM_BLOCK( ASM_BLOCK( .globl __restore; - .type __rectore, %function; + .type __restore, %function; __restore: li a0, __NR_rt_sigreturn; ecall; From 3cee6b42a70597c8eb5de9b61bd05f6e5df38c59 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Wed, 4 Jun 2025 18:58:19 +0300 Subject: [PATCH 30/31] client: implement rv64 cache flush via riscv_flush_icache syscall --- client/memory.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/memory.c b/client/memory.c index 0773fc3..3723b22 100644 --- a/client/memory.c +++ b/client/memory.c @@ -113,6 +113,7 @@ mem_write_code(void* dst, const void* src, size_t size) { } __asm__ volatile("isb"); #elif defined(__riscv) + syscall(__NR_riscv_flush_icache, (uintptr_t)dst, (uintptr_t)((uintptr_t)dst + size), 0, 0, 0, 0); #else #error "Implement ICache flush for unknown target" #endif From 58410e8d3fc0d8cdad667280212eaa9550bd2d57 Mon Sep 17 00:00:00 2001 From: Ilya Mikhaylov Date: Mon, 9 Jun 2025 03:33:16 +0000 Subject: [PATCH 31/31] client: add native rv64 syscalls --- client/emulate.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/emulate.c b/client/emulate.c index 70b0fed..49ab6f4 100644 --- a/client/emulate.c +++ b/client/emulate.c @@ -451,15 +451,20 @@ emulate_syscall(uint64_t* cpu_regs) { case 230: nr = __NR_clock_nanosleep; goto native; case 257: goto common_openat; case 260: nr = __NR_fchownat; goto native; + case 263: nr = __NR_unlinkat; goto native; + case 267: nr = __NR_readlinkat; goto native; case 268: nr = __NR_fchmodat; goto native; + case 269: nr = __NR_faccessat; goto native; case 270: nr = __NR_pselect6; goto native; case 271: nr = __NR_ppoll; goto native; case 273: nr = __NR_set_robust_list; goto native; case 274: nr = __NR_get_robust_list; goto native; + case 280: nr = __NR_utimensat; goto native; case 292: nr = __NR_dup3; goto native; case 293: nr = __NR_pipe2; goto native; case 302: nr = __NR_prlimit64; goto native; case 318: nr = __NR_getrandom; goto native; + case 439: nr = __NR_faccessat2; goto native; // Some are too old to work on newer platforms, but have replacements. case 2: // open