You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(208) |
Jun
(43) |
Jul
|
Aug
(2) |
Sep
(17) |
Oct
|
Nov
(4) |
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
(11) |
Mar
(3) |
Apr
(2) |
May
|
Jun
(3) |
Jul
(29) |
Aug
(29) |
Sep
(48) |
Oct
|
Nov
|
Dec
(5) |
2004 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2005 |
Jan
(12) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(2) |
Jul
|
Aug
|
Sep
(4) |
Oct
(3) |
Nov
(1) |
Dec
(2) |
2006 |
Jan
(1) |
Feb
(2) |
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
(2) |
Oct
(21) |
Nov
(25) |
Dec
(16) |
2007 |
Jan
(26) |
Feb
(26) |
Mar
(18) |
Apr
(51) |
May
(45) |
Jun
(26) |
Jul
(6) |
Aug
(85) |
Sep
(161) |
Oct
(111) |
Nov
(83) |
Dec
(18) |
2008 |
Jan
(31) |
Feb
(27) |
Mar
|
Apr
(16) |
May
(142) |
Jun
(136) |
Jul
(51) |
Aug
(21) |
Sep
(47) |
Oct
(428) |
Nov
(19) |
Dec
(6) |
2009 |
Jan
(11) |
Feb
(37) |
Mar
(17) |
Apr
(15) |
May
(13) |
Jun
(61) |
Jul
(127) |
Aug
(15) |
Sep
(22) |
Oct
(28) |
Nov
(37) |
Dec
(10) |
2010 |
Jan
(18) |
Feb
(22) |
Mar
(10) |
Apr
(41) |
May
|
Jun
(48) |
Jul
(61) |
Aug
(54) |
Sep
(34) |
Oct
(15) |
Nov
(49) |
Dec
(11) |
2011 |
Jan
|
Feb
(24) |
Mar
(10) |
Apr
(9) |
May
|
Jun
(33) |
Jul
(41) |
Aug
(20) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(86) |
Mar
(12) |
Apr
|
May
(10) |
Jun
|
Jul
(9) |
Aug
(4) |
Sep
(11) |
Oct
(3) |
Nov
(3) |
Dec
(10) |
2013 |
Jan
(1) |
Feb
(23) |
Mar
(15) |
Apr
(7) |
May
(20) |
Jun
(3) |
Jul
(15) |
Aug
|
Sep
(29) |
Oct
(16) |
Nov
(69) |
Dec
(18) |
2014 |
Jan
|
Feb
(8) |
Mar
|
Apr
|
May
(16) |
Jun
(7) |
Jul
|
Aug
(5) |
Sep
(2) |
Oct
(4) |
Nov
(25) |
Dec
(8) |
2015 |
Jan
(6) |
Feb
(6) |
Mar
|
Apr
(1) |
May
(2) |
Jun
(1) |
Jul
(7) |
Aug
|
Sep
(2) |
Oct
(1) |
Nov
(6) |
Dec
|
2016 |
Jan
(12) |
Feb
(97) |
Mar
(57) |
Apr
(52) |
May
(33) |
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
(3) |
Nov
(3) |
Dec
|
2017 |
Jan
(4) |
Feb
|
Mar
(23) |
Apr
(5) |
May
|
Jun
(2) |
Jul
(3) |
Aug
(2) |
Sep
|
Oct
(6) |
Nov
(3) |
Dec
(3) |
2018 |
Jan
(4) |
Feb
(11) |
Mar
|
Apr
(1) |
May
(3) |
Jun
(6) |
Jul
|
Aug
(5) |
Sep
(5) |
Oct
(36) |
Nov
(128) |
Dec
(18) |
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(24) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: nasm-bot f. C. G. <gor...@gm...> - 2019-03-16 20:21:29
|
Commit-ID: 982186a1a3139763f2aa2710b32236009f64270d Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=982186a1a3139763f2aa2710b32236009f64270d Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 16 Mar 2019 23:05:50 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 16 Mar 2019 23:19:12 +0300 preproc: Fix nil dereference on error paths https://bugzilla.nasm.us/show_bug.cgi?id=3392562 Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/preproc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/asm/preproc.c b/asm/preproc.c index 833a3d47..5f6b0a62 100644 --- a/asm/preproc.c +++ b/asm/preproc.c @@ -4198,7 +4198,8 @@ again: do { t = tline->next; while (tok_type_(t, TOK_SMAC_END)) { - t->a.mac->in_progress = false; + if (t->a.mac) + t->a.mac->in_progress = false; t->text = NULL; t = tline->next = delete_Token(t); } @@ -4228,7 +4229,8 @@ again: */ t = tline->next; while (tok_type_(t, TOK_SMAC_END)) { - t->a.mac->in_progress = false; + if (t->a.mac) + t->a.mac->in_progress = false; t->text = NULL; t = tline->next = delete_Token(t); } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-26 13:42:16
|
Commit-ID: 74246c499ea4313fb8837977dc0c135fc50567c0 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=74246c499ea4313fb8837977dc0c135fc50567c0 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Wed, 26 Dec 2018 16:41:15 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Wed, 26 Dec 2018 16:41:15 +0300 NASM 2.14.02 --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 18083aa0..cd2edc3d 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.14.01 +2.14.02 |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-26 13:42:16
|
Commit-ID: 532d9f9dcb3bea728debf38d75a12473e75cfdcc Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=532d9f9dcb3bea728debf38d75a12473e75cfdcc Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Tue, 25 Dec 2018 13:11:55 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Tue, 25 Dec 2018 13:11:55 +0300 listing: list_emit -- Don't forget to zap listerr_head In list_emit we walk over listerr_head freeing the list, but the head pointer remain carrying old value. Need to clean it up once traverse is done to not access already freed memory later. https://bugzilla.nasm.us/show_bug.cgi?id=3392538 Reported-by: ru...@co... Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/listing.c | 1 + 1 file changed, 1 insertion(+) diff --git a/asm/listing.c b/asm/listing.c index 4d753dbd..b79f11ae 100644 --- a/asm/listing.c +++ b/asm/listing.c @@ -128,6 +128,7 @@ static void list_emit(void) fprintf(listfp, " %s\n", le->str); nasm_free(le); } + listerr_head = NULL; listerr_tail = &listerr_head; } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-02 08:51:32
|
Commit-ID: 2bc04aff90f0d6f2ce66158600592977691619f5 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=2bc04aff90f0d6f2ce66158600592977691619f5 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sun, 2 Dec 2018 11:47:49 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 2 Dec 2018 11:47:49 +0300 output: elf -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outelf.c | 224 +++++++++++++++++++++++++++----------------------------- 1 file changed, 107 insertions(+), 117 deletions(-) diff --git a/output/outelf.c b/output/outelf.c index e3e3a68..3fe7681 100644 --- a/output/outelf.c +++ b/output/outelf.c @@ -222,16 +222,14 @@ static void elf_section_attrib(char *name, char *attr, int pass, while ((opt = nasm_opt_val(opt, &val, &next))) { if (!nasm_stricmp(opt, "align")) { if (!val) { - nasm_error(ERR_NONFATAL, - "section align without value specified"); + nasm_nonfatal("section align without value specified"); } else { *align = atoi(val); if (*align == 0) { *align = SHA_ANY; } else if (!is_power2(*align)) { - nasm_error(ERR_NONFATAL, - "section alignment %"PRId64" is not a power of two", - *align); + nasm_nonfatal("section alignment %"PRId64" is not a power of two", + *align); *align = SHA_ANY; } } @@ -261,9 +259,8 @@ static void elf_section_attrib(char *name, char *attr, int pass, } else if (!nasm_stricmp(opt, "nobits")) { *type = SHT_NOBITS; } else if (pass == 1) { - nasm_error(ERR_WARNING, - "Unknown section attribute '%s' ignored on" - " declaration of section `%s'", opt, name); + nasm_warn("Unknown section attribute '%s' ignored on" + " declaration of section `%s'", opt, name); } opt = next; } @@ -283,12 +280,12 @@ elf_directive(enum directive directive, char *value, int pass) n = readnum(value, &err); if (err) { - nasm_error(ERR_NONFATAL, "`osabi' directive requires a parameter"); + nasm_nonfatal("`osabi' directive requires a parameter"); return DIRR_ERROR; } if (n < 0 || n > 255) { - nasm_error(ERR_NONFATAL, "valid osabi numbers are 0 to 255"); + nasm_nonfatal("valid osabi numbers are 0 to 255"); return DIRR_ERROR; } @@ -301,7 +298,7 @@ elf_directive(enum directive directive, char *value, int pass) n = readnum(p + 1, &err); if (err || n < 0 || n > 255) { - nasm_error(ERR_NONFATAL, "invalid ABI version number (valid: 0 to 255)"); + nasm_nonfatal("invalid ABI version number (valid: 0 to 255)"); return DIRR_ERROR; } @@ -439,8 +436,8 @@ static int32_t elf_section_names(char *name, int pass, int *bits) if (!strcmp(name, ".shstrtab") || !strcmp(name, ".symtab") || !strcmp(name, ".strtab")) { - nasm_error(ERR_NONFATAL, "attempt to redefine reserved section" - "name `%s'", name); + nasm_nonfatal("attempt to redefine reserved section" + "name `%s'", name); return NO_SEG; } @@ -465,8 +462,8 @@ static int32_t elf_section_names(char *name, int pass, int *bits) if ((type && sects[i]->type != type) || (align && sects[i]->align != align) || (flags_and && ((sects[i]->flags & flags_and) != flags_or))) - nasm_error(ERR_WARNING, "incompatible section attributes ignored on" - " redeclaration of section `%s'", name); + nasm_warn("incompatible section attributes ignored on" + " redeclaration of section `%s'", name); } return sects[i]->index; @@ -480,9 +477,8 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, bool special_used = false; #if defined(DEBUG) && DEBUG>2 - nasm_error(ERR_DEBUG, - " elf_deflabel: %s, seg=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", - name, segment, offset, is_global, special); + nasm_debug(" elf_deflabel: %s, seg=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", + name, segment, offset, is_global, special); #endif if (name[0] == '.' && name[1] == '.' && name[2] != '@') { /* @@ -496,7 +492,7 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, strcmp(name, "..got") && strcmp(name, "..plt") && strcmp(name, "..sym") && strcmp(name, "..gottpoff") && strcmp(name, "..tlsie")) - nasm_error(ERR_NONFATAL, "unrecognised special symbol `%s'", name); + nasm_nonfatal("unrecognised special symbol `%s'", name); return; } @@ -518,8 +514,8 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); if (e) { if (!is_simple(e)) - nasm_error(ERR_NONFATAL, "cannot use relocatable" - " expression as symbol size"); + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); else (*s)->size = reloc_value(e); } @@ -577,11 +573,11 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, bool err; sym->symv.key = readnum(special, &err); if (err) - nasm_error(ERR_NONFATAL, "alignment constraint `%s' is not a" - " valid number", special); + nasm_nonfatal("alignment constraint `%s' is not a" + " valid number", special); else if ((sym->symv.key | (sym->symv.key - 1)) != 2 * sym->symv.key - 1) - nasm_error(ERR_NONFATAL, "alignment constraint `%s' is not a" - " power of two", special); + nasm_nonfatal("alignment constraint `%s' is not a" + " power of two", special); } special_used = true; } else @@ -622,8 +618,8 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, else if (!nasm_strnicmp(special, "notype", n)) sym->type |= STT_NOTYPE; else - nasm_error(ERR_NONFATAL, "unrecognised symbol type `%.*s'", - n, special); + nasm_nonfatal("unrecognised symbol type `%.*s'", + n, special); special += n; special = nasm_skip_spaces(special); @@ -664,8 +660,8 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, sym->name = nasm_strdup(name); } else if (e) { if (!is_simple(e)) - nasm_error(ERR_NONFATAL, "cannot use relocatable" - " expression as symbol size"); + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); else sym->size = reloc_value(e); } @@ -687,7 +683,7 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset, nlocals++; if (special && !special_used) - nasm_error(ERR_NONFATAL, "no special symbol features supported here"); + nasm_nonfatal("no special symbol features supported here"); } static void elf_add_reloc(struct elf_section *sect, int32_t segment, @@ -762,7 +758,7 @@ static int64_t elf_add_gsym_reloc(struct elf_section *sect, if (!s) { if (exact && offset) - nasm_error(ERR_NONFATAL, "invalid access to an external symbol"); + nasm_nonfatal("invalid access to an external symbol"); else elf_add_reloc(sect, segment, offset - pcrel, type); return 0; @@ -770,8 +766,8 @@ static int64_t elf_add_gsym_reloc(struct elf_section *sect, srb = rb_search(s->gsyms, offset); if (!srb || (exact && srb->key != offset)) { - nasm_error(ERR_NONFATAL, "unable to find a suitable global symbol" - " for this reference"); + nasm_nonfatal("unable to find a suitable global symbol" + " for this reference"); return 0; } sym = container_of(srb, struct elf_symbol, symv); @@ -824,8 +820,8 @@ static void elf32_out(int32_t segto, const void *data, /* end of debugging stuff */ if (s->type == SHT_NOBITS && type != OUT_RESERVE) { - nasm_error(ERR_WARNING, "attempt to initialize memory in" - " BSS section `%s': ignored", s->name); + nasm_warn("attempt to initialize memory in" + " BSS section `%s': ignored", s->name); s->len += realsize(type, size); return; } @@ -833,8 +829,8 @@ static void elf32_out(int32_t segto, const void *data, switch (type) { case OUT_RESERVE: if (s->type == SHT_PROGBITS) { - nasm_error(ERR_WARNING, "uninitialized space declared in" - " non-BSS section `%s': zeroing", s->name); + nasm_warn("uninitialized space declared in" + " non-BSS section `%s': zeroing", s->name); elf_sect_write(s, NULL, size); } else s->len += size; @@ -852,8 +848,8 @@ static void elf32_out(int32_t segto, const void *data, addr = *(int64_t *)data; if (segment != NO_SEG) { if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { /* @@ -912,21 +908,21 @@ static void elf32_out(int32_t segto, const void *data, break; } } else if (wrt == elf_plt_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF format cannot produce non-PC-" - "relative PLT references"); + nasm_nonfatal("ELF format cannot produce non-PC-" + "relative PLT references"); } else { - nasm_error(ERR_NONFATAL, "ELF format does not support this" - " use of WRT"); + nasm_nonfatal("ELF format does not support this" + " use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } } } if (gnu16) { - nasm_error(ERR_WARNING | ERR_WARN_GNUELF, - "8- or 16-bit relocations in ELF32 is a GNU extension"); + nasm_warnf(ERR_WARN_GNUELF, "8- or 16-bit relocations " + "in ELF32 is a GNU extension"); } else if (asize != 4 && segment != NO_SEG) { - nasm_error(ERR_NONFATAL, "Unsupported non-32-bit ELF relocation"); + nasm_nonfatal("Unsupported non-32-bit ELF relocation"); } elf_sect_writeaddr(s, addr, asize); break; @@ -945,16 +941,15 @@ rel12adr: addr = *(int64_t *)data - size; nasm_assert(segment != segto); if (segment != NO_SEG && segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { - nasm_error(ERR_WARNING | ERR_WARN_GNUELF, - "8- or 16-bit relocations in ELF is a GNU extension"); + nasm_warnf(ERR_WARN_GNUELF, "8- or 16-bit relocations " + "in ELF is a GNU extension"); elf_add_reloc(s, segment, 0, reltype); } else { - nasm_error(ERR_NONFATAL, - "Unsupported non-32-bit ELF relocation"); + nasm_nonfatal("Unsupported non-32-bit ELF relocation"); } } elf_sect_writeaddr(s, addr, bytes); @@ -965,8 +960,8 @@ rel12adr: if (segment == segto) nasm_panic("intra-segment OUT_REL4ADR"); if (segment != NO_SEG && segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { elf_add_reloc(s, segment, 0, R_386_PC32); @@ -975,11 +970,11 @@ rel12adr: } else if (wrt == elf_gotpc_sect + 1 || wrt == elf_gotoff_sect + 1 || wrt == elf_got_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF format cannot produce PC-" - "relative GOT references"); + nasm_nonfatal("ELF format cannot produce PC-" + "relative GOT references"); } else { - nasm_error(ERR_NONFATAL, "ELF format does not support this" - " use of WRT"); + nasm_nonfatal("ELF format does not support this" + " use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } } @@ -987,7 +982,7 @@ rel12adr: break; case OUT_REL8ADR: - nasm_error(ERR_NONFATAL, "32-bit ELF format does not support 64-bit relocations"); + nasm_nonfatal("32-bit ELF format does not support 64-bit relocations"); addr = 0; elf_sect_writeaddr(s, addr, 8); break; @@ -1031,8 +1026,8 @@ static void elf64_out(int32_t segto, const void *data, /* end of debugging stuff */ if (s->type == SHT_NOBITS && type != OUT_RESERVE) { - nasm_error(ERR_WARNING, "attempt to initialize memory in" - " BSS section `%s': ignored", s->name); + nasm_warn("attempt to initialize memory in" + " BSS section `%s': ignored", s->name); s->len += realsize(type, size); return; } @@ -1040,8 +1035,8 @@ static void elf64_out(int32_t segto, const void *data, switch (type) { case OUT_RESERVE: if (s->type == SHT_PROGBITS) { - nasm_error(ERR_WARNING, "uninitialized space declared in" - " non-BSS section `%s': zeroing", s->name); + nasm_warn("uninitialized space declared in" + " non-BSS section `%s': zeroing", s->name); elf_sect_write(s, NULL, size); } else s->len += size; @@ -1062,8 +1057,8 @@ static void elf64_out(int32_t segto, const void *data, if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { switch (isize) { @@ -1101,8 +1096,8 @@ static void elf64_out(int32_t segto, const void *data, addr = 0; } else if (wrt == elf_gotoff_sect + 1) { if (asize != 8) { - nasm_error(ERR_NONFATAL, "ELF64 requires ..gotoff " - "references to be qword"); + nasm_nonfatal("ELF64 requires ..gotoff " + "references to be qword"); } else { elf_add_reloc(s, segment, addr, R_X86_64_GOTOFF64); addr = 0; @@ -1120,7 +1115,7 @@ static void elf64_out(int32_t segto, const void *data, addr = 0; break; default: - nasm_error(ERR_NONFATAL, "invalid ..got reference"); + nasm_nonfatal("invalid ..got reference"); break; } } else if (wrt == elf_sym_sect + 1) { @@ -1158,11 +1153,11 @@ static void elf64_out(int32_t segto, const void *data, break; } } else if (wrt == elf_plt_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF format cannot produce non-PC-" - "relative PLT references"); + nasm_nonfatal("ELF format cannot produce non-PC-" + "relative PLT references"); } else { - nasm_error(ERR_NONFATAL, "ELF format does not support this" - " use of WRT"); + nasm_nonfatal("ELF format does not support this" + " use of WRT"); } } elf_sect_writeaddr(s, addr, asize); @@ -1186,16 +1181,14 @@ rel12adr: if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { elf_add_reloc(s, segment, addr, reltype); addr = 0; - } else { - nasm_error(ERR_NONFATAL, - "Unsupported non-32-bit ELF relocation"); - } + } else + nasm_nonfatal("Unsupported non-32-bit ELF relocation"); } elf_sect_writeaddr(s, addr, bytes); break; @@ -1207,8 +1200,8 @@ rel12adr: if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF64 format does not support" - " segment base references"); + nasm_nonfatal("ELF64 format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { elf_add_reloc(s, segment, addr, R_X86_64_PC32); @@ -1224,15 +1217,15 @@ rel12adr: addr = 0; } else if (wrt == elf_gotoff_sect + 1 || wrt == elf_got_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF64 requires ..gotoff references to be " - "qword absolute"); + nasm_nonfatal("ELF64 requires ..gotoff references to be " + "qword absolute"); } else if (wrt == elf_gottpoff_sect + 1) { elf_add_gsym_reloc(s, segment, addr+size, size, R_X86_64_GOTTPOFF, true); addr = 0; } else { - nasm_error(ERR_NONFATAL, "ELF64 format does not support this" - " use of WRT"); + nasm_nonfatal("ELF64 format does not support this" + " use of WRT"); } } elf_sect_writeaddr(s, addr, 4); @@ -1245,8 +1238,8 @@ rel12adr: if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF64 format does not support" - " segment base references"); + nasm_nonfatal("ELF64 format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { elf_add_reloc(s, segment, addr, R_X86_64_PC64); @@ -1258,14 +1251,14 @@ rel12adr: addr = 0; } else if (wrt == elf_gotoff_sect + 1 || wrt == elf_got_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF64 requires ..gotoff references to be " - "absolute"); + nasm_nonfatal("ELF64 requires ..gotoff references to be " + "absolute"); } else if (wrt == elf_gottpoff_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF64 requires ..gottpoff references to be " - "dword"); + nasm_nonfatal("ELF64 requires ..gottpoff references to be " + "dword"); } else { - nasm_error(ERR_NONFATAL, "ELF64 format does not support this" - " use of WRT"); + nasm_nonfatal("ELF64 format does not support this" + " use of WRT"); } } elf_sect_writeaddr(s, addr, 8); @@ -1311,8 +1304,8 @@ static void elfx32_out(int32_t segto, const void *data, /* end of debugging stuff */ if (s->type == SHT_NOBITS && type != OUT_RESERVE) { - nasm_error(ERR_WARNING, "attempt to initialize memory in" - " BSS section `%s': ignored", s->name); + nasm_warn("attempt to initialize memory in" + " BSS section `%s': ignored", s->name); s->len += realsize(type, size); return; } @@ -1320,8 +1313,8 @@ static void elfx32_out(int32_t segto, const void *data, switch (type) { case OUT_RESERVE: if (s->type == SHT_PROGBITS) { - nasm_error(ERR_WARNING, "uninitialized space declared in" - " non-BSS section `%s': zeroing", s->name); + nasm_warn("uninitialized space declared in" + " non-BSS section `%s': zeroing", s->name); elf_sect_write(s, NULL, size); } else s->len += size; @@ -1342,8 +1335,8 @@ static void elfx32_out(int32_t segto, const void *data, if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { switch (isize) { @@ -1380,8 +1373,8 @@ static void elfx32_out(int32_t segto, const void *data, elf_add_reloc(s, segment, addr, R_X86_64_GOTPC32); addr = 0; } else if (wrt == elf_gotoff_sect + 1) { - nasm_error(ERR_NONFATAL, "ELFX32 doesn't support " - "R_X86_64_GOTOFF64"); + nasm_nonfatal("ELFX32 doesn't support " + "R_X86_64_GOTOFF64"); } else if (wrt == elf_got_sect + 1) { switch (asize) { case 4: @@ -1390,7 +1383,7 @@ static void elfx32_out(int32_t segto, const void *data, addr = 0; break; default: - nasm_error(ERR_NONFATAL, "invalid ..got reference"); + nasm_nonfatal("invalid ..got reference"); break; } } else if (wrt == elf_sym_sect + 1) { @@ -1428,11 +1421,11 @@ static void elfx32_out(int32_t segto, const void *data, break; } } else if (wrt == elf_plt_sect + 1) { - nasm_error(ERR_NONFATAL, "ELF format cannot produce non-PC-" - "relative PLT references"); + nasm_nonfatal("ELF format cannot produce non-PC-" + "relative PLT references"); } else { - nasm_error(ERR_NONFATAL, "ELF format does not support this" - " use of WRT"); + nasm_nonfatal("ELF format does not support this" + " use of WRT"); } } elf_sect_writeaddr(s, addr, asize); @@ -1456,16 +1449,14 @@ rel12adr: if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELF format does not support" - " segment base references"); + nasm_nonfatal("ELF format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { elf_add_reloc(s, segment, addr, reltype); addr = 0; - } else { - nasm_error(ERR_NONFATAL, - "Unsupported non-32-bit ELF relocation"); - } + } else + nasm_nonfatal("Unsupported non-32-bit ELF relocation"); } elf_sect_writeaddr(s, addr, bytes); break; @@ -1477,8 +1468,8 @@ rel12adr: if (segment == NO_SEG) { /* Do nothing */ } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "ELFX32 format does not support" - " segment base references"); + nasm_nonfatal("ELFX32 format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { elf_add_reloc(s, segment, addr, R_X86_64_PC32); @@ -1494,21 +1485,20 @@ rel12adr: addr = 0; } else if (wrt == elf_gotoff_sect + 1 || wrt == elf_got_sect + 1) { - nasm_error(ERR_NONFATAL, "invalid ..gotoff reference"); + nasm_nonfatal("invalid ..gotoff reference"); } else if (wrt == elf_gottpoff_sect + 1) { elf_add_gsym_reloc(s, segment, addr+size, size, R_X86_64_GOTTPOFF, true); addr = 0; } else { - nasm_error(ERR_NONFATAL, "ELFX32 format does not support this" - " use of WRT"); + nasm_nonfatal("ELFX32 format does not support this use of WRT"); } } elf_sect_writeaddr(s, addr, 4); break; case OUT_REL8ADR: - nasm_error(ERR_NONFATAL, "32-bit ELF format does not support 64-bit relocations"); + nasm_nonfatal("32-bit ELF format does not support 64-bit relocations"); addr = 0; elf_sect_writeaddr(s, addr, 8); break; |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-02 08:51:32
|
Commit-ID: 0623e7dcf578032b6f6e49f41d26d7b80f3c28ea Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=0623e7dcf578032b6f6e49f41d26d7b80f3c28ea Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sun, 2 Dec 2018 11:44:38 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 2 Dec 2018 11:44:38 +0300 output: obj -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outobj.c | 140 +++++++++++++++++++++++++------------------------------- 1 file changed, 63 insertions(+), 77 deletions(-) diff --git a/output/outobj.c b/output/outobj.c index f649cad..252ce88 100644 --- a/output/outobj.c +++ b/output/outobj.c @@ -774,8 +774,7 @@ static void obj_deflabel(char *name, int32_t segment, bool used_special = false; /* have we used the special text? */ #if defined(DEBUG) && DEBUG>2 - nasm_error(ERR_DEBUG, - " obj_deflabel: %s, seg=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", + nasm_debug(" obj_deflabel: %s, seg=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", name, segment, offset, is_global, special); #endif @@ -795,7 +794,7 @@ static void obj_deflabel(char *name, int32_t segment, obj_entry_ofs = offset; return; } - nasm_error(ERR_NONFATAL, "unrecognised special symbol `%s'", name); + nasm_nonfatal("unrecognised special symbol `%s'", name); } /* @@ -826,8 +825,8 @@ static void obj_deflabel(char *name, int32_t segment, pub->segment = (segment == NO_SEG ? 0 : segment & ~SEG_ABS); } if (special) - nasm_error(ERR_NONFATAL, "OBJ supports no special symbol features" - " for this symbol type"); + nasm_nonfatal("OBJ supports no special symbol features" + " for this symbol type"); return; } @@ -855,9 +854,8 @@ static void obj_deflabel(char *name, int32_t segment, loc->offset = offset; if (special) - nasm_error(ERR_NONFATAL, - "OBJ supports no special symbol features" - " for this symbol type"); + nasm_nonfatal("OBJ supports no special symbol features" + " for this symbol type"); return; } @@ -922,8 +920,8 @@ static void obj_deflabel(char *name, int32_t segment, obj_ext_set_defwrt(ext, p); special += len; if (*special && *special != ':') - nasm_error(ERR_NONFATAL, "`:' expected in special symbol" - " text for `%s'", ext->name); + nasm_nonfatal("`:' expected in special symbol" + " text for `%s'", ext->name); else if (*special == ':') special++; } @@ -936,18 +934,16 @@ static void obj_deflabel(char *name, int32_t segment, if (ext->commonsize) ext->commonelem = 1; else - nasm_error(ERR_NONFATAL, - "`%s': `far' keyword may only be applied" - " to common variables\n", ext->name); + nasm_nonfatal("`%s': `far' keyword may only be applied" + " to common variables\n", ext->name); special += 3; special += strspn(special, " \t"); } else if (!nasm_strnicmp(special, "near", 4)) { if (ext->commonsize) ext->commonelem = 0; else - nasm_error(ERR_NONFATAL, - "`%s': `far' keyword may only be applied" - " to common variables\n", ext->name); + nasm_nonfatal("`%s': `far' keyword may only be applied" + " to common variables\n", ext->name); special += 4; special += strspn(special, " \t"); } @@ -971,16 +967,15 @@ static void obj_deflabel(char *name, int32_t segment, e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); if (e) { if (!is_simple(e)) - nasm_error(ERR_NONFATAL, "cannot use relocatable" - " expression as common-variable element size"); + nasm_nonfatal("cannot use relocatable" + " expression as common-variable element size"); else ext->commonelem = reloc_value(e); } special = stdscan_get(); } else { - nasm_error(ERR_NONFATAL, - "`%s': element-size specifications only" - " apply to common variables", ext->name); + nasm_nonfatal("`%s': element-size specifications only" + " apply to common variables", ext->name); while (*special && *special != ':') special++; if (*special == ':') @@ -1010,8 +1005,8 @@ static void obj_deflabel(char *name, int32_t segment, ext->index = ++externals; if (special && !used_special) - nasm_error(ERR_NONFATAL, "OBJ supports no special symbol features" - " for this symbol type"); + nasm_nonfatal("OBJ supports no special symbol features" + " for this symbol type"); } /* forward declaration */ @@ -1079,11 +1074,11 @@ static void obj_out(int32_t segto, const void *data, size = abs((int)size); if (segment == NO_SEG && type != OUT_ADDRESS) - nasm_error(ERR_NONFATAL, "relative call to absolute address not" - " supported by OBJ format"); + nasm_nonfatal("relative call to absolute address not" + " supported by OBJ format"); if (segment >= SEG_ABS) - nasm_error(ERR_NONFATAL, "far-absolute relocations not supported" - " by OBJ format"); + nasm_nonfatal("far-absolute relocations not supported" + " by OBJ format"); ldata = *(int64_t *)data; if (type != OUT_ADDRESS) { @@ -1128,8 +1123,8 @@ static void obj_out(int32_t segto, const void *data, switch (size) { default: - nasm_error(ERR_NONFATAL, "OBJ format can only handle 16- or " - "32-byte relocations"); + nasm_nonfatal("OBJ format can only handle 16- or " + "32-byte relocations"); segment = NO_SEG; /* Don't actually generate a relocation */ break; case 2: @@ -1152,8 +1147,8 @@ static void obj_out(int32_t segto, const void *data, */ rsize = 2; if (ldata & 0xFFFF) - nasm_error(ERR_NONFATAL, "OBJ format cannot handle complex" - " dword-size segment base references"); + nasm_nonfatal("OBJ format cannot handle complex" + " dword-size segment base references"); } if (segment != NO_SEG) obj_write_fixup(orp, rsize, @@ -1164,8 +1159,7 @@ static void obj_out(int32_t segto, const void *data, } default: - nasm_error(ERR_NONFATAL, - "Relocation type not supported by output format"); + nasm_nonfatal("Relocation type not supported by output format"); /* fall through */ case OUT_RESERVE: @@ -1191,8 +1185,8 @@ static void obj_write_fixup(ObjRecord * orp, int bytes, ObjRecord *forp; if (bytes != 2 && bytes != 4) { - nasm_error(ERR_NONFATAL, "`obj' output driver does not support" - " %d-bit relocations", bytes << 3); + nasm_nonfatal("`obj' output driver does not support" + " %d-bit relocations", bytes << 3); return; } @@ -1282,8 +1276,8 @@ static void obj_write_fixup(ObjRecord * orp, int bytes, else if (e->defwrt_type == DEFWRT_GROUP) method |= 0x10, fidx = e->defwrt_ptr.grp->obj_index; else { - nasm_error(ERR_NONFATAL, "default WRT specification for" - " external `%s' unresolved", e->name); + nasm_nonfatal("default WRT specification for" + " external `%s' unresolved", e->name); method |= 0x50, fidx = -1; /* got to do _something_ */ } } else @@ -1339,8 +1333,8 @@ static int32_t obj_segment(char *name, int pass, int *bits) * by sponging off the label manager. */ #if defined(DEBUG) && DEBUG>=3 - nasm_error(ERR_DEBUG, " obj_segment: < %s >, pass=%d, *bits=%d\n", - name, pass, *bits); + nasm_debug(" obj_segment: < %s >, pass=%d, *bits=%d\n", + name, pass, *bits); #endif if (!name) { *bits = 16; @@ -1386,8 +1380,8 @@ static int32_t obj_segment(char *name, int pass, int *bits) if (!strcmp(seg->name, name)) { if (attrs > 0 && pass == 1) - nasm_error(ERR_WARNING, "segment attributes specified on" - " redeclaration of segment: ignoring"); + nasm_warn("segment attributes specified on" + " redeclaration of segment: ignoring"); if (seg->use32) *bits = 32; else @@ -1477,8 +1471,7 @@ static int32_t obj_segment(char *name, int pass, int *bits) seg->align = readnum(p + 6, &rn_error); if (rn_error) { seg->align = 1; - nasm_error(ERR_NONFATAL, "segment alignment should be" - " numeric"); + nasm_nonfatal("segment alignment should be numeric"); } switch (seg->align) { case 1: /* BYTE */ @@ -1489,38 +1482,35 @@ static int32_t obj_segment(char *name, int pass, int *bits) case 4096: /* PharLap extension */ break; case 8: - nasm_error(ERR_WARNING, - "OBJ format does not support alignment" - " of 8: rounding up to 16"); + nasm_warn("OBJ format does not support alignment" + " of 8: rounding up to 16"); seg->align = 16; break; case 32: case 64: case 128: - nasm_error(ERR_WARNING, - "OBJ format does not support alignment" - " of %d: rounding up to 256", seg->align); + nasm_warn("OBJ format does not support alignment" + " of %d: rounding up to 256", seg->align); seg->align = 256; break; case 512: case 1024: case 2048: - nasm_error(ERR_WARNING, - "OBJ format does not support alignment" - " of %d: rounding up to 4096", seg->align); + nasm_warn("OBJ format does not support alignment" + " of %d: rounding up to 4096", seg->align); seg->align = 4096; break; default: - nasm_error(ERR_NONFATAL, "invalid alignment value %d", - seg->align); + nasm_nonfatal("invalid alignment value %d", + seg->align); seg->align = 1; break; } } else if (!nasm_strnicmp(p, "absolute=", 9)) { seg->align = SEG_ABS + readnum(p + 9, &rn_error); if (rn_error) - nasm_error(ERR_NONFATAL, "argument to `absolute' segment" - " attribute should be numeric"); + nasm_nonfatal("argument to `absolute' segment" + " attribute should be numeric"); } } @@ -1544,10 +1534,9 @@ static int32_t obj_segment(char *name, int pass, int *bits) grp->segs[i] = grp->segs[grp->nindices]; grp->segs[grp->nindices++].index = seg->obj_index; if (seg->grp) - nasm_error(ERR_WARNING, - "segment `%s' is already part of" - " a group: first one takes precedence", - seg->name); + nasm_warn("segment `%s' is already part of" + " a group: first one takes precedence", + seg->name); else seg->grp = grp; } @@ -1620,7 +1609,7 @@ obj_directive(enum directive directive, char *value, int pass) for (grp = grphead; grp; grp = grp->next) { obj_idx++; if (!strcmp(grp->name, v)) { - nasm_error(ERR_NONFATAL, "group `%s' defined twice", v); + nasm_nonfatal("group `%s' defined twice", v); return DIRR_ERROR; } } @@ -1660,10 +1649,9 @@ obj_directive(enum directive directive, char *value, int pass) grp->segs[grp->nentries++] = grp->segs[grp->nindices]; grp->segs[grp->nindices++].index = seg->obj_index; if (seg->grp) - nasm_error(ERR_WARNING, - "segment `%s' is already part of" - " a group: first one takes precedence", - seg->name); + nasm_warn("segment `%s' is already part of" + " a group: first one takes precedence", + seg->name); else seg->grp = grp; } else { @@ -1725,8 +1713,8 @@ obj_directive(enum directive directive, char *value, int pass) impname = q; if (!*extname || !*libname) - nasm_error(ERR_NONFATAL, "`import' directive requires symbol name" - " and library name"); + nasm_nonfatal("`import' directive requires symbol name" + " and library name"); else { struct ImpDef *imp; bool err = false; @@ -1773,7 +1761,7 @@ obj_directive(enum directive directive, char *value, int pass) } if (!*intname) { - nasm_error(ERR_NONFATAL, "`export' directive requires export name"); + nasm_nonfatal("`export' directive requires export name"); return DIRR_OK; } if (!*extname) { @@ -1797,16 +1785,14 @@ obj_directive(enum directive directive, char *value, int pass) bool err = false; flags |= EXPDEF_MASK_PARMCNT & readnum(v + 5, &err); if (err) { - nasm_error(ERR_NONFATAL, - "value `%s' for `parm' is non-numeric", v + 5); + nasm_nonfatal("value `%s' for `parm' is non-numeric", v + 5); return DIRR_ERROR; } } else { bool err = false; ordinal = readnum(v, &err); if (err) { - nasm_error(ERR_NONFATAL, - "unrecognised export qualifier `%s'", v); + nasm_nonfatal("unrecognised export qualifier `%s'", v); return DIRR_ERROR; } flags |= EXPDEF_FLAG_ORDINAL; @@ -2092,8 +2078,8 @@ static void obj_write_file(void) /* acbp |= 0x00 */ ; else if (seg->align >= 4096) { if (seg->align > 4096) - nasm_error(ERR_NONFATAL, "segment `%s' requires more alignment" - " than OBJ format supports", seg->name); + nasm_nonfatal("segment `%s' requires more alignment" + " than OBJ format supports", seg->name); acbp |= 0xC0; /* PharLap extension */ } else if (seg->align >= 256) { acbp |= 0x80; @@ -2127,8 +2113,8 @@ static void obj_write_file(void) if (grp->nindices != grp->nentries) { for (i = grp->nindices; i < grp->nentries; i++) { - nasm_error(ERR_NONFATAL, "group `%s' contains undefined segment" - " `%s'", grp->name, grp->segs[i].name); + nasm_nonfatal("group `%s' contains undefined segment" + " `%s'", grp->name, grp->segs[i].name); nasm_free(grp->segs[i].name); grp->segs[i].name = NULL; } @@ -2350,7 +2336,7 @@ static void obj_write_file(void) } } if (!seg) - nasm_error(ERR_NONFATAL, "entry point is not in this module"); + nasm_nonfatal("entry point is not in this module"); } /* |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-02 08:51:30
|
Commit-ID: f8d9bf9d833d6ee64349259e9261cbfffbb3de53 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=f8d9bf9d833d6ee64349259e9261cbfffbb3de53 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sun, 2 Dec 2018 11:41:06 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 2 Dec 2018 11:41:06 +0300 output: ieee -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outieee.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/output/outieee.c b/output/outieee.c index ce4830d..30f38bc 100644 --- a/output/outieee.c +++ b/output/outieee.c @@ -294,9 +294,8 @@ static void ieee_deflabel(char *name, int32_t segment, struct ieeeSection *seg; int i; - if (special) { - nasm_error(ERR_NONFATAL, "unrecognised symbol type `%s'", special); - } + if (special) + nasm_nonfatal("unrecognised symbol type `%s'", special); /* * First check for the double-period, signifying something * unusual. @@ -426,8 +425,8 @@ static void ieee_out(int32_t segto, const void *data, if (type == OUT_ADDRESS) size = abs((int)size); else if (segment == NO_SEG) - nasm_error(ERR_NONFATAL, "relative call to absolute address not" - " supported by IEEE format"); + nasm_nonfatal("relative call to absolute address not" + " supported by IEEE format"); ldata = *(int64_t *)data; if (type == OUT_REL2ADR) ldata += (size - 2); @@ -516,14 +515,13 @@ static void ieee_write_fixup(int32_t segment, int32_t wrt, s.addend = 0; s.id2 = eb->index[i]; } else - nasm_error(ERR_NONFATAL, - "Source of WRT must be an offset"); + nasm_nonfatal("source of WRT must be an offset"); } } else nasm_panic("unrecognised WRT value in ieee_write_fixup"); } else - nasm_error(ERR_NONFATAL, "target of WRT must be a section "); + nasm_nonfatal("target of WRT must be a section"); } s.size = size; ieee_install_fixup(segto, &s); @@ -630,8 +628,8 @@ static void ieee_write_fixup(int32_t segment, int32_t wrt, } } if (size != 2 && s.ftype == FT_SEG) - nasm_error(ERR_NONFATAL, "IEEE format can only handle 2-byte" - " segment base references"); + nasm_nonfatal("IEEE format can only handle 2-byte" + " segment base references"); s.size = size; ieee_install_fixup(segto, &s); return; @@ -708,8 +706,8 @@ static int32_t ieee_segment(char *name, int pass, int *bits) ieee_idx++; if (!strcmp(seg->name, name)) { if (attrs > 0 && pass == 1) - nasm_error(ERR_WARNING, "segment attributes specified on" - " redeclaration of segment: ignoring"); + nasm_warn("segment attributes specified on" + " redeclaration of segment: ignoring"); if (seg->use32) *bits = 32; else @@ -764,8 +762,7 @@ static int32_t ieee_segment(char *name, int pass, int *bits) seg->align = 1; if (rn_error) { seg->align = 1; - nasm_error(ERR_NONFATAL, "segment alignment should be" - " numeric"); + nasm_nonfatal("segment alignment should be numeric"); } switch (seg->align) { case 1: /* BYTE */ @@ -779,16 +776,15 @@ static int32_t ieee_segment(char *name, int pass, int *bits) case 128: break; default: - nasm_error(ERR_NONFATAL, "invalid alignment value %d", - seg->align); + nasm_nonfatal("invalid alignment value %d", seg->align); seg->align = 1; break; } } else if (!nasm_strnicmp(p, "absolute=", 9)) { seg->align = SEG_ABS + readnum(p + 9, &rn_error); if (rn_error) - nasm_error(ERR_NONFATAL, "argument to `absolute' segment" - " attribute should be numeric"); + nasm_nonfatal("argument to `absolute' segment" + " attribute should be numeric"); } } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-02 08:51:28
|
Commit-ID: 1c79ece0052e058b03ceadc1b5be066d46262fe9 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=1c79ece0052e058b03ceadc1b5be066d46262fe9 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sun, 2 Dec 2018 11:39:56 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 2 Dec 2018 11:39:56 +0300 output: coff -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outcoff.c | 79 ++++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/output/outcoff.c b/output/outcoff.c index d26e298..c234315 100644 --- a/output/outcoff.c +++ b/output/outcoff.c @@ -316,8 +316,7 @@ static int32_t coff_section_names(char *name, int pass, int *bits) *p++ = '\0'; if (strlen(name) > 8) { if (!win32 && !win64) { - nasm_error(ERR_WARNING, - "COFF section names limited to 8 characters: truncating"); + nasm_warn("COFF section names limited to 8 characters: truncating"); name[8] = '\0'; } } @@ -343,8 +342,8 @@ static int32_t coff_section_names(char *name, int pass, int *bits) flags = RDATA_FLAGS; else { flags = DATA_FLAGS; /* gotta do something */ - nasm_error(ERR_NONFATAL, "standard COFF does not support" - " read-only data sections"); + nasm_nonfatal("standard COFF does not support" + " read-only data sections"); } } else if (!nasm_stricmp(q, "bss")) { flags = BSS_FLAGS; @@ -353,25 +352,24 @@ static int32_t coff_section_names(char *name, int pass, int *bits) flags = INFO_FLAGS; else { flags = DATA_FLAGS; /* gotta do something */ - nasm_error(ERR_NONFATAL, "standard COFF does not support" - " informational sections"); + nasm_nonfatal("standard COFF does not support" + " informational sections"); } } else if (!nasm_strnicmp(q, "align=", 6)) { if (!(win32 | win64)) - nasm_error(ERR_NONFATAL, "standard COFF does not support" - " section alignment specification"); + nasm_nonfatal("standard COFF does not support" + " section alignment specification"); else { if (q[6 + strspn(q + 6, "0123456789")]) - nasm_error(ERR_NONFATAL, - "argument to `align' is not numeric"); + nasm_nonfatal("argument to `align' is not numeric"); else { unsigned int align = atoi(q + 6); if (!align || ((align - 1) & align)) - nasm_error(ERR_NONFATAL, "argument to `align' is not a" - " power of two"); + nasm_nonfatal("argument to `align' is not a" + " power of two"); else if (align > 64) - nasm_error(ERR_NONFATAL, "Win32 cannot align sections" - " to better than 64-byte boundaries"); + nasm_nonfatal("Win32 cannot align sections" + " to better than 64-byte boundaries"); else { align_and = ~0x00F00000L; align_or = coff_sectalign_flags(align); @@ -411,8 +409,8 @@ static int32_t coff_section_names(char *name, int pass, int *bits) /* Warn if non-alignment flags differ */ if ((flags ^ coff_sects[i]->flags) & ~IMAGE_SCN_ALIGN_MASK) { - nasm_error(ERR_WARNING, "section attributes ignored on" - " redeclaration of section `%s'", name); + nasm_warn("section attributes ignored on" + " redeclaration of section `%s'", name); } /* Check if alignment might be needed */ if (align_flags > IMAGE_SCN_ALIGN_1BYTES) { @@ -453,12 +451,12 @@ static void coff_deflabel(char *name, int32_t segment, int64_t offset, struct coff_Symbol *sym; if (special) - nasm_error(ERR_NONFATAL, "COFF format does not support any" - " special symbol types"); + nasm_nonfatal("COFF format does not support any" + " special symbol types"); if (name[0] == '.' && name[1] == '.' && name[2] != '@') { if (strcmp(name,WRT_IMAGEBASE)) - nasm_error(ERR_NONFATAL, "unrecognized special symbol `%s'", name); + nasm_nonfatal("unrecognized special symbol `%s'", name); return; } @@ -556,7 +554,7 @@ static void coff_out(int32_t segto, const void *data, if (wrt != NO_SEG && !win64) { wrt = NO_SEG; /* continue to do _something_ */ - nasm_error(ERR_NONFATAL, "WRT not supported by COFF output formats"); + nasm_nonfatal("WRT not supported by COFF output formats"); } s = NULL; @@ -581,8 +579,8 @@ static void coff_out(int32_t segto, const void *data, } if (!s->data && type != OUT_RESERVE) { - nasm_error(ERR_WARNING, "attempt to initialize memory in" - " BSS section `%s': ignored", s->name); + nasm_warn("attempt to initialize memory in" + " BSS section `%s': ignored", s->name); s->len += realsize(type, size); return; } @@ -605,8 +603,8 @@ static void coff_out(int32_t segto, const void *data, if (type == OUT_RESERVE) { if (s->data) { - nasm_error(ERR_WARNING, "uninitialised space declared in" - " non-BSS section `%s': zeroing", s->name); + nasm_warn("uninitialised space declared in" + " non-BSS section `%s': zeroing", s->name); coff_sect_write(s, NULL, size); } else s->len += size; @@ -616,17 +614,16 @@ static void coff_out(int32_t segto, const void *data, int asize = abs((int)size); if (!win64) { if (asize != 4 && (segment != NO_SEG || wrt != NO_SEG)) { - nasm_error(ERR_NONFATAL, "COFF format does not support non-32-bit" - " relocations"); + nasm_nonfatal("COFF format does not support non-32-bit" + " relocations"); } else { int32_t fix = 0; if (segment != NO_SEG || wrt != NO_SEG) { if (wrt != NO_SEG) { - nasm_error(ERR_NONFATAL, "COFF format does not support" - " WRT types"); + nasm_nonfatal("COFF format does not support WRT types"); } else if (segment % 2) { - nasm_error(ERR_NONFATAL, "COFF format does not support" - " segment base references"); + nasm_nonfatal("COFF format does not support" + " segment base references"); } else fix = coff_add_reloc(s, segment, IMAGE_REL_I386_DIR32); } @@ -639,8 +636,8 @@ static void coff_out(int32_t segto, const void *data, p = mydata; if (asize == 8) { if (wrt == imagebase_sect) { - nasm_error(ERR_NONFATAL, "operand size mismatch: 'wrt " - WRT_IMAGEBASE "' is a 32-bit operand"); + nasm_nonfatal("operand size mismatch: 'wrt " + WRT_IMAGEBASE "' is a 32-bit operand"); } fix = coff_add_reloc(s, segment, IMAGE_REL_AMD64_ADDR64); WRITEDLONG(p, *(int64_t *)data + fix); @@ -654,19 +651,18 @@ static void coff_out(int32_t segto, const void *data, } } } else if (type == OUT_REL2ADR) { - nasm_error(ERR_NONFATAL, "COFF format does not support 16-bit" - " relocations"); + nasm_nonfatal("COFF format does not support 16-bit relocations"); } else if (type == OUT_REL4ADR) { if (segment == segto && !(win64)) /* Acceptable for RIP-relative */ nasm_panic("intra-segment OUT_REL4ADR"); else if (segment == NO_SEG && win32) - nasm_error(ERR_NONFATAL, "Win32 COFF does not correctly support" - " relative references to absolute addresses"); + nasm_nonfatal("Win32 COFF does not correctly support" + " relative references to absolute addresses"); else { int32_t fix = 0; if (segment != NO_SEG && segment % 2) { - nasm_error(ERR_NONFATAL, "COFF format does not support" - " segment base references"); + nasm_nonfatal("COFF format does not support" + " segment base references"); } else fix = coff_add_reloc(s, segment, win64 ? IMAGE_REL_AMD64_REL32 : IMAGE_REL_I386_REL32); @@ -774,11 +770,11 @@ coff_directives(enum directive directive, char *value, int pass) } if (!*name) { - nasm_error(ERR_NONFATAL, "`export' directive requires export name"); + nasm_nonfatal("`export' directive requires export name"); return DIRR_ERROR; } if (*q) { - nasm_error(ERR_NONFATAL, "unrecognized export qualifier `%s'", q); + nasm_nonfatal("unrecognized export qualifier `%s'", q); return DIRR_ERROR; } AddExport(name); @@ -840,8 +836,7 @@ coff_directives(enum directive directive, char *value, int pass) } } if (n == coff_nsyms) { - nasm_error(ERR_NONFATAL, - "`safeseh' directive requires valid symbol"); + nasm_nonfatal("`safeseh' directive requires valid symbol"); return DIRR_ERROR; } } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:20
|
Commit-ID: 20029a586cd519be717cc06b24485ce7365c8ed3 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=20029a586cd519be717cc06b24485ce7365c8ed3 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 21:32:15 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 21:32:15 +0300 output: bin -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outbin.c | 145 +++++++++++++++++++++++++------------------------------- 1 file changed, 64 insertions(+), 81 deletions(-) diff --git a/output/outbin.c b/output/outbin.c index ea49abb..a3220e8 100644 --- a/output/outbin.c +++ b/output/outbin.c @@ -232,8 +232,7 @@ static void bin_cleanup(void) int h; #ifdef DEBUG - nasm_error(ERR_DEBUG, - "bin_cleanup: Sections were initially referenced in this order:\n"); + nasm_debug("bin_cleanup: Sections were initially referenced in this order:\n"); for (h = 0, s = sections; s; h++, s = s->next) fprintf(stdout, "%i. %s\n", h, s->name); #endif @@ -508,8 +507,7 @@ static void bin_cleanup(void) for (h = 0, s = sections; s; s = s->next) { if (!(s->flags & VSTART_DEFINED)) { /* Non-fatal errors after assembly has completed are generally a * no-no, but we'll throw a fatal one eventually so it's ok. */ - nasm_error(ERR_NONFATAL, "cannot compute vstart for section %s", - s->name); + nasm_nonfatal("cannot compute vstart for section %s", s->name); h++; } } @@ -517,8 +515,7 @@ static void bin_cleanup(void) nasm_fatal("circular vfollows path detected"); #ifdef DEBUG - nasm_error(ERR_DEBUG, - "bin_cleanup: Confirm final section order for output file:\n"); + nasm_debug("bin_cleanup: Confirm final section order for output file:\n"); for (h = 0, s = sections; s && (s->flags & TYPE_PROGBITS); h++, s = s->next) fprintf(stdout, "%i. %s\n", h, s->name); @@ -732,7 +729,7 @@ static void bin_out(int32_t segto, const void *data, if (wrt != NO_SEG) { wrt = NO_SEG; /* continue to do _something_ */ - nasm_error(ERR_NONFATAL, "WRT not supported by binary output format"); + nasm_nonfatal("WRT not supported by binary output format"); } /* Find the segment we are targeting. */ @@ -749,8 +746,8 @@ static void bin_out(int32_t segto, const void *data, } if ((s->flags & TYPE_NOBITS) && (type != OUT_RESERVE)) - nasm_error(ERR_WARNING, "attempt to initialize memory in a" - " nobits section: ignored"); + nasm_warn("attempt to initialize memory in a" + " nobits section: ignored"); switch (type) { case OUT_ADDRESS: @@ -759,11 +756,11 @@ static void bin_out(int32_t segto, const void *data, if (segment != NO_SEG && !find_section_by_index(segment)) { if (segment % 2) - nasm_error(ERR_NONFATAL, "binary output format does not support" - " segment base references"); + nasm_nonfatal("binary output format does not support" + " segment base references"); else - nasm_error(ERR_NONFATAL, "binary output format does not support" - " external references"); + nasm_nonfatal("binary output format does not support" + " external references"); segment = NO_SEG; } if (s->flags & TYPE_PROGBITS) { @@ -789,8 +786,8 @@ static void bin_out(int32_t segto, const void *data, case OUT_RESERVE: if (s->flags & TYPE_PROGBITS) { - nasm_error(ERR_WARNING, "uninitialized space declared in" - " %s section: zeroing", s->name); + nasm_warn("uninitialized space declared in" + " %s section: zeroing", s->name); saa_wbytes(s->contents, NULL, size); } break; @@ -804,11 +801,11 @@ static void bin_out(int32_t segto, const void *data, size = realsize(type, size); if (segment != NO_SEG && !find_section_by_index(segment)) { if (segment % 2) - nasm_error(ERR_NONFATAL, "binary output format does not support" - " segment base references"); + nasm_nonfatal("binary output format does not support" + " segment base references"); else - nasm_error(ERR_NONFATAL, "binary output format does not support" - " external references"); + nasm_nonfatal("binary output format does not support" + " external references"); segment = NO_SEG; } if (s->flags & TYPE_PROGBITS) { @@ -821,7 +818,7 @@ static void bin_out(int32_t segto, const void *data, } default: - nasm_error(ERR_NONFATAL, "unsupported relocation type %d\n", type); + nasm_nonfatal("unsupported relocation type %d\n", type); break; } @@ -835,13 +832,13 @@ static void bin_deflabel(char *name, int32_t segment, int64_t offset, (void)offset; /* Don't warn that this parameter is unused */ if (special) - nasm_error(ERR_NONFATAL, "binary format does not support any" - " special symbol types"); + nasm_nonfatal("binary format does not support any" + " special symbol types"); else if (name[0] == '.' && name[1] == '.' && name[2] != '@') - nasm_error(ERR_NONFATAL, "unrecognised special symbol `%s'", name); + nasm_nonfatal("unrecognised special symbol `%s'", name); else if (is_global == 2) - nasm_error(ERR_NONFATAL, "binary output format does not support common" - " variables"); + nasm_nonfatal("binary output format does not support common" + " variables"); else { struct Section *s; struct bin_label ***ltp; @@ -955,14 +952,13 @@ static int bin_read_attribute(char **line, int *attribute, break; } if (!**line) { - nasm_error(ERR_NONFATAL, - "invalid syntax in `section' directive"); + nasm_nonfatal("invalid syntax in `section' directive"); return -1; } ++(*line); } if (!**line) { - nasm_error(ERR_NONFATAL, "expecting `)'"); + nasm_nonfatal("expecting `)'"); return -1; } } @@ -971,8 +967,8 @@ static int bin_read_attribute(char **line, int *attribute, /* Check for no value given. */ if (!*exp) { - nasm_error(ERR_WARNING, "No value given to attribute in" - " `section' directive"); + nasm_warn("No value given to attribute in" + " `section' directive"); return -1; } @@ -983,13 +979,13 @@ static int bin_read_attribute(char **line, int *attribute, e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); if (e) { if (!is_really_simple(e)) { - nasm_error(ERR_NONFATAL, "section attribute value must be" - " a critical expression"); + nasm_nonfatal("section attribute value must be" + " a critical expression"); return -1; } } else { - nasm_error(ERR_NONFATAL, "Invalid attribute value" - " specified in `section' directive."); + nasm_nonfatal("Invalid attribute value" + " specified in `section' directive."); return -1; } *value = (uint64_t)reloc_value(e); @@ -1033,8 +1029,7 @@ static void bin_assign_attributes(struct Section *sec, char *astring) *astring = '\0'; astring++; } - nasm_error(ERR_WARNING, "ignoring unknown section attribute:" - " \"%s\"", p); + nasm_warn("ignoring unknown section attribute: \"%s\"", p); } continue; } @@ -1043,9 +1038,8 @@ static void bin_assign_attributes(struct Section *sec, char *astring) case ATTRIB_NOBITS: if ((sec->flags & TYPE_DEFINED) && (sec->flags & TYPE_PROGBITS)) - nasm_error(ERR_NONFATAL, - "attempt to change section type" - " from progbits to nobits"); + nasm_nonfatal("attempt to change section type" + " from progbits to nobits"); else sec->flags |= TYPE_DEFINED | TYPE_NOBITS; continue; @@ -1053,8 +1047,8 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Handle progbits attribute. */ case ATTRIB_PROGBITS: if ((sec->flags & TYPE_DEFINED) && (sec->flags & TYPE_NOBITS)) - nasm_error(ERR_NONFATAL, "attempt to change section type" - " from nobits to progbits"); + nasm_nonfatal("attempt to change section type" + " from nobits to progbits"); else sec->flags |= TYPE_DEFINED | TYPE_PROGBITS; continue; @@ -1062,8 +1056,7 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Handle align attribute. */ case ATTRIB_ALIGN: if (!value || ((value - 1) & value)) { - nasm_error(ERR_NONFATAL, - "argument to `align' is not a power of two"); + nasm_nonfatal("argument to `align' is not a power of two"); } else { /* * Alignment is already satisfied if @@ -1074,8 +1067,7 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Don't allow a conflicting align value. */ if ((sec->flags & START_DEFINED) && (sec->start & (value - 1))) { - nasm_error(ERR_NONFATAL, - "`align' value conflicts with section start address"); + nasm_nonfatal("`align' value conflicts with section start address"); } else { sec->align = value; sec->flags |= ALIGN_DEFINED; @@ -1086,8 +1078,7 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Handle valign attribute. */ case ATTRIB_VALIGN: if (!value || ((value - 1) & value)) - nasm_error(ERR_NONFATAL, "argument to `valign' is not a" - " power of two"); + nasm_nonfatal("argument to `valign' is not a power of two"); else { /* Alignment is already satisfied if the previous * align value is greater. */ if ((sec->flags & VALIGN_DEFINED) && (value < sec->valign)) @@ -1096,9 +1087,7 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Don't allow a conflicting valign value. */ if ((sec->flags & VSTART_DEFINED) && (sec->vstart & (value - 1))) - nasm_error(ERR_NONFATAL, - "`valign' value conflicts " - "with `vstart' address"); + nasm_nonfatal("`valign' value conflicts with `vstart' address"); else { sec->valign = value; sec->flags |= VALIGN_DEFINED; @@ -1109,17 +1098,17 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Handle start attribute. */ case ATTRIB_START: if (sec->flags & FOLLOWS_DEFINED) - nasm_error(ERR_NONFATAL, "cannot combine `start' and `follows'" - " section attributes"); + nasm_nonfatal("cannot combine `start' and `follows'" + " section attributes"); else if ((sec->flags & START_DEFINED) && (value != sec->start)) - nasm_error(ERR_NONFATAL, "section start address redefined"); + nasm_nonfatal("section start address redefined"); else { sec->start = value; sec->flags |= START_DEFINED; if (sec->flags & ALIGN_DEFINED) { if (sec->start & (sec->align - 1)) - nasm_error(ERR_NONFATAL, "`start' address conflicts" - " with section alignment"); + nasm_nonfatal("`start' address conflicts" + " with section alignment"); sec->flags ^= ALIGN_DEFINED; } } @@ -1128,21 +1117,19 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Handle vstart attribute. */ case ATTRIB_VSTART: if (sec->flags & VFOLLOWS_DEFINED) - nasm_error(ERR_NONFATAL, - "cannot combine `vstart' and `vfollows'" - " section attributes"); + nasm_nonfatal("cannot combine `vstart' and `vfollows'" + " section attributes"); else if ((sec->flags & VSTART_DEFINED) && (value != sec->vstart)) - nasm_error(ERR_NONFATAL, - "section virtual start address" - " (vstart) redefined"); + nasm_nonfatal("section virtual start address" + " (vstart) redefined"); else { sec->vstart = value; sec->flags |= VSTART_DEFINED; if (sec->flags & VALIGN_DEFINED) { if (sec->vstart & (sec->valign - 1)) - nasm_error(ERR_NONFATAL, "`vstart' address conflicts" - " with `valign' value"); + nasm_nonfatal("`vstart' address conflicts" + " with `valign' value"); sec->flags ^= VALIGN_DEFINED; } } @@ -1153,14 +1140,13 @@ static void bin_assign_attributes(struct Section *sec, char *astring) p = astring; astring += strcspn(astring, " \t"); if (astring == p) - nasm_error(ERR_NONFATAL, "expecting section name for `follows'" - " attribute"); + nasm_nonfatal("expecting section name for `follows'" + " attribute"); else { *(astring++) = '\0'; if (sec->flags & START_DEFINED) - nasm_error(ERR_NONFATAL, - "cannot combine `start' and `follows'" - " section attributes"); + nasm_nonfatal("cannot combine `start' and `follows'" + " section attributes"); sec->follows = nasm_strdup(p); sec->flags |= FOLLOWS_DEFINED; } @@ -1169,16 +1155,14 @@ static void bin_assign_attributes(struct Section *sec, char *astring) /* Handle vfollows attribute. */ case ATTRIB_VFOLLOWS: if (sec->flags & VSTART_DEFINED) - nasm_error(ERR_NONFATAL, - "cannot combine `vstart' and `vfollows'" - " section attributes"); + nasm_nonfatal("cannot combine `vstart' and `vfollows'" + " section attributes"); else { p = astring; astring += strcspn(astring, " \t"); if (astring == p) - nasm_error(ERR_NONFATAL, - "expecting section name for `vfollows'" - " attribute"); + nasm_nonfatal("expecting section name for `vfollows'" + " attribute"); else { *(astring++) = '\0'; sec->vfollows = nasm_strdup(p); @@ -1293,21 +1277,21 @@ bin_directive(enum directive directive, char *args, int pass) e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); if (e) { if (!is_really_simple(e)) - nasm_error(ERR_NONFATAL, "org value must be a critical" + nasm_nonfatal("org value must be a critical" " expression"); else { value = reloc_value(e); /* Check for ORG redefinition. */ if (origin_defined && (value != origin)) - nasm_error(ERR_NONFATAL, "program origin redefined"); + nasm_nonfatal("program origin redefined"); else { origin = value; origin_defined = 1; } } } else - nasm_error(ERR_NONFATAL, "No or invalid offset specified" - " in ORG directive."); + nasm_nonfatal("No or invalid offset specified" + " in ORG directive."); return DIRR_OK; } case D_MAP: @@ -1343,14 +1327,13 @@ bin_directive(enum directive directive, char *args, int pass) else { /* Must be a filename. */ rf = nasm_open_write(p, NF_TEXT); if (!rf) { - nasm_error(ERR_WARNING, "unable to open map file `%s'", - p); + nasm_warn("unable to open map file `%s'", p); map_control = 0; return DIRR_OK; } } } else - nasm_error(ERR_WARNING, "map file already specified"); + nasm_warn("map file already specified"); } if (map_control == 0) map_control |= MAP_ORIGIN | MAP_SUMMARY; |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:20
|
Commit-ID: a14e65699b78396418816416c37af11e59503362 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=a14e65699b78396418816416c37af11e59503362 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 20:20:50 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 20:20:50 +0300 parser: Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/parser.c | 142 ++++++++++++++++++++++++----------------------------------- 1 file changed, 58 insertions(+), 84 deletions(-) diff --git a/asm/parser.c b/asm/parser.c index 78f347f..8f08198 100644 --- a/asm/parser.c +++ b/asm/parser.c @@ -139,8 +139,7 @@ static void process_size_override(insn *result, operand *op) op->type |= BITS128; break; default: - nasm_error(ERR_NONFATAL, - "invalid operand size specification"); + nasm_nonfatal("invalid operand size specification"); break; } } else { @@ -164,8 +163,7 @@ static void process_size_override(insn *result, operand *op) case P_A64: if (result->prefixes[PPS_ASIZE] && result->prefixes[PPS_ASIZE] != tokval.t_integer) - nasm_error(ERR_NONFATAL, - "conflicting address size specifications"); + nasm_nonfatal("conflicting address size specifications"); else result->prefixes[PPS_ASIZE] = tokval.t_integer; break; @@ -183,8 +181,8 @@ static void process_size_override(insn *result, operand *op) op->eaflags |= EAF_WORDOFFS; break; default: - nasm_error(ERR_NONFATAL, "invalid size specification in" - " effective address"); + nasm_nonfatal("invalid size specification in" + " effective address"); break; } } @@ -205,9 +203,8 @@ static bool parse_braces(decoflags_t *decoflags) switch (i) { case TOKEN_OPMASK: if (*decoflags & OPMASK_MASK) { - nasm_error(ERR_NONFATAL, - "opmask k%"PRIu64" is already set", - *decoflags & OPMASK_MASK); + nasm_nonfatal("opmask k%"PRIu64" is already set", + *decoflags & OPMASK_MASK); *decoflags &= ~OPMASK_MASK; } *decoflags |= VAL_OPMASK(nasm_regvals[tokval.t_integer]); @@ -225,9 +222,8 @@ static bool parse_braces(decoflags_t *decoflags) *decoflags |= BRDCAST_MASK | VAL_BRNUM(j - BRC_1TO2); break; default: - nasm_error(ERR_NONFATAL, - "{%s} is not an expected decorator", - tokval.t_charptr); + nasm_nonfatal("{%s} is not an expected decorator", + tokval.t_charptr); break; } break; @@ -235,8 +231,7 @@ static bool parse_braces(decoflags_t *decoflags) case TOKEN_EOS: return false; default: - nasm_error(ERR_NONFATAL, - "only a series of valid decorators expected"); + nasm_nonfatal("only a series of valid decorators expected"); return true; } i = stdscan(NULL, &tokval); @@ -269,8 +264,7 @@ static int parse_mref(operand *op, const expr *e) else if (!is_gpr || e->value != 1) { /* If both want to be index */ - nasm_error(ERR_NONFATAL, - "invalid effective address: two index registers"); + nasm_nonfatal("invalid effective address: two index registers"); return -1; } else b = e->type; @@ -279,8 +273,7 @@ static int parse_mref(operand *op, const expr *e) if (e->type) { /* is there an offset? */ if (e->type <= EXPR_REG_END) { /* in fact, is there an error? */ - nasm_error(ERR_NONFATAL, - "invalid effective address: impossible register"); + nasm_nonfatal("invalid effective address: impossible register"); return -1; } else { if (e->type == EXPR_UNKNOWN) { @@ -305,17 +298,14 @@ static int parse_mref(operand *op, const expr *e) continue; if (e->type <= EXPR_REG_END) { - nasm_error(ERR_NONFATAL, - "invalid effective address: too many registers"); + nasm_nonfatal("invalid effective address: too many registers"); return -1; } else if (e->type < EXPR_SEGBASE) { - nasm_error(ERR_NONFATAL, - "invalid effective address: bad subexpression type"); + nasm_nonfatal("invalid effective address: bad subexpression type"); return -1; } else if (e->value == 1) { if (op->segment != NO_SEG) { - nasm_error(ERR_NONFATAL, - "invalid effective address: multiple base segments"); + nasm_nonfatal("invalid effective address: multiple base segments"); return -1; } op->segment = e->type - EXPR_SEGBASE; @@ -324,8 +314,7 @@ static int parse_mref(operand *op, const expr *e) !(op->opflags & OPFLAG_RELATIVE)) { op->opflags |= OPFLAG_RELATIVE; } else { - nasm_error(ERR_NONFATAL, - "invalid effective address: impossible segment base multiplier"); + nasm_nonfatal("invalid effective address: impossible segment base multiplier"); return -1; } } @@ -462,8 +451,7 @@ restart_parse: i != TOKEN_INSN && i != TOKEN_PREFIX && (i != TOKEN_REG || !IS_SREG(tokval.t_integer))) { - nasm_error(ERR_NONFATAL, - "label or instruction expected at start of line"); + nasm_nonfatal("label or instruction expected at start of line"); goto fail; } @@ -475,8 +463,8 @@ restart_parse: if (i == ':') { /* skip over the optional colon */ i = stdscan(NULL, &tokval); } else if (i == 0) { - nasm_error(ERR_WARNING | ERR_WARN_OL | ERR_PASS1, - "label alone on a line without a colon might be in error"); + nasm_warnf(ERR_WARN_OL | ERR_PASS1, + "label alone on a line without a colon might be in error"); } if (i != TOKEN_INSN || tokval.t_integer != I_EQU) { /* @@ -512,13 +500,12 @@ restart_parse: if (!value) /* Error in evaluator */ goto fail; if (!is_simple(value)) { - nasm_error(ERR_NONFATAL, - "non-constant argument supplied to TIMES"); + nasm_nonfatal("non-constant argument supplied to TIMES"); result->times = 1L; } else { result->times = value->value; if (value->value < 0) { - nasm_error(ERR_NONFATAL|ERR_PASS2, "TIMES value %"PRId64" is negative", value->value); + nasm_nonfatalf(ERR_PASS2, "TIMES value %"PRId64" is negative", value->value); result->times = 0; } } @@ -526,11 +513,9 @@ restart_parse: int slot = prefix_slot(tokval.t_integer); if (result->prefixes[slot]) { if (result->prefixes[slot] == tokval.t_integer) - nasm_error(ERR_WARNING | ERR_PASS1, - "instruction has redundant prefixes"); + nasm_warnf(ERR_PASS1, "instruction has redundant prefixes"); else - nasm_error(ERR_NONFATAL, - "instruction has conflicting prefixes"); + nasm_nonfatal("instruction has conflicting prefixes"); } result->prefixes[slot] = tokval.t_integer; i = stdscan(NULL, &tokval); @@ -560,7 +545,7 @@ restart_parse: result->oprs[0].segment = result->oprs[0].wrt = NO_SEG; return result; } else { - nasm_error(ERR_NONFATAL, "parser: instruction expected"); + nasm_nonfatal("parser: instruction expected"); goto fail; } } @@ -627,9 +612,8 @@ restart_parse: i = stdscan(NULL, &tokval); } if (i != TOKEN_STR) { - nasm_error(ERR_NONFATAL, - "%s must be followed by a string constant", - funcname); + nasm_nonfatal("%s must be followed by a string constant", + funcname); eop->type = EOT_NOTHING; } else { eop->type = EOT_DB_STRING_FREE; @@ -637,16 +621,14 @@ restart_parse: string_transform(tokval.t_charptr, tokval.t_inttwo, &eop->stringval, func); if (eop->stringlen == (size_t)-1) { - nasm_error(ERR_NONFATAL, "invalid string for transform"); + nasm_nonfatal("invalid string for transform"); eop->type = EOT_NOTHING; } } if (parens && i && i != ')') { i = stdscan(NULL, &tokval); - if (i != ')') { - nasm_error(ERR_NONFATAL, "unterminated %s function", - funcname); - } + if (i != ')') + nasm_nonfatal("unterminated %s function", funcname); } if (i && i != ',') i = stdscan(NULL, &tokval); @@ -669,12 +651,12 @@ is_float: eop->stringlen = db_bytes(result->opcode); if (eop->stringlen > 16) { - nasm_error(ERR_NONFATAL, "floating-point constant" - " encountered in DY or DZ instruction"); + nasm_nonfatal("floating-point constant" + " encountered in DY or DZ instruction"); eop->stringlen = 0; } else if (eop->stringlen < 1) { - nasm_error(ERR_NONFATAL, "floating-point constant" - " encountered in unknown instruction"); + nasm_nonfatal("floating-point constant" + " encountered in unknown instruction"); /* * fix suggested by Pedro Gimeno... original line was: * eop->type = EOT_NOTHING; @@ -702,9 +684,8 @@ is_expression: if (!value) /* Error in evaluator */ goto fail; if (value_to_extop(value, eop, location.segment)) { - nasm_error(ERR_NONFATAL, - "operand %d: expression is not simple or relocatable", - oper_num); + nasm_nonfatal("operand %d: expression is not simple or relocatable", + oper_num); } } @@ -717,8 +698,7 @@ is_expression: if (i == TOKEN_EOS) /* also could be EOL */ break; if (i != ',') { - nasm_error(ERR_NONFATAL, "comma expected after operand %d", - oper_num); + nasm_nonfatal("comma expected after operand %d", oper_num); goto fail; } } @@ -730,19 +710,18 @@ is_expression: * operands. */ if (!result->eops || result->eops->type != EOT_DB_STRING) - nasm_error(ERR_NONFATAL, "`incbin' expects a file name"); + nasm_nonfatal("`incbin' expects a file name"); else if (result->eops->next && result->eops->next->type != EOT_DB_NUMBER) - nasm_error(ERR_NONFATAL, "`incbin': second parameter is" - " non-numeric"); + nasm_nonfatal("`incbin': second parameter is" + " non-numeric"); else if (result->eops->next && result->eops->next->next && result->eops->next->next->type != EOT_DB_NUMBER) - nasm_error(ERR_NONFATAL, "`incbin': third parameter is" - " non-numeric"); + nasm_nonfatal("`incbin': third parameter is" + " non-numeric"); else if (result->eops->next && result->eops->next->next && result->eops->next->next->next) - nasm_error(ERR_NONFATAL, - "`incbin': more than three parameters"); + nasm_nonfatal("`incbin': more than three parameters"); else return result; /* @@ -751,8 +730,7 @@ is_expression: */ goto fail; } else /* DB ... */ if (oper_num == 0) - nasm_error(ERR_WARNING | ERR_PASS1, - "no operand for data declaration"); + nasm_warnf(ERR_PASS1, "no operand for data declaration"); else result->operands = oper_num; @@ -846,7 +824,7 @@ is_expression: op->type |= SHORT; break; default: - nasm_error(ERR_NONFATAL, "invalid operand size specification"); + nasm_nonfatal("invalid operand size specification"); } i = stdscan(NULL, &tokval); } @@ -872,9 +850,8 @@ is_expression: } if ((op->type & FAR) && !mref && - result->opcode != I_JMP && result->opcode != I_CALL) { - nasm_error(ERR_NONFATAL, "invalid use of FAR operand specifier"); - } + result->opcode != I_JMP && result->opcode != I_CALL) + nasm_nonfatal("invalid use of FAR operand specifier"); value = evaluate(stdscan, NULL, &tokval, &op->opflags, critical, &hints); @@ -891,10 +868,9 @@ is_expression: if (value[1].type != 0 || value->value != 1 || !IS_SREG(value->type)) - nasm_error(ERR_NONFATAL, "invalid segment override"); + nasm_nonfatal("invalid segment override"); else if (result->prefixes[PPS_SEG]) - nasm_error(ERR_NONFATAL, - "instruction has conflicting segment overrides"); + nasm_nonfatal("instruction has conflicting segment overrides"); else { result->prefixes[PPS_SEG] = value->type; if (IS_FSGS(value->type)) @@ -944,7 +920,7 @@ is_expression: if (o1.indexreg != -1 || o2.basereg != -1 || o2.offset != 0 || o2.segment != NO_SEG || o2.wrt != NO_SEG) { - nasm_error(ERR_NONFATAL, "invalid mib expression"); + nasm_nonfatal("invalid mib expression"); goto fail; } @@ -972,7 +948,7 @@ is_expression: recover = false; if (mref && bracket) { /* find ] at the end */ if (i != ']') { - nasm_error(ERR_NONFATAL, "parser: expecting ]"); + nasm_nonfatal("parser: expecting ]"); recover = true; } else { /* we got the required ] */ i = stdscan(NULL, &tokval); @@ -982,15 +958,15 @@ is_expression: i = tokval.t_type; } if (i != 0 && i != ',') { - nasm_error(ERR_NONFATAL, "comma or end of line expected"); + nasm_nonfatal("comma or end of line expected"); recover = true; } } } else { /* immediate operand */ if (i != 0 && i != ',' && i != ':' && i != TOKEN_DECORATOR && i != TOKEN_OPMASK) { - nasm_error(ERR_NONFATAL, "comma, colon, decorator or end of " - "line expected after operand"); + nasm_nonfatal("comma, colon, decorator or end of " + "line expected after operand"); recover = true; } else if (i == ':') { op->type |= COLON; @@ -1073,7 +1049,7 @@ is_expression: result->evex_rm = value->value; break; default: - nasm_error(ERR_NONFATAL, "invalid decorator"); + nasm_nonfatal("invalid decorator"); break; } } else { /* it's a register */ @@ -1081,7 +1057,7 @@ is_expression: uint64_t regset_size = 0; if (value->type >= EXPR_SIMPLE || value->value != 1) { - nasm_error(ERR_NONFATAL, "invalid operand type"); + nasm_nonfatal("invalid operand type"); goto fail; } @@ -1101,15 +1077,14 @@ is_expression: } /* fallthrough */ default: - nasm_error(ERR_NONFATAL, "invalid operand type"); + nasm_nonfatal("invalid operand type"); goto fail; } } if ((regset_size & (regset_size - 1)) || regset_size >= (UINT64_C(1) << REGSET_BITS)) { - nasm_error(ERR_NONFATAL | ERR_PASS2, - "invalid register set size"); + nasm_nonfatalf(ERR_PASS2, "invalid register set size"); regset_size = 0; } @@ -1137,7 +1112,7 @@ is_expression: */ if (value->type < EXPR_REG_START || value->type > EXPR_REG_END) { - nasm_error(ERR_NONFATAL, "invalid operand type"); + nasm_nonfatal("invalid operand type"); goto fail; } @@ -1149,8 +1124,7 @@ is_expression: op->basereg = value->type; if (rs && (op->type & SIZE_MASK) != rs) - nasm_error(ERR_WARNING | ERR_PASS1, - "register size specification ignored"); + nasm_warnf(ERR_PASS1, "register size specification ignored"); } } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:19
|
Commit-ID: 8525757a315e6d3a5b8d2d4175dd6fb5e2133ec6 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=8525757a315e6d3a5b8d2d4175dd6fb5e2133ec6 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 21:26:18 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 21:26:18 +0300 output: codeview -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/codeview.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/output/codeview.c b/output/codeview.c index 0fbdcab..51eb2ea 100644 --- a/output/codeview.c +++ b/output/codeview.c @@ -369,9 +369,9 @@ done_0: fclose(f); done: if (!success) { - nasm_error(ERR_NONFATAL, "unable to hash file %s. " - "Debug information may be unavailable.\n", - filename); + nasm_nonfatal("unable to hash file %s. " + "Debug information may be unavailable.", + filename); } return; } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:19
|
Commit-ID: 4dc5360b6019f462571af7d86f9eb5792ddb78f8 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=4dc5360b6019f462571af7d86f9eb5792ddb78f8 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 21:29:14 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 21:29:14 +0300 output: aout -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outaout.c | 97 +++++++++++++++++++++++++++----------------------------- 1 file changed, 47 insertions(+), 50 deletions(-) diff --git a/output/outaout.c b/output/outaout.c index 0ad797e..ccfda4d 100644 --- a/output/outaout.c +++ b/output/outaout.c @@ -275,7 +275,7 @@ static void aout_deflabel(char *name, int32_t segment, int64_t offset, if (strcmp(name, "..gotpc") && strcmp(name, "..gotoff") && strcmp(name, "..got") && strcmp(name, "..plt") && strcmp(name, "..sym")) - nasm_error(ERR_NONFATAL, "unrecognised special symbol `%s'", name); + nasm_nonfatal("unrecognised special symbol `%s'", name); return; } @@ -298,8 +298,8 @@ static void aout_deflabel(char *name, int32_t segment, int64_t offset, e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); if (e) { if (!is_simple(e)) - nasm_error(ERR_NONFATAL, "cannot use relocatable" - " expression as symbol size"); + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); else (*s)->size = reloc_value(e); } @@ -367,8 +367,8 @@ static void aout_deflabel(char *name, int32_t segment, int64_t offset, !nasm_strnicmp(special, "object", n)) sym->type |= SYM_DATA; else - nasm_error(ERR_NONFATAL, "unrecognised symbol type `%.*s'", - n, special); + nasm_nonfatal("unrecognised symbol type `%.*s'", + n, special); if (special[n]) { struct tokenval tokval; expr *e; @@ -376,8 +376,8 @@ static void aout_deflabel(char *name, int32_t segment, int64_t offset, char *saveme = stdscan_get(); if (!bsd) { - nasm_error(ERR_NONFATAL, "Linux a.out does not support" - " symbol size information"); + nasm_nonfatal("Linux a.out does not support" + " symbol size information"); } else { while (special[n] && nasm_isspace(special[n])) n++; @@ -396,8 +396,8 @@ static void aout_deflabel(char *name, int32_t segment, int64_t offset, sym->name = nasm_strdup(name); } else if (e) { if (!is_simple(e)) - nasm_error(ERR_NONFATAL, "cannot use relocatable" - " expression as symbol size"); + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); else sym->size = reloc_value(e); } @@ -422,7 +422,7 @@ static void aout_deflabel(char *name, int32_t segment, int64_t offset, nsyms++; /* and another for the size */ if (special && !special_used) - nasm_error(ERR_NONFATAL, "no special symbol features supported here"); + nasm_nonfatal("no special symbol features supported here"); } static void aout_add_reloc(struct Section *sect, int32_t segment, @@ -490,8 +490,8 @@ static int32_t aout_add_gsym_reloc(struct Section *sect, shead = sbss.gsyms; if (!shead) { if (exact && offset != 0) - nasm_error(ERR_NONFATAL, "unable to find a suitable global symbol" - " for this reference"); + nasm_nonfatal("unable to find a suitable global symbol" + " for this reference"); else aout_add_reloc(sect, segment, type, bytes); return offset; @@ -514,8 +514,8 @@ static int32_t aout_add_gsym_reloc(struct Section *sect, sym = sm; } if (!sym && exact) { - nasm_error(ERR_NONFATAL, "unable to find a suitable global symbol" - " for this reference"); + nasm_nonfatal("unable to find a suitable global symbol" + " for this reference"); return 0; } @@ -561,8 +561,8 @@ static int32_t aout_add_gotoff_reloc(struct Section *sect, int32_t segment, else if (segment == sbss.index) asym = sbss.asym; if (!asym) - nasm_error(ERR_NONFATAL, "`..gotoff' relocations require a non-global" - " symbol in the section"); + nasm_nonfatal("`..gotoff' relocations require a non-global" + " symbol in the section"); r = *sect->tail = nasm_malloc(sizeof(struct Reloc)); sect->tail = &r->next; @@ -593,14 +593,14 @@ static void aout_out(int32_t segto, const void *data, else if (segto == sbss.index) s = NULL; else { - nasm_error(ERR_WARNING, "attempt to assemble code in" - " segment %d: defaulting to `.text'", segto); + nasm_warn("attempt to assemble code in" + " segment %d: defaulting to `.text'", segto); s = &stext; } if (!s && type != OUT_RESERVE) { - nasm_error(ERR_WARNING, "attempt to initialize memory in the" - " BSS section: ignored"); + nasm_warn("attempt to initialize memory in the" + " BSS section: ignored"); sbss.len += realsize(type, size); return; } @@ -609,9 +609,9 @@ static void aout_out(int32_t segto, const void *data, if (type == OUT_RESERVE) { if (s) { - nasm_error(ERR_WARNING, "uninitialized space declared in" - " %s section: zeroing", - (segto == stext.index ? "code" : "data")); + nasm_warn("uninitialized space declared in" + " %s section: zeroing", + (segto == stext.index ? "code" : "data")); aout_sect_write(s, NULL, size); } else sbss.len += size; @@ -622,15 +622,14 @@ static void aout_out(int32_t segto, const void *data, addr = *(int64_t *)data; if (segment != NO_SEG) { if (segment % 2) { - nasm_error(ERR_NONFATAL, "a.out format does not support" - " segment base references"); + nasm_nonfatal("a.out format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { aout_add_reloc(s, segment, RELTYPE_ABSOLUTE, asize); } else if (!bsd) { - nasm_error(ERR_NONFATAL, - "Linux a.out format does not support" - " any use of WRT"); + nasm_nonfatal("Linux a.out format does not support" + " any use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } else if (wrt == aout_gotpc_sect + 1) { is_pic = 0x40; @@ -648,13 +647,11 @@ static void aout_out(int32_t segto, const void *data, false); } else if (wrt == aout_plt_sect + 1) { is_pic = 0x40; - nasm_error(ERR_NONFATAL, - "a.out format cannot produce non-PC-" - "relative PLT references"); + nasm_nonfatal("a.out format cannot produce non-PC-" + "relative PLT references"); } else { - nasm_error(ERR_NONFATAL, - "a.out format does not support this" - " use of WRT"); + nasm_nonfatal("a.out format does not support this" + " use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } } @@ -667,14 +664,14 @@ static void aout_out(int32_t segto, const void *data, aout_sect_write(s, mydata, asize); } else if (type == OUT_REL2ADR) { if (segment != NO_SEG && segment % 2) { - nasm_error(ERR_NONFATAL, "a.out format does not support" - " segment base references"); + nasm_nonfatal("a.out format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { aout_add_reloc(s, segment, RELTYPE_RELATIVE, 2); } else if (!bsd) { - nasm_error(ERR_NONFATAL, "Linux a.out format does not support" - " any use of WRT"); + nasm_nonfatal("Linux a.out format does not support" + " any use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } else if (wrt == aout_plt_sect + 1) { is_pic = 0x40; @@ -682,11 +679,11 @@ static void aout_out(int32_t segto, const void *data, } else if (wrt == aout_gotpc_sect + 1 || wrt == aout_gotoff_sect + 1 || wrt == aout_got_sect + 1) { - nasm_error(ERR_NONFATAL, "a.out format cannot produce PC-" - "relative GOT references"); + nasm_nonfatal("a.out format cannot produce PC-" + "relative GOT references"); } else { - nasm_error(ERR_NONFATAL, "a.out format does not support this" - " use of WRT"); + nasm_nonfatal("a.out format does not support this" + " use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } } @@ -695,14 +692,14 @@ static void aout_out(int32_t segto, const void *data, aout_sect_write(s, mydata, 2L); } else if (type == OUT_REL4ADR) { if (segment != NO_SEG && segment % 2) { - nasm_error(ERR_NONFATAL, "a.out format does not support" - " segment base references"); + nasm_nonfatal("a.out format does not support" + " segment base references"); } else { if (wrt == NO_SEG) { aout_add_reloc(s, segment, RELTYPE_RELATIVE, 4); } else if (!bsd) { - nasm_error(ERR_NONFATAL, "Linux a.out format does not support" - " any use of WRT"); + nasm_nonfatal("Linux a.out format does not support" + " any use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } else if (wrt == aout_plt_sect + 1) { is_pic = 0x40; @@ -710,11 +707,11 @@ static void aout_out(int32_t segto, const void *data, } else if (wrt == aout_gotpc_sect + 1 || wrt == aout_gotoff_sect + 1 || wrt == aout_got_sect + 1) { - nasm_error(ERR_NONFATAL, "a.out format cannot produce PC-" - "relative GOT references"); + nasm_nonfatal("a.out format cannot produce PC-" + "relative GOT references"); } else { - nasm_error(ERR_NONFATAL, "a.out format does not support this" - " use of WRT"); + nasm_nonfatal("a.out format does not support this" + " use of WRT"); wrt = NO_SEG; /* we can at least _try_ to continue */ } } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:19
|
Commit-ID: ba499c2ac77fd0293fed8809c921ee64b2987e10 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=ba499c2ac77fd0293fed8809c921ee64b2987e10 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 21:29:59 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 21:29:59 +0300 output: as86 -- Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- output/outas86.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/output/outas86.c b/output/outas86.c index 13578f0..77fc18b 100644 --- a/output/outas86.c +++ b/output/outas86.c @@ -200,13 +200,13 @@ static void as86_deflabel(char *name, int32_t segment, int64_t offset, struct Symbol *sym; if (special) - nasm_error(ERR_NONFATAL, "as86 format does not support any" - " special symbol types"); + nasm_nonfatal("as86 format does not support any" + " special symbol types"); if (name[0] == '.' && name[1] == '.' && name[2] != '@') { if (strcmp(name, "..start")) { - nasm_error(ERR_NONFATAL, "unrecognised special symbol `%s'", name); + nasm_nonfatal("unrecognised special symbol `%s'", name); return; } else { is_start = true; @@ -294,7 +294,7 @@ static void as86_out(int32_t segto, const void *data, if (wrt != NO_SEG) { wrt = NO_SEG; /* continue to do _something_ */ - nasm_error(ERR_NONFATAL, "WRT not supported by as86 output format"); + nasm_nonfatal("WRT not supported by as86 output format"); } if (segto == stext.index) @@ -304,14 +304,14 @@ static void as86_out(int32_t segto, const void *data, else if (segto == bssindex) s = NULL; else { - nasm_error(ERR_WARNING, "attempt to assemble code in" - " segment %d: defaulting to `.text'", segto); + nasm_warn("attempt to assemble code in" + " segment %d: defaulting to `.text'", segto); s = &stext; } if (!s && type != OUT_RESERVE) { - nasm_error(ERR_WARNING, "attempt to initialize memory in the" - " BSS section: ignored"); + nasm_warn("attempt to initialize memory in the" + " BSS section: ignored"); bsslen += realsize(type, size); return; } @@ -320,9 +320,9 @@ static void as86_out(int32_t segto, const void *data, if (type == OUT_RESERVE) { if (s) { - nasm_error(ERR_WARNING, "uninitialized space declared in" - " %s section: zeroing", - (segto == stext.index ? "code" : "data")); + nasm_warn("uninitialized space declared in" + " %s section: zeroing", + (segto == stext.index ? "code" : "data")); as86_sect_write(s, NULL, size); as86_add_piece(s, 0, 0L, 0L, size, 0); } else @@ -334,8 +334,8 @@ static void as86_out(int32_t segto, const void *data, int asize = abs((int)size); if (segment != NO_SEG) { if (segment % 2) { - nasm_error(ERR_NONFATAL, "as86 format does not support" - " segment base references"); + nasm_nonfatal("as86 format does not support" + " segment base references"); } else { offset = *(int64_t *)data; as86_add_piece(s, 1, offset, segment, asize, 0); @@ -349,8 +349,8 @@ static void as86_out(int32_t segto, const void *data, } else if (type == OUT_REL2ADR) { if (segment != NO_SEG) { if (segment % 2) { - nasm_error(ERR_NONFATAL, "as86 format does not support" - " segment base references"); + nasm_nonfatal("as86 format does not support" + " segment base references"); } else { offset = *(int64_t *)data; as86_add_piece(s, 1, offset - size + 2, segment, 2L, @@ -360,8 +360,8 @@ static void as86_out(int32_t segto, const void *data, } else if (type == OUT_REL4ADR) { if (segment != NO_SEG) { if (segment % 2) { - nasm_error(ERR_NONFATAL, "as86 format does not support" - " segment base references"); + nasm_nonfatal("as86 format does not support" + " segment base references"); } else { offset = *(int64_t *)data; as86_add_piece(s, 1, offset - size + 4, segment, 4L, |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:19
|
Commit-ID: 194f93322fcd3f368a46564c7e3a2b8e9caa5ccf Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=194f93322fcd3f368a46564c7e3a2b8e9caa5ccf Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 20:01:40 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 20:01:40 +0300 float: Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/float.c | 60 +++++++++++++++++++++++++----------------------------------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/asm/float.c b/asm/float.c index 32aabc0..eaa6cd2 100644 --- a/asm/float.c +++ b/asm/float.c @@ -182,9 +182,8 @@ static int32_t read_exponent(const char *string, int32_t max) } else if (*string == '_') { /* do nothing */ } else { - nasm_error(ERR_NONFATAL, - "invalid character in floating-point constant %s: '%c'", - "exponent", *string); + nasm_nonfatal("invalid character in floating-point constant %s: '%c'", + "exponent", *string); return INT32_MAX; } string++; @@ -219,8 +218,7 @@ static bool ieee_flconvert(const char *string, fp_limb *mant, if (!seendot) { seendot = true; } else { - nasm_error(ERR_NONFATAL, - "too many periods in floating-point constant"); + nasm_nonfatal("too many periods in floating-point constant"); return false; } } else if (*string >= '0' && *string <= '9') { @@ -234,9 +232,9 @@ static bool ieee_flconvert(const char *string, fp_limb *mant, *p++ = *string - '0'; } else { if (!warned) { - nasm_error(ERR_WARNING|ERR_WARN_FL_TOOLONG|ERR_PASS2, - "floating-point constant significand contains " - "more than %i digits", MANT_DIGITS); + nasm_warnf(ERR_WARN_FL_TOOLONG|ERR_PASS2, + "floating-point constant significand contains " + "more than %i digits", MANT_DIGITS); warned = true; } } @@ -247,9 +245,9 @@ static bool ieee_flconvert(const char *string, fp_limb *mant, } else if (*string == '_') { /* do nothing */ } else { - nasm_error(ERR_NONFATAL|ERR_PASS2, - "invalid character in floating-point constant %s: '%c'", - "significand", *string); + nasm_nonfatalf(ERR_PASS2, + "invalid character in floating-point constant %s: '%c'", + "significand", *string); return false; } string++; @@ -533,8 +531,7 @@ static bool ieee_flconvert_bin(const char *string, int bits, if (!seendot) seendot = true; else { - nasm_error(ERR_NONFATAL, - "too many periods in floating-point constant"); + nasm_nonfatal("too many periods in floating-point constant"); return false; } } else if ((v = hexval(c)) < (unsigned int)radix) { @@ -576,8 +573,7 @@ static bool ieee_flconvert_bin(const char *string, int bits, } else if (c == '_') { /* ignore */ } else { - nasm_error(ERR_NONFATAL, - "floating-point constant: `%c' is invalid character", c); + nasm_nonfatal("floating-point constant: `%c' is invalid character", c); return false; } } @@ -676,8 +672,7 @@ static int to_packed_bcd(const char *str, const char *p, int tv = -1; if (fmt != &ieee_80) { - nasm_error(ERR_NONFATAL, - "packed BCD requires an 80-bit format"); + nasm_nonfatal("packed BCD requires an 80-bit format"); return 0; } @@ -685,10 +680,8 @@ static int to_packed_bcd(const char *str, const char *p, c = *p--; if (c >= '0' && c <= '9') { if (tv < 0) { - if (n == 9) { - nasm_error(ERR_WARNING|ERR_PASS2, - "packed BCD truncated to 18 digits"); - } + if (n == 9) + nasm_warnf(ERR_PASS2, "packed BCD truncated to 18 digits"); tv = c-'0'; } else { if (n < 9) @@ -699,8 +692,7 @@ static int to_packed_bcd(const char *str, const char *p, } else if (c == '_') { /* do nothing */ } else { - nasm_error(ERR_NONFATAL, - "invalid character `%c' in packed BCD constant", c); + nasm_nonfatal("invalid character `%c' in packed BCD constant", c); return 0; } } @@ -760,8 +752,7 @@ static int to_float(const char *str, int s, uint8_t *result, type = FL_INFINITY; break; default: - nasm_error(ERR_NONFATAL, - "internal error: unknown FP constant token `%s'\n", str); + nasm_nonfatal("internal error: unknown FP constant token `%s'", str); type = FL_QNAN; break; } @@ -808,8 +799,8 @@ static int to_float(const char *str, int s, uint8_t *result, type = FL_NORMAL; } else if (exponent > 0) { if (pass0 == 1) - nasm_error(ERR_WARNING|ERR_WARN_FL_OVERFLOW|ERR_PASS2, - "overflow in floating-point constant"); + nasm_warnf(ERR_WARN_FL_OVERFLOW|ERR_PASS2, + "overflow in floating-point constant"); type = FL_INFINITY; } else { /* underflow or denormal; the denormal code handles @@ -843,13 +834,12 @@ static int to_float(const char *str, int s, uint8_t *result, } else { if (daz || is_zero(mant)) { /* Flush denormals to zero */ - nasm_error(ERR_WARNING|ERR_WARN_FL_UNDERFLOW|ERR_PASS2, - "underflow in floating-point constant"); + nasm_warnf(ERR_WARN_FL_UNDERFLOW|ERR_PASS2, + "underflow in floating-point constant"); goto zero; - } else { - nasm_error(ERR_WARNING|ERR_WARN_FL_DENORM|ERR_PASS2, - "denormal floating-point constant"); - } + } else + nasm_warnf(ERR_WARN_FL_DENORM|ERR_PASS2, + "denormal floating-point constant"); } break; } @@ -863,8 +853,8 @@ static int to_float(const char *str, int s, uint8_t *result, ieee_shr(mant, 1); exponent++; if (exponent >= (expmax << 1)-1) { - nasm_error(ERR_WARNING|ERR_WARN_FL_OVERFLOW|ERR_PASS2, - "overflow in floating-point constant"); + nasm_warnf(ERR_WARN_FL_OVERFLOW|ERR_PASS2, + "overflow in floating-point constant"); type = FL_INFINITY; goto overflow; } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:17
|
Commit-ID: b449ce49d9e81c26e7aa2935144dd66bd1f36f08 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=b449ce49d9e81c26e7aa2935144dd66bd1f36f08 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 21:02:51 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 21:02:51 +0300 stdscan: Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/stdscan.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/asm/stdscan.c b/asm/stdscan.c index 30cba3e..9194a92 100644 --- a/asm/stdscan.c +++ b/asm/stdscan.c @@ -113,8 +113,7 @@ static int stdscan_handle_brace(struct tokenval *tv) { if (!(tv->t_flag & TFLAG_BRC_ANY)) { /* invalid token is put inside braces */ - nasm_error(ERR_NONFATAL, - "`%s' is not a valid decorator with braces", tv->t_charptr); + nasm_nonfatal("`%s' is not a valid decorator with braces", tv->t_charptr); tv->t_type = TOKEN_INVALID; } else if (tv->t_flag & TFLAG_BRC_OPT) { if (is_reg_class(OPMASKREG, tv->t_integer)) { @@ -167,10 +166,10 @@ int stdscan(void *private_data, struct tokenval *tv) * is it actually a register or instruction name, or what? */ token_type = nasm_token_hash(ourcopy, tv); - if (unlikely(tv->t_flag & TFLAG_WARN)) { - nasm_error(ERR_WARNING|ERR_PASS1|ERR_WARN_PTR, - "`%s' is not a NASM keyword", tv->t_charptr); - } + if (unlikely(tv->t_flag & TFLAG_WARN)) { + nasm_warnf(ERR_PASS1|ERR_WARN_PTR, "`%s' is not a NASM keyword", + tv->t_charptr); + } if (likely(!(tv->t_flag & TFLAG_BRC))) { /* most of the tokens fall into this case */ @@ -285,8 +284,7 @@ int stdscan(void *private_data, struct tokenval *tv) stdscan_bufptr = nasm_skip_spaces(stdscan_bufptr); /* if brace is not closed properly or token is too long */ if ((*stdscan_bufptr != '}') || (token_len > MAX_KEYWORD)) { - nasm_error(ERR_NONFATAL, - "invalid decorator token inside braces"); + nasm_nonfatal("invalid decorator token inside braces"); return tv->t_type = TOKEN_INVALID; } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:16
|
Commit-ID: 98bf1ba980203ea7bd66142553b678810ee9f116 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=98bf1ba980203ea7bd66142553b678810ee9f116 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 20:04:53 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 20:04:53 +0300 listing: Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/listing.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/asm/listing.c b/asm/listing.c index 6c459e1..b974c46 100644 --- a/asm/listing.c +++ b/asm/listing.c @@ -135,8 +135,7 @@ static void list_init(const char *fname) listfp = nasm_open_write(fname, NF_TEXT); if (!listfp) { - nasm_error(ERR_NONFATAL, "unable to open listing file `%s'", - fname); + nasm_nonfatal("unable to open listing file `%s'", fname); return; } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:16
|
Commit-ID: 7c5de5b7e1df7ab8f428bfacd12120927fdb318f Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=7c5de5b7e1df7ab8f428bfacd12120927fdb318f Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 14:17:40 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 14:17:40 +0300 directiv: Use nasm_ error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/directiv.c | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/asm/directiv.c b/asm/directiv.c index 16a64c0..46ff784 100644 --- a/asm/directiv.c +++ b/asm/directiv.c @@ -124,15 +124,13 @@ static int get_bits(const char *value) break; /* Always safe */ case 32: if (!iflag_cpu_level_ok(&cpu, IF_386)) { - nasm_error(ERR_NONFATAL, - "cannot specify 32-bit segment on processor below a 386"); + nasm_nonfatal("cannot specify 32-bit segment on processor below a 386"); i = 16; } break; case 64: if (!iflag_cpu_level_ok(&cpu, IF_X86_64)) { - nasm_error(ERR_NONFATAL, - "cannot specify 64-bit segment on processor below an x86-64"); + nasm_nonfatal("cannot specify 64-bit segment on processor below an x86-64"); i = 16; } break; @@ -218,7 +216,7 @@ bool process_directives(char *directive) return D_none; /* Not a directive */ case D_corrupt: - nasm_error(ERR_NONFATAL, "invalid directive line"); + nasm_nonfatal("invalid directive line"); break; default: /* It's a backend-specific directive */ @@ -271,18 +269,16 @@ bool process_directives(char *directive) uint64_t align = e->value; if (!is_power2(e->value)) { - nasm_error(ERR_NONFATAL, - "segment alignment `%s' is not power of two", - value); + nasm_nonfatal("segment alignment `%s' is not power of two", + value); } else if (align > UINT64_C(0x7fffffff)) { /* * FIXME: Please make some sane message here * ofmt should have some 'check' method which * would report segment alignment bounds. */ - nasm_error(ERR_NONFATAL, - "absurdly large segment alignment `%s' (2^%d)", - value, ilog2_64(align)); + nasm_nonfatal("absurdly large segment alignment `%s' (2^%d)", + value, ilog2_64(align)); } /* callee should be able to handle all details */ @@ -332,9 +328,8 @@ bool process_directives(char *directive) } } if (!validid) { - nasm_error(ERR_NONFATAL, - "identifier expected after %s, got `%s'", - directive, value); + nasm_nonfatal("identifier expected after %s, got `%s'", + directive, value); break; } @@ -357,12 +352,10 @@ bool process_directives(char *directive) if (sizestr) size = readnum(sizestr, &rn_error); if (!sizestr || rn_error) - nasm_error(ERR_NONFATAL, - "%s size specified in common declaration", - sizestr ? "invalid" : "no"); + nasm_nonfatal("%s size specified in common declaration", + sizestr ? "invalid" : "no"); } else if (sizestr) { - nasm_error(ERR_NONFATAL, "invalid syntax in %s declaration", - directive); + nasm_nonfatal("invalid syntax in %s declaration", directive); } if (!declare_label(value, type, special)) @@ -443,8 +436,7 @@ bool process_directives(char *directive) case D_WARNING: /* [WARNING {+|-|*}warn-name] */ if (!set_warning_status(value)) { - nasm_error(ERR_WARNING|ERR_WARN_UNK_WARNING, - "unknown warning option: %s", value); + nasm_warnf(ERR_WARN_UNK_WARNING, "unknown warning option: %s", value); } break; @@ -507,8 +499,7 @@ bool process_directives(char *directive) /* A common error message */ if (bad_param) { - nasm_error(ERR_NONFATAL, "invalid parameter to [%s] directive", - directive); + nasm_nonfatal("invalid parameter to [%s] directive", directive); } return d != D_none; |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:15
|
Commit-ID: 46c37b377219fc21e4b3037acbd935d7a3d41e51 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=46c37b377219fc21e4b3037acbd935d7a3d41e51 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 20:03:55 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 20:03:55 +0300 labels: Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/labels.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/asm/labels.c b/asm/labels.c index c00d6e5..4e69d99 100644 --- a/asm/labels.c +++ b/asm/labels.c @@ -387,9 +387,8 @@ static bool declare_label_lptr(union label *lptr, if (!lptr->defn.special) lptr->defn.special = perm_copy(special); else if (nasm_stricmp(lptr->defn.special, special)) - nasm_error(ERR_NONFATAL, - "symbol `%s' has inconsistent attributes `%s' and `%s'", - lptr->defn.label, lptr->defn.special, special); + nasm_nonfatal("symbol `%s' has inconsistent attributes `%s' and `%s'", + lptr->defn.label, lptr->defn.special, special); } return true; } @@ -412,8 +411,8 @@ static bool declare_label_lptr(union label *lptr, return false; /* Don't call define_label() after this! */ } - nasm_error(ERR_NONFATAL, "symbol `%s' declared both as %s and %s", - lptr->defn.label, types[lptr->defn.type], types[type]); + nasm_nonfatal("symbol `%s' declared both as %s and %s", + lptr->defn.label, types[lptr->defn.type], types[type]); return false; } @@ -481,9 +480,8 @@ void define_label(const char *label, int32_t segment, * even during the last pass. */ if (changed && pass0 > 1 && lptr->defn.type != LBL_SPECIAL) { - nasm_error(ERR_WARNING, "label `%s' %s during code generation", - lptr->defn.label, - created ? "defined" : "changed"); + nasm_warn("label `%s' %s during code generation", + lptr->defn.label, created ? "defined" : "changed"); } lptr->defn.segment = segment; |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 18:36:15
|
Commit-ID: 636506b78c41a22dce0f5383babb3d0e31599ef7 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=636506b78c41a22dce0f5383babb3d0e31599ef7 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 19:54:15 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 19:54:15 +0300 eval: Use nasm_error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/eval.c | 123 +++++++++++++++++++++++++++++-------------------------------- 1 file changed, 59 insertions(+), 64 deletions(-) diff --git a/asm/eval.c b/asm/eval.c index c5e5c43..3a87d2c 100644 --- a/asm/eval.c +++ b/asm/eval.c @@ -223,19 +223,19 @@ static expr *segment_part(expr * e) return unknown_expr(); if (!is_reloc(e)) { - nasm_error(ERR_NONFATAL, "cannot apply SEG to a non-relocatable value"); + nasm_nonfatal("cannot apply SEG to a non-relocatable value"); return NULL; } seg = reloc_seg(e); if (seg == NO_SEG) { - nasm_error(ERR_NONFATAL, "cannot apply SEG to a non-relocatable value"); + nasm_nonfatal("cannot apply SEG to a non-relocatable value"); return NULL; } else if (seg & SEG_ABS) { return scalarvect(seg & ~SEG_ABS); } else if (seg & 1) { - nasm_error(ERR_NONFATAL, "SEG applied to something which" - " is already a segment base"); + nasm_nonfatal("SEG applied to something which" + " is already a segment base"); return NULL; } else { int32_t base = ofmt->segbase(seg + 1); @@ -317,7 +317,7 @@ static expr *cexpr(void) return NULL; if (tt != ':') { - nasm_error(ERR_NONFATAL, "`?' without matching `:'"); + nasm_nonfatal("`?' without matching `:'"); return NULL; } @@ -331,8 +331,8 @@ static expr *cexpr(void) } else if (is_just_unknown(e)) { e = unknown_expr(); } else { - nasm_error(ERR_NONFATAL, "the left-hand side of `?' must be " - "a scalar value"); + nasm_nonfatal("the left-hand side of `?' must be " + "a scalar value"); } } @@ -354,8 +354,8 @@ static expr *rexp0(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "`|' operator may only be applied to" - " scalar values"); + nasm_nonfatal("`|' operator may only be applied to" + " scalar values"); } if (is_just_unknown(e) || is_just_unknown(f)) @@ -381,8 +381,8 @@ static expr *rexp1(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "`^' operator may only be applied to" - " scalar values"); + nasm_nonfatal("`^' operator may only be applied to" + " scalar values"); } if (is_just_unknown(e) || is_just_unknown(f)) @@ -407,8 +407,8 @@ static expr *rexp2(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "`&' operator may only be applied to" - " scalar values"); + nasm_nonfatal("`&' operator may only be applied to" + " scalar values"); } if (is_just_unknown(e) || is_just_unknown(f)) e = unknown_expr(); @@ -452,14 +452,13 @@ static expr *rexp3(void) if (is_unknown(e)) v = -1; /* means unknown */ else if (!is_really_simple(e)) { - nasm_error(ERR_NONFATAL, - "`%s': operands differ by a non-scalar", - (tto == TOKEN_LE ? "<=" : - tto == TOKEN_LT ? "<" : - tto == TOKEN_GE ? ">=" : - tto == TOKEN_GT ? ">" : - tto == TOKEN_LEG ? "<=>" : - "<internal error>")); + nasm_nonfatal("`%s': operands differ by a non-scalar", + (tto == TOKEN_LE ? "<=" : + tto == TOKEN_LT ? "<" : + tto == TOKEN_GE ? ">=" : + tto == TOKEN_GT ? ">" : + tto == TOKEN_LEG ? "<=>" : + "<internal error>")); v = 0; /* must set it to _something_ */ } else { int64_t vv = reloc_value(e); @@ -498,8 +497,8 @@ static expr *expr0(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "`|' operator may only be applied to" - " scalar values"); + nasm_nonfatal("`|' operator may only be applied to" + " scalar values"); } if (is_just_unknown(e) || is_just_unknown(f)) e = unknown_expr(); @@ -524,8 +523,8 @@ static expr *expr1(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "`^' operator may only be applied to" - " scalar values"); + nasm_nonfatal("`^' operator may only be applied to" + " scalar values"); } if (is_just_unknown(e) || is_just_unknown(f)) e = unknown_expr(); @@ -550,8 +549,8 @@ static expr *expr2(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "`&' operator may only be applied to" - " scalar values"); + nasm_nonfatal("`&' operator may only be applied to" + " scalar values"); } if (is_just_unknown(e) || is_just_unknown(f)) e = unknown_expr(); @@ -577,8 +576,8 @@ static expr *expr3(void) return NULL; if (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f))) { - nasm_error(ERR_NONFATAL, "shift operator may only be applied to" - " scalar values"); + nasm_nonfatal("shift operator may only be applied to" + " scalar values"); } else if (is_just_unknown(e) || is_just_unknown(f)) { e = unknown_expr(); } else { @@ -641,12 +640,12 @@ static expr *expr5(void) return NULL; if (tto != '*' && (!(is_simple(e) || is_just_unknown(e)) || !(is_simple(f) || is_just_unknown(f)))) { - nasm_error(ERR_NONFATAL, "division operator may only be applied to" - " scalar values"); + nasm_nonfatal("division operator may only be applied to" + " scalar values"); return NULL; } if (tto != '*' && !is_just_unknown(f) && reloc_value(f) == 0) { - nasm_error(ERR_NONFATAL, "division by zero"); + nasm_nonfatal("division by zero"); return NULL; } switch (tto) { @@ -658,8 +657,8 @@ static expr *expr5(void) else if (is_just_unknown(e) && is_just_unknown(f)) e = unknown_expr(); else { - nasm_error(ERR_NONFATAL, "unable to multiply two " - "non-scalar objects"); + nasm_nonfatal("unable to multiply two " + "non-scalar objects"); return NULL; } break; @@ -717,7 +716,7 @@ static expr *eval_floatize(enum floatize type) scan(); if (tt != '(') { - nasm_error(ERR_NONFATAL, "expecting `('"); + nasm_nonfatal("expecting `('"); return NULL; } scan(); @@ -726,14 +725,14 @@ static expr *eval_floatize(enum floatize type) scan(); } if (tt != TOKEN_FLOAT) { - nasm_error(ERR_NONFATAL, "expecting floating-point number"); + nasm_nonfatal("expecting floating-point number"); return NULL; } if (!float_const(tokval->t_charptr, sign, result, formats[type].bytes)) return NULL; scan(); if (tt != ')') { - nasm_error(ERR_NONFATAL, "expecting `)'"); + nasm_nonfatal("expecting `)'"); return NULL; } @@ -765,13 +764,13 @@ static expr *eval_strfunc(enum strfunc type) scan(); } if (tt != TOKEN_STR) { - nasm_error(ERR_NONFATAL, "expecting string"); + nasm_nonfatal("expecting string"); return NULL; } string_len = string_transform(tokval->t_charptr, tokval->t_inttwo, &string, type); if (string_len == (size_t)-1) { - nasm_error(ERR_NONFATAL, "invalid string for transform"); + nasm_nonfatal("invalid string for transform"); return NULL; } @@ -779,13 +778,13 @@ static expr *eval_strfunc(enum strfunc type) if (parens) { scan(); if (tt != ')') { - nasm_error(ERR_NONFATAL, "expecting `)'"); + nasm_nonfatal("expecting `)'"); return NULL; } } if (rn_warn) - nasm_error(ERR_WARNING|ERR_PASS1, "character constant too long"); + nasm_warnf(ERR_PASS1, "character constant too long"); begintemp(); addtotemp(EXPR_SIMPLE, val); @@ -796,17 +795,15 @@ static expr *eval_strfunc(enum strfunc type) static int64_t eval_ifunc(int64_t val, enum ifunc func) { - int errtype; uint64_t uval = (uint64_t)val; int64_t rv; switch (func) { case IFUNC_ILOG2E: case IFUNC_ILOG2W: - errtype = (func == IFUNC_ILOG2E) ? ERR_NONFATAL : ERR_WARNING; - if (!is_power2(uval)) - nasm_error(errtype, "ilog2 argument is not a power of two"); + nasm_error((func == IFUNC_ILOG2E) ? ERR_NONFATAL : ERR_WARNING, + "ilog2 argument is not a power of two"); /* fall through */ case IFUNC_ILOG2F: rv = ilog2_64(uval); @@ -836,7 +833,7 @@ static expr *expr6(void) const char *scope; if (++deadman > nasm_limit[LIMIT_EVAL]) { - nasm_error(ERR_NONFATAL, "expression too long"); + nasm_nonfatal("expression too long"); return NULL; } @@ -860,7 +857,7 @@ static expr *expr6(void) if (is_just_unknown(e)) return unknown_expr(); else if (!is_simple(e)) { - nasm_error(ERR_NONFATAL, "`~' operator may only be applied to" + nasm_nonfatal("`~' operator may only be applied to" " scalar values"); return NULL; } @@ -874,7 +871,7 @@ static expr *expr6(void) if (is_just_unknown(e)) return unknown_expr(); else if (!is_simple(e)) { - nasm_error(ERR_NONFATAL, "`!' operator may only be applied to" + nasm_nonfatal("`!' operator may only be applied to" " scalar values"); return NULL; } @@ -890,7 +887,7 @@ static expr *expr6(void) if (is_just_unknown(e)) return unknown_expr(); else if (!is_simple(e)) { - nasm_error(ERR_NONFATAL, "function may only be applied to" + nasm_nonfatal("function may only be applied to" " scalar values"); return NULL; } @@ -906,7 +903,7 @@ static expr *expr6(void) if (!e) return NULL; if (is_unknown(e) && critical) { - nasm_error(ERR_NONFATAL, "unable to determine segment base"); + nasm_nonfatal("unable to determine segment base"); return NULL; } return e; @@ -923,7 +920,7 @@ static expr *expr6(void) if (!e) return NULL; if (tt != ')') { - nasm_error(ERR_NONFATAL, "expecting `)'"); + nasm_nonfatal("expecting `)'"); return NULL; } scan(); @@ -945,7 +942,7 @@ static expr *expr6(void) case TOKEN_STR: tmpval = readstrnum(tokval->t_charptr, tokval->t_inttwo, &rn_warn); if (rn_warn) - nasm_error(ERR_WARNING|ERR_PASS1, "character constant too long"); + nasm_warnf(ERR_PASS1, "character constant too long"); addtotemp(EXPR_SIMPLE, tmpval); break; case TOKEN_REG: @@ -963,11 +960,10 @@ static expr *expr6(void) * are in preprocess-only mode. */ if (!location.known) { - nasm_error(ERR_NONFATAL, - "%s not supported in preprocess-only mode", - (tt == TOKEN_HERE ? "`$'" : - tt == TOKEN_BASE ? "`$$'" : - "symbol references")); + nasm_nonfatal("%s not supported in preprocess-only mode", + (tt == TOKEN_HERE ? "`$'" : + tt == TOKEN_BASE ? "`$$'" : + "symbol references")); addtotemp(EXPR_UNKNOWN, 1L); break; } @@ -983,13 +979,12 @@ static expr *expr6(void) if (!lookup_label(tokval->t_charptr, &label_seg, &label_ofs)) { scope = local_scope(tokval->t_charptr); if (critical == 2) { - nasm_error(ERR_NONFATAL, "symbol `%s%s' undefined", + nasm_nonfatal("symbol `%s%s' undefined", scope,tokval->t_charptr); return NULL; } else if (critical == 1) { - nasm_error(ERR_NONFATAL, - "symbol `%s%s' not defined before use", - scope,tokval->t_charptr); + nasm_nonfatal("symbol `%s%s' not defined before use", + scope,tokval->t_charptr); return NULL; } else { if (opflags) @@ -1014,7 +1009,7 @@ static expr *expr6(void) return finishtemp(); default: - nasm_error(ERR_NONFATAL, "expression syntax error"); + nasm_nonfatal("expression syntax error"); return NULL; } } @@ -1063,14 +1058,14 @@ expr *evaluate(scanner sc, void *scprivate, struct tokenval *tv, int64_t value; begintemp(); if (!is_reloc(f)) { - nasm_error(ERR_NONFATAL, "invalid right-hand operand to WRT"); + nasm_nonfatal("invalid right-hand operand to WRT"); return NULL; } value = reloc_seg(f); if (value == NO_SEG) value = reloc_value(f) | SEG_ABS; else if (!(value & SEG_ABS) && !(value % 2) && critical) { - nasm_error(ERR_NONFATAL, "invalid right-hand operand to WRT"); + nasm_nonfatal("invalid right-hand operand to WRT"); return NULL; } addtotemp(EXPR_WRT, value); |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-12-01 08:39:29
|
Commit-ID: f7ce7e85bc75677ae32ed702ebd54b75dfaa3876 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=f7ce7e85bc75677ae32ed702ebd54b75dfaa3876 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 1 Dec 2018 11:38:28 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 1 Dec 2018 11:38:28 +0300 test: nasm-t -- Update floatb Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- travis/test/floatb.asm | 24 ++++++++++++++++++++++++ travis/test/floatb.bin.t | Bin 112 -> 235 bytes 2 files changed, 24 insertions(+) diff --git a/travis/test/floatb.asm b/travis/test/floatb.asm index cbf9681..b630c93 100644 --- a/travis/test/floatb.asm +++ b/travis/test/floatb.asm @@ -23,6 +23,30 @@ dq 0xd0b29a67e95dcb60 dw 0x4057 + do 0xf.ffffff8p-4 + do 0q3.7777777774p-2 + do 0b1.1111_1111_1111_1111_1111_1111_1111_111p-1 + + dt 0xf.ffffff8p-4 + dt 0q3.7777777774p-2 + dt 0b1.1111_1111_1111_1111_1111_1111_1111_111p-1 + + dq 0xf.ffffff8p-4 + dq 0q3.7777777774p-2 + dq 0b1.1111_1111_1111_1111_1111_1111_1111_111p-1 + + dd 0xf.ffffff8p-4 + dd 0q3.7777777774p-2 + dd 0b1.1111_1111_1111_1111_1111_1111_1111_111p-1 + + dw 0xf.ffffff8p-4 + dw 0q3.7777777774p-2 + dw 0b1.1111_1111_1111_1111_1111_1111_1111_111p-1 + + db 0xf.ffffff8p-4 + db 0q3.7777777774p-2 + db 0b1.1111_1111_1111_1111_1111_1111_1111_111p-1 + ;; Way too big numbers, should overflow to +Inf dd 1.0E646456955 dd 1.0E646456956 diff --git a/travis/test/floatb.bin.t b/travis/test/floatb.bin.t index 3fc9be2..f9d0bdb 100644 Binary files a/travis/test/floatb.bin.t and b/travis/test/floatb.bin.t differ |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-11-29 09:54:27
|
Commit-ID: fffc0052810418b3b6fe153a9cf77b1fc3065a2a Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=fffc0052810418b3b6fe153a9cf77b1fc3065a2a Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Thu, 29 Nov 2018 12:51:40 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Thu, 29 Nov 2018 12:51:40 +0300 test: nasm-t -- Update macro-defaults We started printing macro name in 1722fcf81cee0209d5907b4ae0c51c309401c053 Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- travis/test/macro-defaults-warn.stderr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/travis/test/macro-defaults-warn.stderr b/travis/test/macro-defaults-warn.stderr index fbc3efa..6cb2719 100644 --- a/travis/test/macro-defaults-warn.stderr +++ b/travis/test/macro-defaults-warn.stderr @@ -1,6 +1,6 @@ -./travis/test/macro-defaults.asm:4: warning: too many default macro parameters [-w+macro-defaults] -./travis/test/macro-defaults.asm:11: warning: too many default macro parameters [-w+macro-defaults] -./travis/test/macro-defaults.asm:57: warning: too many default macro parameters [-w+macro-defaults] +./travis/test/macro-defaults.asm:4: warning: too many default macro parameters in macro `mmac_fix' [-w+macro-defaults] +./travis/test/macro-defaults.asm:11: warning: too many default macro parameters in macro `mmac_var' [-w+macro-defaults] +./travis/test/macro-defaults.asm:57: warning: too many default macro parameters in macro `mmac_scope' [-w+macro-defaults] ./travis/test/macro-defaults.asm:9: warning: (mmac_fix:3) 2 one a [-w+user] ./travis/test/macro-defaults.asm:7: ... from macro `mmac_fix' defined here [-w+user] ./travis/test/macro-defaults.asm:16: warning: (mmac_var:3) 3 one a b [-w+user] |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-11-25 10:12:39
|
Commit-ID: 295b795d712f45a81654addb7429b8f843b6c051 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=295b795d712f45a81654addb7429b8f843b6c051 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sun, 25 Nov 2018 12:55:48 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 25 Nov 2018 13:09:53 +0300 preproc: Use error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/preproc.c | 394 ++++++++++++++++++++++++---------------------------------- 1 file changed, 165 insertions(+), 229 deletions(-) diff --git a/asm/preproc.c b/asm/preproc.c index 808303e..9fc54f8 100644 --- a/asm/preproc.c +++ b/asm/preproc.c @@ -478,9 +478,8 @@ static size_t nasm_unquote_cstr(char *qstr, enum preproc_token directive) size_t clen = strlen(qstr); if (len != clen) - nasm_error(ERR_NONFATAL, "NUL character in `%s' directive", - pp_directives[directive]); - + nasm_nonfatal("NUL character in `%s' directive", + pp_directives[directive]); return clen; } @@ -909,8 +908,7 @@ static Token *tokenize(char *line) p++; } if (*p != '}') - nasm_error(ERR_WARNING | ERR_PASS1, - "unterminated %%{ construct"); + nasm_warnf(ERR_PASS1, "unterminated %%{ construct"); p[-1] = '\0'; if (*p) p++; @@ -943,8 +941,7 @@ static Token *tokenize(char *line) if (*p) *p++ = '\0'; if (lvl) - nasm_error(ERR_NONFATAL|ERR_PASS1, - "unterminated %%[ construct"); + nasm_nonfatalf(ERR_PASS1, "unterminated %%[ construct"); type = TOK_INDIRECT; } else if (*p == '?') { type = TOK_PREPROC_Q; /* %? */ @@ -966,8 +963,7 @@ static Token *tokenize(char *line) if (*p) p++; else - nasm_error(ERR_NONFATAL|ERR_PASS1, - "unterminated %%! string"); + nasm_nonfatalf(ERR_PASS1, "unterminated %%! string"); } else { /* %! without string or identifier */ type = TOK_OTHER; /* Legacy behavior... */ @@ -1000,7 +996,7 @@ static Token *tokenize(char *line) if (*p) { p++; } else { - nasm_error(ERR_WARNING|ERR_PASS1, "unterminated string"); + nasm_warnf(ERR_PASS1, "unterminated string"); /* Handling unterminated strings by UNV */ /* type = -1; */ } @@ -1248,8 +1244,7 @@ static char *detoken(Token * tlist, bool expand_locals) size_t clen = strlen(v); if (len != clen) { - nasm_error(ERR_NONFATAL | ERR_PASS1, - "NUL character in %%! string"); + nasm_nonfatalf(ERR_PASS1, "NUL character in %%! string"); v = NULL; } } @@ -1257,8 +1252,7 @@ static char *detoken(Token * tlist, bool expand_locals) if (v) { char *p = getenv(v); if (!p) { - nasm_error(ERR_NONFATAL | ERR_PASS1, - "nonexistent environment variable `%s'", v); + nasm_nonfatalf(ERR_PASS1, "nonexistent environment variable `%s'", v); /* * FIXME We better should investigate if accessing * ->text[1] without ->text[0] is safe enough. @@ -1457,7 +1451,7 @@ static Context *get_ctx(const char *name, const char **namep) return NULL; if (!cstk) { - nasm_error(ERR_NONFATAL, "`%s': context stack is empty", name); + nasm_nonfatal("`%s': context stack is empty", name); return NULL; } @@ -1470,8 +1464,8 @@ static Context *get_ctx(const char *name, const char **namep) ctx = ctx->next; } if (!ctx) { - nasm_error(ERR_NONFATAL, "`%s': context stack is only" - " %d level%s deep", name, i, (i == 1 ? "" : "s")); + nasm_nonfatal("`%s': context stack is only" + " %d level%s deep", name, i, (i == 1 ? "" : "s")); return NULL; } @@ -1662,11 +1656,10 @@ static int read_param_count(const char *str) result = readnum(str, &err); if (result < 0 || result > INT_MAX) { result = 0; - nasm_error(ERR_NONFATAL, "parameter count `%s' is out of bounds [%d; %d]", - str, 0, INT_MAX); - } else if (err) { - nasm_error(ERR_NONFATAL, "unable to parse parameter count `%s'", str); - } + nasm_nonfatal("parameter count `%s' is out of bounds [%d; %d]", + str, 0, INT_MAX); + } else if (err) + nasm_nonfatal("unable to parse parameter count `%s'", str); return result; } @@ -1709,8 +1702,7 @@ static void count_mmac_params(Token * t, int *nparam, Token *** params) t = t->next; skip_white_(t); if (tok_isnt_(t, ",")) { - nasm_error(ERR_NONFATAL, - "braces do not enclose all of macro parameter"); + nasm_nonfatal("braces do not enclose all of macro parameter"); while (tok_isnt_(t, ",")) t = t->next; } @@ -1751,8 +1743,8 @@ static bool if_condition(Token * tline, enum preproc_token ct) if (!tline) break; if (tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, - "`%s' expects context identifiers", pp_directives[ct]); + nasm_nonfatal("`%s' expects context identifiers", + pp_directives[ct]); free_tlist(origline); return -1; } @@ -1769,8 +1761,8 @@ static bool if_condition(Token * tline, enum preproc_token ct) if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%s' expects macro identifiers", pp_directives[ct]); + nasm_nonfatal("`%s' expects macro identifiers", + pp_directives[ct]); goto fail; } if (smacro_defined(NULL, tline->text, 0, NULL, true)) @@ -1788,9 +1780,8 @@ static bool if_condition(Token * tline, enum preproc_token ct) tline->type != TOK_STRING && (tline->type != TOK_PREPROC_ID || tline->text[1] != '!'))) { - nasm_error(ERR_NONFATAL, - "`%s' expects environment variable names", - pp_directives[ct]); + nasm_nonfatal("`%s' expects environment variable names", + pp_directives[ct]); goto fail; } p = tline->text; @@ -1811,17 +1802,16 @@ static bool if_condition(Token * tline, enum preproc_token ct) while (tok_isnt_(tt, ",")) tt = tt->next; if (!tt) { - nasm_error(ERR_NONFATAL, - "`%s' expects two comma-separated arguments", - pp_directives[ct]); + nasm_nonfatal("`%s' expects two comma-separated arguments", + pp_directives[ct]); goto fail; } tt = tt->next; j = true; /* assume equality unless proved not */ while ((t->type != TOK_OTHER || strcmp(t->text, ",")) && tt) { if (tt->type == TOK_OTHER && !strcmp(tt->text, ",")) { - nasm_error(ERR_NONFATAL, "`%s': more than one comma on line", - pp_directives[ct]); + nasm_nonfatal("`%s': more than one comma on line", + pp_directives[ct]); goto fail; } if (t->type == TOK_WHITESPACE) { @@ -1869,8 +1859,7 @@ static bool if_condition(Token * tline, enum preproc_token ct) skip_white_(tline); tline = expand_id(tline); if (!tok_type_(tline, TOK_ID)) { - nasm_error(ERR_NONFATAL, - "`%s' expects a macro name", pp_directives[ct]); + nasm_nonfatal("`%s' expects a macro name", pp_directives[ct]); goto fail; } searching.name = nasm_strdup(tline->text); @@ -1886,9 +1875,8 @@ static bool if_condition(Token * tline, enum preproc_token ct) skip_white_(tline); if (!tline) { } else if (!tok_type_(tline, TOK_NUMBER)) { - nasm_error(ERR_NONFATAL, - "`%s' expects a parameter count or nothing", - pp_directives[ct]); + nasm_nonfatal("`%s' expects a parameter count or nothing", + pp_directives[ct]); } else { searching.nparam_min = searching.nparam_max = read_param_count(tline->text); @@ -1898,14 +1886,12 @@ static bool if_condition(Token * tline, enum preproc_token ct) if (tok_is_(tline, "*")) searching.nparam_max = INT_MAX; else if (!tok_type_(tline, TOK_NUMBER)) - nasm_error(ERR_NONFATAL, - "`%s' expects a parameter count after `-'", - pp_directives[ct]); + nasm_nonfatal("`%s' expects a parameter count after `-'", + pp_directives[ct]); else { searching.nparam_max = read_param_count(tline->text); if (searching.nparam_min > searching.nparam_max) { - nasm_error(ERR_NONFATAL, - "minimum parameter count exceeds maximum"); + nasm_nonfatal("minimum parameter count exceeds maximum"); searching.nparam_max = searching.nparam_min; } } @@ -1927,8 +1913,7 @@ static bool if_condition(Token * tline, enum preproc_token ct) mmac = mmac->next; } if (tline && tline->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after %%ifmacro ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after %%ifmacro ignored"); nasm_free(searching.name); j = found; break; @@ -1988,20 +1973,18 @@ iftype: if (!evalresult) return -1; if (tokval.t_type) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after expression ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after expression ignored"); if (!is_simple(evalresult)) { - nasm_error(ERR_NONFATAL, - "non-constant value given to `%s'", pp_directives[ct]); + nasm_nonfatal("non-constant value given to `%s'", + pp_directives[ct]); goto fail; } j = reloc_value(evalresult) != 0; break; default: - nasm_error(ERR_FATAL, - "preprocessor directive `%s' not yet implemented", - pp_directives[ct]); + nasm_fatal("preprocessor directive `%s' not yet implemented", + pp_directives[ct]); goto fail; } @@ -2024,9 +2007,8 @@ static bool define_smacro(Context *ctx, const char *mname, bool casesense, if (smacro_defined(ctx, mname, nparam, &smac, casesense)) { if (!smac) { - nasm_error(ERR_WARNING|ERR_PASS1, - "single-line macro `%s' defined both with and" - " without parameters", mname); + nasm_warnf(ERR_PASS1, "single-line macro `%s' defined both with and" + " without parameters", mname); /* * Some instances of the old code considered this a failure, * some others didn't. What is the right thing to do here? @@ -2095,7 +2077,7 @@ static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive) skip_white_(tline); tline = expand_id(tline); if (!tok_type_(tline, TOK_ID)) { - nasm_error(ERR_NONFATAL, "`%s' expects a macro name", directive); + nasm_nonfatal("`%s' expects a macro name", directive); return false; } @@ -2110,22 +2092,20 @@ static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive) tline = expand_smacro(tline->next); skip_white_(tline); - if (!tok_type_(tline, TOK_NUMBER)) { - nasm_error(ERR_NONFATAL, "`%s' expects a parameter count", directive); - } else { + if (!tok_type_(tline, TOK_NUMBER)) + nasm_nonfatal("`%s' expects a parameter count", directive); + else def->nparam_min = def->nparam_max = read_param_count(tline->text); - } if (tline && tok_is_(tline->next, "-")) { tline = tline->next->next; if (tok_is_(tline, "*")) { def->nparam_max = INT_MAX; } else if (!tok_type_(tline, TOK_NUMBER)) { - nasm_error(ERR_NONFATAL, - "`%s' expects a parameter count after `-'", directive); + nasm_nonfatal("`%s' expects a parameter count after `-'", directive); } else { def->nparam_max = read_param_count(tline->text); if (def->nparam_min > def->nparam_max) { - nasm_error(ERR_NONFATAL, "minimum parameter count exceeds maximum"); + nasm_nonfatal("minimum parameter count exceeds maximum"); def->nparam_max = def->nparam_min; } } @@ -2155,8 +2135,7 @@ static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive) if (def->defaults && def->ndefs > def->nparam_max - def->nparam_min && !def->plus) - nasm_error(ERR_WARNING|ERR_PASS1|ERR_WARN_MDP, - "too many default macro parameters"); + nasm_warnf(ERR_PASS1|ERR_WARN_MDP, "too many default macro parameters"); return true; } @@ -2246,9 +2225,8 @@ static int do_directive(Token *tline, char **output) * in future release (2.09-2.10) */ if (i == PP_RMACRO || i == PP_IRMACRO || i == PP_EXITMACRO) { - nasm_error(ERR_NONFATAL, "unknown preprocessor directive `%s'", - tline->text); - return NO_DIRECTIVE_FOUND; + nasm_nonfatal("unknown preprocessor directive `%s'", tline->text); + return NO_DIRECTIVE_FOUND; } /* @@ -2301,8 +2279,7 @@ static int do_directive(Token *tline, char **output) switch (i) { case PP_INVALID: - nasm_error(ERR_NONFATAL, "unknown preprocessor directive `%s'", - tline->text); + nasm_nonfatal("unknown preprocessor directive `%s'", tline->text); return NO_DIRECTIVE_FOUND; /* didn't get it */ case PP_PRAGMA: @@ -2347,7 +2324,7 @@ static int do_directive(Token *tline, char **output) if (tline && tline->type == TOK_WHITESPACE) tline = tline->next; if (!tline || tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, "`%%stacksize' missing size parameter"); + nasm_nonfatal("`%%stacksize' missing size parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -2380,7 +2357,7 @@ static int do_directive(Token *tline, char **output) ArgOffset = 6; LocalOffset = 0; } else { - nasm_error(ERR_NONFATAL, "`%%stacksize' invalid size type"); + nasm_nonfatal("`%%stacksize' invalid size type"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -2403,7 +2380,7 @@ static int do_directive(Token *tline, char **output) if (tline && tline->type == TOK_WHITESPACE) tline = tline->next; if (!tline || tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, "`%%arg' missing argument parameter"); + nasm_nonfatal("`%%arg' missing argument parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -2413,14 +2390,13 @@ static int do_directive(Token *tline, char **output) tline = tline->next; if (!tline || tline->type != TOK_OTHER || tline->text[0] != ':') { - nasm_error(ERR_NONFATAL, - "Syntax error processing `%%arg' directive"); + nasm_nonfatal("Syntax error processing `%%arg' directive"); free_tlist(origline); return DIRECTIVE_FOUND; } tline = tline->next; if (!tline || tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, "`%%arg' missing size type parameter"); + nasm_nonfatal("`%%arg' missing size type parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -2430,8 +2406,7 @@ static int do_directive(Token *tline, char **output) tt = expand_smacro(tt); size = parse_size(tt->text); if (!size) { - nasm_error(ERR_NONFATAL, - "Invalid size type for `%%arg' missing directive"); + nasm_nonfatal("Invalid size type for `%%arg' missing directive"); free_tlist(tt); free_tlist(origline); return DIRECTIVE_FOUND; @@ -2476,8 +2451,7 @@ static int do_directive(Token *tline, char **output) if (tline && tline->type == TOK_WHITESPACE) tline = tline->next; if (!tline || tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, - "`%%local' missing argument parameter"); + nasm_nonfatal("`%%local' missing argument parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -2487,15 +2461,13 @@ static int do_directive(Token *tline, char **output) tline = tline->next; if (!tline || tline->type != TOK_OTHER || tline->text[0] != ':') { - nasm_error(ERR_NONFATAL, - "Syntax error processing `%%local' directive"); + nasm_nonfatal("Syntax error processing `%%local' directive"); free_tlist(origline); return DIRECTIVE_FOUND; } tline = tline->next; if (!tline || tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, - "`%%local' missing size type parameter"); + nasm_nonfatal("`%%local' missing size type parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -2505,8 +2477,7 @@ static int do_directive(Token *tline, char **output) tt = expand_smacro(tt); size = parse_size(tt->text); if (!size) { - nasm_error(ERR_NONFATAL, - "Invalid size type for `%%local' missing directive"); + nasm_nonfatal("Invalid size type for `%%local' missing directive"); free_tlist(tt); free_tlist(origline); return DIRECTIVE_FOUND; @@ -2539,8 +2510,7 @@ static int do_directive(Token *tline, char **output) case PP_CLEAR: if (tline->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after `%%clear' ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after `%%clear' ignored"); free_macros(); init_macros(); free_tlist(origline); @@ -2551,13 +2521,12 @@ static int do_directive(Token *tline, char **output) skip_white_(t); if (!t || (t->type != TOK_STRING && t->type != TOK_INTERNAL_STRING)) { - nasm_error(ERR_NONFATAL, "`%%depend' expects a file name"); + nasm_nonfatal("`%%depend' expects a file name"); free_tlist(origline); return DIRECTIVE_FOUND; /* but we did _something_ */ } if (t->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after `%%depend' ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after `%%depend' ignored"); p = t->text; if (t->type != TOK_INTERNAL_STRING) nasm_unquote_cstr(p, i); @@ -2571,13 +2540,12 @@ static int do_directive(Token *tline, char **output) if (!t || (t->type != TOK_STRING && t->type != TOK_INTERNAL_STRING)) { - nasm_error(ERR_NONFATAL, "`%%include' expects a file name"); + nasm_nonfatal("`%%include' expects a file name"); free_tlist(origline); return DIRECTIVE_FOUND; /* but we did _something_ */ } if (t->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after `%%include' ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after `%%include' ignored"); p = t->text; if (t->type != TOK_INTERNAL_STRING) nasm_unquote_cstr(p, i); @@ -2614,18 +2582,17 @@ static int do_directive(Token *tline, char **output) if (!tline || (tline->type != TOK_STRING && tline->type != TOK_INTERNAL_STRING && tline->type != TOK_ID)) { - nasm_error(ERR_NONFATAL, "`%%use' expects a package name"); + nasm_nonfatal("`%%use' expects a package name"); free_tlist(origline); return DIRECTIVE_FOUND; /* but we did _something_ */ } if (tline->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after `%%use' ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after `%%use' ignored"); if (tline->type == TOK_STRING) nasm_unquote_cstr(tline->text, i); use_pkg = nasm_stdmac_find_package(tline->text); if (!use_pkg) - nasm_error(ERR_NONFATAL, "unknown `%%use' package: %s", tline->text); + nasm_nonfatal("unknown `%%use' package: %s", tline->text); else pkg_macro = (char *)use_pkg + 1; /* The first string will be <%define>__USE_*__ */ if (use_pkg && ! smacro_defined(NULL, pkg_macro, 0, NULL, true)) { @@ -2643,15 +2610,14 @@ static int do_directive(Token *tline, char **output) tline = expand_id(tline); if (tline) { if (!tok_type_(tline, TOK_ID)) { - nasm_error(ERR_NONFATAL, "`%s' expects a context identifier", - pp_directives[i]); + nasm_nonfatal("`%s' expects a context identifier", + pp_directives[i]); free_tlist(origline); return DIRECTIVE_FOUND; /* but we did _something_ */ } if (tline->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after `%s' ignored", - pp_directives[i]); + nasm_warnf(ERR_PASS1, "trailing garbage after `%s' ignored", + pp_directives[i]); p = nasm_strdup(tline->text); } else { p = NULL; /* Anonymous */ @@ -2667,13 +2633,12 @@ static int do_directive(Token *tline, char **output) } else { /* %pop or %repl */ if (!cstk) { - nasm_error(ERR_NONFATAL, "`%s': context stack is empty", - pp_directives[i]); + nasm_nonfatal("`%s': context stack is empty", + pp_directives[i]); } else if (i == PP_POP) { if (p && (!cstk->name || nasm_stricmp(p, cstk->name))) - nasm_error(ERR_NONFATAL, "`%%pop' in wrong context: %s, " - "expected %s", - cstk->name ? cstk->name : "anonymous", p); + nasm_nonfatal("`%%pop' in wrong context: %s, expected %s", + cstk->name ? cstk->name : "anonymous", p); else ctx_pop(); } else { @@ -2741,7 +2706,7 @@ issue_error: CASE_PP_ELIF: if (!istk->conds) - nasm_error(ERR_FATAL, "`%s': no matching `%%if'", pp_directives[i]); + nasm_fatal("`%s': no matching `%%if'", pp_directives[i]); switch(istk->conds->state) { case COND_IF_TRUE: istk->conds->state = COND_DONE; @@ -2753,8 +2718,8 @@ issue_error: case COND_ELSE_TRUE: case COND_ELSE_FALSE: - nasm_error(ERR_WARNING|ERR_PASS1|ERR_PP_PRECOND, - "`%%elif' after `%%else' ignored"); + nasm_warnf(ERR_PASS1|ERR_PP_PRECOND, + "`%%elif' after `%%else' ignored"); istk->conds->state = COND_NEVER; break; @@ -2778,8 +2743,8 @@ issue_error: case PP_ELSE: if (tline->next) - nasm_error(ERR_WARNING|ERR_PASS1|ERR_PP_PRECOND, - "trailing garbage after `%%else' ignored"); + nasm_warnf(ERR_PASS1|ERR_PP_PRECOND, + "trailing garbage after `%%else' ignored"); if (!istk->conds) nasm_fatal("`%%else: no matching `%%if'"); switch(istk->conds->state) { @@ -2797,8 +2762,8 @@ issue_error: case COND_ELSE_TRUE: case COND_ELSE_FALSE: - nasm_error(ERR_WARNING|ERR_PASS1|ERR_PP_PRECOND, - "`%%else' after `%%else' ignored."); + nasm_warnf(ERR_PASS1|ERR_PP_PRECOND, + "`%%else' after `%%else' ignored."); istk->conds->state = COND_NEVER; break; } @@ -2807,10 +2772,10 @@ issue_error: case PP_ENDIF: if (tline->next) - nasm_error(ERR_WARNING|ERR_PASS1|ERR_PP_PRECOND, - "trailing garbage after `%%endif' ignored"); + nasm_warnf(ERR_PASS1|ERR_PP_PRECOND, + "trailing garbage after `%%endif' ignored"); if (!istk->conds) - nasm_error(ERR_FATAL, "`%%endif': no matching `%%if'"); + nasm_fatal("`%%endif': no matching `%%if'"); cond = istk->conds; istk->conds = cond->next; nasm_free(cond); @@ -2824,8 +2789,8 @@ issue_error: case PP_MACRO: case PP_IMACRO: if (defining) { - nasm_error(ERR_FATAL, "`%s': already defining a macro", - pp_directives[i]); + nasm_fatal("`%s': already defining a macro", + pp_directives[i]); return DIRECTIVE_FOUND; } defining = nasm_zalloc(sizeof(MMacro)); @@ -2847,8 +2812,8 @@ issue_error: || defining->plus) && (defining->nparam_min <= mmac->nparam_max || mmac->plus)) { - nasm_error(ERR_WARNING|ERR_PASS1, - "redefining multi-line macro `%s'", defining->name); + nasm_warnf(ERR_PASS1, "redefining multi-line macro `%s'", + defining->name); return DIRECTIVE_FOUND; } mmac = mmac->next; @@ -2859,7 +2824,7 @@ issue_error: case PP_ENDM: case PP_ENDMACRO: if (! (defining && defining->name)) { - nasm_error(ERR_NONFATAL, "`%s': not defining a macro", tline->text); + nasm_nonfatal("`%s': not defining a macro", tline->text); return DIRECTIVE_FOUND; } mmhead = (MMacro **) hash_findi_add(&mmacros, defining->name); @@ -2891,7 +2856,7 @@ issue_error: } istk->expansion = l; } else { - nasm_error(ERR_NONFATAL, "`%%exitmacro' not within `%%macro' block"); + nasm_nonfatal("`%%exitmacro' not within `%%macro' block"); } free_tlist(origline); return DIRECTIVE_FOUND; @@ -2930,7 +2895,7 @@ issue_error: tline = tline->next; if (!tline->next) { free_tlist(origline); - nasm_error(ERR_NONFATAL, "`%%rotate' missing rotate count"); + nasm_nonfatal("`%%rotate' missing rotate count"); return DIRECTIVE_FOUND; } t = expand_smacro(tline->next); @@ -2945,20 +2910,18 @@ issue_error: if (!evalresult) return DIRECTIVE_FOUND; if (tokval.t_type) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after expression ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after expression ignored"); if (!is_simple(evalresult)) { - nasm_error(ERR_NONFATAL, "non-constant value given to `%%rotate'"); + nasm_nonfatal("non-constant value given to `%%rotate'"); return DIRECTIVE_FOUND; } mmac = istk->mstk; while (mmac && !mmac->name) /* avoid mistaking %reps for macros */ mmac = mmac->next_active; if (!mmac) { - nasm_error(ERR_NONFATAL, "`%%rotate' invoked outside a macro call"); + nasm_nonfatal("`%%rotate' invoked outside a macro call"); } else if (mmac->nparam == 0) { - nasm_error(ERR_NONFATAL, - "`%%rotate' invoked within macro without parameters"); + nasm_nonfatal("`%%rotate' invoked within macro without parameters"); } else { int rotate = mmac->rotate + reloc_value(evalresult); @@ -2995,27 +2958,25 @@ issue_error: return DIRECTIVE_FOUND; } if (tokval.t_type) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after expression ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after expression ignored"); if (!is_simple(evalresult)) { - nasm_error(ERR_NONFATAL, "non-constant value given to `%%rep'"); + nasm_nonfatal("non-constant value given to `%%rep'"); return DIRECTIVE_FOUND; } count = reloc_value(evalresult); if (count > nasm_limit[LIMIT_REP]) { - nasm_error(ERR_NONFATAL, - "`%%rep' count %"PRId64" exceeds limit (currently %"PRId64")", - count, nasm_limit[LIMIT_REP]); + nasm_nonfatal("`%%rep' count %"PRId64" exceeds limit (currently %"PRId64")", + count, nasm_limit[LIMIT_REP]); count = 0; } else if (count < 0) { - nasm_error(ERR_WARNING|ERR_PASS2|ERR_WARN_NEG_REP, + nasm_warnf(ERR_PASS2|ERR_WARN_NEG_REP, "negative `%%rep' count: %"PRId64, count); count = 0; } else { count++; } } else { - nasm_error(ERR_NONFATAL, "`%%rep' expects a repeat count"); + nasm_nonfatal("`%%rep' expects a repeat count"); count = 0; } free_tlist(origline); @@ -3039,7 +3000,7 @@ issue_error: case PP_ENDREP: if (!defining || defining->name) { - nasm_error(ERR_NONFATAL, "`%%endrep': no matching `%%rep'"); + nasm_nonfatal("`%%endrep': no matching `%%rep'"); return DIRECTIVE_FOUND; } @@ -3081,7 +3042,7 @@ issue_error: if (l) l->finishes->in_progress = 1; else - nasm_error(ERR_NONFATAL, "`%%exitrep' not within `%%rep' block"); + nasm_nonfatal("`%%exitrep' not within `%%rep' block"); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3097,7 +3058,7 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, "`%s' expects a macro identifier", + nasm_nonfatal("`%s' expects a macro identifier", pp_directives[i]); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3121,14 +3082,13 @@ issue_error: while (1) { skip_white_(tline); if (!tline) { - nasm_error(ERR_NONFATAL, "parameter identifier expected"); + nasm_nonfatal("parameter identifier expected"); free_tlist(origline); return DIRECTIVE_FOUND; } if (tline->type != TOK_ID) { - nasm_error(ERR_NONFATAL, - "`%s': parameter identifier expected", - tline->text); + nasm_nonfatal("`%s': parameter identifier expected", + tline->text); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3139,8 +3099,7 @@ issue_error: tline = tline->next; } else { if (!tok_is_(tline, ")")) { - nasm_error(ERR_NONFATAL, - "`)' expected to terminate macro template"); + nasm_nonfatal("`)' expected to terminate macro template"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3186,14 +3145,12 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, "`%%undef' expects a macro identifier"); + nasm_nonfatal("`%%undef' expects a macro identifier"); free_tlist(origline); return DIRECTIVE_FOUND; } - if (tline->next) { - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after macro name ignored"); - } + if (tline->next) + nasm_warnf(ERR_PASS1, "trailing garbage after macro name ignored"); /* Find the context that symbol belongs to */ ctx = get_ctx(tline->text, &mname); @@ -3211,7 +3168,7 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, "`%s' expects a macro identifier", + nasm_nonfatal("`%s' expects a macro identifier", pp_directives[i]); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3252,9 +3209,8 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%s' expects a macro identifier as first parameter", - pp_directives[i]); + nasm_nonfatal("`%s' expects a macro identifier as first parameter", + pp_directives[i]); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3268,9 +3224,8 @@ issue_error: t = t->next; /* t should now point to the string */ if (!tok_type_(t, TOK_STRING)) { - nasm_error(ERR_NONFATAL, - "`%s` requires string as second parameter", - pp_directives[i]); + nasm_nonfatal("`%s` requires string as second parameter", + pp_directives[i]); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3306,8 +3261,7 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%%pathsearch' expects a macro identifier as first parameter"); + nasm_nonfatal("`%%pathsearch' expects a macro identifier as first parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3322,14 +3276,13 @@ issue_error: if (!t || (t->type != TOK_STRING && t->type != TOK_INTERNAL_STRING)) { - nasm_error(ERR_NONFATAL, "`%%pathsearch' expects a file name"); + nasm_nonfatal("`%%pathsearch' expects a file name"); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; /* but we did _something_ */ } if (t->next) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after `%%pathsearch' ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after `%%pathsearch' ignored"); p = t->text; if (t->type != TOK_INTERNAL_STRING) nasm_unquote(p, NULL); @@ -3363,8 +3316,7 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%%strlen' expects a macro identifier as first parameter"); + nasm_nonfatal("`%%strlen' expects a macro identifier as first parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3378,8 +3330,7 @@ issue_error: t = t->next; /* t should now point to the string */ if (!tok_type_(t, TOK_STRING)) { - nasm_error(ERR_NONFATAL, - "`%%strlen` requires string as second parameter"); + nasm_nonfatal("`%%strlen` requires string as second parameter"); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3409,8 +3360,7 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%%strcat' expects a macro identifier as first parameter"); + nasm_nonfatal("`%%strcat' expects a macro identifier as first parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3432,8 +3382,7 @@ issue_error: break; /* else fall through */ default: - nasm_error(ERR_NONFATAL, - "non-string passed to `%%strcat' (%d)", t->type); + nasm_nonfatal("non-string passed to `%%strcat' (%d)", t->type); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3474,8 +3423,7 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%%substr' expects a macro identifier as first parameter"); + nasm_nonfatal("`%%substr' expects a macro identifier as first parameter"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3491,8 +3439,7 @@ issue_error: /* t should now point to the string */ if (!tok_type_(t, TOK_STRING)) { - nasm_error(ERR_NONFATAL, - "`%%substr` requires string as second parameter"); + nasm_nonfatal("`%%substr` requires string as second parameter"); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3507,7 +3454,7 @@ issue_error: free_tlist(origline); return DIRECTIVE_FOUND; } else if (!is_simple(evalresult)) { - nasm_error(ERR_NONFATAL, "non-constant value given to `%%substr`"); + nasm_nonfatal("non-constant value given to `%%substr`"); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3526,7 +3473,7 @@ issue_error: free_tlist(origline); return DIRECTIVE_FOUND; } else if (!is_simple(evalresult)) { - nasm_error(ERR_NONFATAL, "non-constant value given to `%%substr`"); + nasm_nonfatal("non-constant value given to `%%substr`"); free_tlist(tline); free_tlist(origline); return DIRECTIVE_FOUND; @@ -3573,9 +3520,8 @@ issue_error: if (!tline || (tline->type != TOK_ID && (tline->type != TOK_PREPROC_ID || tline->text[1] != '$'))) { - nasm_error(ERR_NONFATAL, - "`%%%sassign' expects a macro identifier", - (i == PP_IASSIGN ? "i" : "")); + nasm_nonfatal("`%%%sassign' expects a macro identifier", + (i == PP_IASSIGN ? "i" : "")); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3595,13 +3541,11 @@ issue_error: } if (tokval.t_type) - nasm_error(ERR_WARNING|ERR_PASS1, - "trailing garbage after expression ignored"); + nasm_warnf(ERR_PASS1, "trailing garbage after expression ignored"); if (!is_simple(evalresult)) { - nasm_error(ERR_NONFATAL, - "non-constant value given to `%%%sassign'", - (i == PP_IASSIGN ? "i" : "")); + nasm_nonfatal("non-constant value given to `%%%sassign'", + (i == PP_IASSIGN ? "i" : "")); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3627,7 +3571,7 @@ issue_error: tline = tline->next; skip_white_(tline); if (!tok_type_(tline, TOK_NUMBER)) { - nasm_error(ERR_NONFATAL, "`%%line' expects line number"); + nasm_nonfatal("`%%line' expects line number"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3637,7 +3581,7 @@ issue_error: if (tok_is_(tline, "+")) { tline = tline->next; if (!tok_type_(tline, TOK_NUMBER)) { - nasm_error(ERR_NONFATAL, "`%%line' expects line increment"); + nasm_nonfatal("`%%line' expects line increment"); free_tlist(origline); return DIRECTIVE_FOUND; } @@ -3656,9 +3600,8 @@ issue_error: return DIRECTIVE_FOUND; default: - nasm_error(ERR_FATAL, - "preprocessor directive `%s' not yet implemented", - pp_directives[i]); + nasm_fatal("preprocessor directive `%s' not yet implemented", + pp_directives[i]); return DIRECTIVE_FOUND; } } @@ -3745,7 +3688,7 @@ static bool paste_tokens(Token **head, const struct tokseq_match *m, /* Left pasting token is start of line */ if (!prev_nonspace) - nasm_error(ERR_FATAL, "No lvalue found on pasting"); + nasm_fatal("No lvalue found on pasting"); /* * No ending token, this might happen in two @@ -3945,7 +3888,7 @@ static Token *expand_mmac_params_range(MMacro *mac, Token *tline, Token ***last) return head; err: - nasm_error(ERR_NONFATAL, "`%%{%s}': macro parameters out of range", + nasm_nonfatal("`%%{%s}': macro parameters out of range", &tline->text[1]); return tline; } @@ -3983,7 +3926,7 @@ static Token *expand_mmac_params(Token * tline) while (mac && !mac->name) /* avoid mistaking %reps for macros */ mac = mac->next_active; if (!mac) { - nasm_error(ERR_NONFATAL, "`%s': not in a macro call", t->text); + nasm_nonfatal("`%s': not in a macro call", t->text); } else { pos = strchr(t->text, ':'); if (!pos) { @@ -4014,16 +3957,14 @@ static Token *expand_mmac_params(Token * tline) } cc = find_cc(tt); if (cc == -1) { - nasm_error(ERR_NONFATAL, - "macro parameter %d is not a condition code", - n + 1); + nasm_nonfatal("macro parameter %d is not a condition code", + n + 1); text = NULL; } else { type = TOK_ID; if (inverse_ccs[cc] == -1) { - nasm_error(ERR_NONFATAL, - "condition code `%s' is not invertible", - conditions[cc]); + nasm_nonfatal("condition code `%s' is not invertible", + conditions[cc]); text = NULL; } else text = nasm_strdup(conditions[inverse_ccs[cc]]); @@ -4040,9 +3981,8 @@ static Token *expand_mmac_params(Token * tline) } cc = find_cc(tt); if (cc == -1) { - nasm_error(ERR_NONFATAL, - "macro parameter %d is not a condition code", - n + 1); + nasm_nonfatal("macro parameter %d is not a condition code", + n + 1); text = NULL; } else { type = TOK_ID; @@ -4182,7 +4122,7 @@ again: while (tline) { /* main token loop */ if (!--deadman) { - nasm_error(ERR_NONFATAL, "interminable macro recursion"); + nasm_nonfatal("interminable macro recursion"); goto err; } @@ -4287,8 +4227,7 @@ again: tline = t; if (!tline) { - nasm_error(ERR_NONFATAL, - "macro call expects terminating `)'"); + nasm_nonfatal("macro call expects terminating `)'"); break; } if (tline->type == TOK_WHITESPACE @@ -4337,7 +4276,7 @@ again: } if (brackets < 0) { brackets = 0; - nasm_error(ERR_NONFATAL, "braces do not " + nasm_nonfatal("braces do not " "enclose all of macro parameter"); } paramsize[nparam] += white + 1; @@ -4349,10 +4288,10 @@ again: m->casesense))) m = m->next; if (!m) - nasm_error(ERR_WARNING|ERR_PASS1|ERR_WARN_MNP, - "macro `%s' exists, " - "but not taking %d parameters", - mstart->text, nparam); + nasm_warnf(ERR_PASS1|ERR_WARN_MNP, + "macro `%s' exists, " + "but not taking %d parameters", + mstart->text, nparam); } } if (m && m->in_progress) @@ -4401,8 +4340,7 @@ again: * FIXME: Need to handle more gracefully, * exiting early on agruments analysis. */ - nasm_error(ERR_FATAL, - "macro `%s' expects %d args", + nasm_fatal("macro `%s' expects %d args", mstart->text, (int)paramsize[t->type - TOK_SMAC_PARAM]); } @@ -4599,9 +4537,8 @@ static MMacro *is_mmacro(Token * tline, Token *** params_array) */ if (m->in_progress > m->max_depth) { if (m->max_depth > 0) { - nasm_error(ERR_WARNING, - "reached maximum recursion depth of %i", - m->max_depth); + nasm_warn("reached maximum recursion depth of %i", + m->max_depth); } nasm_free(params); return NULL; @@ -4651,9 +4588,9 @@ static MMacro *is_mmacro(Token * tline, Token *** params_array) * After all that, we didn't find one with the right number of * parameters. Issue a warning, and fail to expand the macro. */ - nasm_error(ERR_WARNING|ERR_PASS1|ERR_WARN_MNP, - "macro `%s' exists, but not taking %d parameters", - tline->text, nparam); + nasm_warnf(ERR_PASS1|ERR_WARN_MNP, + "macro `%s' exists, but not taking %d parameters", + tline->text, nparam); nasm_free(params); return NULL; } @@ -4787,7 +4724,7 @@ static int expand_mmacro(Token * tline) paramlen[i]++; } if (brace) - nasm_error(ERR_NONFATAL, "macro params should be enclosed in braces"); + nasm_nonfatal("macro params should be enclosed in braces"); } /* @@ -5233,11 +5170,10 @@ static void pp_cleanup(int pass) if (defining) { if (defining->name) { - nasm_error(ERR_NONFATAL, - "end of file while still defining macro `%s'", - defining->name); + nasm_nonfatal("end of file while still defining macro `%s'", + defining->name); } else { - nasm_error(ERR_NONFATAL, "end of file while still in %%rep"); + nasm_nonfatal("end of file while still in %%rep"); } free_mmacro(defining); @@ -5307,7 +5243,7 @@ static void pp_pre_define(char *definition) if (space->next->type != TOK_PREPROC_ID && space->next->type != TOK_ID) - nasm_error(ERR_WARNING, "pre-defining non ID `%s\'\n", definition); + nasm_warn("pre-defining non ID `%s\'\n", definition); l = nasm_malloc(sizeof(Line)); l->next = predef; |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-11-24 22:48:18
|
Commit-ID: 00526d984503706ae0e009f13ffd1c33ca7a12b5 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=00526d984503706ae0e009f13ffd1c33ca7a12b5 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sun, 25 Nov 2018 01:32:22 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 25 Nov 2018 01:45:49 +0300 assemble: Use nasm_ error helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/assemble.c | 216 +++++++++++++++++++++++++-------------------------------- 1 file changed, 94 insertions(+), 122 deletions(-) diff --git a/asm/assemble.c b/asm/assemble.c index da58d12..d32a67e 100644 --- a/asm/assemble.c +++ b/asm/assemble.c @@ -264,8 +264,7 @@ static int has_prefix(insn * ins, enum prefix_pos pos, int prefix) static void assert_no_prefix(insn * ins, enum prefix_pos pos) { if (ins->prefixes[pos]) - nasm_error(ERR_NONFATAL, "invalid %s prefix", - prefix_name(ins->prefixes[pos])); + nasm_nonfatal("invalid %s prefix", prefix_name(ins->prefixes[pos])); } static const char *size_name(int size) @@ -294,8 +293,8 @@ static const char *size_name(int size) static void warn_overflow(int size) { - nasm_error(ERR_WARNING | ERR_PASS2 | ERR_WARN_NOV, - "%s data exceeds bounds", size_name(size)); + nasm_warnf(ERR_PASS2 | ERR_WARN_NOV, "%s data exceeds bounds", + size_name(size)); } static void warn_overflow_const(int64_t data, int size) @@ -403,11 +402,10 @@ static void out(struct out_data *data) if (asize > amax) { if (data->type == OUT_RELADDR || data->sign == OUT_SIGNED) { - nasm_error(ERR_NONFATAL, - "%u-bit signed relocation unsupported by output format %s", - (unsigned int)(asize << 3), ofmt->shortname); + nasm_nonfatal("%u-bit signed relocation unsupported by output format %s", + (unsigned int)(asize << 3), ofmt->shortname); } else { - nasm_error(ERR_WARNING | ERR_WARN_ZEXTRELOC, + nasm_warnf(ERR_WARN_ZEXTRELOC, "%u-bit %s relocation zero-extended from %u bits", (unsigned int)(asize << 3), data->type == OUT_SEGMENT ? "segment" : "unsigned", @@ -422,10 +420,8 @@ static void out(struct out_data *data) ofmt->output(data); } else { /* Outputting to ABSOLUTE section - only reserve is permitted */ - if (data->type != OUT_RESERVE) { - nasm_error(ERR_NONFATAL, "attempt to assemble code in [ABSOLUTE]" - " space"); - } + if (data->type != OUT_RESERVE) + nasm_nonfatal("attempt to assemble code in [ABSOLUTE] space"); /* No need to push to the backend */ } @@ -470,7 +466,7 @@ static inline void out_reserve(struct out_data *data, uint64_t size) static void out_segment(struct out_data *data, const struct operand *opx) { if (opx->opflags & OPFLAG_RELATIVE) - nasm_error(ERR_NONFATAL, "segment references cannot be relative"); + nasm_nonfatal("segment references cannot be relative"); data->type = OUT_SEGMENT; data->sign = OUT_UNSIGNED; @@ -490,7 +486,7 @@ static void out_imm(struct out_data *data, const struct operand *opx, * already called ofmt->segbase() for us. Sigh. */ if (size < 2) - nasm_error(ERR_NONFATAL, "segment reference must be 16 bits"); + nasm_nonfatal("segment reference must be 16 bits"); data->type = OUT_SEGMENT; } else { @@ -517,7 +513,7 @@ static void out_reladdr(struct out_data *data, const struct operand *opx, int size) { if (opx->opflags & OPFLAG_RELATIVE) - nasm_error(ERR_NONFATAL, "invalid use of self-relative expression"); + nasm_nonfatal("invalid use of self-relative expression"); data->type = OUT_RELADDR; data->sign = OUT_SIGNED; @@ -559,8 +555,8 @@ static bool jmp_match(int32_t segment, int64_t offset, int bits, if (is_byte && c == 0371 && ins->prefixes[PPS_REP] == P_BND) { /* jmp short (opcode eb) cannot be used with bnd prefix. */ ins->prefixes[PPS_REP] = P_none; - nasm_error(ERR_WARNING | ERR_WARN_BND | ERR_PASS2 , - "jmp short does not init bnd regs - bnd prefix dropped."); + nasm_warnf(ERR_WARN_BND | ERR_PASS2 , + "jmp short does not init bnd regs - bnd prefix dropped."); } return is_byte; @@ -592,9 +588,7 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) list_for_each(e, instruction->eops) { if (e->type == EOT_DB_NUMBER) { if (wsize > 8) { - nasm_error(ERR_NONFATAL, - "integer supplied to a DT, DO, DY or DZ" - " instruction"); + nasm_nonfatal("integer supplied to a DT,DO,DY or DZ"); } else { data.insoffs = 0; data.inslen = data.size = wsize; @@ -641,16 +635,16 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) fp = nasm_open_read(fname, NF_BINARY|NF_FORMAP); if (!fp) { - nasm_error(ERR_NONFATAL, "`incbin': unable to open file `%s'", - fname); + nasm_nonfatal("`incbin': unable to open file `%s'", + fname); goto done; } len = nasm_file_size(fp); if (len == (off_t)-1) { - nasm_error(ERR_NONFATAL, "`incbin': unable to get length of file `%s'", - fname); + nasm_nonfatal("`incbin': unable to get length of file `%s'", + fname); goto close_done; } @@ -699,9 +693,8 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) off_t l = len; if (fseeko(fp, base, SEEK_SET) < 0 || ferror(fp)) { - nasm_error(ERR_NONFATAL, - "`incbin': unable to seek on file `%s'", - fname); + nasm_nonfatal("`incbin': unable to seek on file `%s'", + fname); goto end_incbin; } while (l > 0) { @@ -712,9 +705,8 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) * actually changes while we are reading * it. */ - nasm_error(ERR_NONFATAL, - "`incbin': unexpected EOF while" - " reading file `%s'", fname); + nasm_nonfatal("`incbin': unexpected EOF while" + " reading file `%s'", fname); goto end_incbin; } out_rawdata(&data, buf, m); @@ -729,9 +721,8 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) lfmt->downlevel(LIST_TIMES); } if (ferror(fp)) { - nasm_error(ERR_NONFATAL, - "`incbin': error while" - " reading file `%s'", fname); + nasm_nonfatal("`incbin': error while" + " reading file `%s'", fname); } close_done: if (buf) @@ -767,53 +758,48 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) /* No match */ switch (m) { case MERR_OPSIZEMISSING: - nasm_error(ERR_NONFATAL, "operation size not specified"); + nasm_nonfatal("operation size not specified"); break; case MERR_OPSIZEMISMATCH: - nasm_error(ERR_NONFATAL, "mismatch in operand sizes"); + nasm_nonfatal("mismatch in operand sizes"); break; case MERR_BRNOTHERE: - nasm_error(ERR_NONFATAL, - "broadcast not permitted on this operand"); + nasm_nonfatal("broadcast not permitted on this operand"); break; case MERR_BRNUMMISMATCH: - nasm_error(ERR_NONFATAL, - "mismatch in the number of broadcasting elements"); + nasm_nonfatal("mismatch in the number of broadcasting elements"); break; case MERR_MASKNOTHERE: - nasm_error(ERR_NONFATAL, - "mask not permitted on this operand"); + nasm_nonfatal("mask not permitted on this operand"); break; case MERR_DECONOTHERE: - nasm_error(ERR_NONFATAL, "unsupported mode decorator for instruction"); + nasm_nonfatal("unsupported mode decorator for instruction"); break; case MERR_BADCPU: - nasm_error(ERR_NONFATAL, "no instruction for this cpu level"); + nasm_nonfatal("no instruction for this cpu level"); break; case MERR_BADMODE: - nasm_error(ERR_NONFATAL, "instruction not supported in %d-bit mode", - bits); + nasm_nonfatal("instruction not supported in %d-bit mode", bits); break; case MERR_ENCMISMATCH: - nasm_error(ERR_NONFATAL, "specific encoding scheme not available"); + nasm_nonfatal("specific encoding scheme not available"); break; case MERR_BADBND: - nasm_error(ERR_NONFATAL, "bnd prefix is not allowed"); + nasm_nonfatal("bnd prefix is not allowed"); break; case MERR_BADREPNE: - nasm_error(ERR_NONFATAL, "%s prefix is not allowed", - (has_prefix(instruction, PPS_REP, P_REPNE) ? - "repne" : "repnz")); + nasm_nonfatal("%s prefix is not allowed", + (has_prefix(instruction, PPS_REP, P_REPNE) ? + "repne" : "repnz")); break; case MERR_REGSETSIZE: - nasm_error(ERR_NONFATAL, "invalid register set size"); + nasm_nonfatal("invalid register set size"); break; case MERR_REGSET: - nasm_error(ERR_NONFATAL, "register set not valid for operand"); + nasm_nonfatal("register set not valid for operand"); break; default: - nasm_error(ERR_NONFATAL, - "invalid combination of opcode and operands"); + nasm_nonfatal("invalid combination of opcode and operands"); break; } @@ -864,8 +850,8 @@ int64_t insn_size(int32_t segment, int64_t offset, int bits, insn *instruction) len = nasm_file_size_by_path(fname); if (len == (off_t)-1) { - nasm_error(ERR_NONFATAL, "`incbin': unable to get length of file `%s'", - fname); + nasm_nonfatal("`incbin': unable to get length of file `%s'", + fname); return 0; } @@ -924,16 +910,16 @@ static void bad_hle_warn(const insn * ins, uint8_t hleok) case w_lock: if (ins->prefixes[PPS_LOCK] != P_LOCK) { - nasm_error(ERR_WARNING | ERR_WARN_HLE | ERR_PASS2, - "%s with this instruction requires lock", - prefix_name(rep_pfx)); + nasm_warnf(ERR_WARN_HLE | ERR_PASS2, + "%s with this instruction requires lock", + prefix_name(rep_pfx)); } break; case w_inval: - nasm_error(ERR_WARNING | ERR_WARN_HLE | ERR_PASS2, - "%s invalid with this instruction", - prefix_name(rep_pfx)); + nasm_warnf(ERR_WARN_HLE | ERR_PASS2, + "%s invalid with this instruction", + prefix_name(rep_pfx)); break; } } @@ -1130,7 +1116,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, if (pfx == P_O16) break; if (pfx != P_none) - nasm_error(ERR_WARNING | ERR_PASS2, "invalid operand size prefix"); + nasm_warnf(ERR_PASS2, "invalid operand size prefix"); else ins->prefixes[PPS_OSIZE] = P_O16; break; @@ -1142,7 +1128,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, if (pfx == P_O32) break; if (pfx != P_none) - nasm_error(ERR_WARNING | ERR_PASS2, "invalid operand size prefix"); + nasm_warnf(ERR_PASS2, "invalid operand size prefix"); else ins->prefixes[PPS_OSIZE] = P_O32; break; @@ -1197,11 +1183,11 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, case 0340: if (!absolute_op(&ins->oprs[0])) - nasm_error(ERR_NONFATAL, "attempt to reserve non-constant" - " quantity of BSS space"); + nasm_nonfatal("attempt to reserve non-constant" + " quantity of BSS space"); else if (ins->oprs[0].opflags & OPFLAG_FORWARD) - nasm_error(ERR_WARNING | ERR_PASS1, - "forward reference in RESx can have unpredictable results"); + nasm_warnf(ERR_PASS1, "forward reference in RESx " + "can have unpredictable results"); else length += ins->oprs[0].offset; break; @@ -1315,7 +1301,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, if (process_ea(opy, &ea_data, bits, rfield, rflags, ins, &errmsg) != eat) { - nasm_error(ERR_NONFATAL, "%s", errmsg); + nasm_nonfatal("%s", errmsg); return -1; } else { ins->rex |= ea_data.rex; @@ -1335,7 +1321,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, if (ins->rex & REX_NH) { if (ins->rex & REX_H) { - nasm_error(ERR_NONFATAL, "instruction cannot use high registers"); + nasm_nonfatal("instruction cannot use high registers"); return -1; } ins->rex &= ~REX_P; /* Don't force REX prefix due to high reg */ @@ -1359,7 +1345,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, int bad32 = REX_R|REX_W|REX_X|REX_B; if (ins->rex & REX_H) { - nasm_error(ERR_NONFATAL, "cannot use high register in AVX instruction"); + nasm_nonfatal("cannot use high register in AVX instruction"); return -1; } switch (ins->vex_wlp & 060) { @@ -1377,11 +1363,11 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, } if (bits != 64 && ((ins->rex & bad32) || ins->vexreg > 7)) { - nasm_error(ERR_NONFATAL, "invalid operands in non-64-bit mode"); + nasm_nonfatal("invalid operands in non-64-bit mode"); return -1; } else if (!(ins->rex & REX_EV) && ((ins->vexreg > 15) || (ins->evex_p[0] & 0xf0))) { - nasm_error(ERR_NONFATAL, "invalid high-16 register in non-AVX-512"); + nasm_nonfatal("invalid high-16 register in non-AVX-512"); return -1; } if (ins->rex & REX_EV) @@ -1393,7 +1379,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, length += 2; } else if (ins->rex & REX_MASK) { if (ins->rex & REX_H) { - nasm_error(ERR_NONFATAL, "cannot use high register in rex instruction"); + nasm_nonfatal("cannot use high register in rex instruction"); return -1; } else if (bits == 64) { length++; @@ -1405,15 +1391,14 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, lockcheck = false; /* Already errored, no need for warning */ length++; } else { - nasm_error(ERR_NONFATAL, "invalid operands in non-64-bit mode"); + nasm_nonfatal("invalid operands in non-64-bit mode"); return -1; } } if (has_prefix(ins, PPS_LOCK, P_LOCK) && lockcheck && (!itemp_has(temp,IF_LOCK) || !is_class(MEMORY, ins->oprs[0].type))) { - nasm_error(ERR_WARNING | ERR_WARN_LOCK | ERR_PASS2 , - "instruction is not lockable"); + nasm_warnf(ERR_WARN_LOCK | ERR_PASS2 , "instruction is not lockable"); } bad_hle_warn(ins, hleok); @@ -1475,24 +1460,21 @@ static int emit_prefix(struct out_data *data, const int bits, insn *ins) c = 0xF3; break; case R_CS: - if (bits == 64) { - nasm_error(ERR_WARNING | ERR_PASS2, - "cs segment base generated, but will be ignored in 64-bit mode"); - } + if (bits == 64) + nasm_warnf(ERR_PASS2, "cs segment base generated, " + "but will be ignored in 64-bit mode"); c = 0x2E; break; case R_DS: - if (bits == 64) { - nasm_error(ERR_WARNING | ERR_PASS2, - "ds segment base generated, but will be ignored in 64-bit mode"); - } + if (bits == 64) + nasm_warnf(ERR_PASS2, "ds segment base generated, " + "but will be ignored in 64-bit mode"); c = 0x3E; break; case R_ES: - if (bits == 64) { - nasm_error(ERR_WARNING | ERR_PASS2, - "es segment base generated, but will be ignored in 64-bit mode"); - } + if (bits == 64) + nasm_warnf(ERR_PASS2, "es segment base generated, " + "but will be ignored in 64-bit mode"); c = 0x26; break; case R_FS: @@ -1503,21 +1485,19 @@ static int emit_prefix(struct out_data *data, const int bits, insn *ins) break; case R_SS: if (bits == 64) { - nasm_error(ERR_WARNING | ERR_PASS2, - "ss segment base generated, but will be ignored in 64-bit mode"); + nasm_warnf(ERR_PASS2, "ss segment base generated, " + "but will be ignored in 64-bit mode"); } c = 0x36; break; case R_SEGR6: case R_SEGR7: - nasm_error(ERR_NONFATAL, - "segr6 and segr7 cannot be used as prefixes"); + nasm_nonfatal("segr6 and segr7 cannot be used as prefixes"); break; case P_A16: if (bits == 64) { - nasm_error(ERR_NONFATAL, - "16-bit addressing is not supported " - "in 64-bit mode"); + nasm_nonfatal("16-bit addressing is not supported " + "in 64-bit mode"); } else if (bits != 16) c = 0x67; break; @@ -1527,9 +1507,8 @@ static int emit_prefix(struct out_data *data, const int bits, insn *ins) break; case P_A64: if (bits != 64) { - nasm_error(ERR_NONFATAL, - "64-bit addressing is only supported " - "in 64-bit mode"); + nasm_nonfatal("64-bit addressing is only supported " + "in 64-bit mode"); } break; case P_ASP: @@ -1651,7 +1630,7 @@ static void gencode(struct out_data *data, insn *ins) int64_t delta = opx->offset - data->offset - (data->inslen - data->insoffs); if (delta > 127 || delta < -128) - nasm_error(ERR_NONFATAL, "short jump is out of range"); + nasm_nonfatal("short jump is out of range"); } out_reladdr(data, opx, 1); break; @@ -1679,8 +1658,7 @@ static void gencode(struct out_data *data, insn *ins) case4(074): if (opx->segment == NO_SEG) - nasm_error(ERR_NONFATAL, "value referenced by FAR is not" - " relocatable"); + nasm_nonfatal("value referenced by FAR is not relocatable"); out_segment(data, opx); break; @@ -1692,14 +1670,12 @@ static void gencode(struct out_data *data, insn *ins) c = *codes++; opx = &ins->oprs[c >> 3]; opy = &ins->oprs[c & 7]; - if (!absolute_op(opy)) { - nasm_error(ERR_NONFATAL, - "non-absolute expression not permitted as argument %d", - c & 7); - } else if (opy->offset & ~mask) { - nasm_error(ERR_WARNING | ERR_PASS2 | ERR_WARN_NOV, + if (!absolute_op(opy)) + nasm_nonfatal("non-absolute expression not permitted " + "as argument %d", c & 7); + else if (opy->offset & ~mask) + nasm_warnf(ERR_PASS2 | ERR_WARN_NOV, "is4 argument exceeds bounds"); - } c = opy->offset & mask; goto emit_is4; } @@ -1720,8 +1696,8 @@ static void gencode(struct out_data *data, insn *ins) case4(0254): if (absolute_op(opx) && (int32_t)opx->offset != (int64_t)opx->offset) { - nasm_error(ERR_WARNING | ERR_PASS2 | ERR_WARN_NOV, - "signed dword immediate exceeds bounds"); + nasm_warnf(ERR_PASS2 | ERR_WARN_NOV, + "signed dword immediate exceeds bounds"); } out_imm(data, opx, 4, OUT_SIGNED); break; @@ -1790,7 +1766,7 @@ static void gencode(struct out_data *data, insn *ins) /* If this wasn't explicitly byte-sized, warn as though we * had fallen through to the imm16/32/64 case. */ - nasm_error(ERR_WARNING | ERR_PASS2 | ERR_WARN_NOV, + nasm_warnf(ERR_PASS2 | ERR_WARN_NOV, "%s value exceeds bounds", (opx->type & BITS8) ? "signed byte" : s == 16 ? "word" : @@ -1948,7 +1924,7 @@ static void gencode(struct out_data *data, insn *ins) if (process_ea(opy, &ea_data, bits, rfield, rflags, ins, &errmsg) != eat) - nasm_error(ERR_NONFATAL, "%s", errmsg); + nasm_nonfatal("%s", errmsg); p = bytes; *p++ = ea_data.modrm; @@ -2164,8 +2140,7 @@ static uint8_t get_broadcast_num(opflags_t opflags, opflags_t brsize) uint8_t brcast_num; if (brsize > BITS64) - nasm_error(ERR_FATAL, - "size of broadcasting element is greater than 64 bits"); + nasm_fatal("size of broadcasting element is greater than 64 bits"); /* * The shift term is to take care of the extra BITS80 inserted @@ -2515,8 +2490,7 @@ static enum ea_type process_ea(operand *input, ea *output, int bits, if (bits == 64 && ((input->type & IP_REL) == IP_REL)) { if (input->segment == NO_SEG || (input->opflags & OPFLAG_RELATIVE)) { - nasm_error(ERR_WARNING | ERR_PASS2, - "absolute address can not be RIP-relative"); + nasm_warnf(ERR_PASS2, "absolute address can not be RIP-relative"); input->type &= ~IP_REL; input->type |= MEMORY; } @@ -2530,10 +2504,8 @@ static enum ea_type process_ea(operand *input, ea *output, int bits, if (eaflags & EAF_BYTEOFFS || (eaflags & EAF_WORDOFFS && - input->disp_size != (addrbits != 16 ? 32 : 16))) { - nasm_error(ERR_WARNING | ERR_PASS1, - "displacement size ignored on absolute address"); - } + input->disp_size != (addrbits != 16 ? 32 : 16))) + nasm_warnf(ERR_PASS1, "displacement size ignored on absolute address"); if (bits == 64 && (~input->type & IP_REL)) { output->sib_present = true; @@ -2989,7 +2961,7 @@ static void add_asp(insn *ins, int addrbits) ins->addr_size = (addrbits == 32) ? 16 : 32; } else { /* Impossible... */ - nasm_error(ERR_NONFATAL, "impossible combination of address sizes"); + nasm_nonfatal("impossible combination of address sizes"); ins->addr_size = addrbits; /* Error recovery */ } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-11-24 22:48:16
|
Commit-ID: c3527dd6b294d65267bda5be80c2812e60d9fdd4 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=c3527dd6b294d65267bda5be80c2812e60d9fdd4 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 24 Nov 2018 22:17:47 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sun, 25 Nov 2018 01:15:51 +0300 error: Cover all levels with helpers Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/error.c | 65 ++++++++++++++++++++++++++++++++++++++++--------------- asm/nasm.c | 24 ++++++++++---------- asm/preproc-nop.c | 2 +- asm/preproc.c | 2 +- include/error.h | 10 +++++++-- nasmlib/file.c | 8 +++---- 6 files changed, 73 insertions(+), 38 deletions(-) diff --git a/asm/error.c b/asm/error.c index 970dec0..f99baaa 100644 --- a/asm/error.c +++ b/asm/error.c @@ -91,39 +91,65 @@ void nasm_error(int severity, const char *fmt, ...) va_end(ap); } -fatal_func nasm_fatal(const char *fmt, ...) +#define nasm_error_generatorf(__sev, __flags, __fmt) \ + va_list __ap; \ + va_start(__ap, __fmt); \ + nasm_verror(__sev | __flags, __fmt, __ap) + +#define nasm_error_generator(__sev, __fmt) \ + nasm_error_generatorf(__sev, 0, __fmt) + +void nasm_debug(const char *fmt, ...) { - va_list ap; + nasm_error_generator(ERR_DEBUG, fmt); +} - va_start(ap, fmt); - nasm_verror(ERR_FATAL, fmt, ap); - abort(); +void nasm_debugf(int flags, const char *fmt, ...) +{ + nasm_error_generatorf(ERR_DEBUG, flags, fmt); } -fatal_func nasm_fatal_fl(int flags, const char *fmt, ...) +void nasm_warn(const char *fmt, ...) { - va_list ap; + nasm_error_generator(ERR_WARNING, fmt); +} - va_start(ap, fmt); - nasm_verror(flags | ERR_FATAL, fmt, ap); - abort(); +void nasm_warnf(int flags, const char *fmt, ...) +{ + nasm_error_generatorf(ERR_WARNING, flags, fmt); } -fatal_func nasm_panic(const char *fmt, ...) +void nasm_nonfatal(const char *fmt, ...) { - va_list ap; + nasm_error_generator(ERR_NONFATAL, fmt); +} - va_start(ap, fmt); - nasm_verror(ERR_PANIC, fmt, ap); +void nasm_nonfatalf(int flags, const char *fmt, ...) +{ + nasm_error_generatorf(ERR_NONFATAL, flags, fmt); +} + +fatal_func nasm_fatal(const char *fmt, ...) +{ + nasm_error_generator(ERR_FATAL, fmt); abort(); } -fatal_func nasm_panic_fl(int flags, const char *fmt, ...) +fatal_func nasm_fatalf(int flags, const char *fmt, ...) { - va_list ap; + nasm_error_generatorf(ERR_FATAL, flags, fmt); + abort(); +} - va_start(ap, fmt); - nasm_verror(flags | ERR_PANIC, fmt, ap); +fatal_func nasm_panic(const char *fmt, ...) +{ + nasm_error_generator(ERR_PANIC, fmt); + abort(); +} + +fatal_func nasm_panicf(int flags, const char *fmt, ...) +{ + nasm_error_generatorf(ERR_PANIC, flags, fmt); abort(); } @@ -137,6 +163,9 @@ fatal_func nasm_assert_failed(const char *file, int line, const char *msg) nasm_panic("assertion %s failed at %s:%d", msg, file, line); } +#undef nasm_error_generator +#undef nasm_error_generatorf + /* * This is called when processing a -w or -W option, or a warning directive. * Returns true if if the action was successful. diff --git a/asm/nasm.c b/asm/nasm.c index 8f23b4b..a3ed2df 100644 --- a/asm/nasm.c +++ b/asm/nasm.c @@ -489,7 +489,7 @@ int main(int argc, char **argv) } else { dfmt = dfmt_find(ofmt, debug_format); if (!dfmt) { - nasm_fatal_fl(ERR_NOFILE | ERR_USAGE, + nasm_fatalf(ERR_NOFILE | ERR_USAGE, "unrecognized debug format `%s' for" " output format `%s'", debug_format, ofmt->shortname); @@ -549,9 +549,9 @@ int main(int argc, char **argv) if (outname) { ofile = nasm_open_write(outname, NF_TEXT); if (!ofile) - nasm_fatal_fl(ERR_NOFILE, - "unable to open output file `%s'", - outname); + nasm_fatalf(ERR_NOFILE, + "unable to open output file `%s'", + outname); } else ofile = NULL; @@ -594,7 +594,7 @@ int main(int argc, char **argv) if (operating_mode & OP_NORMAL) { ofile = nasm_open_write(outname, (ofmt->flags & OFMT_TEXT) ? NF_TEXT : NF_BINARY); if (!ofile) - nasm_fatal_fl(ERR_NOFILE, + nasm_fatalf(ERR_NOFILE, "unable to open output file `%s'", outname); ofmt->init(); @@ -892,7 +892,7 @@ static bool process_arg(char *p, char *q, int pass) if (pass == 1) { ofmt = ofmt_find(param, &ofmt_alias); if (!ofmt) { - nasm_fatal_fl(ERR_NOFILE | ERR_USAGE, + nasm_fatalf(ERR_NOFILE | ERR_USAGE, "unrecognised output format `%s' - " "use -hf for a list", param); } @@ -992,9 +992,9 @@ static bool process_arg(char *p, char *q, int pass) else if (nasm_stricmp("gnu", param) == 0) nasm_set_verror(nasm_verror_gnu); else - nasm_fatal_fl(ERR_NOFILE | ERR_USAGE, - "unrecognized error reporting format `%s'", - param); + nasm_fatalf(ERR_NOFILE | ERR_USAGE, + "unrecognized error reporting format `%s'", + param); } break; @@ -1391,19 +1391,19 @@ static void parse_cmdline(int argc, char **argv, int pass) return; if (!inname) - nasm_fatal_fl(ERR_NOFILE | ERR_USAGE, "no input file specified"); + nasm_fatalf(ERR_NOFILE | ERR_USAGE, "no input file specified"); else if ((errname && !strcmp(inname, errname)) || (outname && !strcmp(inname, outname)) || (listname && !strcmp(inname, listname)) || (depend_file && !strcmp(inname, depend_file))) - nasm_fatal_fl(ERR_USAGE, "will not overwrite input file"); + nasm_fatalf(ERR_USAGE, "will not overwrite input file"); if (errname) { error_file = nasm_open_write(errname, NF_TEXT); if (!error_file) { error_file = stderr; /* Revert to default! */ - nasm_fatal_fl(ERR_NOFILE | ERR_USAGE, + nasm_fatalf(ERR_NOFILE | ERR_USAGE, "cannot open file `%s' for error messages", errname); } diff --git a/asm/preproc-nop.c b/asm/preproc-nop.c index 655eff7..43c0fbe 100644 --- a/asm/preproc-nop.c +++ b/asm/preproc-nop.c @@ -70,7 +70,7 @@ static void nop_reset(const char *file, int pass, struct strlist *deplist) nop_fp = nasm_open_read(file, NF_TEXT); if (!nop_fp) - nasm_fatal_fl(ERR_NOFILE, "unable to open input file `%s'", file); + nasm_fatalf(ERR_NOFILE, "unable to open input file `%s'", file); (void)pass; /* placate compilers */ strlist_add(deplist, file); diff --git a/asm/preproc.c b/asm/preproc.c index 76bd722..808303e 100644 --- a/asm/preproc.c +++ b/asm/preproc.c @@ -4950,7 +4950,7 @@ pp_reset(const char *file, int apass, struct strlist *dep_list) src_set(0, file); istk->lineinc = 1; if (!istk->fp) - nasm_fatal_fl(ERR_NOFILE, "unable to open input file `%s'", file); + nasm_fatalf(ERR_NOFILE, "unable to open input file `%s'", file); defining = NULL; nested_mac_count = 0; nested_rep_count = 0; diff --git a/include/error.h b/include/error.h index 1ee1afb..c87ea68 100644 --- a/include/error.h +++ b/include/error.h @@ -44,10 +44,16 @@ * An error reporting function should look like this. */ void printf_func(2, 3) nasm_error(int severity, const char *fmt, ...); +void printf_func(1, 2) nasm_debug(const char *fmt, ...); +void printf_func(2, 3) nasm_debugf(int flags, const char *fmt, ...); +void printf_func(1, 2) nasm_warn(const char *fmt, ...); +void printf_func(2, 3) nasm_warnf(int flags, const char *fmt, ...); +void printf_func(1, 2) nasm_nonfatal(const char *fmt, ...); +void printf_func(2, 3) nasm_nonfatalf(int flags, const char *fmt, ...); fatal_func printf_func(1, 2) nasm_fatal(const char *fmt, ...); +fatal_func printf_func(2, 3) nasm_fatalf(int flags, const char *fmt, ...); fatal_func printf_func(1, 2) nasm_panic(const char *fmt, ...); -fatal_func printf_func(2, 3) nasm_fatal_fl(int flags, const char *fmt, ...); -fatal_func printf_func(2, 3) nasm_panic_fl(int flags, const char *fmt, ...); +fatal_func printf_func(2, 3) nasm_panicf(int flags, const char *fmt, ...); fatal_func nasm_panic_from_macro(const char *file, int line); #define panic() nasm_panic_from_macro(__FILE__, __LINE__); diff --git a/nasmlib/file.c b/nasmlib/file.c index c7bd1a6..4902bb5 100644 --- a/nasmlib/file.c +++ b/nasmlib/file.c @@ -119,8 +119,8 @@ FILE *nasm_open_read(const char *filename, enum file_flags flags) f = fopen(filename, (flags & NF_TEXT) ? "rt" : "rb"); if (!f && (flags & NF_FATAL)) - nasm_fatal_fl(ERR_NOFILE, "unable to open input file: `%s': %s", - filename, strerror(errno)); + nasm_fatalf(ERR_NOFILE, "unable to open input file: `%s': %s", + filename, strerror(errno)); return f; } @@ -132,8 +132,8 @@ FILE *nasm_open_write(const char *filename, enum file_flags flags) f = fopen(filename, (flags & NF_TEXT) ? "wt" : "wb"); if (!f && (flags & NF_FATAL)) - nasm_fatal_fl(ERR_NOFILE, "unable to open output file: `%s': %s", - filename, strerror(errno)); + nasm_fatalf(ERR_NOFILE, "unable to open output file: `%s': %s", + filename, strerror(errno)); return f; } |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-11-24 22:48:16
|
Commit-ID: 3351072306f56f8ab3f03f23de90e4163f6ec67c Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=3351072306f56f8ab3f03f23de90e4163f6ec67c Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 24 Nov 2018 18:58:11 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 24 Nov 2018 18:58:11 +0300 error: Style liftup Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- asm/error.c | 260 ++++++++++++++++++++++++++++---------------------------- include/error.h | 85 +++++++++--------- 2 files changed, 174 insertions(+), 171 deletions(-) diff --git a/asm/error.c b/asm/error.c index 0c7aa64..970dec0 100644 --- a/asm/error.c +++ b/asm/error.c @@ -47,92 +47,94 @@ * the [warning] directive. */ const struct warning warnings[ERR_WARN_ALL+1] = { - {"other", "any warning not specifially mentioned below", true}, - {"macro-params", "macro calls with wrong parameter count", true}, - {"macro-selfref", "cyclic macro references", false}, - {"macro-defaults", "macros with more default than optional parameters", true}, - {"orphan-labels", "labels alone on lines without trailing `:'", true}, - {"number-overflow", "numeric constant does not fit", true}, - {"gnu-elf-extensions", "using 8- or 16-bit relocation in ELF32, a GNU extension", false}, - {"float-overflow", "floating point overflow", true}, - {"float-denorm", "floating point denormal", false}, - {"float-underflow", "floating point underflow", false}, - {"float-toolong", "too many digits in floating-point number", true}, - {"user", "%warning directives", true}, - {"lock", "lock prefix on unlockable instructions", true}, - {"hle", "invalid hle prefixes", true}, - {"bnd", "invalid bnd prefixes", true}, - {"zext-reloc", "relocation zero-extended to match output format", true}, - {"ptr", "non-NASM keyword used in other assemblers", true}, - {"bad-pragma", "empty or malformed %pragma", false}, - {"unknown-pragma", "unknown %pragma facility or directive", false}, - {"not-my-pragma", "%pragma not applicable to this compilation", false}, - {"unknown-warning", "unknown warning in -W/-w or warning directive", false}, - {"negative-rep", "regative %rep count", true}, - {"phase", "phase error during stabilization", false}, - - /* THIS ENTRY MUST COME LAST */ - {"all", "all possible warnings", false} + { "other", "any warning not specifially mentioned below", true }, + { "macro-params", "macro calls with wrong parameter count", true }, + { "macro-selfref", "cyclic macro references", false }, + { "macro-defaults", "macros with more default than optional parameters", true }, + { "orphan-labels", "labels alone on lines without trailing `:'", true }, + { "number-overflow", "numeric constant does not fit", true }, + { "gnu-elf-extensions", "using 8- or 16-bit relocation in ELF32, a GNU extension", false }, + { "float-overflow", "floating point overflow", true }, + { "float-denorm", "floating point denormal", false }, + { "float-underflow", "floating point underflow", false }, + { "float-toolong", "too many digits in floating-point number", true }, + { "user", "%warning directives", true }, + { "lock", "lock prefix on unlockable instructions", true }, + { "hle", "invalid hle prefixes", true }, + { "bnd", "invalid bnd prefixes", true }, + { "zext-reloc", "relocation zero-extended to match output format", true }, + { "ptr", "non-NASM keyword used in other assemblers", true }, + { "bad-pragma", "empty or malformed %pragma", false }, + { "unknown-pragma", "unknown %pragma facility or directive", false }, + { "not-my-pragma", "%pragma not applicable to this compilation", false }, + { "unknown-warning", "unknown warning in -W/-w or warning directive", false }, + { "negative-rep", "regative %rep count", true }, + { "phase", "phase error during stabilization", false }, + + /* THIS ENTRY MUST COME LAST */ + { "all", "all possible warnings", false } }; -uint8_t warning_state[ERR_WARN_ALL];/* Current state */ -uint8_t warning_state_init[ERR_WARN_ALL]; /* Command-line state, for reset */ +/* Current state and command-line state, for reset */ +uint8_t warning_state[ERR_WARN_ALL]; +uint8_t warning_state_init[ERR_WARN_ALL]; -vefunc nasm_verror; /* Global error handling function */ +/* Global error handling function */ +vefunc nasm_verror; void nasm_error(int severity, const char *fmt, ...) { - va_list ap; + va_list ap; - va_start(ap, fmt); - nasm_verror(severity, fmt, ap); - va_end(ap); + va_start(ap, fmt); + nasm_verror(severity, fmt, ap); + va_end(ap); } fatal_func nasm_fatal(const char *fmt, ...) { - va_list ap; + va_list ap; - va_start(ap, fmt); - nasm_verror(ERR_FATAL, fmt, ap); - abort(); /* We should never get here */ + va_start(ap, fmt); + nasm_verror(ERR_FATAL, fmt, ap); + abort(); } fatal_func nasm_fatal_fl(int flags, const char *fmt, ...) { - va_list ap; + va_list ap; - va_start(ap, fmt); - nasm_verror(flags | ERR_FATAL, fmt, ap); - abort(); /* We should never get here */ + va_start(ap, fmt); + nasm_verror(flags | ERR_FATAL, fmt, ap); + abort(); } fatal_func nasm_panic(const char *fmt, ...) { - va_list ap; + va_list ap; - va_start(ap, fmt); - nasm_verror(ERR_PANIC, fmt, ap); - abort(); /* We should never get here */ + va_start(ap, fmt); + nasm_verror(ERR_PANIC, fmt, ap); + abort(); } fatal_func nasm_panic_fl(int flags, const char *fmt, ...) { - va_list ap; + va_list ap; - va_start(ap, fmt); - nasm_verror(flags | ERR_PANIC, fmt, ap); - abort(); /* We should never get here */ + va_start(ap, fmt); + nasm_verror(flags | ERR_PANIC, fmt, ap); + abort(); } fatal_func nasm_panic_from_macro(const char *file, int line) { - nasm_panic("internal error at %s:%d\n", file, line); + nasm_panic("internal error at %s:%d\n", file, line); } fatal_func nasm_assert_failed(const char *file, int line, const char *msg) { - nasm_panic("assertion %s failed at %s:%d", msg, file, line); + nasm_panic("assertion %s failed at %s:%d", msg, file, line); } /* @@ -141,82 +143,82 @@ fatal_func nasm_assert_failed(const char *file, int line, const char *msg) */ bool set_warning_status(const char *value) { - enum warn_action { WID_OFF, WID_ON, WID_RESET }; - enum warn_action action; - uint8_t mask; - int i; - bool ok = false; - - value = nasm_skip_spaces(value); - switch (*value) { - case '-': - action = WID_OFF; - value++; - break; - case '+': - action = WID_ON; - value++; - break; - case '*': - action = WID_RESET; - value++; - break; - case 'N': - case 'n': - if (!nasm_strnicmp(value, "no-", 3)) { - action = WID_OFF; - value += 3; - break; - } else if (!nasm_stricmp(value, "none")) { - action = WID_OFF; - value = NULL; - break; - } - /* else fall through */ - default: - action = WID_ON; - break; - } - - mask = WARN_ST_ENABLED; - - if (value && !nasm_strnicmp(value, "error", 5)) { - switch (value[5]) { - case '=': - mask = WARN_ST_ERROR; - value += 6; - break; - case '\0': - mask = WARN_ST_ERROR; - value = NULL; - break; - default: - /* Just an accidental prefix? */ - break; - } - } - - if (value && !nasm_stricmp(value, "all")) - value = NULL; - - /* This is inefficient, but it shouldn't matter... */ - for (i = 0; i < ERR_WARN_ALL; i++) { - if (!value || !nasm_stricmp(value, warnings[i].name)) { - ok = true; /* At least one action taken */ - switch (action) { - case WID_OFF: - warning_state[i] &= ~mask; - break; - case WID_ON: - warning_state[i] |= mask; - break; - case WID_RESET: - warning_state[i] &= ~mask; - warning_state[i] |= warning_state_init[i] & mask; - break; - } - } - } - - return ok; + enum warn_action { WID_OFF, WID_ON, WID_RESET }; + enum warn_action action; + bool ok = false; + uint8_t mask; + int i; + + value = nasm_skip_spaces(value); + switch (*value) { + case '-': + action = WID_OFF; + value++; + break; + case '+': + action = WID_ON; + value++; + break; + case '*': + action = WID_RESET; + value++; + break; + case 'N': + case 'n': + if (!nasm_strnicmp(value, "no-", 3)) { + action = WID_OFF; + value += 3; + break; + } else if (!nasm_stricmp(value, "none")) { + action = WID_OFF; + value = NULL; + break; + } + /* else fall through */ + default: + action = WID_ON; + break; + } + + mask = WARN_ST_ENABLED; + + if (value && !nasm_strnicmp(value, "error", 5)) { + switch (value[5]) { + case '=': + mask = WARN_ST_ERROR; + value += 6; + break; + case '\0': + mask = WARN_ST_ERROR; + value = NULL; + break; + default: + /* Just an accidental prefix? */ + break; + } + } + + if (value && !nasm_stricmp(value, "all")) + value = NULL; + + /* This is inefficient, but it shouldn't matter... */ + for (i = 0; i < ERR_WARN_ALL; i++) { + if (!value || !nasm_stricmp(value, warnings[i].name)) { + ok = true; /* At least one action taken */ + switch (action) { + case WID_OFF: + warning_state[i] &= ~mask; + break; + case WID_ON: + warning_state[i] |= mask; + break; + case WID_RESET: + warning_state[i] &= ~mask; + warning_state[i] |= warning_state_init[i] & mask; + break; + } + } + } + + return ok; } diff --git a/include/error.h b/include/error.h index 08d562b..1ee1afb 100644 --- a/include/error.h +++ b/include/error.h @@ -53,11 +53,12 @@ fatal_func nasm_panic_from_macro(const char *file, int line); typedef void (*vefunc) (int severity, const char *fmt, va_list ap); extern vefunc nasm_verror; + static inline vefunc nasm_set_verror(vefunc ve) { - vefunc old_verror = nasm_verror; - nasm_verror = ve; - return old_verror; + vefunc old_verror = nasm_verror; + nasm_verror = ve; + return old_verror; } /* @@ -65,46 +66,46 @@ static inline vefunc nasm_set_verror(vefunc ve) * argument to an efunc. */ -#define ERR_DEBUG 0x00000000 /* put out debugging message */ -#define ERR_WARNING 0x00000001 /* warn only: no further action */ -#define ERR_NONFATAL 0x00000002 /* terminate assembly after phase */ -#define ERR_FATAL 0x00000006 /* instantly fatal: exit with error */ -#define ERR_PANIC 0x00000007 /* internal error: panic instantly - * and dump core for reference */ -#define ERR_MASK 0x00000007 /* mask off the above codes */ -#define ERR_NOFILE 0x00000010 /* don't give source file name/line */ -#define ERR_TOPFILE 0x00000020 /* give the top input file name only */ -#define ERR_USAGE 0x00000040 /* print a usage message */ -#define ERR_PASS1 0x00000080 /* only print this error on pass one */ -#define ERR_PASS2 0x00000100 /* only print this error on pass one */ - -#define ERR_NO_SEVERITY 0x00000200 /* suppress printing severity */ -#define ERR_PP_PRECOND 0x00000400 /* for preprocessor use */ -#define ERR_PP_LISTMACRO 0x00000800 /* from preproc->error_list_macros() */ +#define ERR_DEBUG 0x00000000 /* put out debugging message */ +#define ERR_WARNING 0x00000001 /* warn only: no further action */ +#define ERR_NONFATAL 0x00000002 /* terminate assembly after phase */ +#define ERR_FATAL 0x00000006 /* instantly fatal: exit with error */ +#define ERR_PANIC 0x00000007 /* internal error: panic instantly + * and dump core for reference */ +#define ERR_MASK 0x00000007 /* mask off the above codes */ +#define ERR_NOFILE 0x00000010 /* don't give source file name/line */ +#define ERR_TOPFILE 0x00000020 /* give the top input file name only */ +#define ERR_USAGE 0x00000040 /* print a usage message */ +#define ERR_PASS1 0x00000080 /* only print this error on pass one */ +#define ERR_PASS2 0x00000100 /* only print this error on pass one */ + +#define ERR_NO_SEVERITY 0x00000200 /* suppress printing severity */ +#define ERR_PP_PRECOND 0x00000400 /* for preprocessor use */ +#define ERR_PP_LISTMACRO 0x00000800 /* from preproc->error_list_macros() */ /* * These codes define specific types of suppressible warning. */ -#define ERR_WARN_MASK 0xFFFFF000 /* the mask for this feature */ -#define ERR_WARN_SHR 12 /* how far to shift right */ +#define ERR_WARN_MASK 0xFFFFF000 /* the mask for this feature */ +#define ERR_WARN_SHR 12 /* how far to shift right */ -#define WARN(x) ((x) << ERR_WARN_SHR) -#define WARN_IDX(x) (((x) & ERR_WARN_MASK) >> ERR_WARN_SHR) +#define WARN(x) ((x) << ERR_WARN_SHR) +#define WARN_IDX(x) (((x) & ERR_WARN_MASK) >> ERR_WARN_SHR) -#define ERR_WARN_OTHER WARN( 0) /* any noncategorized warning */ -#define ERR_WARN_MNP WARN( 1) /* macro-num-parameters warning */ -#define ERR_WARN_MSR WARN( 2) /* macro self-reference */ -#define ERR_WARN_MDP WARN( 3) /* macro default parameters check */ -#define ERR_WARN_OL WARN( 4) /* orphan label (no colon, and +#define ERR_WARN_OTHER WARN( 0) /* any noncategorized warning */ +#define ERR_WARN_MNP WARN( 1) /* macro-num-parameters warning */ +#define ERR_WARN_MSR WARN( 2) /* macro self-reference */ +#define ERR_WARN_MDP WARN( 3) /* macro default parameters check */ +#define ERR_WARN_OL WARN( 4) /* orphan label (no colon, and * alone on line) */ -#define ERR_WARN_NOV WARN( 5) /* numeric overflow */ -#define ERR_WARN_GNUELF WARN( 6) /* using GNU ELF extensions */ -#define ERR_WARN_FL_OVERFLOW WARN( 7) /* FP overflow */ -#define ERR_WARN_FL_DENORM WARN( 8) /* FP denormal */ -#define ERR_WARN_FL_UNDERFLOW WARN( 9) /* FP underflow */ -#define ERR_WARN_FL_TOOLONG WARN(10) /* FP too many digits */ -#define ERR_WARN_USER WARN(11) /* %warning directives */ +#define ERR_WARN_NOV WARN( 5) /* numeric overflow */ +#define ERR_WARN_GNUELF WARN( 6) /* using GNU ELF extensions */ +#define ERR_WARN_FL_OVERFLOW WARN( 7) /* FP overflow */ +#define ERR_WARN_FL_DENORM WARN( 8) /* FP denormal */ +#define ERR_WARN_FL_UNDERFLOW WARN( 9) /* FP underflow */ +#define ERR_WARN_FL_TOOLONG WARN(10) /* FP too many digits */ +#define ERR_WARN_USER WARN(11) /* %warning directives */ #define ERR_WARN_LOCK WARN(12) /* bad LOCK prefixes */ #define ERR_WARN_HLE WARN(13) /* bad HLE prefixes */ #define ERR_WARN_BND WARN(14) /* bad BND prefixes */ @@ -118,23 +119,23 @@ static inline vefunc nasm_set_verror(vefunc ve) #define ERR_WARN_PHASE WARN(22) /* phase error in pass 1 */ /* The "all" warning acts as a global switch, it must come last */ -#define ERR_WARN_ALL 23 /* Do not use WARN() here */ +#define ERR_WARN_ALL 23 /* Do not use WARN() here */ struct warning { - const char *name; - const char *help; - bool enabled; + const char *name; + const char *help; + bool enabled; }; extern const struct warning warnings[ERR_WARN_ALL+1]; /* This is a bitmask */ -#define WARN_ST_ENABLED 1 /* Warning is currently enabled */ -#define WARN_ST_ERROR 2 /* Treat this warning as an error */ +#define WARN_ST_ENABLED 1 /* Warning is currently enabled */ +#define WARN_ST_ERROR 2 /* Treat this warning as an error */ extern uint8_t warning_state[ERR_WARN_ALL]; extern uint8_t warning_state_init[ERR_WARN_ALL]; /* Process a warning option or directive */ -bool set_warning_status(const char *); +bool set_warning_status(const char *value); #endif /* NASM_ERROR_H */ |
From: nasm-bot f. C. G. <gor...@gm...> - 2018-11-24 14:09:30
|
Commit-ID: 85261a2b5790d31322eb4ea8228218dc0ad53374 Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=85261a2b5790d31322eb4ea8228218dc0ad53374 Author: Cyrill Gorcunov <gor...@gm...> AuthorDate: Sat, 24 Nov 2018 17:06:57 +0300 Committer: Cyrill Gorcunov <gor...@gm...> CommitDate: Sat, 24 Nov 2018 17:06:57 +0300 test: Use NASM_TEST_RUN environment To placate false positives in outputs which writes nasm comment an signature into binary form. Signed-off-by: Cyrill Gorcunov <gor...@gm...> --- travis/nasm-t.py | 6 +++--- travis/test/addr64x.stderr | 2 +- travis/test/align13.stderr | 2 +- travis/test/alonesym-obj.obj.t | Bin 1163 -> 1161 bytes travis/test/bcd.stderr | 2 +- travis/test/elif.o.t | Bin 232 -> 230 bytes travis/test/obj.o.t | Bin 482 -> 480 bytes travis/test/obj.stderr | 2 +- travis/test/riprel.stderr | 2 +- travis/test/tmap.o.stderr | 2 +- travis/test/utf-error.stderr | 2 +- travis/test/vmread.stderr | 2 +- 12 files changed, 11 insertions(+), 11 deletions(-) diff --git a/travis/nasm-t.py b/travis/nasm-t.py index e925a6e..7c37bde 100755 --- a/travis/nasm-t.py +++ b/travis/nasm-t.py @@ -277,17 +277,17 @@ def exec_nasm(desc): print("\tProcessing %s" % (desc['_test-name'])) opts = [args.nasm] + prepare_run_opts(desc) + nasm_env = os.environ.copy() + nasm_env['NASM_TEST_RUN'] = 'y' + desc_env = desc.get('environ') if desc_env: - nasm_env = os.environ.copy() for i in desc_env: v = i.split('=') if len(v) == 2: nasm_env[v[0]] = v[1] else: nasm_env[v[0]] = None - else: - nasm_env = None print("\tExecuting %s" % (" ".join(opts))) pnasm = subprocess.Popen(opts, diff --git a/travis/test/addr64x.stderr b/travis/test/addr64x.stderr index 5d1b318..4c53e22 100644 --- a/travis/test/addr64x.stderr +++ b/travis/test/addr64x.stderr @@ -1,4 +1,4 @@ ./travis/test/addr64x.asm:5: warning: byte data exceeds bounds [-w+number-overflow] ./travis/test/addr64x.asm:5: warning: byte data exceeds bounds [-w+number-overflow] ./travis/test/addr64x.asm:6: warning: byte data exceeds bounds [-w+number-overflow] -./travis/test/addr64x.asm:6: warning: byte data exceeds bounds [-w+number-overflow] +./travis/test/addr64x.asm:6: warning: byte data exceeds bounds [-w+number-overflow] \ No newline at end of file diff --git a/travis/test/align13.stderr b/travis/test/align13.stderr index 31d6e31..bc2da8c 100644 --- a/travis/test/align13.stderr +++ b/travis/test/align13.stderr @@ -1,4 +1,4 @@ ./travis/test/align13.asm:7: error: segment alignment `13' is not power of two ./travis/test/align13.asm:10: error: segment alignment `13' is not power of two ./travis/test/align13.asm:13: error: segment alignment `13' is not power of two -./travis/test/align13.asm:14: error: segment alignment `13' is not power of two +./travis/test/align13.asm:14: error: segment alignment `13' is not power of two \ No newline at end of file diff --git a/travis/test/alonesym-obj.obj.t b/travis/test/alonesym-obj.obj.t index 480d599..99ec34c 100644 Binary files a/travis/test/alonesym-obj.obj.t and b/travis/test/alonesym-obj.obj.t differ diff --git a/travis/test/bcd.stderr b/travis/test/bcd.stderr index 01f1b84..9f30846 100644 --- a/travis/test/bcd.stderr +++ b/travis/test/bcd.stderr @@ -1,2 +1,2 @@ ./travis/test/bcd.asm:9: warning: packed BCD truncated to 18 digits -./travis/test/bcd.asm:20: warning: packed BCD truncated to 18 digits +./travis/test/bcd.asm:20: warning: packed BCD truncated to 18 digits \ No newline at end of file diff --git a/travis/test/elif.o.t b/travis/test/elif.o.t index 8737f85..60336dc 100644 Binary files a/travis/test/elif.o.t and b/travis/test/elif.o.t differ diff --git a/travis/test/obj.o.t b/travis/test/obj.o.t index f5c7671..a91f3ad 100644 Binary files a/travis/test/obj.o.t and b/travis/test/obj.o.t differ diff --git a/travis/test/obj.stderr b/travis/test/obj.stderr index 01586d3..7aba811 100644 --- a/travis/test/obj.stderr +++ b/travis/test/obj.stderr @@ -1,3 +1,3 @@ ./travis/test/obj.asm:70: warning: 32-bit segment relocation zero-extended from 16 bits [-w+zext-reloc] ./travis/test/obj.asm:71: warning: 64-bit unsigned relocation zero-extended from 32 bits [-w+zext-reloc] -./travis/test/obj.asm:71: warning: 64-bit segment relocation zero-extended from 16 bits [-w+zext-reloc] +./travis/test/obj.asm:71: warning: 64-bit segment relocation zero-extended from 16 bits [-w+zext-reloc] \ No newline at end of file diff --git a/travis/test/riprel.stderr b/travis/test/riprel.stderr index 59c9ff0..df84009 100644 --- a/travis/test/riprel.stderr +++ b/travis/test/riprel.stderr @@ -10509,4 +10509,4 @@ ./travis/test/riprel.asm:5353: warning: es segment base generated, but will be ignored in 64-bit mode ./travis/test/riprel.asm:5354: warning: absolute address can not be RIP-relative ./travis/test/riprel.asm:5354: warning: es segment base generated, but will be ignored in 64-bit mode -./travis/test/riprel.asm:5354: warning: es segment base generated, but will be ignored in 64-bit mode +./travis/test/riprel.asm:5354: warning: es segment base generated, but will be ignored in 64-bit mode \ No newline at end of file diff --git a/travis/test/tmap.o.stderr b/travis/test/tmap.o.stderr index da75c8f..cf2770e 100644 --- a/travis/test/tmap.o.stderr +++ b/travis/test/tmap.o.stderr @@ -1 +1 @@ -./travis/test/tmap.asm:938: warning: label alone on a line without a colon might be in error [-w+orphan-labels] +./travis/test/tmap.asm:938: warning: label alone on a line without a colon might be in error [-w+orphan-labels] \ No newline at end of file diff --git a/travis/test/utf-error.stderr b/travis/test/utf-error.stderr index 3f420e3..07ff4fb 100644 --- a/travis/test/utf-error.stderr +++ b/travis/test/utf-error.stderr @@ -15,4 +15,4 @@ ./travis/test/utf.asm:77: error: unterminated __utf16be__ function ./travis/test/utf.asm:77: error: comma expected after operand 2 ./travis/test/utf.asm:78: error: unterminated __utf16be__ function -./travis/test/utf.asm:79: error: invalid string for transform +./travis/test/utf.asm:79: error: invalid string for transform \ No newline at end of file diff --git a/travis/test/vmread.stderr b/travis/test/vmread.stderr index 78e91df..84fb528 100644 --- a/travis/test/vmread.stderr +++ b/travis/test/vmread.stderr @@ -3,4 +3,4 @@ ./travis/test/vmread.asm:19: error: instruction not supported in 64-bit mode ./travis/test/vmread.asm:20: error: instruction not supported in 64-bit mode ./travis/test/vmread.asm:22: error: invalid combination of opcode and operands -./travis/test/vmread.asm:23: error: invalid combination of opcode and operands +./travis/test/vmread.asm:23: error: invalid combination of opcode and operands \ No newline at end of file |