## Copyright (C) 2017 Jeremiah Orians ## This file is part of mescc-tools ## ## mescc-tools is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## mescc-tools is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with mescc-tools. If not, see .
Added support for AMD64 dwarf footers in blood-elf via --64 Added hex0 for i386 in NASM, M1 and hex0 Added hex1 for i386 in NASM, M1, hex1 and hex0 Added first generation AARCH64 elf header Added hex2 for i386 in NASM, M1, hex2 and hex1 Added M0 for i386 in NASM, M1 and hex2 Added catm for i386 in NASM, M1 and hex0 Added support for EOF in line comments in hex2 and M1; thanks to markjenkins Added prototype M1 Manpage Added prototype hex2 Manpage Added prototype blood-elf Manpage Added prototype kaem Manpage Added prototype get_machine Manpage Added cc_x86 for AMD64 in NASM and M1 Added cc_x86 for x86 in NASM and M1 Added cc_amd64 for AMD64 in NASM and M1 Added cc_amd64 for x86 in NASM and M1
Removed duplicate in kaem's help Fixed regression in M1 in regards to knight null padding
Added template ELF headers for ARM Added initial support for ARM Added official hex0 seed for AMD64 Added official hex1 seed for AMD64 Added support for Added catm NASM prototype to simplify build Added catm M1 prototype to reduce bootstrap dependency Added catm hex0 prototype to eliminate bootstrap dependencies down to hex0 Added M0 NASM prototype to simplify build Added M0 M1 prototype to reduce bootstrap dependency Added M0 hex2 prototype to eliminate bootstrap dependencies down to hex2 Verified ARM port to support M2-Planet
Updated build.sh and kaem.run to the current mescc-tools syntax Reduced get_machine's build dependencies Cleaned up x86 elf headers Removed kaem's dependence on getopt Replaced --Architecture with --architecture changed get_machine's default output to filter machine names into known families Reduced M1 null padding of strings to a single null for all architectures except Knight Updated AMD64 bootstrap kaem.run to include steps from hex0 to M0
Fixed broken test9 thanks to janneke Fixed wrong displacement calculations for ARM immediates Fixed typo in license header Fixed kaem.run to actually function and produce identical results Fixed regression caused by linux 4.17 Removed false newline added in numerate_number for zero case Fixed broken bootstrap script
Removed final dependency on getopt Removed need to know architecture numbers as that was a bad idea
Added INSTALL notes Added HACKING notes Added examples of minimal Hex1, Hex2 and M1-macro programs that may need to be written to bootstrap a particular architecture. Added useful functions to reduce bootstrap dependencies Added support for binary output in M1-macro
Changed Knight architecture offset calculation to match new standard Updated test3 lisp.s to include more functionality Updated test3 definitions file to reflect changes in Knight instruction encoding enhanced README to be more useful Pulled numerate_string functionality out of hex2 and M1 into a shared library Eliminated getopt from M1-Macro, hex2-linker and blood-elf; use --Architecture 1 instead of --Architecture=1
Corrected M1-macro incorrectly expressing negative numbers Updated test3 checksum to reflect new version of lisp.s fixed check.sh to actually perform all checks. Fixed build.sh to function in a self-hosting fashion
Removed blood-elf's dependency on getopt Removed C preprocessor macro from blood-elf needed for mescc support Removed hex2's dependency on getopt Removed C preprocessor macro from hex2 needed for mescc support Removed need for octal support in the building of hex2 Removed M1's dependency on getopt Removed C preprocessor macro from M1 needed for mescc support Removed need for sprintf from M1
Added file checks to reduce the number of error messageless faults Added a current generation M1.M1 file as a test for mescc-tools Added prototype kaem build script M1-macro now catches undefined macros to allow easier troubleshooting Added kaem build tool Added ability to track build progress in kaem Added support for line escapes in kaem Added support for --strict in kaem to halt in the event of errors Added selectable script file support in kaem Added support for PATH search to kaem with fallbacks in the event of NULL environments
flipped blood-elf from ignoring :: to :_ converted test8 into a full test Added bash style line comments to kaem Added support for raw strings to kaem Stopped showing comment lines in kaem --verbose Removed dependence on getenv to have more control over environmental lookup
Fixed stack overflow bug caused by too deeply nested recursion by transforming into iteration Fixed default repo to point to current repo Added missing license header to kaem.c Fixed infinite looping in kaem scripts that hit an error that resets the file descriptor
Removed need for strtol Removed need for a global variable in M1-Macro Removed legacy functions from kaem
Incorporated a hex0 test which implements hex1 functionality Added --output and --exec_enable options to hex2 Added --output option to M1
Wrote Hex1 in Hex0 for AMD64/ELF Added the ability to specify an output file Added exec_enable to allow the arbitrary setting of executable bits Added get_machine to enable better scripting Incorporated janneke's build scripts Added a test to test for unusual nybble and byte order/formatting issues Added blood-elf to generate elf footer capable of being used by objdump
Renamed MESCC_Tools to mescc-tools to harmonize with guix package name
Now all tests will be architecture specific Modified sprintf to behave correctly for negative numbers Converted blood-elf to read M1-macro input and output M1-macro output replaced uint with unsigned to better match the standard Harmonized MAXSTRING to 4096bytess
Incorporated janneke's patchs to fix mescc compatibility Fixed test on ARM platforms Fixed range check to behave correctly with unsigned ints
Removed the need to redirect hex2 output into a file Removed the need for chmod u+x in development paths Removed the need to redirect M1 output into a file Removed the need for chmod entirely from bootstrap path
Removed dependency on shell supporting redirects Removed need for stdint and stdbool Removed need for enum support Removed need for strtol in M1-macro
created test2 (a 32bit x86 hex assembler) with its associated build and test changes Fixed proof answers for test1 and test2 Added support to M0 for multiple architectures Added range checking into M0 to make sure immediates will fit into specified space Added a basic tutorial for generating new M0 definitions Created a M1 compatible version of test0 Added an amd64 program for enabling execute bits (might need to later alter the 0777) Added an i386 program for enabling execute bits (might need to later alter the 0777) Added rain1's improvements to gcc flags Added rain1's stack reduction recommendations Incorporated an AMD64/elf hex1 example program as a test Incorporated Test7 into make test and make clean flows
Adjusted tags to reflect current CHANGELOG Make test now depends upon test2 completing Changed how M0 processes input to reduce stack usage and improve performance Renamed M0 to M1 to reflect the additional functionality it provides Applied Janneke's patch for accepting hex numerics in M1 Refactored x86/amd64 elf headers to a standard to avoid duplication Standardized C flags for compiling M1 and Hex2 Made eval_immediates iterative instead of recursive Made identify_macros iterative instead of recursive Made process_string iterative instead of recursive Made preserve_other iterative instead of recursive Made print_hex iterative instead of recursive Incremented version numbers for hex2 and M1 Updated guix.scm to match the new version and finish the release Converted guix.scm definition for mescc_tools to use uri method instead of git
Removed unrequired temp file in test1 Clarified meaning of Label>base displacement conditional Corrected error in test0 elf32 Test1 and Test2 to reflect the fact that /bin/bash doesn't exist in guix Fixed M0 regression to continue to support original test code Corrected makefile and build scripts to reflect rename Modified test make scripts to reflect new standard elf headers Fixed base address needed by test5 and its associated checksum Harmonized flags for displaying version with standard
Removed bashisms from Test1 and Test2 to allow proper behavior on debian based systems Removed alerting on missing files in cleanup target Removed massive M0 Definition lists as they don't serve a useful purpose
Incorporated support for little Endian output format in hex2 Incorporated support for multiple input files in hex2 Added range checking for Hex2 Added support for 1 and 4 byte relative displacements Added Hex2 Test Added the ability to specify a new base address Added example M0 x86 opcode definitions Incorporated support for multiple input files in M0 Added support for little Endian immediate output in M0 Added Hex assembler example test Added support for Label>base in Hex2 Added Version info Added install target Added inital guix package definition
Displacement calculations are now based on architecture specific rules M0 Immediates now need prefixes to specify the storage space to use for the immediate
Behavior regarding !label displacements
Initial release of MESCC Tools from stage0 High Level prototypes