summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMingli Yu <Mingli.Yu@windriver.com>2019-04-16 16:05:01 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-04-17 16:59:30 +0100
commit48dbb1bd980f7ed17a612fa7c1be298f14955c3f (patch)
tree79452d102dabc1de6549bba63b1bc08cde576c25
parent240e6b8819aab3bf74cdde92934be337e766aa75 (diff)
downloadopenembedded-core-48dbb1bd980f7ed17a612fa7c1be298f14955c3f.tar.gz
elfutils: fix build failure with musl
Fix below build failure with musl when ptest enabled. | In file included from ../../elfutils-0.176/tests/dwfl-proc-attach.c:33: | ../../elfutils-0.176/lib/system.h:63:35: error: called object 'err' is not a function or function pointer | #define error(status, errno, ...) err(status, __VA_ARGS__) | ^~~ | ../../elfutils-0.176/tests/dwfl-proc-attach.c:92:5: note: in expansion of macro 'error' | error (-1, 0, "dwfl_linux_proc_attach pid %d: %s", pid, | ^~~~~ | ../../elfutils-0.176/tests/dwfl-proc-attach.c:79:7: note: declared here | int err; | ^~~ The root cause is because the conflicts between vairable and function name, so change the variable name to workaround it. Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.176.bb4
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-fix-err-variable-and-function-conflicts.patch62
2 files changed, 65 insertions, 1 deletions
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.176.bb b/meta/recipes-devtools/elfutils/elfutils_0.176.bb
index 031c00fb28..fb2868723a 100644
--- a/meta/recipes-devtools/elfutils/elfutils_0.176.bb
+++ b/meta/recipes-devtools/elfutils/elfutils_0.176.bb
@@ -32,7 +32,9 @@ SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
file://run-ptest \
file://serial-tests.patch \
"
-SRC_URI_append_libc-musl = " file://0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch"
+SRC_URI_append_libc-musl = " file://0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch \
+ file://0001-fix-err-variable-and-function-conflicts.patch \
+"
SRC_URI[md5sum] = "077e4f49320cad82bf17a997068b1db9"
SRC_URI[sha256sum] = "eb5747c371b0af0f71e86215a5ebb88728533c3a104a43d4231963f308cd1023"
diff --git a/meta/recipes-devtools/elfutils/files/0001-fix-err-variable-and-function-conflicts.patch b/meta/recipes-devtools/elfutils/files/0001-fix-err-variable-and-function-conflicts.patch
new file mode 100644
index 0000000000..4cf54008b7
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0001-fix-err-variable-and-function-conflicts.patch
@@ -0,0 +1,62 @@
+From 2c50fe7068bd6911958c6d851aef88179e73bb21 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Tue, 16 Apr 2019 15:30:38 +0800
+Subject: [PATCH] fix err variable and function conflicts
+
+There comes below build failure with musl when
+ptest enabled.
+| In file included from ../../elfutils-0.176/tests/dwfl-proc-attach.c:33:
+| ../../elfutils-0.176/lib/system.h:63:35: error: called object 'err' is not a function or function pointer
+| #define error(status, errno, ...) err(status, __VA_ARGS__)
+| ^~~
+| ../../elfutils-0.176/tests/dwfl-proc-attach.c:92:5: note: in expansion of macro 'error'
+| error (-1, 0, "dwfl_linux_proc_attach pid %d: %s", pid,
+| ^~~~~
+| ../../elfutils-0.176/tests/dwfl-proc-attach.c:79:7: note: declared here
+| int err;
+| ^~~
+
+It is because there is no error.h in musl and
+the patch 0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch
+has updated to use err.h to replace error.h
+and also added macro definiton as below when
+use musl.
+ #define error(status, errno, ...) err(status, __VA_ARGS__)
+
+And in err.h, there is below logic:
+_Noreturn void err(int, const char *, ...);
+
+But when ptest enabled, there comes below error
+as there is both variable and function defined
+to be err in tests/dwfl-proc-attach.c.
+So change the err variable's name to workaround
+the build failure with musl.
+
+Upstream-Status: Inappropriate [workaround in musl]
+
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ tests/dwfl-proc-attach.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tests/dwfl-proc-attach.c b/tests/dwfl-proc-attach.c
+index 102ba18..ad4208e 100644
+--- a/tests/dwfl-proc-attach.c
++++ b/tests/dwfl-proc-attach.c
+@@ -76,10 +76,10 @@ main (int argc __attribute__ ((unused)),
+ char **argv __attribute__ ((unused)))
+ {
+ /* Create two extra threads to iterate through. */
+- int err;
+- if ((err = pthread_create (&thread1, NULL, sleeper, NULL)) != 0)
++ int err1;
++ if ((err1 = pthread_create (&thread1, NULL, sleeper, NULL)) != 0)
+ error (-1, err, "Couldn't create thread1");
+- if ((err = pthread_create (&thread2, NULL, sleeper, NULL)) != 0)
++ if ((err1 = pthread_create (&thread2, NULL, sleeper, NULL)) != 0)
+ error (-1, err, "Couldn't create thread2");
+
+ Dwfl *dwfl = dwfl_begin (&proc_callbacks);
+--
+2.7.4
+