From f5579898360cab241826dcdc2b22d0ce9d354f06 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Sun, 4 Jun 2000 21:16:04 +0000 Subject: [PATCH] libioP.h: Handle new ABI mangling. * libioP.h: Handle new ABI mangling. * stdstrbufs.cc: Likewise. From-SVN: r34395 --- libio/ChangeLog | 5 +++++ libio/libioP.h | 13 +++++++++---- libio/stdstrbufs.cc | 8 ++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/libio/ChangeLog b/libio/ChangeLog index 3e309b9..b7b30ea 100644 --- a/libio/ChangeLog +++ b/libio/ChangeLog @@ -1,3 +1,8 @@ +2000-06-04 Mark Mitchell + + * libioP.h: Handle new ABI mangling. + * stdstrbufs.cc: Likewise. + 2000-05-24 Ulrich Drepper * iostream.cc (endl): Fix bug in last change. diff --git a/libio/libioP.h b/libio/libioP.h index be70f52..171d9b9 100644 --- a/libio/libioP.h +++ b/libio/libioP.h @@ -593,13 +593,18 @@ extern int _IO_vscanf __P ((const char *, _IO_va_list)); /* VTABLE_LABEL defines NAME as of the CLASS class. CNLENGTH is strlen(#CLASS). */ #ifdef __GNUC__ -# if _G_VTABLE_LABEL_HAS_LENGTH -# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ +# if (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) +# if _G_VTABLE_LABEL_HAS_LENGTH +# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CNLENGTH #CLASS); +# else +# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ + extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CLASS); +# endif # else # define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ - extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CLASS); -# endif + extern char NAME[] asm ("_ZN" #CNLENGTH #CLASS "TVE"); +# endif /* (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) */ #endif /* __GNUC__ */ #if !defined(builtinbuf_vtable) && defined(__cplusplus) diff --git a/libio/stdstrbufs.cc b/libio/stdstrbufs.cc index 48aa719..ee10cdc 100644 --- a/libio/stdstrbufs.cc +++ b/libio/stdstrbufs.cc @@ -35,11 +35,15 @@ the executable file might be covered by the GNU General Public License. */ #if !defined(filebuf_vtable) && defined(__cplusplus) #ifdef __GNUC__ extern char filebuf_vtable[] +#if (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) asm (_G_VTABLE_LABEL_PREFIX #if _G_VTABLE_LABEL_HAS_LENGTH "7" #endif "filebuf"); +#else + asm ( "_ZN7filebufTVE" ); +#endif /* (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) */ #else /* !__GNUC__ */ #if _G_VTABLE_LABEL_HAS_LENGTH #define filebuf_vtable _G_VTABLE_LABEL_PREFIX_ID##7filebuf @@ -87,11 +91,15 @@ struct _IO_fake_stdiobuf { #ifndef stdiobuf_vtable #ifdef __GNUC__ extern struct _IO_jump_t stdiobuf_vtable +#if (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) asm (_G_VTABLE_LABEL_PREFIX #if _G_VTABLE_LABEL_HAS_LENGTH "8" #endif "stdiobuf"); +#else + asm ( "_ZN15stdiobuf_vtableTVE" ); +#endif /* (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) */ #else /* !__GNUC__ */ #if _G_VTABLE_LABEL_HAS_LENGTH #define stdiobuf_vtable _G_VTABLE_LABEL_PREFIX_ID##8stdiobuf -- 2.7.4