27 cmp.l #HUNK_HEADER,(a2)+
56 dtl <A2=%08lx, D3=%08lx, D4=%08lx - >,a0
71 bclr.l #HUNKB_ADVISORY,d0
75 cmp.w #HUNK_RELRELOC32-HUNK_NAME+1,d0
78 move.w HunkTable(pc,d0.w),d1
81 InvalidNE1 bne Invalid
83 jsr HunkTable(pc,d1.w)
86 CheckWordLimit swap d0
93 BadHunk tstv.b Advisory
100 FileEnd tstv.l Arg_NoEnd
103 PatchNoEnd geta Arg_To,a0
108 ArgToSpecified move.l d0,a0
120 move.l (a1)+,d1 ;Next
121 move.l (a1)+,d0 ;Point
125 move.l (a1)+,d0 ;Length
128 hunk macro ;HUNK_#?[,<routine>]
130 fail Mismatched hunk numbers!
133 dc.w BadHunk-HunkTable
135 dc.w hunk_\2-HunkTable
141 hunk HUNK_NAME,skipcnt ;1000
142 hunk HUNK_CODE,main ;1001
143 hunk HUNK_DATA,main ;1002
144 hunk HUNK_BSS,bss ;1003
145 hunk HUNK_RELOC32,rel32 ;1004
146 hunk HUNK_RELOC16 ;1005
147 hunk HUNK_RELOC8 ;1006
149 hunk HUNK_SYMBOL,symbol ;1008
150 hunk HUNK_DEBUG,skipcnt ;1009
151 hunk HUNK_END,end ;1010
152 hunk HUNK_HEADER ;1011
154 hunk HUNK_OVERLAY ;1013
155 hunk HUNK_BREAK ;1014
156 hunk HUNK_DREL32,rel16 ;1015
157 hunk HUNK_DREL16 ;1016
158 hunk HUNK_DREL8 ;1017
160 hunk HUNK_INDEX ;1019
161 hunk HUNK_RELOC32SHORT,rel16 ;1020
162 hunk HUNK_RELRELOC32,rrel16 ;1021
163 ifne _hunk-HUNK_RELRELOC32-1
164 fail Invalid number of hunks!
167 FlushNoInsertX move.l a3,d0
169 FlushNoInsert move.l a2,a1
171 FlushSkip move.l d2,a0
185 jsr _LVOUDivMod32(a0)
192 dtl.l <%s =',62,' %s: %lu =',62,' %lu (%u%%)>,a0
195 hunk_rel16 moveq #-31,d2
198 RelocRead16 moveq #0,d0
202 hunk_rel32 moveq #2,d2
205 RelocLoop bsr.s RelocRead
223 call exec,CopyMemQuick
226 RelocCopy16 subq.l #1,d1
232 RelocScan add.l d1,(a0)
237 RelocRead cmp.l a2,d7
244 RelocReturnRR cmp.l a3,d7
251 RelocReturn move.l a2,d0
258 InvalidEQ1 beq Invalid
263 RRel16Loop bsr.s RelocRead
271 bsr.s CopyBytes ;or SkipBytes if d4\ne0
274 hunk_skipcnt bsr.s SymInit
288 SymInit get.l Arg_KeepDebug,d6
290 PutnRet move.l d0,(a3)+
293 hunk_symbol moveq #0,d2
295 SkipSymbol bsr.s RelocRead
305 CopyLongs lsl.l #2,d0
323 CopyQuad move.w d0,d1
327 MyCopyLoop move.l (a0)+,(a1)+
328 MyCopyInto dbra d1,MyCopyLoop
332 JumpCopyMem jump exec,CopyMem
339 dtl <HunkEnd - Pass 1>,a0
358 AllocRelocLoop move.l (a4),d0
364 NoAllocReloc move.l d0,(a4)+
365 AllocRelocInto dbra d2,AllocRelocLoop
370 vmovev.l OldKeepDebug,Arg_KeepDebug
376 dtl <HunkEnd - Pass 1 done>,a0
386 lea (a4,d6.l),a2 ;A2=RelLengths, A4=RelEnds
387 moveq #0,d4 ;define to 16 if at least 1 32bit
388 moveq #0,d5 ;saved bytes by 16bit header
400 NormalPtrsLoop move.l (a2)+,d0
411 EdgeLoop move.l d0,d2
421 EdgeDown move.l d2,d1
424 Only32Fake subq.l #1,d3
425 Only32Loop move.l (a4),a0
434 EdgeFound tst.w (a0,d0.l)
439 EmptyHunk move.l d0,-(a3) ;real # of 16bit relocs
448 MoreThatTwo sub.l d4,d5
449 NormalPtrsInto dbra d3,NormalPtrsLoop ;A2=TotalEnd, A4=RelLengths
451 FromFaked32 move.l d6,d3
455 sub.l d6,a2 ;A2=RelStarts, A4=RelLengths
463 H16SizeLoop move.l -(a0),d1
468 H16SizeSkip dbra d3,H16SizeLoop
471 movem.l 4(sp),d3/a0/a2/a4
472 move.l #HUNK_DREL32,(a3)+
474 H16Loop move.l -(a0),d0
481 move.w 6(sp),(a3) ;Desthunk
487 bsr CheckWordLimit ;# of relocs>65535 ?!?
488 H16SkipAll move.l a1,(a2)+
500 H32SizeLoop move.l (a4)+,d1
504 H32SizeInto dbra d2,H32SizeLoop
510 move.l #HUNK_RELOC32,(a3)+
512 moveq #0,d5 ;Current DestHunk
513 H32Loop move.l (a2)+,a0
522 call exec,CopyMemQuick
527 HunksDone get.l RelocPool,a0
539 ReserveReloc add.l a3,d0
546 call ss,TrackAllocPub
551 NoLastInsert move.l d0,(a0)
554 clr.l (a1)+ ;^NextInsert
555 move.l a3,(a1)+ ;^InsertPoint
556 pop (a1)+ ;^InsertLength
559 ReserveReturn move.l (sp),a0
563 hunk_main bsr.s HunkMainInit
582 HunkMainInit tst.l d3
595 SqueezeLoop tst.l -(a3)
596 SqueezeInto dbne d0,SqueezeLoop
600 TotalSqueeze sub.l a3,d1
604 JumpFromBSS get.l Hunks,d0
608 hunk_bss bsr.s HunkMainInit
612 ClrHunkTabLoop clr.l (a0)+
613 ClrHunkTabInto dbra d0,ClrHunkTabLoop
615 vmovev.l Arg_KeepDebug,OldKeepDebug
620 SkipBytes add.l d0,a2
623 InvalidEnd move.l d7,a2
624 Invalid vsub.l FileStart,a2
626 dtl <Invalid structure of file "%s" near offset $%06lx>,a0
628 ErrorSSA1 move.l sp,a1
632 EXIT jump ss,ExitCleanup
636 template <FROM/A,TO,KEEPDEBUG/S,RELOC32/S,NOEND/S,QUIET/S>
645 ShortRel dvitype /bin.new.exp/dvitype RELOC32
646 ShortRel gftodvi /bin.new.exp/gftodvi RELOC32
647 ShortRel gftopk /bin.new.exp/gftopk RELOC32
648 ShortRel gftype /bin.new.exp/gftype RELOC32
649 ShortRel inimf /bin.new.exp/inimf RELOC32
650 ShortRel initex /bin.new.exp/initex RELOC32
651 ShortRel mft /bin.new.exp/mft RELOC32
652 ShortRel pltotf /bin.new.exp/pltotf RELOC32
653 ShortRel tftopl /bin.new.exp/tftopl RELOC32
654 ShortRel vftovp /bin.new.exp/vftovp RELOC32
655 ShortRel virmf /bin.new.exp/virmf RELOC32
656 ShortRel virtex /bin.new.exp/virtex RELOC32
657 ShortRel vptovf /bin.new.exp/vptovf RELOC32
658 ShortRel MakeInfo /bin.new.exp/MakeInfo RELOC32
659 ShortRel tr2tex /bin.new.exp/tr2tex RELOC32
660 ShortRel dvi2tty /bin.new.exp/dvi2tty RELOC32
661 ShortRel disdvi /bin.new.exp/disdvi RELOC32
662 ShortRel DVIprint /bin.new.exp/DVIprint RELOC32
663 ShortRel flib /bin.new.exp/flib RELOC32
664 ShortRel PToFront /bin.new.exp/PToFront RELOC32
665 ShortRel TeXindex /bin.new.exp/TeXindex RELOC32
666 ShortRel ShowDVI /bin.new.exp/ShowDVI RELOC32
667 ShortRel SpecialHost /bin.new.exp/SpecialHost RELOC32
668 ShortRel bm2font /bin.new.exp/bm2font RELOC32
671 A2=000EEE44, D3=00000000, D4=00000000 - Got HUNK_CODE
672 A2=00102524, D3=FFFFFFFF, D4=00102524 - Got HUNK_DREL32
673 A2=00102E08, D3=FFFFFFFF, D4=00102524 - Got HUNK_RELOC32
674 A2=00102E1C, D3=FFFFFFFF, D4=00102524 - Got HUNK_DATA
675 A2=00102524, D3=FFFFFFFF, D4=00000000 - Got HUNK_DREL32
676 A2=00102E08, D3=FFFFFFFF, D4=00000000 - Got HUNK_RELOC32
677 A2=00102E1C, D3=FFFFFFFF, D4=00000000 - Got HUNK_DATA
678 A2=00103308, D3=FFFFFFFF, D4=00103308 - Got HUNK_RELOC32
679 A2=00103320, D3=FFFFFFFF, D4=00103308 - Got HUNK_BSS
680 A2=00103308, D3=FFFFFFFF, D4=00000000 - Got HUNK_RELOC32
681 A2=00103320, D3=FFFFFFFF, D4=00000000 - Got HUNK_BSS
682 A2=00103328, D3=FFFFFFFF, D4=00103328 - Got HUNK_END
683 A2=00103328, D3=FFFFFFFF, D4=00000000 - Got HUNK_END
684 A2=0010332C, D3=00000000, D4=00000000 - bm2font => :t/shortrel.res: 83208 => 80888 (97%)