On Mon, Jan 16, 2023 at 05:21:26PM +0100, tccm wrote: > Would some developer familiar with the tinycc internals be kind to help > with adding the needed minimal aout support, by giving directions > for the modification or, best of all, by adding the support? > > There is no need to handle aout object files, only statically linked > executables.
Answering an off-list question: It is known how the header fields need to be initialized on Minix-2. The proof-of-concept code is about as follows: struct exec { unsigned short a_magic; unsigned char a_flags; unsigned char a_cpu; unsigned char a_hdrlen; unsigned char a_unused; unsigned short a_version; unsigned a_text; unsigned a_data; unsigned a_bss; unsigned a_entry; int a_total; int a_syms; }; aex.a_magic = 0x301; /* OMAGIC */ aex.a_flags = 0x10; /* flags, A_EXEC 0x10 executable, 0x20 sep I&D */ aex.a_cpu = 0x10; /* cpu id, A_I80386 0x10 intel i80386 */ aex.a_hdrlen = 32; /* length of header, 32 */ aex.a_unused = 0; /* reserved for future use */ aex.a_version = 0; /* version stamp (not used at present) */ aex.a_text = text.len; aex.a_data = data.len; aex.a_bss = bss.len; aex.a_entry = 0xb4; /* the value that works in our tinycc experiments */ aex.a_total = 131072 + data.len + bss.len; /* extra 128K is hardcoded here as an example, this is the amount of memory OS will allow the process to allocate; a command line argument to tinycc can be helpful, but there is a tool to adjust this limit afterwards */ aex.a_syms = 0; /* size of symbol table */ OTOH the differences between various aout flavours are quite small when we only need to create executables. If there were f.i. corresponding support for Linux a.out, it would be a trivial matter to adjust for Minix-2. /tccm _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel