I don't know if there's any interest in this, but I have found a very
short program where the old compiled version causes a problem with
VLIST. Here are the details
The old compiler version was 9.3.1.2, the new one 10.2.0.0
001: $OPTIONS -F L ;*WR631
002: *
003: *** TITLE: Time conversion routine.
004: *
005: * Written by Wilfred D'Mello, 02-August-1993
006: *
007: PRINT
008: PRINT "Time conversion routine. Press RETURN to
return to TCL"
009: PRINT "You may enter time in 24 hour format eg:
18:30:26 "
010: PRINT " OR "
011: PRINT "In 12 hour format with AM/PM appended eg:
6:30:26PM"
012: PRINT
013: LOOP
014: PRINT "Enter Time to convert ":
015: INPUT ITIME
016: UNTIL ITIME = '' DO
017: ITIME = OCONV(ITIME,"MTS")
018: ITIME = ICONV(ITIME,"MTS")
019: PRINT @(40):"ICONV()=":ITIME:
020: PRINT @(60):"OCONV()=":OCONV(ITIME,"MTS")
021: PRINT
022: REPEAT
023: END
When I used VLIST, the line numbering gets out of kilter at the LOOP -
all the source prints, then the if fell over like this
00023: END
00258 0001C : 12E print "Enter Time to convert "
00259 00022 : 0B9 input 0 16 => ITIME
00260 0002A : 10C nop
00260 0002C : 06E eq ITIME "" => $R0
00260 00034 : 2E0 testtw $R0 00084:
00261 0003C : 112 oconv ITIME "MTS" => ITIME
00262 00044 : 0AC iconv ITIME "MTS" => ITIME
00263 0004C : 04A cursor 40 -1 => $R0
00263 00054 : 12E print $R0 "ICONV()=" ITIME
00264 0005E : 04A cursor 60 -1 => $R0
00264 00066 : 112 oconv ITIME "MTS" => $R1
00264 0006E : 130 printcrlf $R0 "OCONV()=" $R1
00265 00078 : 126 pcrlf
00266 0007A : 10C nop
00266 0007C : 0C2 jump 00000:
00267 00084 : 01C calculate Abnormal termination of
UniVerse.
Fault type is 11. Layer type is Unknown.
Program "/usr/ibm/uv/bin/vlist" core dumped. [SIGSEGV]
segmentation violation
Interestingly, I don't get the core dump if the source is missing - but
the last two lines don't make any sense to me.
00266 0007C : 0C2 jump 00000:
00267 00084 : 01C calculate [365] => [49]
The VLIST output from a newly compiled program ends like this
00022: REPEAT
00022 0007A : 10C nop
00022 0007C : 0C2 jump 0001C:
00023: END
00023 00084 : 190 stop
So it looks like there's some problem with the way it works out the jump
address. I compared the object code and the only changes are in the
header and a couple of extra char(0)s at the end of the program. If the
logic is unchanged, why does the addressing go wrong?
OLD NEW
3 147 162 <--- EG old version has char(147) as third
character, new is char(162)
4 18 0 Aha! DTX 147 = 93 18 = 12 -> 9.3.1.2 DTX 162
= A2 0 = 0 -> 10.2.0.0
8 0 16
29 0 255
30 0 9
31 0 8
32 0 216
51 0 42
52 0 72
73 0 70
74 0 85
75 0 18
76 0 15
657 255 0 <--- New one is two characters longer
658 255 0
I'm off until Monday morning, so I won't be able to give any further
details before then. It's definitely a puzzle, and possibly a bug.
Regards, Keith
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/