Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

VAX: Another small GAS bug?



Hi!

While working on reproducible builds trying to get the exact same
output from a Linux-hosted build compared to a NetBSD build
environment, I found some issues with GAS.

  Three modules were not reproducible, which is most probably due to
qsort() being used in ./usr.bin/config, so the generated ioconf.c for
these modules (scmdi2c, sdtemp, spdmem), and probably also ioconf.c
generated for the kernel proper. (A similar issue arises with
./extern/bsd/file, where the magic.mgc file isn't reproducible
probably also due to qsort().)

  But one issue remains with GAS!  In unimpl_emul.S, we have these
three source areas which were disassembled to a different instruction stream:


The first two issues are in `emodd`, here:

[...]
464 emodd:  bsbw    touser
[...]
678 3:
679         cmpl %r8, $0x38
680         blss 1f
681         /*
682          * In the case where we have more than 55 bits in the integer,
683          * there aren't any bits left for the fraction.  Therefore we're
684          * done here;  TMPFRAC1 is equal to TMPFRACTGT and TMPFRAC2 is 0.
685          */
686         movq $0f0.0, TMPFRAC2
687         jmp 9f          /* we're done, move on */
688 1:      


--- netbsd.asm  2024-04-04 17:01:08.840403364 +0200
+++ linux.asm   2024-04-04 17:00:59.517135013 +0200
  47c:  d1 58 38        cmpl r8,$0x38
  47f:  19 0f           blss 490 <emodd+0x1e8>
- 481:  7d 8f 00 00     movq $0x00007f7f00000000,0x20(ap)
- 485:  00 00 7f 7f 
+ 481:  7d 8f 00 00     movq $0x0000000000000000,0x20(ap)
+ 485:  00 00 00 00 
  489:  00 00 ac 20 
  48d:  17 af 78        jmp 508 <emodd+0x260>


...and here:

725 8:      
726         /*
727          * We are less than 1.0; TMPFRAC1 should be 0, and TMPFRAC2 should
728          * be equal to TMPFRACTGT.
729          */
730         movd $0f0.0, TMPFRAC1
731         movd TMPFRACTGT, TMPFRAC2
732 9:                      

--- netbsd.asm  2024-04-04 17:01:08.840403364 +0200
+++ linux.asm   2024-04-04 17:00:59.517135013 +0200
  4f5:  17 af 10        jmp 508 <emodd+0x260>
- 4f8:  70 8f 00 00     movd $0x00007f7f00000000 [d-float],(ap)                 730
- 4fc:  00 00 7f 7f 
+ 4f8:  70 8f 00 00     movd $0x0000000000000000 [d-float],(ap)
+ 4fc:  00 00 00 00 
  500:  00 00 6c 
  503:  70 ac 40 ac     movd 0x40(ap),0x20(ap)
  507:  20 



...and the third is with `zeroexit`:

760 zeroexit:
761         /* Z == 1, everything else has been cleared already */
762         bisl2 $PSL_Z, S_PSL
763         bsbw getaddr_byte
764         movl $0x0, (%r0)
765         bsbw getaddr_byte
766         movd $0f0, (%r0)
767         brw goback


--- netbsd.asm  2024-04-04 17:01:08.840403364 +0200
+++ linux.asm   2024-04-04 17:00:59.517135013 +0200
 00000531 <zeroexit>:
  531:  c8 04 ad 40     bisl2 $0x4,0x40(fp)
  535:  30 85 fc        bsbw 1bd <getaddr_byte>
  538:  d0 00 60        movl $0x0,(r0)
  53b:  30 7f fc        bsbw 1bd <getaddr_byte>
- 53e:  70 8f 00 00     movd $0x00007f7f00000000 [d-float],(r0)
- 542:  00 00 7f 7f 
+ 53e:  70 8f 00 00     movd $0x0000000000000000 [d-float],(r0)
+ 542:  00 00 00 00 
  546:  00 00 60 
  549:  31 f8 fa        brw 44 <goback>



Who will find the GAS encoding issue first?

MfG, JBG

-- 

Attachment: signature.asc
Description: PGP signature



Home | Main Index | Thread Index | Old Index