ISSOtm
5fd38c5f67
Do not try to link libpng statically
2020-02-14 03:07:24 +01:00
ISSOtm
03ed914714
Give reason to why writing the object file fails
2020-02-14 00:29:24 +01:00
ISSOtm
42faffe6f3
Make the Wine shims a separate target
2020-02-13 23:06:05 +01:00
ISSOtm
bc80e910ed
Fix two code style errors
2020-02-13 20:43:47 +01:00
ISSOtm
30a95d735a
Improve testing PC
2020-02-13 20:20:35 +01:00
ISSOtm
f01a227470
Fix non-const labels with callbacks having incorrect values when diffed
...
Basically, this broke PC, which is currently the only label-typed symbol
with a callback.
2020-02-13 20:16:59 +01:00
ISSOtm
91b65c9380
Add include guards and license header to section.h
2020-02-13 15:57:27 +01:00
ISSOtm
18c47843f1
Check if sections referenced in linker script exist
2020-02-12 15:27:07 +01:00
Eldred Habert
d5fe377c11
Merge pull request #482 from ISSOtm/conflict
...
Fix one shift/reduce and one reduce/reduce conflict
2020-02-12 01:39:18 +01:00
ISSOtm
ed4a613473
Rename productions to "reloc" when not really constant
2020-02-11 19:04:35 +01:00
ISSOtm
112098514d
Fix 1 s/r and 1 r/r conflict
...
Implements the fix suggested [here](https://github.com/rednex/rgbds/issues/44#issuecomment-69360499 ), which performed better than expected!
I'm not \*too\* fond of this but this seems like the right way
2020-02-11 18:59:55 +01:00
ISSOtm
31aa1ea474
Improve arg-shift test
...
New test case courtesy of @aaaaaa123456789
2020-02-11 11:38:57 +01:00
ISSOtm
96b6e4a76e
Add forgotten semicolon in grammar
2020-02-11 11:36:50 +01:00
ISSOtm
001b95d12a
Add SHIFT with numeric argument
...
Fixes #442 .
2020-02-11 11:25:38 +01:00
ISSOtm
3b2c862320
Make more RGBASM errors print their line number
...
Fixes #379 .
2020-02-11 09:35:19 +01:00
ISSOtm
230f849229
Fix error output slightly broken on Windows
...
Apparently, `perror` on Windows forces a newline before itself, which is
not the behavior intended. Instead, print the error message inline.
2020-02-11 09:06:38 +01:00
Eldred Habert
c37253fe5a
Merge pull request #480 from ISSOtm/section
...
Improve section management
2020-02-11 08:51:00 +01:00
Eldred Habert
0ed8d3859d
Merge pull request #481 from rednex/revert-451-atomic_output
...
Revert "Make RGBASM overwrite output files atomically"
2020-02-11 08:32:27 +01:00
ISSOtm
6963d77f8a
Add documentation for LOAD blocks
2020-02-10 09:30:33 +01:00
ISSOtm
02ea52f453
Add test for LOAD
2020-02-10 03:39:09 +01:00
ISSOtm
cdabc057a0
Allow unseekable files with INCBIN
...
Go figure the use case, but the feature is there now
2020-02-10 03:39:09 +01:00
ISSOtm
eb0d75711a
Implement LOAD/ENDL blocks
...
Basically implements and closes rednex#274.
2020-02-10 03:39:09 +01:00
ISSOtm
f121119283
Use section's offset instead of general one
...
That's more future-proof and makes more sense
2020-02-10 03:37:44 +01:00
ISSOtm
d9c1b66931
Deduplicate value output function code
2020-02-10 03:37:43 +01:00
ISSOtm
2f60e0a59e
Use meaningful types for byte output functions
2020-02-10 03:36:51 +01:00
ISSOtm
ffe9e92b48
Skip double-checking overflow in byte output
2020-02-10 03:36:51 +01:00
ISSOtm
aa90a53f34
Move 1-byte overflow check to out_AbsByte
...
This check is already performed in bulk by all functions calling it except
`out_AbsByte`, adding extra overhead to those.
2020-02-10 03:36:51 +01:00
ISSOtm
598c923506
Use callback for PC's value
...
This causes it to auto-update whenever the current section's attributes are
updated, simplifying the code and eliminating redundancy.
This should also overall reduce overhead (one extra function call on each
PC evaluation, but less bookkeeping for each byte output)
2020-02-10 03:36:51 +01:00
ISSOtm
8c4b473d6f
Add more checks to section creation in RGBASM
...
Fixes rednex#471, but also backports a couple more checks from RGBLINK
2020-02-10 03:35:55 +01:00
ISSOtm
a4fe274c25
Unify all section declarations
2020-02-10 03:35:55 +01:00
ISSOtm
34597ce6a0
Mark some section functions as const
2020-02-10 03:34:58 +01:00
ISSOtm
4a2af807b2
Remove legacy forward declaration
2020-02-10 03:34:58 +01:00
ISSOtm
d0ec35628f
Split section management into its own file
2020-02-10 03:34:58 +01:00
ISSOtm
bfdbd00092
Do some misc cleanup of output.c
2020-02-10 03:25:03 +01:00
ISSOtm
d0278d8663
Invert logic for section max sizes
...
Prep for the next commit
2020-02-10 03:25:03 +01:00
Eldred Habert
632bc2aaec
Merge pull request #476 from ISSOtm/expr_cleanup
...
Clean up expression evaluation
2020-02-10 03:10:05 +01:00
Eldred Habert
1ca59f25d0
Revert "Make RGBASM overwrite output files atomically"
2020-02-10 03:08:27 +01:00
Eldred Habert
1d0c8fa113
Merge pull request #451 from rednex/atomic_output
...
Make RGBASM overwrite output files atomically
2020-02-10 03:08:14 +01:00
ISSOtm
1d70c989be
Test one more label diff case
2020-02-10 02:55:51 +01:00
ISSOtm
818a0d0296
Test more cases in label-diff test
2020-02-10 02:51:48 +01:00
ISSOtm
ab1eb146c9
Print special message when PC is not constant
2020-02-10 02:51:48 +01:00
ISSOtm
63054ae0fd
Make more functions ignore the RPN buffer when constant
2020-02-10 02:51:48 +01:00
ISSOtm
155040240d
Improve error message when a symbol's value is not constant
2020-02-10 02:51:48 +01:00
ISSOtm
d466cab1e8
Init RPN expressions created by binary operators
2020-02-10 02:51:48 +01:00
ISSOtm
4e8b34f42e
Improve error message when a symbol is not constant
2020-02-10 02:51:48 +01:00
ISSOtm
5014f55c48
Treat PC as a symbol as well
2020-02-10 02:51:48 +01:00
ISSOtm
1d78cd0f03
Axe the constexpr expression evaluator
...
This avoids redundancy between them (and also having to port fixes and features)
The error messages have been preserved through a string reporting mechanism
2020-02-10 02:51:48 +01:00
ISSOtm
52d62c6b21
Handle subtractions between labels
2020-02-10 02:47:50 +01:00
ISSOtm
b4a73f33ce
Avoid undefined behavior when shifting in RPN math
2020-02-10 02:47:50 +01:00
ISSOtm
f9c25608e9
Ignore RPN strings when their value is known
2020-02-10 02:47:50 +01:00
ISSOtm
9fb9e63554
Reserve space for RPN expressions in a single call
...
This should mean less overhead with some commands
2020-02-10 02:47:12 +01:00
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
2e8094b712
Allow RGBASM to overwrite object files on Windows
2020-01-28 11:08:16 +01:00
ISSOtm
a9cb4f8245
Make RGBASM overwrite output files atomically
...
Fixes rednex/#446.
I am not sure this is the best (in cases where the target directory
is not writable but the target file is), but maybe this can be
toggled via a flag, for example.
2020-01-28 11:08:16 +01:00