The xattr functions need to use a specific version of the symbols to avoid
calling into libattr.so, which on Tumbleweed causes failures[1].

However on arm64 systems the glibc version is different. This means that
searching for llistattr(GLIBC_2.3) fails to initially match the symbol in
libc.so, and instead if libattr.so is linked then the symbol in that library
is used.  This is simply a wrapper that is intended to call the symbol in
libc.so but instead calls the symbol in pseudo, so infinite loops.

Using the just-added architecture overrides, add the right versions for
arm64 systems so the correct symbols in libc.so are found.

[ YOCTO #14133 ]

[1] b94fa2fc81cde25865ee223ca437d07377229a53

Signed-off-by: Ross Burton <[email protected]>
---
 ports/linux/xattr/wrapfuncs.in | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/ports/linux/xattr/wrapfuncs.in b/ports/linux/xattr/wrapfuncs.in
index b8e007d..09eba23 100644
--- a/ports/linux/xattr/wrapfuncs.in
+++ b/ports/linux/xattr/wrapfuncs.in
@@ -1,12 +1,12 @@
-ssize_t getxattr(const char *path, const char *name, void *value, size_t 
size); /* flags=0, version="GLIBC_2.3" */ 
-ssize_t lgetxattr(const char *path, const char *name, void *value, size_t 
size); /* flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3" */
-ssize_t fgetxattr(int filedes, const char *name, void *value, size_t size); /* 
version="GLIBC_2.3" */
-int setxattr(const char *path, const char *name, const void *value, size_t 
size, int xflags); /* flags=0, version="GLIBC_2.3" */
-int lsetxattr(const char *path, const char *name, const void *value, size_t 
size, int xflags); /* flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3" */
-int fsetxattr(int filedes, const char *name, const void *value, size_t size, 
int xflags); /* version="GLIBC_2.3" */
-ssize_t listxattr(const char *path, char *list, size_t size); /* flags=0, 
version="GLIBC_2.3" */
-ssize_t llistxattr(const char *path, char *list, size_t size); /* 
flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3" */
-ssize_t flistxattr(int filedes, char *list, size_t size); /* 
version="GLIBC_2.3" */
-int removexattr(const char *path, const char *name); /* flags=0, 
version="GLIBC_2.3" */
-int lremovexattr(const char *path, const char *name); /* 
flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3" */
-int fremovexattr(int filedes, const char *name); /* version="GLIBC_2.3" */
+ssize_t getxattr(const char *path, const char *name, void *value, size_t 
size); /* flags=0, version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+ssize_t lgetxattr(const char *path, const char *name, void *value, size_t 
size); /* flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3", 
version-aarch64="GLIBC_2.17" */
+ssize_t fgetxattr(int filedes, const char *name, void *value, size_t size); /* 
version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+int setxattr(const char *path, const char *name, const void *value, size_t 
size, int xflags); /* flags=0, version="GLIBC_2.3", 
version-aarch64="GLIBC_2.17" */
+int lsetxattr(const char *path, const char *name, const void *value, size_t 
size, int xflags); /* flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3", 
version-aarch64="GLIBC_2.17" */
+int fsetxattr(int filedes, const char *name, const void *value, size_t size, 
int xflags); /* version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+ssize_t listxattr(const char *path, char *list, size_t size); /* flags=0, 
version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+ssize_t llistxattr(const char *path, char *list, size_t size); /* 
flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+ssize_t flistxattr(int filedes, char *list, size_t size); /* 
version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+int removexattr(const char *path, const char *name); /* flags=0, 
version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+int lremovexattr(const char *path, const char *name); /* 
flags=AT_SYMLINK_NOFOLLOW, version="GLIBC_2.3", version-aarch64="GLIBC_2.17" */
+int fremovexattr(int filedes, const char *name); /* version="GLIBC_2.3", 
version-aarch64="GLIBC_2.17" */
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#146547): 
https://lists.openembedded.org/g/openembedded-core/message/146547
Mute This Topic: https://lists.openembedded.org/mt/79523832/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to