From 8ab9c6d38864362d3683883f22d7539de742cf56 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 24 Mar 2015 22:54:26 +0100 Subject: vc: fix coffsect.lnno overflow into nreloc the coffsect.lnno field is 16 bit and can overflow into the nreloc field confusing arc firmware on load. just mask it to prevent overflow. --- sys/src/cmd/vl/asm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/src/cmd/vl/asm.c b/sys/src/cmd/vl/asm.c index 1e7039f1b..c18c5b408 100644 --- a/sys/src/cmd/vl/asm.c +++ b/sys/src/cmd/vl/asm.c @@ -314,7 +314,7 @@ asmb(void) lput(HEADR); lput(0L); lput(HEADR+textsize+datsize+symsize); - lput(lcsize); /* line number size */ + lput(lcsize & 0xffff); /* line number size */ lput(0x20L); /* flags */ strnput(".data", 8); /* data segment */ @@ -338,7 +338,6 @@ asmb(void) lput(0x80L); /* flags */ break; case 4: - lput((0x160L<<16)|3L); /* magic and sections */ lput(time(0)); /* time and date */ lput(rnd(HEADR+textsize, 4096)+datsize); @@ -367,7 +366,7 @@ asmb(void) lput(HEADR); lput(0L); lput(HEADR+textsize+datsize+symsize); - lput(lcsize); /* line number size */ + lput(lcsize & 0xffff); /* line number size */ lput(0x20L); /* flags */ strnput(".data", 8); /* data segment */ -- cgit v1.2.3