[ASan] Really fix zero_page_pc test for PowerPC

Summary:
As a follow-up to D6167, this patch fixes the test to account for
another difference between PowerPC and x86 systems.

On x86 if you branch to an invalid address, you get a SIGSEGV with PC
set to the invalid address (and si_addr in the siginfo struct also set
to the same address).

On PowerPC, you get a SIGSEGV with PC pointing at the branch
instruction, but si_addr set to the invalid address.

You can see this difference if you run the test case under gdb.

Reviewers: kcc, glider, samsonov

Reviewed By: samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D6226

llvm-svn: 221929
This commit is contained in:
Jay Foad 2014-11-13 21:53:00 +00:00
parent 3c6ca232ed
commit 66928be0af
1 changed files with 3 additions and 1 deletions

View File

@ -8,6 +8,8 @@ typedef void void_f();
int main() {
void_f *func = (void_f *)0x4;
func();
// CHECK: {{AddressSanitizer: SEGV.*(pc.*0004)}}
// x86 reports the SEGV with both address=4 and pc=4.
// PowerPC64 reports it with address=4 but pc still in main().
// CHECK: {{AddressSanitizer: SEGV.*(address|pc) 0x0*4}}
return 0;
}