From f245237f8356b9746f339ad78a12a50c9720107f Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 19 Jun 2018 20:29:25 +0200 Subject: [PATCH] mescc: Support gnu toolchain: libtcc1. * lib/libtcc1.c: New file. * lib/libc+tcc-gcc.c: Remove libtcc1 stubs. --- build-aux/build-mes-gcc.sh | 1 + lib/gcc.c | 21 ------ lib/libc+tcc-gcc.c | 84 ---------------------- lib/libtcc1.c | 143 +++++++++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+), 105 deletions(-) create mode 100644 lib/libtcc1.c diff --git a/build-aux/build-mes-gcc.sh b/build-aux/build-mes-gcc.sh index 37d411ba..6f47e542 100755 --- a/build-aux/build-mes-gcc.sh +++ b/build-aux/build-mes-gcc.sh @@ -71,6 +71,7 @@ ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libc-mini ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libc ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libgetopt ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libc+tcc +ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libtcc1 ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libc+gnu ARCHDIR=1 NOLINK=1 sh build-aux/cc-mes-gcc.sh lib/libg diff --git a/lib/gcc.c b/lib/gcc.c index ef0ac469..8687b352 100644 --- a/lib/gcc.c +++ b/lib/gcc.c @@ -51,27 +51,6 @@ sleep (unsigned int seconds) return nanosleep (&requested_time, &remaining); } -// gcc-3.2 -double -__divdi3 (double a, double b) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__divdi3 stub\n"); - stub = 1; - return ((int)a / (int)b); -} - -double -__moddi3 (double a, double b) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__moddi3 stub\n"); - stub = 1; - return ((int) a %(int)b); -} - // gcc-3.4 void unsetenv (char const *name) diff --git a/lib/libc+tcc-gcc.c b/lib/libc+tcc-gcc.c index 02f1f2ff..d50e82c3 100644 --- a/lib/libc+tcc-gcc.c +++ b/lib/libc+tcc-gcc.c @@ -74,87 +74,3 @@ setjmp (jmp_buf env) env[0].__sp = (int)&env; return 0; } - -unsigned long long -__udivdi3 (unsigned long long a, unsigned long long b) -{ - int ai = a; - int bi = b; - return ai / bi; -} - -unsigned long long -__umoddi3 (unsigned long long a, unsigned long long b) -{ - int ai = a; - int bi = b; - return ai % bi; -} - -unsigned long long -__lshrdi3 (unsigned long long a, int b) -{ - return a >> b; -} - -long long -__ashldi3 (long long a, int b) -{ - return a << b; -} - -long long -__ashrdi3 (long long a, int b) -{ - return a >> b; -} - -long double -__floatundixf (unsigned long long a) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__floatundix stub\n"); - stub = 1; - return 0; -} - -unsigned long long -__fixunsxfdi (double a1) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__fixunsxfdi stub\n"); - stub = 1; - return 0; -} - -unsigned long long -__fixdfdi (double a1) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__fixdfdi stub\n"); - stub = 1; - return 0; -} - -unsigned long long -__fixxfdi (double a1) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__fixxfdi stub\n"); - stub = 1; - return 0; -} - -unsigned long long -__fixsfdi (double a1) -{ - static int stub = 0; - if (__mes_debug () && !stub) - eputs ("__fixsfdi stub\n"); - stub = 1; - return 0; -} diff --git a/lib/libtcc1.c b/lib/libtcc1.c new file mode 100644 index 00000000..5c1fe9cd --- /dev/null +++ b/lib/libtcc1.c @@ -0,0 +1,143 @@ +/* -*-comment-start: "//";comment-end:""-*- + * Mes --- Maxwell Equations of Software + * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen + * + * This file is part of Mes. + * + * Mes 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. + * + * Mes 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 Mes. If not, see . + */ + +double +__divdi3 (double a, double b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__divdi3 stub\n"); + stub = 1; + return ((int)a / (int)b); +} + +double +__moddi3 (double a, double b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__moddi3 stub\n"); + stub = 1; + return ((int) a %(int)b); +} + +unsigned long long +__udivdi3 (unsigned long long a, unsigned long long b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__udivdi3 stub\n"); + stub = 1; + int ai = a; + int bi = b; + return ai / bi; +} + +unsigned long long +__umoddi3 (unsigned long long a, unsigned long long b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__umoddi3 stub\n"); + stub = 1; + int ai = a; + int bi = b; + return ai % bi; +} + +unsigned long long +__lshrdi3 (unsigned long long a, int b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__lshrdi3 stub\n"); + stub = 1; + return a >> b; +} + +long long +__ashldi3 (long long a, int b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__ashldi3 stub\n"); + stub = 1; + return a << b; +} + +long long +__ashrdi3 (long long a, int b) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__ashrdi3 stub\n"); + stub = 1; + return a >> b; +} + +long double +__floatundixf (unsigned long long a) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__floatundixf stub\n"); + stub = 1; + return 0; +} + +unsigned long long +__fixunsxfdi (double a1) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__fixunsxfdi stub\n"); + stub = 1; + return 0; +} + +unsigned long long +__fixdfdi (double a1) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__fixdfdi stub\n"); + stub = 1; + return 0; +} + +unsigned long long +__fixxfdi (double a1) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__fixxfdi stub\n"); + stub = 1; + return 0; +} + +unsigned long long +__fixsfdi (double a1) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("__fixsfdi stub\n"); + stub = 1; + return 0; +}