RTEMS-6
Annotated Report
libuntar
Sun Feb 28 23:57:22 2021
00107630 <Untar_FromChunk_Print>:
{
107630: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
context->base.printer = printer;
107634: 67c3 str r3, [r0, #124] ; 0x7c
while (todo > 0) {
107636: b31a cbz r2, 107680 <Untar_FromChunk_Print+0x50>
done = 0;
107638: f04f 0b00 mov.w fp, #0
if (strncmp(&bufr[257], "ustar", 5)) {
10763c: f643 69ec movw r9, #16108 ; 0x3eec
107640: 4604 mov r4, r0
107642: 4688 mov r8, r1
107644: 4616 mov r6, r2
context->state = UNTAR_CHUNK_HEADER;
107646: 46da mov sl, fp
if (strncmp(&bufr[257], "ustar", 5)) {
107648: f2c0 0911 movt r9, #17
switch (context->state) {
10764c: f8d4 70e4 ldr.w r7, [r4, #228] ; 0xe4
107650: 2f01 cmp r7, #1
107652: d006 beq.n 107662 <Untar_FromChunk_Print+0x32>
107654: 2f02 cmp r7, #2
107656: d059 beq.n 10770c <Untar_FromChunk_Print+0xdc>
107658: b1b7 cbz r7, 107688 <Untar_FromChunk_Print+0x58>
10765a: 2701 movs r7, #1 <== NOT EXECUTED
}
10765c: 4638 mov r0, r7 <== NOT EXECUTED
10765e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} <== NOT EXECUTED
remaining = context->base.file_size - context->done_bytes;
107662: f8d4 22e8 ldr.w r2, [r4, #744] ; 0x2e8
107666: 6f21 ldr r1, [r4, #112] ; 0x70
107668: 1a8d subs r5, r1, r2
consume = MIN(remaining, todo);
10766a: 42b5 cmp r5, r6
10766c: bf28 it cs
10766e: 4635 movcs r5, r6
context->done_bytes += consume;
107670: 442a add r2, r5
if (context->done_bytes == context->base.file_size) {
107672: 4291 cmp r1, r2
context->done_bytes += consume;
107674: f8c4 22e8 str.w r2, [r4, #744] ; 0x2e8
if (context->done_bytes == context->base.file_size) {
107678: d06f beq.n 10775a <Untar_FromChunk_Print+0x12a>
while (todo > 0) {
10767a: 1b76 subs r6, r6, r5
done += consume;
10767c: 44ab add fp, r5
while (todo > 0) {
10767e: d1e5 bne.n 10764c <Untar_FromChunk_Print+0x1c> <== ALWAYS TAKEN
return UNTAR_SUCCESSFUL;
107680: 2700 movs r7, #0
}
107682: 4638 mov r0, r7
107684: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
remaining = 512 - context->done_bytes;
107688: f8d4 02e8 ldr.w r0, [r4, #744] ; 0x2e8
memcpy(&context->header[context->done_bytes], &buf[done], consume);
10768c: eb08 010b add.w r1, r8, fp
remaining = 512 - context->done_bytes;
107690: f5c0 7500 rsb r5, r0, #512 ; 0x200
memcpy(&context->header[context->done_bytes], &buf[done], consume);
107694: 30e8 adds r0, #232 ; 0xe8
consume = MIN(remaining, todo);
107696: 42b5 cmp r5, r6
memcpy(&context->header[context->done_bytes], &buf[done], consume);
107698: 4420 add r0, r4
consume = MIN(remaining, todo);
10769a: bf28 it cs
10769c: 4635 movcs r5, r6
memcpy(&context->header[context->done_bytes], &buf[done], consume);
10769e: 462a mov r2, r5
1076a0: f007 ebee blx 10ee80 <memcpy>
context->done_bytes += consume;
1076a4: f8d4 22e8 ldr.w r2, [r4, #744] ; 0x2e8
1076a8: 442a add r2, r5
if (context->done_bytes == 512) {
1076aa: f5b2 7f00 cmp.w r2, #512 ; 0x200
context->done_bytes += consume;
1076ae: f8c4 22e8 str.w r2, [r4, #744] ; 0x2e8
if (context->done_bytes == 512) {
1076b2: d1e2 bne.n 10767a <Untar_FromChunk_Print+0x4a>
ctx->file_name[0] = '\0';
1076b4: 6862 ldr r2, [r4, #4]
if (strncmp(&bufr[257], "ustar", 5)) {
1076b6: 4649 mov r1, r9
1076b8: f204 10e9 addw r0, r4, #489 ; 0x1e9
ctx->file_name[0] = '\0';
1076bc: 7017 strb r7, [r2, #0]
ctx->linkflag = -1;
1076be: 22ff movs r2, #255 ; 0xff
1076c0: f884 2078 strb.w r2, [r4, #120] ; 0x78
if (strncmp(&bufr[257], "ustar", 5)) {
1076c4: 2205 movs r2, #5
ctx->nblocks = 0;
1076c6: e9c4 771c strd r7, r7, [r4, #112] ; 0x70
if (strncmp(&bufr[257], "ustar", 5)) {
1076ca: f008 fc27 bl 10ff1c <strncmp>
1076ce: 2800 cmp r0, #0
1076d0: d145 bne.n 10775e <Untar_FromChunk_Print+0x12e>
1076d2: f104 01e8 add.w r1, r4, #232 ; 0xe8
1076d6: 4620 mov r0, r4
1076d8: f7ff fd10 bl 1070fc <Untar_ProcessHeader.part.0>
if (retval != UNTAR_SUCCESSFUL) {
1076dc: 4607 mov r7, r0
1076de: 2800 cmp r0, #0
1076e0: d140 bne.n 107764 <Untar_FromChunk_Print+0x134> <== ALWAYS TAKEN
if (context->base.linkflag == REGTYPE) {
1076e2: f894 2078 ldrb.w r2, [r4, #120] ; 0x78
1076e6: 2a30 cmp r2, #48 ; 0x30
1076e8: d139 bne.n 10775e <Untar_FromChunk_Print+0x12e>
context->out_fd = creat(context->base.file_path,
1076ea: 6ee1 ldr r1, [r4, #108] ; 0x6c
1076ec: 6820 ldr r0, [r4, #0]
1076ee: f007 fa6f bl 10ebd0 <creat>
if (context->out_fd >= 0) {
1076f2: 2800 cmp r0, #0
context->done_bytes = 0;
1076f4: e9c4 70ba strd r7, r0, [r4, #744] ; 0x2e8
context->base.file_size = 512 * context->base.nblocks;
1076f8: bfb7 itett lt
1076fa: 6f62 ldrlt r2, [r4, #116] ; 0x74
context->state = UNTAR_CHUNK_WRITE;
1076fc: 2202 movge r2, #2
context->base.file_size = 512 * context->base.nblocks;
1076fe: 0252 lsllt r2, r2, #9
107700: 6722 strlt r2, [r4, #112] ; 0x70
context->state = UNTAR_CHUNK_SKIP;
107702: bfb8 it lt
107704: 2201 movlt r2, #1
107706: f8c4 20e4 str.w r2, [r4, #228] ; 0xe4
context->done_bytes = 0;
10770a: e7b6 b.n 10767a <Untar_FromChunk_Print+0x4a>
remaining = context->base.file_size - context->done_bytes;
10770c: f8d4 22e8 ldr.w r2, [r4, #744] ; 0x2e8
write(context->out_fd, &buf[done], consume);
107710: eb08 010b add.w r1, r8, fp
remaining = context->base.file_size - context->done_bytes;
107714: 6f25 ldr r5, [r4, #112] ; 0x70
write(context->out_fd, &buf[done], consume);
107716: f8d4 02ec ldr.w r0, [r4, #748] ; 0x2ec
remaining = context->base.file_size - context->done_bytes;
10771a: 1aad subs r5, r5, r2
consume = MIN(remaining, todo);
10771c: 42b5 cmp r5, r6
10771e: bf28 it cs
107720: 4635 movcs r5, r6
write(context->out_fd, &buf[done], consume);
107722: 462a mov r2, r5
107724: f7fe fc9a bl 10605c <write>
context->done_bytes += consume;
107728: f8d4 22e8 ldr.w r2, [r4, #744] ; 0x2e8
if (context->done_bytes == context->base.file_size) {
10772c: 6f21 ldr r1, [r4, #112] ; 0x70
context->done_bytes += consume;
10772e: 442a add r2, r5
if (context->done_bytes == context->base.file_size) {
107730: 428a cmp r2, r1
context->done_bytes += consume;
107732: f8c4 22e8 str.w r2, [r4, #744] ; 0x2e8
if (context->done_bytes == context->base.file_size) {
107736: d1a0 bne.n 10767a <Untar_FromChunk_Print+0x4a>
close(context->out_fd);
107738: f8d4 02ec ldr.w r0, [r4, #748] ; 0x2ec
10773c: f7fd fb78 bl 104e30 <close>
context->base.file_size = 512 * context->base.nblocks
107740: e9d4 211c ldrd r2, r1, [r4, #112] ; 0x70
context->out_fd = -1;
107744: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff
context->done_bytes = 0;
107748: e9c4 a3ba strd sl, r3, [r4, #744] ; 0x2e8
- context->base.file_size;
10774c: ebc2 2241 rsb r2, r2, r1, lsl #9
context->base.file_size = 512 * context->base.nblocks
107750: 6722 str r2, [r4, #112] ; 0x70
context->state = UNTAR_CHUNK_SKIP;
107752: 2201 movs r2, #1
107754: f8c4 20e4 str.w r2, [r4, #228] ; 0xe4
context->done_bytes = 0;
107758: e78f b.n 10767a <Untar_FromChunk_Print+0x4a>
context->state = UNTAR_CHUNK_HEADER;
10775a: f8c4 a0e4 str.w sl, [r4, #228] ; 0xe4
context->done_bytes = 0;
10775e: f8c4 a2e8 str.w sl, [r4, #744] ; 0x2e8
107762: e78a b.n 10767a <Untar_FromChunk_Print+0x4a>
context->state = UNTAR_CHUNK_ERROR;
107764: 2303 movs r3, #3 <== NOT EXECUTED
107766: f8c4 30e4 str.w r3, [r4, #228] ; 0xe4 <== NOT EXECUTED
return retval;
10776a: e777 b.n 10765c <Untar_FromChunk_Print+0x2c> <== NOT EXECUTED
00107528 <Untar_FromFile_Print>:
{
107528: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
10752c: 460c mov r4, r1
10752e: b0bd sub sp, #244 ; 0xf4
if ((fd = open(tar_name, O_RDONLY)) < 0) {
107530: 2100 movs r1, #0
107532: f7fd ffb9 bl 1054a8 <open>
107536: 1e07 subs r7, r0, #0
return UNTAR_FAIL;
107538: bfb8 it lt
10753a: 2401 movlt r4, #1
if ((fd = open(tar_name, O_RDONLY)) < 0) {
10753c: db5a blt.n 1075f4 <Untar_FromFile_Print+0xcc> <== ALWAYS TAKEN
bufr = (char *)malloc(512);
10753e: f44f 7000 mov.w r0, #512 ; 0x200
107542: f002 f8dd bl 109700 <malloc>
if (bufr == NULL) {
107546: 4605 mov r5, r0
107548: 2800 cmp r0, #0
10754a: d05f beq.n 10760c <Untar_FromFile_Print+0xe4> <== ALWAYS TAKEN
if (strncmp(&bufr[257], "ustar", 5)) {
10754c: f643 68ec movw r8, #16108 ; 0x3eec
ctx->file_name[0] = '\0';
107550: 2600 movs r6, #0
if (strncmp(&bufr[257], "ustar", 5)) {
107552: f2c0 0811 movt r8, #17
ctx.file_path = buf;
107556: ab03 add r3, sp, #12
ctx.printer = printer;
107558: 943b str r4, [sp, #236] ; 0xec
ctx.file_name = buf;
10755a: e9cd 331c strd r3, r3, [sp, #112] ; 0x70
if ((n = read(fd, bufr, 512)) != 512) {
10755e: f44f 7200 mov.w r2, #512 ; 0x200
107562: 4629 mov r1, r5
107564: 4638 mov r0, r7
107566: f7fe f8e7 bl 105738 <read>
10756a: f5b0 7f00 cmp.w r0, #512 ; 0x200
10756e: d13a bne.n 1075e6 <Untar_FromFile_Print+0xbe>
ctx->file_name[0] = '\0';
107570: 9b1d ldr r3, [sp, #116] ; 0x74
ctx->linkflag = -1;
107572: 24ff movs r4, #255 ; 0xff
if (strncmp(&bufr[257], "ustar", 5)) {
107574: 2205 movs r2, #5
107576: 4641 mov r1, r8
107578: f205 1001 addw r0, r5, #257 ; 0x101
ctx->file_name[0] = '\0';
10757c: 701e strb r6, [r3, #0]
ctx->nblocks = 0;
10757e: e9cd 6638 strd r6, r6, [sp, #224] ; 0xe0
ctx->linkflag = -1;
107582: f88d 40e8 strb.w r4, [sp, #232] ; 0xe8
if (strncmp(&bufr[257], "ustar", 5)) {
107586: f008 fcc9 bl 10ff1c <strncmp>
10758a: 2800 cmp r0, #0
10758c: d1e7 bne.n 10755e <Untar_FromFile_Print+0x36>
10758e: 4629 mov r1, r5
107590: a81c add r0, sp, #112 ; 0x70
107592: f7ff fdb3 bl 1070fc <Untar_ProcessHeader.part.0>
if (retval != UNTAR_SUCCESSFUL)
107596: 4604 mov r4, r0
107598: bb30 cbnz r0, 1075e8 <Untar_FromFile_Print+0xc0>
if (ctx.linkflag == REGTYPE) {
10759a: f89d 30e8 ldrb.w r3, [sp, #232] ; 0xe8
10759e: 2b30 cmp r3, #48 ; 0x30
1075a0: d1dd bne.n 10755e <Untar_FromFile_Print+0x36>
if ((out_fd = creat(ctx.file_path, ctx.mode)) == -1) {
1075a2: 9937 ldr r1, [sp, #220] ; 0xdc
1075a4: 981c ldr r0, [sp, #112] ; 0x70
1075a6: f007 fb13 bl 10ebd0 <creat>
1075aa: f1b0 3fff cmp.w r0, #4294967295 ; 0xffffffff
(void) lseek(fd, SEEK_CUR, 512UL * ctx.nblocks);
1075ae: 9b39 ldr r3, [sp, #228] ; 0xe4
if ((out_fd = creat(ctx.file_path, ctx.mode)) == -1) {
1075b0: 4681 mov r9, r0
1075b2: d023 beq.n 1075fc <Untar_FromFile_Print+0xd4> <== ALWAYS TAKEN
for (i = 0; i < ctx.nblocks; i++) {
1075b4: b19b cbz r3, 1075de <Untar_FromFile_Print+0xb6>
n = read(fd, bufr, 512);
1075b6: f44f 7200 mov.w r2, #512 ; 0x200
1075ba: 4629 mov r1, r5
1075bc: 4638 mov r0, r7
1075be: f7fe f8bb bl 105738 <read>
n = MIN(n, ctx.file_size - (i * 512UL));
1075c2: 9b38 ldr r3, [sp, #224] ; 0xe0
(void) write(out_fd, bufr, n);
1075c4: 4629 mov r1, r5
n = MIN(n, ctx.file_size - (i * 512UL));
1075c6: eba3 2244 sub.w r2, r3, r4, lsl #9
for (i = 0; i < ctx.nblocks; i++) {
1075ca: 3401 adds r4, #1
(void) write(out_fd, bufr, n);
1075cc: 4282 cmp r2, r0
1075ce: bf28 it cs
1075d0: 4602 movcs r2, r0
1075d2: 4648 mov r0, r9
1075d4: f7fe fd42 bl 10605c <write>
for (i = 0; i < ctx.nblocks; i++) {
1075d8: 9b39 ldr r3, [sp, #228] ; 0xe4
1075da: 42a3 cmp r3, r4
1075dc: d8eb bhi.n 1075b6 <Untar_FromFile_Print+0x8e> <== ALWAYS TAKEN
close(out_fd);
1075de: 4648 mov r0, r9
1075e0: f7fd fc26 bl 104e30 <close>
1075e4: e7bb b.n 10755e <Untar_FromFile_Print+0x36>
1075e6: 2400 movs r4, #0
free(bufr);
1075e8: 4628 mov r0, r5
1075ea: f001 ffb5 bl 109558 <free>
close(fd);
1075ee: 4638 mov r0, r7
1075f0: f7fd fc1e bl 104e30 <close>
}
1075f4: 4620 mov r0, r4
1075f6: b03d add sp, #244 ; 0xf4
1075f8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
(void) lseek(fd, SEEK_CUR, 512UL * ctx.nblocks);
1075fc: 025b lsls r3, r3, #9 <== NOT EXECUTED
1075fe: 2201 movs r2, #1 <== NOT EXECUTED
107600: 4638 mov r0, r7 <== NOT EXECUTED
107602: 9300 str r3, [sp, #0] <== NOT EXECUTED
107604: 2300 movs r3, #0 <== NOT EXECUTED
107606: f7fd fd2d bl 105064 <lseek> <== NOT EXECUTED
10760a: e7a8 b.n 10755e <Untar_FromFile_Print+0x36> <== NOT EXECUTED
close(fd);
10760c: 4638 mov r0, r7 <== NOT EXECUTED
return(UNTAR_FAIL);
10760e: 2401 movs r4, #1 <== NOT EXECUTED
close(fd);
107610: f7fd fc0e bl 104e30 <close> <== NOT EXECUTED
return(UNTAR_FAIL);
107614: e7ee b.n 1075f4 <Untar_FromFile_Print+0xcc> <== NOT EXECUTED
107616: bf00 nop
001077b4 <Untar_FromGzChunk_Print>:
Untar_GzChunkContext *ctx,
void *chunk,
size_t chunk_size,
const rtems_printer *printer
)
{
1077b4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
1077b8: 4604 mov r4, r0
1077ba: 4698 mov r8, r3
/* Inflate until output buffer is not full */
do {
ctx->strm.next_out = (Bytef *) ctx->inflateBuffer;
ctx->strm.avail_out = ctx->inflateBufferSize;
status = inflate(&ctx->strm, Z_NO_FLUSH);
1077bc: f500 773c add.w r7, r0, #752 ; 0x2f0
ctx->strm.avail_in = (size_t)chunk_size;
1077c0: e9c0 12bc strd r1, r2, [r0, #752] ; 0x2f0
1077c4: e006 b.n 1077d4 <Untar_FromGzChunk_Print+0x20>
}
} else {
untar_succesful = UNTAR_GZ_INFLATE_FAILED;
}
} while (ctx->strm.avail_out == 0 && ctx->strm.avail_in > 0
&& status == Z_OK);
1077c6: f8d4 3300 ldr.w r3, [r4, #768] ; 0x300
1077ca: bb03 cbnz r3, 10780e <Untar_FromGzChunk_Print+0x5a>
} while (ctx->strm.avail_out == 0 && ctx->strm.avail_in > 0
1077cc: f8d4 32f4 ldr.w r3, [r4, #756] ; 0x2f4
1077d0: b1eb cbz r3, 10780e <Untar_FromGzChunk_Print+0x5a>
&& status == Z_OK);
1077d2: b9f5 cbnz r5, 107812 <Untar_FromGzChunk_Print+0x5e>
ctx->strm.avail_out = ctx->inflateBufferSize;
1077d4: e9d4 23ca ldrd r2, r3, [r4, #808] ; 0x328
status = inflate(&ctx->strm, Z_NO_FLUSH);
1077d8: 2100 movs r1, #0
1077da: 4638 mov r0, r7
untar_succesful = UNTAR_GZ_INFLATE_FAILED;
1077dc: 2604 movs r6, #4
ctx->strm.avail_out = ctx->inflateBufferSize;
1077de: e9c4 23bf strd r2, r3, [r4, #764] ; 0x2fc
status = inflate(&ctx->strm, Z_NO_FLUSH);
1077e2: f004 fbdb bl 10bf9c <z_inflate>
if (status == Z_OK || status == Z_STREAM_END) {
1077e6: 2801 cmp r0, #1
status = inflate(&ctx->strm, Z_NO_FLUSH);
1077e8: 4605 mov r5, r0
if (status == Z_OK || status == Z_STREAM_END) {
1077ea: d8ec bhi.n 1077c6 <Untar_FromGzChunk_Print+0x12> <== ALWAYS TAKEN
size_t inflated_size =
1077ec: f8d4 632c ldr.w r6, [r4, #812] ; 0x32c
untar_succesful = Untar_FromChunk_Print(&ctx->base,
1077f0: 2300 movs r3, #0
size_t inflated_size =
1077f2: f8d4 2300 ldr.w r2, [r4, #768] ; 0x300
untar_succesful = Untar_FromChunk_Print(&ctx->base,
1077f6: 4620 mov r0, r4
1077f8: f8d4 1328 ldr.w r1, [r4, #808] ; 0x328
1077fc: 1ab2 subs r2, r6, r2
1077fe: f7ff ff17 bl 107630 <Untar_FromChunk_Print>
if (untar_succesful != UNTAR_SUCCESSFUL){
107802: 4606 mov r6, r0
107804: 2800 cmp r0, #0
107806: d0de beq.n 1077c6 <Untar_FromGzChunk_Print+0x12> <== NEVER TAKEN
if (status != Z_OK) {
rtems_printf(printer, "Zlib inflate end failed\n");
}
}
return untar_succesful;
}
107808: 4630 mov r0, r6
10780a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if (status != Z_OK) {
10780e: 2d00 cmp r5, #0
107810: d0fa beq.n 107808 <Untar_FromGzChunk_Print+0x54>
if (untar_succesful != UNTAR_SUCCESSFUL){
107812: b9be cbnz r6, 107844 <Untar_FromGzChunk_Print+0x90>
if (status != Z_STREAM_END) {
107814: 2d01 cmp r5, #1
107816: d006 beq.n 107826 <Untar_FromGzChunk_Print+0x72> <== NEVER TAKEN
rtems_printf(printer, "Zlib inflate failed\n");
107818: f643 7140 movw r1, #16192 ; 0x3f40 <== NOT EXECUTED
10781c: 4640 mov r0, r8 <== NOT EXECUTED
10781e: f2c0 0111 movt r1, #17 <== NOT EXECUTED
107822: f001 fffb bl 10981c <rtems_printf> <== NOT EXECUTED
status = inflateEnd(&ctx->strm);
107826: 4638 mov r0, r7
107828: f005 fbea bl 10d000 <z_inflateEnd>
if (status != Z_OK) {
10782c: 2800 cmp r0, #0
10782e: d0eb beq.n 107808 <Untar_FromGzChunk_Print+0x54> <== NEVER TAKEN
rtems_printf(printer, "Zlib inflate end failed\n");
107830: f643 7158 movw r1, #16216 ; 0x3f58 <== NOT EXECUTED
107834: 4640 mov r0, r8 <== NOT EXECUTED
107836: f2c0 0111 movt r1, #17 <== NOT EXECUTED
10783a: f001 ffef bl 10981c <rtems_printf> <== NOT EXECUTED
}
10783e: 4630 mov r0, r6 <== NOT EXECUTED
107840: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} <== NOT EXECUTED
rtems_printf(printer, "Untar not successful\n");
107844: f643 7128 movw r1, #16168 ; 0x3f28 <== NOT EXECUTED
107848: 4640 mov r0, r8 <== NOT EXECUTED
10784a: f2c0 0111 movt r1, #17 <== NOT EXECUTED
10784e: f001 ffe5 bl 10981c <rtems_printf> <== NOT EXECUTED
107852: e7df b.n 107814 <Untar_FromGzChunk_Print+0x60> <== NOT EXECUTED
001073a4 <Untar_FromMemory_Print>:
{
1073a4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
1073a8: b0bf sub sp, #252 ; 0xfc
1073aa: 4607 mov r7, r0
1073ac: 4689 mov r9, r1
1073ae: 4610 mov r0, r2
rtems_printf(printer, "untar: memory at %p (%zu)\n", tar_buf, size);
1073b0: 460b mov r3, r1
{
1073b2: 9202 str r2, [sp, #8]
rtems_printf(printer, "untar: memory at %p (%zu)\n", tar_buf, size);
1073b4: f643 61f4 movw r1, #16116 ; 0x3ef4
ctx.file_path = buf;
1073b8: aa05 add r2, sp, #20
ptr = 0;
1073ba: 2400 movs r4, #0
if (strncmp(&bufr[257], "ustar", 5)) {
1073bc: f643 6aec movw sl, #16108 ; 0x3eec
ctx.file_name = buf;
1073c0: e9cd 221e strd r2, r2, [sp, #120] ; 0x78
rtems_printf(printer, "untar: memory at %p (%zu)\n", tar_buf, size);
1073c4: f2c0 0111 movt r1, #17
1073c8: 463a mov r2, r7
if (strncmp(&bufr[257], "ustar", 5)) {
1073ca: f2c0 0a11 movt sl, #17
ctx->file_name[0] = '\0';
1073ce: 46a0 mov r8, r4
ctx.printer = printer;
1073d0: 903d str r0, [sp, #244] ; 0xf4
rtems_printf(printer, "untar: memory at %p (%zu)\n", tar_buf, size);
1073d2: f002 fa23 bl 10981c <rtems_printf>
ctx->linkflag = -1;
1073d6: f04f 0bff mov.w fp, #255 ; 0xff
if (ptr + 512 > size) {
1073da: f504 7500 add.w r5, r4, #512 ; 0x200
if (strncmp(&bufr[257], "ustar", 5)) {
1073de: f204 1001 addw r0, r4, #257 ; 0x101
if (ptr + 512 > size) {
1073e2: 454d cmp r5, r9
1073e4: eb07 0604 add.w r6, r7, r4
if (strncmp(&bufr[257], "ustar", 5)) {
1073e8: f04f 0205 mov.w r2, #5
1073ec: 4651 mov r1, sl
1073ee: 4438 add r0, r7
ptr = 0;
1073f0: 462c mov r4, r5
if (ptr + 512 > size) {
1073f2: d86e bhi.n 1074d2 <Untar_FromMemory_Print+0x12e>
ctx->file_name[0] = '\0';
1073f4: 9b1f ldr r3, [sp, #124] ; 0x7c
1073f6: f04f 0c00 mov.w ip, #0
1073fa: f883 c000 strb.w ip, [r3]
ctx->nblocks = 0;
1073fe: e9cd 883a strd r8, r8, [sp, #232] ; 0xe8
ctx->linkflag = -1;
107402: f88d b0f0 strb.w fp, [sp, #240] ; 0xf0
if (strncmp(&bufr[257], "ustar", 5)) {
107406: f008 fd89 bl 10ff1c <strncmp>
10740a: 4603 mov r3, r0
10740c: 4631 mov r1, r6
10740e: a81e add r0, sp, #120 ; 0x78
107410: 2b00 cmp r3, #0
107412: d1e2 bne.n 1073da <Untar_FromMemory_Print+0x36>
107414: f7ff fe72 bl 1070fc <Untar_ProcessHeader.part.0>
if (retval != UNTAR_SUCCESSFUL)
107418: 2800 cmp r0, #0
10741a: d155 bne.n 1074c8 <Untar_FromMemory_Print+0x124> <== ALWAYS TAKEN
if (ctx.linkflag == REGTYPE) {
10741c: f89d 30f0 ldrb.w r3, [sp, #240] ; 0xf0
107420: 2b30 cmp r3, #48 ; 0x30
107422: d1da bne.n 1073da <Untar_FromMemory_Print+0x36>
if ((fd = open(ctx.file_path,
107424: 9a39 ldr r2, [sp, #228] ; 0xe4
107426: 4606 mov r6, r0
107428: f240 6101 movw r1, #1537 ; 0x601
10742c: 981e ldr r0, [sp, #120] ; 0x78
10742e: f7fe f83b bl 1054a8 <open>
107432: f1b0 3fff cmp.w r0, #4294967295 ; 0xffffffff
107436: 4683 mov fp, r0
107438: d050 beq.n 1074dc <Untar_FromMemory_Print+0x138> <== ALWAYS TAKEN
unsigned long sizeToGo = ctx.file_size;
10743a: e9dd 323a ldrd r3, r2, [sp, #232] ; 0xe8
for (i = 0; i < ctx.nblocks; i++) {
10743e: 2a00 cmp r2, #0
107440: d03e beq.n 1074c0 <Untar_FromMemory_Print+0x11c> <== ALWAYS TAKEN
107442: f8cd 900c str.w r9, [sp, #12]
107446: 46b9 mov r9, r7
107448: 4637 mov r7, r6
10744a: 461e mov r6, r3
10744c: 4653 mov r3, sl
10744e: 4682 mov sl, r0
107450: 469b mov fp, r3
107452: e002 b.n 10745a <Untar_FromMemory_Print+0xb6>
107454: 9a3b ldr r2, [sp, #236] ; 0xec
107456: 42ba cmp r2, r7
107458: d95b bls.n 107512 <Untar_FromMemory_Print+0x16e> <== NEVER TAKEN
len = ((sizeToGo < 512L) ? (sizeToGo) : (512L));
10745a: f5b6 7f00 cmp.w r6, #512 ; 0x200
10745e: 4634 mov r4, r6
107460: bf28 it cs
107462: f44f 7400 movcs.w r4, #512 ; 0x200
n = write(fd, &tar_ptr[ptr], len);
107466: eb09 0105 add.w r1, r9, r5
10746a: 4622 mov r2, r4
10746c: 4650 mov r0, sl
10746e: f7fe fdf5 bl 10605c <write>
if (n != len) {
107472: 4284 cmp r4, r0
107474: 462a mov r2, r5
for (i = 0; i < ctx.nblocks; i++) {
107476: f107 0701 add.w r7, r7, #1
ptr += 512;
10747a: f505 7500 add.w r5, r5, #512 ; 0x200
sizeToGo -= n;
10747e: eba6 0604 sub.w r6, r6, r4
if (n != len) {
107482: d0e7 beq.n 107454 <Untar_FromMemory_Print+0xb0> <== NEVER TAKEN
Print_Error(printer, "write", ctx.file_path);
107484: 465b mov r3, fp <== NOT EXECUTED
107486: 4614 mov r4, r2 <== NOT EXECUTED
107488: 9d1e ldr r5, [sp, #120] ; 0x78 <== NOT EXECUTED
10748a: 464f mov r7, r9 <== NOT EXECUTED
10748c: 46d3 mov fp, sl <== NOT EXECUTED
10748e: f8dd 900c ldr.w r9, [sp, #12] <== NOT EXECUTED
107492: 469a mov sl, r3 <== NOT EXECUTED
message, path, errno, strerror(errno));
107494: f007 fba2 bl 10ebdc <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107498: 6806 ldr r6, [r0, #0] <== NOT EXECUTED
message, path, errno, strerror(errno));
10749a: f007 fb9f bl 10ebdc <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
10749e: 6800 ldr r0, [r0, #0] <== NOT EXECUTED
1074a0: f008 fc86 bl 10fdb0 <strerror> <== NOT EXECUTED
1074a4: f643 7218 movw r2, #16152 ; 0x3f18 <== NOT EXECUTED
1074a8: f643 6164 movw r1, #15972 ; 0x3e64 <== NOT EXECUTED
1074ac: e9cd 6000 strd r6, r0, [sp] <== NOT EXECUTED
1074b0: 462b mov r3, r5 <== NOT EXECUTED
1074b2: 9802 ldr r0, [sp, #8] <== NOT EXECUTED
1074b4: f2c0 0211 movt r2, #17 <== NOT EXECUTED
1074b8: f2c0 0111 movt r1, #17 <== NOT EXECUTED
1074bc: f002 f9ae bl 10981c <rtems_printf> <== NOT EXECUTED
close(fd);
1074c0: 4658 mov r0, fp <== NOT EXECUTED
1074c2: f7fd fcb5 bl 104e30 <close> <== NOT EXECUTED
1074c6: e786 b.n 1073d6 <Untar_FromMemory_Print+0x32> <== NOT EXECUTED
1074c8: 4606 mov r6, r0 <== NOT EXECUTED
}
1074ca: 4630 mov r0, r6 <== NOT EXECUTED
1074cc: b03f add sp, #252 ; 0xfc <== NOT EXECUTED
1074ce: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} <== NOT EXECUTED
retval = UNTAR_SUCCESSFUL;
1074d2: 2600 movs r6, #0
}
1074d4: 4630 mov r0, r6
1074d6: b03f add sp, #252 ; 0xfc
1074d8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
Print_Error(printer, "open", ctx.file_path);
1074dc: 9c1e ldr r4, [sp, #120] ; 0x78 <== NOT EXECUTED
message, path, errno, strerror(errno));
1074de: f007 fb7d bl 10ebdc <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
1074e2: 6806 ldr r6, [r0, #0] <== NOT EXECUTED
message, path, errno, strerror(errno));
1074e4: f007 fb7a bl 10ebdc <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
1074e8: 6800 ldr r0, [r0, #0] <== NOT EXECUTED
1074ea: f008 fc61 bl 10fdb0 <strerror> <== NOT EXECUTED
1074ee: f643 7210 movw r2, #16144 ; 0x3f10 <== NOT EXECUTED
1074f2: f643 6164 movw r1, #15972 ; 0x3e64 <== NOT EXECUTED
1074f6: 4623 mov r3, r4 <== NOT EXECUTED
1074f8: e9cd 6000 strd r6, r0, [sp] <== NOT EXECUTED
1074fc: f2c0 0211 movt r2, #17 <== NOT EXECUTED
107500: 9802 ldr r0, [sp, #8] <== NOT EXECUTED
107502: f2c0 0111 movt r1, #17 <== NOT EXECUTED
107506: f002 f989 bl 10981c <rtems_printf> <== NOT EXECUTED
ptr += 512 * ctx.nblocks;
10750a: 9c3b ldr r4, [sp, #236] ; 0xec <== NOT EXECUTED
10750c: eb05 2444 add.w r4, r5, r4, lsl #9 <== NOT EXECUTED
107510: e761 b.n 1073d6 <Untar_FromMemory_Print+0x32> <== NOT EXECUTED
ptr += 512;
107512: 465b mov r3, fp
107514: 46d3 mov fp, sl
close(fd);
107516: 4658 mov r0, fp
ptr += 512;
107518: 464f mov r7, r9
10751a: 469a mov sl, r3
10751c: f8dd 900c ldr.w r9, [sp, #12]
107520: 462c mov r4, r5
close(fd);
107522: f7fd fc85 bl 104e30 <close>
107526: e756 b.n 1073d6 <Untar_FromMemory_Print+0x32>
00107ae4 <Untar_ProcessHeader.part.0>:
return 0;
}
int
Untar_ProcessHeader(
107ae4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
107ae8: f101 0293 add.w r2, r1, #147 ; 0x93
107aec: 4604 mov r4, r0
107aee: b09c sub sp, #112 ; 0x70
107af0: 460d mov r5, r1
for (i=0; i < len; i++) {
107af2: f101 069b add.w r6, r1, #155 ; 0x9b
num = 0;
107af6: 2000 movs r0, #0
if ((octascii[i] < '0') || (octascii[i] > '9')) {
107af8: f812 3f01 ldrb.w r3, [r2, #1]!
107afc: 3b30 subs r3, #48 ; 0x30
107afe: b2d9 uxtb r1, r3
107b00: 2909 cmp r1, #9
num = num * 8 + ((unsigned long)(octascii[i] - '0'));
107b02: bf98 it ls
107b04: eb03 00c0 addls.w r0, r3, r0, lsl #3
for (i=0; i < len; i++) {
107b08: 42b2 cmp r2, r6
107b0a: d1f5 bne.n 107af8 <Untar_ProcessHeader.part.0+0x14>
const char *bufr
)
{
int i, sum;
sum = 0;
107b0c: 2200 movs r2, #0
107b0e: f105 3eff add.w lr, r5, #4294967295 ; 0xffffffff
for (i=0; i<512; i++) {
107b12: 4613 mov r3, r2
if ((i >= 148) && (i < 156))
107b14: f1a3 0c94 sub.w ip, r3, #148 ; 0x94
for (i=0; i<512; i++) {
107b18: 3301 adds r3, #1
if ((i >= 148) && (i < 156))
107b1a: f1bc 0f07 cmp.w ip, #7
sum += 0xff & ' ';
107b1e: bf98 it ls
107b20: 3220 addls r2, #32
if ((i >= 148) && (i < 156))
107b22: d9f7 bls.n 107b14 <Untar_ProcessHeader.part.0+0x30>
else
sum += 0xff & bufr[i];
107b24: f81e c003 ldrb.w ip, [lr, r3]
for (i=0; i<512; i++) {
107b28: f5b3 7f00 cmp.w r3, #512 ; 0x200
sum += 0xff & bufr[i];
107b2c: 4462 add r2, ip
for (i=0; i<512; i++) {
107b2e: d1f1 bne.n 107b14 <Untar_ProcessHeader.part.0+0x30>
if (sum != hdr_chksum) {
107b30: 4290 cmp r0, r2
107b32: f040 80ca bne.w 107cca <Untar_ProcessHeader.part.0+0x1e6> <== ALWAYS TAKEN
strlcpy(ctx->file_name, bufr, UNTAR_FILE_NAME_SIZE);
107b36: 2264 movs r2, #100 ; 0x64
107b38: 4629 mov r1, r5
107b3a: 6860 ldr r0, [r4, #4]
107b3c: f105 0687 add.w r6, r5, #135 ; 0x87
107b40: f010 fb04 bl 11814c <strlcpy>
ctx->mode = strtoul(&bufr[100], NULL, 8);
107b44: 2208 movs r2, #8
107b46: 2100 movs r1, #0
107b48: f105 0064 add.w r0, r5, #100 ; 0x64
107b4c: f010 fcca bl 1184e4 <strtoul>
107b50: 66e0 str r0, [r4, #108] ; 0x6c
ctx->linkflag = bufr[156];
107b52: f105 027b add.w r2, r5, #123 ; 0x7b
107b56: f895 709c ldrb.w r7, [r5, #156] ; 0x9c
num = 0;
107b5a: 2000 movs r0, #0
ctx->linkflag = bufr[156];
107b5c: f884 7078 strb.w r7, [r4, #120] ; 0x78
if ((octascii[i] < '0') || (octascii[i] > '9')) {
107b60: f812 3f01 ldrb.w r3, [r2, #1]!
107b64: 3b30 subs r3, #48 ; 0x30
107b66: b2d9 uxtb r1, r3
107b68: 2909 cmp r1, #9
num = num * 8 + ((unsigned long)(octascii[i] - '0'));
107b6a: bf98 it ls
107b6c: eb03 00c0 addls.w r0, r3, r0, lsl #3
for (i=0; i < len; i++) {
107b70: 42b2 cmp r2, r6
107b72: d1f5 bne.n 107b60 <Untar_ProcessHeader.part.0+0x7c>
if (Make_Path(ctx->printer, ctx->file_path) != 0) {
107b74: f8d4 a000 ldr.w sl, [r4]
ctx->file_size = _rtems_octal2ulong(&bufr[124], 12);
107b78: 6720 str r0, [r4, #112] ; 0x70
if (Make_Path(ctx->printer, ctx->file_path) != 0) {
107b7a: f8d4 907c ldr.w r9, [r4, #124] ; 0x7c
while (*path == '/') {
107b7e: f89a 0000 ldrb.w r0, [sl]
107b82: 282f cmp r0, #47 ; 0x2f
107b84: d103 bne.n 107b8e <Untar_ProcessHeader.part.0+0xaa> <== NEVER TAKEN
107b86: f81a 0f01 ldrb.w r0, [sl, #1]! <== NOT EXECUTED
107b8a: 282f cmp r0, #47 ; 0x2f <== NOT EXECUTED
107b8c: d0fb beq.n 107b86 <Untar_ProcessHeader.part.0+0xa2> <== NOT EXECUTED
if (p[0] == '\0') {
107b8e: 2800 cmp r0, #0
107b90: f000 80fa beq.w 107d88 <Untar_ProcessHeader.part.0+0x2a4> <== ALWAYS TAKEN
107b94: 4656 mov r6, sl
*p = '\0';
107b96: 2700 movs r7, #0
*p = '/';
107b98: f04f 082f mov.w r8, #47 ; 0x2f
} else if (p[0] != '/') {
107b9c: 282f cmp r0, #47 ; 0x2f
if (p[1] == '\0') {
107b9e: f816 2f01 ldrb.w r2, [r6, #1]!
} else if (p[0] != '/') {
107ba2: d11e bne.n 107be2 <Untar_ProcessHeader.part.0+0xfe>
*p = '\0';
107ba4: f806 7c01 strb.w r7, [r6, #-1]
if (p[1] == '\0') {
107ba8: 2a00 cmp r2, #0
107baa: f000 809a beq.w 107ce2 <Untar_ProcessHeader.part.0+0x1fe> <== ALWAYS TAKEN
if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) != 0) {
107bae: f240 11ff movw r1, #511 ; 0x1ff
107bb2: 4650 mov r0, sl
107bb4: f7fd fabe bl 105134 <mkdir>
107bb8: b9b8 cbnz r0, 107bea <Untar_ProcessHeader.part.0+0x106>
if (p[0] == '\0') {
107bba: 7830 ldrb r0, [r6, #0]
*p = '/';
107bbc: f806 8c01 strb.w r8, [r6, #-1]
if (p[0] == '\0') {
107bc0: 2800 cmp r0, #0
107bc2: d1eb bne.n 107b9c <Untar_ProcessHeader.part.0+0xb8> <== NEVER TAKEN
if (ctx->linkflag == SYMTYPE) {
107bc4: f894 7078 ldrb.w r7, [r4, #120] ; 0x78
int retval = UNTAR_SUCCESSFUL;
107bc8: 4606 mov r6, r0
if (ctx->linkflag == SYMTYPE) {
107bca: 2f32 cmp r7, #50 ; 0x32
107bcc: d04a beq.n 107c64 <Untar_ProcessHeader.part.0+0x180>
} else if (ctx->linkflag == REGTYPE) {
107bce: 2f30 cmp r7, #48 ; 0x30
107bd0: f000 808e beq.w 107cf0 <Untar_ProcessHeader.part.0+0x20c> <== NEVER TAKEN
} else if (ctx->linkflag == DIRTYPE) {
107bd4: 2f35 cmp r7, #53 ; 0x35 <== NOT EXECUTED
107bd6: f000 809f beq.w 107d18 <Untar_ProcessHeader.part.0+0x234> <== NOT EXECUTED
}
107bda: 4630 mov r0, r6
107bdc: b01c add sp, #112 ; 0x70
107bde: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
if (p[1] == '\0') {
107be2: 4610 mov r0, r2
if (p[0] == '\0') {
107be4: 2800 cmp r0, #0
107be6: d1d9 bne.n 107b9c <Untar_ProcessHeader.part.0+0xb8>
107be8: e7ec b.n 107bc4 <Untar_ProcessHeader.part.0+0xe0>
if (errno == EEXIST || errno == EISDIR) {
107bea: f00d fd31 bl 115650 <__errno>
107bee: 6803 ldr r3, [r0, #0]
107bf0: 2b11 cmp r3, #17
107bf2: d004 beq.n 107bfe <Untar_ProcessHeader.part.0+0x11a> <== NEVER TAKEN
107bf4: f00d fd2c bl 115650 <__errno> <== NOT EXECUTED
107bf8: 6803 ldr r3, [r0, #0] <== NOT EXECUTED
107bfa: 2b15 cmp r3, #21 <== NOT EXECUTED
107bfc: d1dd bne.n 107bba <Untar_ProcessHeader.part.0+0xd6> <== NOT EXECUTED
if (stat(path, &sb) != 0) {
107bfe: a902 add r1, sp, #8
107c00: 4650 mov r0, sl
107c02: f7fd fe9f bl 105944 <stat>
107c06: bb40 cbnz r0, 107c5a <Untar_ProcessHeader.part.0+0x176>
if (!S_ISDIR(sb.st_mode)) {
107c08: 9b06 ldr r3, [sp, #24]
107c0a: f403 4370 and.w r3, r3, #61440 ; 0xf000
107c0e: f5b3 4f80 cmp.w r3, #16384 ; 0x4000
107c12: d0d2 beq.n 107bba <Untar_ProcessHeader.part.0+0xd6> <== NEVER TAKEN
if (unlink(path) != 0) {
107c14: 4650 mov r0, sl <== NOT EXECUTED
107c16: f7fe fc5b bl 1064d0 <unlink> <== NOT EXECUTED
107c1a: 2800 cmp r0, #0 <== NOT EXECUTED
107c1c: f040 809d bne.w 107d5a <Untar_ProcessHeader.part.0+0x276> <== NOT EXECUTED
if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) != 0) {
107c20: f240 11ff movw r1, #511 ; 0x1ff <== NOT EXECUTED
107c24: 4650 mov r0, sl <== NOT EXECUTED
107c26: f7fd fa85 bl 105134 <mkdir> <== NOT EXECUTED
107c2a: 2800 cmp r0, #0 <== NOT EXECUTED
107c2c: d0c5 beq.n 107bba <Untar_ProcessHeader.part.0+0xd6> <== NOT EXECUTED
message, path, errno, strerror(errno));
107c2e: f00d fd0f bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107c32: 6806 ldr r6, [r0, #0] <== NOT EXECUTED
message, path, errno, strerror(errno));
107c34: f00d fd0c bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107c38: 6800 ldr r0, [r0, #0] <== NOT EXECUTED
107c3a: f010 fa7b bl 118134 <strerror> <== NOT EXECUTED
107c3e: f242 2260 movw r2, #8800 ; 0x2260 <== NOT EXECUTED
107c42: f242 2148 movw r1, #8776 ; 0x2248 <== NOT EXECUTED
107c46: 9001 str r0, [sp, #4] <== NOT EXECUTED
107c48: 4653 mov r3, sl <== NOT EXECUTED
107c4a: 4648 mov r0, r9 <== NOT EXECUTED
107c4c: f2c0 0212 movt r2, #18 <== NOT EXECUTED
107c50: f2c0 0112 movt r1, #18 <== NOT EXECUTED
107c54: 9600 str r6, [sp, #0] <== NOT EXECUTED
107c56: f7fd fd67 bl 105728 <rtems_printf> <== NOT EXECUTED
if (ctx->linkflag == SYMTYPE) {
107c5a: f894 7078 ldrb.w r7, [r4, #120] ; 0x78 <== NOT EXECUTED
retval = UNTAR_FAIL;
107c5e: 2601 movs r6, #1 <== NOT EXECUTED
if (ctx->linkflag == SYMTYPE) {
107c60: 2f32 cmp r7, #50 ; 0x32 <== NOT EXECUTED
107c62: d1b4 bne.n 107bce <Untar_ProcessHeader.part.0+0xea> <== NOT EXECUTED
strlcpy(ctx->link_name, &bufr[157], sizeof(ctx->link_name));
107c64: f104 0308 add.w r3, r4, #8
107c68: f105 019d add.w r1, r5, #157 ; 0x9d
107c6c: 2264 movs r2, #100 ; 0x64
107c6e: 4618 mov r0, r3
107c70: 461d mov r5, r3
107c72: f010 fa6b bl 11814c <strlcpy>
rtems_printf(ctx->printer, "untar: symlink: %s -> %s\n",
107c76: f242 2170 movw r1, #8816 ; 0x2270
107c7a: 6823 ldr r3, [r4, #0]
107c7c: f2c0 0112 movt r1, #18
107c80: 6fe0 ldr r0, [r4, #124] ; 0x7c
107c82: 462a mov r2, r5
107c84: f7fd fd50 bl 105728 <rtems_printf>
r = symlink(ctx->link_name, ctx->file_path);
107c88: 6821 ldr r1, [r4, #0]
107c8a: 4628 mov r0, r5
107c8c: f7fe fbfe bl 10648c <symlink>
if (r != 0) {
107c90: 2800 cmp r0, #0
107c92: d0a2 beq.n 107bda <Untar_ProcessHeader.part.0+0xf6> <== NEVER TAKEN
Print_Error(ctx->printer, "symlink", ctx->file_path);
107c94: 6827 ldr r7, [r4, #0] <== NOT EXECUTED
retval = UNTAR_FAIL;
107c96: 2601 movs r6, #1 <== NOT EXECUTED
Print_Error(ctx->printer, "symlink", ctx->file_path);
107c98: 6fe5 ldr r5, [r4, #124] ; 0x7c <== NOT EXECUTED
message, path, errno, strerror(errno));
107c9a: f00d fcd9 bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107c9e: 6804 ldr r4, [r0, #0] <== NOT EXECUTED
message, path, errno, strerror(errno));
107ca0: f00d fcd6 bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107ca4: 6800 ldr r0, [r0, #0] <== NOT EXECUTED
107ca6: f010 fa45 bl 118134 <strerror> <== NOT EXECUTED
107caa: f242 228c movw r2, #8844 ; 0x228c <== NOT EXECUTED
107cae: 4601 mov r1, r0 <== NOT EXECUTED
107cb0: 463b mov r3, r7 <== NOT EXECUTED
107cb2: f2c0 0212 movt r2, #18 <== NOT EXECUTED
107cb6: e9cd 4100 strd r4, r1, [sp] <== NOT EXECUTED
107cba: f242 2148 movw r1, #8776 ; 0x2248 <== NOT EXECUTED
107cbe: 4628 mov r0, r5 <== NOT EXECUTED
107cc0: f2c0 0112 movt r1, #18 <== NOT EXECUTED
107cc4: f7fd fd30 bl 105728 <rtems_printf> <== NOT EXECUTED
}
107cc8: e787 b.n 107bda <Untar_ProcessHeader.part.0+0xf6> <== NOT EXECUTED
rtems_printf(ctx->printer, "untar: file header checksum error\n");
107cca: f242 211c movw r1, #8732 ; 0x221c <== NOT EXECUTED
107cce: 6fe0 ldr r0, [r4, #124] ; 0x7c <== NOT EXECUTED
107cd0: f2c0 0112 movt r1, #18 <== NOT EXECUTED
return UNTAR_INVALID_CHECKSUM;
107cd4: 2602 movs r6, #2 <== NOT EXECUTED
rtems_printf(ctx->printer, "untar: file header checksum error\n");
107cd6: f7fd fd27 bl 105728 <rtems_printf> <== NOT EXECUTED
}
107cda: 4630 mov r0, r6 <== NOT EXECUTED
107cdc: b01c add sp, #112 ; 0x70 <== NOT EXECUTED
107cde: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} <== NOT EXECUTED
unlink(path);
107ce2: 4650 mov r0, sl <== NOT EXECUTED
int retval = UNTAR_SUCCESSFUL;
107ce4: 4616 mov r6, r2 <== NOT EXECUTED
unlink(path);
107ce6: f7fe fbf3 bl 1064d0 <unlink> <== NOT EXECUTED
if (ctx->linkflag == SYMTYPE) {
107cea: f894 7078 ldrb.w r7, [r4, #120] ; 0x78 <== NOT EXECUTED
107cee: e76c b.n 107bca <Untar_ProcessHeader.part.0+0xe6> <== NOT EXECUTED
rtems_printf(ctx->printer, "untar: file: %s (s:%lu,m:%04lo)\n",
107cf0: 6ee2 ldr r2, [r4, #108] ; 0x6c
107cf2: f242 2194 movw r1, #8852 ; 0x2294
107cf6: 6f23 ldr r3, [r4, #112] ; 0x70
107cf8: f2c0 0112 movt r1, #18
107cfc: 9200 str r2, [sp, #0]
107cfe: 6822 ldr r2, [r4, #0]
107d00: 6fe0 ldr r0, [r4, #124] ; 0x7c
107d02: f7fd fd11 bl 105728 <rtems_printf>
ctx->nblocks = (((ctx->file_size) + 511) & ~511) / 512;
107d06: 6f23 ldr r3, [r4, #112] ; 0x70
}
107d08: 4630 mov r0, r6
ctx->nblocks = (((ctx->file_size) + 511) & ~511) / 512;
107d0a: f203 13ff addw r3, r3, #511 ; 0x1ff
107d0e: 0a5b lsrs r3, r3, #9
107d10: 6763 str r3, [r4, #116] ; 0x74
}
107d12: b01c add sp, #112 ; 0x70
107d14: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
rtems_printf(ctx->printer, "untar: dir: %s\n", ctx->file_path);
107d18: f242 21b8 movw r1, #8888 ; 0x22b8 <== NOT EXECUTED
107d1c: 6822 ldr r2, [r4, #0] <== NOT EXECUTED
107d1e: f2c0 0112 movt r1, #18 <== NOT EXECUTED
107d22: 6fe0 ldr r0, [r4, #124] ; 0x7c <== NOT EXECUTED
107d24: f7fd fd00 bl 105728 <rtems_printf> <== NOT EXECUTED
r = mkdir(ctx->file_path, ctx->mode);
107d28: 6ee1 ldr r1, [r4, #108] ; 0x6c <== NOT EXECUTED
107d2a: 6820 ldr r0, [r4, #0] <== NOT EXECUTED
107d2c: f7fd fa02 bl 105134 <mkdir> <== NOT EXECUTED
if (r != 0) {
107d30: 2800 cmp r0, #0 <== NOT EXECUTED
107d32: f43f af52 beq.w 107bda <Untar_ProcessHeader.part.0+0xf6> <== NOT EXECUTED
Print_Error(ctx->printer, "mkdir", ctx->file_path);
107d36: 6827 ldr r7, [r4, #0] <== NOT EXECUTED
retval = UNTAR_FAIL;
107d38: 2601 movs r6, #1 <== NOT EXECUTED
Print_Error(ctx->printer, "mkdir", ctx->file_path);
107d3a: 6fe5 ldr r5, [r4, #124] ; 0x7c <== NOT EXECUTED
message, path, errno, strerror(errno));
107d3c: f00d fc88 bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107d40: 6804 ldr r4, [r0, #0] <== NOT EXECUTED
message, path, errno, strerror(errno));
107d42: f00d fc85 bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107d46: 6800 ldr r0, [r0, #0] <== NOT EXECUTED
107d48: f010 f9f4 bl 118134 <strerror> <== NOT EXECUTED
107d4c: f242 22c8 movw r2, #8904 ; 0x22c8 <== NOT EXECUTED
107d50: 4601 mov r1, r0 <== NOT EXECUTED
107d52: 463b mov r3, r7 <== NOT EXECUTED
107d54: f2c0 0212 movt r2, #18 <== NOT EXECUTED
107d58: e7ad b.n 107cb6 <Untar_ProcessHeader.part.0+0x1d2> <== NOT EXECUTED
message, path, errno, strerror(errno));
107d5a: f00d fc79 bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107d5e: 6806 ldr r6, [r0, #0] <== NOT EXECUTED
message, path, errno, strerror(errno));
107d60: f00d fc76 bl 115650 <__errno> <== NOT EXECUTED
rtems_printf(printer, "untar: %s: %s: (%d) %s\n",
107d64: 6800 ldr r0, [r0, #0] <== NOT EXECUTED
107d66: f010 f9e5 bl 118134 <strerror> <== NOT EXECUTED
107d6a: f242 2240 movw r2, #8768 ; 0x2240 <== NOT EXECUTED
107d6e: f242 2148 movw r1, #8776 ; 0x2248 <== NOT EXECUTED
107d72: 9001 str r0, [sp, #4] <== NOT EXECUTED
107d74: 4653 mov r3, sl <== NOT EXECUTED
107d76: 4648 mov r0, r9 <== NOT EXECUTED
107d78: f2c0 0212 movt r2, #18 <== NOT EXECUTED
107d7c: f2c0 0112 movt r1, #18 <== NOT EXECUTED
107d80: 9600 str r6, [sp, #0] <== NOT EXECUTED
107d82: f7fd fcd1 bl 105728 <rtems_printf> <== NOT EXECUTED
}
107d86: e768 b.n 107c5a <Untar_ProcessHeader.part.0+0x176> <== NOT EXECUTED
int retval = UNTAR_SUCCESSFUL;
107d88: 4606 mov r6, r0 <== NOT EXECUTED
107d8a: e71e b.n 107bca <Untar_ProcessHeader.part.0+0xe6> <== NOT EXECUTED