From: Alan Modra Date: Mon, 27 Apr 2020 23:02:13 +0000 (+0930) Subject: alpha-vms: divide by zero X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=48e5bada0aa8dacfbdee9700638fb20f5c17e55f;p=binutils-gdb.git 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 --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 + + * vms-alpha.c (_bfd_vms_slurp_etir): Correct divide by zero check. + Emit warning message. + 2020-04-27 Tamar Christina * 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; }