aboutsummaryrefslogtreecommitdiff
path: root/libio
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-06-04 21:16:04 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-06-04 21:16:04 +0000
commitf5579898360cab241826dcdc2b22d0ce9d354f06 (patch)
treed0a838ab4ac7afcba16af04b63f3841da7ca8c30 /libio
parent1f6e1acc0f2017e81282604bda62db1b2b865075 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libio/libioP.h13
-rw-r--r--libio/stdstrbufs.cc8
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