Commit Graph

1518 Commits

Author SHA1 Message Date
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
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
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
fe0c269382 Use ++ and -- instead of [+-]= 1
Seriously...
2020-02-09 15:21:08 +01:00
ISSOtm
7903c14993 Fix undefined behavior when reading constant in RGBLINK 2020-02-07 14:51:26 +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
28473d314a Make implicit truncation a warning 2020-02-05 13:20:51 +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
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
d15915ef14 Simplify bankrangecheck 2020-02-03 15:36:38 +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
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
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
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
ISSOtm
7bb55469fe Fix partial paths being output to dep files with -i 2020-01-26 15:33:36 +01:00