[*] 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