Comment 6 for bug 1249205

Revision history for this message
Lutz Euler (lutz-euler) wrote :

As a hint towards what could be expected from a fix, with a hack that just corrects the offset for this specific function its dissassembly looks like this:

; disassembly for XXX
; Size: 204 bytes
; 0439922D: 498B442450 MOV RAX, [R12+80] ; no-arg-parsing entry point
; 32: 4883C010 ADD RAX, 16
; 36: 48C740F851000000 MOV QWORD PTR [RAX-8], 81
; 3E: 488968F0 MOV [RAX-16], RBP
; 42: 4989442450 MOV [R12+80], RAX

;;; [2] (BLOCK XXX (FORMAT T "~(~a~^~)~%" INP))

; 47: 488B056AFFFFFF MOV RAX, [RIP-150] ; '*STANDARD-OUTPUT*
; 4E: 488B5021 MOV RDX, [RAX+33]
; 52: 498B1414 MOV RDX, [R12+RDX]
; 56: 4883FA61 CMP RDX, 97
; 5A: 7504 JNE L0
; 5C: 488B50F9 MOV RDX, [RAX-7]
; 60: L0: 4883FA51 CMP RDX, 81
; 64: 0F848A000000 JEQ L1

;;; [3] (FORMAT T "~(~a~^~)~%" INP)

; 6A: 488D5C24F0 LEA RBX, [RSP-16]
; 6F: 4883EC18 SUB RSP, 24
; 73: 488B3D46FFFFFF MOV RDI, [RIP-186] ; :DOWNCASE
; 7A: 488B0547FFFFFF MOV RAX, [RIP-185] ; #<FDEFINITION object for SB-INT:MAKE-CASE-FROB-STREAM>
; 81: B904000000 MOV ECX, 4
; 86: 48892B MOV [RBX], RBP
; 89: 488BEB MOV RBP, RBX
; 8C: FF5009 CALL QWORD PTR [RAX+9]
; 8F: 480F42E3 CMOVB RSP, RBX
; 93: 488BFA MOV RDI, RDX
; 96: 488BF7 MOV RSI, RDI
; 99: 488975F0 MOV [RBP-16], RSI
; 9D: 488D5C24F0 LEA RBX, [RSP-16]
; A2: 4883EC18 SUB RSP, 24
; A6: 488B55F8 MOV RDX, [RBP-8]
; AA: 488BFE MOV RDI, RSI
; AD: 488B051CFFFFFF MOV RAX, [RIP-228] ; #<FDEFINITION object for PRINC>
; B4: B904000000 MOV ECX, 4
; B9: 48892B MOV [RBX], RBP
; BC: 488BEB MOV RBP, RBX
; BF: FF5009 CALL QWORD PTR [RAX+9]
; C2: 488B75F0 MOV RSI, [RBP-16]

; C6: 498B442450 MOV RAX, [R12+80]
; CB: 48C740F000000000 MOV QWORD PTR [RAX-16], 0
; D3: 48C740F800000000 MOV QWORD PTR [RAX-8], 0
; DB: 4883E810 SUB RAX, 16
; DF: 4989442450 MOV [R12+80], RAX
; E4: BA17001020 MOV EDX, 537919511
; E9: 488BE5 MOV RSP, RBP
; EC: F8 CLC
; ED: 5D POP RBP
; EE: C3 RET
; EF: CC0A BREAK 10 ; error trap
; F1: 02 BYTE #X02
; F2: 19 BYTE #X19 ; INVALID-ARG-COUNT-ERROR
; F3: 9A BYTE #X9A ; RCX
; F4: L1: CC0A BREAK 10 ; error trap
; F6: 02 BYTE #X02
; F7: 1B BYTE #X1B ; UNBOUND-SYMBOL-ERROR
; F8: 1B BYTE #X1B ; RAX