- Added support for pointer arithmetic for += and -= operators (not yet support for
+
and-
). - Added support for
__LINE__
macro. - Added support for
__FILE__
macro. - Added support for
__DATE__
macro which will always beJan 1 1970
and__TIME__
which will always be00:00:00
. - Added support for
__STDC__
,__STDC_HOSTED__
, and__STDC_VERSION__
macros.__STDC_VERSION__
claims support for C89. - Added initial support for function-like macros.
enum
support.- Added
_Bool
type. - Added support for west-=const= for variables and function arguments.
- Improved RISC-V support to work with large types (size > 11 bits).
- Added support for octal and \? escape codes.
- Make arguments that aren’t options be considered files.
- Make help output more accurately describe available options.
- Added support for multiple variable declarations per statement.
- Added support for static/inline/_Noreturn qualifiers on globals.
- Added support for static local variables.
- Make implicit return load 0 for the
main
function. - Fix dereferencing
char
pointers (or other types whose size is not equal to register size). - Added support for multi token integer types (
unsigned int
,long long
,long long int
, etc.)/ - Allow anonymous structs/enums and inline
typedef
. - Added support arrays on the stack.
- Added support for using variables in
sizeof
, including dereferencing. - Added support for string literals in
sizeof
. - Added support for variables in loop bodies.
- Added
__M2C__
,__M2C_MINOR__
, and__M2C_PATCHLEVEL__
defines. - Add support for locals in loops.
- Fixed multiple chained uses of dot and arrow operators segfaulting.
- Make arguments that aren’t options be considered files.
- Make help output more accurately describe available options.
- Fix `make install` not working.
- Convert setenv/getenv calls to use C-like pointer arithmetic.
- Add
stdbool.h
- Fixed a few
aarch64
syscalls. - Add support for
symlink
system call. - Make retrieving UEFI variables conform to spec.
- Removed undefined behavior in int2str.
- Added support for %&! to M1 for knight architecture and allowed @$ syntax.
- Mount
/dev/pts
in thewrap
environment. - Add support for symlinks in
untar
. - Switch
ungz
to use C-like pointer arithmetic. unxz
: Do not crash when input file is not found.
- Reduced
POSIX/x86/hex0-seed
from 190 to 181 bytes. - Reduced
POSIX/x86/kaem-optional-seed
from 640 to 632 bytes. - Reduced
POSIX/AMD64/hex0-seed
from 292 to 229 bytes.
- Updated
hex0
source to match the one in bootstrap-seeds.
- Added more advanced switch statement tests
- Fix a typo in the docs
- Remove VPATH from makefiles.
- add missing make ${program} targets
- Add M2-planet and M2-minimal makefile targets to .PHONY
- ensure arithmetic priority better matches the C spec
- Ignore UEFI files if Linux; ignore linux files if UEFI
- Add syscalls needed for a simple sandbox
- Fix function formatting to comply with existing standard
- Fix UEFI calling convention.
- Improve handling of relative paths in UEFI.
- Remove . from paths rather than convert them to ///.
- Fix file opening modes in UEFI (== has higher precedence than | )
- Add non-trivial access function to UEFI.
- Add UEFI task priority level defines.
- Add dummy stdint.h
- Fix sal_eax,cl and sal_rax,cl encoding.
- Move the utsname struct definition to sys/utsname.h
- Add dummy sys/wait.h
- A very rough prototype for strstr
- ensure needed libraries are read first for fcntl.h
- Fix shebang of check.sh
- makefile: Call cleanup.sh for test12 and test13
- Remove VPATH from makefile.
- Also fix kaem’s makefile
- Remove VPATH from makefile
- Remove obsolete comment from makefile
- Add wrap - A small bubblewrap like program
- clean up cc_*-isms
- Add a fully functional unxz program
- Reduced
POSIX/x86/hex0-seed
from 256 to 190 bytes. - Fix UEFI bootstrap binaries.
- Fix minor typos in comments in UEFI kaem-optional
- Make sure read function works if file descriptor is longer than 1 byte.
- Make sure read function works if file descriptor is longer than 1 byte
- Fix encoding for sal_eax,cl
- Fix regression caused by M2libc commit: fb6701a73189afca152ea1154650c315df4e6a93
- Fix encoding of some mov instructions to actually use 64-bit registers rather than 32
- Fix encoding for sal_rax,cl.
- Fix regression caused by M2libc’s fb6701a73189afca152ea1154650c315df4e6a93 commit
- Add M2libc/stdio.h to build sources.
- Set OPERATING_SYSTEM=Linux environmental variable.
- Fix a typo in a comment in cc_aarch64
- Fix regression caused by M2libc’s fb6701a73189afca152ea1154650c315df4e6a93 commit
- Fix regression caused by M2libc’s fb6701a73189afca152ea1154650c315df4e6a93 commit
- Fix regression caused by M2libc’s fb6701a73189afca152ea1154650c315df4e6a93 commit
- Added support for
#warning
. - Added global structs (and
.
operator). - Added local structs.
- Added
(u)int8_t
,(u)int16_t
and(u)int32_t
. - Properly remove blocks that are not used (e.g. after
#if 0
) - Fixed doubly indirect structs.
- Fixed a few segfaults.
- Fixed macro expressions with
)
. - Add sufficient padding when assigning global constants on 64-bit architectures.
- Fix structs greater than 512bytes in size on armv7l.
- Added
#warning
. - Added
-D
flags. - Added support for building UEFI binaries.
- Fixed macro expressions with
)
. - Fixed
--no-includes
option.
- Added a memory manager for
malloc()
andfree()
. - Added
getenv
andsetenv
calls. - Added support for building UEFI applications.
- Set SHELL variable in
kaem
. - Fix
kaem
aliases that are longer than commands. kaem
now supports running commands with 510 command line arguments instead of 254.- Fix quoted DEFINE statements in
M1
. hex2
added support for signed and unsignedrange_check
behavior.- Fix
kaem
bug where unset removes the first environment variable when a token value isNULL
.
- Added
unbz2
. - Added
replace
utility to replace strings in file. - Added
rm
to remove files. - Added
--file
and--output
toungz
. - Added
--verbose
tountar
and made default mode quiet. - Fixed some segfaults.
- Reduced
POSIX/x86/hex0-seed
from 357 to 256 bytes. - Reduced
POSIX/x86/kaem-optional-seed
from 757 to 640 bytes. - Reduced
POSIX/AMD64/hex0-seed
to from 405 to 292 bytes. - Reduced
POSIX/AMD64/kaem-optional-seed
from 896 to 618 bytes. - Add
NATIVE/x86/builder-hex0-x86-stage1.img
seed for kernel bootstrapping.
- Switched M1 defines to GAS-like style.
- All binaries except for kaem-optional are now position independent (PIE).
- Switched M1 defines to GAS-like style.
- Switch to lowercase M1 defines.
- Switch to lowercase M1 defines.