summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2011-03-12 22:35:42 +0300
committerCyrill Gorcunov <gorcunov@gmail.com>2011-03-12 22:35:42 +0300
commita09fe1ebfb6516a00a6b8d83d12586b0625b4981 (patch)
treeb50ad2a01eaf54350b0acb45cee81100780f60ed
parent8dcfd883c76b248fcafea2bda6e71acac9e7c052 (diff)
parentfaa13a241426bc8d7c4538ce92f46d01ca94f47b (diff)
downloadnasm-a09fe1ebfb6516a00a6b8d83d12586b0625b4981.tar.gz
Merge branch 'nasm-2.09.xx'
Conflicts: doc/changes.src version Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
-rw-r--r--doc/changes.src10
-rw-r--r--insns.dat4
-rw-r--r--nasm.c5
-rw-r--r--preproc.c2
-rw-r--r--test/br3189064.asm7
-rw-r--r--test/br3200749.asm9
6 files changed, 32 insertions, 5 deletions
diff --git a/doc/changes.src b/doc/changes.src
index 41614fc7..302e9d1e 100644
--- a/doc/changes.src
+++ b/doc/changes.src
@@ -19,7 +19,15 @@ since 2007.
To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
-\S{cl-2.09.05} Version 2.09.06
+\S{cl-2.09.07} Version 2.09.07
+
+\b Fix attempts to close same file several times
+ when \c{-a} option is used.
+
+\b Fixes for VEXTRACTF128, VMASKMOVPS encoding.
+
+
+\S{cl-2.09.06} Version 2.09.06
\b Fix missed section attribute initialization in \c{bin} output target.
diff --git a/insns.dat b/insns.dat
index cff6e704..41d9123c 100644
--- a/insns.dat
+++ b/insns.dat
@@ -2323,7 +2323,7 @@ VDIVSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 5e /r] AVX,SANDYBRIDGE
VDPPD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 41 /r ib] AVX,SANDYBRIDGE
VDPPS xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 40 /r ib] AVX,SANDYBRIDGE
VDPPS ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 40 /r ib] AVX,SANDYBRIDGE
-VEXTRACTF128 xmmrm128,xmmreg,imm8 [mri: vex.256.66.0f3a.w0 19 /r ib] AVX,SANDYBRIDGE
+VEXTRACTF128 xmmrm128,ymmreg,imm8 [mri: vex.256.66.0f3a.w0 19 /r ib] AVX,SANDYBRIDGE
VEXTRACTPS rm32,xmmreg,imm8 [mri: vex.128.66.0f3a 17 /r ib] AVX,SANDYBRIDGE
VHADDPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 7c /r] AVX,SANDYBRIDGE
VHADDPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 7c /r] AVX,SANDYBRIDGE
@@ -2343,7 +2343,7 @@ VMASKMOVDQU xmmreg,xmmreg [rm: vex.128.66.0f f7 /r] AVX,SANDYBRIDGE
VMASKMOVPS xmmreg,xmmreg,mem128 [rvm: vex.nds.128.66.0f38.w0 2c /r] AVX,SANDYBRIDGE
VMASKMOVPS ymmreg,ymmreg,mem256 [rvm: vex.nds.256.66.0f38.w0 2c /r] AVX,SANDYBRIDGE
VMASKMOVPS mem128,xmmreg,xmmreg [mvr: vex.nds.128.66.0f38.w0 2e /r] AVX,SANDYBRIDGE,SO
-VMASKMOVPS mem256,xmmreg,xmmreg [mvr: vex.nds.256.66.0f38.w0 2e /r] AVX,SANDYBRIDGE,SY
+VMASKMOVPS mem256,ymmreg,ymmreg [mvr: vex.nds.256.66.0f38.w0 2e /r] AVX,SANDYBRIDGE,SY
VMASKMOVPD xmmreg,xmmreg,mem128 [rvm: vex.nds.128.66.0f38.w0 2d /r] AVX,SANDYBRIDGE
VMASKMOVPD ymmreg,ymmreg,mem256 [rvm: vex.nds.256.66.0f38.w0 2d /r] AVX,SANDYBRIDGE
VMASKMOVPD mem128,xmmreg,xmmreg [mvr: vex.nds.128.66.0f38.w0 2f /r] AVX,SANDYBRIDGE
diff --git a/nasm.c b/nasm.c
index 7a63afb8..c0a105b0 100644
--- a/nasm.c
+++ b/nasm.c
@@ -2069,7 +2069,10 @@ static char *no_pp_getline(void)
static void no_pp_cleanup(int pass)
{
(void)pass; /* placate GCC */
- fclose(no_pp_fp);
+ if (no_pp_fp) {
+ fclose(no_pp_fp);
+ no_pp_fp = NULL;
+ }
}
static uint32_t get_cpu(char *value)
diff --git a/preproc.c b/preproc.c
index 75f99808..5fdeab26 100644
--- a/preproc.c
+++ b/preproc.c
@@ -5224,7 +5224,7 @@ static char *pp_getline(void)
/* only set line and file name if there's a next node */
if (i->next) {
src_set_linnum(i->lineno);
- nasm_free(src_set_fname(i->fname));
+ nasm_free(src_set_fname(nasm_strdup(i->fname)));
}
if ((i->next == NULL) && (finals != NULL)) {
in_final = true;
diff --git a/test/br3189064.asm b/test/br3189064.asm
new file mode 100644
index 00000000..d62df506
--- /dev/null
+++ b/test/br3189064.asm
@@ -0,0 +1,7 @@
+;Testname=unoptimized; Arguments=-O0 -fbin -obr3189064.bin; Files=stdout stderr br3189064.bin
+;Testname=optimized; Arguments=-Ox -fbin -obr3189064.bin; Files=stdout stderr br3189064.bin
+
+[bits 64]
+ VMASKMOVPS [edi],ymm0,ymm1
+ VEXTRACTF128 xmm0,ymm1,1
+ VEXTRACTF128 [edi],ymm1,1
diff --git a/test/br3200749.asm b/test/br3200749.asm
new file mode 100644
index 00000000..79e35f8c
--- /dev/null
+++ b/test/br3200749.asm
@@ -0,0 +1,9 @@
+;Testname=unoptimized; Arguments=-O0 -fbin -obr3200749.bin; Files=stdout stderr br3200749.bin
+;Testname=optimized; Arguments=-Ox -fbin -obr3200749.bin; Files=stdout stderr br3200749.bin
+%define IFNDEF %ifndef
+%define ENDIF %endif
+
+IFNDEF foo
+ ; bar
+ENDIF
+