diff options
author | Mark Mitchell <mark@codesourcery.com> | 2000-06-04 21:16:04 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2000-06-04 21:16:04 +0000 |
commit | f5579898360cab241826dcdc2b22d0ce9d354f06 (patch) | |
tree | d0a838ab4ac7afcba16af04b63f3841da7ca8c30 /libio | |
parent | 1f6e1acc0f2017e81282604bda62db1b2b865075 (diff) | |
download | gcc-f5579898360cab241826dcdc2b22d0ce9d354f06.zip gcc-f5579898360cab241826dcdc2b22d0ce9d354f06.tar.gz gcc-f5579898360cab241826dcdc2b22d0ce9d354f06.tar.bz2 |
libioP.h: Handle new ABI mangling.
* libioP.h: Handle new ABI mangling.
* stdstrbufs.cc: Likewise.
From-SVN: r34395
Diffstat (limited to 'libio')
-rw-r--r-- | libio/ChangeLog | 5 | ||||
-rw-r--r-- | libio/libioP.h | 13 | ||||
-rw-r--r-- | 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 <mark@codesourcery.com> + + * libioP.h: Handle new ABI mangling. + * stdstrbufs.cc: Likewise. + 2000-05-24 Ulrich Drepper <drepper@redhat.com> * 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 |