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
Eldred Habert
36ca18bc7b
Merge pull request #466 from AntonioND/an/warning
...
Fix declaration of constexpr_BankSymbol()
2020-01-09 00:46:47 +01:00
ISSOtm
6d9399e3a0
Always update version
...
Implements https://github.com/rednex/rgbds/pull/378#issuecomment-569836686
2020-01-09 00:27:22 +01:00
Eldred Habert
676800476d
Merge pull request #430 from ISSOtm/known_selfbank
...
Make `BANK(@)` and `BANK("section")` known to RGBASM
2020-01-08 18:56:28 +01:00
Eldred Habert
4dfa3157e5
Merge pull request #454 from ISSOtm/unlocked_windows
...
Fix mingw build
2020-01-08 13:14:13 +01:00
Eldred Habert
f26cfa2d94
Merge pull request #455 from ISSOtm/man
...
Overhaul RGBDS man pages and help messages
2020-01-07 22:44:58 +01:00
ISSOtm
d3328406a2
Improve jr out-of-reach error message
2020-01-02 14:06:40 +01:00
ISSOtm
3564b3f9ea
Have jr offset wrap with 16 bits
...
Overflow with `int16_t` is defined to two's complement so it's OK
This could trigger when jumping from the top of ROM0 to HRAM
2020-01-02 14:03:54 +01:00
ISSOtm
b81faeccfa
Rename rgbfix long opt verbose to validate
...
The previous name was probably copy-pasted, it was completely wrong
2019-12-29 17:41:19 +01:00
ISSOtm
1c4cb2cd2d
Add warning option to RGBASM man synopsis
2019-12-29 17:38:46 +01:00
ISSOtm
6959b76749
Rework help/usage messages
...
Trimmed down the option lists as per @bentley's request;
Reinstated the man pages' synopsis
2019-12-29 17:38:08 +01:00
ISSOtm
8a1e920e23
Fix incorrect line counting when running REPT blocks.
...
Fixes #461
2019-12-12 23:46:16 +01:00
ISSOtm
606519c515
Touch up ds documentation as per rednex#350
2019-12-12 23:22:51 +01:00
ISSOtm
34618e0294
Overhaul RGBDS man pages and help messages
2019-12-12 23:22:51 +01:00
ISSOtm
373762dedc
Fix lack of newline when passing no files to RGBLINK
2019-12-10 18:35:40 +01:00
ISSOtm
b30dfb166b
Fix a line over 80 chars
2019-12-08 00:08:44 +01:00
ISSOtm
36db3257f3
Align fatalerror return code with every other one
2019-12-08 00:07:48 +01:00
ISSOtm
cad23465a5
Remove flex from the list of dependencies in the README
2019-12-08 00:04:15 +01:00
ISSOtm
d23401316e
Improve pc-bank test
2019-12-07 23:44:00 +01:00
ISSOtm
b49e025703
Allow BANK() in constexpr expressions
2019-12-07 23:43:02 +01:00
ISSOtm
e4f4706508
Add tests for new "known self-bank"
2019-12-07 22:15:07 +01:00
ISSOtm
02fe73d1f3
Make BANK("Section") known at assembling time when possible
...
If the target section is in the current file and its bank is known,
this means this value is known prior to linking.
2019-12-07 22:15:07 +01:00
ISSOtm
74f43d4e09
Add a way to seek a SECTION by name without creating one
2019-12-07 22:15:07 +01:00
ISSOtm
54ed050ecf
Make BANK(@) known at assembling time when possible
...
If the current section's bank is fixed, this means this value is
known prior to linking.
2019-12-07 22:12:57 +01:00
ISSOtm
f262d3b34b
Fix undefined behavior in readlong
...
See the new comment for what caused the UB, and how it was fixed
2019-12-07 21:19:13 +01:00