diff options
author | dannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-14 02:38:37 +0000 |
---|---|---|
committer | dannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-14 02:38:37 +0000 |
commit | 9e51385b8df5adbbb04123513f900514bf91e55b (patch) | |
tree | 654abed38b0324efc35de124e2281685a7eed705 /gcc/config/i386/cygming-crtend.c | |
parent | 4015e6f0a28f072b64a4a8ea5b461c5e4111cd44 (diff) | |
download | gcc-9e51385b8df5adbbb04123513f900514bf91e55b.tar.gz |
ChangeLog/libgcc
2007-06-14 Danny Smith <dannysmith@users.sourceforge.net>
* config.host(*-cygwin* |*-mingw* ): Add crtbegin.o, crtend.o to
extra_parts. Add config/i386/t-cygming to tmake_file.
* config/i386/t-cygming: New file with rules for crtbegin.o, crtend.o.
ChangeLog/gcc
2007-06-14 Danny Smith <dannysmith@users.sourceforge.net>
* config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
(DWARF2_UNWIND_INFO): Override default if configured with
SJLJ EH disabled.
* config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
(ENDFILE_SPEC): Add crtend.o.
* config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
(ENDFILE_SPEC): Add crtend.o.
(TARGET_USE_JCR_SECTION): Define.
(MD_UNWIND_SUPPORT): Define for 32-bit target.
* config/i386/cygming-crtbegin.c: New file.
* config/i386/cygming-crtend.c: New file.
2007-06-14 Pascal Obry Pascal Obry <obry@adacore.com>
* config/i386/w32-unwind.h: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125696 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/cygming-crtend.c')
-rwxr-xr-x | gcc/config/i386/cygming-crtend.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/gcc/config/i386/cygming-crtend.c b/gcc/config/i386/cygming-crtend.c new file mode 100755 index 00000000000..92e133099e4 --- /dev/null +++ b/gcc/config/i386/cygming-crtend.c @@ -0,0 +1,86 @@ +/* crtend object for windows32 targets. + Copyright (C) 2007 Free Software Foundation, Inc. + + Contributed by Danny Smith <dannysmith@users.sourceforge.net> + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ + +/* Target machine header files require this define. */ +#define IN_LIBGCC2 + +/* auto-host.h is needed by cygming.h for HAVE_GAS_WEAK and here + for HAVE_LD_RO_RW_SECTION_MIXING. */ +#include "auto-host.h" +#include "tconfig.h" +#include "tsystem.h" +#include "coretypes.h" +#include "tm.h" +#include "unwind-dw2-fde.h" + +#if defined(HAVE_LD_RO_RW_SECTION_MIXING) +# define EH_FRAME_SECTION_CONST const +#else +# define EH_FRAME_SECTION_CONST +#endif + +#if DWARF2_UNWIND_INFO +/* Terminate the frame unwind info section with a 0 as a sentinel; + this would be the 'length' field in a real FDE. */ + +static EH_FRAME_SECTION_CONST int __FRAME_END__[] + __attribute__ ((unused, section(EH_FRAME_SECTION_NAME), + aligned(4))) + = { 0 }; +#endif + +#if TARGET_USE_JCR_SECTION +/* Null terminate the .jcr section array. */ +static void *__JCR_END__[1] + __attribute__ ((unused, section(JCR_SECTION_NAME), + aligned(sizeof(void *)))) + = { 0 }; +#endif + + +extern void __gcc_register_frame (void); +extern void __gcc_deregister_frame (void); + +static void register_frame_ctor (void) __attribute__ ((constructor (0))); +static void deregister_frame_dtor (void) __attribute__ ((destructor (0))); + + +static void +register_frame_ctor (void) +{ + __gcc_register_frame (); +} + +static void +deregister_frame_dtor (void) +{ + __gcc_deregister_frame (); +} |