307aea32b4
Resolves: #1963901
33 lines
1.0 KiB
Diff
33 lines
1.0 KiB
Diff
commit 0ef0e6de7fdfa18328b09ba2afb4f0112d4bdab4
|
|
Author: Nicholas Piggin <npiggin@gmail.com>
|
|
Date: Thu May 20 11:00:36 2021 -0300
|
|
|
|
powerpc: Fix handling of scv return error codes [BZ #27892]
|
|
|
|
When using scv for templated ASM syscalls, current code interprets any
|
|
negative return value as error, but the only valid error codes are in
|
|
the range -4095..-1 according to the ABI.
|
|
|
|
This commit also fixes 'signal.gen.test' strace test, where the issue
|
|
was first identified.
|
|
|
|
Reviewed-by: Matheus Castanho <msc@linux.ibm.com>
|
|
(cherry picked from commit 7de36744ee1325f35d3fe0ca079dd33c40b12267)
|
|
|
|
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
|
|
index c57bb1c05d02f663..1ea4c3b917295168 100644
|
|
--- a/sysdeps/powerpc/powerpc64/sysdep.h
|
|
+++ b/sysdeps/powerpc/powerpc64/sysdep.h
|
|
@@ -398,8 +398,9 @@ LT_LABELSUFFIX(name,_name_end): ; \
|
|
#endif
|
|
|
|
#define RET_SCV \
|
|
- cmpdi r3,0; \
|
|
- bgelr+; \
|
|
+ li r9,-4095; \
|
|
+ cmpld r3,r9; \
|
|
+ bltlr+; \
|
|
neg r3,r3;
|
|
|
|
#define RET_SC \
|