More interestingly though:
stacktop(llx)= 80090dd2e8
&(stacktop[-CVM_WORDS_PER_LONG]) = 88090dd2e0
..
I'm missing something here - where are you getting
0x7FFFFFFF8 from?
88090dd2e0 > 80090dd2e8 (I'm assuming that you have
this in the printfs)
fprintf(stderr, ">>>>> stacktop(llx) = %llx",
stacktop);
fprintf(stderr, ">>>>>
&(stacktop[-CVM_WORDS_PER_LONG]) = %llx",
&(stacktop[-CVM_WORDS_PER_LONG]));
So then why are these two printf's showing so much
difference in value (my calc showed 0x7FFFFFFF8).
Indeed why?
I've gone back to this and can see (as you did):
stacktop = 0x80090dd2e8
&(stacktop[-CVM_WORDS_PER_LONG]) = 88090dd2e0
However,
stacktop-CVM_WORDS_PER_LONG = 80090dd2e0
which seems to make more sense. Now, are:
&(stacktop[-CVM_WORDS_PER_LONG])
stacktop-CVM_WORDS_PER_LONG
equivalent? At first glance I would have thought yes...which
makes the differences quite odd and it's in the second '8' of
'88090...'. I'll look into it more...