i#128: Use si_addr if it's a plausible faulting address
i#128: Use si_addr if it's a plausible faulting address

If si_addr is NULL or not equal to any of the memory operand addresses,
we fall back to the protection check.

Also adds a call to get protection info for the faulting PC.  The
existing code was using the protections for the last memory operand
address, or an uninitialized value if there were no memory operands.

Fixes issue 128.

Review URL: https://codereview.appspot.com/6932051

SVN-Revision: 1768

sigma-random/dynamorio,daksunt/dynamorio,code4bones/dynamorio,code4bones/dynamorio,AmesianX/dynamorio,code4bones/dynamorio,daksunt/dynamorio,sigma-random/dynamorio,AmesianX/dynamorio,bl4ckic3/dynamorio,daksunt/dynamorio,AmesianX/dynamorio,bl4ckic3/dynamorio,AmesianX/dynamorio,sigma-random/dynamorio,bl4ckic3/dynamorio,sigma-random/dynamorio,sigma-random/dynamorio,daksunt/dynamorio,daksunt/dynamorio,code4bones/dynamorio,code4bones/dynamorio,AmesianX/dynamorio,bl4ckic3/dynamorio,bl4ckic3/dynamorio