Skip to contentSkip to conversation

package/canfestival: fix musl compilation

PATCH New Brendan Heading 3 participants 4 messages Aug 17, 2015 – Aug 18, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 package/canfestival: fix musl compilation

ANSI signal handlers take an int parameter, not sigval_t.

Upstream-status: pending

---
v1 -> v2 - added missing link to autobuild failure in commit comment
---

---
 .../canfestival/0003-fix-musl-compilation.patch    | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 package/canfestival/0003-fix-musl-compilation.patch
package/canfestival/0003-fix-musl-compilation.patch new file +22 -0
new file mode 100644
index 0000000..dfe16a7
@@ -0,0 +1,22 @@
+# HG changeset patch
+# User Brendan Heading <[email protected]>
+# Date 1439845818 -3600
+#      Mon Aug 17 22:10:18 2015 +0100
+# Node ID 7d62beec4f813074ba250231762f4b84395cc354
+# Parent  8bfe0ac00cdb4d473664fcbf1228a0f6a42eee15
+Fix MUSL compilation issue
+
+signal handler parameter fixed to be int instead of sigval_t.
+
+diff -r 8bfe0ac00cdb -r 7d62beec4f81 drivers/timers_unix/timers_unix.c
+--- a/drivers/timers_unix/timers_unix.c	Mon Aug 03 18:01:58 2015 +0200
++++ b/drivers/timers_unix/timers_unix.c	Mon Aug 17 22:10:18 2015 +0100
+@@ -33,7 +33,7 @@
+ 	}
+ }
+ 
+-void timer_notify(sigval_t val)
++void timer_notify(int val)
+ {
+ 	if(gettimeofday(&last_sig,NULL)) {
+ 		perror("gettimeofday()");
Signature · 1 line
2.4.3
#1 lore raw

PATCH v2 1/1 package/canfestival: fix musl compilation

Quoted 4 lines · Brendan Heading

Fixes: http://autobuild.buildroot.net/results/75a/75aa6e7e4f3dcd74e4b
65496060328ec7bd0e747/

ANSI signal handlers take an int parameter, not sigval_t.

This is true for uClibc, but for other libc timer_notify is asigned to the sigev_notify_function function which has an union sigval as argument [1].

Snipped from the source code of timers_unix.c:

#if defined(__UCLIBC__)
	[..]
	signal(SIGALRM, timer_notify);
#else
	[..]
	sigev.sigev_notify_function = timer_notify;
	[..]

#endif
}

[1] http://man7.org/linux/man-pages/man7/sigevent.7.html

Best regards
J?rg Krause

Quoted 1 line
#2 lore raw

PATCH v2 1/1 package/canfestival: fix musl compilation

Quoted 9 lines · J?rg Krause
Quoted 4 lines · Brendan Heading

Fixes: http://autobuild.buildroot.net/results/75a/75aa6e7e4f3dcd74e4b
65496060328ec7bd0e747/

ANSI signal handlers take an int parameter, not sigval_t.

This is true for uClibc, but for other libc timer_notify is asigned to the sigev_notify_function function which has an union sigval as argument [1].

Jorg,

Well spotted. I failed to check the non-uclibc case.

The code is a bit strange; I'm not sure why they've decided to do it differently in uclibc. I would have thought timer_create would behave in the same way.

Do you think it would suffice to add another #ifdef __UCLIBC__ on the signal handler, or should I dive a bit deeper ?

Brendan

#3 lore raw

PATCH v2 1/1 package/canfestival: fix musl compilation

In reply to Brendan Heading

Hi Brendan,

Quoted 7 lines · Brendan Heading

ANSI signal handlers take an int parameter, not sigval_t.

Upstream-status: pending

---

This cuts off your sign-off below. Patch version info should go ...

Quoted 5 lines

v1 -> v2 - added missing link to autobuild failure in commit comment
---

---

... here.

Quoted 10 lines
 .../canfestival/0003-fix-musl-compilation.patch    | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 package/canfestival/0003-fix-musl-compilation.patch
package/canfestival/0003-fix-musl-compilation.patch new file +0 -0
new file mode 100644
index 0000000..dfe16a7

package/canfestival/0003-fix-musl-compilation.patch line 9

Quoted 9 lines
package/canfestival/0003-fix-musl-compilation.patch new file +9 -0
@@ -0,0 +1,22 @@
+# HG changeset patch
+# User Brendan Heading <[email protected]>
+# Date 1439845818 -3600
+#      Mon Aug 17 22:10:18 2015 +0100
+# Node ID 7d62beec4f813074ba250231762f4b84395cc354
+# Parent  8bfe0ac00cdb4d473664fcbf1228a0f6a42eee15
+Fix MUSL compilation issue
+
+signal handler parameter fixed to be int instead of sigval_t.

Missing sign-off.

package/canfestival/0003-fix-musl-compilation.patch line 22

Quoted 13 lines
package/canfestival/0003-fix-musl-compilation.patch new file +13 -0
+
+diff -r 8bfe0ac00cdb -r 7d62beec4f81 drivers/timers_unix/timers_unix.c
+--- a/drivers/timers_unix/timers_unix.c	Mon Aug 03 18:01:58 2015 +0200
++++ b/drivers/timers_unix/timers_unix.c	Mon Aug 17 22:10:18 2015 +0100
+@@ -33,7 +33,7 @@
+ 	}
+ }
+ 
+-void timer_notify(sigval_t val)
++void timer_notify(int val)
+ {
+ 	if(gettimeofday(&last_sig,NULL)) {
+ 		perror("gettimeofday()");

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -