diff mbox

[v2,1/1] package/canfestival: fix musl compilation

Message ID 1439848293-26836-1-git-send-email-brendanheading@gmail.com
State Changes Requested
Headers show

Commit Message

Brendan Heading Aug. 17, 2015, 9:51 p.m. UTC
Fixes: http://autobuild.buildroot.net/results/75a/75aa6e7e4f3dcd74e4b65496060328ec7bd0e747/

ANSI signal handlers take an int parameter, not sigval_t.

Upstream-status: pending

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

Signed-off-by: Brendan Heading <brendanheading@gmail.com>
---
 .../canfestival/0003-fix-musl-compilation.patch    | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 package/canfestival/0003-fix-musl-compilation.patch

Comments

Jörg Krause Aug. 18, 2015, 5:37 a.m. UTC | #1
On Mo, 2015-08-17 at 22:51 +0100, Brendan Heading wrote:
> 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
>
Baruch Siach Aug. 18, 2015, 5:53 a.m. UTC | #2
Hi Brendan,

On Mon, Aug 17, 2015 at 10:51:33PM +0100, Brendan Heading wrote:
> Fixes: http://autobuild.buildroot.net/results/75a/75aa6e7e4f3dcd74e4b65496060328ec7bd0e747/
> 
> 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 ...

> v1 -> v2 - added missing link to autobuild failure in commit comment
> ---
> 
> Signed-off-by: Brendan Heading <brendanheading@gmail.com>
> ---

... here.

>  .../canfestival/0003-fix-musl-compilation.patch    | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
>  create mode 100644 package/canfestival/0003-fix-musl-compilation.patch
> 
> diff --git a/package/canfestival/0003-fix-musl-compilation.patch b/package/canfestival/0003-fix-musl-compilation.patch
> new file mode 100644
> index 0000000..dfe16a7
> --- /dev/null
> +++ b/package/canfestival/0003-fix-musl-compilation.patch
> @@ -0,0 +1,22 @@
> +# HG changeset patch
> +# User Brendan Heading <brendanheading@gmail.com>
> +# 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.

> +
> +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
Brendan Heading Aug. 18, 2015, 2:28 p.m. UTC | #3
On 18 August 2015 at 06:37, Jörg Krause <joerg.krause@embedded.rocks> wrote:
> On Mo, 2015-08-17 at 22:51 +0100, Brendan Heading wrote:
>> 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
diff mbox

Patch

diff --git a/package/canfestival/0003-fix-musl-compilation.patch b/package/canfestival/0003-fix-musl-compilation.patch
new file mode 100644
index 0000000..dfe16a7
--- /dev/null
+++ b/package/canfestival/0003-fix-musl-compilation.patch
@@ -0,0 +1,22 @@ 
+# HG changeset patch
+# User Brendan Heading <brendanheading@gmail.com>
+# 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()");