mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-12 05:11:59 +00:00
libeigen: backport fix for -Werror=class-memaccess issues when NEON is enabled
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
+72
@@ -0,0 +1,72 @@
|
|||||||
|
From cb507309937958c632147de87e8f1231d6698847 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Antonio Sanchez <cantonios@google.com>
|
||||||
|
Date: Tue, 14 Sep 2021 10:57:22 -0700
|
||||||
|
Subject: [PATCH] Default eigen_packet_wrapper constructor.
|
||||||
|
|
||||||
|
This makes it trivial, allowing use of `memcpy`.
|
||||||
|
|
||||||
|
Fixes #2326
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://gitlab.com/libeigen/eigen/-/merge_requests/645/diffs?commit_id=cb507309937958c632147de87e8f1231d6698847]
|
||||||
|
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||||
|
|
||||||
|
* fixes build failures for arm targets with NEON enabled (e.g. -mfpu=neon-vfpv4)
|
||||||
|
for recipes with -Werror enabled and gcc-11, e.g. fuse-core, robot-localization,
|
||||||
|
prbt-ikfast-manipulator-plugin, rm-chassis-controllers in meta-ros1-noetic:
|
||||||
|
|
||||||
|
In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:214,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34:
|
||||||
|
/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h: In function 'Packet Eigen::internal::pload(const typename Eigen::internal::unpacket_traits<T>::type*) [with Packet = Eigen::internal::eigen_packet_wrapper<int, 2>; typename Eigen::internal::unpacket_traits<T>::type = signed char]':
|
||||||
|
/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:1671:9: error: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} from an array of 'const int8_t' {aka 'const signed char'} [-Werror=class-memaccess]
|
||||||
|
1671 | memcpy(&res, from, sizeof(Packet4c));
|
||||||
|
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:172,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34:
|
||||||
|
/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:159:8: note: 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} declared here
|
||||||
|
159 | struct eigen_packet_wrapper
|
||||||
|
| ^~~~~~~~~~~~~~~~~~~~
|
||||||
|
In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:214,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34:
|
||||||
|
/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h: In function 'Packet Eigen::internal::ploadu(const typename Eigen::internal::unpacket_traits<T>::type*) [with Packet = Eigen::internal::eigen_packet_wrapper<int, 2>; typename Eigen::internal::unpacket_traits<T>::type = signed char]':
|
||||||
|
/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:1716:9: error: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} from an array of 'const int8_t' {aka 'const signed char'} [-Werror=class-memaccess]
|
||||||
|
1716 | memcpy(&res, from, sizeof(Packet4c));
|
||||||
|
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:172,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37,
|
||||||
|
from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34:
|
||||||
|
/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:159:8: note: 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} declared here
|
||||||
|
159 | struct eigen_packet_wrapper
|
||||||
|
| ^~~~~~~~~~~~~~~~~~~~
|
||||||
|
cc1plus: all warnings being treated as errors
|
||||||
|
|
||||||
|
---
|
||||||
|
Eigen/src/Core/GenericPacketMath.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h
|
||||||
|
index 8f8f64f15..72234288e 100644
|
||||||
|
--- a/Eigen/src/Core/GenericPacketMath.h
|
||||||
|
+++ b/Eigen/src/Core/GenericPacketMath.h
|
||||||
|
@@ -162,7 +162,7 @@ struct eigen_packet_wrapper
|
||||||
|
{
|
||||||
|
EIGEN_ALWAYS_INLINE operator T&() { return m_val; }
|
||||||
|
EIGEN_ALWAYS_INLINE operator const T&() const { return m_val; }
|
||||||
|
- EIGEN_ALWAYS_INLINE eigen_packet_wrapper() {}
|
||||||
|
+ EIGEN_ALWAYS_INLINE eigen_packet_wrapper() = default;
|
||||||
|
EIGEN_ALWAYS_INLINE eigen_packet_wrapper(const T &v) : m_val(v) {}
|
||||||
|
EIGEN_ALWAYS_INLINE eigen_packet_wrapper& operator=(const T &v) {
|
||||||
|
m_val = v;
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
||||||
@@ -9,7 +9,9 @@ LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad \
|
|||||||
file://COPYING.MINPACK;md5=71d91b0f75ce79a75d3108a72bef8116 \
|
file://COPYING.MINPACK;md5=71d91b0f75ce79a75d3108a72bef8116 \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;nobranch=1"
|
SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;branch=3.4 \
|
||||||
|
file://0001-Default-eigen_packet_wrapper-constructor.patch \
|
||||||
|
"
|
||||||
|
|
||||||
SRCREV = "3147391d946bb4b6c68edd901f2add6ac1f31f8c"
|
SRCREV = "3147391d946bb4b6c68edd901f2add6ac1f31f8c"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user