Date: Tue, 6 Mar 2001 13:01:32 +1000 (EST) From: User Raymond <raymond@one.com.au> To: freebsd-alpha@FreeBSD.org Subject: Strange results from compiled alpha code Message-ID: <200103060301.NAA24010@gw.one.com.au>
next in thread | raw e-mail | index | archive | help
Subj: Strange results from compiled alpha code
To: freebsd-alpha@FreeBSD.org
From: raymond@one.com.au
This refers to FreeBSD 4.2-RELEASE alpha running on an AS200.
Sorry for the size of this post - I have attempted to create a small
demonstration program but can't seem to.
...anyway, consider the following piece of c source code:
typedef struct CSTRING // our string type
{ short len; // length of it
u_char buf[32768]; // and the content
} cstring; // end counted string
extern u_char *mumpspc; // mumps prog pointer
mumpspc = mumpspc +
((cstring *)mumpspc)->len +
sizeof(short) + 1; // point past the string
and the following gdb output:
975 mumpspc = mumpspc +
(gdb) p mumpspc
$1 = (u_char *) 0x120096c7f "\002"
(gdb) p mumpspc + ((cstring *)mumpspc)->len + sizeof(short) + 1
$2 = (u_char *) 0x120096c84 "<\001"
(gdb) set mumpspc = mumpspc + ((cstring *)mumpspc)->len + sizeof(short) + 1
(gdb) p mumpspc
$3 = (u_char *) 0x120096c84 "<\001"
(gdb) set mumpspc = 0x120096c7f
(gdb) p mumpspc
$4 = (u_char *) 0x120096c7f "\002"
(gdb) s
978 break;
(gdb) p mumpspc
$5 = (u_char *) 0x12009a982 ""
(gdb) set mumpspc = 0x120096c7f
(gdb) p mumpspc[0]
$6 = 2 '\002'
(gdb) p mumpspc[1]
$7 = 0 '\000'
(gdb) p mumpspc[2]
$8 = 52 '4'
(gdb) p mumpspc[3]
$9 = 50 '2'
(gdb) p mumpspc[4]
$10 = 0 '\000'
(gdb) p mumpspc[5]
$11 = 60 '<'
It appears that the "set" is ok when interpreted by gdb but the compiled
code gives the wrong answer - it seems to ignore the '\000' at mumpspc[1].
This code works OK on the x86 architecture (FreeBSD and linux); doesn't
work with linux alpha either and (yes) I know it's horrible code.
but - any ideas?
Ray Newman
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103060301.NAA24010>
