ISSOtm
b6bf7ae620
Fix RGBLINK incorrectly reading file stack nodes
...
This caused node IDs to mismatch, yielding possibly corrupted file stacks
Worst part is, the docs mentioned the reading order had to be reversed...
2020-11-04 02:52:06 +01:00
daid
642daf1a76
Update main.c
2020-11-03 13:33:57 +01:00
daid
84edfb3d88
Update output.c
2020-11-03 13:33:02 +01:00
Daid
7e620bff81
Allow rgbasm and rgblink to use stdout and stdin as input and output
2020-10-26 20:28:15 +01:00
ISSOtm
0c55703438
Improve helpers.h
...
Use C11 standard _Noreturn instead of attributes (except, of course, MSVC)
Remove unused helpers
Avoid trapping in release builds, in favor of just unreachability
Improve shim when __builtin_* are not available
2020-10-26 15:19:31 +01:00
ISSOtm
9028fb5391
Fix mistakes in RGBDS man pages
...
As reported by `mandoc -Wall`
2020-10-23 01:02:59 +02:00
anderoonies
5230104852
documentation for block comments
2020-10-19 18:05:37 +02:00
anderoonies
55be77be69
discard block comments delimited with /* */
2020-10-15 12:42:53 -04:00
Eldred Habert
42b3a17356
Merge pull request #602 from NieDzejkob/shiftstorm
...
Report only one error when invalid shift has argument
2020-10-13 15:48:16 +02:00
Jakub Kądziołka
4e1d79081c
Improve error message for negative shift arguments
2020-10-13 15:42:16 +02:00
Eldred Habert
05256946ac
Merge pull request #604 from NieDzejkob/narg-overwrite
...
Don't overwrite symbol when it's not allowed
2020-10-13 10:47:57 +02:00
Eldred Habert
73396166aa
Merge pull request #605 from NieDzejkob/invalid-labels
...
Don't consider difference of invalid labels constant
2020-10-13 10:42:05 +02:00
Jakub Kądziołka
4c5d5c7085
Don't consider difference of invalid labels constant
...
If a label is defined outside of a section, avoid trying to obtain its
value.
2020-10-12 23:03:14 +02:00
Jakub Kądziołka
045a9e8b93
Report only one error when invalid shift has argument
...
Not to mention that incrementing a variable in a loop is kinda dumb.
2020-10-12 22:54:20 +02:00
Jakub Kądziołka
4419f0d54f
remove dead function: sym_GetDefinedValue
2020-10-12 13:31:21 +02:00
Jakub Kądziołka
b07aa00d5c
Don't overwrite symbol when it's not allowed
...
When a user tried to overwrite a builtin symbol, it would change its
type despite the error, making the second try succeed. This is
problematic, as the location of a builtin symbol cannot be updated.
2020-10-12 12:35:49 +02:00
Jakub Kądziołka
dc62d60e9b
reserveSpace: don't assume one doubling is enough
2020-10-12 11:57:03 +02:00
Eldred Habert
0836f67d42
Merge pull request #601 from NieDzejkob/utf8decoder
...
utf8decoder: Use byte-sized byte argument
2020-10-12 01:49:57 +02:00
Eldred Habert
176a57a1e9
Merge pull request #600 from NieDzejkob/stray-shift
...
Report error when shifting outside a macro
2020-10-12 01:44:10 +02:00
Eldred Habert
0d02355dbf
Merge pull request #599 from NieDzejkob/stray-align
...
Report error when aligning outside of a section
2020-10-12 01:43:35 +02:00
Jakub Kądziołka
6767d11c23
utf8decoder: Use byte-sized byte argument
...
This prevents passing a negative value out of a signed char by accident.
Also renders some casts in the code superfluous.
2020-10-12 01:22:09 +02:00
ISSOtm
2dd9015dc6
Remove two stale variables from parser.y
...
They were made useless with the lexer rewrite
2020-10-12 00:52:12 +02:00
Jakub Kądziołka
217c10ddac
Report error when shifting outside a macro
2020-10-12 00:47:01 +02:00
Jakub Kądziołka
822e4e7c44
Report error when aligning outside of a section
2020-10-12 00:27:54 +02:00
ISSOtm
0b1d01792d
Indicate cur offset in linkerscript "backwards org" message
2020-10-12 00:04:08 +02:00
ISSOtm
01637768cf
Rename asmy to more explicit parser
...
This should make the purpose of that file clearer to newcomers
2020-10-11 21:03:41 +02:00
ISSOtm
6a8ae643d5
Mention that SHIFT updates _NARG
...
Fixes #598
2020-10-11 02:13:30 +02:00
ISSOtm
914856342c
Fix incorrect documentation of accepted sym names
...
No, they cannot start with a digit!
2020-10-11 01:57:27 +02:00
Rangi
effc6788eb
Fix #586 segfault: Update the charmaps hashmap when an existing charmap is resized
2020-10-07 13:21:13 -04:00
ISSOtm
06f7387466
Avoid using VLA in EQUS dumping
...
MSVC does not support those...
Also add a `develop` warning about VLAs, to avoid future incidents
2020-10-06 08:55:45 +02:00
ISSOtm
21e50eeff1
Have lexer not require <unistd.h> on MSVC
...
Required for `open`, `close`, `read`, and `STDIN_FILENO`,
which are defined elsewhere on MSVC.
2020-10-06 08:55:45 +02:00
ISSOtm
92f2055a6c
Fix implicit cast between enums
...
This caused `make develop` to fail
2020-10-05 01:53:54 +02:00
Jakub Kądziołka
b421c983d6
link: Suppress cascading errors.
2020-10-04 18:14:22 +02:00
ISSOtm
2eca43cd2d
Fix critical oversight in lexer buffer refilling
...
Since the lexer buffer wraps, the refilling gets handled in two steps:
First, iff the buffer would wrap, the buffer is refilled until its end.
Then, if more characters are requested, that amount is refilled too.
An important detail is that `read()` may not return as many characters as
requested; for this reason, the first step checks if its `read()` was
"full", and skips the second step otherwise.
This is also where a bug lied.
After a *lot* of trying, I eventually managed to reproduce the bug on an
OpenBSD VM, and after adding a couple of `assert`s in `peekInternal`, this
is what happened, starting at line 724:
0. `lexerState->nbChars` is 0, `lexerState->index` is 19;
1. We end up with `target` = 42, and `writeIndex` = 19;
2. 42 + 19 is greater than `LEXER_BUF_SIZE` (= 42), so the `if` is entered;
3. Within the first `readChars`, **`read` only returns 16 bytes**,
advancing `writeIndex` to 35 and `target` to 26;
4. Within the second `readChars`, a `read(26)` is issued, overflowing the
buffer.
The bug should be clear now: **the check at line 750 failed to work!** Why?
Because `readChars` modifies `writeIndex`.
The fix is simply to cache the number of characters expected, and use that.
2020-10-04 16:10:32 +02:00
ISSOtm
c24694233f
Fix incomplete duplication of REPT nodes
...
"Initialization, sizeof, and the assignment operator ignore the flexible array member."
Oops!
2020-10-04 04:46:01 +02:00
ISSOtm
423a7c4899
Handle \\r better
...
Translate it to \\n regardless of the lexer mode
2020-10-04 04:46:01 +02:00
ISSOtm
ee9e45b3d4
Change assertion condition in __FILE__ buf dumping
...
Removes a false positive from Clang static analysis
2020-10-04 04:46:01 +02:00
ISSOtm
5a65188ca9
Implement compact file stacks in object files
...
Gets rid of `open_memstream`, enabling Windows compatibility again
Also fixes #491 as a nice bonus!
2020-10-04 04:46:01 +02:00
ISSOtm
930080f556
Mark not unmapping macro-containing files as okay
...
There isn't really a better alternative.
Making several mappings instead requires too much bookkeeping.
2020-10-04 04:46:01 +02:00
ISSOtm
8e7afb0ab3
Move some MSVC-specific defines to platform.h
2020-10-04 04:46:01 +02:00
ISSOtm
138523570e
Fix possible uninitialized read on Windows
2020-10-04 04:46:01 +02:00
ISSOtm
82469ac0fd
Shim around mmap on Windows
2020-10-04 04:46:01 +02:00
ISSOtm
96cb5e10ed
Fix range-dependent dead code in recursion depth check
2020-10-04 04:46:01 +02:00
ISSOtm
b224cab3e0
Harmonize printing distance
2020-10-04 04:46:01 +02:00
ISSOtm
dbef51ba05
Move isWhitespace to a place where it makes more sense
2020-10-04 04:46:01 +02:00
ISSOtm
c952dd8a6e
Fix fixed-point constants not working correctly
...
And added a test to check their behavior
2020-10-04 04:46:01 +02:00
ISSOtm
542b5d18f1
Fix possible capture buffer size overflow
...
Attempt to grow it to the max size first.
Seriously, if this triggers, *how*
2020-10-04 04:46:01 +02:00
ISSOtm
71a0a42cfb
Fix C2x use of static_assert
2020-10-04 04:46:01 +02:00
ISSOtm
ac011fe69f
Use common function to discard comments in macro args
2020-10-04 04:46:01 +02:00
ISSOtm
9e3d7a50e6
Handle comments in line continuations
2020-10-04 04:46:00 +02:00