Patchwork librt: fix mq_timed{send,receive} return instructions

login
register
mail settings
Submitter Baruch Siach
Date Nov. 3, 2013, 4:20 p.m.
Message ID <4dc3551aebbe423fcd068fb49417194317b21ccb.1383495584.git.baruch@tkos.co.il>
Download mbox | patch
Permalink /patch/288075/
State Superseded
Headers show

Comments

Baruch Siach - Nov. 3, 2013, 4:20 p.m.
Not all architectures use 'ret' as function return instruction. For example,
xtensa usually uses 'retw'. Use the ret_ERRVAL arch dependant macro instead.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 librt/mq_timedreceive.S | 2 +-
 librt/mq_timedsend.S    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
aldot - Nov. 6, 2013, 9:35 p.m.
On 3 November 2013 17:20, Baruch Siach <baruch@tkos.co.il> wrote:
> Not all architectures use 'ret' as function return instruction. For example,
> xtensa usually uses 'retw'. Use the ret_ERRVAL arch dependant macro instead.

yea. Did you grep for other occurances?
thanks,
>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
>  librt/mq_timedreceive.S | 2 +-
>  librt/mq_timedsend.S    | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/librt/mq_timedreceive.S b/librt/mq_timedreceive.S
> index 43a5fda..00fecac 100644
> --- a/librt/mq_timedreceive.S
> +++ b/librt/mq_timedreceive.S
> @@ -3,6 +3,6 @@
>  #error Missing definition of NR_timedreceive needed for cancellation.
>  #endif
>  PSEUDO(mq_timedreceive, mq_timedreceive, 5)
> -ret
> +ret_ERRVAL
>  PSEUDO_END(mq_timedreceive)
>  librt_hidden_def(mq_timedreceive)
> diff --git a/librt/mq_timedsend.S b/librt/mq_timedsend.S
> index 13d91da..ee8d483 100644
> --- a/librt/mq_timedsend.S
> +++ b/librt/mq_timedsend.S
> @@ -3,6 +3,6 @@
>  #error Missing definition of NR_timedsend needed for cancellation.
>  #endif
>  PSEUDO(mq_timedsend, mq_timedsend, 5)
> -ret
> +ret_ERRVAL
>  PSEUDO_END(mq_timedsend)
>  librt_hidden_def(mq_timedsend)
> --
> 1.8.4.rc3
>
> _______________________________________________
> uClibc mailing list
> uClibc@uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
aldot - Nov. 6, 2013, 10:03 p.m.
On 6 November 2013 22:35, Bernhard Reutner-Fischer
<rep.dot.nop@gmail.com> wrote:
> On 3 November 2013 17:20, Baruch Siach <baruch@tkos.co.il> wrote:
>> Not all architectures use 'ret' as function return instruction. For example,
>> xtensa usually uses 'retw'. Use the ret_ERRVAL arch dependant macro instead.
>
> yea. Did you grep for other occurances?

specifically, you'd just broke these arches, if i'm not mistaken:

git grep -L ret_ERRVAL libc/sysdeps/linux/*/sysdep.h | while read l;do
basename $(dirname $l);done | grep -v common
bfin
cris
metag
powerpc
sparc

Please resend.
thanks,
Baruch Siach - Nov. 7, 2013, 5:50 a.m.
Hi Bernhard,

On Wed, Nov 06, 2013 at 11:03:17PM +0100, Bernhard Reutner-Fischer wrote:
> On 6 November 2013 22:35, Bernhard Reutner-Fischer
> <rep.dot.nop@gmail.com> wrote:
> > On 3 November 2013 17:20, Baruch Siach <baruch@tkos.co.il> wrote:
> >> Not all architectures use 'ret' as function return instruction. For example,
> >> xtensa usually uses 'retw'. Use the ret_ERRVAL arch dependant macro instead.
> >
> > yea. Did you grep for other occurances?
> 
> specifically, you'd just broke these arches, if i'm not mistaken:
> 
> git grep -L ret_ERRVAL libc/sysdeps/linux/*/sysdep.h | while read l;do
> basename $(dirname $l);done | grep -v common
> bfin
> cris
> metag
> powerpc

powerpc variants are under their own subdirectory:

libc/sysdeps/linux/powerpc/powerpc32/sysdep.h:#define ret_ERRVAL PSEUDO_RET_ERRVAL
libc/sysdeps/linux/powerpc/powerpc64/sysdep.h:#define ret_ERRVAL PSEUDO_RET_ERRVAL

> sparc
> 
> Please resend.
> thanks,

I'll add

#define ret_ERRVAL ret

to sysdep.h of other architectures, and resubmit,

Thanks,
baruch

Patch

diff --git a/librt/mq_timedreceive.S b/librt/mq_timedreceive.S
index 43a5fda..00fecac 100644
--- a/librt/mq_timedreceive.S
+++ b/librt/mq_timedreceive.S
@@ -3,6 +3,6 @@ 
 #error Missing definition of NR_timedreceive needed for cancellation.
 #endif
 PSEUDO(mq_timedreceive, mq_timedreceive, 5)
-ret
+ret_ERRVAL
 PSEUDO_END(mq_timedreceive)
 librt_hidden_def(mq_timedreceive)
diff --git a/librt/mq_timedsend.S b/librt/mq_timedsend.S
index 13d91da..ee8d483 100644
--- a/librt/mq_timedsend.S
+++ b/librt/mq_timedsend.S
@@ -3,6 +3,6 @@ 
 #error Missing definition of NR_timedsend needed for cancellation.
 #endif
 PSEUDO(mq_timedsend, mq_timedsend, 5)
-ret
+ret_ERRVAL
 PSEUDO_END(mq_timedsend)
 librt_hidden_def(mq_timedsend)