mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Make quote marks consistent in error/warning messages (#1791)
- "Double quotes" for strings (filenames, section names, CLI option arguments, etc) - 'Single quotes' for characters and CLI option flags - `Backticks` for keywords and identifiers (symbol names, charmap names, etc) CLI option flags also have their leading dashes
This commit is contained in:
@@ -151,7 +151,7 @@ jobs:
|
|||||||
body: |
|
body: |
|
||||||
Please ensure that the packages below work properly.
|
Please ensure that the packages below work properly.
|
||||||
Once that's done, replace this text with the changelog, un-draft the release, and update the `release` branch.
|
Once that's done, replace this text with the changelog, un-draft the release, and update the `release` branch.
|
||||||
By the way, if you forgot to update `include/version.hpp`, RGBASM's version test is gonna fail in the tag's regression testing! (Use `git push --delete origin <tag>` to delete it)
|
By the way, if you forgot to update `include/version.hpp`, RGBASM's version test is going to fail in the tag's regression testing! (Use `git push --delete origin <tag>` to delete it)
|
||||||
draft: true # Don't publish the release quite yet...
|
draft: true # Don't publish the release quite yet...
|
||||||
prerelease: ${{ contains(github.ref, '-rc') }}
|
prerelease: ${{ contains(github.ref, '-rc') }}
|
||||||
files: |
|
files: |
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ void act_If(int32_t condition) {
|
|||||||
|
|
||||||
void act_Elif(int32_t condition) {
|
void act_Elif(int32_t condition) {
|
||||||
if (lexer_GetIFDepth() == 0) {
|
if (lexer_GetIFDepth() == 0) {
|
||||||
fatal("Found ELIF outside of an IF construct");
|
fatal("Found `ELIF` outside of a conditional (not after an `IF`/`ELIF` block)");
|
||||||
}
|
}
|
||||||
if (lexer_RanIFBlock()) {
|
if (lexer_RanIFBlock()) {
|
||||||
if (lexer_ReachedELSEBlock()) {
|
if (lexer_ReachedELSEBlock()) {
|
||||||
fatal("Found ELIF after an ELSE block");
|
fatal("Found `ELIF` after an `ELSE` block");
|
||||||
}
|
}
|
||||||
lexer_SetMode(LEXER_SKIP_TO_ENDC);
|
lexer_SetMode(LEXER_SKIP_TO_ENDC);
|
||||||
} else if (condition) {
|
} else if (condition) {
|
||||||
@@ -43,11 +43,11 @@ void act_Elif(int32_t condition) {
|
|||||||
|
|
||||||
void act_Else() {
|
void act_Else() {
|
||||||
if (lexer_GetIFDepth() == 0) {
|
if (lexer_GetIFDepth() == 0) {
|
||||||
fatal("Found ELSE outside of an IF construct");
|
fatal("Found `ELSE` outside of a conditional (not after an `IF`/`ELIF` block)");
|
||||||
}
|
}
|
||||||
if (lexer_RanIFBlock()) {
|
if (lexer_RanIFBlock()) {
|
||||||
if (lexer_ReachedELSEBlock()) {
|
if (lexer_ReachedELSEBlock()) {
|
||||||
fatal("Found ELSE after an ELSE block");
|
fatal("Found `ELSE` after an `ELSE` block");
|
||||||
}
|
}
|
||||||
lexer_SetMode(LEXER_SKIP_TO_ENDC);
|
lexer_SetMode(LEXER_SKIP_TO_ENDC);
|
||||||
} else {
|
} else {
|
||||||
@@ -140,14 +140,16 @@ std::optional<std::string> act_ReadFile(std::string const &name, uint32_t maxLen
|
|||||||
}
|
}
|
||||||
fseek(file, 0, SEEK_SET);
|
fseek(file, 0, SEEK_SET);
|
||||||
} else if (errno != ESPIPE) {
|
} else if (errno != ESPIPE) {
|
||||||
error("Error determining size of READFILE file '%s': %s", name.c_str(), strerror(errno));
|
error(
|
||||||
|
"Error determining size of `READFILE` file \"%s\": %s", name.c_str(), strerror(errno)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string contents;
|
std::string contents;
|
||||||
contents.resize(readSize);
|
contents.resize(readSize);
|
||||||
|
|
||||||
if (fread(&contents[0], 1, readSize, file) < readSize || ferror(file)) {
|
if (fread(&contents[0], 1, readSize, file) < readSize || ferror(file)) {
|
||||||
error("Error reading READFILE file '%s': %s", name.c_str(), strerror(errno));
|
error("Error reading `READFILE` file \"%s\": %s", name.c_str(), strerror(errno));
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -578,12 +580,13 @@ std::string act_StringFormat(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (argIndex < args.size()) {
|
if (argIndex < args.size()) {
|
||||||
error("STRFMT: %zu unformatted argument(s)", args.size() - argIndex);
|
size_t extra = args.size() - argIndex;
|
||||||
|
error("STRFMT: %zu unformatted argument%s", extra, extra == 1 ? "" : "s");
|
||||||
} else if (argIndex > args.size()) {
|
} else if (argIndex > args.size()) {
|
||||||
error(
|
error(
|
||||||
"STRFMT: Not enough arguments for format spec, got: %zu, need: %zu",
|
"STRFMT: Not enough arguments for format spec (expected %zu, got %zu)",
|
||||||
args.size(),
|
argIndex,
|
||||||
argIndex
|
args.size()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,15 +597,15 @@ std::string act_SectionName(std::string const &symName) {
|
|||||||
Symbol *sym = sym_FindScopedValidSymbol(symName);
|
Symbol *sym = sym_FindScopedValidSymbol(symName);
|
||||||
if (!sym) {
|
if (!sym) {
|
||||||
if (sym_IsPurgedScoped(symName)) {
|
if (sym_IsPurgedScoped(symName)) {
|
||||||
fatal("Undefined symbol \"%s\"; it was purged", symName.c_str());
|
fatal("Undefined symbol `%s`; it was purged", symName.c_str());
|
||||||
} else {
|
} else {
|
||||||
fatal("Undefined symbol \"%s\"", symName.c_str());
|
fatal("Undefined symbol `%s`", symName.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Section const *section = sym->getSection();
|
Section const *section = sym->getSection();
|
||||||
if (!section) {
|
if (!section) {
|
||||||
fatal("\"%s\" does not belong to any section", sym->name.c_str());
|
fatal("`%s` does not belong to any section", sym->name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
return section->name;
|
return section->name;
|
||||||
|
|||||||
@@ -84,14 +84,14 @@ void charmap_New(std::string const &name, std::string const *baseName) {
|
|||||||
|
|
||||||
if (baseName != nullptr) {
|
if (baseName != nullptr) {
|
||||||
if (auto search = charmapMap.find(*baseName); search == charmapMap.end()) {
|
if (auto search = charmapMap.find(*baseName); search == charmapMap.end()) {
|
||||||
error("Base charmap '%s' doesn't exist", baseName->c_str());
|
error("Undefined base charmap `%s`", baseName->c_str());
|
||||||
} else {
|
} else {
|
||||||
baseIdx = search->second;
|
baseIdx = search->second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (charmapMap.find(name) != charmapMap.end()) {
|
if (charmapMap.find(name) != charmapMap.end()) {
|
||||||
error("Charmap '%s' already exists", name.c_str());
|
error("Charmap `%s` is already defined", name.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ void charmap_New(std::string const &name, std::string const *baseName) {
|
|||||||
|
|
||||||
void charmap_Set(std::string const &name) {
|
void charmap_Set(std::string const &name) {
|
||||||
if (auto search = charmapMap.find(name); search == charmapMap.end()) {
|
if (auto search = charmapMap.find(name); search == charmapMap.end()) {
|
||||||
error("Charmap '%s' doesn't exist", name.c_str());
|
error("Undefined charmap `%s`", name.c_str());
|
||||||
} else {
|
} else {
|
||||||
currentCharmap = &charmapList[search->second];
|
currentCharmap = &charmapList[search->second];
|
||||||
}
|
}
|
||||||
@@ -289,7 +289,7 @@ size_t charmap_ConvertNext(std::string_view &input, std::vector<int32_t> *output
|
|||||||
} else if (charmap.name != DEFAULT_CHARMAP_NAME) {
|
} else if (charmap.name != DEFAULT_CHARMAP_NAME) {
|
||||||
warning(
|
warning(
|
||||||
WARNING_UNMAPPED_CHAR_2,
|
WARNING_UNMAPPED_CHAR_2,
|
||||||
"Unmapped character %s not in " DEFAULT_CHARMAP_NAME " charmap",
|
"Unmapped character %s not in `" DEFAULT_CHARMAP_NAME "` charmap",
|
||||||
printChar(firstChar)
|
printChar(firstChar)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -227,8 +227,9 @@ bool yywrap() {
|
|||||||
|
|
||||||
if (ifDepth != 0) {
|
if (ifDepth != 0) {
|
||||||
fatal(
|
fatal(
|
||||||
"Ended block with %" PRIu32 " unterminated IF construct%s",
|
"Ended block with %" PRIu32 " unterminated conditional%s (`IF`/`ELIF`/`ELSE` block%s)",
|
||||||
ifDepth,
|
ifDepth,
|
||||||
|
ifDepth == 1 ? "" : "s",
|
||||||
ifDepth == 1 ? "" : "s"
|
ifDepth == 1 ? "" : "s"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -255,7 +256,7 @@ bool yywrap() {
|
|||||||
|
|
||||||
// This error message will refer to the current iteration
|
// This error message will refer to the current iteration
|
||||||
if (sym->type != SYM_VAR) {
|
if (sym->type != SYM_VAR) {
|
||||||
fatal("Failed to update FOR symbol value");
|
fatal("Failed to update `FOR` symbol value");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Advance to the next iteration
|
// Advance to the next iteration
|
||||||
@@ -370,14 +371,14 @@ static Context &newReptContext(int32_t reptLineNo, ContentSpan const &span, uint
|
|||||||
|
|
||||||
bool fstk_FileError(std::string const &path, char const *functionName) {
|
bool fstk_FileError(std::string const &path, char const *functionName) {
|
||||||
if (options.missingIncludeState == INC_ERROR) {
|
if (options.missingIncludeState == INC_ERROR) {
|
||||||
error("Error opening %s file '%s': %s", functionName, path.c_str(), strerror(errno));
|
error("Error opening `%s` file \"%s\": %s", functionName, path.c_str(), strerror(errno));
|
||||||
} else {
|
} else {
|
||||||
failedOnMissingInclude = true;
|
failedOnMissingInclude = true;
|
||||||
// LCOV_EXCL_START
|
// LCOV_EXCL_START
|
||||||
if (options.missingIncludeState == GEN_EXIT) {
|
if (options.missingIncludeState == GEN_EXIT) {
|
||||||
verbosePrint(
|
verbosePrint(
|
||||||
VERB_NOTICE,
|
VERB_NOTICE,
|
||||||
"Aborting (-MG) on %s file '%s' (%s)\n",
|
"Aborting (-MG) on `%s` file \"%s\": %s\n",
|
||||||
functionName,
|
functionName,
|
||||||
path.c_str(),
|
path.c_str(),
|
||||||
strerror(errno)
|
strerror(errno)
|
||||||
@@ -407,14 +408,14 @@ void fstk_RunMacro(std::string const ¯oName, std::shared_ptr<MacroArgs> macr
|
|||||||
|
|
||||||
if (!macro) {
|
if (!macro) {
|
||||||
if (sym_IsPurgedExact(macroName)) {
|
if (sym_IsPurgedExact(macroName)) {
|
||||||
error("Undefined macro \"%s\"; it was purged", macroName.c_str());
|
error("Undefined macro `%s`; it was purged", macroName.c_str());
|
||||||
} else {
|
} else {
|
||||||
error("Undefined macro \"%s\"", macroName.c_str());
|
error("Undefined macro `%s`", macroName.c_str());
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (macro->type != SYM_MACRO) {
|
if (macro->type != SYM_MACRO) {
|
||||||
error("\"%s\" is not a macro", macroName.c_str());
|
error("`%s` is not a macro", macroName.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,11 +448,13 @@ void fstk_RunFor(
|
|||||||
} else if (step < 0 && stop < start) {
|
} else if (step < 0 && stop < start) {
|
||||||
count = (static_cast<int64_t>(start) - stop - 1) / -static_cast<int64_t>(step) + 1;
|
count = (static_cast<int64_t>(start) - stop - 1) / -static_cast<int64_t>(step) + 1;
|
||||||
} else if (step == 0) {
|
} else if (step == 0) {
|
||||||
error("FOR cannot have a step value of 0");
|
error("`FOR` cannot have a step value of 0");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((step > 0 && start > stop) || (step < 0 && start < stop)) {
|
if ((step > 0 && start > stop) || (step < 0 && start < stop)) {
|
||||||
warning(WARNING_BACKWARDS_FOR, "FOR goes backwards from %d to %d by %d", start, stop, step);
|
warning(
|
||||||
|
WARNING_BACKWARDS_FOR, "`FOR` goes backwards from %d to %d by %d", start, stop, step
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
@@ -467,7 +470,7 @@ void fstk_RunFor(
|
|||||||
|
|
||||||
bool fstk_Break() {
|
bool fstk_Break() {
|
||||||
if (contextStack.top().fileInfo->type != NODE_REPT) {
|
if (contextStack.top().fileInfo->type != NODE_REPT) {
|
||||||
error("BREAK can only be used inside a REPT/FOR block");
|
error("`BREAK` can only be used inside a loop (`REPT`/`FOR` block)");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -489,7 +492,7 @@ void fstk_Init(std::string const &mainPath) {
|
|||||||
if (std::optional<std::string> fullPath = fstk_FindFile(name); fullPath) {
|
if (std::optional<std::string> fullPath = fstk_FindFile(name); fullPath) {
|
||||||
newFileContext(*fullPath, false);
|
newFileContext(*fullPath, false);
|
||||||
} else {
|
} else {
|
||||||
error("Error reading pre-included file '%s': %s", name.c_str(), strerror(errno));
|
error("Error reading pre-included file \"%s\": %s", name.c_str(), strerror(errno));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ void lexer_IncIFDepth() {
|
|||||||
|
|
||||||
void lexer_DecIFDepth() {
|
void lexer_DecIFDepth() {
|
||||||
if (lexerState->ifStack.empty()) {
|
if (lexerState->ifStack.empty()) {
|
||||||
fatal("Found ENDC outside of an IF construct");
|
fatal("Found `ENDC` outside of a conditional (not after an `IF`/`ELIF`/`ELSE` block)");
|
||||||
}
|
}
|
||||||
|
|
||||||
lexerState->ifStack.pop_front();
|
lexerState->ifStack.pop_front();
|
||||||
@@ -472,7 +472,7 @@ size_t BufferedContent::readMore(size_t startIndex, size_t nbChars) {
|
|||||||
|
|
||||||
if (nbReadChars == -1) {
|
if (nbReadChars == -1) {
|
||||||
// LCOV_EXCL_START
|
// LCOV_EXCL_START
|
||||||
fatal("Error while reading \"%s\": %s", lexerState->path.c_str(), strerror(errno));
|
fatal("Error reading file \"%s\": %s", lexerState->path.c_str(), strerror(errno));
|
||||||
// LCOV_EXCL_STOP
|
// LCOV_EXCL_STOP
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,14 +560,14 @@ static uint32_t readBracketedMacroArgNum() {
|
|||||||
|
|
||||||
if (Symbol const *sym = sym_FindScopedValidSymbol(symName); !sym) {
|
if (Symbol const *sym = sym_FindScopedValidSymbol(symName); !sym) {
|
||||||
if (sym_IsPurgedScoped(symName)) {
|
if (sym_IsPurgedScoped(symName)) {
|
||||||
error("Bracketed symbol \"%s\" does not exist; it was purged", symName.c_str());
|
error("Bracketed symbol `%s` does not exist; it was purged", symName.c_str());
|
||||||
} else {
|
} else {
|
||||||
error("Bracketed symbol \"%s\" does not exist", symName.c_str());
|
error("Bracketed symbol `%s` does not exist", symName.c_str());
|
||||||
}
|
}
|
||||||
num = 0;
|
num = 0;
|
||||||
symbolError = true;
|
symbolError = true;
|
||||||
} else if (!sym->isNumeric()) {
|
} else if (!sym->isNumeric()) {
|
||||||
error("Bracketed symbol \"%s\" is not numeric", symName.c_str());
|
error("Bracketed symbol `%s` is not numeric", symName.c_str());
|
||||||
num = 0;
|
num = 0;
|
||||||
symbolError = true;
|
symbolError = true;
|
||||||
} else {
|
} else {
|
||||||
@@ -585,7 +585,7 @@ static uint32_t readBracketedMacroArgNum() {
|
|||||||
error("Empty bracketed macro argument");
|
error("Empty bracketed macro argument");
|
||||||
return 0;
|
return 0;
|
||||||
} else if (num == 0 && !symbolError) {
|
} else if (num == 0 && !symbolError) {
|
||||||
error("Invalid bracketed macro argument '\\<0>'");
|
error("Invalid bracketed macro argument \"\\<0>\"");
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return num;
|
return num;
|
||||||
@@ -596,13 +596,13 @@ static std::shared_ptr<std::string> readMacroArg() {
|
|||||||
if (int c = bumpChar(); c == '@') {
|
if (int c = bumpChar(); c == '@') {
|
||||||
std::shared_ptr<std::string> str = fstk_GetUniqueIDStr();
|
std::shared_ptr<std::string> str = fstk_GetUniqueIDStr();
|
||||||
if (!str) {
|
if (!str) {
|
||||||
error("'\\@' cannot be used outside of a macro or REPT/FOR block");
|
error("`\\@` cannot be used outside of a macro or loop (`REPT`/`FOR` block)");
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
} else if (c == '#') {
|
} else if (c == '#') {
|
||||||
MacroArgs *macroArgs = fstk_GetCurrentMacroArgs();
|
MacroArgs *macroArgs = fstk_GetCurrentMacroArgs();
|
||||||
if (!macroArgs) {
|
if (!macroArgs) {
|
||||||
error("'\\#' cannot be used outside of a macro");
|
error("`\\#` cannot be used outside of a macro");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -618,13 +618,13 @@ static std::shared_ptr<std::string> readMacroArg() {
|
|||||||
|
|
||||||
MacroArgs *macroArgs = fstk_GetCurrentMacroArgs();
|
MacroArgs *macroArgs = fstk_GetCurrentMacroArgs();
|
||||||
if (!macroArgs) {
|
if (!macroArgs) {
|
||||||
error("'\\<%" PRIu32 ">' cannot be used outside of a macro", num);
|
error("`\\<%" PRIu32 ">` cannot be used outside of a macro", num);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<std::string> str = macroArgs->getArg(num);
|
std::shared_ptr<std::string> str = macroArgs->getArg(num);
|
||||||
if (!str) {
|
if (!str) {
|
||||||
error("Macro argument '\\<%" PRId32 ">' not defined", num);
|
error("Macro argument `\\<%" PRId32 ">` not defined", num);
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
} else {
|
} else {
|
||||||
@@ -632,13 +632,13 @@ static std::shared_ptr<std::string> readMacroArg() {
|
|||||||
|
|
||||||
MacroArgs *macroArgs = fstk_GetCurrentMacroArgs();
|
MacroArgs *macroArgs = fstk_GetCurrentMacroArgs();
|
||||||
if (!macroArgs) {
|
if (!macroArgs) {
|
||||||
error("'\\%c' cannot be used outside of a macro", c);
|
error("`\\%c` cannot be used outside of a macro", c);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<std::string> str = macroArgs->getArg(c - '0');
|
std::shared_ptr<std::string> str = macroArgs->getArg(c - '0');
|
||||||
if (!str) {
|
if (!str) {
|
||||||
error("Macro argument '\\%c' not defined", c);
|
error("Macro argument `\\%c` not defined", c);
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
@@ -847,11 +847,11 @@ void lexer_TraceStringExpansions() {
|
|||||||
// Only print EQUS expansions, not string args
|
// Only print EQUS expansions, not string args
|
||||||
if (exp.name) {
|
if (exp.name) {
|
||||||
style_Set(stderr, STYLE_CYAN, false);
|
style_Set(stderr, STYLE_CYAN, false);
|
||||||
fputs(" while expanding symbol \"", stderr);
|
fputs(" while expanding symbol `", stderr);
|
||||||
style_Set(stderr, STYLE_CYAN, true);
|
style_Set(stderr, STYLE_CYAN, true);
|
||||||
fputs(exp.name->c_str(), stderr);
|
fputs(exp.name->c_str(), stderr);
|
||||||
style_Set(stderr, STYLE_CYAN, false);
|
style_Set(stderr, STYLE_CYAN, false);
|
||||||
fputs("\"\n", stderr);
|
fputs("`\n", stderr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
style_Reset(stderr);
|
style_Reset(stderr);
|
||||||
@@ -876,7 +876,7 @@ static void discardBlockComment() {
|
|||||||
continue;
|
continue;
|
||||||
case '/':
|
case '/':
|
||||||
if (peek() == '*') {
|
if (peek() == '*') {
|
||||||
warning(WARNING_NESTED_COMMENT, "/* in block comment");
|
warning(WARNING_NESTED_COMMENT, "\"/*\" in block comment");
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
case '*':
|
case '*':
|
||||||
@@ -1252,7 +1252,7 @@ static std::pair<Symbol const *, std::shared_ptr<std::string>> readInterpolation
|
|||||||
}
|
}
|
||||||
continue; // Restart, reading from the new buffer
|
continue; // Restart, reading from the new buffer
|
||||||
} else if (int c = peek(); c == EOF || isNewline(c) || c == '"') {
|
} else if (int c = peek(); c == EOF || isNewline(c) || c == '"') {
|
||||||
error("Missing }");
|
error("Missing '}'");
|
||||||
break;
|
break;
|
||||||
} else if (c == '}') {
|
} else if (c == '}') {
|
||||||
shiftChar();
|
shiftChar();
|
||||||
@@ -1264,7 +1264,7 @@ static std::pair<Symbol const *, std::shared_ptr<std::string>> readInterpolation
|
|||||||
}
|
}
|
||||||
fmt.finishCharacters();
|
fmt.finishCharacters();
|
||||||
if (!fmt.isValid()) {
|
if (!fmt.isValid()) {
|
||||||
error("Invalid format spec '%s'", fmtBuf.c_str());
|
error("Invalid format spec \"%s\"", fmtBuf.c_str());
|
||||||
}
|
}
|
||||||
fmtBuf.clear(); // Now that format has been set, restart at beginning of string
|
fmtBuf.clear(); // Now that format has been set, restart at beginning of string
|
||||||
} else {
|
} else {
|
||||||
@@ -1279,7 +1279,7 @@ static std::pair<Symbol const *, std::shared_ptr<std::string>> readInterpolation
|
|||||||
} else if (keywordDict.find(fmtBuf) != keywordDict.end()) {
|
} else if (keywordDict.find(fmtBuf) != keywordDict.end()) {
|
||||||
// Don't allow symbols that alias keywords without a '#' prefix.
|
// Don't allow symbols that alias keywords without a '#' prefix.
|
||||||
error(
|
error(
|
||||||
"Interpolated symbol \"%s\" is a reserved keyword; add a '#' prefix to use it as a raw "
|
"Interpolated symbol `%s` is a reserved keyword; add a '#' prefix to use it as a raw "
|
||||||
"symbol",
|
"symbol",
|
||||||
fmtBuf.c_str()
|
fmtBuf.c_str()
|
||||||
);
|
);
|
||||||
@@ -1288,9 +1288,9 @@ static std::pair<Symbol const *, std::shared_ptr<std::string>> readInterpolation
|
|||||||
|
|
||||||
if (Symbol const *sym = sym_FindScopedValidSymbol(fmtBuf); !sym || !sym->isDefined()) {
|
if (Symbol const *sym = sym_FindScopedValidSymbol(fmtBuf); !sym || !sym->isDefined()) {
|
||||||
if (sym_IsPurgedScoped(fmtBuf)) {
|
if (sym_IsPurgedScoped(fmtBuf)) {
|
||||||
error("Interpolated symbol \"%s\" does not exist; it was purged", fmtBuf.c_str());
|
error("Interpolated symbol `%s` does not exist; it was purged", fmtBuf.c_str());
|
||||||
} else {
|
} else {
|
||||||
error("Interpolated symbol \"%s\" does not exist", fmtBuf.c_str());
|
error("Interpolated symbol `%s` does not exist", fmtBuf.c_str());
|
||||||
}
|
}
|
||||||
return {sym, nullptr};
|
return {sym, nullptr};
|
||||||
} else if (sym->type == SYM_EQUS) {
|
} else if (sym->type == SYM_EQUS) {
|
||||||
@@ -1302,7 +1302,7 @@ static std::pair<Symbol const *, std::shared_ptr<std::string>> readInterpolation
|
|||||||
fmt.appendNumber(*buf, sym->getConstantValue());
|
fmt.appendNumber(*buf, sym->getConstantValue());
|
||||||
return {sym, buf};
|
return {sym, buf};
|
||||||
} else {
|
} else {
|
||||||
error("Interpolated symbol \"%s\" is not a numeric or string symbol", fmtBuf.c_str());
|
error("Interpolated symbol `%s` is not a numeric or string symbol", fmtBuf.c_str());
|
||||||
return {sym, nullptr};
|
return {sym, nullptr};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1426,7 +1426,7 @@ static void appendCharInLiteral(std::string &str, int c) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case EOF: // Can't really print that one
|
case EOF: // Can't really print that one
|
||||||
error("Illegal character escape at end of input");
|
error("Illegal character escape '\\' at end of input");
|
||||||
str += '\\';
|
str += '\\';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2061,7 +2061,7 @@ backslash:
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
case EOF: // Can't really print that one
|
case EOF: // Can't really print that one
|
||||||
error("Illegal character escape at end of input");
|
error("Illegal character escape '\\' at end of input");
|
||||||
c = '\\';
|
c = '\\';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2173,7 +2173,7 @@ static Token skipIfBlock(bool toEndc) {
|
|||||||
case T_(POP_ELIF):
|
case T_(POP_ELIF):
|
||||||
if (lexer_ReachedELSEBlock()) {
|
if (lexer_ReachedELSEBlock()) {
|
||||||
// This should be redundant, as the parser handles this error first.
|
// This should be redundant, as the parser handles this error first.
|
||||||
fatal("Found ELIF after an ELSE block"); // LCOV_EXCL_LINE
|
fatal("Found `ELIF` after an `ELSE` block"); // LCOV_EXCL_LINE
|
||||||
}
|
}
|
||||||
if (!toEndc && lexer_GetIFDepth() == startingDepth) {
|
if (!toEndc && lexer_GetIFDepth() == startingDepth) {
|
||||||
return token;
|
return token;
|
||||||
@@ -2182,7 +2182,7 @@ static Token skipIfBlock(bool toEndc) {
|
|||||||
|
|
||||||
case T_(POP_ELSE):
|
case T_(POP_ELSE):
|
||||||
if (lexer_ReachedELSEBlock()) {
|
if (lexer_ReachedELSEBlock()) {
|
||||||
fatal("Found ELSE after an ELSE block");
|
fatal("Found `ELSE` after an `ELSE` block");
|
||||||
}
|
}
|
||||||
lexer_ReachELSEBlock();
|
lexer_ReachELSEBlock();
|
||||||
if (!toEndc && lexer_GetIFDepth() == startingDepth) {
|
if (!toEndc && lexer_GetIFDepth() == startingDepth) {
|
||||||
@@ -2260,7 +2260,7 @@ yy::parser::symbol_type yylex() {
|
|||||||
lexerState->atLineStart = token.type == T_(NEWLINE) || token.type == T_(EOB);
|
lexerState->atLineStart = token.type == T_(NEWLINE) || token.type == T_(EOB);
|
||||||
|
|
||||||
// LCOV_EXCL_START
|
// LCOV_EXCL_START
|
||||||
verbosePrint(VERB_TRACE, "Lexed '%s' token\n", yy::parser::symbol_type(token.type).name());
|
verbosePrint(VERB_TRACE, "Lexed `%s` token\n", yy::parser::symbol_type(token.type).name());
|
||||||
// LCOV_EXCL_STOP
|
// LCOV_EXCL_STOP
|
||||||
|
|
||||||
if (std::holds_alternative<uint32_t>(token.value)) {
|
if (std::holds_alternative<uint32_t>(token.value)) {
|
||||||
@@ -2345,7 +2345,7 @@ Capture lexer_CaptureRept() {
|
|||||||
|
|
||||||
// Just consume characters until EOL or EOF
|
// Just consume characters until EOL or EOF
|
||||||
if (int c = skipChars([](int d) { return d != EOF && !isNewline(d); }); c == EOF) {
|
if (int c = skipChars([](int d) { return d != EOF && !isNewline(d); }); c == EOF) {
|
||||||
error("Unterminated REPT/FOR block");
|
error("Unterminated loop (`REPT`/`FOR` block)");
|
||||||
endCapture(capture);
|
endCapture(capture);
|
||||||
capture.span.ptr = nullptr; // Indicates that it reached EOF before an ENDR
|
capture.span.ptr = nullptr; // Indicates that it reached EOF before an ENDR
|
||||||
return capture;
|
return capture;
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ static Usage usage = {
|
|||||||
{{"-E", "--export-all"}, {"export all labels"}},
|
{{"-E", "--export-all"}, {"export all labels"}},
|
||||||
{{"-M", "--dependfile <path>"}, {"set the output dependency file"}},
|
{{"-M", "--dependfile <path>"}, {"set the output dependency file"}},
|
||||||
{{"-o", "--output <path>"}, {"set the output object file"}},
|
{{"-o", "--output <path>"}, {"set the output object file"}},
|
||||||
{{"-p", "--pad-value <value>"}, {"set the value to use for `ds'"}},
|
{{"-p", "--pad-value <value>"}, {"set the value to use for `DS`"}},
|
||||||
{{"-s", "--state <features>:<path>"}, {"set an output state file"}},
|
{{"-s", "--state <features>:<path>"}, {"set an output state file"}},
|
||||||
{{"-V", "--version"}, {"print RGBASM version and exit"}},
|
{{"-V", "--version"}, {"print RGBASM version and exit"}},
|
||||||
{{"-W", "--warning <warning>"}, {"enable or disable warnings"}},
|
{{"-W", "--warning <warning>"}, {"enable or disable warnings"}},
|
||||||
@@ -257,7 +257,7 @@ static std::vector<StateFeature> parseStateFeatures(char *str) {
|
|||||||
}
|
}
|
||||||
// A feature must be specified
|
// A feature must be specified
|
||||||
if (*feature == '\0') {
|
if (*feature == '\0') {
|
||||||
fatal("Empty feature for option 's'");
|
fatal("Empty feature for option '-s'");
|
||||||
}
|
}
|
||||||
// Parse the `feature` and update the `features` list
|
// Parse the `feature` and update the `features` list
|
||||||
static UpperMap<StateFeature> const featureNames{
|
static UpperMap<StateFeature> const featureNames{
|
||||||
@@ -269,14 +269,14 @@ static std::vector<StateFeature> parseStateFeatures(char *str) {
|
|||||||
};
|
};
|
||||||
if (!strcasecmp(feature, "all")) {
|
if (!strcasecmp(feature, "all")) {
|
||||||
if (!features.empty()) {
|
if (!features.empty()) {
|
||||||
warnx("Redundant feature before \"%s\" for option 's'", feature);
|
warnx("Redundant feature before \"%s\" for option '-s'", feature);
|
||||||
}
|
}
|
||||||
features.assign({STATE_EQU, STATE_VAR, STATE_EQUS, STATE_CHAR, STATE_MACRO});
|
features.assign({STATE_EQU, STATE_VAR, STATE_EQUS, STATE_CHAR, STATE_MACRO});
|
||||||
} else if (auto search = featureNames.find(feature); search == featureNames.end()) {
|
} else if (auto search = featureNames.find(feature); search == featureNames.end()) {
|
||||||
fatal("Invalid feature for option 's': \"%s\"", feature);
|
fatal("Invalid feature for option '-s': \"%s\"", feature);
|
||||||
} else if (StateFeature value = search->second;
|
} else if (StateFeature value = search->second;
|
||||||
std::find(RANGE(features), value) != features.end()) {
|
std::find(RANGE(features), value) != features.end()) {
|
||||||
warnx("Ignoring duplicate feature for option 's': \"%s\"", feature);
|
warnx("Ignoring duplicate feature for option '-s': \"%s\"", feature);
|
||||||
} else {
|
} else {
|
||||||
features.push_back(value);
|
features.push_back(value);
|
||||||
}
|
}
|
||||||
@@ -312,11 +312,11 @@ int main(int argc, char *argv[]) {
|
|||||||
warnings.traceDepth = strtoul(musl_optarg, &endptr, 0);
|
warnings.traceDepth = strtoul(musl_optarg, &endptr, 0);
|
||||||
|
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'B'");
|
fatal("Invalid argument for option '-B'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (warnings.traceDepth >= UINT64_MAX) {
|
if (warnings.traceDepth >= UINT64_MAX) {
|
||||||
fatal("Argument for option 'B' is too large");
|
fatal("Argument for option '-B' is too large");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -325,7 +325,7 @@ int main(int argc, char *argv[]) {
|
|||||||
if (strlen(musl_optarg) == 2) {
|
if (strlen(musl_optarg) == 2) {
|
||||||
opt_B(musl_optarg);
|
opt_B(musl_optarg);
|
||||||
} else {
|
} else {
|
||||||
fatal("Must specify exactly 2 characters for option 'b'");
|
fatal("Must specify exactly 2 characters for option '-b'");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -348,7 +348,7 @@ int main(int argc, char *argv[]) {
|
|||||||
if (strlen(musl_optarg) == 4) {
|
if (strlen(musl_optarg) == 4) {
|
||||||
opt_G(musl_optarg);
|
opt_G(musl_optarg);
|
||||||
} else {
|
} else {
|
||||||
fatal("Must specify exactly 4 characters for option 'g'");
|
fatal("Must specify exactly 4 characters for option '-g'");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -362,7 +362,7 @@ int main(int argc, char *argv[]) {
|
|||||||
case 'M':
|
case 'M':
|
||||||
if (dependFileName) {
|
if (dependFileName) {
|
||||||
warnx(
|
warnx(
|
||||||
"Overriding dependency file %s",
|
"Overriding dependency file \"%s\"",
|
||||||
strcmp(dependFileName, "-") ? dependFileName : "<stdout>"
|
strcmp(dependFileName, "-") ? dependFileName : "<stdout>"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -371,7 +371,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
case 'o':
|
case 'o':
|
||||||
if (!options.objectFileName.empty()) {
|
if (!options.objectFileName.empty()) {
|
||||||
warnx("Overriding output filename %s", options.objectFileName.c_str());
|
warnx("Overriding output file \"%s\"", options.objectFileName.c_str());
|
||||||
}
|
}
|
||||||
options.objectFileName = musl_optarg;
|
options.objectFileName = musl_optarg;
|
||||||
break;
|
break;
|
||||||
@@ -385,11 +385,11 @@ int main(int argc, char *argv[]) {
|
|||||||
padByte = strtoul(musl_optarg, &endptr, 0);
|
padByte = strtoul(musl_optarg, &endptr, 0);
|
||||||
|
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'p'");
|
fatal("Invalid argument for option '-p'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (padByte > 0xFF) {
|
if (padByte > 0xFF) {
|
||||||
fatal("Argument for option 'p' must be between 0 and 0xFF");
|
fatal("Argument for option '-p' must be between 0 and 0xFF");
|
||||||
}
|
}
|
||||||
|
|
||||||
opt_P(padByte);
|
opt_P(padByte);
|
||||||
@@ -403,11 +403,11 @@ int main(int argc, char *argv[]) {
|
|||||||
unsigned long precision = strtoul(precisionArg, &endptr, 0);
|
unsigned long precision = strtoul(precisionArg, &endptr, 0);
|
||||||
|
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'Q'");
|
fatal("Invalid argument for option '-Q'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (precision < 1 || precision > 31) {
|
if (precision < 1 || precision > 31) {
|
||||||
fatal("Argument for option 'Q' must be between 1 and 31");
|
fatal("Argument for option '-Q' must be between 1 and 31");
|
||||||
}
|
}
|
||||||
|
|
||||||
opt_Q(precision);
|
opt_Q(precision);
|
||||||
@@ -418,7 +418,7 @@ int main(int argc, char *argv[]) {
|
|||||||
options.maxRecursionDepth = strtoul(musl_optarg, &endptr, 0);
|
options.maxRecursionDepth = strtoul(musl_optarg, &endptr, 0);
|
||||||
|
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'r'");
|
fatal("Invalid argument for option '-r'");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -426,14 +426,14 @@ int main(int argc, char *argv[]) {
|
|||||||
// Split "<features>:<name>" so `musl_optarg` is "<features>" and `name` is "<name>"
|
// Split "<features>:<name>" so `musl_optarg` is "<features>" and `name` is "<name>"
|
||||||
char *name = strchr(musl_optarg, ':');
|
char *name = strchr(musl_optarg, ':');
|
||||||
if (!name) {
|
if (!name) {
|
||||||
fatal("Invalid argument for option 's'");
|
fatal("Invalid argument for option '-s'");
|
||||||
}
|
}
|
||||||
*name++ = '\0';
|
*name++ = '\0';
|
||||||
|
|
||||||
std::vector<StateFeature> features = parseStateFeatures(musl_optarg);
|
std::vector<StateFeature> features = parseStateFeatures(musl_optarg);
|
||||||
|
|
||||||
if (stateFileSpecs.find(name) != stateFileSpecs.end()) {
|
if (stateFileSpecs.find(name) != stateFileSpecs.end()) {
|
||||||
warnx("Overriding state filename %s", name);
|
warnx("Overriding state file \"%s\"", name);
|
||||||
}
|
}
|
||||||
stateFileSpecs.emplace(name, std::move(features));
|
stateFileSpecs.emplace(name, std::move(features));
|
||||||
break;
|
break;
|
||||||
@@ -461,11 +461,11 @@ int main(int argc, char *argv[]) {
|
|||||||
uint64_t maxErrors = strtoul(musl_optarg, &endptr, 0);
|
uint64_t maxErrors = strtoul(musl_optarg, &endptr, 0);
|
||||||
|
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'X'");
|
fatal("Invalid argument for option '-X'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxErrors > UINT64_MAX) {
|
if (maxErrors > UINT64_MAX) {
|
||||||
fatal("Argument for option 'X' must be between 0 and %" PRIu64, UINT64_MAX);
|
fatal("Argument for option '-X' must be between 0 and %" PRIu64, UINT64_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
options.maxErrors = maxErrors;
|
options.maxErrors = maxErrors;
|
||||||
@@ -525,14 +525,14 @@ int main(int argc, char *argv[]) {
|
|||||||
verboseOutputConfig(argc, argv);
|
verboseOutputConfig(argc, argv);
|
||||||
|
|
||||||
if (argc == musl_optind) {
|
if (argc == musl_optind) {
|
||||||
usage.printAndExit("No input file specified (pass `-` to read from standard input)");
|
usage.printAndExit("No input file specified (pass \"-\" to read from standard input)");
|
||||||
} else if (argc != musl_optind + 1) {
|
} else if (argc != musl_optind + 1) {
|
||||||
usage.printAndExit("More than one input file specified");
|
usage.printAndExit("More than one input file specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string mainFileName = argv[musl_optind];
|
std::string mainFileName = argv[musl_optind];
|
||||||
|
|
||||||
verbosePrint(VERB_NOTICE, "Assembling %s\n", mainFileName.c_str()); // LCOV_EXCL_LINE
|
verbosePrint(VERB_NOTICE, "Assembling \"%s\"\n", mainFileName.c_str()); // LCOV_EXCL_LINE
|
||||||
|
|
||||||
if (dependFileName) {
|
if (dependFileName) {
|
||||||
if (strcmp("-", dependFileName)) {
|
if (strcmp("-", dependFileName)) {
|
||||||
@@ -549,7 +549,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
if (options.dependFile && options.targetFileName.empty()) {
|
if (options.dependFile && options.targetFileName.empty()) {
|
||||||
fatal("Dependency files can only be created if a target file is specified with either "
|
fatal("Dependency files can only be created if a target file is specified with either "
|
||||||
"-o, -MQ or -MT");
|
"'-o', '-MQ' or '-MT'");
|
||||||
}
|
}
|
||||||
options.printDep(mainFileName);
|
options.printDep(mainFileName);
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ void opt_Parse(char const *s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s[0] == '\0') {
|
if (s[0] == '\0') {
|
||||||
error("Missing argument to option 'r'");
|
error("Missing argument for option 'r'");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,9 +129,9 @@ void opt_Parse(char const *s) {
|
|||||||
unsigned long maxRecursionDepth = strtoul(s, &endptr, 10);
|
unsigned long maxRecursionDepth = strtoul(s, &endptr, 10);
|
||||||
|
|
||||||
if (*endptr != '\0') {
|
if (*endptr != '\0') {
|
||||||
error("Invalid argument to option 'r' (\"%s\")", s);
|
error("Invalid argument for option 'r' (\"%s\")", s);
|
||||||
} else if (errno == ERANGE) {
|
} else if (errno == ERANGE) {
|
||||||
error("Argument to 'r' is out of range (\"%s\")", s);
|
error("Argument for option 'r' is out of range (\"%s\")", s);
|
||||||
} else {
|
} else {
|
||||||
opt_R(maxRecursionDepth);
|
opt_R(maxRecursionDepth);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ void out_WriteObject() {
|
|||||||
if (!file) {
|
if (!file) {
|
||||||
// LCOV_EXCL_START
|
// LCOV_EXCL_START
|
||||||
fatal(
|
fatal(
|
||||||
"Failed to open object file '%s': %s", options.objectFileName.c_str(), strerror(errno)
|
"Failed to open object file \"%s\": %s", options.objectFileName.c_str(), strerror(errno)
|
||||||
);
|
);
|
||||||
// LCOV_EXCL_STOP
|
// LCOV_EXCL_STOP
|
||||||
}
|
}
|
||||||
@@ -485,7 +485,7 @@ void out_WriteState(std::string name, std::vector<StateFeature> const &features)
|
|||||||
}
|
}
|
||||||
if (!file) {
|
if (!file) {
|
||||||
// LCOV_EXCL_START
|
// LCOV_EXCL_START
|
||||||
fatal("Failed to open state file '%s': %s", name.c_str(), strerror(errno));
|
fatal("Failed to open state file \"%s\": %s", name.c_str(), strerror(errno));
|
||||||
// LCOV_EXCL_STOP
|
// LCOV_EXCL_STOP
|
||||||
}
|
}
|
||||||
Defer closeFile{[&] { fclose(file); }};
|
Defer closeFile{[&] { fclose(file); }};
|
||||||
|
|||||||
@@ -423,12 +423,14 @@ diff_mark:
|
|||||||
%empty // OK
|
%empty // OK
|
||||||
| OP_ADD {
|
| OP_ADD {
|
||||||
::error(
|
::error(
|
||||||
"syntax error, unexpected + at the beginning of the line (is it a leftover diff mark?)"
|
"syntax error, unexpected '+' at the beginning of the line (is it a leftover diff "
|
||||||
|
"mark?)"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
| OP_SUB {
|
| OP_SUB {
|
||||||
::error(
|
::error(
|
||||||
"syntax error, unexpected - at the beginning of the line (is it a leftover diff mark?)"
|
"syntax error, unexpected '-' at the beginning of the line (is it a leftover diff "
|
||||||
|
"mark?)"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@@ -1594,7 +1596,7 @@ string:
|
|||||||
if (Symbol *sym = sym_FindScopedSymbol($1); sym && sym->type == SYM_EQUS) {
|
if (Symbol *sym = sym_FindScopedSymbol($1); sym && sym->type == SYM_EQUS) {
|
||||||
$$ = *sym->getEqus();
|
$$ = *sym->getEqus();
|
||||||
} else {
|
} else {
|
||||||
::error("'%s' is not a string symbol", $1.c_str());
|
::error("`%s` is not a string symbol", $1.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@@ -2041,7 +2043,7 @@ ff00_c_ind:
|
|||||||
LBRACK relocexpr OP_ADD MODE_C RBRACK {
|
LBRACK relocexpr OP_ADD MODE_C RBRACK {
|
||||||
// This has to use `relocexpr`, not `iconst`, to avoid a shift/reduce conflict
|
// This has to use `relocexpr`, not `iconst`, to avoid a shift/reduce conflict
|
||||||
if ($2.getConstVal() != 0xFF00) {
|
if ($2.getConstVal() != 0xFF00) {
|
||||||
::error("Base value must be equal to $FF00 for $FF00+C");
|
::error("Base value must be equal to $FF00 for [$FF00+C]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@@ -2068,7 +2070,7 @@ sm83_ld_hl:
|
|||||||
}
|
}
|
||||||
| SM83_LD MODE_HL COMMA reg_tt_no_af {
|
| SM83_LD MODE_HL COMMA reg_tt_no_af {
|
||||||
::error(
|
::error(
|
||||||
"LD HL, %s is not a valid instruction; use LD H, %s and LD L, %s",
|
"\"LD HL, %s\" is not a valid instruction; use \"LD H, %s\" and \"LD L, %s\"",
|
||||||
reg_tt_names[$4],
|
reg_tt_names[$4],
|
||||||
reg_tt_high_names[$4],
|
reg_tt_high_names[$4],
|
||||||
reg_tt_low_names[$4]
|
reg_tt_low_names[$4]
|
||||||
@@ -2081,7 +2083,7 @@ sm83_ld_sp:
|
|||||||
sect_ConstByte(0xF9);
|
sect_ConstByte(0xF9);
|
||||||
}
|
}
|
||||||
| SM83_LD MODE_SP COMMA reg_bc_or_de {
|
| SM83_LD MODE_SP COMMA reg_bc_or_de {
|
||||||
::error("LD SP, %s is not a valid instruction", reg_tt_names[$4]);
|
::error("\"LD SP, %s\" is not a valid instruction", reg_tt_names[$4]);
|
||||||
}
|
}
|
||||||
| SM83_LD MODE_SP COMMA reloc_16bit {
|
| SM83_LD MODE_SP COMMA reloc_16bit {
|
||||||
sect_ConstByte(0x01 | (REG_SP << 4));
|
sect_ConstByte(0x01 | (REG_SP << 4));
|
||||||
@@ -2119,7 +2121,7 @@ sm83_ld_r_no_a:
|
|||||||
}
|
}
|
||||||
| SM83_LD reg_r_no_a COMMA reg_r {
|
| SM83_LD reg_r_no_a COMMA reg_r {
|
||||||
if ($2 == REG_HL_IND && $4 == REG_HL_IND) {
|
if ($2 == REG_HL_IND && $4 == REG_HL_IND) {
|
||||||
::error("LD [HL], [HL] is not a valid instruction");
|
::error("\"LD [HL], [HL]\" is not a valid instruction");
|
||||||
} else {
|
} else {
|
||||||
sect_ConstByte(0x40 | ($2 << 3) | $4);
|
sect_ConstByte(0x40 | ($2 << 3) | $4);
|
||||||
}
|
}
|
||||||
@@ -2153,7 +2155,7 @@ sm83_ld_ss:
|
|||||||
}
|
}
|
||||||
| SM83_LD reg_bc_or_de COMMA reg_tt_no_af {
|
| SM83_LD reg_bc_or_de COMMA reg_tt_no_af {
|
||||||
::error(
|
::error(
|
||||||
"LD %s, %s is not a valid instruction; use LD %s, %s and LD %s, %s",
|
"\"LD %s, %s\" is not a valid instruction; use \"LD %s, %s\" and \"LD %s, %s\"",
|
||||||
reg_tt_names[$2],
|
reg_tt_names[$2],
|
||||||
reg_tt_names[$4],
|
reg_tt_names[$4],
|
||||||
reg_tt_high_names[$2],
|
reg_tt_high_names[$2],
|
||||||
@@ -2407,7 +2409,7 @@ op_sp_offset:
|
|||||||
$$.checkNBit(8);
|
$$.checkNBit(8);
|
||||||
}
|
}
|
||||||
| %empty {
|
| %empty {
|
||||||
::error("LD HL, SP is not a valid instruction; use LD HL, SP + 0");
|
::error("\"LD HL, SP\" is not a valid instruction; use \"LD HL, SP + 0\"");
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -77,15 +77,15 @@ void Expression::makeSymbol(std::string const &symName) {
|
|||||||
error("PC has no value outside of a section");
|
error("PC has no value outside of a section");
|
||||||
data = 0;
|
data = 0;
|
||||||
} else if (sym && !sym->isNumeric() && !sym->isLabel()) {
|
} else if (sym && !sym->isNumeric() && !sym->isLabel()) {
|
||||||
error("'%s' is not a numeric symbol", symName.c_str());
|
error("`%s` is not a numeric symbol", symName.c_str());
|
||||||
data = 0;
|
data = 0;
|
||||||
} else if (!sym || !sym->isConstant()) {
|
} else if (!sym || !sym->isConstant()) {
|
||||||
isSymbol = true;
|
isSymbol = true;
|
||||||
|
|
||||||
data = sym_IsPC(sym) ? "PC is not constant at assembly time"
|
data = sym_IsPC(sym) ? "PC is not constant at assembly time"
|
||||||
: sym_IsPurgedScoped(symName)
|
: sym_IsPurgedScoped(symName)
|
||||||
? "'"s + symName + "' is not constant at assembly time; it was purged"
|
? "`"s + symName + "` is not constant at assembly time; it was purged"
|
||||||
: "'"s + symName + "' is not constant at assembly time";
|
: "`"s + symName + "` is not constant at assembly time";
|
||||||
sym = sym_Ref(symName);
|
sym = sym_Ref(symName);
|
||||||
|
|
||||||
size_t nameLen = sym->name.length() + 1; // Don't forget NUL!
|
size_t nameLen = sym->name.length() + 1; // Don't forget NUL!
|
||||||
@@ -115,7 +115,7 @@ void Expression::makeBankSymbol(std::string const &symName) {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (sym && !sym->isLabel()) {
|
} else if (sym && !sym->isLabel()) {
|
||||||
error("BANK argument must be a label");
|
error("`BANK` argument must be a label");
|
||||||
data = 1;
|
data = 1;
|
||||||
} else {
|
} else {
|
||||||
sym = sym_Ref(symName);
|
sym = sym_Ref(symName);
|
||||||
@@ -126,8 +126,8 @@ void Expression::makeBankSymbol(std::string const &symName) {
|
|||||||
data = static_cast<int32_t>(sym->getSection()->bank);
|
data = static_cast<int32_t>(sym->getSection()->bank);
|
||||||
} else {
|
} else {
|
||||||
data = sym_IsPurgedScoped(symName)
|
data = sym_IsPurgedScoped(symName)
|
||||||
? "\""s + symName + "\"'s bank is not known; it was purged"
|
? "`"s + symName + "`'s bank is not known; it was purged"
|
||||||
: "\""s + symName + "\"'s bank is not known";
|
: "`"s + symName + "`'s bank is not known";
|
||||||
|
|
||||||
size_t nameLen = sym->name.length() + 1; // Room for NUL!
|
size_t nameLen = sym->name.length() + 1; // Room for NUL!
|
||||||
|
|
||||||
@@ -539,7 +539,7 @@ void Expression::makeCheckRST() {
|
|||||||
*reserveSpace(1) = RPN_RST;
|
*reserveSpace(1) = RPN_RST;
|
||||||
} else if (int32_t val = value(); val & ~0x38) {
|
} else if (int32_t val = value(); val & ~0x38) {
|
||||||
// A valid RST address must be masked with 0x38
|
// A valid RST address must be masked with 0x38
|
||||||
error("Invalid address $%" PRIx32 " for RST", val);
|
error("Invalid address $%" PRIx32 " for `RST`", val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -552,7 +552,7 @@ void Expression::makeCheckBitIndex(uint8_t mask) {
|
|||||||
*ptr = mask;
|
*ptr = mask;
|
||||||
} else if (int32_t val = value(); val & ~0x07) {
|
} else if (int32_t val = value(); val & ~0x07) {
|
||||||
// A valid bit index must be masked with 0x07
|
// A valid bit index must be masked with 0x07
|
||||||
static char const *instructions[4] = {"instruction", "BIT", "RES", "SET"};
|
static char const *instructions[4] = {"instruction", "`BIT`", "`RES`", "`SET`"};
|
||||||
error("Invalid bit index %" PRId32 " for %s", val, instructions[mask >> 6]);
|
error("Invalid bit index %" PRId32 " for %s", val, instructions[mask >> 6]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -574,7 +574,7 @@ bool checkNBit(int32_t v, uint8_t n, char const *name) {
|
|||||||
"%s must be %u-bit%s",
|
"%s must be %u-bit%s",
|
||||||
name ? name : "Expression",
|
name ? name : "Expression",
|
||||||
n,
|
n,
|
||||||
n == 8 && !name ? "; use LOW() to force 8-bit" : ""
|
n == 8 && !name ? "; use `LOW()` to force 8-bit" : ""
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -584,7 +584,7 @@ bool checkNBit(int32_t v, uint8_t n, char const *name) {
|
|||||||
"%s must be %u-bit%s",
|
"%s must be %u-bit%s",
|
||||||
name ? name : "Expression",
|
name ? name : "Expression",
|
||||||
n,
|
n,
|
||||||
n == 8 && !name ? "; use LOW() to force 8-bit" : ""
|
n == 8 && !name ? "; use `LOW()` to force 8-bit" : ""
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ static bool requireSection() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
error("Cannot output data outside of a SECTION");
|
error("Cannot output data outside of a `SECTION`");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +72,8 @@ static bool requireCodeSection() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
error(
|
error(
|
||||||
"Section '%s' cannot contain code or data (not ROM0 or ROMX)", currentSection->name.c_str()
|
"Section \"%s\" cannot contain code or data (not `ROM0` or `ROMX`)",
|
||||||
|
currentSection->name.c_str()
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -91,7 +92,8 @@ void sect_CheckSizes() {
|
|||||||
for (Section const § : sectionList) {
|
for (Section const § : sectionList) {
|
||||||
if (uint32_t maxSize = sectionTypeInfo[sect.type].size; sect.size > maxSize) {
|
if (uint32_t maxSize = sectionTypeInfo[sect.type].size; sect.size > maxSize) {
|
||||||
error(
|
error(
|
||||||
"Section '%s' grew too big (max size = 0x%" PRIX32 " bytes, reached 0x%" PRIX32 ")",
|
"Section \"%s\" grew too big (max size = 0x%" PRIX32 " bytes, reached 0x%" PRIX32
|
||||||
|
")",
|
||||||
sect.name.c_str(),
|
sect.name.c_str(),
|
||||||
maxSize,
|
maxSize,
|
||||||
sect.size
|
sect.size
|
||||||
@@ -127,7 +129,7 @@ static unsigned int mergeSectUnion(
|
|||||||
// Unionized sections only need "compatible" constraints, and they end up with the strictest
|
// Unionized sections only need "compatible" constraints, and they end up with the strictest
|
||||||
// combination of both.
|
// combination of both.
|
||||||
if (sect_HasData(type)) {
|
if (sect_HasData(type)) {
|
||||||
sectError("Cannot declare ROM sections as UNION");
|
sectError("Cannot declare ROM sections as `UNION`");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (org != UINT32_MAX) {
|
if (org != UINT32_MAX) {
|
||||||
@@ -254,12 +256,12 @@ static void mergeSections(
|
|||||||
|
|
||||||
if (type != sect.type) {
|
if (type != sect.type) {
|
||||||
sectError(
|
sectError(
|
||||||
"Section already exists but with type %s", sectionTypeInfo[sect.type].name.c_str()
|
"Section already exists but with type `%s`", sectionTypeInfo[sect.type].name.c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sect.modifier != mod) {
|
if (sect.modifier != mod) {
|
||||||
sectError("Section already declared as SECTION %s", sectionModNames[sect.modifier]);
|
sectError("Section already declared as `SECTION %s`", sectionModNames[sect.modifier]);
|
||||||
} else {
|
} else {
|
||||||
switch (mod) {
|
switch (mod) {
|
||||||
case SECTION_UNION:
|
case SECTION_UNION:
|
||||||
@@ -383,7 +385,7 @@ static Section *getSection(
|
|||||||
if (bank != UINT32_MAX) {
|
if (bank != UINT32_MAX) {
|
||||||
if (type != SECTTYPE_ROMX && type != SECTTYPE_VRAM && type != SECTTYPE_SRAM
|
if (type != SECTTYPE_ROMX && type != SECTTYPE_VRAM && type != SECTTYPE_SRAM
|
||||||
&& type != SECTTYPE_WRAMX) {
|
&& type != SECTTYPE_WRAMX) {
|
||||||
error("BANK only allowed for ROMX, WRAMX, SRAM, or VRAM sections");
|
error("`BANK` only allowed for `ROMX`, `WRAMX`, `SRAM`, or `VRAM` sections");
|
||||||
} else if (bank < sectionTypeInfo[type].firstBank
|
} else if (bank < sectionTypeInfo[type].firstBank
|
||||||
|| bank > sectionTypeInfo[type].lastBank) {
|
|| bank > sectionTypeInfo[type].lastBank) {
|
||||||
error(
|
error(
|
||||||
@@ -425,7 +427,7 @@ static Section *getSection(
|
|||||||
// It doesn't make sense to have both alignment and org set
|
// It doesn't make sense to have both alignment and org set
|
||||||
if (org != UINT32_MAX) {
|
if (org != UINT32_MAX) {
|
||||||
if ((org - alignOffset) & alignMask) {
|
if ((org - alignOffset) & alignMask) {
|
||||||
error("Section \"%s\"'s fixed address doesn't match its alignment", name.c_str());
|
error("Section \"%s\"'s fixed address does not match its alignment", name.c_str());
|
||||||
}
|
}
|
||||||
alignment = 0; // Ignore it if it's satisfied
|
alignment = 0; // Ignore it if it's satisfied
|
||||||
} else if (sectionTypeInfo[type].startAddr & alignMask) {
|
} else if (sectionTypeInfo[type].startAddr & alignMask) {
|
||||||
@@ -459,7 +461,7 @@ static Section *getSection(
|
|||||||
|
|
||||||
static void changeSection() {
|
static void changeSection() {
|
||||||
if (!currentUnionStack.empty()) {
|
if (!currentUnionStack.empty()) {
|
||||||
fatal("Cannot change the section within a UNION");
|
fatal("Cannot change the section within a `UNION`");
|
||||||
}
|
}
|
||||||
|
|
||||||
sym_ResetCurrentLabelScopes();
|
sym_ResetCurrentLabelScopes();
|
||||||
@@ -505,7 +507,7 @@ void sect_NewSection(
|
|||||||
) {
|
) {
|
||||||
for (SectionStackEntry &entry : sectionStack) {
|
for (SectionStackEntry &entry : sectionStack) {
|
||||||
if (entry.section && entry.section->name == name) {
|
if (entry.section && entry.section->name == name) {
|
||||||
fatal("Section '%s' is already on the stack", name.c_str());
|
fatal("Section \"%s\" is already on the stack", name.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -710,11 +712,11 @@ void sect_StartUnion() {
|
|||||||
// your own peril! ^^
|
// your own peril! ^^
|
||||||
|
|
||||||
if (!currentSection) {
|
if (!currentSection) {
|
||||||
error("UNIONs must be inside a SECTION");
|
error("`UNION`s must be inside a `SECTION`");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (sect_HasData(currentSection->type)) {
|
if (sect_HasData(currentSection->type)) {
|
||||||
error("Cannot use UNION inside of ROM0 or ROMX sections");
|
error("Cannot use `UNION` inside of `ROM0` or `ROMX` sections");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,7 +735,7 @@ static void endUnionMember() {
|
|||||||
|
|
||||||
void sect_NextUnionMember() {
|
void sect_NextUnionMember() {
|
||||||
if (currentUnionStack.empty()) {
|
if (currentUnionStack.empty()) {
|
||||||
error("Found NEXTU outside of a UNION construct");
|
error("Found `NEXTU` outside of a `UNION` construct");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
endUnionMember();
|
endUnionMember();
|
||||||
@@ -741,7 +743,7 @@ void sect_NextUnionMember() {
|
|||||||
|
|
||||||
void sect_EndUnion() {
|
void sect_EndUnion() {
|
||||||
if (currentUnionStack.empty()) {
|
if (currentUnionStack.empty()) {
|
||||||
error("Found ENDU outside of a UNION construct");
|
error("Found `ENDU` outside of a `UNION` construct");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
endUnionMember();
|
endUnionMember();
|
||||||
@@ -751,7 +753,7 @@ void sect_EndUnion() {
|
|||||||
|
|
||||||
void sect_CheckUnionClosed() {
|
void sect_CheckUnionClosed() {
|
||||||
if (!currentUnionStack.empty()) {
|
if (!currentUnionStack.empty()) {
|
||||||
error("Unterminated UNION construct");
|
error("Unterminated `UNION` construct");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -816,7 +818,7 @@ void sect_Skip(uint32_t skip, bool ds) {
|
|||||||
if (!ds) {
|
if (!ds) {
|
||||||
warning(
|
warning(
|
||||||
WARNING_EMPTY_DATA_DIRECTIVE,
|
WARNING_EMPTY_DATA_DIRECTIVE,
|
||||||
"%s directive without data in ROM",
|
"`%s` directive without data in ROM",
|
||||||
(skip == 4) ? "DL"
|
(skip == 4) ? "DL"
|
||||||
: (skip == 2) ? "DW"
|
: (skip == 2) ? "DW"
|
||||||
: "DB"
|
: "DB"
|
||||||
@@ -905,8 +907,8 @@ void sect_PCRelByte(Expression const &expr, uint32_t pcShift) {
|
|||||||
|
|
||||||
if (offset < -128 || offset > 127) {
|
if (offset < -128 || offset > 127) {
|
||||||
error(
|
error(
|
||||||
"JR target must be between -128 and 127 bytes away, not %" PRId16
|
"`JR` target must be between -128 and 127 bytes away, not %" PRId16
|
||||||
"; use JP instead",
|
"; use `JP` instead",
|
||||||
offset
|
offset
|
||||||
);
|
);
|
||||||
writeByte(0);
|
writeByte(0);
|
||||||
@@ -932,19 +934,23 @@ bool sect_BinaryFile(std::string const &name, uint32_t startPos) {
|
|||||||
|
|
||||||
if (fseek(file, 0, SEEK_END) == 0) {
|
if (fseek(file, 0, SEEK_END) == 0) {
|
||||||
if (startPos > ftell(file)) {
|
if (startPos > ftell(file)) {
|
||||||
error("Specified start position is greater than length of file '%s'", name.c_str());
|
error("Specified start position is greater than length of file \"%s\"", name.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// The file is seekable; skip to the specified start position
|
// The file is seekable; skip to the specified start position
|
||||||
fseek(file, startPos, SEEK_SET);
|
fseek(file, startPos, SEEK_SET);
|
||||||
} else {
|
} else {
|
||||||
if (errno != ESPIPE) {
|
if (errno != ESPIPE) {
|
||||||
error("Error determining size of INCBIN file '%s': %s", name.c_str(), strerror(errno));
|
error(
|
||||||
|
"Error determining size of `INCBIN` file \"%s\": %s", name.c_str(), strerror(errno)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
// The file isn't seekable, so we'll just skip bytes one at a time
|
// The file isn't seekable, so we'll just skip bytes one at a time
|
||||||
while (startPos--) {
|
while (startPos--) {
|
||||||
if (fgetc(file) == EOF) {
|
if (fgetc(file) == EOF) {
|
||||||
error("Specified start position is greater than length of file '%s'", name.c_str());
|
error(
|
||||||
|
"Specified start position is greater than length of file \"%s\"", name.c_str()
|
||||||
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -955,7 +961,7 @@ bool sect_BinaryFile(std::string const &name, uint32_t startPos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ferror(file)) {
|
if (ferror(file)) {
|
||||||
error("Error reading INCBIN file '%s': %s", name.c_str(), strerror(errno));
|
error("Error reading `INCBIN` file \"%s\": %s", name.c_str(), strerror(errno));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -979,11 +985,11 @@ bool sect_BinaryFileSlice(std::string const &name, uint32_t startPos, uint32_t l
|
|||||||
|
|
||||||
if (fseek(file, 0, SEEK_END) == 0) {
|
if (fseek(file, 0, SEEK_END) == 0) {
|
||||||
if (long fsize = ftell(file); startPos > fsize) {
|
if (long fsize = ftell(file); startPos > fsize) {
|
||||||
error("Specified start position is greater than length of file '%s'", name.c_str());
|
error("Specified start position is greater than length of file \"%s\"", name.c_str());
|
||||||
return false;
|
return false;
|
||||||
} else if (startPos + length > fsize) {
|
} else if (startPos + length > fsize) {
|
||||||
error(
|
error(
|
||||||
"Specified range in INCBIN file '%s' is out of bounds (%" PRIu32 " + %" PRIu32
|
"Specified range in `INCBIN` file \"%s\" is out of bounds (%" PRIu32 " + %" PRIu32
|
||||||
" > %ld)",
|
" > %ld)",
|
||||||
name.c_str(),
|
name.c_str(),
|
||||||
startPos,
|
startPos,
|
||||||
@@ -996,12 +1002,16 @@ bool sect_BinaryFileSlice(std::string const &name, uint32_t startPos, uint32_t l
|
|||||||
fseek(file, startPos, SEEK_SET);
|
fseek(file, startPos, SEEK_SET);
|
||||||
} else {
|
} else {
|
||||||
if (errno != ESPIPE) {
|
if (errno != ESPIPE) {
|
||||||
error("Error determining size of INCBIN file '%s': %s", name.c_str(), strerror(errno));
|
error(
|
||||||
|
"Error determining size of `INCBIN` file \"%s\": %s", name.c_str(), strerror(errno)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
// The file isn't seekable, so we'll just skip bytes one at a time
|
// The file isn't seekable, so we'll just skip bytes one at a time
|
||||||
while (startPos--) {
|
while (startPos--) {
|
||||||
if (fgetc(file) == EOF) {
|
if (fgetc(file) == EOF) {
|
||||||
error("Specified start position is greater than length of file '%s'", name.c_str());
|
error(
|
||||||
|
"Specified start position is greater than length of file \"%s\"", name.c_str()
|
||||||
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1011,10 +1021,10 @@ bool sect_BinaryFileSlice(std::string const &name, uint32_t startPos, uint32_t l
|
|||||||
if (int byte = fgetc(file); byte != EOF) {
|
if (int byte = fgetc(file); byte != EOF) {
|
||||||
writeByte(byte);
|
writeByte(byte);
|
||||||
} else if (ferror(file)) {
|
} else if (ferror(file)) {
|
||||||
error("Error reading INCBIN file '%s': %s", name.c_str(), strerror(errno));
|
error("Error reading `INCBIN` file \"%s\": %s", name.c_str(), strerror(errno));
|
||||||
} else {
|
} else {
|
||||||
error(
|
error(
|
||||||
"Premature end of INCBIN file '%s' (%" PRId32 " bytes left to read)",
|
"Premature end of `INCBIN` file \"%s\" (%" PRId32 " bytes left to read)",
|
||||||
name.c_str(),
|
name.c_str(),
|
||||||
length + 1
|
length + 1
|
||||||
);
|
);
|
||||||
@@ -1069,11 +1079,11 @@ void sect_CheckStack() {
|
|||||||
|
|
||||||
void sect_EndSection() {
|
void sect_EndSection() {
|
||||||
if (!currentSection) {
|
if (!currentSection) {
|
||||||
fatal("Cannot end the section outside of a SECTION");
|
fatal("Cannot end the section outside of a `SECTION`");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!currentUnionStack.empty()) {
|
if (!currentUnionStack.empty()) {
|
||||||
fatal("Cannot end the section within a UNION");
|
fatal("Cannot end the section within a `UNION`");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentLoadSection) {
|
if (currentLoadSection) {
|
||||||
@@ -1090,11 +1100,11 @@ std::string sect_PushSectionFragmentLiteral() {
|
|||||||
|
|
||||||
// Like `requireCodeSection` but fatal
|
// Like `requireCodeSection` but fatal
|
||||||
if (!currentSection) {
|
if (!currentSection) {
|
||||||
fatal("Cannot output fragment literals outside of a SECTION");
|
fatal("Cannot output fragment literals outside of a `SECTION`");
|
||||||
}
|
}
|
||||||
if (!sect_HasData(currentSection->type)) {
|
if (!sect_HasData(currentSection->type)) {
|
||||||
fatal(
|
fatal(
|
||||||
"Section '%s' cannot contain fragment literals (not ROM0 or ROMX)",
|
"Section \"%s\" cannot contain fragment literals (not `ROM0` or `ROMX`)",
|
||||||
currentSection->name.c_str()
|
currentSection->name.c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,14 +54,14 @@ static int32_t NARGCallback() {
|
|||||||
if (MacroArgs const *macroArgs = fstk_GetCurrentMacroArgs(); macroArgs) {
|
if (MacroArgs const *macroArgs = fstk_GetCurrentMacroArgs(); macroArgs) {
|
||||||
return macroArgs->nbArgs();
|
return macroArgs->nbArgs();
|
||||||
} else {
|
} else {
|
||||||
error("_NARG has no value outside of a macro");
|
error("`_NARG` has no value outside of a macro");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::shared_ptr<std::string> globalScopeCallback() {
|
static std::shared_ptr<std::string> globalScopeCallback() {
|
||||||
if (!globalScope) {
|
if (!globalScope) {
|
||||||
error("\".\" has no value outside of a label scope");
|
error("`.` has no value outside of a label scope");
|
||||||
return std::make_shared<std::string>("");
|
return std::make_shared<std::string>("");
|
||||||
}
|
}
|
||||||
return std::make_shared<std::string>(globalScope->name);
|
return std::make_shared<std::string>(globalScope->name);
|
||||||
@@ -69,7 +69,7 @@ static std::shared_ptr<std::string> globalScopeCallback() {
|
|||||||
|
|
||||||
static std::shared_ptr<std::string> localScopeCallback() {
|
static std::shared_ptr<std::string> localScopeCallback() {
|
||||||
if (!localScope) {
|
if (!localScope) {
|
||||||
error("\"..\" has no value outside of a local label scope");
|
error("`..` has no value outside of a local label scope");
|
||||||
return std::make_shared<std::string>("");
|
return std::make_shared<std::string>("");
|
||||||
}
|
}
|
||||||
return std::make_shared<std::string>(localScope->name);
|
return std::make_shared<std::string>(localScope->name);
|
||||||
@@ -156,22 +156,22 @@ static void alreadyDefinedError(Symbol const &sym, char const *asType) {
|
|||||||
if (sym.isBuiltin) {
|
if (sym.isBuiltin) {
|
||||||
if (sym_FindScopedValidSymbol(sym.name)) {
|
if (sym_FindScopedValidSymbol(sym.name)) {
|
||||||
if (std::string s = suggestion(); asType) {
|
if (std::string s = suggestion(); asType) {
|
||||||
error("'%s' already defined as built-in %s%s", sym.name.c_str(), asType, s.c_str());
|
error("`%s` already defined as built-in %s%s", sym.name.c_str(), asType, s.c_str());
|
||||||
} else {
|
} else {
|
||||||
error("'%s' already defined as built-in%s", sym.name.c_str(), s.c_str());
|
error("`%s` already defined as built-in%s", sym.name.c_str(), s.c_str());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// `DEF()` would return false, so we should not claim the symbol is already defined,
|
// `DEF()` would return false, so we should not claim the symbol is already defined,
|
||||||
// nor suggest to interpolate it
|
// nor suggest to interpolate it
|
||||||
if (asType) {
|
if (asType) {
|
||||||
error("'%s' is reserved for a built-in %s symbol", sym.name.c_str(), asType);
|
error("`%s` is reserved for a built-in %s symbol", sym.name.c_str(), asType);
|
||||||
} else {
|
} else {
|
||||||
error("'%s' is reserved for a built-in symbol", sym.name.c_str());
|
error("`%s` is reserved for a built-in symbol", sym.name.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorNoTrace([&]() {
|
errorNoTrace([&]() {
|
||||||
fprintf(stderr, "'%s' already defined", sym.name.c_str());
|
fprintf(stderr, "`%s` already defined", sym.name.c_str());
|
||||||
if (asType) {
|
if (asType) {
|
||||||
fprintf(stderr, " as %s", asType);
|
fprintf(stderr, " as %s", asType);
|
||||||
}
|
}
|
||||||
@@ -184,10 +184,10 @@ static void alreadyDefinedError(Symbol const &sym, char const *asType) {
|
|||||||
static void redefinedError(Symbol const &sym) {
|
static void redefinedError(Symbol const &sym) {
|
||||||
assume(sym.isBuiltin);
|
assume(sym.isBuiltin);
|
||||||
if (sym_FindScopedValidSymbol(sym.name)) {
|
if (sym_FindScopedValidSymbol(sym.name)) {
|
||||||
error("Built-in symbol '%s' cannot be redefined", sym.name.c_str());
|
error("Built-in symbol `%s` cannot be redefined", sym.name.c_str());
|
||||||
} else {
|
} else {
|
||||||
// `DEF()` would return false, so we should not imply the symbol is already defined
|
// `DEF()` would return false, so we should not imply the symbol is already defined
|
||||||
error("'%s' is reserved for a built-in symbol", sym.name.c_str());
|
error("`%s` is reserved for a built-in symbol", sym.name.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,12 +236,12 @@ static bool isAutoScoped(std::string const &symName) {
|
|||||||
|
|
||||||
// Check for nothing after the dot
|
// Check for nothing after the dot
|
||||||
if (dotPos == symName.length() - 1) {
|
if (dotPos == symName.length() - 1) {
|
||||||
fatal("'%s' is a nonsensical reference to an empty local label", symName.c_str());
|
fatal("`%s` is a nonsensical reference to an empty local label", symName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for more than one dot
|
// Check for more than one dot
|
||||||
if (symName.find('.', dotPos + 1) != std::string::npos) {
|
if (symName.find('.', dotPos + 1) != std::string::npos) {
|
||||||
fatal("'%s' is a nonsensical reference to a nested local label", symName.c_str());
|
fatal("`%s` is a nonsensical reference to a nested local label", symName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for already-qualified local label
|
// Check for already-qualified local label
|
||||||
@@ -251,7 +251,7 @@ static bool isAutoScoped(std::string const &symName) {
|
|||||||
|
|
||||||
// Check for unqualifiable local label
|
// Check for unqualifiable local label
|
||||||
if (!globalScope) {
|
if (!globalScope) {
|
||||||
fatal("Unqualified local label '%s' in main scope", symName.c_str());
|
fatal("Unqualified local label `%s` in main scope", symName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -300,19 +300,19 @@ void sym_Purge(std::string const &symName) {
|
|||||||
|
|
||||||
if (!sym) {
|
if (!sym) {
|
||||||
if (sym_IsPurgedScoped(symName)) {
|
if (sym_IsPurgedScoped(symName)) {
|
||||||
error("Undefined symbol '%s' was already purged", symName.c_str());
|
error("Undefined symbol `%s` was already purged", symName.c_str());
|
||||||
} else {
|
} else {
|
||||||
error("Undefined symbol '%s'", symName.c_str());
|
error("Undefined symbol `%s`", symName.c_str());
|
||||||
}
|
}
|
||||||
} else if (sym->isBuiltin) {
|
} else if (sym->isBuiltin) {
|
||||||
error("Built-in symbol '%s' cannot be purged", symName.c_str());
|
error("Built-in symbol `%s` cannot be purged", symName.c_str());
|
||||||
} else if (sym->ID != UINT32_MAX) {
|
} else if (sym->ID != UINT32_MAX) {
|
||||||
error("Symbol \"%s\" is referenced and thus cannot be purged", symName.c_str());
|
error("Symbol `%s` is referenced and thus cannot be purged", symName.c_str());
|
||||||
} else {
|
} else {
|
||||||
if (sym->isExported) {
|
if (sym->isExported) {
|
||||||
warning(WARNING_PURGE_1, "Purging an exported symbol \"%s\"", symName.c_str());
|
warning(WARNING_PURGE_1, "Purging an exported symbol `%s`", symName.c_str());
|
||||||
} else if (sym->isLabel()) {
|
} else if (sym->isLabel()) {
|
||||||
warning(WARNING_PURGE_2, "Purging a label \"%s\"", symName.c_str());
|
warning(WARNING_PURGE_2, "Purging a label `%s`", symName.c_str());
|
||||||
}
|
}
|
||||||
// Do not keep a reference to the label after purging it
|
// Do not keep a reference to the label after purging it
|
||||||
if (sym == globalScope) {
|
if (sym == globalScope) {
|
||||||
@@ -357,7 +357,7 @@ uint32_t Symbol::getConstantValue() const {
|
|||||||
error("PC does not have a constant value; the current section is not fixed");
|
error("PC does not have a constant value; the current section is not fixed");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
error("\"%s\" does not have a constant value", name.c_str());
|
error("`%s` does not have a constant value", name.c_str());
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -393,7 +393,7 @@ static Symbol *createNonrelocSymbol(std::string const &symName, bool numeric) {
|
|||||||
} else if (!numeric) {
|
} else if (!numeric) {
|
||||||
// The symbol has already been referenced, but it's not allowed
|
// The symbol has already been referenced, but it's not allowed
|
||||||
errorNoTrace([&]() {
|
errorNoTrace([&]() {
|
||||||
fprintf(stderr, "'%s' already referenced", symName.c_str());
|
fprintf(stderr, "`%s` already referenced", symName.c_str());
|
||||||
printBacktraces(*sym);
|
printBacktraces(*sym);
|
||||||
});
|
});
|
||||||
return nullptr; // Don't allow overriding the symbol, that'd be bad!
|
return nullptr; // Don't allow overriding the symbol, that'd be bad!
|
||||||
@@ -423,7 +423,7 @@ Symbol *sym_RedefEqu(std::string const &symName, int32_t value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sym->isDefined() && sym->type != SYM_EQU) {
|
if (sym->isDefined() && sym->type != SYM_EQU) {
|
||||||
alreadyDefinedError(*sym, "non-EQU");
|
alreadyDefinedError(*sym, "non-`EQU`");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
} else if (sym->isBuiltin) {
|
} else if (sym->isBuiltin) {
|
||||||
redefinedError(*sym);
|
redefinedError(*sym);
|
||||||
@@ -458,10 +458,10 @@ Symbol *sym_RedefString(std::string const &symName, std::shared_ptr<std::string>
|
|||||||
|
|
||||||
if (sym->type != SYM_EQUS) {
|
if (sym->type != SYM_EQUS) {
|
||||||
if (sym->isDefined()) {
|
if (sym->isDefined()) {
|
||||||
alreadyDefinedError(*sym, "non-EQUS");
|
alreadyDefinedError(*sym, "non-`EQUS`");
|
||||||
} else {
|
} else {
|
||||||
errorNoTrace([&]() {
|
errorNoTrace([&]() {
|
||||||
fprintf(stderr, "'%s' already referenced", symName.c_str());
|
fprintf(stderr, "`%s` already referenced", symName.c_str());
|
||||||
printBacktraces(*sym);
|
printBacktraces(*sym);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -518,7 +518,7 @@ static Symbol *addLabel(std::string const &symName) {
|
|||||||
sym->section = sect_GetSymbolSection();
|
sym->section = sect_GetSymbolSection();
|
||||||
|
|
||||||
if (sym && !sym->section) {
|
if (sym && !sym->section) {
|
||||||
error("Label \"%s\" created outside of a SECTION", symName.c_str());
|
error("Label `%s` created outside of a `SECTION`", symName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
return sym;
|
return sym;
|
||||||
@@ -588,7 +588,7 @@ std::string sym_MakeAnonLabelName(uint32_t ofs, bool neg) {
|
|||||||
// LCOV_EXCL_START
|
// LCOV_EXCL_START
|
||||||
error(
|
error(
|
||||||
"Reference to anonymous label %" PRIu32 " after, when only %" PRIu32
|
"Reference to anonymous label %" PRIu32 " after, when only %" PRIu32
|
||||||
" may still be created",
|
" can still be created",
|
||||||
ofs + 1,
|
ofs + 1,
|
||||||
UINT32_MAX - anonLabelID
|
UINT32_MAX - anonLabelID
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -75,15 +75,15 @@ static Usage usage = {
|
|||||||
{
|
{
|
||||||
{"-m", "--mbc-type <value>"},
|
{"-m", "--mbc-type <value>"},
|
||||||
{
|
{
|
||||||
"set the MBC type byte to this value; `-m help'",
|
"set the MBC type byte to this value; \"-m help\"",
|
||||||
"or `-m list' prints the accepted values",
|
"or \"-m list\" prints the accepted values",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{{"-p", "--pad-value <value>"}, {"pad to the next valid size using this value"}},
|
{{"-p", "--pad-value <value>"}, {"pad to the next valid size using this value"}},
|
||||||
{{"-r", "--ram-size <code>"}, {"set the cart RAM size byte to this value"}},
|
{{"-r", "--ram-size <code>"}, {"set the cart RAM size byte to this value"}},
|
||||||
{{"-o", "--output <path>"}, {"set the output file"}},
|
{{"-o", "--output <path>"}, {"set the output file"}},
|
||||||
{{"-V", "--version"}, {"print RGBFIX version and exit"}},
|
{{"-V", "--version"}, {"print RGBFIX version and exit"}},
|
||||||
{{"-v", "--validate"}, {"fix the header logo and both checksums (`-f lhg')"}},
|
{{"-v", "--validate"}, {"fix the header logo and both checksums (\"-f lhg\")"}},
|
||||||
{{"-W", "--warning <warning>"}, {"enable or disable warnings"}},
|
{{"-W", "--warning <warning>"}, {"enable or disable warnings"}},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -353,7 +353,7 @@ static void
|
|||||||
|
|
||||||
// Update bank count, ONLY IF at least one byte was read
|
// Update bank count, ONLY IF at least one byte was read
|
||||||
if (bankLen) {
|
if (bankLen) {
|
||||||
// We're gonna read another bank, check that it won't be too much
|
// We're going to read another bank, check that it won't be too much
|
||||||
static_assert(
|
static_assert(
|
||||||
0x10000 * BANK_SIZE <= SSIZE_MAX, "Max input file size too large for OS"
|
0x10000 * BANK_SIZE <= SSIZE_MAX, "Max input file size too large for OS"
|
||||||
);
|
);
|
||||||
@@ -613,7 +613,7 @@ static bool processFilename(char const *name, char const *outputName) {
|
|||||||
|
|
||||||
static void parseByte(uint16_t &output, char name) {
|
static void parseByte(uint16_t &output, char name) {
|
||||||
if (musl_optarg[0] == 0) {
|
if (musl_optarg[0] == 0) {
|
||||||
fatal("Argument to option '%c' may not be empty", name);
|
fatal("Argument to option '-%c' may not be empty", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *endptr;
|
char *endptr;
|
||||||
@@ -625,9 +625,9 @@ static void parseByte(uint16_t &output, char name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (*endptr) {
|
if (*endptr) {
|
||||||
fatal("Expected number as argument to option '%c', got %s", name, musl_optarg);
|
fatal("Expected number as argument to option '-%c', got \"%s\"", name, musl_optarg);
|
||||||
} else if (value > 0xFF) {
|
} else if (value > 0xFF) {
|
||||||
fatal("Argument to option '%c' is larger than 255: %lu", name, value);
|
fatal("Argument to option '-%c' is larger than 255: %lu", name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
output = value;
|
output = value;
|
||||||
@@ -849,7 +849,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
if ((cartridgeType & 0xFF00) == TPP1 && !japanese) {
|
if ((cartridgeType & 0xFF00) == TPP1 && !japanese) {
|
||||||
warning(
|
warning(
|
||||||
WARNING_MBC, "TPP1 overwrites region flag for its identification code, ignoring `-j`"
|
WARNING_MBC, "TPP1 overwrites region flag for its identification code, ignoring '-j'"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,7 +859,7 @@ int main(int argc, char *argv[]) {
|
|||||||
if (ramSize != 1) {
|
if (ramSize != 1) {
|
||||||
warning(
|
warning(
|
||||||
WARNING_MBC,
|
WARNING_MBC,
|
||||||
"MBC \"%s\" should have 2 KiB of RAM (-r 1)",
|
"MBC \"%s\" should have 2 KiB of RAM (\"-r 1\")",
|
||||||
mbc_Name(cartridgeType)
|
mbc_Name(cartridgeType)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -899,11 +899,11 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
argv += musl_optind;
|
argv += musl_optind;
|
||||||
if (!*argv) {
|
if (!*argv) {
|
||||||
usage.printAndExit("No input file specified (pass `-` to read from standard input)");
|
usage.printAndExit("No input file specified (pass \"-\" to read from standard input)");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outputFilename && argc != musl_optind + 1) {
|
if (outputFilename && argc != musl_optind + 1) {
|
||||||
usage.printAndExit("If `-o` is set then only a single input file may be specified");
|
usage.printAndExit("If '-o' is set then only a single input file may be specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool failed = warnings.nbErrors > 0;
|
bool failed = warnings.nbErrors > 0;
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ MbcType mbc_ParseName(char const *name, uint8_t &tpp1Major, uint8_t &tpp1Minor)
|
|||||||
fatalUnknownMBC(fullName);
|
fatalUnknownMBC(fullName);
|
||||||
}
|
}
|
||||||
if (mbc > 0xFF) {
|
if (mbc > 0xFF) {
|
||||||
fatal("Specified MBC ID out of range 0-255: %s", fullName);
|
fatal("Specified MBC ID out of range 0-255: \"%s\"", fullName);
|
||||||
}
|
}
|
||||||
return static_cast<MbcType>(mbc);
|
return static_cast<MbcType>(mbc);
|
||||||
}
|
}
|
||||||
@@ -415,7 +415,7 @@ MbcType mbc_ParseName(char const *name, uint8_t &tpp1Major, uint8_t &tpp1Minor)
|
|||||||
// Handle timer, which also requires battery
|
// Handle timer, which also requires battery
|
||||||
if (features & TIMER) {
|
if (features & TIMER) {
|
||||||
if (!(features & BATTERY)) {
|
if (!(features & BATTERY)) {
|
||||||
warning(WARNING_MBC, "MBC3+TIMER implies BATTERY");
|
warning(WARNING_MBC, "\"MBC3+TIMER\" implies \"BATTERY\"");
|
||||||
}
|
}
|
||||||
features &= ~(TIMER | BATTERY); // Reset those bits
|
features &= ~(TIMER | BATTERY); // Reset those bits
|
||||||
mbc = MBC3_TIMER_BATTERY;
|
mbc = MBC3_TIMER_BATTERY;
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ static void registerInput(char const *arg) {
|
|||||||
static std::vector<size_t> readAtFile(std::string const &path, std::vector<char> &argPool) {
|
static std::vector<size_t> readAtFile(std::string const &path, std::vector<char> &argPool) {
|
||||||
File file;
|
File file;
|
||||||
if (!file.open(path, std::ios_base::in)) {
|
if (!file.open(path, std::ios_base::in)) {
|
||||||
fatal("Error reading @%s: %s", file.c_str(path), strerror(errno));
|
fatal("Error reading at-file \"%s\": %s", file.c_str(path), strerror(errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (std::vector<size_t> argvOfs;;) {
|
for (std::vector<size_t> argvOfs;;) {
|
||||||
@@ -267,7 +267,7 @@ static char *parseArgv(int argc, char *argv[]) {
|
|||||||
case 'a':
|
case 'a':
|
||||||
localOptions.autoAttrmap = false;
|
localOptions.autoAttrmap = false;
|
||||||
if (!options.attrmap.empty()) {
|
if (!options.attrmap.empty()) {
|
||||||
warnx("Overriding attrmap file %s", options.attrmap.c_str());
|
warnx("Overriding attrmap file \"%s\"", options.attrmap.c_str());
|
||||||
}
|
}
|
||||||
options.attrmap = musl_optarg;
|
options.attrmap = musl_optarg;
|
||||||
break;
|
break;
|
||||||
@@ -336,7 +336,7 @@ static char *parseArgv(int argc, char *argv[]) {
|
|||||||
case 'd':
|
case 'd':
|
||||||
options.bitDepth = parseNumber(arg, "Bit depth", 2);
|
options.bitDepth = parseNumber(arg, "Bit depth", 2);
|
||||||
if (*arg != '\0') {
|
if (*arg != '\0') {
|
||||||
error("Bit depth (-b) argument must be a valid number, not \"%s\"", musl_optarg);
|
error("Bit depth ('-b') argument must be a valid number, not \"%s\"", musl_optarg);
|
||||||
} else if (options.bitDepth != 1 && options.bitDepth != 2) {
|
} else if (options.bitDepth != 1 && options.bitDepth != 2) {
|
||||||
error("Bit depth must be 1 or 2, not %" PRIu8, options.bitDepth);
|
error("Bit depth must be 1 or 2, not %" PRIu8, options.bitDepth);
|
||||||
options.bitDepth = 2;
|
options.bitDepth = 2;
|
||||||
@@ -346,7 +346,7 @@ static char *parseArgv(int argc, char *argv[]) {
|
|||||||
usage.printAndExit(0); // LCOV_EXCL_LINE
|
usage.printAndExit(0); // LCOV_EXCL_LINE
|
||||||
case 'i':
|
case 'i':
|
||||||
if (!options.inputTileset.empty()) {
|
if (!options.inputTileset.empty()) {
|
||||||
warnx("Overriding input tileset file %s", options.inputTileset.c_str());
|
warnx("Overriding input tileset file \"%s\"", options.inputTileset.c_str());
|
||||||
}
|
}
|
||||||
options.inputTileset = musl_optarg;
|
options.inputTileset = musl_optarg;
|
||||||
break;
|
break;
|
||||||
@@ -441,12 +441,12 @@ static char *parseArgv(int argc, char *argv[]) {
|
|||||||
case 'n':
|
case 'n':
|
||||||
number = parseNumber(arg, "Number of palettes", 256);
|
number = parseNumber(arg, "Number of palettes", 256);
|
||||||
if (*arg != '\0') {
|
if (*arg != '\0') {
|
||||||
error("Number of palettes (-n) must be a valid number, not \"%s\"", musl_optarg);
|
error("Number of palettes ('-n') must be a valid number, not \"%s\"", musl_optarg);
|
||||||
}
|
}
|
||||||
if (number > 256) {
|
if (number > 256) {
|
||||||
error("Number of palettes (-n) must not exceed 256!");
|
error("Number of palettes ('-n') must not exceed 256!");
|
||||||
} else if (number == 0) {
|
} else if (number == 0) {
|
||||||
error("Number of palettes (-n) may not be 0!");
|
error("Number of palettes ('-n') may not be 0!");
|
||||||
} else {
|
} else {
|
||||||
options.nbPalettes = number;
|
options.nbPalettes = number;
|
||||||
}
|
}
|
||||||
@@ -484,18 +484,20 @@ static char *parseArgv(int argc, char *argv[]) {
|
|||||||
localOptions.reverse = true;
|
localOptions.reverse = true;
|
||||||
options.reversedWidth = parseNumber(arg, "Reversed image stride");
|
options.reversedWidth = parseNumber(arg, "Reversed image stride");
|
||||||
if (*arg != '\0') {
|
if (*arg != '\0') {
|
||||||
error("Reversed image stride (-r) must be a valid number, not \"%s\"", musl_optarg);
|
error(
|
||||||
|
"Reversed image stride ('-r') must be a valid number, not \"%s\"", musl_optarg
|
||||||
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
options.nbColorsPerPal = parseNumber(arg, "Number of colors per palette", 4);
|
options.nbColorsPerPal = parseNumber(arg, "Number of colors per palette", 4);
|
||||||
if (*arg != '\0') {
|
if (*arg != '\0') {
|
||||||
error("Palette size (-s) must be a valid number, not \"%s\"", musl_optarg);
|
error("Palette size ('-s') must be a valid number, not \"%s\"", musl_optarg);
|
||||||
}
|
}
|
||||||
if (options.nbColorsPerPal > 4) {
|
if (options.nbColorsPerPal > 4) {
|
||||||
error("Palette size (-s) must not exceed 4!");
|
error("Palette size ('-s') must not exceed 4!");
|
||||||
} else if (options.nbColorsPerPal == 0) {
|
} else if (options.nbColorsPerPal == 0) {
|
||||||
error("Palette size (-s) may not be 0!");
|
error("Palette size ('-s') may not be 0!");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
@@ -527,7 +529,7 @@ static char *parseArgv(int argc, char *argv[]) {
|
|||||||
case 'x':
|
case 'x':
|
||||||
options.trim = parseNumber(arg, "Number of tiles to trim", 0);
|
options.trim = parseNumber(arg, "Number of tiles to trim", 0);
|
||||||
if (*arg != '\0') {
|
if (*arg != '\0') {
|
||||||
error("Tile trim (-x) argument must be a valid number, not \"%s\"", musl_optarg);
|
error("Tile trim ('-x') argument must be a valid number, not \"%s\"", musl_optarg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'X':
|
case 'X':
|
||||||
@@ -846,7 +848,7 @@ int main(int argc, char *argv[]) {
|
|||||||
&& !localOptions.reverse) {
|
&& !localOptions.reverse) {
|
||||||
processPalettes();
|
processPalettes();
|
||||||
} else {
|
} else {
|
||||||
usage.printAndExit("No input file specified (pass `-` to read from standard input)");
|
usage.printAndExit("No input file specified (pass \"-\" to read from standard input)");
|
||||||
}
|
}
|
||||||
|
|
||||||
requireZeroErrors();
|
requireZeroErrors();
|
||||||
|
|||||||
@@ -70,13 +70,11 @@ void parseInlinePalSpec(char const * const rawArg) {
|
|||||||
error("%s", msg); // `format_` and `-Wformat-security` would complain about `error(msg);`
|
error("%s", msg); // `format_` and `-Wformat-security` would complain about `error(msg);`
|
||||||
fprintf(
|
fprintf(
|
||||||
stderr,
|
stderr,
|
||||||
"In inline palette spec: %s\n"
|
"In inline palette spec: \"%s\"\n%*c",
|
||||||
" ",
|
rawArg,
|
||||||
rawArg
|
static_cast<int>(literal_strlen("In inline palette spec: \"") + ofs),
|
||||||
|
' '
|
||||||
);
|
);
|
||||||
for (size_t i = ofs; i; --i) {
|
|
||||||
putc(' ', stderr);
|
|
||||||
}
|
|
||||||
for (size_t i = len; i; --i) {
|
for (size_t i = len; i; --i) {
|
||||||
putc('^', stderr);
|
putc('^', stderr);
|
||||||
}
|
}
|
||||||
@@ -300,7 +298,7 @@ static void parsePSPFile(char const *filename, std::filebuf &file) {
|
|||||||
size_t n = 0;
|
size_t n = 0;
|
||||||
std::optional<uint16_t> nbColors = parseDec<uint16_t>(line, n);
|
std::optional<uint16_t> nbColors = parseDec<uint16_t>(line, n);
|
||||||
if (!nbColors || n != line.length()) {
|
if (!nbColors || n != line.length()) {
|
||||||
error("Invalid \"number of colors\" line in PSP file (%s)", line.c_str());
|
error("Invalid \"number of colors\" line in PSP file (\"%s\")", line.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -651,7 +649,7 @@ void parseExternalPalSpec(char const *arg) {
|
|||||||
// Split both parts, error out if malformed
|
// Split both parts, error out if malformed
|
||||||
char const *ptr = strchr(arg, ':');
|
char const *ptr = strchr(arg, ':');
|
||||||
if (ptr == nullptr) {
|
if (ptr == nullptr) {
|
||||||
error("External palette spec must have format `fmt:path` (missing colon)");
|
error("External palette spec must have format \"fmt:path\" (missing colon)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char const *path = ptr + 1;
|
char const *path = ptr + 1;
|
||||||
@@ -721,7 +719,7 @@ void parseBackgroundPalSpec(char const *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (arg[0] != '#') {
|
if (arg[0] != '#') {
|
||||||
error("Background color specification must be `#rgb`, `#rrggbb`, or `transparent`");
|
error("Background color specification must be \"#rgb\", \"#rrggbb\", or \"transparent\"");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ static void generatePalSpec(Image const &image) {
|
|||||||
// Generate a palette spec from the first few colors in the embedded palette
|
// Generate a palette spec from the first few colors in the embedded palette
|
||||||
std::vector<Rgba> const &embPal = image.png.palette;
|
std::vector<Rgba> const &embPal = image.png.palette;
|
||||||
if (embPal.empty()) {
|
if (embPal.empty()) {
|
||||||
fatal("`-c embedded` was given, but the PNG does not have an embedded palette!");
|
fatal("\"-c embedded\" was given, but the PNG does not have an embedded palette!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ignore extraneous colors if they are unused
|
// Ignore extraneous colors if they are unused
|
||||||
@@ -794,7 +794,7 @@ static UniqueTiles dedupTiles(
|
|||||||
if (matchType != TileData::NOPE) {
|
if (matchType != TileData::NOPE) {
|
||||||
error(
|
error(
|
||||||
"The input tileset's tile #%hu was deduplicated; please check that your "
|
"The input tileset's tile #%hu was deduplicated; please check that your "
|
||||||
"deduplication flags (`-u`, `-m`) are consistent with what was used to "
|
"deduplication flags ('-u', '-m') are consistent with what was used to "
|
||||||
"generate the input tileset",
|
"generate the input tileset",
|
||||||
tileID
|
tileID
|
||||||
);
|
);
|
||||||
@@ -815,7 +815,7 @@ static UniqueTiles dedupTiles(
|
|||||||
if (inputWithoutOutput && matchType == TileData::NOPE) {
|
if (inputWithoutOutput && matchType == TileData::NOPE) {
|
||||||
error(
|
error(
|
||||||
"Tile at (%" PRIu32 ", %" PRIu32
|
"Tile at (%" PRIu32 ", %" PRIu32
|
||||||
") is not within the input tileset, and `-o` was not given!",
|
") is not within the input tileset, and '-o' was not given!",
|
||||||
tile.x,
|
tile.x,
|
||||||
tile.y
|
tile.y
|
||||||
);
|
);
|
||||||
@@ -1078,8 +1078,7 @@ continue_visiting_tiles:;
|
|||||||
|
|
||||||
// I currently cannot figure out useful semantics for this combination of flags.
|
// I currently cannot figure out useful semantics for this combination of flags.
|
||||||
if (!options.inputTileset.empty()) {
|
if (!options.inputTileset.empty()) {
|
||||||
fatal("Input tilesets are not supported without `-u`\nPlease consider explaining your "
|
fatal("Input tilesets are not supported without '-u'");
|
||||||
"use case to RGBDS' developers!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!options.output.empty()) {
|
if (!options.output.empty()) {
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ void reverse() {
|
|||||||
if (options.inputSlice.width != 0 && options.inputSlice.width != options.reversedWidth * 8) {
|
if (options.inputSlice.width != 0 && options.inputSlice.width != options.reversedWidth * 8) {
|
||||||
warnx(
|
warnx(
|
||||||
"Specified input slice width (%" PRIu16
|
"Specified input slice width (%" PRIu16
|
||||||
") doesn't match provided reversing width (%" PRIu16 " * 8)",
|
") does not match provided reversing width (%" PRIu16 " * 8)",
|
||||||
options.inputSlice.width,
|
options.inputSlice.width,
|
||||||
options.reversedWidth
|
options.reversedWidth
|
||||||
);
|
);
|
||||||
@@ -179,7 +179,7 @@ void reverse() {
|
|||||||
if (options.trim == 0 && !tilemap) {
|
if (options.trim == 0 && !tilemap) {
|
||||||
fatal(
|
fatal(
|
||||||
"Total number of tiles (%zu) cannot be divided by image width (%zu tiles)\n"
|
"Total number of tiles (%zu) cannot be divided by image width (%zu tiles)\n"
|
||||||
"(To proceed anyway with this image width, try passing `-x %zu`)",
|
"(To proceed anyway with this image width, try passing \"-x %zu\")",
|
||||||
mapSize,
|
mapSize,
|
||||||
width,
|
width,
|
||||||
width - mapSize % width
|
width - mapSize % width
|
||||||
@@ -242,9 +242,9 @@ void reverse() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (options.palSpecType == Options::EXPLICIT && palettes != options.palSpec) {
|
if (options.palSpecType == Options::EXPLICIT && palettes != options.palSpec) {
|
||||||
warnx("Colors in the palette file do not match those specified with `-c`!");
|
warnx("Colors in the palette file do not match those specified with '-c'!");
|
||||||
// This spacing aligns "...versus with `-c`" above the column of `-c` palettes
|
// This spacing aligns "...versus with `-c`" above the column of `-c` palettes
|
||||||
fputs("Colors specified in the palette file: ...versus with `-c`:\n", stderr);
|
fputs("Colors specified in the palette file: ...versus with '-c':\n", stderr);
|
||||||
for (size_t i = 0; i < palettes.size() && i < options.palSpec.size(); ++i) {
|
for (size_t i = 0; i < palettes.size() && i < options.palSpec.size(); ++i) {
|
||||||
if (i < palettes.size()) {
|
if (i < palettes.size()) {
|
||||||
printPalette(palettes[i]);
|
printPalette(palettes[i]);
|
||||||
@@ -275,7 +275,7 @@ void reverse() {
|
|||||||
attrmap = readInto(options.attrmap);
|
attrmap = readInto(options.attrmap);
|
||||||
if (attrmap->size() != mapSize) {
|
if (attrmap->size() != mapSize) {
|
||||||
fatal(
|
fatal(
|
||||||
"Attribute map size (%zu tiles) doesn't match image's (%zu)",
|
"Attribute map size (%zu tiles) does not match image size (%zu tiles)",
|
||||||
attrmap->size(),
|
attrmap->size(),
|
||||||
mapSize
|
mapSize
|
||||||
);
|
);
|
||||||
@@ -396,7 +396,7 @@ void reverse() {
|
|||||||
palmap = readInto(options.palmap);
|
palmap = readInto(options.palmap);
|
||||||
if (palmap->size() != mapSize) {
|
if (palmap->size() != mapSize) {
|
||||||
fatal(
|
fatal(
|
||||||
"Palette map size (%zu tiles) doesn't match image size (%zu)",
|
"Palette map size (%zu tiles) does not match image size (%zu tiles)",
|
||||||
palmap->size(),
|
palmap->size(),
|
||||||
mapSize
|
mapSize
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ void layout_SetSectionType(SectionType type, uint32_t bank) {
|
|||||||
|
|
||||||
if (bank < typeInfo.firstBank) {
|
if (bank < typeInfo.firstBank) {
|
||||||
lexer_Error(
|
lexer_Error(
|
||||||
"%s bank %" PRIu32 " doesn't exist (the minimum is %" PRIu32 ")",
|
"%s bank %" PRIu32 " does not exist (the minimum is %" PRIu32 ")",
|
||||||
typeInfo.name.c_str(),
|
typeInfo.name.c_str(),
|
||||||
bank,
|
bank,
|
||||||
typeInfo.firstBank
|
typeInfo.firstBank
|
||||||
@@ -67,7 +67,7 @@ void layout_SetSectionType(SectionType type, uint32_t bank) {
|
|||||||
bank = typeInfo.firstBank;
|
bank = typeInfo.firstBank;
|
||||||
} else if (bank > typeInfo.lastBank) {
|
} else if (bank > typeInfo.lastBank) {
|
||||||
lexer_Error(
|
lexer_Error(
|
||||||
"%s bank %" PRIu32 " doesn't exist (the maximum is %" PRIu32 ")",
|
"%s bank %" PRIu32 " does not exist (the maximum is %" PRIu32 ")",
|
||||||
typeInfo.name.c_str(),
|
typeInfo.name.c_str(),
|
||||||
bank,
|
bank,
|
||||||
typeInfo.lastBank
|
typeInfo.lastBank
|
||||||
@@ -243,7 +243,7 @@ void layout_PlaceSection(std::string const &name, bool isOptional) {
|
|||||||
// A section that lacks data can only be assigned to a type that requires data
|
// A section that lacks data can only be assigned to a type that requires data
|
||||||
// if it's empty.
|
// if it's empty.
|
||||||
lexer_Error(
|
lexer_Error(
|
||||||
"\"%s\" is specified to be a %s section, but it doesn't contain data",
|
"\"%s\" is specified to be a %s section, but it does not contain data",
|
||||||
name.c_str(),
|
name.c_str(),
|
||||||
typeInfo.name.c_str()
|
typeInfo.name.c_str()
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ static yy::parser::symbol_type parseBinNumber(char const *prefix) {
|
|||||||
LexerStackEntry &context = lexerStack.back();
|
LexerStackEntry &context = lexerStack.back();
|
||||||
int c = context.file.sgetc();
|
int c = context.file.sgetc();
|
||||||
if (!isBinDigit(c)) {
|
if (!isBinDigit(c)) {
|
||||||
lexer_Error("No binary digits found after '%s'", prefix);
|
lexer_Error("No binary digits found after %s", prefix);
|
||||||
return yy::parser::make_number(0);
|
return yy::parser::make_number(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ static yy::parser::symbol_type parseOctNumber(char const *prefix) {
|
|||||||
LexerStackEntry &context = lexerStack.back();
|
LexerStackEntry &context = lexerStack.back();
|
||||||
int c = context.file.sgetc();
|
int c = context.file.sgetc();
|
||||||
if (!isOctDigit(c)) {
|
if (!isOctDigit(c)) {
|
||||||
lexer_Error("No octal digits found after '%s'", prefix);
|
lexer_Error("No octal digits found after %s", prefix);
|
||||||
return yy::parser::make_number(0);
|
return yy::parser::make_number(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ static yy::parser::symbol_type parseHexNumber(char const *prefix) {
|
|||||||
LexerStackEntry &context = lexerStack.back();
|
LexerStackEntry &context = lexerStack.back();
|
||||||
int c = context.file.sgetc();
|
int c = context.file.sgetc();
|
||||||
if (!isHexDigit(c)) {
|
if (!isHexDigit(c)) {
|
||||||
lexer_Error("No hexadecimal digits found after '%s'", prefix);
|
lexer_Error("No hexadecimal digits found after %s", prefix);
|
||||||
return yy::parser::make_number(0);
|
return yy::parser::make_number(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,22 +198,22 @@ static yy::parser::symbol_type parseNumber(int c) {
|
|||||||
switch (context.file.sgetc()) {
|
switch (context.file.sgetc()) {
|
||||||
case 'x':
|
case 'x':
|
||||||
context.file.sbumpc();
|
context.file.sbumpc();
|
||||||
return parseHexNumber("0x");
|
return parseHexNumber("\"0x\"");
|
||||||
case 'X':
|
case 'X':
|
||||||
context.file.sbumpc();
|
context.file.sbumpc();
|
||||||
return parseHexNumber("0X");
|
return parseHexNumber("\"0X\"");
|
||||||
case 'o':
|
case 'o':
|
||||||
context.file.sbumpc();
|
context.file.sbumpc();
|
||||||
return parseOctNumber("0o");
|
return parseOctNumber("\"0o\"");
|
||||||
case 'O':
|
case 'O':
|
||||||
context.file.sbumpc();
|
context.file.sbumpc();
|
||||||
return parseOctNumber("0O");
|
return parseOctNumber("\"0O\"");
|
||||||
case 'b':
|
case 'b':
|
||||||
context.file.sbumpc();
|
context.file.sbumpc();
|
||||||
return parseBinNumber("0b");
|
return parseBinNumber("\"0b\"");
|
||||||
case 'B':
|
case 'B':
|
||||||
context.file.sbumpc();
|
context.file.sbumpc();
|
||||||
return parseBinNumber("0B");
|
return parseBinNumber("\"0B");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return parseDecNumber(c);
|
return parseDecNumber(c);
|
||||||
@@ -284,11 +284,11 @@ yy::parser::symbol_type yylex() {
|
|||||||
} else if (c == '"') {
|
} else if (c == '"') {
|
||||||
return parseString();
|
return parseString();
|
||||||
} else if (c == '$') {
|
} else if (c == '$') {
|
||||||
return parseHexNumber("$");
|
return parseHexNumber("'$'");
|
||||||
} else if (c == '%') {
|
} else if (c == '%') {
|
||||||
return parseBinNumber("%");
|
return parseBinNumber("'%'");
|
||||||
} else if (c == '&') {
|
} else if (c == '&') {
|
||||||
return parseOctNumber("&");
|
return parseOctNumber("'&'");
|
||||||
} else if (isDecDigit(c)) {
|
} else if (isDecDigit(c)) {
|
||||||
return parseNumber(c);
|
return parseNumber(c);
|
||||||
} else if (isIdentChar(c)) { // Note that we match these *after* digit characters!
|
} else if (isIdentChar(c)) { // Note that we match these *after* digit characters!
|
||||||
@@ -320,7 +320,7 @@ yy::parser::symbol_type yylex() {
|
|||||||
return search->second();
|
return search->second();
|
||||||
}
|
}
|
||||||
|
|
||||||
lexer_Error("Unknown keyword \"%s\"", ident.c_str());
|
lexer_Error("Unknown keyword `%s`", ident.c_str());
|
||||||
return yylex();
|
return yylex();
|
||||||
} else {
|
} else {
|
||||||
lexer_Error("Unexpected character %s", printChar(c));
|
lexer_Error("Unexpected character %s", printChar(c));
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ static void parseScrambleSpec(char *spec) {
|
|||||||
spec = regionName + regionNameSkipLen;
|
spec = regionName + regionNameSkipLen;
|
||||||
|
|
||||||
if (*spec != '=' && *spec != ',' && *spec != '\0') {
|
if (*spec != '=' && *spec != ',' && *spec != '\0') {
|
||||||
fatal("Unexpected character %s in spec for option 'S'", printChar(*spec));
|
fatal("Unexpected character %s in spec for option '-S'", printChar(*spec));
|
||||||
}
|
}
|
||||||
|
|
||||||
char *regionSize = nullptr;
|
char *regionSize = nullptr;
|
||||||
@@ -225,7 +225,7 @@ static void parseScrambleSpec(char *spec) {
|
|||||||
spec = regionSize + regionSizeSkipLen;
|
spec = regionSize + regionSizeSkipLen;
|
||||||
|
|
||||||
if (*spec != ',' && *spec != '\0') {
|
if (*spec != ',' && *spec != '\0') {
|
||||||
fatal("Unexpected character %s in spec for option 'S'", printChar(*spec));
|
fatal("Unexpected character %s in spec for option '-S'", printChar(*spec));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,16 +248,16 @@ static void parseScrambleSpec(char *spec) {
|
|||||||
// and whitespace before the next iteration, we guarantee that the region name will not be
|
// and whitespace before the next iteration, we guarantee that the region name will not be
|
||||||
// empty if it is present at all.
|
// empty if it is present at all.
|
||||||
if (*regionName == '\0') {
|
if (*regionName == '\0') {
|
||||||
fatal("Empty region name in spec for option 'S'");
|
fatal("Empty region name in spec for option '-S'");
|
||||||
}
|
}
|
||||||
if (regionSize && *regionSize == '\0') {
|
if (regionSize && *regionSize == '\0') {
|
||||||
fatal("Empty region size limit in spec for option 'S'");
|
fatal("Empty region size limit in spec for option '-S'");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine which region type this is.
|
// Determine which region type this is.
|
||||||
auto search = scrambleSpecs.find(regionName);
|
auto search = scrambleSpecs.find(regionName);
|
||||||
if (search == scrambleSpecs.end()) {
|
if (search == scrambleSpecs.end()) {
|
||||||
fatal("Unknown region name \"%s\" in spec for option 'S'", regionName);
|
fatal("Unknown region name \"%s\" in spec for option '-S'", regionName);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t limit = search->second.second;
|
uint16_t limit = search->second.second;
|
||||||
@@ -266,11 +266,11 @@ static void parseScrambleSpec(char *spec) {
|
|||||||
unsigned long value = strtoul(regionSize, &endptr, 0);
|
unsigned long value = strtoul(regionSize, &endptr, 0);
|
||||||
|
|
||||||
if (*endptr != '\0') {
|
if (*endptr != '\0') {
|
||||||
fatal("Invalid region size limit \"%s\" for option 'S'", regionSize);
|
fatal("Invalid region size limit \"%s\" for option '-S'", regionSize);
|
||||||
}
|
}
|
||||||
if (value > limit) {
|
if (value > limit) {
|
||||||
fatal(
|
fatal(
|
||||||
"%s region size for option 'S' must be between 0 and %" PRIu16,
|
"%s region size for option '-S' must be between 0 and %" PRIu16,
|
||||||
search->first.c_str(),
|
search->first.c_str(),
|
||||||
limit
|
limit
|
||||||
);
|
);
|
||||||
@@ -279,11 +279,11 @@ static void parseScrambleSpec(char *spec) {
|
|||||||
limit = value;
|
limit = value;
|
||||||
} else if (search->second.first != &options.scrambleWRAMX) {
|
} else if (search->second.first != &options.scrambleWRAMX) {
|
||||||
// Only WRAMX limit can be implied, since ROMX and SRAM size may vary.
|
// Only WRAMX limit can be implied, since ROMX and SRAM size may vary.
|
||||||
fatal("Missing %s region size limit for option 'S'", search->first.c_str());
|
fatal("Missing %s region size limit for option '-S'", search->first.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*search->second.first != limit && *search->second.first != 0) {
|
if (*search->second.first != limit && *search->second.first != 0) {
|
||||||
warnx("Overriding %s region size limit for option 'S'", search->first.c_str());
|
warnx("Overriding %s region size limit for option '-S'", search->first.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the scrambling region size limit.
|
// Update the scrambling region size limit.
|
||||||
@@ -303,10 +303,10 @@ int main(int argc, char *argv[]) {
|
|||||||
char *endptr;
|
char *endptr;
|
||||||
warnings.traceDepth = strtoul(musl_optarg, &endptr, 0);
|
warnings.traceDepth = strtoul(musl_optarg, &endptr, 0);
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'B'");
|
fatal("Invalid argument for option '-B'");
|
||||||
}
|
}
|
||||||
if (warnings.traceDepth >= UINT64_MAX) {
|
if (warnings.traceDepth >= UINT64_MAX) {
|
||||||
fatal("Argument for option 'B' is too large");
|
fatal("Argument for option '-B' is too large");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -318,7 +318,7 @@ int main(int argc, char *argv[]) {
|
|||||||
usage.printAndExit(0); // LCOV_EXCL_LINE
|
usage.printAndExit(0); // LCOV_EXCL_LINE
|
||||||
case 'l':
|
case 'l':
|
||||||
if (linkerScriptName) {
|
if (linkerScriptName) {
|
||||||
warnx("Overriding linker script %s", linkerScriptName);
|
warnx("Overriding linker script file \"%s\"", linkerScriptName);
|
||||||
}
|
}
|
||||||
linkerScriptName = musl_optarg;
|
linkerScriptName = musl_optarg;
|
||||||
break;
|
break;
|
||||||
@@ -327,25 +327,25 @@ int main(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
if (options.mapFileName) {
|
if (options.mapFileName) {
|
||||||
warnx("Overriding map file %s", options.mapFileName);
|
warnx("Overriding map file \"%s\"", options.mapFileName);
|
||||||
}
|
}
|
||||||
options.mapFileName = musl_optarg;
|
options.mapFileName = musl_optarg;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
if (options.symFileName) {
|
if (options.symFileName) {
|
||||||
warnx("Overriding sym file %s", options.symFileName);
|
warnx("Overriding sym file \"%s\"", options.symFileName);
|
||||||
}
|
}
|
||||||
options.symFileName = musl_optarg;
|
options.symFileName = musl_optarg;
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
if (options.overlayFileName) {
|
if (options.overlayFileName) {
|
||||||
warnx("Overriding overlay file %s", options.overlayFileName);
|
warnx("Overriding overlay file \"%s\"", options.overlayFileName);
|
||||||
}
|
}
|
||||||
options.overlayFileName = musl_optarg;
|
options.overlayFileName = musl_optarg;
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
if (options.outputFileName) {
|
if (options.outputFileName) {
|
||||||
warnx("Overriding output file %s", options.outputFileName);
|
warnx("Overriding output file \"%s\"", options.outputFileName);
|
||||||
}
|
}
|
||||||
options.outputFileName = musl_optarg;
|
options.outputFileName = musl_optarg;
|
||||||
break;
|
break;
|
||||||
@@ -354,10 +354,10 @@ int main(int argc, char *argv[]) {
|
|||||||
unsigned long value = strtoul(musl_optarg, &endptr, 0);
|
unsigned long value = strtoul(musl_optarg, &endptr, 0);
|
||||||
|
|
||||||
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
if (musl_optarg[0] == '\0' || *endptr != '\0') {
|
||||||
fatal("Invalid argument for option 'p'");
|
fatal("Invalid argument for option '-p'");
|
||||||
}
|
}
|
||||||
if (value > 0xFF) {
|
if (value > 0xFF) {
|
||||||
fatal("Argument for option 'p' must be between 0 and 0xFF");
|
fatal("Argument for option '-p' must be between 0 and 0xFF");
|
||||||
}
|
}
|
||||||
|
|
||||||
options.padValue = value;
|
options.padValue = value;
|
||||||
@@ -410,7 +410,7 @@ int main(int argc, char *argv[]) {
|
|||||||
verboseOutputConfig(argc, argv);
|
verboseOutputConfig(argc, argv);
|
||||||
|
|
||||||
if (musl_optind == argc) {
|
if (musl_optind == argc) {
|
||||||
usage.printAndExit("No input file specified (pass `-` to read from standard input)");
|
usage.printAndExit("No input file specified (pass \"-\" to read from standard input)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Patch the size array depending on command-line options
|
// Patch the size array depending on command-line options
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ static void readFileStackNode(
|
|||||||
uint32_t depth;
|
uint32_t depth;
|
||||||
case NODE_REPT:
|
case NODE_REPT:
|
||||||
tryReadLong(
|
tryReadLong(
|
||||||
depth, file, "%s: Cannot read node #%" PRIu32 "'s rept depth: %s", fileName, nodeID
|
depth, file, "%s: Cannot read node #%" PRIu32 "'s REPT depth: %s", fileName, nodeID
|
||||||
);
|
);
|
||||||
node.data = std::vector<uint32_t>(depth);
|
node.data = std::vector<uint32_t>(depth);
|
||||||
for (uint32_t i = 0; i < depth; ++i) {
|
for (uint32_t i = 0; i < depth; ++i) {
|
||||||
@@ -140,7 +140,7 @@ static void readFileStackNode(
|
|||||||
}
|
}
|
||||||
if (!node.parent) {
|
if (!node.parent) {
|
||||||
fatal(
|
fatal(
|
||||||
"%s is not a valid object file: root node (#%" PRIu32 ") may not be REPT",
|
"%s: Invalid object file: root node (#%" PRIu32 ") may not be REPT",
|
||||||
fileName,
|
fileName,
|
||||||
nodeID
|
nodeID
|
||||||
);
|
);
|
||||||
@@ -157,7 +157,7 @@ static void readSymbol(
|
|||||||
ExportLevel,
|
ExportLevel,
|
||||||
symbol.type,
|
symbol.type,
|
||||||
file,
|
file,
|
||||||
"%s: Cannot read \"%s\"'s type: %s",
|
"%s: Cannot read `%s`'s type: %s",
|
||||||
fileName,
|
fileName,
|
||||||
symbol.name.c_str()
|
symbol.name.c_str()
|
||||||
);
|
);
|
||||||
@@ -165,27 +165,21 @@ static void readSymbol(
|
|||||||
if (symbol.type != SYMTYPE_IMPORT) {
|
if (symbol.type != SYMTYPE_IMPORT) {
|
||||||
uint32_t nodeID;
|
uint32_t nodeID;
|
||||||
tryReadLong(
|
tryReadLong(
|
||||||
nodeID, file, "%s: Cannot read \"%s\"'s node ID: %s", fileName, symbol.name.c_str()
|
nodeID, file, "%s: Cannot read `%s`'s node ID: %s", fileName, symbol.name.c_str()
|
||||||
);
|
);
|
||||||
symbol.src = &fileNodes[nodeID];
|
symbol.src = &fileNodes[nodeID];
|
||||||
tryReadLong(
|
tryReadLong(
|
||||||
symbol.lineNo,
|
symbol.lineNo,
|
||||||
file,
|
file,
|
||||||
"%s: Cannot read \"%s\"'s line number: %s",
|
"%s: Cannot read `%s`'s line number: %s",
|
||||||
fileName,
|
fileName,
|
||||||
symbol.name.c_str()
|
symbol.name.c_str()
|
||||||
);
|
);
|
||||||
int32_t sectionID, value;
|
int32_t sectionID, value;
|
||||||
tryReadLong(
|
tryReadLong(
|
||||||
sectionID,
|
sectionID, file, "%s: Cannot read `%s`'s section ID: %s", fileName, symbol.name.c_str()
|
||||||
file,
|
|
||||||
"%s: Cannot read \"%s\"'s section ID: %s",
|
|
||||||
fileName,
|
|
||||||
symbol.name.c_str()
|
|
||||||
);
|
|
||||||
tryReadLong(
|
|
||||||
value, file, "%s: Cannot read \"%s\"'s value: %s", fileName, symbol.name.c_str()
|
|
||||||
);
|
);
|
||||||
|
tryReadLong(value, file, "%s: Cannot read `%s`'s value: %s", fileName, symbol.name.c_str());
|
||||||
if (sectionID == -1) {
|
if (sectionID == -1) {
|
||||||
symbol.data = value;
|
symbol.data = value;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
if (Symbol const *symbol = getSymbol(fileSymbols, value); !symbol) {
|
if (Symbol const *symbol = getSymbol(fileSymbols, value); !symbol) {
|
||||||
errorAt(
|
errorAt(
|
||||||
patch,
|
patch,
|
||||||
"Requested BANK() of undefined symbol \"%s\"",
|
"Requested `BANK()` of undefined symbol `%s`",
|
||||||
fileSymbols[value].name.c_str()
|
fileSymbols[value].name.c_str()
|
||||||
);
|
);
|
||||||
isError = true;
|
isError = true;
|
||||||
@@ -287,7 +287,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
} else {
|
} else {
|
||||||
errorAt(
|
errorAt(
|
||||||
patch,
|
patch,
|
||||||
"Requested BANK() of non-label symbol \"%s\"",
|
"Requested `BANK()` of non-label symbol `%s`",
|
||||||
fileSymbols[value].name.c_str()
|
fileSymbols[value].name.c_str()
|
||||||
);
|
);
|
||||||
isError = true;
|
isError = true;
|
||||||
@@ -302,7 +302,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
while (getRPNByte(expression, size, patch)) {}
|
while (getRPNByte(expression, size, patch)) {}
|
||||||
|
|
||||||
if (Section const *sect = sect_GetSection(name); !sect) {
|
if (Section const *sect = sect_GetSection(name); !sect) {
|
||||||
errorAt(patch, "Requested BANK() of undefined section \"%s\"", name);
|
errorAt(patch, "Requested `BANK()` of undefined section \"%s\"", name);
|
||||||
isError = true;
|
isError = true;
|
||||||
value = 1;
|
value = 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -327,7 +327,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
while (getRPNByte(expression, size, patch)) {}
|
while (getRPNByte(expression, size, patch)) {}
|
||||||
|
|
||||||
if (Section const *sect = sect_GetSection(name); !sect) {
|
if (Section const *sect = sect_GetSection(name); !sect) {
|
||||||
errorAt(patch, "Requested SIZEOF() of undefined section \"%s\"", name);
|
errorAt(patch, "Requested `SIZEOF()` of undefined section \"%s\"", name);
|
||||||
isError = true;
|
isError = true;
|
||||||
value = 1;
|
value = 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -342,7 +342,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
while (getRPNByte(expression, size, patch)) {}
|
while (getRPNByte(expression, size, patch)) {}
|
||||||
|
|
||||||
if (Section const *sect = sect_GetSection(name); !sect) {
|
if (Section const *sect = sect_GetSection(name); !sect) {
|
||||||
errorAt(patch, "Requested STARTOF() of undefined section \"%s\"", name);
|
errorAt(patch, "Requested `STARTOF()` of undefined section \"%s\"", name);
|
||||||
isError = true;
|
isError = true;
|
||||||
value = 1;
|
value = 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -355,7 +355,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
case RPN_SIZEOF_SECTTYPE:
|
case RPN_SIZEOF_SECTTYPE:
|
||||||
value = getRPNByte(expression, size, patch);
|
value = getRPNByte(expression, size, patch);
|
||||||
if (value < 0 || value >= SECTTYPE_INVALID) {
|
if (value < 0 || value >= SECTTYPE_INVALID) {
|
||||||
errorAt(patch, "Requested SIZEOF() an invalid section type");
|
errorAt(patch, "Requested `SIZEOF()` of an invalid section type");
|
||||||
isError = true;
|
isError = true;
|
||||||
value = 0;
|
value = 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -366,7 +366,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
case RPN_STARTOF_SECTTYPE:
|
case RPN_STARTOF_SECTTYPE:
|
||||||
value = getRPNByte(expression, size, patch);
|
value = getRPNByte(expression, size, patch);
|
||||||
if (value < 0 || value >= SECTTYPE_INVALID) {
|
if (value < 0 || value >= SECTTYPE_INVALID) {
|
||||||
errorAt(patch, "Requested STARTOF() an invalid section type");
|
errorAt(patch, "Requested `STARTOF()` of an invalid section type");
|
||||||
isError = true;
|
isError = true;
|
||||||
value = 0;
|
value = 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -379,7 +379,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
if (value < 0xFF00 || value > 0xFFFF) {
|
if (value < 0xFF00 || value > 0xFFFF) {
|
||||||
firstErrorAt(
|
firstErrorAt(
|
||||||
patch,
|
patch,
|
||||||
"Address $%" PRIx32 " for LDH is not in HRAM range; use LD instead",
|
"Address $%" PRIx32 " for `LDH` is not in HRAM range; use `LD` instead",
|
||||||
value
|
value
|
||||||
);
|
);
|
||||||
value = 0;
|
value = 0;
|
||||||
@@ -392,7 +392,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
// Acceptable values are 0x00, 0x08, 0x10, ..., 0x38
|
// Acceptable values are 0x00, 0x08, 0x10, ..., 0x38
|
||||||
if (value & ~0x38) {
|
if (value & ~0x38) {
|
||||||
firstErrorAt(
|
firstErrorAt(
|
||||||
patch, "Value $%" PRIx32 " is not a RST vector; use CALL instead", value
|
patch, "Value $%" PRIx32 " is not a `RST` vector; use `CALL` instead", value
|
||||||
);
|
);
|
||||||
value = 0;
|
value = 0;
|
||||||
}
|
}
|
||||||
@@ -433,7 +433,7 @@ static int32_t computeRPNExpr(Patch const &patch, std::vector<Symbol> const &fil
|
|||||||
isError = true;
|
isError = true;
|
||||||
}
|
}
|
||||||
} else if (Symbol const *symbol = getSymbol(fileSymbols, value); !symbol) {
|
} else if (Symbol const *symbol = getSymbol(fileSymbols, value); !symbol) {
|
||||||
errorAt(patch, "Undefined symbol \"%s\"", fileSymbols[value].name.c_str());
|
errorAt(patch, "Undefined symbol `%s`", fileSymbols[value].name.c_str());
|
||||||
sym_TraceLocalAliasedSymbols(fileSymbols[value].name);
|
sym_TraceLocalAliasedSymbols(fileSymbols[value].name);
|
||||||
isError = true;
|
isError = true;
|
||||||
} else if (std::holds_alternative<Label>(symbol->data)) {
|
} else if (std::holds_alternative<Label>(symbol->data)) {
|
||||||
@@ -538,8 +538,8 @@ static void applyFilePatches(Section §ion, Section &dataSection) {
|
|||||||
if (jumpOffset < -128 || jumpOffset > 127) {
|
if (jumpOffset < -128 || jumpOffset > 127) {
|
||||||
firstErrorAt(
|
firstErrorAt(
|
||||||
patch,
|
patch,
|
||||||
"JR target must be between -128 and 127 bytes away, not %" PRId16
|
"`JR` target must be between -128 and 127 bytes away, not %" PRId16
|
||||||
"; use JP instead",
|
"; use `JP` instead",
|
||||||
jumpOffset
|
jumpOffset
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ static void mergeSections(Section &target, std::unique_ptr<Section> &&other) {
|
|||||||
fatalTwoAt(
|
fatalTwoAt(
|
||||||
target,
|
target,
|
||||||
*other,
|
*other,
|
||||||
"Section \"%s\" is defined as SECTION %s, but also as SECTION %s",
|
"Section \"%s\" is defined as `SECTION %s`, but also as `SECTION %s`",
|
||||||
target.name.c_str(),
|
target.name.c_str(),
|
||||||
sectionModNames[target.modifier],
|
sectionModNames[target.modifier],
|
||||||
sectionModNames[other->modifier]
|
sectionModNames[other->modifier]
|
||||||
@@ -131,7 +131,7 @@ static void mergeSections(Section &target, std::unique_ptr<Section> &&other) {
|
|||||||
fatalTwoAt(
|
fatalTwoAt(
|
||||||
target,
|
target,
|
||||||
*other,
|
*other,
|
||||||
"Section \"%s\" is defined with type %s, but also with type %s",
|
"Section \"%s\" is defined with type `%s`, but also with type `%s`",
|
||||||
target.name.c_str(),
|
target.name.c_str(),
|
||||||
sectionTypeInfo[target.type].name.c_str(),
|
sectionTypeInfo[target.type].name.c_str(),
|
||||||
sectionTypeInfo[other->type].name.c_str()
|
sectionTypeInfo[other->type].name.c_str()
|
||||||
@@ -197,7 +197,7 @@ void sect_AddSection(std::unique_ptr<Section> &§ion) {
|
|||||||
mergeSections(*target, std::move(section));
|
mergeSections(*target, std::move(section));
|
||||||
} else if (section->modifier == SECTION_UNION && sect_HasData(section->type)) {
|
} else if (section->modifier == SECTION_UNION && sect_HasData(section->type)) {
|
||||||
fatal(
|
fatal(
|
||||||
"Section \"%s\" is of type %s, which cannot be unionized",
|
"Section \"%s\" is of type `%s`, which cannot be `UNION`ized",
|
||||||
section->name.c_str(),
|
section->name.c_str(),
|
||||||
sectionTypeInfo[section->type].name.c_str()
|
sectionTypeInfo[section->type].name.c_str()
|
||||||
);
|
);
|
||||||
@@ -227,7 +227,7 @@ static void doSanityChecks(Section §ion) {
|
|||||||
if (options.is32kMode && section.type == SECTTYPE_ROMX) {
|
if (options.is32kMode && section.type == SECTTYPE_ROMX) {
|
||||||
if (section.isBankFixed && section.bank != 1) {
|
if (section.isBankFixed && section.bank != 1) {
|
||||||
error(
|
error(
|
||||||
"Section \"%s\" has type ROMX, which must be in bank 1 (if any) with option `-t`",
|
"Section \"%s\" has type `ROMX`, which must be in bank 1 (if any) with option '-t'",
|
||||||
section.name.c_str()
|
section.name.c_str()
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@@ -237,7 +237,8 @@ static void doSanityChecks(Section §ion) {
|
|||||||
if (options.isWRAM0Mode && section.type == SECTTYPE_WRAMX) {
|
if (options.isWRAM0Mode && section.type == SECTTYPE_WRAMX) {
|
||||||
if (section.isBankFixed && section.bank != 1) {
|
if (section.isBankFixed && section.bank != 1) {
|
||||||
error(
|
error(
|
||||||
"Section \"%s\" has type WRAMX, which must be in bank 1 with options `-w` or `-d`",
|
"Section \"%s\" has type `WRAMX`, which must be in bank 1 with options '-w' or "
|
||||||
|
"'-d'",
|
||||||
section.name.c_str()
|
section.name.c_str()
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@@ -246,7 +247,7 @@ static void doSanityChecks(Section §ion) {
|
|||||||
}
|
}
|
||||||
if (options.isDmgMode && section.type == SECTTYPE_VRAM && section.bank == 1) {
|
if (options.isDmgMode && section.type == SECTTYPE_VRAM && section.bank == 1) {
|
||||||
error(
|
error(
|
||||||
"Section \"%s\" has type VRAM, which must be in bank 0 with option `-d`",
|
"Section \"%s\" has type `VRAM`, which must be in bank 0 with option '-d'",
|
||||||
section.name.c_str()
|
section.name.c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -260,7 +261,7 @@ static void doSanityChecks(Section §ion) {
|
|||||||
// Too large an alignment may not be satisfiable
|
// Too large an alignment may not be satisfiable
|
||||||
if (section.isAlignFixed && (section.alignMask & sectionTypeInfo[section.type].startAddr)) {
|
if (section.isAlignFixed && (section.alignMask & sectionTypeInfo[section.type].startAddr)) {
|
||||||
error(
|
error(
|
||||||
"Section \"%s\" has type %s, which cannot be aligned to $%04x bytes",
|
"Section \"%s\" has type `%s`, which cannot be aligned to $%04x bytes",
|
||||||
section.name.c_str(),
|
section.name.c_str(),
|
||||||
sectionTypeInfo[section.type].name.c_str(),
|
sectionTypeInfo[section.type].name.c_str(),
|
||||||
section.alignMask + 1
|
section.alignMask + 1
|
||||||
@@ -305,7 +306,7 @@ static void doSanityChecks(Section §ion) {
|
|||||||
if (section.isAlignFixed) {
|
if (section.isAlignFixed) {
|
||||||
if ((section.org & section.alignMask) != section.alignOfs) {
|
if ((section.org & section.alignMask) != section.alignOfs) {
|
||||||
error(
|
error(
|
||||||
"Section \"%s\"'s fixed address doesn't match its alignment",
|
"Section \"%s\"'s fixed address does not match its alignment",
|
||||||
section.name.c_str()
|
section.name.c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ void sym_AddSymbol(Symbol &symbol) {
|
|||||||
fatalTwoAt(
|
fatalTwoAt(
|
||||||
symbol,
|
symbol,
|
||||||
*other,
|
*other,
|
||||||
"\"%s\" is defined as %s, but also as %s",
|
"`%s` is defined as %s, but also as %s",
|
||||||
symbol.name.c_str(),
|
symbol.name.c_str(),
|
||||||
symDef.c_str(),
|
symDef.c_str(),
|
||||||
otherDef.c_str()
|
otherDef.c_str()
|
||||||
|
|||||||
@@ -89,11 +89,11 @@ void Usage::printAndExit(int code) const {
|
|||||||
|
|
||||||
// Print the link for further help information
|
// Print the link for further help information
|
||||||
style_Reset(file);
|
style_Reset(file);
|
||||||
fputs("\nFor more help, use `", file);
|
fputs("\nFor more help, use \"", file);
|
||||||
style_Set(file, STYLE_CYAN, true);
|
style_Set(file, STYLE_CYAN, true);
|
||||||
fprintf(file, "man %s", name.c_str());
|
fprintf(file, "man %s", name.c_str());
|
||||||
style_Reset(file);
|
style_Reset(file);
|
||||||
fputs("' or go to ", file);
|
fputs("\" or go to ", file);
|
||||||
style_Set(file, STYLE_BLUE, true);
|
style_Set(file, STYLE_BLUE, true);
|
||||||
fputs("https://rgbds.gbdev.io/docs/", file);
|
fputs("https://rgbds.gbdev.io/docs/", file);
|
||||||
style_Reset(file);
|
style_Reset(file);
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Cannot output data outside of a SECTION
|
error: Cannot output data outside of a `SECTION`
|
||||||
at align-pc-outside-section.asm(1)
|
at align-pc-outside-section.asm(1)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
error: Label "!0" created outside of a SECTION
|
error: Label `!0` created outside of a `SECTION`
|
||||||
at anon-label-bad.asm(2)
|
at anon-label-bad.asm(2)
|
||||||
error: Reference to anonymous label 2 before, when only 1 has been created so far
|
error: Reference to anonymous label 2 before, when only 1 has been created so far
|
||||||
at anon-label-bad.asm(6)
|
at anon-label-bad.asm(6)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ error: Assertion failed: @ ain't 0 now? (Hint: it's $1)
|
|||||||
at assert.asm(7)
|
at assert.asm(7)
|
||||||
warning: Assertion failed [-Wassert]
|
warning: Assertion failed [-Wassert]
|
||||||
at assert.asm(10)
|
at assert.asm(10)
|
||||||
error: Expected constant expression: 'FloatingBase' is not constant at assembly time
|
error: Expected constant expression: `FloatingBase` is not constant at assembly time
|
||||||
at assert.asm(18)
|
at assert.asm(18)
|
||||||
error: Assertion failed
|
error: Assertion failed
|
||||||
at assert.asm(18)
|
at assert.asm(18)
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
error: Expected constant expression: Section "ROMX_ok1"'s bank is not known
|
error: Expected constant expression: Section "ROMX_ok1"'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(13)
|
at bank.asm::def_sect(8) <- bank.asm(13)
|
||||||
error: Expected constant expression: "Label_u3"'s bank is not known
|
error: Expected constant expression: `Label_u3`'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(13)
|
at bank.asm::def_sect(8) <- bank.asm(13)
|
||||||
error: Expected constant expression: Section "ROMX_bad"'s bank is not known
|
error: Expected constant expression: Section "ROMX_bad"'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(15)
|
at bank.asm::def_sect(8) <- bank.asm(15)
|
||||||
error: Expected constant expression: "Label_u5"'s bank is not known
|
error: Expected constant expression: `Label_u5`'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(15)
|
at bank.asm::def_sect(8) <- bank.asm(15)
|
||||||
error: Expected constant expression: Section "VRAM_bad"'s bank is not known
|
error: Expected constant expression: Section "VRAM_bad"'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(17)
|
at bank.asm::def_sect(8) <- bank.asm(17)
|
||||||
error: Expected constant expression: "Label_u7"'s bank is not known
|
error: Expected constant expression: `Label_u7`'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(17)
|
at bank.asm::def_sect(8) <- bank.asm(17)
|
||||||
error: Expected constant expression: Section "SRAM_bad"'s bank is not known
|
error: Expected constant expression: Section "SRAM_bad"'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(19)
|
at bank.asm::def_sect(8) <- bank.asm(19)
|
||||||
error: Expected constant expression: "Label_u9"'s bank is not known
|
error: Expected constant expression: `Label_u9`'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(19)
|
at bank.asm::def_sect(8) <- bank.asm(19)
|
||||||
error: Expected constant expression: Section "WRAMX_bad"'s bank is not known
|
error: Expected constant expression: Section "WRAMX_bad"'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(22)
|
at bank.asm::def_sect(8) <- bank.asm(22)
|
||||||
error: Expected constant expression: "Label_u12"'s bank is not known
|
error: Expected constant expression: `Label_u12`'s bank is not known
|
||||||
at bank.asm::def_sect(8) <- bank.asm(22)
|
at bank.asm::def_sect(8) <- bank.asm(22)
|
||||||
error: BANK argument must be a label
|
error: `BANK` argument must be a label
|
||||||
at bank.asm(26)
|
at bank.asm(26)
|
||||||
Assembly aborted with 11 errors!
|
Assembly aborted with 11 errors!
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
warning: /* in block comment [-Wnested-comment]
|
warning: "/*" in block comment [-Wnested-comment]
|
||||||
at block-comment-contents-error.asm(1)
|
at block-comment-contents-error.asm(1)
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ error: syntax error, unexpected number
|
|||||||
at blue-paint.asm::endless(24) <- blue-paint.asm(26)
|
at blue-paint.asm::endless(24) <- blue-paint.asm(26)
|
||||||
FATAL: Recursion limit (5) exceeded
|
FATAL: Recursion limit (5) exceeded
|
||||||
at blue-paint.asm(30)
|
at blue-paint.asm(30)
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
while expanding symbol "infinite"
|
while expanding symbol `infinite`
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
error: Bracketed symbol "nonnumeric" is not numeric
|
error: Bracketed symbol `nonnumeric` is not numeric
|
||||||
at bracketed-macro-args.asm::bad(26) <- bracketed-macro-args.asm(33)
|
at bracketed-macro-args.asm::bad(26) <- bracketed-macro-args.asm(33)
|
||||||
error: Invalid bracketed macro argument '\<0>'
|
error: Invalid bracketed macro argument "\<0>"
|
||||||
at bracketed-macro-args.asm::bad(27) <- bracketed-macro-args.asm(33)
|
at bracketed-macro-args.asm::bad(27) <- bracketed-macro-args.asm(33)
|
||||||
error: Bracketed symbol "undefined" does not exist
|
error: Bracketed symbol `undefined` does not exist
|
||||||
at bracketed-macro-args.asm::bad(28) <- bracketed-macro-args.asm(33)
|
at bracketed-macro-args.asm::bad(28) <- bracketed-macro-args.asm(33)
|
||||||
error: Macro argument '\<2>' not defined
|
error: Macro argument `\<2>` not defined
|
||||||
at bracketed-macro-args.asm::bad(29) <- bracketed-macro-args.asm(33)
|
at bracketed-macro-args.asm::bad(29) <- bracketed-macro-args.asm(33)
|
||||||
error: Macro argument '\<2>' not defined
|
error: Macro argument `\<2>` not defined
|
||||||
at bracketed-macro-args.asm::bad(30) <- bracketed-macro-args.asm(33)
|
at bracketed-macro-args.asm::bad(30) <- bracketed-macro-args.asm(33)
|
||||||
error: Bracketed symbol "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" does not exist
|
error: Bracketed symbol `abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz` does not exist
|
||||||
at bracketed-macro-args.asm::toolong(36) <- bracketed-macro-args.asm(39)
|
at bracketed-macro-args.asm::toolong(36) <- bracketed-macro-args.asm(39)
|
||||||
Assembly aborted with 6 errors!
|
Assembly aborted with 6 errors!
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
error: Formatting string as type 'X'
|
error: Formatting string as type 'X'
|
||||||
at bracketed-symbols.asm(16)
|
at bracketed-symbols.asm(16)
|
||||||
error: "Label" does not have a constant value
|
error: `Label` does not have a constant value
|
||||||
at bracketed-symbols.asm(20)
|
at bracketed-symbols.asm(20)
|
||||||
error: PC does not have a constant value; the current section is not fixed
|
error: PC does not have a constant value; the current section is not fixed
|
||||||
at bracketed-symbols.asm(21)
|
at bracketed-symbols.asm(21)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ warning: done 5 [-Wuser]
|
|||||||
at break.asm(9)
|
at break.asm(9)
|
||||||
warning: OK [-Wuser]
|
warning: OK [-Wuser]
|
||||||
at break.asm(28)
|
at break.asm(28)
|
||||||
error: BREAK can only be used inside a REPT/FOR block
|
error: `BREAK` can only be used inside a loop (`REPT`/`FOR` block)
|
||||||
at break.asm(29)
|
at break.asm(29)
|
||||||
FATAL: Ended block with 1 unterminated IF construct
|
FATAL: Ended block with 1 unterminated conditional (`IF`/`ELIF`/`ELSE` block)
|
||||||
at break.asm::REPT~1(34) <- break.asm(30)
|
at break.asm::REPT~1(34) <- break.asm(30)
|
||||||
|
|||||||
@@ -1,57 +1,57 @@
|
|||||||
error: Built-in symbol '__UTC_YEAR__' cannot be purged
|
error: Built-in symbol `__UTC_YEAR__` cannot be purged
|
||||||
at builtin-overwrite.asm::tickle(5) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(5) <- builtin-overwrite.asm(36)
|
||||||
error: Built-in symbol '__UTC_YEAR__' cannot be purged
|
error: Built-in symbol `__UTC_YEAR__` cannot be purged
|
||||||
at builtin-overwrite.asm::tickle(6) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(6) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in
|
error: `__UTC_YEAR__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(9) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(9) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in
|
error: `__UTC_YEAR__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(10) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(10) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in constant
|
error: `__UTC_YEAR__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(13) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(13) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in constant
|
error: `__UTC_YEAR__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(14) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(14) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in
|
error: `__UTC_YEAR__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(17) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(17) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in
|
error: `__UTC_YEAR__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(18) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(18) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in constant
|
error: `__UTC_YEAR__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(21) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(21) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in constant
|
error: `__UTC_YEAR__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(22) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(22) <- builtin-overwrite.asm(36)
|
||||||
error: Built-in symbol '__UTC_YEAR__' cannot be redefined
|
error: Built-in symbol `__UTC_YEAR__` cannot be redefined
|
||||||
at builtin-overwrite.asm::tickle(25) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(25) <- builtin-overwrite.asm(36)
|
||||||
error: Built-in symbol '__UTC_YEAR__' cannot be redefined
|
error: Built-in symbol `__UTC_YEAR__` cannot be redefined
|
||||||
at builtin-overwrite.asm::tickle(26) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(26) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in non-EQUS
|
error: `__UTC_YEAR__` already defined as built-in non-`EQUS`
|
||||||
at builtin-overwrite.asm::tickle(29) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(29) <- builtin-overwrite.asm(36)
|
||||||
error: '__UTC_YEAR__' already defined as built-in non-EQUS
|
error: `__UTC_YEAR__` already defined as built-in non-`EQUS`
|
||||||
at builtin-overwrite.asm::tickle(30) <- builtin-overwrite.asm(36)
|
at builtin-overwrite.asm::tickle(30) <- builtin-overwrite.asm(36)
|
||||||
error: Built-in symbol '__ISO_8601_UTC__' cannot be purged
|
error: Built-in symbol `__ISO_8601_UTC__` cannot be purged
|
||||||
at builtin-overwrite.asm::tickle(5) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(5) <- builtin-overwrite.asm(37)
|
||||||
error: Built-in symbol '__ISO_8601_UTC__' cannot be purged
|
error: Built-in symbol `__ISO_8601_UTC__` cannot be purged
|
||||||
at builtin-overwrite.asm::tickle(6) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(6) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in
|
error: `__ISO_8601_UTC__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(9) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(9) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in
|
error: `__ISO_8601_UTC__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(10) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(10) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in constant
|
error: `__ISO_8601_UTC__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(13) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(13) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in constant
|
error: `__ISO_8601_UTC__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(14) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(14) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in
|
error: `__ISO_8601_UTC__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(17) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(17) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in
|
error: `__ISO_8601_UTC__` already defined as built-in
|
||||||
at builtin-overwrite.asm::tickle(18) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(18) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in constant
|
error: `__ISO_8601_UTC__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(21) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(21) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in constant
|
error: `__ISO_8601_UTC__` already defined as built-in constant
|
||||||
at builtin-overwrite.asm::tickle(22) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(22) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in non-EQU
|
error: `__ISO_8601_UTC__` already defined as built-in non-`EQU`
|
||||||
at builtin-overwrite.asm::tickle(25) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(25) <- builtin-overwrite.asm(37)
|
||||||
error: '__ISO_8601_UTC__' already defined as built-in non-EQU
|
error: `__ISO_8601_UTC__` already defined as built-in non-`EQU`
|
||||||
at builtin-overwrite.asm::tickle(26) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(26) <- builtin-overwrite.asm(37)
|
||||||
error: Built-in symbol '__ISO_8601_UTC__' cannot be redefined
|
error: Built-in symbol `__ISO_8601_UTC__` cannot be redefined
|
||||||
at builtin-overwrite.asm::tickle(29) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(29) <- builtin-overwrite.asm(37)
|
||||||
error: Built-in symbol '__ISO_8601_UTC__' cannot be redefined
|
error: Built-in symbol `__ISO_8601_UTC__` cannot be redefined
|
||||||
at builtin-overwrite.asm::tickle(30) <- builtin-overwrite.asm(37)
|
at builtin-overwrite.asm::tickle(30) <- builtin-overwrite.asm(37)
|
||||||
Assembly aborted with 28 errors!
|
Assembly aborted with 28 errors!
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
error: Undefined symbol '_NARG'
|
error: Undefined symbol `_NARG`
|
||||||
at builtin-reserved.asm(3)
|
at builtin-reserved.asm(3)
|
||||||
error: '_NARG' is reserved for a built-in symbol
|
error: `_NARG` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(5)
|
at builtin-reserved.asm(5)
|
||||||
error: '_NARG' is reserved for a built-in symbol
|
error: `_NARG` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(6)
|
at builtin-reserved.asm(6)
|
||||||
error: '_NARG' is reserved for a built-in constant symbol
|
error: `_NARG` is reserved for a built-in constant symbol
|
||||||
at builtin-reserved.asm(8)
|
at builtin-reserved.asm(8)
|
||||||
error: '_NARG' is reserved for a built-in constant symbol
|
error: `_NARG` is reserved for a built-in constant symbol
|
||||||
at builtin-reserved.asm(9)
|
at builtin-reserved.asm(9)
|
||||||
error: '_NARG' is reserved for a built-in symbol
|
error: `_NARG` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(11)
|
at builtin-reserved.asm(11)
|
||||||
error: '_NARG' is reserved for a built-in non-EQUS symbol
|
error: `_NARG` is reserved for a built-in non-`EQUS` symbol
|
||||||
at builtin-reserved.asm(12)
|
at builtin-reserved.asm(12)
|
||||||
error: '_NARG' is reserved for a built-in symbol
|
error: `_NARG` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(15)
|
at builtin-reserved.asm(15)
|
||||||
error: Undefined symbol '.'
|
error: Undefined symbol `.`
|
||||||
at builtin-reserved.asm(20)
|
at builtin-reserved.asm(20)
|
||||||
error: '.' is reserved for a built-in symbol
|
error: `.` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(22)
|
at builtin-reserved.asm(22)
|
||||||
error: '.' is reserved for a built-in non-EQU symbol
|
error: `.` is reserved for a built-in non-`EQU` symbol
|
||||||
at builtin-reserved.asm(23)
|
at builtin-reserved.asm(23)
|
||||||
error: '.' is reserved for a built-in constant symbol
|
error: `.` is reserved for a built-in constant symbol
|
||||||
at builtin-reserved.asm(25)
|
at builtin-reserved.asm(25)
|
||||||
error: '.' is reserved for a built-in constant symbol
|
error: `.` is reserved for a built-in constant symbol
|
||||||
at builtin-reserved.asm(26)
|
at builtin-reserved.asm(26)
|
||||||
error: '.' is reserved for a built-in symbol
|
error: `.` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(28)
|
at builtin-reserved.asm(28)
|
||||||
error: '.' is reserved for a built-in symbol
|
error: `.` is reserved for a built-in symbol
|
||||||
at builtin-reserved.asm(29)
|
at builtin-reserved.asm(29)
|
||||||
error: "." has no value outside of a label scope
|
error: `.` has no value outside of a label scope
|
||||||
at builtin-reserved.asm(32)
|
at builtin-reserved.asm(32)
|
||||||
Assembly aborted with 16 errors!
|
Assembly aborted with 16 errors!
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
error: Illegal character escape at end of input
|
error: Illegal character escape '\' at end of input
|
||||||
at character-escape-at-end.asm(1)
|
at character-escape-at-end.asm(1)
|
||||||
error: Unterminated string
|
error: Unterminated string
|
||||||
at character-escape-at-end.asm(1)
|
at character-escape-at-end.asm(1)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Base charmap 'eggs' doesn't exist
|
error: Undefined base charmap `eggs`
|
||||||
at charmap-inheritance.asm(26)
|
at charmap-inheritance.asm(26)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
error: syntax error, unexpected PRINTLN, expecting end of line or end of buffer or end of fragment literal
|
error: syntax error, unexpected PRINTLN, expecting end of line or end of buffer or end of fragment literal
|
||||||
at code-after-endm-endr-endc.asm(6)
|
at code-after-endm-endr-endc.asm(6)
|
||||||
error: Undefined macro "mac"
|
error: Undefined macro `mac`
|
||||||
at code-after-endm-endr-endc.asm(7)
|
at code-after-endm-endr-endc.asm(7)
|
||||||
error: syntax error, unexpected PRINTLN, expecting end of line or end of buffer or end of fragment literal
|
error: syntax error, unexpected PRINTLN, expecting end of line or end of buffer or end of fragment literal
|
||||||
at code-after-endm-endr-endc.asm(12)
|
at code-after-endm-endr-endc.asm(12)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
error: 'FOO' already defined (should it be {interpolated} to define its contents "hello"?)
|
error: `FOO` already defined (should it be {interpolated} to define its contents "hello"?)
|
||||||
at command-line-symbols.asm(3)
|
at command-line-symbols.asm(3)
|
||||||
and also:
|
and also:
|
||||||
at <command-line>
|
at <command-line>
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Expected constant expression: 'UnDeFiNeD' is not constant at assembly time
|
error: Expected constant expression: `UnDeFiNeD` is not constant at assembly time
|
||||||
at compound-assignment.asm(35)
|
at compound-assignment.asm(35)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
error: PC has no value outside of a section
|
error: PC has no value outside of a section
|
||||||
at const-and.asm(2)
|
at const-and.asm(2)
|
||||||
error: Expected constant expression: 'Aligned' is not constant at assembly time
|
error: Expected constant expression: `Aligned` is not constant at assembly time
|
||||||
at const-and.asm(11)
|
at const-and.asm(11)
|
||||||
error: Expected constant expression: PC is not constant at assembly time
|
error: Expected constant expression: PC is not constant at assembly time
|
||||||
at const-and.asm(17)
|
at const-and.asm(17)
|
||||||
error: Expected constant expression: 'Floating' is not constant at assembly time
|
error: Expected constant expression: `Floating` is not constant at assembly time
|
||||||
at const-and.asm(20)
|
at const-and.asm(20)
|
||||||
Assembly aborted with 4 errors!
|
Assembly aborted with 4 errors!
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
error: Section 'code' cannot contain code or data (not ROM0 or ROMX)
|
error: Section "code" cannot contain code or data (not `ROM0` or `ROMX`)
|
||||||
at data-in-ram.asm(2)
|
at data-in-ram.asm(2)
|
||||||
error: Section 'data' cannot contain code or data (not ROM0 or ROMX)
|
error: Section "data" cannot contain code or data (not `ROM0` or `ROMX`)
|
||||||
at data-in-ram.asm(4)
|
at data-in-ram.asm(4)
|
||||||
Assembly aborted with 2 errors!
|
Assembly aborted with 2 errors!
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
error: 'constant' already defined
|
error: `constant` already defined
|
||||||
at def.asm(23)
|
at def.asm(23)
|
||||||
and also:
|
and also:
|
||||||
at def.asm(10)
|
at def.asm(10)
|
||||||
error: 'mac' already defined as non-EQU
|
error: `mac` already defined as non-`EQU`
|
||||||
at def.asm(35)
|
at def.asm(35)
|
||||||
and also:
|
and also:
|
||||||
at def.asm(32)
|
at def.asm(32)
|
||||||
error: 'name' already defined (should it be {interpolated} to define its contents "constant2"?)
|
error: `name` already defined (should it be {interpolated} to define its contents "constant2"?)
|
||||||
at def.asm(38)
|
at def.asm(38)
|
||||||
and also:
|
and also:
|
||||||
at def.asm(37)
|
at def.asm(37)
|
||||||
error: 'name' already defined (should it be {interpolated} to define its contents "mac2"?)
|
error: `name` already defined (should it be {interpolated} to define its contents "mac2"?)
|
||||||
at def.asm(42)
|
at def.asm(42)
|
||||||
and also:
|
and also:
|
||||||
at def.asm(40)
|
at def.asm(40)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
warning: Invalid warning flag parameter "truncation=256"; capping at maximum 2
|
warning: Invalid warning flag parameter "truncation=256"; capping at maximum 2
|
||||||
warning: Expression must be 8-bit; use LOW() to force 8-bit [-Wtruncation]
|
warning: Expression must be 8-bit; use `LOW()` to force 8-bit [-Wtruncation]
|
||||||
at diagnostic-parameter-cap.asm(3)
|
at diagnostic-parameter-cap.asm(3)
|
||||||
warning: Expression must be 8-bit; use LOW() to force 8-bit [-Wtruncation]
|
warning: Expression must be 8-bit; use `LOW()` to force 8-bit [-Wtruncation]
|
||||||
at diagnostic-parameter-cap.asm(4)
|
at diagnostic-parameter-cap.asm(4)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
error: syntax error, unexpected - at the beginning of the line (is it a leftover diff mark?)
|
error: syntax error, unexpected '-' at the beginning of the line (is it a leftover diff mark?)
|
||||||
at diff-marks.asm(2)
|
at diff-marks.asm(2)
|
||||||
error: syntax error, unexpected + at the beginning of the line (is it a leftover diff mark?)
|
error: syntax error, unexpected '+' at the beginning of the line (is it a leftover diff mark?)
|
||||||
at diff-marks.asm(3)
|
at diff-marks.asm(3)
|
||||||
Assembly aborted with 2 errors!
|
Assembly aborted with 2 errors!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Undefined symbol 'n' was already purged
|
error: Undefined symbol `n` was already purged
|
||||||
at double-purge.asm(3)
|
at double-purge.asm(3)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
error: Expected constant expression: 'unknown' is not constant at assembly time
|
error: Expected constant expression: `unknown` is not constant at assembly time
|
||||||
at ds-bad.asm(3)
|
at ds-bad.asm(3)
|
||||||
warning: Expression must be 8-bit; use LOW() to force 8-bit [-Wtruncation]
|
warning: Expression must be 8-bit; use `LOW()` to force 8-bit [-Wtruncation]
|
||||||
at ds-bad.asm(4)
|
at ds-bad.asm(4)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Found ELIF after an ELSE block
|
FATAL: Found `ELIF` after an `ELSE` block
|
||||||
at elif-after-else.asm(14)
|
at elif-after-else.asm(14)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Found ELIF outside of an IF construct
|
FATAL: Found `ELIF` outside of a conditional (not after an `IF`/`ELIF` block)
|
||||||
at elif-outside-if.asm(1)
|
at elif-outside-if.asm(1)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Found ELSE outside of an IF construct
|
FATAL: Found `ELSE` outside of a conditional (not after an `IF`/`ELIF` block)
|
||||||
at else-outside-if.asm(1)
|
at else-outside-if.asm(1)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
warning: DB directive without data in ROM [-Wempty-data-directive]
|
warning: `DB` directive without data in ROM [-Wempty-data-directive]
|
||||||
at empty-data-directive.asm(6)
|
at empty-data-directive.asm(6)
|
||||||
warning: DW directive without data in ROM [-Wempty-data-directive]
|
warning: `DW` directive without data in ROM [-Wempty-data-directive]
|
||||||
at empty-data-directive.asm(7)
|
at empty-data-directive.asm(7)
|
||||||
warning: DL directive without data in ROM [-Wempty-data-directive]
|
warning: `DL` directive without data in ROM [-Wempty-data-directive]
|
||||||
at empty-data-directive.asm(8)
|
at empty-data-directive.asm(8)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Unqualified local label '.test' in main scope
|
FATAL: Unqualified local label `.test` in main scope
|
||||||
at empty-local-purged.asm(3)
|
at empty-local-purged.asm(3)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: 'Referenced.' is a nonsensical reference to an empty local label
|
FATAL: `Referenced.` is a nonsensical reference to an empty local label
|
||||||
at empty-local-referenced.asm(3)
|
at empty-local-referenced.asm(3)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: 'Label.' is a nonsensical reference to an empty local label
|
FATAL: `Label.` is a nonsensical reference to an empty local label
|
||||||
at empty-local-used.asm(4)
|
at empty-local-used.asm(4)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: 'Label.' is a nonsensical reference to an empty local label
|
FATAL: `Label.` is a nonsensical reference to an empty local label
|
||||||
at empty-local.asm(4)
|
at empty-local.asm(4)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Found ENDC outside of an IF construct
|
FATAL: Found `ENDC` outside of a conditional (not after an `IF`/`ELIF`/`ELSE` block)
|
||||||
at endc-outside-if.asm(1)
|
at endc-outside-if.asm(1)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Cannot end the section within a UNION
|
FATAL: Cannot end the section within a `UNION`
|
||||||
at endsection-in-union.asm(3)
|
at endsection-in-union.asm(3)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Cannot end the section outside of a SECTION
|
FATAL: Cannot end the section outside of a `SECTION`
|
||||||
at endsection-outside-section.asm(1)
|
at endsection-outside-section.asm(1)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Cannot output data outside of a SECTION
|
error: Cannot output data outside of a `SECTION`
|
||||||
at endsection.asm(4)
|
at endsection.asm(4)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
warning: First [-Wuser]
|
warning: First [-Wuser]
|
||||||
at equs-newline.asm(3)
|
at equs-newline.asm(3)
|
||||||
while expanding symbol "ACT"
|
while expanding symbol `ACT`
|
||||||
warning: Second [-Wuser]
|
warning: Second [-Wuser]
|
||||||
at equs-newline.asm(3)
|
at equs-newline.asm(3)
|
||||||
warning: Third [-Wuser]
|
warning: Third [-Wuser]
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
warning: Crash? [-Wuser]
|
warning: Crash? [-Wuser]
|
||||||
at equs-purge.asm(2)
|
at equs-purge.asm(2)
|
||||||
while expanding symbol "BYE"
|
while expanding symbol `BYE`
|
||||||
|
|||||||
@@ -1,68 +1,68 @@
|
|||||||
FATAL: Recursion limit (64) exceeded
|
FATAL: Recursion limit (64) exceeded
|
||||||
at equs-recursion.asm(2)
|
at equs-recursion.asm(2)
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
error: 'x' already defined
|
error: `x` already defined
|
||||||
at error-limit.asm(2)
|
at error-limit.asm(2)
|
||||||
and also:
|
and also:
|
||||||
at error-limit.asm(1)
|
at error-limit.asm(1)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
error: Base value must be equal to $FF00 for $FF00+C
|
error: Base value must be equal to $FF00 for [$FF00+C]
|
||||||
at ff00+c-bad.asm(8)
|
at ff00+c-bad.asm(8)
|
||||||
error: Expected constant expression: 'xyz' is not constant at assembly time
|
error: Expected constant expression: `xyz` is not constant at assembly time
|
||||||
at ff00+c-bad.asm(9)
|
at ff00+c-bad.asm(9)
|
||||||
error: Base value must be equal to $FF00 for $FF00+C
|
error: Base value must be equal to $FF00 for [$FF00+C]
|
||||||
at ff00+c-bad.asm(9)
|
at ff00+c-bad.asm(9)
|
||||||
Assembly aborted with 3 errors!
|
Assembly aborted with 3 errors!
|
||||||
|
|||||||
@@ -1,183 +1,183 @@
|
|||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~1(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~1(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~2(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~2(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~2(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~2(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~3(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~3(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~3(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~3(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~4(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~4(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~4(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~4(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~5(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~5(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~5(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~5(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~6(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~6(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~6(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~6(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~7(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~7(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~7(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~7(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~8(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~8(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~8(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~8(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~9(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~9(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~9(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~9(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~10(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~10(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~10(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~10(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~11(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~11(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~11(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~11(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~12(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~12(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~12(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~12(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~13(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~13(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~13(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~13(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~14(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~14(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~14(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~14(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~15(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~15(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~15(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~15(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~16(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~16(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~16(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~16(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~17(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~17(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~17(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~17(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~18(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~18(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~18(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~18(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~19(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~19(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~19(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~19(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~20(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~20(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~20(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~20(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~21(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~21(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~21(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~21(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~22(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~22(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~22(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~22(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~23(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~23(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~23(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~23(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~24(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~24(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~24(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~24(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~25(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~25(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~25(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~25(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~26(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~26(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~26(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~26(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~27(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~27(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~27(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~27(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~28(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~28(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~28(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~28(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~29(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~29(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~29(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~29(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~30(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~30(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~30(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~30(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~31(12) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~31(12) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defMinBadValue"
|
while expanding symbol `defMinBadValue`
|
||||||
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
warning: Magnitude of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at fixed-point-magnitude.asm::REPT~31(17) <- fixed-point-magnitude.asm(1)
|
at fixed-point-magnitude.asm::REPT~31(17) <- fixed-point-magnitude.asm(1)
|
||||||
while expanding symbol "defWorseValue"
|
while expanding symbol `defWorseValue`
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
warning: FOR goes backwards from -2147483648 to -1 by -2147483648 [-Wbackwards-for]
|
warning: `FOR` goes backwards from -2147483648 to -1 by -2147483648 [-Wbackwards-for]
|
||||||
at for-loop-count.asm::test(12) <- for-loop-count.asm(19)
|
at for-loop-count.asm::test(12) <- for-loop-count.asm(19)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
error: 'y' already defined as constant
|
error: `y` already defined as constant
|
||||||
at for-loop-variable.asm(12)
|
at for-loop-variable.asm(12)
|
||||||
and also:
|
and also:
|
||||||
at for-loop-variable.asm(8)
|
at for-loop-variable.asm(8)
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
warning: FOR goes backwards from 2 to 1 by 1 [-Wbackwards-for]
|
warning: `FOR` goes backwards from 2 to 1 by 1 [-Wbackwards-for]
|
||||||
at for.asm(12)
|
at for.asm(12)
|
||||||
error: FOR cannot have a step value of 0
|
error: `FOR` cannot have a step value of 0
|
||||||
at for.asm(16)
|
at for.asm(16)
|
||||||
warning: FOR goes backwards from 1 to 2 by -1 [-Wbackwards-for]
|
warning: `FOR` goes backwards from 1 to 2 by -1 [-Wbackwards-for]
|
||||||
at for.asm(20)
|
at for.asm(20)
|
||||||
error: 's' already defined as constant (should it be {interpolated} to define its contents "x"?)
|
error: `s` already defined as constant (should it be {interpolated} to define its contents "x"?)
|
||||||
at for.asm(46)
|
at for.asm(46)
|
||||||
and also:
|
and also:
|
||||||
at for.asm(39)
|
at for.asm(39)
|
||||||
error: 'v' already defined as constant
|
error: `v` already defined as constant
|
||||||
at for.asm::REPT~4(54) <- for.asm(48)
|
at for.asm::REPT~4(54) <- for.asm(48)
|
||||||
and also:
|
and also:
|
||||||
at for.asm::REPT~4(52) <- for.asm(48)
|
at for.asm::REPT~4(52) <- for.asm(48)
|
||||||
FATAL: Failed to update FOR symbol value
|
FATAL: Failed to update `FOR` symbol value
|
||||||
at for.asm::REPT~4(54) <- for.asm(48)
|
at for.asm::REPT~4(54) <- for.asm(48)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Section 'RAM' cannot contain fragment literals (not ROM0 or ROMX)
|
FATAL: Section "RAM" cannot contain fragment literals (not `ROM0` or `ROMX`)
|
||||||
at fragment-literal-in-ram.asm(6)
|
at fragment-literal-in-ram.asm(6)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: BANK only allowed for ROMX, WRAMX, SRAM, or VRAM sections
|
error: `BANK` only allowed for `ROMX`, `WRAMX`, `SRAM`, or `VRAM` sections
|
||||||
at impossible-bank.asm(1)
|
at impossible-bank.asm(1)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Specified range in INCBIN file 'empty.bin' is out of bounds (0 + 1 > 0)
|
error: Specified range in `INCBIN` file "empty.bin" is out of bounds (0 + 1 > 0)
|
||||||
at incbin-empty-bad.asm(3)
|
at incbin-empty-bad.asm(3)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Cannot output data outside of a SECTION
|
error: Cannot output data outside of a `SECTION`
|
||||||
at incbin-end-0.asm(1)
|
at incbin-end-0.asm(1)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Specified range in INCBIN file 'data.bin' is out of bounds (123 + 1 > 123)
|
error: Specified range in `INCBIN` file "data.bin" is out of bounds (123 + 1 > 123)
|
||||||
at incbin-end-bad.asm(3)
|
at incbin-end-bad.asm(3)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Error reading pre-included file 'include-slash-nonexist.inc': No such file or directory
|
error: Error reading pre-included file "include-slash-nonexist.inc": No such file or directory
|
||||||
at include-slash.asm(0)
|
at include-slash.asm(0)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
error: syntax error, unexpected symbol
|
error: syntax error, unexpected symbol
|
||||||
at interpolation-after-string.asm(5)
|
at interpolation-after-string.asm(5)
|
||||||
while expanding symbol "greeting"
|
while expanding symbol `greeting`
|
||||||
error: syntax error, unexpected string
|
error: syntax error, unexpected string
|
||||||
at interpolation-after-string.asm(8)
|
at interpolation-after-string.asm(8)
|
||||||
while expanding symbol "string"
|
while expanding symbol `string`
|
||||||
Assembly aborted with 2 errors!
|
Assembly aborted with 2 errors!
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ error: Fractional width 99999999 too long, limiting to 255
|
|||||||
at interpolation-overflow.asm(4)
|
at interpolation-overflow.asm(4)
|
||||||
warning: Precision of fixed-point constant is too large [-Wlarge-constant]
|
warning: Precision of fixed-point constant is too large [-Wlarge-constant]
|
||||||
at interpolation-overflow.asm(4)
|
at interpolation-overflow.asm(4)
|
||||||
while expanding symbol "x"
|
while expanding symbol `x`
|
||||||
error: '\1' cannot be used outside of a macro
|
error: `\1` cannot be used outside of a macro
|
||||||
at interpolation-overflow.asm(4)
|
at interpolation-overflow.asm(4)
|
||||||
error: syntax error, unexpected number
|
error: syntax error, unexpected number
|
||||||
at interpolation-overflow.asm(4)
|
at interpolation-overflow.asm(4)
|
||||||
|
|||||||
@@ -1,68 +1,68 @@
|
|||||||
FATAL: Recursion limit (64) exceeded
|
FATAL: Recursion limit (64) exceeded
|
||||||
at interpolation-recursion.asm(2)
|
at interpolation-recursion.asm(2)
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
while expanding symbol "recurse"
|
while expanding symbol `recurse`
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
error: Interpolated symbol "undef" does not exist
|
error: Interpolated symbol `undef` does not exist
|
||||||
at interpolation.asm(18)
|
at interpolation.asm(18)
|
||||||
error: Interpolated symbol "label" does not exist
|
error: Interpolated symbol `label` does not exist
|
||||||
at interpolation.asm(22)
|
at interpolation.asm(22)
|
||||||
error: Interpolated symbol "foo" is not a numeric or string symbol
|
error: Interpolated symbol `foo` is not a numeric or string symbol
|
||||||
at interpolation.asm(29)
|
at interpolation.asm(29)
|
||||||
error: Interpolated symbol "xor" is a reserved keyword; add a '#' prefix to use it as a raw symbol
|
error: Interpolated symbol `xor` is a reserved keyword; add a '#' prefix to use it as a raw symbol
|
||||||
at interpolation.asm(32)
|
at interpolation.asm(32)
|
||||||
Assembly aborted with 4 errors!
|
Assembly aborted with 4 errors!
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ error: Alignment must be between 0 and 16, not 20
|
|||||||
at invalid-alignment.asm(13)
|
at invalid-alignment.asm(13)
|
||||||
error: Alignment must be between 0 and 16, not 20
|
error: Alignment must be between 0 and 16, not 20
|
||||||
at invalid-alignment.asm(15)
|
at invalid-alignment.asm(15)
|
||||||
error: Section "d"'s fixed address doesn't match its alignment
|
error: Section "d"'s fixed address does not match its alignment
|
||||||
at invalid-alignment.asm(19)
|
at invalid-alignment.asm(19)
|
||||||
error: Section "e"'s fixed address doesn't match its alignment
|
error: Section "e"'s fixed address does not match its alignment
|
||||||
at invalid-alignment.asm(21)
|
at invalid-alignment.asm(21)
|
||||||
error: Section "f"'s fixed address doesn't match its alignment
|
error: Section "f"'s fixed address does not match its alignment
|
||||||
at invalid-alignment.asm(23)
|
at invalid-alignment.asm(23)
|
||||||
Assembly aborted with 7 errors!
|
Assembly aborted with 7 errors!
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ error: Fixed-point constant precision 0 invalid, defaulting to 16
|
|||||||
at invalid-format.asm(5)
|
at invalid-format.asm(5)
|
||||||
error: STRFMT: Invalid format spec for argument 2
|
error: STRFMT: Invalid format spec for argument 2
|
||||||
at invalid-format.asm(5)
|
at invalid-format.asm(5)
|
||||||
error: Invalid format spec '5d5'
|
error: Invalid format spec "5d5"
|
||||||
at invalid-format.asm(8)
|
at invalid-format.asm(8)
|
||||||
error: Invalid format spec 'xx'
|
error: Invalid format spec "xx"
|
||||||
at invalid-format.asm(9)
|
at invalid-format.asm(9)
|
||||||
error: Formatting string with sign flag '+'
|
error: Formatting string with sign flag '+'
|
||||||
at invalid-format.asm(11)
|
at invalid-format.asm(11)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
error: Address $10000 is not 16-bit
|
error: Address $10000 is not 16-bit
|
||||||
at invalid-instructions.asm(1)
|
at invalid-instructions.asm(1)
|
||||||
error: LD [HL], [HL] is not a valid instruction
|
error: "LD [HL], [HL]" is not a valid instruction
|
||||||
at invalid-instructions.asm(2)
|
at invalid-instructions.asm(2)
|
||||||
error: Base value must be equal to $FF00 for $FF00+C
|
error: Base value must be equal to $FF00 for [$FF00+C]
|
||||||
at invalid-instructions.asm(3)
|
at invalid-instructions.asm(3)
|
||||||
error: syntax error, unexpected c, expecting hl
|
error: syntax error, unexpected c, expecting hl
|
||||||
at invalid-instructions.asm(4)
|
at invalid-instructions.asm(4)
|
||||||
@@ -12,19 +12,19 @@ error: syntax error, unexpected number, expecting hl
|
|||||||
at invalid-instructions.asm(6)
|
at invalid-instructions.asm(6)
|
||||||
warning: Expression must be 3-bit [-Wtruncation]
|
warning: Expression must be 3-bit [-Wtruncation]
|
||||||
at invalid-instructions.asm(7)
|
at invalid-instructions.asm(7)
|
||||||
error: Invalid bit index 8 for BIT
|
error: Invalid bit index 8 for `BIT`
|
||||||
at invalid-instructions.asm(7)
|
at invalid-instructions.asm(7)
|
||||||
error: Invalid address $40 for RST
|
error: Invalid address $40 for `RST`
|
||||||
at invalid-instructions.asm(8)
|
at invalid-instructions.asm(8)
|
||||||
error: LD BC, BC is not a valid instruction; use LD B, B and LD C, C
|
error: "LD BC, BC" is not a valid instruction; use "LD B, B" and "LD C, C"
|
||||||
at invalid-instructions.asm(10)
|
at invalid-instructions.asm(10)
|
||||||
error: LD DE, HL is not a valid instruction; use LD D, H and LD E, L
|
error: "LD DE, HL" is not a valid instruction; use "LD D, H" and "LD E, L"
|
||||||
at invalid-instructions.asm(11)
|
at invalid-instructions.asm(11)
|
||||||
error: LD HL, DE is not a valid instruction; use LD H, D and LD L, E
|
error: "LD HL, DE" is not a valid instruction; use "LD H, D" and "LD L, E"
|
||||||
at invalid-instructions.asm(12)
|
at invalid-instructions.asm(12)
|
||||||
error: LD HL, SP is not a valid instruction; use LD HL, SP + 0
|
error: "LD HL, SP" is not a valid instruction; use "LD HL, SP + 0"
|
||||||
at invalid-instructions.asm(14)
|
at invalid-instructions.asm(14)
|
||||||
error: LD SP, BC is not a valid instruction
|
error: "LD SP, BC" is not a valid instruction
|
||||||
at invalid-instructions.asm(17)
|
at invalid-instructions.asm(17)
|
||||||
error: syntax error, unexpected sp
|
error: syntax error, unexpected sp
|
||||||
at invalid-instructions.asm(18)
|
at invalid-instructions.asm(18)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: JR target must be between -128 and 127 bytes away, not -258; use JP instead
|
error: `JR` target must be between -128 and 127 bytes away, not -258; use `JP` instead
|
||||||
at invalid-jr.asm(3)
|
at invalid-jr.asm(3)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Bracketed symbol "foo" does not exist
|
error: Bracketed symbol `foo` does not exist
|
||||||
at invalid-macro-arg-symbol.asm(1)
|
at invalid-macro-arg-symbol.asm(1)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ error: Invalid argument for option 'Q'
|
|||||||
at invalid-opt.asm(14)
|
at invalid-opt.asm(14)
|
||||||
error: Argument for option 'Q' must be between 1 and 31
|
error: Argument for option 'Q' must be between 1 and 31
|
||||||
at invalid-opt.asm(15)
|
at invalid-opt.asm(15)
|
||||||
error: Argument to 'r' is out of range ("99999999999999999999999999")
|
error: Argument for option 'r' is out of range ("99999999999999999999999999")
|
||||||
at invalid-opt.asm(16)
|
at invalid-opt.asm(16)
|
||||||
error: Must specify an argument for option 'W'
|
error: Must specify an argument for option 'W'
|
||||||
at invalid-opt.asm(17)
|
at invalid-opt.asm(17)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
warning: Invalid warning flag parameter "truncation=99"; capping at maximum 2
|
warning: Invalid warning flag parameter "truncation=99"; capping at maximum 2
|
||||||
warning: Expression must be 8-bit; use LOW() to force 8-bit [-Wtruncation]
|
warning: Expression must be 8-bit; use `LOW()` to force 8-bit [-Wtruncation]
|
||||||
at invalid-param.asm(2)
|
at invalid-param.asm(2)
|
||||||
warning: Expression must be 8-bit; use LOW() to force 8-bit [-Wtruncation]
|
warning: Expression must be 8-bit; use `LOW()` to force 8-bit [-Wtruncation]
|
||||||
at invalid-param.asm(3)
|
at invalid-param.asm(3)
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
error: Found ENDU outside of a UNION construct
|
error: Found `ENDU` outside of a `UNION` construct
|
||||||
at invalid-union.asm(1)
|
at invalid-union.asm(1)
|
||||||
error: Found NEXTU outside of a UNION construct
|
error: Found `NEXTU` outside of a `UNION` construct
|
||||||
at invalid-union.asm(2)
|
at invalid-union.asm(2)
|
||||||
error: UNIONs must be inside a SECTION
|
error: `UNION`s must be inside a `SECTION`
|
||||||
at invalid-union.asm(3)
|
at invalid-union.asm(3)
|
||||||
error: Unterminated UNION construct
|
error: Unterminated `UNION` construct
|
||||||
at invalid-union.asm(7)
|
at invalid-union.asm(7)
|
||||||
Assembly aborted with 4 errors!
|
Assembly aborted with 4 errors!
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
warning: Test #1: Compile-time constant [-Wuser]
|
warning: Test #1: Compile-time constant [-Wuser]
|
||||||
at isconst.asm::test_expr(10) <- isconst.asm(14)
|
at isconst.asm::test_expr(10) <- isconst.asm(14)
|
||||||
error: Expected constant expression: 'UnknownLabel' is not constant at assembly time
|
error: Expected constant expression: `UnknownLabel` is not constant at assembly time
|
||||||
at isconst.asm::test_expr(9) <- isconst.asm(15)
|
at isconst.asm::test_expr(9) <- isconst.asm(15)
|
||||||
warning: Test #3: Compile-time constant [-Wuser]
|
warning: Test #3: Compile-time constant [-Wuser]
|
||||||
at isconst.asm::test_expr(10) <- isconst.asm(21)
|
at isconst.asm::test_expr(10) <- isconst.asm(21)
|
||||||
warning: Test #4: Compile-time constant [-Wuser]
|
warning: Test #4: Compile-time constant [-Wuser]
|
||||||
at isconst.asm::test_expr(10) <- isconst.asm(22)
|
at isconst.asm::test_expr(10) <- isconst.asm(22)
|
||||||
error: Expected constant expression: 'FloatingLabel' is not constant at assembly time
|
error: Expected constant expression: `FloatingLabel` is not constant at assembly time
|
||||||
at isconst.asm::test_expr(9) <- isconst.asm(28)
|
at isconst.asm::test_expr(9) <- isconst.asm(28)
|
||||||
warning: Test #6: Compile-time constant [-Wuser]
|
warning: Test #6: Compile-time constant [-Wuser]
|
||||||
at isconst.asm::test_expr(10) <- isconst.asm(29)
|
at isconst.asm::test_expr(10) <- isconst.asm(29)
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
error: Expected constant expression: 'Known' is not constant at assembly time
|
error: Expected constant expression: `Known` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(28)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(28)
|
||||||
error: Expected constant expression: 'Known' is not constant at assembly time
|
error: Expected constant expression: `Known` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(28)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(28)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(30)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(30)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(30)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(30)
|
||||||
error: Expected constant expression: 'Known' is not constant at assembly time
|
error: Expected constant expression: `Known` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(32)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(32)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(32)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(32)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(34)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(34)
|
||||||
error: Expected constant expression: 'Unknown2' is not constant at assembly time
|
error: Expected constant expression: `Unknown2` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(34)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(34)
|
||||||
error: Expected constant expression: 'Known' is not constant at assembly time
|
error: Expected constant expression: `Known` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(41)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(41)
|
||||||
error: Expected constant expression: 'Known' is not constant at assembly time
|
error: Expected constant expression: `Known` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(41)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(41)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(43)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(43)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(43)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(43)
|
||||||
error: Expected constant expression: PC is not constant at assembly time
|
error: Expected constant expression: PC is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(54)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(54)
|
||||||
error: Expected constant expression: PC is not constant at assembly time
|
error: Expected constant expression: PC is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(54)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(54)
|
||||||
error: Expected constant expression: 'Known' is not constant at assembly time
|
error: Expected constant expression: `Known` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(56)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(56)
|
||||||
error: Expected constant expression: PC is not constant at assembly time
|
error: Expected constant expression: PC is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(56)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(56)
|
||||||
error: Expected constant expression: 'Unknown' is not constant at assembly time
|
error: Expected constant expression: `Unknown` is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(19) <- label-diff.asm(58)
|
at label-diff.asm::print_diff(19) <- label-diff.asm(58)
|
||||||
error: Expected constant expression: PC is not constant at assembly time
|
error: Expected constant expression: PC is not constant at assembly time
|
||||||
at label-diff.asm::print_diff(20) <- label-diff.asm(58)
|
at label-diff.asm::print_diff(20) <- label-diff.asm(58)
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
error: syntax error, unexpected local label, expecting symbol
|
error: syntax error, unexpected local label, expecting symbol
|
||||||
at label-macro-arg.asm::test_char(25) <- label-macro-arg.asm(38)
|
at label-macro-arg.asm::test_char(25) <- label-macro-arg.asm(38)
|
||||||
while expanding symbol "VAR_DEF"
|
while expanding symbol `VAR_DEF`
|
||||||
error: syntax error, unexpected local label, expecting symbol
|
error: syntax error, unexpected local label, expecting symbol
|
||||||
at label-macro-arg.asm::test_char(26) <- label-macro-arg.asm(38)
|
at label-macro-arg.asm::test_char(26) <- label-macro-arg.asm(38)
|
||||||
error: Interpolated symbol "sizeof_.something" does not exist
|
error: Interpolated symbol `sizeof_.something` does not exist
|
||||||
at label-macro-arg.asm::test_char(29) <- label-macro-arg.asm(38)
|
at label-macro-arg.asm::test_char(29) <- label-macro-arg.asm(38)
|
||||||
error: syntax error, unexpected label, expecting symbol
|
error: syntax error, unexpected label, expecting symbol
|
||||||
at label-macro-arg.asm::test_char(25) <- label-macro-arg.asm(39)
|
at label-macro-arg.asm::test_char(25) <- label-macro-arg.asm(39)
|
||||||
while expanding symbol "VAR_DEF"
|
while expanding symbol `VAR_DEF`
|
||||||
error: syntax error, unexpected label, expecting symbol
|
error: syntax error, unexpected label, expecting symbol
|
||||||
at label-macro-arg.asm::test_char(26) <- label-macro-arg.asm(39)
|
at label-macro-arg.asm::test_char(26) <- label-macro-arg.asm(39)
|
||||||
error: Invalid format spec 'sizeof_'
|
error: Invalid format spec "sizeof_"
|
||||||
at label-macro-arg.asm::test_char(29) <- label-macro-arg.asm(39)
|
at label-macro-arg.asm::test_char(29) <- label-macro-arg.asm(39)
|
||||||
error: Interpolated symbol "something" does not exist
|
error: Interpolated symbol `something` does not exist
|
||||||
at label-macro-arg.asm::test_char(29) <- label-macro-arg.asm(39)
|
at label-macro-arg.asm::test_char(29) <- label-macro-arg.asm(39)
|
||||||
Assembly aborted with 7 errors!
|
Assembly aborted with 7 errors!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Label "bad" created outside of a SECTION
|
error: Label `bad` created outside of a `SECTION`
|
||||||
at label-outside-section.asm(1)
|
at label-outside-section.asm(1)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
error: 'Sym' already defined
|
error: `Sym` already defined
|
||||||
at label-redefinition.asm(7)
|
at label-redefinition.asm(7)
|
||||||
and also:
|
and also:
|
||||||
at label-redefinition.asm::m(4) <- label-redefinition.asm(6)
|
at label-redefinition.asm::m(4) <- label-redefinition.asm(6)
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
error: Undefined symbol '@'
|
error: Undefined symbol `@`
|
||||||
at label-scope.asm(3)
|
at label-scope.asm(3)
|
||||||
error: Undefined symbol '.'
|
error: Undefined symbol `.`
|
||||||
at label-scope.asm(3)
|
at label-scope.asm(3)
|
||||||
error: Undefined symbol '..'
|
error: Undefined symbol `..`
|
||||||
at label-scope.asm(3)
|
at label-scope.asm(3)
|
||||||
error: Built-in symbol '@' cannot be purged
|
error: Built-in symbol `@` cannot be purged
|
||||||
at label-scope.asm(12)
|
at label-scope.asm(12)
|
||||||
error: Built-in symbol '.' cannot be purged
|
error: Built-in symbol `.` cannot be purged
|
||||||
at label-scope.asm(12)
|
at label-scope.asm(12)
|
||||||
error: Built-in symbol '..' cannot be purged
|
error: Built-in symbol `..` cannot be purged
|
||||||
at label-scope.asm(12)
|
at label-scope.asm(12)
|
||||||
Assembly aborted with 6 errors!
|
Assembly aborted with 6 errors!
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
error: "Label1" is not a macro
|
error: `Label1` is not a macro
|
||||||
at lexer-hack.asm(22)
|
at lexer-hack.asm(22)
|
||||||
error: 'mac' already defined
|
error: `mac` already defined
|
||||||
at lexer-hack.asm(24)
|
at lexer-hack.asm(24)
|
||||||
and also:
|
and also:
|
||||||
at lexer-hack.asm(1)
|
at lexer-hack.asm(1)
|
||||||
error: Undefined macro "undef"
|
error: Undefined macro `undef`
|
||||||
at lexer-hack.asm(27)
|
at lexer-hack.asm(27)
|
||||||
error: Undefined macro "undef"
|
error: Undefined macro `undef`
|
||||||
at lexer-hack.asm(28)
|
at lexer-hack.asm(28)
|
||||||
Assembly aborted with 4 errors!
|
Assembly aborted with 4 errors!
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
error: Label "foo" created outside of a SECTION
|
error: Label `foo` created outside of a `SECTION`
|
||||||
at line-continuation-whitespace.asm(7)
|
at line-continuation-whitespace.asm(7)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ error: Invalid character 's' after line continuation
|
|||||||
at line-continuation.asm(3)
|
at line-continuation.asm(3)
|
||||||
warning: spam [-Wuser]
|
warning: spam [-Wuser]
|
||||||
at line-continuation.asm::spam(4) <- line-continuation.asm(6)
|
at line-continuation.asm::spam(4) <- line-continuation.asm(6)
|
||||||
error: Label "foo" created outside of a SECTION
|
error: Label `foo` created outside of a `SECTION`
|
||||||
at line-continuation.asm(14)
|
at line-continuation.asm(14)
|
||||||
Assembly aborted with 2 errors!
|
Assembly aborted with 2 errors!
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
warning: DB directive without data in ROM [-Wempty-data-directive]
|
warning: `DB` directive without data in ROM [-Wempty-data-directive]
|
||||||
at load-overflow.asm(5)
|
at load-overflow.asm(5)
|
||||||
warning: DB directive without data in ROM [-Wempty-data-directive]
|
warning: `DB` directive without data in ROM [-Wempty-data-directive]
|
||||||
at load-overflow.asm(6)
|
at load-overflow.asm(6)
|
||||||
error: Section 'Overflow' grew too big (max size = 0x8000 bytes, reached 0x8002)
|
error: Section "Overflow" grew too big (max size = 0x8000 bytes, reached 0x8002)
|
||||||
at load-overflow.asm(26)
|
at load-overflow.asm(26)
|
||||||
error: Section 'oops' grew too big (max size = 0x2000 bytes, reached 0x2002)
|
error: Section "oops" grew too big (max size = 0x2000 bytes, reached 0x2002)
|
||||||
at load-overflow.asm(26)
|
at load-overflow.asm(26)
|
||||||
error: Section 'Moar overflow' grew too big (max size = 0x8000 bytes, reached 0xD000)
|
error: Section "Moar overflow" grew too big (max size = 0x8000 bytes, reached 0xD000)
|
||||||
at load-overflow.asm(26)
|
at load-overflow.asm(26)
|
||||||
error: Section 'hmm' grew too big (max size = 0x2000 bytes, reached 0x4000)
|
error: Section "hmm" grew too big (max size = 0x2000 bytes, reached 0x4000)
|
||||||
at load-overflow.asm(26)
|
at load-overflow.asm(26)
|
||||||
error: Section 'lol' grew too big (max size = 0x2000 bytes, reached 0x3000)
|
error: Section "lol" grew too big (max size = 0x2000 bytes, reached 0x3000)
|
||||||
at load-overflow.asm(26)
|
at load-overflow.asm(26)
|
||||||
Assembly aborted with 5 errors!
|
Assembly aborted with 5 errors!
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
warning: Purging a label ".loc" [-Wpurge]
|
warning: Purging a label `.loc` [-Wpurge]
|
||||||
at local-purge.asm(7)
|
at local-purge.asm(7)
|
||||||
error: Interpolated symbol ".loc" does not exist; it was purged
|
error: Interpolated symbol `.loc` does not exist; it was purged
|
||||||
at local-purge.asm(8)
|
at local-purge.asm(8)
|
||||||
Assembly aborted with 1 error!
|
Assembly aborted with 1 error!
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
FATAL: Unqualified local label '.test' in main scope
|
FATAL: Unqualified local label `.test` in main scope
|
||||||
at local-ref-without-parent.asm(3)
|
at local-ref-without-parent.asm(3)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user