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