Commit Graph

110 Commits

Author SHA1 Message Date
nimaje 028bdaf951
Update ELF headers and sha256 function to better support FreeBSD 2020-10-16 12:00:42 -04:00
Jeremiah Orians 87672ddfdb
Release 1.6.0 2020-04-30 22:35:22 -04:00
deesix 205c383c5f lib: fflush stub
Paraphrasing OriansJ's IRC message while working on kaem:

GCC needs fflush(stdout) to get matching behavior, as M2-Planet doesn't
buffer. I guess we will need to make a fflush function (it'll do nothing
but return 0).
2020-03-01 18:55:32 +01:00
Jeremiah Orians 09783ac089
Fixed continue behavior and added a test to verify correct behavior 2020-02-28 18:48:58 -05:00
Jeremiah Orians 6343e48600
Major relocation of tests to better structure for future additions 2020-02-28 18:27:12 -05:00
deesix b2ece54864 aarch64: do not generate a wasteful stack anymore
Until now, each element on the compiled program stack was 128 bits long,
half of them unused because only one 64 bits value was stored.

Now it's 64 bits long, so we don't waste all that memory.

We workaround the architectural alignment restriction of the SP register by
using a free regular register. X18 is for platform use so it seems a good
candidate for this task.

At _start we copy the value of SP into X18. SP is not used anymore. When a
definition refers to SP it doesn't mean it literaly now, because here we
redefine (without renaming) the involved M1 macro definitions to operate
on X18 (easier transition; abstraction). INIT_SP is introduced.

The function arguments are passed via stack, so the offset from the Base
Pointer ("depth") to each of them is different now. Changes both to
compiler code (cc_core.c) and libc reflect that the arguments are 8 bytes
(instead of 16 bytes) apart now. Note that SUB_X0_32 and SUB_X0_48 are
removed, because we only need 8, 16 and 24 bytes subtraction to reach the
arguments from asm libc functions. SUB_X0_8 and SUB_X0_24 are introduced.
2020-02-08 00:16:54 +01:00
deesix b2b1e13b03 aarch64: test27 links to the usual 0x400000 base address 2020-02-05 13:20:58 +01:00
Jeremiah Orians aad1198faf
Revised tests to include dwarf stubs 2020-02-01 17:50:26 -05:00
fosslinux 831de6bc4a
Update kaem test to new kaem.c 2020-02-02 09:18:27 +11:00
fosslinux 510d4203ec
Add chdir family and getcwd family tests 2020-02-02 09:11:06 +11:00
Jeremiah Orians 71062011cd
Release 1.5.0 2020-02-01 16:21:10 -05:00
deesix 7dc280a10d aarch64: tests 2020-02-01 21:23:49 +01:00
deesix fbc2bf3333 aarch64: statement 2020-02-01 21:23:49 +01:00
deesix 803cf4ffa3 aarch64: flow control 2020-02-01 21:23:49 +01:00
deesix ebb0e4a3f9 aarch64: expression 2020-02-01 21:23:49 +01:00
deesix c32cb92daa aarch64: arithmetic, relational and bitwise expressions 2020-02-01 21:23:49 +01:00
deesix 39936d81cb aarch64: primary, postfix and unary expressions 2020-02-01 21:23:49 +01:00
deesix b581244df0 aarch64: load of function, constant, global and variable 2020-02-01 21:23:49 +01:00
deesix 02bac66940 aarch64: function, function call, arguments, locals and return 2020-02-01 21:23:49 +01:00
deesix 0737a2acf0 aarch64: common recursion 2020-02-01 21:23:49 +01:00
deesix 0bded017b9 aarch64: recognize the new AArch64 target architecture
Now, aarch64 is valid for --architecture on the command-line. Accordingly,
the global variable Architecture is set to the new AARCH64 constant.
Manual page updated.

Register size is configured to 8 bytes.
2020-02-01 21:23:49 +01:00
Jeremiah Orians 095664e680
Fix knight-native to be able to support much larger binaries 2020-01-31 22:43:51 -05:00
Jeremiah Orians 5c4c6aee71
prevent void foo () { if(0) {} class of segfaults 2020-01-30 18:40:45 -05:00
Jeremiah Orians 0709770730
Enabled forgotten cleanup scripts and add logic to catch ?alloc errors 2020-01-25 14:15:45 -05:00
Jeremiah Orians 4601fbe0e0
Add basic error catching to primitives and cc_strings.c 2020-01-25 11:35:28 -05:00
Jeremiah Orians 4b2a048f14
Start reducing number of segfaults possible in M2-Planet 2020-01-22 18:03:28 -05:00
Jeremiah Orians 923784c797
Starting to restrict bad input 2020-01-21 17:50:26 -05:00
Jeremiah Orians 1221a5e6dc
Replace NOP with NULL because that is what is really ment by it 2020-01-06 20:21:26 -05:00
Jeremiah Orians 375fa888d0
added support for nested structs thanks to fosslinux 2019-12-23 06:39:45 -05:00
Jeremiah Orians a10d822cff
fix segfault found thanks to fosslinux 2019-12-18 19:43:28 -05:00
Jeremiah Orians 64a3a1b674
Get division on x86/AMD64 a closer approximation of what is correct 2019-11-29 12:55:55 -05:00
Jan Nieuwenhuizen b87ddb0051
[PATCH] numerate_number: Support lower case hex. 2019-11-07 22:57:53 -05:00
Jeremiah Orians 1fc2aeab48
Removed unneeded chars as toupper eliminates them as possibilities 2019-11-02 08:35:54 -04:00
Jeremiah Orians 9eb0a8706e
Fixed amd64's xchg behavior, removed fixup_int32 and updated Changelog 2019-10-31 20:54:43 -04:00
Jeremiah Orians dea4f902b7
Adding support for additional type compatibility with C and backported
regression fix for ARMv7l debug headers
2019-10-27 12:55:07 -04:00
Jeremiah Orians 18a66f6296
Rearranged types to ensure better compliance with C type rules 2019-10-26 22:45:02 -04:00
Jeremiah Orians c2cbc518f9
Fixed missing updated test23 answers and added support for mes.c types 2019-10-26 15:40:35 -04:00
Jeremiah Orians 4c34e69c83
Added support for \a and \b 2019-10-19 14:25:51 -04:00
Jeremiah Orians 465b4c9c31
Fixup behavior on 64bit platforms 2019-06-19 21:43:34 -04:00
Jeremiah Orians f43aa4a44c
Minor tweaks to better match amd64 assembly 2019-06-03 21:01:14 -04:00
Jeremiah Orians 27cf071ee9
Release_1.3.0 2019-04-22 19:30:08 -04:00
Jeremiah Orians e55dc78597
4/24 working tests for AMD64 2019-04-19 17:43:59 -04:00
deesix a3acf66077 Global string (char*) value indirect store, to fix segfault
Because, as OriansJ found, we don't want to read the first bytes of the
value as a pointer. See global_load() for programs like:

char* s = "xyzzy\n";
int main(void){ file_print(s, 1); return 0; }

There's an alternative: "fix the GLOBAL behavior to be type sensitive" but
this indirect store was choosen because it "preserve[s] the ability to
assign new strings to a global char*".
2019-04-18 16:48:41 +02:00
Jeremiah Orians 420f8b62b9
1/24 working tests for AMD64 Port 2019-04-17 20:19:17 -04:00
Jeremiah Orians 99f2881546
Release_1.2.0 2019-04-14 10:24:13 -04:00
Jeremiah Orians 5384977d5a
23/24 working tests for armv7l 2019-04-14 08:49:11 -04:00
Jeremiah Orians 119226d569
Fixed ARMV7l stack behavior thanks to dddddd 2019-04-13 08:31:39 -04:00
Jeremiah Orians 442601197c
17/24 working tests for armv7l 2019-03-30 09:25:52 -04:00
Jeremiah Orians c3ad31d66a
15/24 working tests for armv7l 2019-03-23 18:29:19 -04:00
Jeremiah Orians 87b1daaaa9
13/24 working tests for armv7l 2019-03-17 22:34:26 -04:00