assemble.c: only warn for an absolute address on pass 2

A forward symbol may appear absolute in pass 1, so defer this warning
to pass 2.  This addresses BR 3392361.

Note: this fix is already in the master branch.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
H. Peter Anvin 2017-02-20 13:07:57 -08:00
parent 456b1c46f8
commit e5f0701d0b

View file

@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 1996-2016 The NASM Authors - All Rights Reserved
* Copyright 1996-2017 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
*
@ -2492,7 +2492,7 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
*/
if (bits == 64 && ((input->type & IP_REL) == IP_REL) &&
input->segment == NO_SEG) {
nasm_error(ERR_WARNING | ERR_PASS1, "absolute address can not be RIP-relative");
nasm_error(ERR_WARNING | ERR_PASS2, "absolute address can not be RIP-relative");
input->type &= ~IP_REL;
input->type |= MEMORY;
}