summaryrefslogtreecommitdiff
path: root/sys/src/libmach
diff options
context:
space:
mode:
authorSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-18 22:12:11 +0000
committerSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-18 22:12:11 +0000
commit69e37c0fdaafb678d12df9ccfabbc47104e57d73 (patch)
tree192f0580540a72faabccb3847378bbaf4bf1b0fe /sys/src/libmach
parent93837692bbaab28e01ea1178d8867047bbcad11d (diff)
libmach: fix reading .7 objects containing instructions with an extra register (from3)
Diffstat (limited to 'sys/src/libmach')
-rw-r--r--sys/src/libmach/7obj.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/src/libmach/7obj.c b/sys/src/libmach/7obj.c
index 47b219a86..1a25c527e 100644
--- a/sys/src/libmach/7obj.c
+++ b/sys/src/libmach/7obj.c
@@ -70,8 +70,11 @@ _read7(Biobuf *bp, Prog *p)
p->kind = aText;
else if(as == AGLOBL)
p->kind = aData;
- skip(bp, 5); /* reg(1) lineno(4) */
+ n = (uchar)Bgetc(bp); /* reg and flag (1) */
+ skip(bp, 4); /* lineno(4) */
a = addr(bp);
+ if(n & 0x40)
+ addr(bp); /* from3 */
addr(bp);
if(a.type != D_OREG || a.name != D_STATIC && a.name != D_EXTERN)
p->kind = aNone;