[binutils-gdb] alpha-vms: divide by zero

Alan Modra amodra@sourceware.org
Mon Apr 27 23:15:03 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=48e5bada0aa8dacfbdee9700638fb20f5c17e55f

commit 48e5bada0aa8dacfbdee9700638fb20f5c17e55f
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Apr 28 08:32:13 2020 +0930

    alpha-vms: divide by zero
    
    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:
---
 bfd/ChangeLog   | 5 +++++
 bfd/vms-alpha.c | 5 ++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0a0995ec09d..054aa32745b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 713697ae469..8e923d2c792 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;
 	    }


More information about the Binutils-cvs mailing list