alpha-vms: divide by zero
authorAlan Modra <amodra@gmail.com>
Mon, 27 Apr 2020 23:02:13 +0000 (08:32 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 27 Apr 2020 23:05:34 +0000 (08:35 +0930)
The zero check was on the wrong operand.  And, yes, the second operand
popped is supposed to be divided by the first operand popped.

* vms-alpha.c (_bfd_vms_slurp_etir): Correct divide by zero check.
Emit warning message.

bfd/ChangeLog
bfd/vms-alpha.c

index 0a0995ec09d6c690a29532a0f4989b6ee039f449..054aa32745b4b809983ef777d1b85dced34184ae 100644 (file)
@@ -1,3 +1,8 @@
+2020-04-28  Alan Modra  <amodra@gmail.com>
+
+       * vms-alpha.c (_bfd_vms_slurp_etir): Correct divide by zero check.
+       Emit warning message.
+
 2020-04-27  Tamar Christina  <tamar.christina@arm.com>
 
        * coff-i386.c (COFF_WITH_PE_BIGOBJ): New.
index 713697ae46961929bf07d56807e4c1900d42a3d6..8e923d2c7926913035dcfada27ebd0c94b64b85f 100644 (file)
@@ -2438,8 +2438,11 @@ _bfd_vms_slurp_etir (bfd *abfd, struct bfd_link_info *info)
            return FALSE;
          if (rel1 != RELC_NONE || rel2 != RELC_NONE)
            goto bad_context;
-         if (op2 == 0)
+         if (op1 == 0)
            {
+             /* Divide by zero is supposed to give a result of zero,
+                and a non-fatal warning message.  */
+             _bfd_error_handler (_("%s divide by zero"), "ETIR__C_OPR_DIV");
              if (!_bfd_vms_push (abfd, 0, RELC_NONE))
                return FALSE;
            }