From 6d412a7b22b7766437e2c018f31d49aa981800d9 Mon Sep 17 00:00:00 2001 From: Vincent Celier Date: Tue, 22 Apr 2003 21:52:04 +0000 Subject: [PATCH] gthr-gnat.h, [...]: new sources for implementation of --enable-threads=gnat. * gthr-gnat.h, gthr-gnat.c: new sources for implementation of --enable-threads=gnat. * Makefile.in: Add gthr-gnat.c to LIB2ADDEH. * configure.in: Add gnat to the list of thread packages * configure: Rebuild. * config/t-linux: Add gthr-gnat.c to LIB2ADDEH and LIB2ADDEHDEP From-SVN: r65961 --- gcc/ChangeLog | 9 +++++ gcc/Makefile.in | 2 +- gcc/config/t-linux | 4 +-- gcc/configure | 4 +-- gcc/configure.in | 2 +- gcc/gthr-gnat.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++ gcc/gthr-gnat.h | 43 ++++++++++++++++++++++++ 7 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 gcc/gthr-gnat.c create mode 100644 gcc/gthr-gnat.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69f116c3d936..28cbfda34ba2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2003-04-22 Vincent Celier + + * gthr-gnat.h, gthr-gnat.c: new sources for implementation of + --enable-threads=gnat. + * Makefile.in: Add gthr-gnat.c to LIB2ADDEH. + * configure.in: Add gnat to the list of thread packages + * configure: Rebuild. + * config/t-linux: Add gthr-gnat.c to LIB2ADDEH and LIB2ADDEHDEP + 2003-04-22 Neil Booth * cpplex.c (_cpp_get_fresh_line): Pop the buffer if return_at_eof. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 2858145d81c2..b8a6bb0b1cd1 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -471,7 +471,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ # Additional sources to handle exceptions; overridden by targets as needed. LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ - $(srcdir)/unwind-sjlj.c + $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h # nm flags to list global symbols in libgcc object files. diff --git a/gcc/config/t-linux b/gcc/config/t-linux index 3c73561fd269..b971c46ea212 100644 --- a/gcc/config/t-linux +++ b/gcc/config/t-linux @@ -12,5 +12,5 @@ SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver # Use unwind-dw2-fde-glibc LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ - $(srcdir)/unwind-sjlj.c -LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c + $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c +LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c gthr-gnat.c diff --git a/gcc/configure b/gcc/configure index 78f285fec47e..00bb2b26a628 100755 --- a/gcc/configure +++ b/gcc/configure @@ -2305,7 +2305,7 @@ case x${enable_threads_flag} in target_thread_file='' ;; xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ - xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix) + xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix | xgnat) target_thread_file=$enable_threads_flag ;; *) @@ -2434,7 +2434,7 @@ fi # Find some useful tools -for ac_prog in gawk mawk nawk awk +for ac_prog in mawk gawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 diff --git a/gcc/configure.in b/gcc/configure.in index be087f2c74e9..2589c13c0dae 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -518,7 +518,7 @@ case x${enable_threads_flag} in target_thread_file='' ;; xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ - xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix) + xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix | xgnat) target_thread_file=$enable_threads_flag ;; *) diff --git a/gcc/gthr-gnat.c b/gcc/gthr-gnat.c new file mode 100644 index 000000000000..9620135bf9b4 --- /dev/null +++ b/gcc/gthr-gnat.c @@ -0,0 +1,84 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 2003 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC 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 2, or (at your option) any later +version. + +GCC 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 GCC; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ + +/* As a special exception, if you link this library with other files, + some of which are compiled with GCC, to produce an executable, + this library does not by itself cause the resulting executable + to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + + +#include "gthr-gnat.h" + +#ifdef __cplusplus +#define UNUSED(x) +#else +#define UNUSED(x) x __attribute__((unused)) +#endif + +void +__gnat_default_lock (void) +{ + return; +} + +void +__gnat_default_unlock (void) +{ + return; +} + +static void (*__gnat_task_lock) () = *__gnat_default_lock; +static void (*__gnat_task_unlock) () = *__gnat_default_unlock; + + void +__gnat_install_locks (lock, unlock) + void (*lock) (); + void (*unlock) (); +{ + __gnat_task_lock = lock; + __gnat_task_unlock = unlock; + +} + +int +__gthread_active_p (void) +{ + return 0; +} + +int +__gthread_mutex_lock (__gthread_mutex_t * UNUSED (mutex)) +{ + __gnat_task_lock (); + return 0; +} + +int +__gthread_mutex_unlock (__gthread_mutex_t * UNUSED (mutex)) +{ + __gnat_task_unlock (); + return 0; +} + +#undef UNUSED + diff --git a/gcc/gthr-gnat.h b/gcc/gthr-gnat.h new file mode 100644 index 000000000000..0f49227f913f --- /dev/null +++ b/gcc/gthr-gnat.h @@ -0,0 +1,43 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 2003 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC 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 2, or (at your option) any later +version. +GCC 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 GCC; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ + +/* As a special exception, if you link this library with other files, + some of which are compiled with GCC, to produce an executable, + this library does not by itself cause the resulting executable + to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +#ifndef GCC_GTHR_GNAT_H +#define GCC_GTHR_GNAT_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_mutex_t; + +#define __GTHREAD_MUTEX_INIT 0 + +extern void __gnat_install_locks (void (*lock) (), void (*unlock) ()); +extern int __gthread_active_p (void); +extern int __gthread_mutex_lock (__gthread_mutex_t *); +extern int __gthread_mutex_unlock (__gthread_mutex_t *); + +#endif /* ! GCC_GTHR_GNAT_H */ + -- 2.39.2