142 lines
1.7 KiB
ArmAsm
142 lines
1.7 KiB
ArmAsm
/ strip -- strip relocation and symbols
|
|
|
|
mov (sp)+,argc
|
|
tst (sp)+
|
|
br loop
|
|
unloop:
|
|
sys unlink; s.tmp
|
|
loop:
|
|
dec argc
|
|
bgt 1f
|
|
sys exit
|
|
1:
|
|
mov (sp)+,r4
|
|
mov r4,0f
|
|
sys open; 0:..; 0
|
|
bec 1f
|
|
jsr r5,mesg; <open error: \0>; .even
|
|
br loop
|
|
1:
|
|
mov r0,fi
|
|
mov $'a,r1
|
|
1:
|
|
movb r1,s.tmp+8
|
|
sys stat; s.tmp; buf
|
|
bec 2f
|
|
sys creat; s.tmp; 400
|
|
bec 1f
|
|
2:
|
|
inc r1
|
|
cmp r1,$'z
|
|
blos 1b
|
|
jsr r5,mesg; <can't create temp file for \0>; .even
|
|
sys exit
|
|
1:
|
|
mov r0,fo
|
|
clr buf
|
|
mov fi,r0
|
|
sys read; buf; 512.
|
|
mov r0,r3
|
|
cmp buf,magic
|
|
beq 1f
|
|
cmp buf,magic1
|
|
beq 1f
|
|
cmp buf,magic2
|
|
beq 1f
|
|
jsr r5,mesg; <improper format: \0>; .even
|
|
br unloop
|
|
1:
|
|
mov buf+2,r2
|
|
add buf+4,r2
|
|
add $20,r2
|
|
clr r1
|
|
clr buf+10
|
|
mov $1,buf+16 / no reloc bits flag
|
|
1:
|
|
mov r2,0f
|
|
sub r1,0f
|
|
cmp 0f,r3
|
|
blos 2f
|
|
mov r3,0f
|
|
2:
|
|
mov fo,r0
|
|
sys write; buf; 0:..
|
|
add 0b,r1
|
|
cmp r1,r2
|
|
bhis 1f
|
|
mov fi,r0
|
|
sys read; buf; 512.
|
|
mov r0,r3
|
|
bne 1b
|
|
jsr r5,mesg; <unexpected EOF: \0>; .even
|
|
1:
|
|
mov fo,r0
|
|
sys close
|
|
mov fi,r0
|
|
sys close
|
|
mov r4,0f
|
|
sys creat; 0:..; 0 / same mode as before
|
|
bec 1f
|
|
jsr r5,mesg; <can't rewrite: \0>; .even
|
|
jmp unloop
|
|
1:
|
|
mov r0,fo
|
|
sys open; s.tmp; 0
|
|
bec 1f
|
|
jsr r5,mesg; <can't read temp file for: \0>; .even
|
|
sys exit
|
|
1:
|
|
mov r0,fi
|
|
1:
|
|
mov fi,r0
|
|
sys read; buf; 512.
|
|
mov r0,0f
|
|
beq 1f
|
|
mov fo,r0
|
|
sys write; buf; 0:..
|
|
br 1b
|
|
1:
|
|
mov fi,r0
|
|
sys close
|
|
mov fo,r0
|
|
sys close
|
|
jmp unloop
|
|
|
|
mesg:
|
|
movb (r5)+,ch
|
|
beq 1f
|
|
mov $1,r0
|
|
sys write; ch; 1
|
|
br mesg
|
|
1:
|
|
inc r5
|
|
bic $1,r5
|
|
mov r4,r1
|
|
1:
|
|
movb (r1)+,ch
|
|
beq 1f
|
|
mov $1,r0
|
|
sys write; ch; 1
|
|
br 1b
|
|
1:
|
|
mov $1,r0
|
|
sys write; qnl; 1
|
|
rts r5
|
|
|
|
s.tmp:
|
|
</tmp/stma\0>
|
|
qnl:
|
|
<\n>
|
|
.even
|
|
magic: 407
|
|
magic1: 410
|
|
magic2: 411
|
|
|
|
.bss
|
|
fi: .=.+2
|
|
fo: .=.+2
|
|
argc: .=.+2
|
|
buf: .=.+512.
|
|
ch: .=.+2
|
|
|