mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
Bug 338703 helgrind on arm-linux gets false positives in dynamic loader.
There are a couple of issues with helgrind on arm-linux with glibc: - Thread creation stack traces cannot unwind through clone (cfi ends right after syscall) - ld.so has a special "hard float" name that isn't recognized as special (ld-linux-armhf.so.3) - Races are found when manipulating GOT sections. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14407
This commit is contained in:
parent
3f47256593
commit
a93b787140
1
NEWS
1
NEWS
@ -247,6 +247,7 @@ where XXXXXX is the bug number as listed below.
|
||||
338499 --sim-hints parsing broken due to wrong order in tokens
|
||||
338615 suppress glibc 2.20 optimized strcmp implementation for ARMv7
|
||||
338681 Unable to unwind through clone thread created on i386-linux
|
||||
338703 helgrind on arm-linux gets false positives in dynamic loader
|
||||
n-i-bz Fix KVM_CREATE_IRQCHIP ioctl handling
|
||||
n-i-bz s390x: Fix memory corruption for multithreaded applications
|
||||
n-i-bz vex arm->IR: allow PC as basereg in some LDRD cases
|
||||
|
||||
@ -475,6 +475,8 @@ void HG_(record_error_Race) ( Thread* thr,
|
||||
if (sect == Vg_SectGOTPLT) return;
|
||||
/* SectPLT is required on ppc32/64-linux */
|
||||
if (sect == Vg_SectPLT) return;
|
||||
/* SectGOT is required on arm-linux */
|
||||
if (sect == Vg_SectGOT) return;
|
||||
}
|
||||
# endif
|
||||
|
||||
|
||||
@ -1579,7 +1579,7 @@ void evh__pre_thread_ll_create ( ThreadId parent, ThreadId child )
|
||||
{ Word first_ip_delta = 0;
|
||||
# if defined(VGP_amd64_linux) || defined(VGP_x86_linux)
|
||||
first_ip_delta = -3;
|
||||
# elif defined(VGP_arm64_linux)
|
||||
# elif defined(VGP_arm64_linux) || defined(VGP_arm_linux)
|
||||
first_ip_delta = -1;
|
||||
# endif
|
||||
thr_c->created_at = VG_(record_ExeContext)(parent, first_ip_delta);
|
||||
@ -4480,6 +4480,7 @@ static Bool is_in_dynamic_linker_shared_object( Addr64 ga )
|
||||
if (VG_STREQ(soname, VG_U_LD64_SO_2)) return True;
|
||||
if (VG_STREQ(soname, VG_U_LD_SO_1)) return True;
|
||||
if (VG_STREQ(soname, VG_U_LD_LINUX_AARCH64_SO_1)) return True;
|
||||
if (VG_STREQ(soname, VG_U_LD_LINUX_ARMHF_SO_3)) return True;
|
||||
# elif defined(VGO_darwin)
|
||||
if (VG_STREQ(soname, VG_U_DYLD)) return True;
|
||||
# else
|
||||
|
||||
@ -302,6 +302,7 @@
|
||||
#define VG_U_LD_SO_1 "ld.so.1"
|
||||
|
||||
#define VG_U_LD_LINUX_AARCH64_SO_1 "ld-linux-aarch64.so.1"
|
||||
#define VG_U_LD_LINUX_ARMHF_SO_3 "ld-linux-armhf.so.3"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user