Commit graph

7082 commits

Author SHA1 Message Date
David Given
ed181a8d20 Ansify Paranoia, because I was getting annoyed by all the compiler warnings on
every build.
2016-11-25 20:01:43 +01:00
David Given
b21197c0c7 Merge pull request #16 from davidgiven/dtrg-pascal-mark-release
Remove the Mark() and Release() procedures from Pascal.
2016-11-24 20:45:14 +01:00
David Given
c084f9f224 Remove the Mark() and Release() procedures from the Pascal compiler and
standard library, because they never worked and come from an achingly old
version of the Pascal specification. Fix the implementations of New() and
Dispose() to use the standard C memory allocator rather than rolling their own
(also in C). Write test!
2016-11-24 20:35:26 +01:00
David Given
899f1ea4f3 Forgot to check in the change to qemuppc's brk() to set errno on memory
allocation failure.
2016-11-24 19:47:11 +01:00
David Given
3b46aadf94 Merge pull request #15 from davidgiven/dtrg-allocs
Fix various memory allocation bugs.
2016-11-23 22:35:50 +01:00
David Given
991f47098c Add a test for brk() and sbrk(). 2016-11-23 22:28:21 +01:00
David Given
6cd2a9ba81 Add a test for calloc(). 2016-11-23 22:22:04 +01:00
David Given
9481487e3d Implement calloc() (accidentally got dropped with the malloc rewrite). 2016-11-23 22:16:25 +01:00
David Given
36ab90385f Change sbrk() to take an int rather than an intptr_t (following the OpenBSD way
rather than the Linux way; various non-C bits of the ACK assume it takes an
int, so it's cleaner).
2016-11-23 22:06:24 +01:00
David Given
0aac9aafd3 Combine brk() with sbrk(); modify brk() to update the sbrk(0) value. 2016-11-23 22:04:21 +01:00
David Given
0b21f18d4c Merge pull request #14 from davidgiven/dtrg-experimental-mcgg
Merge mcg code generator to trunk
2016-11-23 21:58:31 +01:00
David Given
2367b011f5 Don't install qemu-system-ppc until openbios-ppc gets whitelisted by Travis. 2016-11-23 21:53:14 +01:00
David Given
6e9c2d5c0d Also call .trp .trap, for ncg compatibility. 2016-11-20 19:39:28 +01:00
David Given
f8fa3ece42 inn on ncg now passes the CPU tests. 2016-11-20 19:35:34 +01:00
David Given
2d0bc7ef0d Finally fix the build system issue where ackprogram would try to explicitly
link all the language libraries.
2016-11-20 18:57:44 +01:00
David Given
953c08839f inn works now; add a helper for it. 2016-11-20 12:53:44 +01:00
David Given
196fa914b3 lxa now works, I hope; traps are better (and stubbed out on qemuppc). 2016-11-20 11:57:21 +01:00
David Given
d5328492d7 Better handling of float conversions; more tests; converting to unsigned ints
works now.
2016-11-20 11:27:40 +01:00
David Given
132baac78a Add some more tests. 2016-11-20 10:46:53 +01:00
David Given
84c7b6ba90 No, sudo doesn't get openbios-ppc installed. I added a whitelisting request:
https://github.com/travis-ci/apt-package-whitelist/issues/3745
2016-11-20 10:36:30 +01:00
David Given
3f45a7d633 Need sudo to install openbios-ppc. 2016-11-20 10:09:58 +01:00
David Given
5423a175c6 Install openbios on Travis (needed by qemu-system-ppc). 2016-11-20 10:00:59 +01:00
David Given
454a7494bb cif8 and cuf8 work now. More tests. 2016-11-19 11:42:30 +01:00
David Given
cc660b230f Floats and doubles are now written out correctly. 2016-11-19 11:39:13 +01:00
David Given
db3564f35a Use .hol0 as an additional name for hol0; mcg requires it. 2016-11-19 11:09:07 +01:00
David Given
d31bc6a3f9 Made csa and csb work with mcg; adjust the libem functions and the
corresponding invocation in the ncg table so the same helpers can be used for
both mcg and ncg. Add a new IR opcode, FARJUMP, which jumps to a helper
function but saves volatile registers.
2016-11-19 10:55:41 +01:00
David Given
5208e5f751 Yet another OB1 stack format fix. 2016-11-19 10:42:22 +01:00
David Given
a4616b7124 Betterer timeout handling. 2016-11-17 22:04:50 +01:00
David Given
43439c6d0c Remember to push the result of lor onto the stack. 2016-11-17 22:04:32 +01:00
David Given
745eb8f17b Now _errsym and _erlsym are defined in the standard library, don't define them
in the program.
2016-11-16 21:13:00 +01:00
David Given
c25ad82a89 Tests can now specify (via a hacky filename suffix) which runtime they want. 2016-11-16 21:08:03 +01:00
David Given
71e6ca26d5 Add another test. 2016-11-16 20:56:45 +01:00
David Given
81bc2c74c5 A bb's regsin are no longer the same as those of its first instruction;
occasionally the first hop of a block would try to rearrange its registers (due
to evicted throughs), resulting in the phi moves copying values into the wrong
registers.
2016-11-16 20:52:15 +01:00
David Given
edfee33576 Cleanup; the test driver is now way more robust. 2016-11-16 20:50:14 +01:00
David Given
581fa4a457 Reenable eviction of corrupted registers, which had been broken by a previous
change. Change the register move code to get swaps right, or at least righter.
2016-11-15 21:55:10 +01:00
David Given
86c832ef86 Put saved registers in *actually* the write place. I hope. 2016-11-15 21:54:15 +01:00
David Given
cc686ded62 Get subtractions the right way round. 2016-11-15 20:25:11 +01:00
David Given
5e8babf098 Add a basic integer shift test. 2016-11-14 22:12:13 +01:00
David Given
c6bce0aaee Add basic integer comparison test. 2016-11-14 22:01:25 +01:00
David Given
0289b1004e Allow values left on the stack at the end of the procedure (it's legal!). 2016-11-14 21:47:49 +01:00
David Given
408b69b17d aelflod and aslod now default to not showing the memory dump. 2016-11-13 20:50:23 +01:00
David Given
91c15c1c63 Precise's qemu package is qemu-system. 2016-11-13 14:20:14 +01:00
David Given
1ef4780af4 Typo fix. 2016-11-13 14:17:38 +01:00
David Given
0699e7af97 Attempt to enable the qemuppc tests on Travis. 2016-11-13 14:10:44 +01:00
David Given
e7132183fb Fix buffer overrun: if LABEL_STARTER is seen but LABEL_TERMINATOR is not, the
label parser will keep going forever looking for the end of the label. It now
stops at the end of the string.
2016-11-13 14:04:58 +01:00
David Given
6a4f465f53 Add a rather bodged test framework for the qemuppc plat, which only runs if the
qemu-system-ppc emulator is installed.
2016-11-13 13:37:22 +01:00
David Given
e9fe1d70a6 Fix (or at least, work around) an issue with library order. Make sure the Basic
error symbols are actually defined.
2016-11-13 13:28:09 +01:00
David Given
f52cb45e49 Add just enough Open Firmware support for an output console. 2016-11-12 22:09:54 +01:00
David Given
48e74f46fc Add the very experimental qemuppc plat, intended to generate minimal images
which can be emulated using qemu (for, hopefully, a test suite). Currently it
generates images which won't run because there's no RAM.
2016-11-12 19:20:58 +01:00
David Given
852d3a691d Update the table to return call output values in the right registers. Fix the
register allocator so the corrupted registers only apply to throughs
(otherwise, you can't put output registers in corrupted registers).
2016-11-11 21:48:36 +01:00