Sylvie
a68bebf4a2
Use a Defer struct to close files and restore lexer state with RAII ( #1379 )
2024-03-27 10:42:53 -04:00
Sylvie
c075ffb570
Update test project commits ( #1377 )
2024-03-22 17:06:39 -04:00
Sylvie
96c808810f
Remove .simple.err files, since we require Bison 3.0 ( #1373 )
2024-03-22 15:36:32 -04:00
Sylvie
04405fb444
Use std::shared_ptr for fstack nodes ( #1371 )
2024-03-22 13:27:21 -04:00
Sylvie
dd43723e20
Use methods for RPN Expression ( #1372 )
2024-03-22 04:41:04 -04:00
Sylvie
f792580816
Only restore parent context's \@ value if it had one defined ( #1366 )
...
This way, if a child context initializes `\@`, the parent won't
reset it. And if the child context did not initialize `\@`,
then resetting it would be redundant.
2024-03-21 19:53:49 -04:00
Sylvie and ISSOtm
0300971a17
Fix some header #includes with clangd LSP ( #1370 )
...
Co-authored-by: ISSOtm <[email protected] >
2024-03-21 15:13:10 -04:00
Sylvie
0af1e512c2
Use std::get_if instead of std::visit ( #1367 )
...
`std::visit` is (arguably) cleaner code, but older versions of gcc
and clang (not very old; the ones packaged with Ubuntu 22.04 LTS)
compile them as tables of function pointers, instead of efficient
jump tables.
2024-03-20 22:37:54 -04:00
Sylvie
035678d250
Remove workaround for GitHub Actions issue ( #1368 )
2024-03-20 20:46:08 -04:00
Sylvie
554778da5b
Built-in symbols are "<builtin>", not "<command-line>" ( #1362 )
2024-03-19 16:01:45 -04:00
Sylvie
fec2266dd8
Use std::string for string-formatted values ( #1360 )
...
* Use `std::string` for string-formatted values
* Make `formatString` and `formatNumber` be `const`
2024-03-19 07:43:18 +01:00
Sylvie
33dd97b6a0
Fix CI builds for Ubuntu 22.04 ( #1361 )
...
Ubuntu 22.04 provides LLVM 14, which links an ASan version incompatible with
high-entropy ASLR in newer Linux kernels that GitHub Actions runners use.
2024-03-19 01:05:10 -04:00
Sylvie
eb99fc8681
Use a std::unordered_map for looking up sections by name ( #1357 )
2024-03-13 19:45:52 -04:00
Sylvie
8ec0d01fc4
Sort .sym files in ascending order, and test for it ( #1355 )
2024-03-13 18:32:35 -04:00
Sylvie
658286c8e4
Move a SECTION FRAGMENT test to the test/link/section-fragment folder ( #1354 )
...
Add a binary comparison for the same-label SECTION UNION test
2024-03-13 15:34:27 -04:00
Sylvie
a1bbb3b3f7
Strip CI binaries built with make ( #1345 )
2024-03-13 14:42:11 -04:00
Sylvie
67c707739d
Allow multiple identical exported numeric constants ( #1341 )
...
This still doesn't allow identical exported label constants.
That can be addressed when or if it's requested for a real use case.
Symbols only store one source filename + line number, so this
arbitrarily keeps the last read symbol as the reported one.
2024-03-13 14:06:20 -04:00
Sylvie
68f6ab5c32
Add test cases for SECTION UNION defining multiple identical labels ( #1349 )
...
Exported labels should fail to link; non-exported ones should be okay.
2024-03-13 13:34:44 -04:00
Sylvie
4f15f07dd4
Refactor link/test.sh to avoid repeating test names ( #1353 )
2024-03-13 11:43:50 -04:00
Sylvie
820f6b5b3c
Consistently format type qualifiers like const on the right ( #1347 )
2024-03-10 12:21:52 -04:00
Sylvie
17444e825a
Reduce the header declarations ( #1342 )
...
- Since we have style rules to include foo.hpp at the top of its
corresponding foo.cpp, this takes any headers included by foo.hpp
as being also guaranteed for foo.cpp.
- Use C-style <foo.h> instead of <cfoo>, since the latter only
guarantees putting symbols in the `std` namespace, which we are
not using for C functions (e.g. `printf` not `std::printf`).
- Remove now-unused `__PRETTY_FUNCTION__` reporting
2024-03-09 14:55:39 -05:00
Sylvie
3323cb56fe
Make enum patterns more explicit ( #1343 )
2024-03-09 14:55:17 -05:00
Sylvie
5681be1fd8
Use automatic allocation and std::move for RPN bytes ( #1336 )
2024-03-09 11:12:34 -05:00
Sylvie
4a7d333891
Use std::unique_ptr for rgblink sections ( #1337 )
2024-03-09 11:12:01 -05:00
Sylvie
53537cf9af
Remove now-unnecessary enum keyword ( #1338 )
...
C++ does not need it
2024-03-08 19:40:41 -05:00
Sylvie
292adb27a3
Adapt the RGBASM parser to C++ ( #1333 )
...
This uses variants instead of a `%union`, and "complete symbols"
that can call complex constructors.
2024-03-06 20:40:36 -05:00
Sylvie
e74073e480
Run clang-format on everything ( #1332 )
2024-03-04 14:22:49 -05:00
Sylvie
b004648a13
Use std::variant for symbol values ( #1331 )
2024-03-04 08:55:33 -05:00
Sylvie
447c561aaa
Use std::variant for symbol values ( #1330 )
2024-03-03 21:16:36 -05:00
Sylvie
f8dab23e8f
Use uncommented sizes for pointer-to-array arguments ( #1329 )
...
This is syntactically valid despite not being enforced, and
is a feature we already use elsewhere.
2024-03-03 19:43:08 -05:00
Sylvie
8cf446b14c
Use std::variant for lexer mmap/buffer state ( #1328 )
2024-03-03 18:45:50 -05:00
Sylvie
a71e4086a2
Use std::string_view for macro bodies ( #1326 )
...
This removes the last use of `strdup`
This required making a lot of related pointers be `const`.
That in turn conflicted with the need to `munmap()` a pointer
eventually, which was similar to the need to eventually `free()`
an `Expansion`'s contents, so I used the same solution of a
`union`. That lets us normally use the `const` pointer for
`const` correctness, and the non-`const` one for the not-really-
mutating destruction cases.
2024-03-02 13:21:28 -05:00
Sylvie
701b926288
Use RAII std::string and std::vector in randtilegen ( #1325 )
2024-03-02 11:02:26 -05:00
Sylvie
446fb07fd5
Use std::deque<std::vector> for free space ( #1323 )
2024-03-01 16:21:29 -05:00
Sylvie
1ac3c0262f
Refactor structs to use methods instead of functions ( #1322 )
2024-03-01 13:11:45 -05:00
Sylvie
043db49676
Replace NULL with nullptr ( #1321 )
2024-02-29 15:06:33 -05:00
Sylvie
eff8c324c8
Remove now-unnecessary struct keyword ( #1320 )
...
C++ acts like structs are `typedef`ed by default
We do have to keep `struct stat`, since there's ambiguity
with the function also called `stat`.
2024-02-29 14:41:58 -05:00
Sylvie
b66212e6d6
Fix fstack traces for macro nodes ( #1318 )
...
Since the lexer rewrite, MACRO nodes' fstack traces have not
included their parent REPT nodes' names.
2024-02-24 20:23:25 -05:00
Sylvie
595c066c2a
Remove #include <stdbool.h> ( #1317 )
2024-02-24 10:51:46 -05:00
Sylvie
54d6a22d19
Build with pedantically standard C++ ( #1309 )
...
* Remove array designators (not standard C++)
* Build with pedantically standard C++
2024-02-23 16:46:53 -05:00
Sylvie
c0d534f5ad
No more flexible array members (not standard C++) ( #1307 )
...
* Replace FAMs with `std::vector`s (or one `std::string`) in four `struct`s
* Anonymous types declared in an anonymous union are also non-standard
Only Clang complains about this (-Wnested-anon-types)
2024-02-22 16:22:37 -05:00
Sylvie
6d29d2a67e
Simplify fstk_FindFile usage ( #1310 )
...
* Simplify `fstk_FindFile` usage
* Use `std::string` for `fstk_FindFile`
2024-02-22 13:14:38 +01:00
Sylvie
9cdd0b8a02
No more anonymous structs (not standard C++) ( #1305 )
...
This is one step to restoring `-pedantic` builds
2024-02-19 08:12:20 +01:00
Sylvie
a02687a83e
Fix behavior of non-ASCII bytes with INCHARMAP ( #1308 )
2024-02-19 08:09:55 +01:00
Sylvie
8a49a0b714
Report "<stdin>" or "<stdout>" when using "-" as a filename placeholder ( #1297 )
...
Also fix a memory leak with `targetFileNames`
2024-02-18 17:07:25 +01:00
Sylvie
c07f3da9a1
Provide guidance to remove the deprecated rgbasm flags ( #1296 )
...
* Explain to remove the deprecated rgbasm flags
* Rephrase deprecation warnings
2024-02-18 16:16:15 +01:00
Sylvie
d71a161bc9
Phrase error messages as "Failed to", not "Could not" or "Couldn't" ( #1298 )
2024-02-18 14:52:31 +01:00
Sylvie
ef0d973187
Truncate long format spec strings before using them ( #1299 )
...
Fixes #1293
2024-02-18 14:27:03 +01:00
Sylvie
66fd5a7062
Fix some usually disabled compiler warnings ( #1286 )
...
* Fixes from temporarily re-enabling more compiler warnings
* More edits suggested by cppcheck
* Fix hanging on append_yylval_string
* Fix FOR loop increment
2024-01-18 20:47:20 +01:00
Rangi
d179f3ed28
Increment object file revision number to 10 ( #1287 )
2024-01-09 18:55:05 +01:00
Rangi
b0f2f0ffd6
Allow fewer tRNS entries than PLTE colors ( #1284 )
2023-12-31 12:47:53 +01:00
Rangi
1f3985a164
Fix build compatibility for macOS 10.14 and below ( #1280 )
...
macOS 10.15 introduced full `std::filesystem::path` support.
Before that our use of it would cause the build to fail.
This was not caught because "-mmacosx-version-min=10.9" was only
being passed to clang++ for release builds.
This passes that flag in a new static CI test build, and introduces
a hack developed by @LIJI32 to silence the availability errors,
since we use features already available in macOS 10.9.
This means we are testing both "vanilla" building,
and building static binaries using the same configuration
as during release, which should help avoiding last-minute
surprises.
2023-12-29 22:47:11 +01:00
Rangi
d5cddb202c
Update the man pages' dates and history ( #1279 )
2023-12-23 00:15:35 +01:00
Rangi
fdd45ab1dc
Improve linker script align ( #1271 )
...
An offset is now supported, and invalid values are no longer silently
truncated, aligning behaviour with other instances of the directive.
2023-12-18 07:16:48 +01:00
Rangi
39018174c5
Scramble banks from the end of the ROM ( #1273 )
...
This is more likely to test edge cases, such as having content in banks with their highest bit set.
2023-12-17 20:14:03 -05:00
Rangi and ISSOtm
5a3a215b0e
Don't delete script.cpp after building ( #1272 )
...
Ensure consistency in linker script parser interface
Make the declaration and definition visible when compiling
so that the compiler can warn about inconsistencies.
Co-authored-by: ISSOtm <[email protected] >
2023-12-17 11:42:07 -05:00
Rangi
495d701022
Use RANGE macro to abbreviate begin/end pairs ( #1269 )
2023-12-11 14:10:20 -05:00
Rangi
b886b7e611
Add LADX disassembly to test suite ( #1265 )
2023-12-11 18:21:38 +01:00
Rangi and Eldred Habert
34b2543c8b
Implement -X/--max-errors for RGBASM ( #1262 )
...
Co-authored-by: Eldred Habert <[email protected] >
2023-12-07 11:42:47 +01:00
Rangi
1fa289f2ee
Add SameBoy's BootROMs to the test suite ( #1264 )
2023-12-06 22:37:59 +01:00
Rangi
22ff7ff101
Add PinoBatch's game Libbet to the test suite ( #1260 )
2023-12-06 10:30:11 +01:00
Rangi and Eldred Habert
1402615bc0
Refactor how Makefile invokes Bison for reusability ( #1259 )
...
Co-authored-by: Eldred Habert <[email protected] >
2023-12-01 13:29:05 -05:00
Rangi
6132b77c1e
Add more tests for RGBASM code coverage ( #1257 )
...
* Add more tests for RGBASM code coverage
* Use C++ unnamed parameters, not `(void)` casting
* Fix crash in `sect_AlignPC` from #1253
2023-12-01 10:21:43 -05:00
Rangi
cee3d1c859
Add more test coverage for RGBASM ( #1256 )
...
This also fixes two bugs: `-1 >>> 32` was -1 not 0, and `macro_FreeArgs` should have been called but wasn't.
2023-11-29 15:16:05 -05:00
Rangi
2ebd7f2ea3
Allow negative alignment offsets ( #1255 )
2023-11-25 09:40:20 +01:00
Rangi
756f2866bb
Refactor alignment spec parsing ( #1253 )
2023-11-25 00:06:05 +01:00
Rangi and ISSOtm
92836408cc
Remove empty .out and .err test files ( #1249 )
...
Co-authored-by: ISSOtm <[email protected] >
2023-11-24 17:52:55 -05:00
Rangi
39e85c6dec
Document pre-ASMotor history and add links ( #1252 )
2023-11-24 18:54:33 +01:00
Rangi and Eldred Habert
a218622d73
Remove checkpatch, since it's tuned for C not C++ ( #1250 )
...
Co-authored-by: Eldred Habert <[email protected] >
2023-11-22 19:26:08 +01:00
Rangi
46e29de66f
Implement ds align[alignment, offset] ( #1181 )
2023-11-21 23:57:47 +01:00
Rangi
6f0ffcf3e1
Remove deprecated RGBGFX options ( #1246 )
2023-11-21 23:30:34 +01:00
Rangi
c7b39f094c
Update the reverse color curve ( #1241 )
...
Based on SameBoy's "accurate modern" colour mapping.
Special thanks to @Rangi42 for her patience throughout development, @LIJI32 for researching the colour curve and helping with the creation of the reverse mapping (colour spaces are *fun*!), and @coffeevalenbat for testing :)
2023-11-21 19:41:18 +01:00
Rangi
f5ae6a80f0
Rename the RGBGFX --output-* options to --auto-* ( #1245 )
...
Fixes #1243
2023-11-21 17:52:16 +01:00
Rangi
083a82f6d1
Implement rgbgfx -O ( #1240 )
2023-11-21 10:19:44 -05:00
Rangi
3c0879a3c6
Fix spurious truncation warning ( #1238 )
2023-11-20 22:51:51 +01:00
Rangi
232416b30d
Fix the hack for File::c_str to work ( #1242 )
2023-11-14 13:38:18 +01:00
Rangi
cf62ff772f
Switch to using std::filesystem ( #1235 )
...
Allows better platform-agnostic path manipulation.
Also, using `std::optional` rather than empty strings allows
correctly handling empty arguments (treating them as such,
instead of acting as they were never passed).
2023-11-13 18:10:09 +01:00
Rangi
e824e34526
Use an iterator template for enum sequence loops ( #1228 )
2023-11-12 09:19:19 +01:00
Rangi
31529524c8
Use some more C++20 features ( #1231 )
2023-11-11 20:47:53 -05:00
Rangi
dde9f2bb79
Rename some RPN constants for consistency ( #1230 )
2023-11-08 21:30:27 +01:00
Rangi
5711c088e5
Add exact dates for history ( #1233 )
...
Citations (I think these would be excessive in the readme itself, but maybe the dates could have links?):
- Carsten Sørensen's ASMotor: <http://otakunozoku.com/RGBDSdocs/geninfo.htm >
- Justin Lloyd's RGBDS: <http://otakunozoku.com/rednex-gameboy-development-system/ >
- Vegard Nossum's rgbds-linux: <https://github.com/vegard/rgbds-linux/commit/e895832b2b89cf341ef84ee43e70aaa41f002fed >
- Anthony J. Bentley's fork: <https://github.com/bentley/rgbds_/commits/?after=60451fd41fc6dd0446798c8598f5effaacc2d065+69 > (prior to <https://gbdev.gg8.se/forums/viewtopic.php?id=81 >)
- Rednex move: <https://github.com/gbdev/rgbds/commit/0588e42520c7882c27cd67fd3ac518f99fc93adf >
- MIT relicensing: <https://github.com/gbdev/rgbds/commit/1a5c423984ca6cce1cb0b6b2100836bf4aa56e84 >
- Gbdev move: <https://github.com/gbdev/rgbds/commit/6eb284f99e7adb18dcad5e14bd619c08dfc864e6 >
The "neutral name" is clarified as Rednex, since we still use that name elsewhere in the readme, the sidebar, etc.
2023-11-08 21:25:27 +01:00
Rangi
765ae3f484
Build a code coverage report with gcov and lcov ( #1221 )
2023-11-08 00:03:26 +01:00
Rangi
f3dbf17b78
AUTHORS and more copyright comments are redundant with CONTRIBUTORS.rst ( #1227 )
2023-11-07 17:57:59 -05:00
Rangi
8eeb40cca8
Implement #"raw strings" ( #1122 )
...
Fixes #1121
2023-11-07 23:48:23 +01:00
Rangi
9fc088dcb0
Fix the FOR loop count formula ( #1222 )
2023-11-07 23:43:46 +01:00
Rangi
5379e51094
Make requested revisions to recent PRs ( #1195 )
2023-11-07 23:11:08 +01:00
Rangi
05a0905582
Fix the rgbgfx color curve ( #1200 )
2023-11-07 22:24:37 +01:00
Rangi
1e70e703a7
Build everything as C++ ( #1176 )
2023-11-07 21:45:56 +01:00
Rangi
78d83be2b2
Have the eqn preprocessor run on rgbasm(5) and rgbgfx(1) ( #1225 )
2023-11-07 18:08:13 +01:00
Rangi
a28f32a8a0
Download libpng source from GitHub, not SourceForge ( #1223 )
2023-11-07 08:29:01 +01:00
Rangi
6ac1dd8966
Fix RGBGFX -r with -d 1 ( #1224 )
2023-11-07 08:25:30 +01:00
Rangi
28358b55fe
Separate multiple instructions per line with :: ( #1210 )
2023-11-05 19:13:33 +01:00
Rangi
0afb6cd53c
Reminder to update the Dockerfile version for a release ( #1219 )
2023-11-05 18:54:15 +01:00
Rangi
143e76b7e3
Output the map file summary at the top of the file ( #1203 )
2023-11-05 15:43:58 +01:00
Rangi
f8af569680
Shorten license comments and consolidate an AUTHORS file ( #1217 )
2023-11-05 09:54:32 +01:00
Rangi
259ec58140
Implement ENDSECTION ( #1211 )
2023-11-04 23:41:17 +01:00
Rangi
99727cbe99
#!/bin/bash -> #!/usr/bin/env bash (#1216 )
2023-11-04 23:37:34 +01:00
Rangi
46e67ee078
Remove deprecated RGBASM features ( #1215 )
...
- Escaped commas "\," inside strings
- `name: MACRO` syntax
- `__FILE__` and `__LINE__`
- `-H/--nop-after-halt` and `-l/--auto-ldh` on by default
2023-11-04 23:22:46 +01:00
Rangi
28d92b7be3
Update ucity for testing ( #1212 )
2023-11-04 10:23:27 +01:00
Rangi
c869edd1d2
Implement SIZEOF and STARTOF for section types ( #1205 )
2023-11-03 08:50:04 +01:00