From patchwork Mon Aug 15 17:30:19 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rainer Orth X-Patchwork-Id: 110082 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 41839B6F76 for ; Tue, 16 Aug 2011 03:31:12 +1000 (EST) Received: (qmail 27310 invoked by alias); 15 Aug 2011 17:31:09 -0000 Received: (qmail 27296 invoked by uid 22791); 15 Aug 2011 17:31:04 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL, BAYES_50, RP_MATCHES_RCVD, TW_BJ, TW_DF, TW_IV, T_TVD_MIME_NO_HEADERS X-Spam-Check-By: sourceware.org Received: from snape.CeBiTec.Uni-Bielefeld.DE (HELO smtp-relay.CeBiTec.Uni-Bielefeld.DE) (129.70.160.84) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 15 Aug 2011 17:30:45 +0000 Received: from localhost (localhost.CeBiTec.Uni-Bielefeld.DE [127.0.0.1]) by smtp-relay.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTP id 05BEFAED; Mon, 15 Aug 2011 19:30:44 +0200 (CEST) Received: from smtp-relay.CeBiTec.Uni-Bielefeld.DE ([127.0.0.1]) by localhost (malfoy.CeBiTec.Uni-Bielefeld.DE [127.0.0.1]) (amavisd-new, port 10024) with LMTP id eBb+mPEg00GT; Mon, 15 Aug 2011 19:30:20 +0200 (CEST) Received: from manam.CeBiTec.Uni-Bielefeld.DE (manam.CeBiTec.Uni-Bielefeld.DE [129.70.161.120]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp-relay.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTPS id 12358AEC; Mon, 15 Aug 2011 19:30:20 +0200 (CEST) Received: (from ro@localhost) by manam.CeBiTec.Uni-Bielefeld.DE (8.14.5+Sun/8.14.5/Submit) id p7FHUJR8009058; Mon, 15 Aug 2011 19:30:19 +0200 (MEST) From: Rainer Orth To: gcc-patches@gcc.gnu.org Cc: Paolo Bonzini Subject: CFT: [build] Move libgcc_tm_file to toplevel libgcc Date: Mon, 15 Aug 2011 19:30:19 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (usg-unix-v) MIME-Version: 1.0 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org This patch almost completes the build side of the libgcc moves. It moves the libgcc_tm_file support to libgcc/config.host (tm_file), where it belongs. It builds on a patch Paolo posted some time ago, with some minor corrections (introducing the required dependencies on the generated libgcc_tm.h). I've removed libgcc_tm.h from tm.h and include the file directly in all libgcc sources that currently include tm.h. Everything else is pretty mechanical, I believe. Tested as described in the previous submissions. Rainer 2011-08-06 Rainer Orth Paolo Bonzini gcc: * configure.ac (libgcc_tm_file_list, libgcc_tm_include_list): Remove. * configure: Regenerate. * Makefile.in (libgcc_tm_file_list, libgcc_tm_include_list): Remove. (TM_H): Remove libgcc_tm.h, $(libgcc_tm_file_list). (libgcc_tm.h, cs-libgcc_tm.h): Remove. (clean): Remove libgcc_tm.h * mkconfig.sh: Don't include libgcc_tm.h in tm.h. * config.gcc (libgcc_tm_file): Remove. (arm*-*-linux*): Remove libgcc_tm_file for arm*-*-linux-*eabi. (arm*-*-uclinux*): Remove libgcc_tm_file for arm*-*-uclinux*eabi. (arm*-*-eabi*, arm*-*-symbianelf*): Remove libgcc_tm_file. (avr-*-rtems*): Likewise. (avr-*-*): Likewise. (frv-*-elf): Likewise. (frv-*-*linux*): Likewise. (h8300-*-rtems*): Likewise. (h8300-*-elf*): Likewise. (i[34567]86-*-darwin*): Likewise. (x86_64-*-darwin*): Likewise. (rx-*-elf*): Likewise. (tic6x-*-elf): Likewise. (tic6x-*-uclinux): Likewise. libgcc: * configure.ac (tm_file_): New variable. Determine from tm_file. (tm_file, tm_defines): Substitute. * configure: Regenerate. * mkheader.sh: New file. * Makefile.in (clean): Remove libgcc_tm.h. ($(objects)): Depend on libgcc_tm.h. (libgcc_tm_defines, libgcc_tm_file): New variables. (libgcc_tm.h, libgcc_tm.stamp): New targets. ($(libgcc-objects), $(libgcc-s-objects), $(libgcc-eh-objects)) ($(libgcov-objects), $(libunwind-objects), $(libunwind-s-objects)) ($(extra-parts)): Depend on libgcc_tm.h. * config.host (tm_defines, tm_file): New variable. (arm*-*-linux*): Set tm_file for arm*-*-linux-*eabi. (arm*-*-uclinux*): Set tm_file for arm*-*-uclinux*eabi. (arm*-*-eabi*, arm*-*-symbianelf*): Set tm_file. (avr-*-rtems*): Likewise. (avr-*-*): Likewise. (frv-*-elf): Likewise. (frv-*-*linux*): Likewise. (h8300-*-rtems*): Likewise. (h8300-*-elf*): Likewise. (i[34567]86-*-darwin*): Likewise. (x86_64-*-darwin*): Likewise. (rx-*-elf): Likewise. (tic6x-*-uclinux): Likewise. (tic6x-*-elf): Likewise. * config/alpha/gthr-posix.c: Include libgcc_tm.h. * config/i386/cygming-crtbegin.c: Likewise. * config/i386/cygming-crtend.c: Likewise. * config/ia64/fde-vms.c: Likewise. * config/ia64/unwind-ia64.c: Likewise. * config/libbid/bid_gcc_intrinsics.h: Likewise. * config/rs6000/darwin-fallback.c: Likewise. * config/stormy16/lib2funcs.c: Likewise. * config/xtensa/unwind-dw2-xtensa.c: Likewise. * crtstuff.c: Likewise. * dfp-bit.h: Likewise. * emutls.c: Likewise. * fixed-bit.c: Likewise. * fp-bit.c: Likewise. * generic-morestack-thread.c: Likewise. * generic-morestack.c: Likewise. * libgcc2.c: Likewise. * libgcov.c: Likewise. * unwind-dw2-fde-dip.c: Likewise. * unwind-dw2-fde.c: Likewise. * unwind-dw2.c: Likewise. * unwind-sjlj.c: Likewise. # HG changeset patch # Parent fe692d8e27093b36a9342ef937f5f9891af8fa60 Move libgcc_tm_file to toplevel libgcc diff --git a/gcc/Makefile.in b/gcc/Makefile.in --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -486,8 +486,6 @@ md_file=$(srcdir)/config/@md_file@ tm_file_list=@tm_file_list@ tm_include_list=@tm_include_list@ tm_defines=@tm_defines@ -libgcc_tm_file_list=@libgcc_tm_file_list@ -libgcc_tm_include_list=@libgcc_tm_include_list@ tm_p_file_list=@tm_p_file_list@ tm_p_include_list=@tm_p_include_list@ build_xm_file_list=@build_xm_file_list@ @@ -786,8 +784,7 @@ CONFIG_H = config.h $(host_xm_file_lis TCONFIG_H = tconfig.h $(xm_file_list) TM_P_H = tm_p.h $(tm_p_file_list) GTM_H = tm.h $(tm_file_list) insn-constants.h -TM_H = $(GTM_H) libgcc_tm.h $(libgcc_tm_file_list) insn-flags.h \ - $(OPTIONS_H) +TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H) # Variables for version information. BASEVER := $(srcdir)/BASE-VER # 4.x.y @@ -1592,7 +1589,6 @@ config.h: cs-config.h ; @true bconfig.h: cs-bconfig.h ; @true tconfig.h: cs-tconfig.h ; @true tm.h: cs-tm.h ; @true -libgcc_tm.h: cs-libgcc_tm.h ; @true tm_p.h: cs-tm_p.h ; @true cs-config.h: Makefile @@ -1615,11 +1611,6 @@ cs-tm.h: Makefile HEADERS="$(tm_include_list)" DEFINES="$(tm_defines)" \ $(SHELL) $(srcdir)/mkconfig.sh tm.h -cs-libgcc_tm.h: Makefile - TARGET_CPU_DEFAULT="" \ - HEADERS="$(libgcc_tm_include_list)" DEFINES="" \ - $(SHELL) $(srcdir)/mkconfig.sh libgcc_tm.h - cs-tm_p.h: Makefile TARGET_CPU_DEFAULT="" \ HEADERS="$(tm_p_include_list)" DEFINES="" \ @@ -4375,7 +4366,7 @@ clean: mostlyclean lang.clean -rm -f libgcc.a libgcc_eh.a libgcov.a -rm -f libgcc_s* -rm -f libunwind* - -rm -f config.h tconfig.h bconfig.h tm_p.h tm.h libgcc_tm.h + -rm -f config.h tconfig.h bconfig.h tm_p.h tm.h -rm -f options.c options.h optionlist -rm -f cs-* -rm -f doc/*.dvi diff --git a/gcc/config.gcc b/gcc/config.gcc --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -84,12 +84,6 @@ # build-directory files by prefixing them with "./". # All other files should relative to $srcdir/config. # -# libgcc_tm_file A list of target macro files used only for code -# built for the target, not the host. These files -# are relative to $srcdir/../libgcc/config and -# must not have the same names as files in -# $srcdir/config. -# # tm_p_file Location of file with declarations for functions # in $out_file. # @@ -216,7 +210,6 @@ target_has_targetcm=no target_has_targetm_common=yes tm_defines= xm_defines= -libgcc_tm_file= # Set this to force installation and use of collect2. use_collect2= # Set this to override the default target model. @@ -817,7 +810,6 @@ arm*-*-linux*) # ARM GNU/Linux with EL case ${target} in arm*-*-linux-*eabi) tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" - libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h" tmake_file="$tmake_file arm/t-arm-elf arm/t-linux-eabi" # Define multilib configuration for arm-linux-androideabi. case ${target} in @@ -845,7 +837,6 @@ arm*-*-uclinux*) # ARM ucLinux case ${target} in arm*-*-uclinux*eabi) tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h" - libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h" # The BPABI long long divmod functions return a 128-bit value in # registers r0-r3. Correctly modeling that requires the use of # TImode. @@ -866,7 +857,6 @@ arm*-*-eabi* | arm*-*-symbianelf* ) need_64bit_hwint=yes default_use_cxa_atexit=yes tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h" - libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h" tmake_file="arm/t-arm arm/t-arm-elf" case ${target} in arm*-*-eabi*) @@ -875,7 +865,6 @@ arm*-*-eabi* | arm*-*-symbianelf* ) ;; arm*-*-symbianelf*) tm_file="${tm_file} arm/symbian.h" - libgcc_tm_file="$libgcc_tm_file arm/symbian-lib.h" # We do not include t-bpabi for Symbian OS because the system # provides its own implementation of the BPABI functions. tmake_file="${tmake_file} arm/t-symbian" @@ -899,14 +888,12 @@ arm*-wince-pe*) ;; avr-*-rtems*) tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h" - libgcc_tm_file="$libgcc_tm_file avr/avr-lib.h" tmake_file="avr/t-avr t-rtems avr/t-rtems" extra_gcc_objs="driver-avr.o avr-devices.o" extra_objs="avr-devices.o" ;; avr-*-*) tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h newlib-stdint.h" - libgcc_tm_file="$libgcc_tm_file avr/avr-lib.h" use_gcc_stdint=wrap extra_gcc_objs="driver-avr.o avr-devices.o" extra_objs="avr-devices.o" @@ -967,13 +954,11 @@ fr30-*-elf) ;; frv-*-elf) tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}" - libgcc_tm_file="${libgcc_tm_file} frv/frv-abi.h" tmake_file=frv/t-frv ;; frv-*-*linux*) tm_file="dbxelf.h elfos.h ${tm_file} \ gnu-user.h linux.h glibc-stdint.h frv/linux.h" - libgcc_tm_file="${libgcc_tm_file} frv/frv-abi.h" tmake_file="${tmake_file} frv/t-frv frv/t-linux" ;; moxie-*-elf) @@ -995,12 +980,10 @@ moxie-*-rtems*) h8300-*-rtems*) tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems" tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h newlib-stdint.h" - libgcc_tm_file="$libgcc_tm_file h8300/h8300-lib.h" ;; h8300-*-elf*) tmake_file="h8300/t-h8300" tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h" - libgcc_tm_file="$libgcc_tm_file h8300/h8300-lib.h" ;; hppa*64*-*-linux*) target_cpu_default="MASK_PA_11|MASK_PA_20" @@ -1145,13 +1128,11 @@ i[34567]86-*-darwin*) # Baseline choice for a machine that allows m64 support. with_cpu=${with_cpu:-core2} tmake_file="${tmake_file} t-slibgcc" - libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h" ;; x86_64-*-darwin*) with_cpu=${with_cpu:-core2} tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc" tm_file="${tm_file} ${cpu_type}/darwin64.h" - libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h" ;; i[34567]86-*-elf*) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h" @@ -2103,7 +2084,6 @@ rs6000-ibm-aix[6789].* | powerpc-ibm-aix ;; rx-*-elf*) tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}" - libgcc_tm_file="${libgcc_tm_file} rx/rx-abi.h rx/rx-lib.h" tmake_file="${tmake_file} rx/t-rx" ;; s390-*-linux*) @@ -2424,7 +2404,6 @@ spu-*-elf*) tic6x-*-elf) tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h" tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h" - libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h" tmake_file="c6x/t-c6x c6x/t-c6x-elf" use_collect2=no ;; @@ -2432,7 +2411,6 @@ tic6x-*-uclinux) tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h" tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h" tm_file="${tm_file} ./sysroot-suffix.h" - libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h" tmake_file="t-sysroot-suffix t-slibgcc" tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux" use_collect2=no diff --git a/gcc/configure.ac b/gcc/configure.ac --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1669,13 +1669,6 @@ for f in $tm_file; do esac done -libgcc_tm_file_list= -libgcc_tm_include_list= -for f in $libgcc_tm_file; do - libgcc_tm_file_list="${libgcc_tm_file_list} \$(srcdir)/../libgcc/config/$f" - libgcc_tm_include_list="${libgcc_tm_include_list} ../libgcc/config/$f" -done - tm_p_file_list= tm_p_include_list= for f in $tm_p_file; do @@ -4894,8 +4887,6 @@ AC_SUBST(thread_file) AC_SUBST(tm_file_list) AC_SUBST(tm_include_list) AC_SUBST(tm_defines) -AC_SUBST(libgcc_tm_file_list) -AC_SUBST(libgcc_tm_include_list) AC_SUBST(tm_p_file_list) AC_SUBST(tm_p_include_list) AC_SUBST(xm_file_list) diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh --- a/gcc/mkconfig.sh +++ b/gcc/mkconfig.sh @@ -89,9 +89,8 @@ if [ -n "$HEADERS" ]; then fi # If this is tm.h, now include insn-flags.h only if IN_GCC is defined -# but neither GENERATOR_FILE nor USED_FOR_TARGET is defined. Also -# include libgcc_tm.h if USED_FOR_TARGET is defined. (Much of this is -# temporary.) +# but neither GENERATOR_FILE nor USED_FOR_TARGET is defined. (Much of this +# is temporary.) case $output in tm.h ) @@ -99,9 +98,6 @@ case $output in #if defined IN_GCC && !defined GENERATOR_FILE && !defined USED_FOR_TARGET # include "insn-flags.h" #endif -#ifdef USED_FOR_TARGET -# include "libgcc_tm.h" -#endif EOF ;; esac diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in @@ -121,7 +121,7 @@ installcheck: .PHONY: all clean clean: - -rm -f config.h stamp-h stmp-ldirs libgcc.map + -rm -f config.h libgcc_tm.h stamp-h stmp-ldirs libgcc.map -rm -f *$(objext) -rm -f *.dep -rm -f *.a @@ -338,6 +338,16 @@ SHLIBUNWIND_INSTALL = tmake_file = @tmake_file@ include $(srcdir)/empty.mk $(tmake_file) +# Collect target defines and headers from config.host. +libgcc_tm_defines = @tm_defines@ +libgcc_tm_file = @tm_file@ +libgcc_tm.h: libgcc_tm.stamp; @true +libgcc_tm.stamp: + DEFINES='$(libgcc_tm_defines)' HEADERS='$(libgcc_tm_file)' \ + $(srcdir)/mkheader.sh > tmp-libgcc_tm.h + $(SHELL) $(srcdir)/../move-if-change tmp-libgcc_tm.h libgcc_tm.h + echo timestamp > $@ + # Only handle shared libraries if both: # - the user requested them # - we know how to build them @@ -984,6 +994,11 @@ libgcc-extra-parts: $(EXTRA_PARTS) all: $(extra-parts) +$(libgcc-objects) $(libgcc-s-objects) $(libgcc-eh-objects) \ + $(libgcov-objects) \ + $(libunwind-objects) $(libunwind-s-objects) \ + $(extra-parts): libgcc_tm.h + install-unwind_h: rm -f $(gcc_objdir)/include/unwind.h cp unwind.h $(gcc_objdir)/include/unwind.h diff --git a/libgcc/config.host b/libgcc/config.host --- a/libgcc/config.host +++ b/libgcc/config.host @@ -60,6 +60,11 @@ # tmake_file A list of machine-description-specific # makefile-fragments, if different from # "$cpu_type/t-$cpu_type". +# tm_defines List of target macros to define for all compilations. +# tm_file A list of target macro files used only for code +# built for the target, not the host. These files +# are relative to $srcdir/config and must not have +# the same names as files in $srcdir/../gcc/config. # unwind_header The name of the header file declaring the unwind # runtime interface routines. @@ -67,6 +72,8 @@ asm_hidden_op=.hidden enable_execute_stack= extra_parts= tmake_file= +tm_file= +tm_define= md_unwind_header=no-unwind.h unwind_header=unwind-generic.h @@ -329,6 +336,7 @@ arm*-*-linux*) # ARM GNU/Linux with EL case ${host} in arm*-*-linux-*eabi) tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc" + tm_file="$tm_file arm/bpabi-lib.h" unwind_header=config/arm/unwind-arm.h ;; *) @@ -342,6 +350,7 @@ arm*-*-uclinux*) # ARM ucLinux case ${host} in arm*-*-uclinux*eabi) tmake_file="${tmake_file} arm/t-bpabi" + tm_file="$tm_file arm/bpabi-lib.h" unwind_header=config/arm/unwind-arm.h ;; esac @@ -354,6 +363,7 @@ arm*-*-ecos-elf) ;; arm*-*-eabi* | arm*-*-symbianelf* ) tmake_file="${tmake_file} arm/t-arm arm/t-elf t-fixedpoint-gnu-prefix" + tm_file="$tm_file arm/bpabi-lib.h" case ${host} in arm*-*-eabi*) tmake_file="${tmake_file} arm/t-bpabi" @@ -361,6 +371,7 @@ arm*-*-eabi* | arm*-*-symbianelf* ) ;; arm*-*-symbianelf*) tmake_file="${tmake_file} arm/t-symbian t-slibgcc-nolc-override" + tm_file="$tm_file arm/symbian-lib.h" # Symbian OS provides its own startup code. ;; esac @@ -380,12 +391,14 @@ arm*-wince-pe*) ;; avr-*-rtems*) tmake_file="$tmake_file avr/t-avr t-fpbit" + tm_file="$tm_file avr/avr-lib.h" # Don't use default. extra_parts= ;; avr-*-*) # Make HImode functions for AVR tmake_file="${cpu_type}/t-avr t-fpbit" + tm_file="$tm_file avr/avr-lib.h" ;; bfin*-elf*) tmake_file="bfin/t-bfin bfin/t-elf bfin/t-crtlibid bfin/t-crtstuff t-fdpbit" @@ -434,18 +447,22 @@ fr30-*-elf) ;; frv-*-elf) tmake_file="$tmake_file frv/t-frv t-fdpbit" + tm_file="$tm_file frv/frv-abi.h" # Don't use crtbegin.o, crtend.o. extra_parts="frvbegin.o frvend.o" ;; frv-*-*linux*) tmake_file="$tmake_file frv/t-frv frv/t-linux t-fdpbit" + tm_file="$tm_file frv/frv-abi.h" ;; h8300-*-rtems*) tmake_file="$tmake_file h8300/t-h8300 t-fpbit" + tm_file="$tm_file h8300/h8300-lib.h" extra_parts="$extra_parts crti.o crtn.o" ;; h8300-*-elf*) tmake_file="$tmake_file h8300/t-h8300 t-fpbit" + tm_file="$tm_file h8300/h8300-lib.h" extra_parts="$extra_parts crti.o crtn.o" ;; hppa*64*-*-linux*) @@ -499,10 +516,12 @@ hppa[12]*-*-hpux11*) ;; i[34567]86-*-darwin*) tmake_file="$tmake_file i386/t-crtpc i386/t-crtfm" + tm_file="$tm_file i386/darwin-lib.h" extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" ;; x86_64-*-darwin*) tmake_file="$tmake_file i386/t-crtpc i386/t-crtfm" + tm_file="$tm_file i386/darwin-lib.h" extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" ;; i[34567]86-*-elf*) @@ -907,6 +926,7 @@ rs6000-ibm-aix[56789].* | powerpc-ibm-ai ;; rx-*-elf) tmake_file="rx/t-rx t-fdpbit" + tm_file="$tm_file rx/rx-abi.h rx/rx-lib.h" ;; s390-*-linux*) tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux s390/32/t-floattodi" @@ -1046,10 +1066,12 @@ spu-*-elf*) ;; tic6x-*-uclinux) tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp c6x/t-elf c6x/t-uclinux t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-gnu-prefix" + tm_file="$tm_file c6x/c6x-abi.h" extra_parts="crtbeginS.o crtendS.o crti.o crtn.o" ;; tic6x-*-elf) tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp t-gnu-prefix c6x/t-elf" + tm_file="$tm_file c6x/c6x-abi.h" extra_parts="$extra_parts crtbeginS.o crtendS.o crti.o crtn.o" ;; v850*-*-*) diff --git a/libgcc/config/alpha/gthr-posix.c b/libgcc/config/alpha/gthr-posix.c --- a/libgcc/config/alpha/gthr-posix.c +++ b/libgcc/config/alpha/gthr-posix.c @@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tconfig.h" #include "tm.h" +#include "libgcc_tm.h" # define __gthrw_pragma(pragma) _Pragma (#pragma) /* Define so we provide weak definitions of functions used by libobjc only. */ #define _LIBOBJC_WEAK diff --git a/libgcc/config/i386/cygming-crtbegin.c b/libgcc/config/i386/cygming-crtbegin.c --- a/libgcc/config/i386/cygming-crtbegin.c +++ b/libgcc/config/i386/cygming-crtbegin.c @@ -1,5 +1,5 @@ /* crtbegin object for windows32 targets. - Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Danny Smith @@ -32,6 +32,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "unwind-dw2-fde.h" #define WIN32_LEAN_AND_MEAN diff --git a/libgcc/config/i386/cygming-crtend.c b/libgcc/config/i386/cygming-crtend.c --- a/libgcc/config/i386/cygming-crtend.c +++ b/libgcc/config/i386/cygming-crtend.c @@ -1,5 +1,5 @@ /* crtend object for windows32 targets. - Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Danny Smith @@ -34,6 +34,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "unwind-dw2-fde.h" #if defined(HAVE_LD_RO_RW_SECTION_MIXING) diff --git a/libgcc/config/ia64/fde-vms.c b/libgcc/config/ia64/fde-vms.c --- a/libgcc/config/ia64/fde-vms.c +++ b/libgcc/config/ia64/fde-vms.c @@ -29,6 +29,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include #include #include diff --git a/libgcc/config/ia64/unwind-ia64.c b/libgcc/config/ia64/unwind-ia64.c --- a/libgcc/config/ia64/unwind-ia64.c +++ b/libgcc/config/ia64/unwind-ia64.c @@ -31,6 +31,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "unwind.h" #include "unwind-ia64.h" #include "unwind-compat.h" diff --git a/libgcc/config/libbid/bid_gcc_intrinsics.h b/libgcc/config/libbid/bid_gcc_intrinsics.h --- a/libgcc/config/libbid/bid_gcc_intrinsics.h +++ b/libgcc/config/libbid/bid_gcc_intrinsics.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. +/* Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tconfig.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE diff --git a/libgcc/config/rs6000/darwin-fallback.c b/libgcc/config/rs6000/darwin-fallback.c --- a/libgcc/config/rs6000/darwin-fallback.c +++ b/libgcc/config/rs6000/darwin-fallback.c @@ -1,5 +1,5 @@ /* Fallback frame-state unwinder for Darwin. - Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2007, 2009, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -28,6 +28,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "dwarf2.h" #include "unwind.h" #include "unwind-dw2.h" diff --git a/libgcc/config/stormy16/lib2funcs.c b/libgcc/config/stormy16/lib2funcs.c --- a/libgcc/config/stormy16/lib2funcs.c +++ b/libgcc/config/stormy16/lib2funcs.c @@ -4,7 +4,7 @@ files. On this glorious day maybe this code can be integrated into it too. */ -/* Copyright (C) 2005, 2008, 2009, 2010 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -31,6 +31,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #ifdef HAVE_GAS_HIDDEN #define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) diff --git a/libgcc/config/xtensa/unwind-dw2-xtensa.c b/libgcc/config/xtensa/unwind-dw2-xtensa.c --- a/libgcc/config/xtensa/unwind-dw2-xtensa.c +++ b/libgcc/config/xtensa/unwind-dw2-xtensa.c @@ -28,6 +28,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "dwarf2.h" #include "unwind.h" #ifdef __USING_SJLJ_EXCEPTIONS__ diff --git a/libgcc/configure b/libgcc/configure --- a/libgcc/configure +++ b/libgcc/configure @@ -593,6 +593,8 @@ LIBOBJS asm_hidden_op extra_parts cpu_type +tm_defines +tm_file tmake_file sfp_machine_header set_use_emutls @@ -4785,6 +4787,16 @@ done tmake_file="${tmake_file_}" +# Likewise export definitions for libgcc_tm.h +tm_file_= +for f in ${tm_file} +do + tm_file_="${tm_file_} \$(srcdir)/config/$f" +done +tm_file="${tm_file_}" + + + # Substitute configuration variables diff --git a/libgcc/configure.ac b/libgcc/configure.ac --- a/libgcc/configure.ac +++ b/libgcc/configure.ac @@ -354,6 +354,16 @@ done tmake_file="${tmake_file_}" AC_SUBST(tmake_file) +# Likewise export definitions for libgcc_tm.h +tm_file_= +for f in ${tm_file} +do + tm_file_="${tm_file_} \$(srcdir)/config/$f" +done +tm_file="${tm_file_}" +AC_SUBST(tm_file) +AC_SUBST(tm_defines) + # Substitute configuration variables AC_SUBST(cpu_type) AC_SUBST(extra_parts) diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c --- a/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c @@ -1,7 +1,8 @@ /* Specialized bits of code needed to support construction and destruction of file-scope objects in C++ code. Copyright (C) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 - 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 + Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@monkeys.com). This file is part of GCC. @@ -61,6 +62,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "unwind-dw2-fde.h" #ifndef FORCE_CODE_SECTION_ALIGN diff --git a/libgcc/dfp-bit.h b/libgcc/dfp-bit.h --- a/libgcc/dfp-bit.h +++ b/libgcc/dfp-bit.h @@ -1,5 +1,5 @@ /* Header file for dfp-bit.c. - Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 + Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -33,6 +33,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tconfig.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE diff --git a/libgcc/emutls.c b/libgcc/emutls.c --- a/libgcc/emutls.c +++ b/libgcc/emutls.c @@ -1,5 +1,5 @@ /* TLS emulation. - Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2008, 2009, 2011 Free Software Foundation, Inc. Contributed by Jakub Jelinek . This file is part of GCC. @@ -27,6 +27,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "gthr.h" typedef unsigned int word __attribute__((mode(word))); diff --git a/libgcc/fixed-bit.c b/libgcc/fixed-bit.c --- a/libgcc/fixed-bit.c +++ b/libgcc/fixed-bit.c @@ -1,5 +1,5 @@ /* This is a software fixed-point library. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -46,6 +46,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #ifndef MIN_UNITS_PER_WORD #define MIN_UNITS_PER_WORD UNITS_PER_WORD diff --git a/libgcc/fp-bit.c b/libgcc/fp-bit.c --- a/libgcc/fp-bit.c +++ b/libgcc/fp-bit.c @@ -37,6 +37,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tconfig.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "fp-bit.h" /* The following macros can be defined to change the behavior of this file: diff --git a/libgcc/generic-morestack-thread.c b/libgcc/generic-morestack-thread.c --- a/libgcc/generic-morestack-thread.c +++ b/libgcc/generic-morestack-thread.c @@ -1,5 +1,5 @@ /* Thread library support for -fsplit-stack. */ -/* Copyright (C) 2009, 2010 Free Software Foundation, Inc. +/* Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Ian Lance Taylor . This file is part of GCC. @@ -27,6 +27,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" /* If inhibit_libc is defined, we can not compile this file. The effect is that people will not be able to use -fsplit-stack. That diff --git a/libgcc/generic-morestack.c b/libgcc/generic-morestack.c --- a/libgcc/generic-morestack.c +++ b/libgcc/generic-morestack.c @@ -27,6 +27,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" /* If inhibit_libc is defined, we can not compile this file. The effect is that people will not be able to use -fsplit-stack. That diff --git a/libgcc/libgcc2.c b/libgcc/libgcc2.c --- a/libgcc/libgcc2.c +++ b/libgcc/libgcc2.c @@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #ifdef HAVE_GAS_HIDDEN #define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) diff --git a/libgcc/libgcov.c b/libgcc/libgcov.c --- a/libgcc/libgcov.c +++ b/libgcc/libgcov.c @@ -1,7 +1,7 @@ /* Routines required for instrumenting a program. */ /* Compile this one with gcc. */ /* Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010 + 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #if defined(inhibit_libc) #define IN_LIBGCOV (-1) diff --git a/libgcc/mkheader.sh b/libgcc/mkheader.sh new file mode 100755 --- /dev/null +++ b/libgcc/mkheader.sh @@ -0,0 +1,41 @@ +#! /bin/sh + +# Copyright (C) 2001, 2002, 2006, 2007, 2010, 2011 Free Software Foundation, Inc. +# 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 3, or (at your option) +# any later version. + +# 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 COPYING3. If not see +# . + + +# Print libgcc_tm.h to the standard output. +# DEFINES and HEADERS are expected to be set in the environment. + +# Add multiple inclusion protection guard, part one. +echo "#ifndef LIBGCC_TM_H" +echo "#define LIBGCC_TM_H" + +# Generate the body of the file +echo "/* Automatically generated by mkheader.sh. */" +for def in $DEFINES; do + echo "#ifndef $def" | sed 's/=.*//' + echo "# define $def" | sed 's/=/ /' + echo "#endif" +done + +for file in $HEADERS; do + echo "#include \"$file\"" +done + +# Add multiple inclusion protection guard, part two. +echo "#endif /* LIBGCC_TM_H */" diff --git a/libgcc/unwind-dw2-fde-dip.c b/libgcc/unwind-dw2-fde-dip.c --- a/libgcc/unwind-dw2-fde-dip.c +++ b/libgcc/unwind-dw2-fde-dip.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010 +/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Jakub Jelinek . @@ -38,6 +38,7 @@ #endif #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "dwarf2.h" #include "unwind.h" #define NO_BASE_OF_ENCODED_VALUE diff --git a/libgcc/unwind-dw2-fde.c b/libgcc/unwind-dw2-fde.c --- a/libgcc/unwind-dw2-fde.c +++ b/libgcc/unwind-dw2-fde.c @@ -1,6 +1,6 @@ /* Subroutines needed for unwinding stack frames for exception handling. */ /* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, - 2009, 2010 Free Software Foundation, Inc. + 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Jason Merrill . This file is part of GCC. @@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTI #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "dwarf2.h" #include "unwind.h" #define NO_BASE_OF_ENCODED_VALUE diff --git a/libgcc/unwind-dw2.c b/libgcc/unwind-dw2.c --- a/libgcc/unwind-dw2.c +++ b/libgcc/unwind-dw2.c @@ -27,6 +27,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "dwarf2.h" #include "unwind.h" #ifdef __USING_SJLJ_EXCEPTIONS__ diff --git a/libgcc/unwind-sjlj.c b/libgcc/unwind-sjlj.c --- a/libgcc/unwind-sjlj.c +++ b/libgcc/unwind-sjlj.c @@ -1,6 +1,6 @@ /* SJLJ exception handling and frame unwind runtime interface routines. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, - 2009 Free Software Foundation, Inc. + 2009, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -27,6 +27,7 @@ #include "tsystem.h" #include "coretypes.h" #include "tm.h" +#include "libgcc_tm.h" #include "unwind.h" #include "gthr.h"