/memcheck/tests/x86/Makefile.in
/memcheck/tests/x86/bug133694
/memcheck/tests/x86/bug152022
+/memcheck/tests/x86/bug487993
/memcheck/tests/x86/espindola2
/memcheck/tests/x86/fpeflags
/memcheck/tests/x86/fprem
'guest_IP_AT_SYSCALL'
486293 memccpy false positives
486569 linux inotify_init syscall wrapper missing POST entry in syscall_table
+487993 Alignment error when using Eigen with Valgrind and -m32
488026 Use of `sizeof` instead of `strlen
To see details of a given bug, visit
// This is both the minimum payload size of a malloc'd block, and its
// minimum alignment. Must be a power of 2 greater than 4, and should be
// greater than 8.
-#if defined(VGP_x86_linux) || \
- defined(VGP_arm_linux) || \
+#if defined(VGP_arm_linux) || \
defined(VGP_mips32_linux) || \
(defined(VGP_mips64_linux) && defined(VGABI_N32)) || \
defined(VGP_nanomips_linux) || \
// for any AltiVec- or SSE-related type. This matches the Darwin libc.
// Also, use 16 bytes for any PPC variant, since 16 is required to make
// Altiveccery work right.
-#elif defined(VGP_amd64_linux) || \
+#elif defined(VGP_x86_linux) || \
+ defined(VGP_amd64_linux) || \
defined(VGP_ppc32_linux) || \
defined(VGP_ppc64be_linux) || \
defined(VGP_ppc64le_linux) || \
EXTRA_DIST = \
bug152022.vgtest bug152022.stderr.exp bug152022.stdout.exp \
+ bug487993.vgtest bug487993.stderr.exp \
espindola2.vgtest espindola2.stderr.exp \
fpeflags.stderr.exp fpeflags.vgtest \
fxsave.vgtest fxsave.stdout.exp fxsave.stderr.exp \
AM_CXXFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE)
AM_CCASFLAGS += @FLAG_M32@
+if HAVE_CXX17
+check_PROGRAMS += bug487993
+bug487993_SOURCES = bug487993.cpp
+bug487993_CXXFLAGS = ${AM_CXXFLAGS} -std=c++17
+endif
# fpeflags must use these flags -- bug only occurred with them.
fpeflags_CFLAGS = $(AM_CFLAGS) -march=i686
--- /dev/null
+// the original issue ocurred with Eigen3
+// this is roughly the same using a simple struct
+//
+#include <cassert>
+#include <memory>
+//#include <iostream>
+
+struct Test
+{
+ alignas(16) double array[16];
+};
+
+int main()
+{
+ std::unique_ptr<Test> test = std::make_unique<Test>();
+ //std::cerr << "test " << test.get() << ' ' << (reinterpret_cast<size_t>(test.get()) & 0xfUL) << '\n';
+ assert((reinterpret_cast<size_t>(test.get()) & 0xfUL) == 0);
+}
+
+
--- /dev/null
+prereq: test -e bug487993
+prog: bug487993
+vgopts: -q