HI
Why I call the strcmp, but function stack show that the strcat is
called not the strcmp, but the file is belong to the function strcmp
Can you show the how to replace the strcmp with
"STRCMP(VG_Z_LIBC_SONAME, strcmp)", and then I can follow the code to
find out why.
I can find the code you set the LD_PRELOAD , but symbol name is
not match, I do not know how you replace the strcmp with
STRCMP(VG_Z_LIBC_SONAME, strcmp).
Can you help to point out the function do the job replace the
strcmp with STRCMP(VG_Z_LIBC_SONAME, strcmp)",
Valgrind 3.12.
CPU:arm
The source as below:
#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 cmp:%d \n", flag, strcmp("aaaa", "cccc") );
---------this line is number 27
return 1;
}
Valgrind show me output :
==30141== Invalid write of size 4
==30141== at 0x4C27CAE: strcat (strcmp.c:3)
==30141== by 0x108871: main (testClang.c:27)
==30141== Address 0xfeb445bc is on thread 1's stack
==30141== 12 bytes below stack pointer
BR
Owen
------------------------------------------------------------------------------
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