Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: CVS commit: src/sys/arch
thanks for doing this. it will make sanitizer_linux.cc's
port for GetPcSpBp() *much* simplier.
> Module Name: src
> Committed By: kamil
> Date: Thu Feb 15 15:53:57 UTC 2018
>
> Modified Files:
> src/sys/arch/sparc/include: mcontext.h
this doesn't seem right. at least, it does not match
the usage from libsanitizer:
uptr *stk_ptr;
# if defined (__arch64__)
stk_ptr = (uptr *) (*sp + 2047);
# else
stk_ptr = (uptr *) *sp;
# endif
*bp = stk_ptr[15];
i don't understand either ofthe sparc versions you have.
+ #define _UC_MACHINE_FP(uc) (((uc)->uc_mcontext.__gregs[_REG_O6])+0x80e)
+ #define _UC_MACHINE_FP(uc) (((uc)->uc_mcontext.__gregs[_REG_O6])+0xf)
both of these grab something invalid and will likely
cause a run-time unaligned access fault as the result
will be aligned to 0x3. there's an extra deref here
in the sparc case that is needed. oh, i see where the
additional 0xf offset comes from. you've conflated
byte and word sizes here. the 64 bit stack pointer
is offset by -2047 from its actual value. that's a
byte address. the 15 is an array offset, which is
either 4 or 8 bytes.
the rest of them seem right as well as i could tell,
given ia64 is kind of a wreck..
.mrg.
Home |
Main Index |
Thread Index |
Old Index