crtstuff.c (__frame_dummy): New function for irix6.

* crtstuff.c (__frame_dummy): New function for irix6.
        (__do_global_ctors): Call __frame_dummy for irix6.
        * iris6.h (LINK_SPEC): Hide __frame_dummy too.

Co-Authored-By: Jeffrey A Law <law@cygnus.com>

From-SVN: r17281
This commit is contained in:
Jim Wilson 1998-01-02 22:50:23 +00:00 committed by Jeff Law
parent 4aa0a3f4e8
commit 35a42f5f33
3 changed files with 23 additions and 6 deletions

View File

@ -1,3 +1,10 @@
Fri Jan 2 23:40:09 1998 Jim Wilson (wilson@cygnus.com)
Jeffrey A Law (law@cygnus.com)
* crtstuff.c (__frame_dummy): New function for irix6.
(__do_global_ctors): Call __frame_dummy for irix6.
* iris6.h (LINK_SPEC): Hide __frame_dummy too.
Fri Jan 2 04:57:57 1998 Weiwen Liu <liu@hepmail.physics.yale.edu>
* alpha.c (vms_valid_decl_attribute_p): Move within #if OPEN_VMS.

View File

@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. Iris version 6.
Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -541,5 +541,5 @@ do { \
%{!static: \
%{!shared: %{!non_shared: %{!call_shared: -call_shared -no_unresolved}}}} \
%{rpath} -init __do_global_ctors -fini __do_global_dtors \
%{shared:-hidden_symbol __do_global_ctors,__do_global_dtors,__EH_FRAME_BEGIN__} \
%{shared:-hidden_symbol __do_global_ctors,__do_global_dtors,__EH_FRAME_BEGIN__,__frame_dummy} \
-_SYSTYPE_SVR4 %{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64} %{!mabi*: -n32}"

View File

@ -1,6 +1,6 @@
/* Specialized bits of code needed to support construction and
destruction of file-scope objects in C++ code.
Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1991, 94-97, 1998 Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@monkeys.com).
This file is part of GNU CC.
@ -257,6 +257,18 @@ __do_global_dtors ()
__deregister_frame_info (__EH_FRAME_BEGIN__);
#endif
}
#ifdef EH_FRAME_SECTION_ASM_OP
/* Define a function here to call __register_frame. crtend.o is linked in
after libgcc.a, and hence can't call libgcc.a functions directly. That
can lead to unresolved function references. */
void
__frame_dummy ()
{
static struct object object;
__register_frame_info (__EH_FRAME_BEGIN__, &object);
}
#endif
#endif
#endif /* defined(INIT_SECTION_ASM_OP) */
@ -387,15 +399,13 @@ __do_global_ctors_aux () /* prologue goes in .text section */
/* This case is used by the Irix 6 port, which supports named sections but
not an SVR4-style .init section. __do_global_ctors can be non-static
in this case because we protect it with -hidden_symbol. */
extern char __EH_FRAME_BEGIN__[];
static func_ptr __CTOR_END__[];
void
__do_global_ctors ()
{
func_ptr *p;
#ifdef EH_FRAME_SECTION_ASM_OP
static struct object object;
__register_frame_info (__EH_FRAME_BEGIN__, &object);
__frame_dummy ();
#endif
for (p = __CTOR_END__ - 1; *p != (func_ptr) -1; p--)
(*p) ();