Commit f5579898 by Mark Mitchell Committed by Mark Mitchell

libioP.h: Handle new ABI mangling.

	* libioP.h: Handle new ABI mangling.
	* stdstrbufs.cc: Likewise.

From-SVN: r34395
parent 1f6e1acc
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> 2000-05-24 Ulrich Drepper <drepper@redhat.com>
* iostream.cc (endl): Fix bug in last change. * iostream.cc (endl): Fix bug in last change.
......
...@@ -593,13 +593,18 @@ extern int _IO_vscanf __P ((const char *, _IO_va_list)); ...@@ -593,13 +593,18 @@ extern int _IO_vscanf __P ((const char *, _IO_va_list));
/* VTABLE_LABEL defines NAME as of the CLASS class. /* VTABLE_LABEL defines NAME as of the CLASS class.
CNLENGTH is strlen(#CLASS). */ CNLENGTH is strlen(#CLASS). */
#ifdef __GNUC__ #ifdef __GNUC__
# if _G_VTABLE_LABEL_HAS_LENGTH # if (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100)
# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ # if _G_VTABLE_LABEL_HAS_LENGTH
# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \
extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CNLENGTH #CLASS); 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 # else
# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ # define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \
extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CLASS); extern char NAME[] asm ("_ZN" #CNLENGTH #CLASS "TVE");
# endif # endif /* (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) */
#endif /* __GNUC__ */ #endif /* __GNUC__ */
#if !defined(builtinbuf_vtable) && defined(__cplusplus) #if !defined(builtinbuf_vtable) && defined(__cplusplus)
......
...@@ -35,11 +35,15 @@ the executable file might be covered by the GNU General Public License. */ ...@@ -35,11 +35,15 @@ the executable file might be covered by the GNU General Public License. */
#if !defined(filebuf_vtable) && defined(__cplusplus) #if !defined(filebuf_vtable) && defined(__cplusplus)
#ifdef __GNUC__ #ifdef __GNUC__
extern char filebuf_vtable[] extern char filebuf_vtable[]
#if (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100)
asm (_G_VTABLE_LABEL_PREFIX asm (_G_VTABLE_LABEL_PREFIX
#if _G_VTABLE_LABEL_HAS_LENGTH #if _G_VTABLE_LABEL_HAS_LENGTH
"7" "7"
#endif #endif
"filebuf"); "filebuf");
#else
asm ( "_ZN7filebufTVE" );
#endif /* (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) */
#else /* !__GNUC__ */ #else /* !__GNUC__ */
#if _G_VTABLE_LABEL_HAS_LENGTH #if _G_VTABLE_LABEL_HAS_LENGTH
#define filebuf_vtable _G_VTABLE_LABEL_PREFIX_ID##7filebuf #define filebuf_vtable _G_VTABLE_LABEL_PREFIX_ID##7filebuf
...@@ -87,11 +91,15 @@ struct _IO_fake_stdiobuf { ...@@ -87,11 +91,15 @@ struct _IO_fake_stdiobuf {
#ifndef stdiobuf_vtable #ifndef stdiobuf_vtable
#ifdef __GNUC__ #ifdef __GNUC__
extern struct _IO_jump_t stdiobuf_vtable extern struct _IO_jump_t stdiobuf_vtable
#if (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100)
asm (_G_VTABLE_LABEL_PREFIX asm (_G_VTABLE_LABEL_PREFIX
#if _G_VTABLE_LABEL_HAS_LENGTH #if _G_VTABLE_LABEL_HAS_LENGTH
"8" "8"
#endif #endif
"stdiobuf"); "stdiobuf");
#else
asm ( "_ZN15stdiobuf_vtableTVE" );
#endif /* (!defined(__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100) */
#else /* !__GNUC__ */ #else /* !__GNUC__ */
#if _G_VTABLE_LABEL_HAS_LENGTH #if _G_VTABLE_LABEL_HAS_LENGTH
#define stdiobuf_vtable _G_VTABLE_LABEL_PREFIX_ID##8stdiobuf #define stdiobuf_vtable _G_VTABLE_LABEL_PREFIX_ID##8stdiobuf
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment