ref: f8e7a2c5cdc3379151816bce3cd70a4380a71293
parent: 8e849fe1e282a99e409b2956a9b8bc5599b8ac4f
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Thu May 18 18:12:11 EDT 2023
libmach: fix reading .7 objects containing instructions with an extra register (from3)
--- a/sys/src/libmach/7obj.c
+++ b/sys/src/libmach/7obj.c
@@ -70,8 +70,11 @@
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;
--
⑨