0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00

Merge branch 'nasm-2.09.xx'

This commit is contained in:
Cyrill Gorcunov
2010-09-18 02:59:08 +04:00
4 changed files with 103 additions and 1 deletions

View File

@@ -29,6 +29,10 @@ To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
\b Fix typo in documentation.
\b Compound context local preprocessor single line macro identifiers
were not expanded early enough and as result lead to unresolved
symbols.
\S{cl-2.09.01} Version 2.09.01

View File

@@ -3659,6 +3659,7 @@ static bool paste_tokens(Token **head, bool handle_paste_tokens)
}
break;
case TOK_ID:
case TOK_PREPROC_ID:
case TOK_NUMBER:
case TOK_FLOAT:
{
@@ -3971,6 +3972,35 @@ static Token *expand_mmac_params(Token * tline)
}
delete_Token(t);
changed = true;
} else if (tline->type == TOK_PREPROC_ID &&
tline->text[0] == '%' &&
tline->text[1] == '$' &&
!tok_type_(tline->next, TOK_WHITESPACE) &&
(tok_type_(tline->next, TOK_ID) ||
tok_type_(tline->next, TOK_PREPROC_ID) ||
tok_type_(tline->next, TOK_NUMBER) ||
tok_type_(tline->next, TOK_OTHER) ||
tok_type_(tline->next, TOK_FLOAT))) {
/*
* In a sake of backward compatibility we allow
* to expand local single macro that early before
* pasting token code have place
*
* NOTE: that new code MUST use %+ macro to obtain
* same result
*/
t = tline;
tline = tline->next;
tt = tokenize(t->text);
tt = expand_smacro(tt);
*tail = tt;
while (tt) {
tt->a.mac = NULL;
tail = &tt->next;
tt = tt->next;
}
delete_Token(t);
changed = true;
} else {
t = *tail = tline;
tline = tline->next;

68
test/br3066383.asm Normal file
View File

@@ -0,0 +1,68 @@
;
; this is a for BR3005117
; http://sourceforge.net/tracker/?func=detail&aid=3005117&group_id=6208&atid=106208
;
%macro b_struc 1-*
%push foo
%define %$strucname %1
%%top_%$strucname:
%rep %0 - 1
%rotate 1
resb %{$strucname}%1 - ($ - %%top_%$strucname)
%1:
%endrep
resb %{$strucname}_size - ($ - %%top_%$strucname)
%pop
%endmacro
struc timeval
.tv_sec resd 1
.tv_usec resd 1
endstruc
section .text
mov [timeval_struct.tv_sec], eax
section .bss
timeval_struct b_struc timeval, .tv_sec, .tv_usec
timeval_struct_len equ $ - timeval_struct
section .text
;
; this is a test for BR3026808
; http://sourceforge.net/tracker/?func=detail&aid=3026808&group_id=6208&atid=106208
;
%imacro proc 1
%push proc
%assign %$arg 1
%endmacro
%imacro arg 0-1 1
%assign %$arg %1+%$arg
%endmacro
%imacro endproc 0
%pop
%endmacro
proc Test
%$ARG arg
endproc
;
; this is a test for BR3066383
; http://sourceforge.net/tracker/?func=detail&aid=3066383&group_id=6208&atid=106208
;
%macro pp_local 1
%push
%assign %$_uses 0
%rep 4
%assign %$_ur%$_uses %$_uses
mov ecx, %$_ur%$_uses
%assign %$_uses %$_uses+1
%endrep
%pop
%endmacro
pp_local 1

View File

@@ -1 +1 @@
2.09.01
2.09.02