alpha-vms: divide by zero

Alan Modra amodra@gmail.com
Mon Apr 27 23:15:39 GMT 2020


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.

diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 713697ae46..8e923d2c79 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -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;
 	    }

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list