[*] Binary protection state of liblttng-ust-pthread-wrapper.so.1.0.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of liblttng-ust-pthread-wrapper.so.1.0.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblttng-ust-pthread-wrapper.so.1.0.0 @ 0xe7c */
| #include <stdint.h>
|
; (fcn) entry.fini2 () | void entry_fini2 () {
| int16_t var_4h;
0x00000e7c push {r4, r5, r6, r7, lr} |
0x00000e7e sub sp, 0xc |
0x00000e80 ldr r4, [pc, 0x84] |
0x00000e82 ldr r3, [pc, 0x88] | r3 = *(0xf0e);
0x00000e84 add r4, pc | r4 = "lttng_ust_tracepoints_print_disabled_message";
0x00000e86 ldr r5, [r4, r3] | r5 = "lttng_ust_tracepoints_print_disabled_message";
0x00000e88 ldr r3, [r5] | r3 = "lttng_ust_tracepoints_print_disabled_message";
0x00000e8a subs r3, 1 | r3--;
0x00000e8c str r3, [r5] | *(r5) = r3;
| if (r3 != 0) {
0x00000e8e cbnz r3, 0xede | goto label_1;
| }
0x00000e90 ldr r3, [pc, 0x7c] | r3 = *(0xf10);
0x00000e92 ldr r6, [r4, r3] | r6 = *((r4 + r3));
0x00000e94 ldr r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x00000e96 cbz r3, 0xeea | goto label_2;
| }
| label_0:
0x00000e98 ldr r3, [pc, 0x78] | r3 = *(0xf14);
0x00000e9a ldr r7, [r4, r3] | r7 = *((r4 + r3));
0x00000e9c ldr r3, [r7] | r3 = *(r7);
0x00000e9e cbz r3, 0xee2 |
| while (1) {
0x00000ea0 ldr r3, [r6] | r3 = *(r6);
0x00000ea2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 != 0) {
0x00000ea4 cbz r3, 0xeb0 |
0x00000ea6 ldr r2, [pc, 0x70] | r2 = *(0xf1a);
0x00000ea8 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x00000eaa mov r0, r2 | r0 = r2;
0x00000eac str r2, [sp, 4] | var_4h = r2;
0x00000eae blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
| }
0x00000eb0 ldr r3, [r6] | r3 = *(r6);
0x00000eb2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x00000eb4 cbz r3, 0xede |
0x00000eb6 ldr r3, [r7] | r3 = *(r7);
0x00000eb8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 == 0) {
0x00000eba cbz r3, 0xede | goto label_1;
| }
0x00000ebc blx r3 | r0 = uint32_t (*r3)() ();
| if (r0 == 0) {
0x00000ebe cbz r0, 0xede | goto label_1;
| }
0x00000ec0 ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x00000ec2 cbnz r3, 0xede | goto label_1;
| }
0x00000ec4 ldr r3, [r6] | r3 = *(r6);
0x00000ec6 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00000ec8 blx 0xdb8 | r0 = dlclose ();
| if (r0 != 0) {
0x00000ecc cbnz r0, 0xef2 | goto label_3;
| }
0x00000ece ldr r3, [r6] | r3 = *(r6);
0x00000ed0 str r0, [r3] | *(r3) = r0;
0x00000ed2 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x00000ed4 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x00000ed6 str r0, [r3, 0xc] | *((r3 + 0xc)) = r0;
0x00000ed8 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x00000eda str r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
0x00000edc str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
| }
| label_1:
0x00000ede add sp, 0xc |
0x00000ee0 pop {r4, r5, r6, r7, pc} |
0x00000ee2 ldr r3, [pc, 0x38] | r3 = *(0xf1e);
0x00000ee4 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00000ee6 str r3, [r7] | *(r7) = r3;
0x00000ee8 b 0xea0 |
| }
| label_2:
0x00000eea ldr r3, [pc, 0x34] | r3 = *(0xf22);
0x00000eec ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00000eee str r3, [r6] | *(r6) = r3;
0x00000ef0 b 0xe98 | goto label_0;
| label_3:
0x00000ef2 ldr r5, [pc, 0x30] | r5 = *(0xf26);
0x00000ef4 mov r3, r0 | r3 = r0;
0x00000ef6 ldr r2, [pc, 0x30] |
0x00000ef8 movs r1, 1 | r1 = 1;
0x00000efa ldr r0, [r4, r5] | r0 = *((r4 + r5));
0x00000efc add r2, pc | r2 = 0x1e2a;
0x00000efe ldr r0, [r0] | r0 = *(r0);
0x00000f00 blx 0xd94 | fprintf_chk ()
0x00000f04 blx 0xdc4 | abort ();
0x00000f08 adds r0, 0xf0 | r0 += 0xf0;
0x00000f0a movs r0, r0 |
0x00000f0c lsls r4, r6, 1 | r4 = r6 << 1;
0x00000f0e movs r0, r0 |
0x00000f10 lsls r0, r5, 1 | r0 = r5 << 1;
0x00000f12 movs r0, r0 |
0x00000f14 lsls r4, r3, 1 | r4 = r3 << 1;
0x00000f16 movs r0, r0 |
0x00000f18 lsls r0, r3, 1 | r0 = r3 << 1;
0x00000f1a movs r0, r0 |
0x00000f1c lsls r0, r6, 1 | r0 = r6 << 1;
0x00000f1e movs r0, r0 |
0x00000f20 lsls r0, r7, 1 | r0 = r7 << 1;
0x00000f22 movs r0, r0 |
0x00000f24 lsls r4, r4, 1 | r4 <<= 1;
0x00000f26 movs r0, r0 |
0x00000f28 lsrs r0, r1, 0xf | r0 = r1 >> 0xf;
0x00000f2a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblttng-ust-pthread-wrapper.so.1.0.0 @ 0x101c */
| #include <stdint.h>
|
; (fcn) entry.init1 () | void entry_init1 () {
| int16_t var_0h;
| if (? >= ?) {
| label_1:
0x00000fbc ldrlt r4, [r0, -0x810] | r4 = *((r0 - 0x810));
| }
0x00000fc0 sub sp, 0x10 |
0x00000fc2 ldr r4, [pc, 0x40] |
0x00000fc4 add r0, pc | r0 += pc;
0x00000fc6 add r4, pc | r4 = 0x1fd0;
0x00000fc8 blx 0xd64 | r0 = getenv (r0);
| if (r0 != 0) {
0x00000fcc cbz r0, 0xffc |
0x00000fce ldr r3, [pc, 0x38] | r3 = *(0x100a);
0x00000fd0 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00000fd2 ldr r4, [r3] | r4 = *(0x100a);
0x00000fd4 blx 0xd88 | getpid ();
0x00000fd8 ldr r1, [pc, 0x30] |
0x00000fda mov r3, r0 | r3 = r0;
0x00000fdc ldr r2, [pc, 0x30] |
0x00000fde mov r0, r4 | r0 = r4;
0x00000fe0 ldr.w ip, [pc, 0x30] |
0x00000fe4 add r1, pc | r1 = 0x1ff4;
0x00000fe6 add r2, pc | r2 = 0x1ffa;
0x00000fe8 strd r2, r1, [sp, 4] | __asm ("strd r2, r1, [sp, 4]");
0x00000fec add ip, pc | ip = 0x2004;
0x00000fee ldr r2, [pc, 0x28] |
0x00000ff0 movs r1, 1 | r1 = 1;
0x00000ff2 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00000ff6 add r2, pc | r2 = 0x2014;
0x00000ff8 blx 0xd94 | fprintf_chk ()
| }
0x00000ffc add sp, 0x10 |
0x00000ffe pop {r4, pc} |
0x0000101c push {r3, r4, r5, lr} |
0x0000101e ldr r3, [pc, 0x50] |
0x00001020 ldr r1, [pc, 0x50] | r1 = *(0x1074);
0x00001022 add r3, pc | r3 = 0x2098;
0x00001024 ldr r2, [pc, 0x50] | r2 = *(0x1078);
0x00001026 ldr r0, [r3, r1] | r0 = *(0x2098);
0x00001028 ldr r1, [r0] | r1 = *(0x2098);
0x0000102a adds r4, r1, 1 | r4 = r1 + 1;
0x0000102c str r4, [r0] | *(r0) = r4;
0x0000102e ldr r4, [r3, r2] | r4 = *(0x2098);
0x00001030 ldr r2, [r4] | r2 = *(0x2098);
| if (r1 == 0) {
0x00001032 cbz r1, 0x103e | goto label_3;
| }
0x00001034 ldr r3, [r2, 4] | r3 = *((r2 + 4));
| if (r3 == 0) {
0x00001036 cbz r3, 0x1064 | goto label_4;
| }
| do {
| label_0:
0x00001038 pop.w {r3, r4, r5, lr} |
0x0000103c b 0xf4c | void (*0xf4c)() ();
| if (r2 == 0) {
| label_3:
0x0000103e cbz r2, 0x1066 | goto label_5;
| }
| label_2:
0x00001040 ldr r5, [r4] | r5 = *(r4);
0x00001042 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00001044 cmp r3, 0 |
0x00001046 bne 0x1038 |
| } while (r3 != 0);
0x00001048 ldr r0, [pc, 0x30] |
0x0000104a mov.w r1, 0x102 | r1 = 0x102;
0x0000104e add r0, pc | r0 = 0x20ce;
0x00001050 blx 0xd70 | dlopen ();
0x00001054 ldr r3, [r4] | r3 = *(r4);
0x00001056 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x00001058 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000105a cmp r3, 0 |
| if (r3 != 0) {
0x0000105c bne 0x1038 | goto label_0;
| }
0x0000105e pop.w {r3, r4, r5, lr} |
0x00001062 b 0xfbc | goto label_1;
| label_4:
0x00001064 pop {r3, r4, r5, pc} |
| label_5:
0x00001066 ldr r2, [pc, 0x18] | r2 = *(0x1082);
0x00001068 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0000106a str r3, [r4] | *(r4) = r3;
0x0000106c b 0x1040 | goto label_2;
| }
[*] Function fprintf used 3 times liblttng-ust-pthread-wrapper.so.1.0.0