mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Add more RGBLINK test coverage (#1637)
This commit is contained in:
@@ -83,7 +83,7 @@ void sect_CheckSizes() {
|
||||
if (uint32_t maxSize = sectionTypeInfo[sect.type].size; sect.size > maxSize) {
|
||||
error(
|
||||
"Section '%s' grew too big (max size = 0x%" PRIX32 " bytes, reached 0x%" PRIX32
|
||||
").\n",
|
||||
")\n",
|
||||
sect.name.c_str(),
|
||||
maxSize,
|
||||
sect.size
|
||||
@@ -239,7 +239,7 @@ static void mergeSections(
|
||||
}
|
||||
|
||||
if (sect.modifier != mod) {
|
||||
sectError("Section already declared as %s section\n", sectionModNames[sect.modifier]);
|
||||
sectError("Section already declared as SECTION %s\n", sectionModNames[sect.modifier]);
|
||||
} else {
|
||||
switch (mod) {
|
||||
case SECTION_UNION:
|
||||
@@ -850,8 +850,8 @@ void sect_PCRelByte(Expression &expr, uint32_t pcShift) {
|
||||
|
||||
if (offset < -128 || offset > 127) {
|
||||
error(
|
||||
"jr target must be between -128 and 127 bytes away, not %" PRId16
|
||||
"; use jp instead\n",
|
||||
"JR target must be between -128 and 127 bytes away, not %" PRId16
|
||||
"; use JP instead\n",
|
||||
offset
|
||||
);
|
||||
writeByte(0);
|
||||
|
||||
@@ -516,8 +516,8 @@ static void applyFilePatches(Section §ion, Section &dataSection) {
|
||||
error(
|
||||
patch.src,
|
||||
patch.lineNo,
|
||||
"jr target must be between -128 and 127 bytes away, not %" PRId16
|
||||
"; use jp instead\n",
|
||||
"JR target must be between -128 and 127 bytes away, not %" PRId16
|
||||
"; use JP instead",
|
||||
jumpOffset
|
||||
);
|
||||
}
|
||||
|
||||
@@ -133,12 +133,12 @@ static void mergeSections(Section &target, std::unique_ptr<Section> &&other) {
|
||||
if (target.modifier != other->modifier) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"error: Section \"%s\" is defined as %s at ",
|
||||
"error: Section \"%s\" is defined as SECTION %s at ",
|
||||
target.name.c_str(),
|
||||
sectionModNames[target.modifier]
|
||||
);
|
||||
target.src->dump(target.lineNo);
|
||||
fprintf(stderr, ", but as %s at ", sectionModNames[other->modifier]);
|
||||
fprintf(stderr, ", but as SECTION %s at ", sectionModNames[other->modifier]);
|
||||
other->src->dump(other->lineNo);
|
||||
putc('\n', stderr);
|
||||
exit(1);
|
||||
|
||||
@@ -68,7 +68,7 @@ SectionTypeInfo sectionTypeInfo[SECTTYPE_INVALID] = {
|
||||
// clang-format on
|
||||
|
||||
char const * const sectionModNames[] = {
|
||||
"regular", // SECTION_NORMAL
|
||||
"union", // SECTION_UNION
|
||||
"fragment", // SECTION_FRAGMENT
|
||||
"(no modifier)", // SECTION_NORMAL
|
||||
"UNION", // SECTION_UNION
|
||||
"FRAGMENT", // SECTION_FRAGMENT
|
||||
};
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
error: invalid-jr.asm(3):
|
||||
jr target must be between -128 and 127 bytes away, not -258; use jp instead
|
||||
JR target must be between -128 and 127 bytes away, not -258; use JP instead
|
||||
error: Assembly aborted (1 error)!
|
||||
|
||||
@@ -3,13 +3,13 @@ warning: load-overflow.asm(5): [-Wempty-data-directive]
|
||||
warning: load-overflow.asm(6): [-Wempty-data-directive]
|
||||
DB directive without data in ROM
|
||||
error: load-overflow.asm(26):
|
||||
Section 'Overflow' grew too big (max size = 0x8000 bytes, reached 0x8002).
|
||||
Section 'Overflow' grew too big (max size = 0x8000 bytes, reached 0x8002)
|
||||
error: load-overflow.asm(26):
|
||||
Section 'oops' grew too big (max size = 0x2000 bytes, reached 0x2002).
|
||||
Section 'oops' grew too big (max size = 0x2000 bytes, reached 0x2002)
|
||||
error: load-overflow.asm(26):
|
||||
Section 'Moar overflow' grew too big (max size = 0x8000 bytes, reached 0xD000).
|
||||
Section 'Moar overflow' grew too big (max size = 0x8000 bytes, reached 0xD000)
|
||||
error: load-overflow.asm(26):
|
||||
Section 'hmm' grew too big (max size = 0x2000 bytes, reached 0x4000).
|
||||
Section 'hmm' grew too big (max size = 0x2000 bytes, reached 0x4000)
|
||||
error: load-overflow.asm(26):
|
||||
Section 'lol' grew too big (max size = 0x2000 bytes, reached 0x3000).
|
||||
Section 'lol' grew too big (max size = 0x2000 bytes, reached 0x3000)
|
||||
error: Assembly aborted (5 errors)!
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
error: section-union.asm(37):
|
||||
Section already declared as union section
|
||||
Section already declared as SECTION UNION
|
||||
FATAL: section-union.asm(37):
|
||||
Cannot create section "test" (1 error)
|
||||
|
||||
10
test/link/invalid-patches.asm
Normal file
10
test/link/invalid-patches.asm
Normal file
@@ -0,0 +1,10 @@
|
||||
section "zero", rom0
|
||||
Zero::
|
||||
db 1 % Zero
|
||||
db 2 ** (Zero - 1)
|
||||
db BANK(NonexistentSymbol)
|
||||
db BANK("NonexistentSection")
|
||||
db STARTOF("NonexistentSection")
|
||||
db SIZEOF("NonexistentSection")
|
||||
ldh [Zero], a
|
||||
jr Zero + 200
|
||||
9
test/link/invalid-patches.out
Normal file
9
test/link/invalid-patches.out
Normal file
@@ -0,0 +1,9 @@
|
||||
error: invalid-patches.asm(10): JR target must be between -128 and 127 bytes away, not 190; use JP instead
|
||||
warning: invalid-patches.asm(9): LDH is deprecated with values from $00 to $FF; use $FF00 to $FFFF
|
||||
error: invalid-patches.asm(8): Requested SIZEOF() of section "NonexistentSection", which was not found
|
||||
error: invalid-patches.asm(7): Requested STARTOF() of section "NonexistentSection", which was not found
|
||||
error: invalid-patches.asm(6): Requested BANK() of section "NonexistentSection", which was not found
|
||||
error: invalid-patches.asm(5): Requested BANK() of symbol "NonexistentSymbol", which was not found
|
||||
error: invalid-patches.asm(4): Exponent by negative value -1
|
||||
error: invalid-patches.asm(3): Modulo by 0
|
||||
Linking failed with 7 errors
|
||||
2
test/link/section-conflict/different-mod/a.asm
Normal file
2
test/link/section-conflict/different-mod/a.asm
Normal file
@@ -0,0 +1,2 @@
|
||||
section fragment "test", rom0
|
||||
db 1
|
||||
2
test/link/section-conflict/different-mod/b.asm
Normal file
2
test/link/section-conflict/different-mod/b.asm
Normal file
@@ -0,0 +1,2 @@
|
||||
section union "test", rom0
|
||||
db 2
|
||||
1
test/link/section-conflict/different-mod/out.err
Normal file
1
test/link/section-conflict/different-mod/out.err
Normal file
@@ -0,0 +1 @@
|
||||
error: Section "test" is defined as SECTION FRAGMENT at section-conflict/different-mod/a.asm(1), but as SECTION UNION at section-conflict/different-mod/b.asm(1)
|
||||
@@ -269,6 +269,15 @@ rgblinkQuiet "$otemp" "$test"/b.rel 2>"$outtemp"
|
||||
tryDiff "$test"/out.err "$outtemp"
|
||||
evaluateTest
|
||||
|
||||
test="section-conflict/different-mod"
|
||||
startTest
|
||||
"$RGBASM" -o "$otemp" "$test"/a.asm
|
||||
"$RGBASM" -o "$gbtemp" "$test"/b.asm
|
||||
continueTest
|
||||
rgblinkQuiet "$otemp" "$gbtemp" 2>"$outtemp"
|
||||
tryDiff "$test"/out.err "$outtemp"
|
||||
evaluateTest
|
||||
|
||||
test="section-fragment/good"
|
||||
startTest
|
||||
"$RGBASM" -o "$otemp" "$test"/a.asm
|
||||
|
||||
Reference in New Issue
Block a user