Commit Graph
100 Commits
Author SHA1 Message Date
ISSOtm 9ce8a9f5f0 Add comments to RPN expr struct 2020-02-10 02:47:12 +01:00
ISSOtm cc59730c5b Cleanup the RPN evaluator somewhat
Make the bool field an actual bool
Rename `iReloc` to a more exact `isKnown` (as was already pointed out by some
comments)
Make the value of `BANK(symbol)` consistent when the argument is invalid
2020-02-10 02:47:12 +01:00
ISSOtm 0a04904b75 Refactor RPN binary expressions into a single func
This mirrors what the constexpr evaluator is doing, and removes a lot of code shared
between all of them
2020-02-10 02:47:12 +01:00
ISSOtm 9ed6e9af65 Make = a separate token from SET
This does break backwards compat, but if anyone complains I'm gonna be mad
2020-02-10 00:49:45 +01:00
ISSOtm c424a9bf5a Only output a single error with charmaps 2020-02-09 22:15:43 +01:00
ISSOtm 9d811e1267 Warn when truncating values in charmap 2020-02-09 22:13:16 +01:00
ISSOtm af6f62701c Remove ambiguous charmap syntax
The syntax was `charmap "anything", "string"`; the second string was
already handled by `const`, but to the same effect... the ambiguous
declaration has been removed, leaving us at "only" two reduce/reduce
conflicts.
2020-02-09 22:03:11 +01:00
ISSOtm 299574221e Truncate shift.out.bin
Too large a size makes diff output (when tests fail) annoying
2020-02-09 19:51:47 +01:00
ISSOtm fe0c269382 Use ++ and -- instead of [+-]= 1
Seriously...
2020-02-09 15:21:08 +01:00
ISSOtm 579a324ce7 Fix diffing bin files in RGBASM tests 2020-02-09 13:58:47 +01:00
ISSOtm 7903c14993 Fix undefined behavior when reading constant in RGBLINK 2020-02-07 14:51:26 +01:00
ISSOtm b42a04c24e Add test for jr @
Fun fact: current build *fails* this test!
2020-02-07 13:19:50 +01:00
ISSOtm ea52e45335 Fix @
The symbol's evaluation by the assembler and linker was very inconsistent
2020-02-07 13:19:50 +01:00
ISSOtm 9687e6e1dd Allow forcing the second byte of STOP
Fixes #433
2020-02-07 10:06:02 +01:00
ISSOtm ee34200e5f Output diffs when binary tests fail 2020-02-06 15:36:15 +01:00
ISSOtm 295fc6c619 Improve coverage of db-@ test 2020-02-05 13:24:50 +01:00
ISSOtm 28473d314a Make implicit truncation a warning 2020-02-05 13:20:51 +01:00
ISSOtm 35f7340dc9 Report failing test names in RGBLINK as well 2020-02-04 01:41:35 +01:00
Eldred Habert b76567e7d1 Merge pull request #470 from ISSOtm/rst
Allow using labels as argument to `rst`
2020-02-04 01:26:06 +01:00
ISSOtm 652db60ad6 Document modifications made to object file format 2020-02-03 21:10:05 +01:00
ISSOtm a7cb0a166a Inline readRGBxObject
This was made separate with the intention of supporting multiple versions,
but after some discussion this was decided against, so better improve
readability instead.
2020-02-03 21:10:05 +01:00
ISSOtm f363541611 Introduce revision number field 2020-02-03 21:10:05 +01:00
ISSOtm fa1fba7fd9 Increase object version to RGB9 2020-02-03 21:07:46 +01:00
ISSOtm d73fa09774 Remove RGB6 parsing 2020-02-03 21:07:12 +01:00
ISSOtm b1cd730db2 Add link-time RST instruction
This allows using a label as the argument to a `rst` instruction
Fixes rednex#448
2020-02-03 21:07:12 +01:00
ISSOtm 359a048b6e Bump object version number
We're about to break the format, so let's do this
2020-02-03 21:07:12 +01:00
ISSOtm f2be601a13 Check "left" boundary as well in isLocationSuitable
"fixed" and "aligned" location checking advanced the target location to places
regardless of the associated free space, potentially breaking the assumption
that the location was always further in memory than the free space's base.

Rather than adding more code to try keeping that assumption true, harden
`isLocationSuitable` and handle that case as well.
2020-02-03 20:57:12 +01:00
ISSOtm 4d2379b3df Merge both "single-side" code paths in placeSection 2020-02-03 20:19:30 +01:00
ISSOtm fd32b2252f Define additional variable when doing make develop 2020-02-03 19:58:02 +01:00
ISSOtm d15915ef14 Simplify bankrangecheck 2020-02-03 15:36:38 +01:00
ISSOtm 877e0e0b91 Get rid of BANK_COUNT_* symbols
They weren't used save for the definitions right below, so Occam's razor applies
2020-02-03 15:19:48 +01:00
ISSOtm da1d9f68c7 Remove and reorder bank counts
Why was this an enum in the first place, anyways?
2020-02-03 15:19:48 +01:00
ISSOtm 24f41ef897 Expose link def arrays to RGBASM 2020-02-03 15:19:48 +01:00
ISSOtm 09dff85d5b Merge common.h into linkdefs.h 2020-02-03 14:50:00 +01:00
Eldred Habert 20e5685c1a Merge pull request #424 from ISSOtm/better_deps
Improve dependency generation
2020-02-03 03:50:09 +01:00
Eldred Habert ac6232bc87 Merge pull request #473 from ISSOtm/shift_ub
Remove undefined behavior from shifts
2020-02-03 03:49:38 +01:00
ISSOtm b16ec83a33 Add gbdiff.bash script
This script allows diffing two Game Boy ROMs using `xxd` and `diff` and
attempts to augment the diff using information pulled from SYM files.
It's not part of RGBDS proper, but can be useful to debug tests (when ROMs fail
to match).
2020-01-30 02:43:31 +01:00
ISSOtm ed72baca2a Make more symbol functions const
Can't hurt to specify those as they are now. Perhaps it'll enable slightly more
compiler optimizations, too?
2020-01-30 02:38:33 +01:00
ISSOtm edb562d2e5 Mark a few symbol functions as static 2020-01-30 02:19:36 +01:00
ISSOtm 6d4b128611 Avoid unnecessary copies in symbol init 2020-01-30 02:15:43 +01:00
ISSOtm e2e01e84fa Fall back from failure in time a bit better 2020-01-30 02:07:55 +01:00
ISSOtm 93ee417567 Fix timestamp symbols on Windows (partially)
Windows does not honor `%F` nor `%T` in `strftime`. These are worked around
by writing the full format they serve as a short for.
However, Windows also treats `%z` and `%Z` identically, where SUS instead
requires `%z` to output a ±XXXX offset.
Since the current information is broken (no information), this isn't *breaking*
anything, but at least provides something a human will probably understand.
`__ISO_8601_UTC__` is unaffected because it hardcodes the timezone character,
only `__ISO_8601_LOCAL__` suffers from this.
2020-01-30 01:47:50 +01:00
ISSOtm 44cdcd12c3 Use tput for formatting escape sequences 2020-01-28 21:04:41 +01:00
ISSOtm ed06981f57 Add test for db X, @
It should behave identically to both of these on separate lines
2020-01-28 21:04:41 +01:00
Eldred Habert ec6c42e9d6 Merge pull request #467 from ISSOtm/report
Report failing file names in comparisons
2020-01-28 18:59:11 +01:00
ISSOtm b11d121c48 Remove undefined behavior from shifts
`asl` and `asr` in `src/link/patch.c` courtesy of @pinobatch, and rearranged in RGBASM
evaluators.
2020-01-28 12:37:38 +01:00
ISSOtm cdf6000618 Report failing file names in comparisons
The files being diffed (especially for  variants) are temp files, so their
names are pretty nondescript. This improve error output, using ANSI escape
sequences to make those lines stand out.
2020-01-28 11:44:50 +01:00
ISSOtm 1bd41bf79a Don't use diff to compare bin files in tests 2020-01-26 21:10:31 +01:00
ISSOtm 08ab34cf57 Fix a few checkpatch warnings in symbol.h 2020-01-26 18:26:57 +01:00
ISSOtm 7bb55469fe Fix partial paths being output to dep files with -i 2020-01-26 15:33:36 +01:00
ISSOtm a29dd738f2 Reimplement -M variants using long options 2020-01-26 15:33:36 +01:00
ISSOtm 4a98b41d57 Fix -MG always being enabled 2020-01-26 15:33:36 +01:00
ISSOtm 6fc5097278 Allow outputting dep files to stdout using - 2020-01-26 15:33:36 +01:00
ISSOtm 12f2f654dd Add -MG
This option allows for automatic dependency detection and generation:
as soon as a missing file is found, it is output to the dep file, and
assembly immediately aborts. (No .o file is produced, even if `-o` was
speicified.) This doesn't cause an error, either; the point is that once
the file is added to the dep file, the Makefile is re-parsed, and this
time the file will be generated, so the dep list builds up automatically.
This mimicks GCC's option and behavior.
2020-01-26 15:33:36 +01:00
ISSOtm 0649b360fb Allow specifying multiple dependency targets
This is done to match GCC's behavior.
Also, this unifies the code of -MT and -MQ.
2020-01-26 15:32:45 +01:00
ISSOtm f1f314270d Add -MQ
Just like GCC's -MQ, this is basically -MT but the file name is escaped.
2020-01-26 15:32:45 +01:00
ISSOtm 1fb9f90f0f Add -MT option
Allows overriding the output file in dependencies, which also allows
outputting those without also outputting the object file.
This, again, mimicks GCC's option.
2020-01-26 15:32:45 +01:00
ISSOtm bfa8da78a6 Add -MP option
Adds a phony target to every included file, mimicking gcc's
2020-01-26 15:32:45 +01:00
Eldred Habert fb81733b2b Merge pull request #472 from ISSOtm/romx-tiny
Allow ROMX and WRAMX sections in restricted modes
2020-01-26 14:48:32 +01:00
Eldred Habert e7eac583da Merge pull request #477 from ISSOtm/sym_overhaul
Overhaul the symbol system
2020-01-26 14:30:47 +01:00
ISSOtm cd107855e7 Test new working label subtractions 2020-01-24 03:03:18 +01:00
ISSOtm ab9307ac61 Clean up symbol management
Stop using that bitfield for everything, including what can be determined otherwise
It also makes it easier to have a sane state, since some bits were (supposedly)
mutually exclusive
2020-01-24 02:51:48 +01:00
ISSOtm e3ef194b4f Remove local label error checking
This is actually not necessary, because RGBLINK would warn about missing labels.
Besides, through semi-esoteric ways, it is possible to define more labels in this scope,
and there's no reason to prevent that.
2020-01-24 02:51:48 +01:00
ISSOtm ab4ca9ad8c Make symbol ref in patch symbols constant 2020-01-24 02:51:48 +01:00
ISSOtm 3fb5648880 Actually rely on createsymbol never returning NULL
This reduces complexity, basically
2020-01-24 02:51:48 +01:00
ISSOtm a7c0616cd8 Rename export type enum to that
This prevents a conflict in the next commit
2020-01-24 02:51:48 +01:00
ISSOtm 51d5ff0567 Test subtracting labels 2020-01-24 02:50:24 +01:00
ISSOtm 0665146dcd Report line info on empty RPN stack 2020-01-21 03:12:43 +01:00
ISSOtm 1f8422575e Test that all-instructions does not error out 2020-01-21 03:05:22 +01:00
ISSOtm 61c381a62c Systemize RGBLINK testing 2020-01-21 03:01:58 +01:00
ISSOtm 56d5f1588a Do not run .pipe tests if the normal variant fails
They'll most likely fail as well, just adding redundant error output
2020-01-21 00:27:28 +01:00
ISSOtm c05334dfc1 Upgrade testing to latest disasm commits 2020-01-20 14:51:25 +01:00
Eldred Habert 09d6c7a54f Merge pull request #475 from ISSOtm/licensing
Add license headers where missing
2020-01-19 15:45:46 +01:00
ISSOtm 4fe44447a2 Add license headers where missing 2020-01-19 11:11:36 +01:00
ISSOtm 23c600eef5 Remove unnecessary gitignore file
This became unnecessary when the linker script parser was rewritten ad-hoc
2020-01-19 11:02:47 +01:00
ISSOtm 50f091ab7c Fix RGBLINK failing to read args on certain machines
`char` has implementation-defined signedness, and if it's chosen to be unsigned,
then -1 gets converted to 255, which is then promoted back to `int` as... 255,
always failing the loop condition in src/link/main.c:118
`int8_t` has the correct signedness, but considering `musl_getopt_long_only`
returns `int`, better use that so as not to lose any bits
2020-01-18 22:12:25 +01:00
ISSOtm 7437f7eb85 Clarify redefinition error message 2020-01-17 03:53:27 +01:00
ISSOtm d6a99981d6 Fix checkcodebase warnings 2020-01-16 22:31:24 +01:00
ISSOtm 71fe652556 Allow ROMX and WRAMX sections in restricted modes
Closes #462, although with this implementation `BANK("some ROMX section")` would
return 0 instead of 1, which I think is benign anyways
2020-01-16 22:24:05 +01:00
ISSOtm 89917ef688 Put semicolons before labels in test suite 2020-01-16 22:09:31 +01:00
Eldred Habert 097e4c9799 Merge pull request #468 from ISSOtm/include_stem
Enforce trailing slash in include paths
2020-01-16 19:18:00 +01:00
ISSOtm 2c37a1e971 Fix default warning states
They were in the wrong order for some reason, this especially caused user
warnings to be off by default
2020-01-16 19:16:54 +01:00
ISSOtm 2c52364978 Add test for fixed section addresses 2020-01-16 18:12:42 +01:00
ISSOtm 10140f74dc Allow RGBLINK to report multiple sanity check errors 2020-01-16 18:10:35 +01:00
ISSOtm 558e8f46ff Sanity check fixed address of sections in RGBLINK
This could otherwise cause segfaults while reporting errors (!) during placement
2020-01-16 12:41:23 +01:00
ISSOtm 9ccb71205a Remove stale clean line
Those files don't exist in RGBLINK's source anymore
2020-01-14 11:42:07 +01:00
ISSOtm e50bcaa272 Enforce trailing slash in include paths
Fixes rednex#456
2020-01-13 22:48:59 +01:00
ISSOtm 86a28e8201 Provide string arguments to errors in constexpr_BankSection
How the f did it work before
2020-01-13 15:13:19 +01:00
ISSOtm 95cd0c6e53 Add test for BANK() in constant context 2020-01-12 13:09:27 +01:00
ISSOtm 23ab245cec Return a consistent number for const BANK() when erroring out 2020-01-12 13:07:48 +01:00
ISSOtm eb82476591 Make bank of "bank 0" sections known to RGBASM
This allows `BANK("Some ROM0 section")` to be used in a constant expression
2020-01-10 14:57:39 +01:00
ISSOtm f1f70d250a Add test for DEF(@) 2020-01-09 06:10:28 +01:00
ISSOtm 98a221d6b6 Add test for DEF(@) 2020-01-09 02:10:48 +01:00
Eldred Habert fb22d12b0f Merge pull request #463 from ISSOtm/windows_test_suite
Run tests on MinGW versions
2020-01-09 01:15:47 +01:00
ISSOtm 83249ed69f Cap the number of concurrent jobs for testing
This has a serious tendency to just blow up process load (~35 here with the shim)
2020-01-09 01:10:51 +01:00
ISSOtm 1534df0b3c Use minGW's pkg-config 2020-01-09 01:10:51 +01:00
ISSOtm ece9177f5a Produce shims to run the test suite on Windows bins via Wine 2020-01-09 01:10:51 +01:00
ISSOtm 8a90d74340 Ignore line endings in test suite
This removes many false positives with Windows
2020-01-09 01:10:51 +01:00
ISSOtm 5a06fad31e Separate stdout and stderr in tests
POSIX leaves undefined the order of output if stderr is injected into stdout,
and in practice it differs on Windows (Linux buffers both streams separately,
Windows interleaves them as they arrive without buffering).
This should help testing on other platforms
2020-01-09 01:10:51 +01:00
Eldred Habert add07259f4 Merge pull request #465 from ISSOtm/rebuild_version
Always update version
2020-01-09 01:01:11 +01:00