Date: 18 Mar 2004 18:56:37 -0700 From: llewelly@xmission.com To: Garance A Drosihn <drosih@rpi.edu> Cc: "Wafa M. Hadidi" <wmmh@identd.net> Subject: Re: Updating sparc64 time_t, hostname not found Message-ID: <s3rad2dd2ga.fsf@xmission.xmission.com> In-Reply-To: <p0602043dbc7fde745c29@[128.113.24.47]> References: <40594A35.6060303@exeter.ac.uk> <200403190005.22811.wmmh@identd.net> <p0602043bbc7fce6c9a52@[128.113.24.47]> <200403190057.36638.wmmh@identd.net> <p0602043dbc7fde745c29@[128.113.24.47]>
next in thread | previous in thread | raw e-mail | index | archive | help
Garance A Drosihn <drosih@rpi.edu> writes: [snip] > Programs only know the time_t they were compiled with, so you > would need to recompile them to get a 64-bTT version. Besides, > if you had a 32-bTT kernel with 64-bTT applications, then I > suspect you would see timestamps VERY different than 1970. > (I guess I could check that...). [snip] sparc is big-endian. Most significant bytes are stored at lower addresses. so - let's say we have this date: Thu Mar 18 18:31:39 2004 In 64 bTT hex, it looks like this: 00 00 00 00 40 5a 4d ea The bytes at the low addresses are all 0. If a pointer points to this time_t, but is of type pointer to 32 bTT, only the first 4 bytes of the value will be fetched from memory when the pointer is dereferenced. Those first 4 bytes are all 0, resulting in a date of Jan 1, 1970. At least that's my reasoning - but endians always confuse me. (also, 64 bTT might result in things being in such different places that the pointers point to the wrong thing entirely - so, even if the above reasoning is correct, it's only a possibility.)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?s3rad2dd2ga.fsf>