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