Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Sep 2021 23:27:47 GMT
From:      Olivier Houchard <cognet@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: f4b7018af11a - main - truss: Decode correctly 64bits arguments on 32bits arm.
Message-ID:  <202109222327.18MNRlAi040305@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by cognet:

URL: https://cgit.FreeBSD.org/src/commit/?id=f4b7018af11a1ab3edfcce8bc0bfa521364cdeb0

commit f4b7018af11a1ab3edfcce8bc0bfa521364cdeb0
Author:     Olivier Houchard <cognet@FreeBSD.org>
AuthorDate: 2021-09-22 23:23:07 +0000
Commit:     Olivier Houchard <cognet@FreeBSD.org>
CommitDate: 2021-09-22 23:26:42 +0000

    truss: Decode correctly 64bits arguments on 32bits arm.
    
    Mostly revert ebbc3140ca0d7eee154f7a67ccdae7d3d88d13fd.
    We don't need to special-case anything for arm64, the check for the pointer
    size is already done for us, just keep the bits about having arm and arm64
    having to add padding for 32bits binaries.
    
    MFC after:      1 week
---
 usr.bin/truss/syscalls.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c
index 9cd53e71cc9b..128ae624cf5f 100644
--- a/usr.bin/truss/syscalls.c
+++ b/usr.bin/truss/syscalls.c
@@ -792,14 +792,11 @@ print_mask_arg32(bool (*decoder)(FILE *, uint32_t, uint32_t *), FILE *fp,
  * decoding arguments.
  */
 static void
-quad_fixup(struct procabi *abi, struct syscall_decode *sc)
+quad_fixup(struct syscall_decode *sc)
 {
 	int offset, prev;
 	u_int i;
 
-#ifndef __aarch64__
-	(void)abi;
-#endif
 	offset = 0;
 	prev = -1;
 	for (i = 0; i < sc->nargs; i++) {
@@ -820,13 +817,10 @@ quad_fixup(struct procabi *abi, struct syscall_decode *sc)
 			 * not aligned, the calling convention inserts
 			 * a 32-bit pad argument that should be skipped.
 			 */
-#ifdef __aarch64__
-			if (abi->pointer_size == sizeof(uint32_t))
-#endif
-				if (sc->args[i].offset % 2 == 1) {
-					sc->args[i].offset++;
-					offset++;
-				}
+			if (sc->args[i].offset % 2 == 1) {
+				sc->args[i].offset++;
+				offset++;
+			}
 #endif
 			offset++;
 		default:
@@ -860,7 +854,7 @@ add_syscall(struct procabi *abi, u_int number, struct syscall *sc)
 	 *  procabi instead.
 	 */
 	if (abi->pointer_size == 4)
-		quad_fixup(abi, &sc->decode);
+		quad_fixup(&sc->decode);
 
 	if (number < nitems(abi->syscalls)) {
 		assert(abi->syscalls[number] == NULL);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202109222327.18MNRlAi040305>