Bon PedroM compile avec l'option cut-ranges.
Et en traduisant tous les bsr en jsr, et en laissant faire ld-tigcc, je ne perds que moins de 100 octets.
C'est raisonnable, donc je laisse (Mais ld-tigcc ne les détecte pas tous

).
Cependant, un vrai premier problème:
lea stderr,a2 ; stderr
cmpi.b #'2',d0 ; stderr is 2>. First check 2
bne.s \EndRedirect ; No, so end of redirection
move.b (a0)+,d0 ; Read next char
cmpi.b #'>',d0 ; Check second char
bne.s \EndRedirect ; no
; Does the redirection
\Redirect cmpi.b #' ',(a0)+
beq.s \Redirect
tst.b -(a0) ; Redirection: Check if there is at least a char
beq.s \EndRedirect
jsr freopen ; Reopen stream to a file
move.l a0,d0
beq.s \ResetRedirect ; Error: Reset to default
subq.w #4,d4
bhi.s \RedirectLoop
\ResetRedirect:
jsr InitTerminal
\EndRedirect
rts
ld-tigcc m'optimise le jsr InitTerminal / rts
en un bra.w InitTerminal et en virant le rts.
Ce qui fait que ca plante dès qu'on entre une instruction.
Voici l'extrait de Makefile:
A68K=tigcc -c -WA,-a --cut-ranges
A68K_INCLUDE=-WA,-ic -WA,-i$(PREOS_SRC)
S2ASM=../bin/s2asm
MAKETIB=tigcc -v --flash-os --flash-os-bss-start=0x5B00 --outputbin --optimize-code --cut-ranges
Je pense qu'a68k n'émet pas de reloc dans ce cas là, et donc ld-tigcc ne le voyant pas, l'optimize à tord. Tu confirmes ?