发件人: Wuweijia 发送时间: 2017年9月12日 12:34 收件人: '[email protected]' <[email protected]> 抄送: Fanbohao <[email protected]> 主题: [HELP] Is there any bug with the program built by the clang4.0 with thumbv7--linux-android command para.
Hello:
First, I build the program with clang 4.0 with 32 bit command
param, but it run failed because there is unknown instruction;
Second , I build the program with clang 4.0 with 64 bit command
param, and it run success.
Third, I build the same program with clang 3.8 with 32 bit command param, and
I run success, there is no unknown instructions.
There is the error log:
disInstr(thumb): unhandled instruction: 0x450B 0xD104
==24328== valgrind: Unrecognised instruction at address 0x1089c5.
==24328== at 0x1089C4: compare_exchange_strong (atomic:943)
==24328== by 0x1089C4: atomic_compare_exchange_strong_explicit<unsigned int>
(atomic:1376)
==24328== by 0x1089C4: main (testClang.cpp:22)
There is some point :
1: I build the arm application which is 32 bit , but it ran in
the aarch64 server which is 64 bit;
The rar pack contain:
1: the compile command with clang 4.0:
2: the error log
3: the function main instruction (that compile with clang3.8
and clang4.0)
I had search the code. In the implementation, no matter
clang3.8 or clang4.0 they all call __c11_atomic_compare_exchange_strong
function to check the value. I think the source code maybe it is the same and
fine.
If you need any more information , Please send e-mail to me and
how to gather it step by step. I am waiting for reponse.
BR
Owen
#include <errno.h>
#include <limits.h>
#include <stdatomic.h>
#include <string.h>
#include <sys/cdefs.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
_Atomic(unsigned int ) g_status;
int main(int argc __unused , char ** argv __unused ) {
unsigned int init = 1;
int flag = 1;
unsigned int expect = random();
unsigned int value = 2;
atomic_init(&g_status, init);
if (__predict_true(atomic_compare_exchange_strong_explicit(&g_status,
&expect,
value, memory_order_acquire,
memory_order_relaxed))) {
flag = 0;
}
printf("Done flag:%d \n", flag );
return 1;
}
clang4.0.rar
Description: clang4.0.rar
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Valgrind-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/valgrind-users
