From: Peter Johnson Date: Tue, 20 Nov 2001 23:30:19 +0000 (-0000) Subject: Allow multiple EXTERN's of same variable without error (NASM's behavior). X-Git-Tag: v0.1.0~176 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b2876e5f3a0ede29097a07f087c28f06a2889cfd;p=yasm Allow multiple EXTERN's of same variable without error (NASM's behavior). svn path=/trunk/yasm/; revision=354 --- diff --git a/libyasm/symrec.c b/libyasm/symrec.c index 243391e7..c426f5f4 100644 --- a/libyasm/symrec.c +++ b/libyasm/symrec.c @@ -162,7 +162,7 @@ symrec_declare(const char *name, SymVisibility vis) /* Don't allow EXTERN and COMMON if symbol has already been DEFINED. */ /* Also, EXTERN and COMMON are mutually exclusive. */ - if ((rec->status & SYM_DEFINED) || + if (((rec->status & SYM_DEFINED) && !(rec->visibility & SYM_EXTERN)) || ((rec->visibility & SYM_COMMON) && (vis == SYM_EXTERN)) || ((rec->visibility & SYM_EXTERN) && (vis == SYM_COMMON))) { Error(_("duplicate definition of `%s'; first defined on line %d"), diff --git a/src/symrec.c b/src/symrec.c index 243391e7..c426f5f4 100644 --- a/src/symrec.c +++ b/src/symrec.c @@ -162,7 +162,7 @@ symrec_declare(const char *name, SymVisibility vis) /* Don't allow EXTERN and COMMON if symbol has already been DEFINED. */ /* Also, EXTERN and COMMON are mutually exclusive. */ - if ((rec->status & SYM_DEFINED) || + if (((rec->status & SYM_DEFINED) && !(rec->visibility & SYM_EXTERN)) || ((rec->visibility & SYM_COMMON) && (vis == SYM_EXTERN)) || ((rec->visibility & SYM_EXTERN) && (vis == SYM_COMMON))) { Error(_("duplicate definition of `%s'; first defined on line %d"), diff --git a/tests/nasm/multiext.asm b/tests/nasm/multiext.asm new file mode 100644 index 00000000..28454289 --- /dev/null +++ b/tests/nasm/multiext.asm @@ -0,0 +1,2 @@ +[extern blah] +[extern blah]