diff --git a/test/link/section-union/assert.asm b/test/link/section-union/assert.asm new file mode 100644 index 00000000..91b745d7 --- /dev/null +++ b/test/link/section-union/assert.asm @@ -0,0 +1,18 @@ +IF !DEF(SECOND) +OFS = 42 +ELSE +OFS = 69 +ENDC + +BASE = $C0DE + +SECTION UNION "assertions in unions", WRAM0 +IF DEF(SECOND) + assert @ != BASE, "Force failing the build" ; Force failure in RGBLINK, though +ENDC + ds OFS + assert @ == BASE + OFS, "This assertion should not trigger" + +; Only make RGBASM aware of the section's location *after* it sees the assertion +; This forces it to pass it to RGBLINK +SECTION UNION "assertions in unions", WRAM0[BASE] diff --git a/test/link/section-union/assert.out b/test/link/section-union/assert.out new file mode 100644 index 00000000..d0bce86e --- /dev/null +++ b/test/link/section-union/assert.out @@ -0,0 +1,6 @@ +section-union/assert.asm(11): Force failing the build +error: 1 assertions failed! +--- +ERROR: -(30): + Assertion failed: Force failing the build +error: Assembly aborted (1 errors)! diff --git a/test/link/test.sh b/test/link/test.sh index d987090c..8295b643 100755 --- a/test/link/test.sh +++ b/test/link/test.sh @@ -84,7 +84,7 @@ $RGBASM -o $otemp section-union/good/a.asm $RGBASM -o $gbtemp2 section-union/good/b.asm $RGBLINK -o $gbtemp -l section-union/good/script.link $otemp $gbtemp2 dd if=$gbtemp count=1 bs=$(printf %s $(wc -c < section-union/good/ref.out.bin)) > $otemp 2>/dev/null -i="section-union.asm" tryCmp section-union/good/ref.out.bin $otemp +i="section-union/good.asm" tryCmp section-union/good/ref.out.bin $otemp rc=$(($? || $rc)) for i in section-union/*.asm; do $RGBASM -o $otemp $i