PATCH: Allow gcc/gthr* to be compiled by C++ as well as C
Benjamin Kosnik
bkoz@redhat.com
Wed May 30 13:05:00 GMT 2001
Loren, I'm for this patch and would like to see it in
(along with your other work WRT moving more threading config bits to
toplevel and making libstdc++-v3 use them). It seems pretty simple and
non-invasive.
I don't really have the authority to approve this patch though:
perhaps Richard or Alexandre could?
-benjamin
On Wed, 30 May 2001, Loren James Rittle wrote:
> Both libstdc++-v3/libsupc++/eh_alloc.cc and [...]/eh_globals.cc were
> written to compile against the gcc/gthr.h abstraction layer, but the
> configuration was hosed at some point and it now always maps to the
> gcc/gthr-single.h configuration even if --enable-threads was provided
> while configuring libstdc++-v3. The upshot is that C++ EH is broken
> in light of multi-threading. This is a regression from 2.95.X on at
> least some platforms.
>
> Only the gcc/gthr-posix.h change has been fully bootstrapped on
> multiple architectures. Changes to other files are identical in form.
>
> David originally caught this problem and provided a patch for
> gthr-posix.h bundled in other work. Approval for mainline and 3.0
> branch is sought since the patch to actually fix libsupc++/eh_*.cc is
> up next and requires this trivial patch.
>
> 2001-05-30 Loren J. Rittle <ljrittle@acm.org>
> John David Anglin <dave@hiauly1.hia.nrc.ca>
>
> * gthr-posix.h (__gthread_active_ptr): Cast function pointer
> to target type to allow ISO C++ compiler to accept it.
> * gthr-dce.h (__gthread_active_ptr): Likewise.
> * gthr-solaris.h (__gthread_active_ptr): Likewise.
>
> Index: gcc/gthr-dce.h
> ===================================================================
> RCS file: /cvs/gcc/egcs/gcc/gthr-dce.h,v
> retrieving revision 1.10
> diff -c -r1.10 gthr-dce.h
> *** gthr-dce.h 2001/05/26 01:31:34 1.10
> --- gthr-dce.h 2001/05/30 11:14:11
> ***************
> *** 79,85 ****
> #pragma weak pthread_yield
> #endif
>
> ! static void *__gthread_active_ptr = &pthread_create;
>
> static inline int
> __gthread_active_p (void)
> --- 79,85 ----
> #pragma weak pthread_yield
> #endif
>
> ! static void *__gthread_active_ptr = (void *) &pthread_create;
>
> static inline int
> __gthread_active_p (void)
> Index: gcc/gthr-posix.h
> ===================================================================
> RCS file: /cvs/gcc/egcs/gcc/gthr-posix.h,v
> retrieving revision 1.13
> diff -c -r1.13 gthr-posix.h
> *** gthr-posix.h 2001/05/26 01:31:34 1.13
> --- gthr-posix.h 2001/05/30 11:14:11
> ***************
> *** 75,81 ****
> #pragma weak pthread_setschedparam
> #endif
>
> ! static void *__gthread_active_ptr = &pthread_create;
>
> static inline int
> __gthread_active_p (void)
> --- 75,81 ----
> #pragma weak pthread_setschedparam
> #endif
>
> ! static void *__gthread_active_ptr = (void *) &pthread_create;
>
> static inline int
> __gthread_active_p (void)
> Index: gcc/gthr-solaris.h
> ===================================================================
> RCS file: /cvs/gcc/egcs/gcc/gthr-solaris.h,v
> retrieving revision 1.8
> diff -c -r1.8 gthr-solaris.h
> *** gthr-solaris.h 2001/05/26 01:31:34 1.8
> --- gthr-solaris.h 2001/05/30 11:14:11
> ***************
> *** 81,87 ****
> /* This will not actually work in Solaris 2.5, since libc contains
> dummy symbols of all thr_* routines. */
>
> ! static void *__gthread_active_ptr = &thr_create;
>
> static inline int
> __gthread_active_p (void)
> --- 81,87 ----
> /* This will not actually work in Solaris 2.5, since libc contains
> dummy symbols of all thr_* routines. */
>
> ! static void *__gthread_active_ptr = (void *) &thr_create;
>
> static inline int
> __gthread_active_p (void)
>
More information about the Libstdc++
mailing list