diff --git a/include/mes/lib.h b/include/mes/lib.h index ceb2fb48..7f840006 100644 --- a/include/mes/lib.h +++ b/include/mes/lib.h @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019,2020 Jan (janneke) Nieuwenhuizen + * Copyright © 2016,2017,2018,2019,2020,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -23,6 +23,9 @@ #include +#define __FILEDES_MAX 512 +extern char *__brk; + char *cast_intp_to_charp (int const *i); char *cast_long_to_charp (long i); long cast_charp_to_long (char const *); @@ -34,14 +37,11 @@ void __ungetc_init (); void __ungetc_clear (int filedes); void __ungetc_set (int filedes, int c); int __ungetc_p (int filedes); -double abtod (char const **p, int base); long abtol (char const **p, int base); -char *dtoab (double number, int base, int signed_p); char *itoa (int number); char *ltoa (long number); char *ltoab (long x, int base); char *ntoab (long number, unsigned base, int signed_p); -char *ultoa (unsigned long number); char *utoa (unsigned number); int eputc (int c); int fdgetc (int fd); @@ -61,10 +61,12 @@ char *search_path (char const *file_name); ssize_t _read (int fd, void *buffer, size_t size); void assert_msg (int check, char *msg); -extern char *__brk; -extern void (*__call_at_exit) (void); - -#define __FILEDES_MAX 512 +long __mesabi_imod (long a, long b); +long __mesabi_idiv (long a, long b); +void *__memcpy (void *dest, void const *src, size_t n); +void *__memmove (void *dest, void const *src, size_t n); +void *__memset (void *s, int c, size_t n); +int __raise (int signal); #if !SYSTEM_LIBC void __assert_fail (char const *s, char const *file, unsigned line, @@ -75,16 +77,15 @@ void _exit (int code); long brk (void *addr); #endif // !SYSTEM_LIBC -long __mesabi_imod (long a, long b); -long __mesabi_idiv (long a, long b); +#if !__M2__ +extern void (*__call_at_exit) (void); +double abtod (char const **p, int base); +char *dtoab (double number, int base, int signed_p); +char *ultoa (unsigned long number); unsigned long __mesabi_umod (unsigned long a, unsigned long b); unsigned long __mesabi_udiv (unsigned long a, unsigned long b); unsigned long __mesabi_uldiv (unsigned long a, unsigned long b, unsigned long *remainder); - -void *__memcpy (void *dest, void const *src, size_t n); -void *__memmove (void *dest, void const *src, size_t n); -void *__memset (void *s, int c, size_t n); -int __raise (int signal); +#endif #endif //__MES_LIB_H diff --git a/include/stdio.h b/include/stdio.h index c8684e0f..c68576e0 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017 Jan (janneke) Nieuwenhuizen + * Copyright © 2016,2017,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -65,30 +65,33 @@ int ferror (FILE * stream); int fflush (FILE * stream); int fgetc (FILE * stream); char *fgets (char *s, int size, FILE * stream); -int fprintf (FILE * stream, char const *format, ...); int fpurge (FILE * stream); int fputc (int c, FILE * stream); int fputs (char const *s, FILE * stream); -int fscanf (FILE * stream, char const *template, ...); int fseek (FILE * stream, long offset, int whence); int getc (FILE * stream); int getchar (void); char *getlogin (void); -int printf (char const *format, ...); int putc (int c, FILE * stream); int putchar (int c); int puts (char const *s); int remove (char const *file_name); int setvbuf (FILE * stream, char *buf, int mode, size_t size); -int snprintf (char *str, size_t size, char const *format, ...); -int sprintf (char *str, char const *format, ...); -int sscanf (char const *str, char const *format, ...); int ungetc (int c, FILE * stream); long ftell (FILE * stream); size_t fread (void *ptr, size_t size, size_t count, FILE * stream); size_t freadahead (FILE * fp); size_t fwrite (void const *ptr, size_t size, size_t count, FILE * stream); +#if !__M2__ +int fprintf (FILE * stream, char const *format, ...); +int fscanf (FILE * stream, char const *template, ...); +int printf (char const *format, ...); +int snprintf (char *str, size_t size, char const *format, ...); +int sprintf (char *str, char const *format, ...); +int sscanf (char const *str, char const *format, ...); +#endif // !__M2__ + #endif // ! SYSTEM_LIBC #endif // __MES_STDIO_H diff --git a/include/sys/types.h b/include/sys/types.h index 7c2cc9be..24ea71c7 100644 --- a/include/sys/types.h +++ b/include/sys/types.h @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen + * Copyright © 2017,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -66,15 +66,23 @@ typedef unsigned gid_t; #ifndef __MES_INO_T #define __MES_INO_T #undef ino_t +#if __M2__ +typedef unsigned ino_t; +#else typedef unsigned long ino_t; #endif +#endif #if __SIZEOF_LONG_LONG__ == 8 #ifndef __MES_INO64_T #define __MES_INO64_T #undef ino64_t +#if __M2__ +typedef unsigned ino64_t; +#else typedef unsigned long long ino64_t; #endif +#endif #endif // __SIZEOF_LONG_LONG__ == 8 #if !defined (__MES_INTPTR_T) && !defined (__intptr_t_defined) @@ -83,8 +91,12 @@ typedef unsigned long long ino64_t; #undef intptr_t typedef long intptr_t; #undef uintptr_t +#if __M2__ +typedef unsigned uintptr_t; +#else typedef unsigned long uintptr_t; #endif +#endif #ifndef __MES_OFF_T #define __MES_OFF_T @@ -96,8 +108,12 @@ typedef long off_t; #ifndef __MES_OFF64_T #define __MES_OFF64_T #undef off64_t +#if __M2__ +typedef unsigned off64_t; +#else typedef unsigned long long off64_t; #endif +#endif #endif // __SIZEOF_LONG_LONG__ == 8 #ifndef __MES_PID_T diff --git a/lib/linux/malloc.c b/lib/linux/malloc.c index ea609d5d..e6f3c07e 100644 --- a/lib/linux/malloc.c +++ b/lib/linux/malloc.c @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019,2021 Jan (janneke) Nieuwenhuizen + * Copyright © 2016,2017,2018,2019,2021,2022 Jan (janneke) Nieuwenhuizen * Copyright © 2021 Danny Milosavljevic * * This file is part of GNU Mes. @@ -31,9 +31,11 @@ malloc (size_t size) { if (!__brk) __brk = cast_long_to_charp (brk (0)); +#if !__M2__ /* align what we give back. */ __brk = (char*) (((uintptr_t) __brk + sizeof (max_align_t) - 1) & -sizeof (max_align_t)); +#endif if (brk (__brk + size) == -1) return 0; char *p = __brk; diff --git a/lib/linux/read.c b/lib/linux/read.c index a57cff4a..abe2b4f4 100644 --- a/lib/linux/read.c +++ b/lib/linux/read.c @@ -27,7 +27,9 @@ ssize_t read (int filedes, void *buffer, size_t size) { long long_filedes = filedes; - ssize_t bytes = _sys_call3 (SYS_read, long_filedes, (long) buffer, (long) size); + long long_buffer = cast_voidp_to_long (buffer); + ssize_t bytes = _sys_call3 (SYS_read, long_filedes, long_buffer, size); +#if !__M2__ if (__mes_debug () > 4) { if (bytes == 1) @@ -48,5 +50,6 @@ read (int filedes, void *buffer, size_t size) eputs ("\n"); } } +#endif return bytes; } diff --git a/lib/stdlib/exit.c b/lib/stdlib/exit.c index 252ecf92..10b06d40 100644 --- a/lib/stdlib/exit.c +++ b/lib/stdlib/exit.c @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen + * Copyright © 2016,2017,2018,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -20,12 +20,16 @@ #include +#if !__M2__ void (*__call_at_exit) (void); +#endif void exit (int code) { +#if !__M2__ if (__call_at_exit) (*__call_at_exit) (); +#endif _exit (code); } diff --git a/scaffold/read.kaem b/scaffold/read.kaem index afddc146..f23e2dfb 100644 --- a/scaffold/read.kaem +++ b/scaffold/read.kaem @@ -24,28 +24,29 @@ mes_cpu=${mes_cpu:-x86} stage0_cpu=${stage0_cpu:-x86} M2-Planet \ - --bootstrap-mode \ --debug \ --architecture ${stage0_cpu} \ - -f include/m2/lib.h \ -f lib/linux/${mes_cpu}-mes-m2/crt1.c \ - -f lib/linux/${mes_cpu}-mes-m2/_exit.c \ + -f include/mes/lib-mini.h \ -f lib/linux/${mes_cpu}-mes-m2/_write.c \ - -f lib/linux/${mes_cpu}-mes-m2/syscall.c \ + -f lib/linux/${mes_cpu}-mes-m2/_exit.c \ -f include/linux/${mes_cpu}/syscall.h \ + -f lib/linux/${mes_cpu}-mes-m2/syscall.c \ -f lib/m2/cast.c \ + -f include/mes/lib.h \ -f lib/string/strlen.c \ -f lib/mes/write.c \ -f lib/mes/eputs.c \ -f lib/linux/brk.c \ - -f lib/m2/malloc.c \ + -f lib/linux/malloc.c \ -f lib/string/memset.c \ - -f lib/m2/read.c \ + -f lib/linux/read.c \ -f lib/mes/fdgetc.c \ -f lib/stdio/getchar.c \ -f lib/stdio/putchar.c \ -f lib/m2/open.c \ - -f lib/m2/mes_open.c \ + -f include/sys/types.h \ + -f include/stdio.h \ -f scaffold/read.c \ -o scaffold/read.M1