[ Mistakenly committed older version of patch. This is the right one. ]
Breakpad Linux client: Simplify VerifyStackReadWithMultipleThreads unit test. As written, the VerifyStackReadWithMultipleThreads unit test makes assumptions about the layout of thread_function's stack frame. As a result, the test will fail when compiled with some compilers, or built with certain optimization levels. As an extension to C++, the GNU compilers allow you to request that a variable be placed in a specific register. Using this, we can have thread_function put the thread id in place where the test can find it reliably. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@559 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
b68b800189
commit
f3319839c4
1 changed files with 3 additions and 3 deletions
|
@ -48,10 +48,10 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void *thread_function(void *data) {
|
void *thread_function(void *data) {
|
||||||
pid_t thread_id = syscall(SYS_gettid);
|
volatile pid_t thread_id = syscall(SYS_gettid);
|
||||||
register pid_t *thread_id_ptr asm(TID_PTR_REGISTER) = &thread_id;
|
register volatile pid_t *thread_id_ptr asm(TID_PTR_REGISTER) = &thread_id;
|
||||||
while (true)
|
while (true)
|
||||||
asm("" : : "r" (thread_id_ptr));
|
asm volatile ("" : : "r" (thread_id_ptr));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue