summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2016-02-24 22:01:45 +0000
committerjhb <jhb@FreeBSD.org>2016-02-24 22:01:45 +0000
commit266e77bc147fa578e8da09c0cc7e8b49f2acc829 (patch)
tree79d519b91bbc42b336816695b7072069068577f4 /usr.bin
parent972671f9200801a0e19573ee6693b6fc5c5833ce (diff)
downloadFreeBSD-src-266e77bc147fa578e8da09c0cc7e8b49f2acc829.zip
FreeBSD-src-266e77bc147fa578e8da09c0cc7e8b49f2acc829.tar.gz
MFC 295636,295637:
Fix issues with tracing Linux/i386 binaries. 295636: Sign extend the error value for failing Linux/i386 system calls. This restores the mapping of Linux errors to native FreeBSD errno values after the refactoring in r288424. 295637: Correct the ABI name for Linux/i386 binaries under FreeBSD/i386. This allows truss to work for these binaries again after r288424. Approved by: re (marius)
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/truss/amd64-linux32.c2
-rw-r--r--usr.bin/truss/i386-linux.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/usr.bin/truss/amd64-linux32.c b/usr.bin/truss/amd64-linux32.c
index 4f64af3..2825693 100644
--- a/usr.bin/truss/amd64-linux32.c
+++ b/usr.bin/truss/amd64-linux32.c
@@ -116,6 +116,8 @@ amd64_linux32_fetch_retval(struct trussinfo *trussinfo, long *retval,
retval[0] = regs.r_rax & 0xffffffff;
retval[1] = regs.r_rdx & 0xffffffff;
*errorp = !!(regs.r_rflags & PSL_C);
+ if (*errorp)
+ retval[0] = (int)retval[0];
if (*errorp) {
for (i = 0; i < nitems(bsd_to_linux_errno); i++) {
diff --git a/usr.bin/truss/i386-linux.c b/usr.bin/truss/i386-linux.c
index fa57af2..b14b210 100644
--- a/usr.bin/truss/i386-linux.c
+++ b/usr.bin/truss/i386-linux.c
@@ -130,7 +130,7 @@ i386_linux_fetch_retval(struct trussinfo *trussinfo, long *retval, int *errorp)
}
static struct procabi i386_linux = {
- "Linux ELF32",
+ "Linux ELF",
linux_syscallnames,
nitems(linux_syscallnames),
i386_linux_fetch_args,
OpenPOWER on IntegriCloud