From a2be5f0c15218b0177d73b17d9bcb7589965d685 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 1 Jun 2008 00:03:21 +0000 Subject: [PATCH 1/5] Reorganize the gcc vendor import work area. This flattens out a bunch of unnecessary path components that are relics of cvs2svn. (These are directory moves) --- {contrib/gcc => gcc}/BASE-VER | 0 {contrib/gcc => gcc}/COPYING | 0 {contrib/gcc => gcc}/COPYING.LIB | 0 {contrib/gcc => gcc}/ChangeLog | 0 {contrib/gcc => gcc}/ChangeLog-1997 | 0 {contrib/gcc => gcc}/ChangeLog-1998 | 0 {contrib/gcc => gcc}/ChangeLog-1999 | 0 {contrib/gcc => gcc}/ChangeLog-2000 | 0 {contrib/gcc => gcc}/ChangeLog-2001 | 0 {contrib/gcc => gcc}/ChangeLog-2002 | 0 {contrib/gcc => gcc}/ChangeLog-2003 | 0 {contrib/gcc => gcc}/ChangeLog-2004 | 0 {contrib/gcc => gcc}/ChangeLog-2005 | 0 {contrib/gcc => gcc}/ChangeLog-2006 | 0 {contrib/gcc => gcc}/ChangeLog.lib | 0 {contrib/gcc => gcc}/ChangeLog.tree-ssa | 0 {contrib/gcc => gcc}/DATESTAMP | 0 {contrib/gcc => gcc}/DEV-PHASE | 0 {contrib/gcc => gcc}/FSFChangeLog | 0 {contrib/gcc => gcc}/FSFChangeLog.10 | 0 {contrib/gcc => gcc}/FSFChangeLog.11 | 0 {contrib/gcc => gcc}/LANGUAGES | 0 {contrib/gcc => gcc}/Makefile.in | 0 {contrib/gcc => gcc}/ONEWS | 0 {contrib/gcc => gcc}/README.Portability | 0 {contrib/gcc => gcc}/SERVICE | 0 {contrib/gcc => gcc}/acinclude.m4 | 0 {contrib/gcc => gcc}/aclocal.m4 | 0 {contrib/gcc => gcc}/addresses.h | 0 {contrib/gcc => gcc}/alias.c | 0 {contrib/gcc => gcc}/alias.h | 0 {contrib/gcc => gcc}/alloc-pool.c | 0 {contrib/gcc => gcc}/alloc-pool.h | 0 {contrib/gcc => gcc}/attribs.c | 0 {contrib/gcc => gcc}/basic-block.h | 0 {contrib/gcc => gcc}/bb-reorder.c | 0 {contrib/gcc => gcc}/bitmap.c | 0 {contrib/gcc => gcc}/bitmap.h | 0 {contrib/gcc => gcc}/bt-load.c | 0 {contrib/gcc => gcc}/builtin-attrs.def | 0 {contrib/gcc => gcc}/builtin-types.def | 0 {contrib/gcc => gcc}/builtins.c | 0 {contrib/gcc => gcc}/builtins.def | 0 {contrib/gcc => gcc}/c-aux-info.c | 0 {contrib/gcc => gcc}/c-common.c | 0 {contrib/gcc => gcc}/c-common.def | 0 {contrib/gcc => gcc}/c-common.h | 0 {contrib/gcc => gcc}/c-config-lang.in | 0 {contrib/gcc => gcc}/c-convert.c | 0 {contrib/gcc => gcc}/c-cppbuiltin.c | 0 {contrib/gcc => gcc}/c-decl.c | 0 {contrib/gcc => gcc}/c-dump.c | 0 {contrib/gcc => gcc}/c-errors.c | 0 {contrib/gcc => gcc}/c-format.c | 0 {contrib/gcc => gcc}/c-format.h | 0 {contrib/gcc => gcc}/c-gimplify.c | 0 {contrib/gcc => gcc}/c-incpath.c | 0 {contrib/gcc => gcc}/c-incpath.h | 0 {contrib/gcc => gcc}/c-lang.c | 0 {contrib/gcc => gcc}/c-lex.c | 0 {contrib/gcc => gcc}/c-objc-common.c | 0 {contrib/gcc => gcc}/c-objc-common.h | 0 {contrib/gcc => gcc}/c-omp.c | 0 {contrib/gcc => gcc}/c-opts.c | 0 {contrib/gcc => gcc}/c-parser.c | 0 {contrib/gcc => gcc}/c-pch.c | 0 {contrib/gcc => gcc}/c-ppoutput.c | 0 {contrib/gcc => gcc}/c-pragma.c | 0 {contrib/gcc => gcc}/c-pragma.h | 0 {contrib/gcc => gcc}/c-pretty-print.c | 0 {contrib/gcc => gcc}/c-pretty-print.h | 0 {contrib/gcc => gcc}/c-semantics.c | 0 {contrib/gcc => gcc}/c-tree.h | 0 {contrib/gcc => gcc}/c-typeck.c | 0 {contrib/gcc => gcc}/c.opt | 0 {contrib/gcc => gcc}/caller-save.c | 0 {contrib/gcc => gcc}/calls.c | 0 {contrib/gcc => gcc}/cfg.c | 0 {contrib/gcc => gcc}/cfganal.c | 0 {contrib/gcc => gcc}/cfgbuild.c | 0 {contrib/gcc => gcc}/cfgcleanup.c | 0 {contrib/gcc => gcc}/cfgexpand.c | 0 {contrib/gcc => gcc}/cfghooks.c | 0 {contrib/gcc => gcc}/cfghooks.h | 0 {contrib/gcc => gcc}/cfglayout.c | 0 {contrib/gcc => gcc}/cfglayout.h | 0 {contrib/gcc => gcc}/cfgloop.c | 0 {contrib/gcc => gcc}/cfgloop.h | 0 {contrib/gcc => gcc}/cfgloopanal.c | 0 {contrib/gcc => gcc}/cfgloopmanip.c | 0 {contrib/gcc => gcc}/cfgrtl.c | 0 {contrib/gcc => gcc}/cgraph.c | 0 {contrib/gcc => gcc}/cgraph.h | 0 {contrib/gcc => gcc}/cgraphunit.c | 0 {contrib/gcc => gcc}/collect2.c | 0 {contrib/gcc => gcc}/collect2.h | 0 {contrib/gcc => gcc}/combine.c | 0 {contrib/gcc => gcc}/common.opt | 0 {contrib/gcc => gcc}/conditions.h | 0 {contrib/gcc => gcc}/config.build | 0 {contrib/gcc => gcc}/config.gcc | 0 {contrib/gcc => gcc}/config.host | 0 {contrib/gcc => gcc}/config.in | 0 {contrib/gcc => gcc}/config/README | 0 {contrib/gcc => gcc}/config/arm/README-interworking | 0 {contrib/gcc => gcc}/config/arm/aof.h | 0 {contrib/gcc => gcc}/config/arm/aout.h | 0 {contrib/gcc => gcc}/config/arm/arm-cores.def | 0 {contrib/gcc => gcc}/config/arm/arm-generic.md | 0 {contrib/gcc => gcc}/config/arm/arm-modes.def | 0 {contrib/gcc => gcc}/config/arm/arm-protos.h | 0 {contrib/gcc => gcc}/config/arm/arm-tune.md | 0 {contrib/gcc => gcc}/config/arm/arm.c | 0 {contrib/gcc => gcc}/config/arm/arm.h | 0 {contrib/gcc => gcc}/config/arm/arm.md | 0 {contrib/gcc => gcc}/config/arm/arm.opt | 0 {contrib/gcc => gcc}/config/arm/arm1020e.md | 0 {contrib/gcc => gcc}/config/arm/arm1026ejs.md | 0 {contrib/gcc => gcc}/config/arm/arm1136jfs.md | 0 {contrib/gcc => gcc}/config/arm/arm926ejs.md | 0 {contrib/gcc => gcc}/config/arm/bpabi.S | 0 {contrib/gcc => gcc}/config/arm/bpabi.c | 0 {contrib/gcc => gcc}/config/arm/bpabi.h | 0 {contrib/gcc => gcc}/config/arm/cirrus.md | 0 {contrib/gcc => gcc}/config/arm/coff.h | 0 {contrib/gcc => gcc}/config/arm/constraints.md | 0 {contrib/gcc => gcc}/config/arm/crti.asm | 0 {contrib/gcc => gcc}/config/arm/crtn.asm | 0 {contrib/gcc => gcc}/config/arm/ecos-elf.h | 0 {contrib/gcc => gcc}/config/arm/elf.h | 0 {contrib/gcc => gcc}/config/arm/fpa.md | 0 {contrib/gcc => gcc}/config/arm/freebsd.h | 0 {contrib/gcc => gcc}/config/arm/gentune.sh | 0 {contrib/gcc => gcc}/config/arm/ieee754-df.S | 0 {contrib/gcc => gcc}/config/arm/ieee754-sf.S | 0 {contrib/gcc => gcc}/config/arm/iwmmxt.md | 0 {contrib/gcc => gcc}/config/arm/kaos-arm.h | 0 {contrib/gcc => gcc}/config/arm/kaos-strongarm.h | 0 {contrib/gcc => gcc}/config/arm/lib1funcs.asm | 0 {contrib/gcc => gcc}/config/arm/libgcc-bpabi.ver | 0 {contrib/gcc => gcc}/config/arm/libunwind.S | 0 {contrib/gcc => gcc}/config/arm/linux-eabi.h | 0 {contrib/gcc => gcc}/config/arm/linux-elf.h | 0 {contrib/gcc => gcc}/config/arm/linux-gas.h | 0 {contrib/gcc => gcc}/config/arm/mmintrin.h | 0 {contrib/gcc => gcc}/config/arm/netbsd-elf.h | 0 {contrib/gcc => gcc}/config/arm/netbsd.h | 0 {contrib/gcc => gcc}/config/arm/pe.c | 0 {contrib/gcc => gcc}/config/arm/pe.h | 0 {contrib/gcc => gcc}/config/arm/pe.opt | 0 {contrib/gcc => gcc}/config/arm/pr-support.c | 0 {contrib/gcc => gcc}/config/arm/predicates.md | 0 {contrib/gcc => gcc}/config/arm/rtems-elf.h | 0 {contrib/gcc => gcc}/config/arm/semi.h | 0 {contrib/gcc => gcc}/config/arm/semiaof.h | 0 {contrib/gcc => gcc}/config/arm/strongarm-coff.h | 0 {contrib/gcc => gcc}/config/arm/strongarm-elf.h | 0 {contrib/gcc => gcc}/config/arm/strongarm-pe.h | 0 {contrib/gcc => gcc}/config/arm/symbian.h | 0 {contrib/gcc => gcc}/config/arm/t-arm | 0 {contrib/gcc => gcc}/config/arm/t-arm-coff | 0 {contrib/gcc => gcc}/config/arm/t-arm-elf | 0 {contrib/gcc => gcc}/config/arm/t-bpabi | 0 {contrib/gcc => gcc}/config/arm/t-linux | 0 {contrib/gcc => gcc}/config/arm/t-linux-eabi | 0 {contrib/gcc => gcc}/config/arm/t-netbsd | 0 {contrib/gcc => gcc}/config/arm/t-pe | 0 {contrib/gcc => gcc}/config/arm/t-rtems | 0 {contrib/gcc => gcc}/config/arm/t-semi | 0 {contrib/gcc => gcc}/config/arm/t-strongarm-elf | 0 {contrib/gcc => gcc}/config/arm/t-strongarm-pe | 0 {contrib/gcc => gcc}/config/arm/t-symbian | 0 {contrib/gcc => gcc}/config/arm/t-vxworks | 0 {contrib/gcc => gcc}/config/arm/t-wince-pe | 0 {contrib/gcc => gcc}/config/arm/t-xscale-coff | 0 {contrib/gcc => gcc}/config/arm/t-xscale-elf | 0 {contrib/gcc => gcc}/config/arm/uclinux-elf.h | 0 {contrib/gcc => gcc}/config/arm/unaligned-funcs.c | 0 {contrib/gcc => gcc}/config/arm/unknown-elf.h | 0 {contrib/gcc => gcc}/config/arm/unwind-arm.c | 0 {contrib/gcc => gcc}/config/arm/unwind-arm.h | 0 {contrib/gcc => gcc}/config/arm/vfp.md | 0 {contrib/gcc => gcc}/config/arm/vxworks.h | 0 {contrib/gcc => gcc}/config/arm/wince-pe.h | 0 {contrib/gcc => gcc}/config/arm/xscale-coff.h | 0 {contrib/gcc => gcc}/config/arm/xscale-elf.h | 0 {contrib/gcc => gcc}/config/darwin-64.c | 0 {contrib/gcc => gcc}/config/darwin-c.c | 0 {contrib/gcc => gcc}/config/darwin-crt2.c | 0 {contrib/gcc => gcc}/config/darwin-crt3.c | 0 {contrib/gcc => gcc}/config/darwin-protos.h | 0 {contrib/gcc => gcc}/config/darwin-sections.def | 0 {contrib/gcc => gcc}/config/darwin.c | 0 {contrib/gcc => gcc}/config/darwin.h | 0 {contrib/gcc => gcc}/config/darwin.opt | 0 {contrib/gcc => gcc}/config/darwin9.h | 0 {contrib/gcc => gcc}/config/dbx.h | 0 {contrib/gcc => gcc}/config/dbxcoff.h | 0 {contrib/gcc => gcc}/config/dbxelf.h | 0 {contrib/gcc => gcc}/config/dfp-bit.c | 0 {contrib/gcc => gcc}/config/dfp-bit.h | 0 {contrib/gcc => gcc}/config/divmod.c | 0 {contrib/gcc => gcc}/config/elfos.h | 0 {contrib/gcc => gcc}/config/floatunsidf.c | 0 {contrib/gcc => gcc}/config/floatunsisf.c | 0 {contrib/gcc => gcc}/config/floatunsitf.c | 0 {contrib/gcc => gcc}/config/floatunsixf.c | 0 {contrib/gcc => gcc}/config/fp-bit.c | 0 {contrib/gcc => gcc}/config/fp-bit.h | 0 {contrib/gcc => gcc}/config/freebsd-nthr.h | 0 {contrib/gcc => gcc}/config/freebsd-spec.h | 0 {contrib/gcc => gcc}/config/freebsd.h | 0 {contrib/gcc => gcc}/config/gnu.h | 0 {contrib/gcc => gcc}/config/gofast.h | 0 {contrib/gcc => gcc}/config/host-darwin.c | 0 {contrib/gcc => gcc}/config/host-darwin.h | 0 {contrib/gcc => gcc}/config/host-hpux.c | 0 {contrib/gcc => gcc}/config/host-linux.c | 0 {contrib/gcc => gcc}/config/host-solaris.c | 0 {contrib/gcc => gcc}/config/i386/athlon.md | 0 {contrib/gcc => gcc}/config/i386/att.h | 0 {contrib/gcc => gcc}/config/i386/beos-elf.h | 0 {contrib/gcc => gcc}/config/i386/biarch64.h | 0 {contrib/gcc => gcc}/config/i386/bsd.h | 0 {contrib/gcc => gcc}/config/i386/constraints.md | 0 {contrib/gcc => gcc}/config/i386/crtdll.h | 0 {contrib/gcc => gcc}/config/i386/crtfastmath.c | 0 {contrib/gcc => gcc}/config/i386/cygming.h | 0 {contrib/gcc => gcc}/config/i386/cygming.opt | 0 {contrib/gcc => gcc}/config/i386/cygwin.asm | 0 {contrib/gcc => gcc}/config/i386/cygwin.h | 0 {contrib/gcc => gcc}/config/i386/cygwin1.c | 0 {contrib/gcc => gcc}/config/i386/cygwin2.c | 0 {contrib/gcc => gcc}/config/i386/darwin-libgcc.10.4.ver | 0 {contrib/gcc => gcc}/config/i386/darwin-libgcc.10.5.ver | 0 {contrib/gcc => gcc}/config/i386/darwin.h | 0 {contrib/gcc => gcc}/config/i386/darwin64.h | 0 {contrib/gcc => gcc}/config/i386/djgpp.h | 0 {contrib/gcc => gcc}/config/i386/djgpp.opt | 0 {contrib/gcc => gcc}/config/i386/driver-i386.c | 0 {contrib/gcc => gcc}/config/i386/emmintrin.h | 0 {contrib/gcc => gcc}/config/i386/freebsd.h | 0 {contrib/gcc => gcc}/config/i386/freebsd64.h | 0 {contrib/gcc => gcc}/config/i386/gas.h | 0 {contrib/gcc => gcc}/config/i386/gmm_malloc.h | 0 {contrib/gcc => gcc}/config/i386/gmon-sol2.c | 0 {contrib/gcc => gcc}/config/i386/gnu.h | 0 {contrib/gcc => gcc}/config/i386/gstabs.h | 0 {contrib/gcc => gcc}/config/i386/gthr-win32.c | 0 {contrib/gcc => gcc}/config/i386/host-cygwin.c | 0 {contrib/gcc => gcc}/config/i386/host-i386-darwin.c | 0 {contrib/gcc => gcc}/config/i386/host-mingw32.c | 0 {contrib/gcc => gcc}/config/i386/i386-aout.h | 0 {contrib/gcc => gcc}/config/i386/i386-coff.h | 0 {contrib/gcc => gcc}/config/i386/i386-interix.h | 0 {contrib/gcc => gcc}/config/i386/i386-interix3.h | 0 {contrib/gcc => gcc}/config/i386/i386-modes.def | 0 {contrib/gcc => gcc}/config/i386/i386-protos.h | 0 {contrib/gcc => gcc}/config/i386/i386.c | 0 {contrib/gcc => gcc}/config/i386/i386.h | 0 {contrib/gcc => gcc}/config/i386/i386.md | 0 {contrib/gcc => gcc}/config/i386/i386.opt | 0 {contrib/gcc => gcc}/config/i386/i386elf.h | 0 {contrib/gcc => gcc}/config/i386/k6.md | 0 {contrib/gcc => gcc}/config/i386/kaos-i386.h | 0 {contrib/gcc => gcc}/config/i386/kfreebsd-gnu.h | 0 {contrib/gcc => gcc}/config/i386/knetbsd-gnu.h | 0 {contrib/gcc => gcc}/config/i386/libgcc-x86_64-glibc.ver | 0 {contrib/gcc => gcc}/config/i386/linux-unwind.h | 0 {contrib/gcc => gcc}/config/i386/linux.h | 0 {contrib/gcc => gcc}/config/i386/linux64.h | 0 {contrib/gcc => gcc}/config/i386/lynx.h | 0 {contrib/gcc => gcc}/config/i386/mach.h | 0 {contrib/gcc => gcc}/config/i386/mingw32.h | 0 {contrib/gcc => gcc}/config/i386/mm3dnow.h | 0 {contrib/gcc => gcc}/config/i386/mmintrin.h | 0 {contrib/gcc => gcc}/config/i386/mmx.md | 0 {contrib/gcc => gcc}/config/i386/netbsd-elf.h | 0 {contrib/gcc => gcc}/config/i386/netbsd.h | 0 {contrib/gcc => gcc}/config/i386/netbsd64.h | 0 {contrib/gcc => gcc}/config/i386/netware-crt0.c | 0 {contrib/gcc => gcc}/config/i386/netware-libgcc.c | 0 {contrib/gcc => gcc}/config/i386/netware-libgcc.def | 0 {contrib/gcc => gcc}/config/i386/netware-libgcc.exp | 0 {contrib/gcc => gcc}/config/i386/netware.c | 0 {contrib/gcc => gcc}/config/i386/nto.h | 0 {contrib/gcc => gcc}/config/i386/nwld.c | 0 {contrib/gcc => gcc}/config/i386/nwld.h | 0 {contrib/gcc => gcc}/config/i386/openbsd.h | 0 {contrib/gcc => gcc}/config/i386/openbsdelf.h | 0 {contrib/gcc => gcc}/config/i386/pentium.md | 0 {contrib/gcc => gcc}/config/i386/pmm_malloc.h | 0 {contrib/gcc => gcc}/config/i386/pmmintrin.h | 0 {contrib/gcc => gcc}/config/i386/ppro.md | 0 {contrib/gcc => gcc}/config/i386/predicates.md | 0 {contrib/gcc => gcc}/config/i386/ptx4-i.h | 0 {contrib/gcc => gcc}/config/i386/rtemself.h | 0 {contrib/gcc => gcc}/config/i386/sco5.h | 0 {contrib/gcc => gcc}/config/i386/sco5.opt | 0 {contrib/gcc => gcc}/config/i386/sol2-10.h | 0 {contrib/gcc => gcc}/config/i386/sol2-c1.asm | 0 {contrib/gcc => gcc}/config/i386/sol2-ci.asm | 0 {contrib/gcc => gcc}/config/i386/sol2-cn.asm | 0 {contrib/gcc => gcc}/config/i386/sol2-gc1.asm | 0 {contrib/gcc => gcc}/config/i386/sol2.h | 0 {contrib/gcc => gcc}/config/i386/sse.md | 0 {contrib/gcc => gcc}/config/i386/sync.md | 0 {contrib/gcc => gcc}/config/i386/sysv4-cpp.h | 0 {contrib/gcc => gcc}/config/i386/sysv4.h | 0 {contrib/gcc => gcc}/config/i386/sysv5.h | 0 {contrib/gcc => gcc}/config/i386/t-beos | 0 {contrib/gcc => gcc}/config/i386/t-crtfm | 0 {contrib/gcc => gcc}/config/i386/t-crtpic | 0 {contrib/gcc => gcc}/config/i386/t-crtstuff | 0 {contrib/gcc => gcc}/config/i386/t-cygming | 0 {contrib/gcc => gcc}/config/i386/t-cygwin | 0 {contrib/gcc => gcc}/config/i386/t-darwin | 0 {contrib/gcc => gcc}/config/i386/t-darwin64 | 0 {contrib/gcc => gcc}/config/i386/t-djgpp | 0 {contrib/gcc => gcc}/config/i386/t-gmm_malloc | 0 {contrib/gcc => gcc}/config/i386/t-gthr-win32 | 0 {contrib/gcc => gcc}/config/i386/t-i386elf | 0 {contrib/gcc => gcc}/config/i386/t-interix | 0 {contrib/gcc => gcc}/config/i386/t-linux64 | 0 {contrib/gcc => gcc}/config/i386/t-mingw32 | 0 {contrib/gcc => gcc}/config/i386/t-nto | 0 {contrib/gcc => gcc}/config/i386/t-nwld | 0 {contrib/gcc => gcc}/config/i386/t-openbsd | 0 {contrib/gcc => gcc}/config/i386/t-pmm_malloc | 0 {contrib/gcc => gcc}/config/i386/t-rtems-i386 | 0 {contrib/gcc => gcc}/config/i386/t-sco5 | 0 {contrib/gcc => gcc}/config/i386/t-sol2 | 0 {contrib/gcc => gcc}/config/i386/t-sol2-10 | 0 {contrib/gcc => gcc}/config/i386/t-svr3dbx | 0 {contrib/gcc => gcc}/config/i386/t-uwin | 0 {contrib/gcc => gcc}/config/i386/t-vxworks | 0 {contrib/gcc => gcc}/config/i386/t-vxworksae | 0 {contrib/gcc => gcc}/config/i386/unix.h | 0 {contrib/gcc => gcc}/config/i386/uwin.asm | 0 {contrib/gcc => gcc}/config/i386/uwin.h | 0 {contrib/gcc => gcc}/config/i386/vxworks.h | 0 {contrib/gcc => gcc}/config/i386/vxworksae.h | 0 {contrib/gcc => gcc}/config/i386/winnt-cxx.c | 0 {contrib/gcc => gcc}/config/i386/winnt-stubs.c | 0 {contrib/gcc => gcc}/config/i386/winnt.c | 0 {contrib/gcc => gcc}/config/i386/x-cygwin | 0 {contrib/gcc => gcc}/config/i386/x-darwin | 0 {contrib/gcc => gcc}/config/i386/x-i386 | 0 {contrib/gcc => gcc}/config/i386/x-mingw32 | 0 {contrib/gcc => gcc}/config/i386/x86-64.h | 0 {contrib/gcc => gcc}/config/i386/xm-cygwin.h | 0 {contrib/gcc => gcc}/config/i386/xm-djgpp.h | 0 {contrib/gcc => gcc}/config/i386/xm-mingw32.h | 0 {contrib/gcc => gcc}/config/i386/xmmintrin.h | 0 {contrib/gcc => gcc}/config/ia64/crtbegin.asm | 0 {contrib/gcc => gcc}/config/ia64/crtend.asm | 0 {contrib/gcc => gcc}/config/ia64/crtfastmath.c | 0 {contrib/gcc => gcc}/config/ia64/crti.asm | 0 {contrib/gcc => gcc}/config/ia64/crtn.asm | 0 {contrib/gcc => gcc}/config/ia64/elf.h | 0 {contrib/gcc => gcc}/config/ia64/fde-glibc.c | 0 {contrib/gcc => gcc}/config/ia64/freebsd.h | 0 {contrib/gcc => gcc}/config/ia64/hpux.h | 0 {contrib/gcc => gcc}/config/ia64/ia64-c.c | 0 {contrib/gcc => gcc}/config/ia64/ia64-modes.def | 0 {contrib/gcc => gcc}/config/ia64/ia64-protos.h | 0 {contrib/gcc => gcc}/config/ia64/ia64.c | 0 {contrib/gcc => gcc}/config/ia64/ia64.h | 0 {contrib/gcc => gcc}/config/ia64/ia64.md | 0 {contrib/gcc => gcc}/config/ia64/ia64.opt | 0 {contrib/gcc => gcc}/config/ia64/ia64intrin.h | 0 {contrib/gcc => gcc}/config/ia64/ilp32.opt | 0 {contrib/gcc => gcc}/config/ia64/itanium1.md | 0 {contrib/gcc => gcc}/config/ia64/itanium2.md | 0 {contrib/gcc => gcc}/config/ia64/lib1funcs.asm | 0 {contrib/gcc => gcc}/config/ia64/libgcc-ia64.ver | 0 {contrib/gcc => gcc}/config/ia64/linux-unwind.h | 0 {contrib/gcc => gcc}/config/ia64/linux.h | 0 {contrib/gcc => gcc}/config/ia64/predicates.md | 0 {contrib/gcc => gcc}/config/ia64/quadlib.c | 0 {contrib/gcc => gcc}/config/ia64/sync.md | 0 {contrib/gcc => gcc}/config/ia64/sysv4.h | 0 {contrib/gcc => gcc}/config/ia64/t-glibc | 0 {contrib/gcc => gcc}/config/ia64/t-glibc-libunwind | 0 {contrib/gcc => gcc}/config/ia64/t-hpux | 0 {contrib/gcc => gcc}/config/ia64/t-ia64 | 0 {contrib/gcc => gcc}/config/ia64/unwind-ia64.c | 0 {contrib/gcc => gcc}/config/ia64/unwind-ia64.h | 0 {contrib/gcc => gcc}/config/ia64/vect.md | 0 {contrib/gcc => gcc}/config/interix.h | 0 {contrib/gcc => gcc}/config/interix3.h | 0 {contrib/gcc => gcc}/config/kaos.h | 0 {contrib/gcc => gcc}/config/kfreebsd-gnu.h | 0 {contrib/gcc => gcc}/config/knetbsd-gnu.h | 0 {contrib/gcc => gcc}/config/libgcc-glibc.ver | 0 {contrib/gcc => gcc}/config/libgloss.h | 0 {contrib/gcc => gcc}/config/linux.h | 0 {contrib/gcc => gcc}/config/linux.opt | 0 {contrib/gcc => gcc}/config/lynx.h | 0 {contrib/gcc => gcc}/config/lynx.opt | 0 {contrib/gcc => gcc}/config/memcmp.c | 0 {contrib/gcc => gcc}/config/memcpy.c | 0 {contrib/gcc => gcc}/config/memmove.c | 0 {contrib/gcc => gcc}/config/memset.c | 0 {contrib/gcc => gcc}/config/mips/24k.md | 0 {contrib/gcc => gcc}/config/mips/3000.md | 0 {contrib/gcc => gcc}/config/mips/4000.md | 0 {contrib/gcc => gcc}/config/mips/4100.md | 0 {contrib/gcc => gcc}/config/mips/4130.md | 0 {contrib/gcc => gcc}/config/mips/4300.md | 0 {contrib/gcc => gcc}/config/mips/4600.md | 0 {contrib/gcc => gcc}/config/mips/4k.md | 0 {contrib/gcc => gcc}/config/mips/5000.md | 0 {contrib/gcc => gcc}/config/mips/5400.md | 0 {contrib/gcc => gcc}/config/mips/5500.md | 0 {contrib/gcc => gcc}/config/mips/5k.md | 0 {contrib/gcc => gcc}/config/mips/6000.md | 0 {contrib/gcc => gcc}/config/mips/7000.md | 0 {contrib/gcc => gcc}/config/mips/9000.md | 0 {contrib/gcc => gcc}/config/mips/constraints.md | 0 {contrib/gcc => gcc}/config/mips/crti.asm | 0 {contrib/gcc => gcc}/config/mips/crtn.asm | 0 {contrib/gcc => gcc}/config/mips/dbxmdebug.h | 0 {contrib/gcc => gcc}/config/mips/elf.h | 0 {contrib/gcc => gcc}/config/mips/elforion.h | 0 {contrib/gcc => gcc}/config/mips/generic.md | 0 {contrib/gcc => gcc}/config/mips/iris.h | 0 {contrib/gcc => gcc}/config/mips/iris5.h | 0 {contrib/gcc => gcc}/config/mips/iris6.h | 0 {contrib/gcc => gcc}/config/mips/irix-crti.asm | 0 {contrib/gcc => gcc}/config/mips/irix-crtn.asm | 0 {contrib/gcc => gcc}/config/mips/linux-unwind.h | 0 {contrib/gcc => gcc}/config/mips/linux.h | 0 {contrib/gcc => gcc}/config/mips/linux64.h | 0 {contrib/gcc => gcc}/config/mips/mips-dsp.md | 0 {contrib/gcc => gcc}/config/mips/mips-modes.def | 0 {contrib/gcc => gcc}/config/mips/mips-protos.h | 0 {contrib/gcc => gcc}/config/mips/mips-ps-3d.md | 0 {contrib/gcc => gcc}/config/mips/mips.c | 0 {contrib/gcc => gcc}/config/mips/mips.h | 0 {contrib/gcc => gcc}/config/mips/mips.md | 0 {contrib/gcc => gcc}/config/mips/mips.opt | 0 {contrib/gcc => gcc}/config/mips/mips16.S | 0 {contrib/gcc => gcc}/config/mips/netbsd.h | 0 {contrib/gcc => gcc}/config/mips/openbsd.h | 0 {contrib/gcc => gcc}/config/mips/predicates.md | 0 {contrib/gcc => gcc}/config/mips/r3900.h | 0 {contrib/gcc => gcc}/config/mips/rtems.h | 0 {contrib/gcc => gcc}/config/mips/sb1.md | 0 {contrib/gcc => gcc}/config/mips/sdb.h | 0 {contrib/gcc => gcc}/config/mips/sr71k.md | 0 {contrib/gcc => gcc}/config/mips/t-elf | 0 {contrib/gcc => gcc}/config/mips/t-gofast | 0 {contrib/gcc => gcc}/config/mips/t-iris | 0 {contrib/gcc => gcc}/config/mips/t-iris6 | 0 {contrib/gcc => gcc}/config/mips/t-isa3264 | 0 {contrib/gcc => gcc}/config/mips/t-linux64 | 0 {contrib/gcc => gcc}/config/mips/t-mips | 0 {contrib/gcc => gcc}/config/mips/t-r3900 | 0 {contrib/gcc => gcc}/config/mips/t-rtems | 0 {contrib/gcc => gcc}/config/mips/t-sb1 | 0 {contrib/gcc => gcc}/config/mips/t-slibgcc-irix | 0 {contrib/gcc => gcc}/config/mips/t-sr71k | 0 {contrib/gcc => gcc}/config/mips/t-vr | 0 {contrib/gcc => gcc}/config/mips/t-vxworks | 0 {contrib/gcc => gcc}/config/mips/vr.h | 0 {contrib/gcc => gcc}/config/mips/vr4120-div.S | 0 {contrib/gcc => gcc}/config/mips/vxworks.h | 0 {contrib/gcc => gcc}/config/mips/windiss.h | 0 {contrib/gcc => gcc}/config/netbsd-aout.h | 0 {contrib/gcc => gcc}/config/netbsd-elf.h | 0 {contrib/gcc => gcc}/config/netbsd.h | 0 {contrib/gcc => gcc}/config/openbsd-oldgas.h | 0 {contrib/gcc => gcc}/config/openbsd.h | 0 {contrib/gcc => gcc}/config/ptx4.h | 0 {contrib/gcc => gcc}/config/rs6000/40x.md | 0 {contrib/gcc => gcc}/config/rs6000/440.md | 0 {contrib/gcc => gcc}/config/rs6000/603.md | 0 {contrib/gcc => gcc}/config/rs6000/6xx.md | 0 {contrib/gcc => gcc}/config/rs6000/7450.md | 0 {contrib/gcc => gcc}/config/rs6000/7xx.md | 0 {contrib/gcc => gcc}/config/rs6000/8540.md | 0 {contrib/gcc => gcc}/config/rs6000/aix.h | 0 {contrib/gcc => gcc}/config/rs6000/aix.opt | 0 {contrib/gcc => gcc}/config/rs6000/aix41.h | 0 {contrib/gcc => gcc}/config/rs6000/aix41.opt | 0 {contrib/gcc => gcc}/config/rs6000/aix43.h | 0 {contrib/gcc => gcc}/config/rs6000/aix51.h | 0 {contrib/gcc => gcc}/config/rs6000/aix52.h | 0 {contrib/gcc => gcc}/config/rs6000/aix64.opt | 0 {contrib/gcc => gcc}/config/rs6000/altivec.h | 0 {contrib/gcc => gcc}/config/rs6000/altivec.md | 0 {contrib/gcc => gcc}/config/rs6000/beos.h | 0 {contrib/gcc => gcc}/config/rs6000/biarch64.h | 0 {contrib/gcc => gcc}/config/rs6000/constraints.md | 0 {contrib/gcc => gcc}/config/rs6000/crtsavres.asm | 0 {contrib/gcc => gcc}/config/rs6000/darwin-asm.h | 0 {contrib/gcc => gcc}/config/rs6000/darwin-fallback.c | 0 {contrib/gcc => gcc}/config/rs6000/darwin-fpsave.asm | 0 {contrib/gcc => gcc}/config/rs6000/darwin-ldouble-format | 0 {contrib/gcc => gcc}/config/rs6000/darwin-ldouble.c | 0 {contrib/gcc => gcc}/config/rs6000/darwin-libgcc.10.4.ver | 0 {contrib/gcc => gcc}/config/rs6000/darwin-libgcc.10.5.ver | 0 {contrib/gcc => gcc}/config/rs6000/darwin-tramp.asm | 0 {contrib/gcc => gcc}/config/rs6000/darwin-unwind.h | 0 {contrib/gcc => gcc}/config/rs6000/darwin-vecsave.asm | 0 {contrib/gcc => gcc}/config/rs6000/darwin-world.asm | 0 {contrib/gcc => gcc}/config/rs6000/darwin.h | 0 {contrib/gcc => gcc}/config/rs6000/darwin.md | 0 {contrib/gcc => gcc}/config/rs6000/darwin.opt | 0 {contrib/gcc => gcc}/config/rs6000/darwin64.h | 0 {contrib/gcc => gcc}/config/rs6000/darwin7.h | 0 {contrib/gcc => gcc}/config/rs6000/darwin8.h | 0 {contrib/gcc => gcc}/config/rs6000/default64.h | 0 {contrib/gcc => gcc}/config/rs6000/e500-double.h | 0 {contrib/gcc => gcc}/config/rs6000/eabi-ci.asm | 0 {contrib/gcc => gcc}/config/rs6000/eabi-cn.asm | 0 {contrib/gcc => gcc}/config/rs6000/eabi.asm | 0 {contrib/gcc => gcc}/config/rs6000/eabi.h | 0 {contrib/gcc => gcc}/config/rs6000/eabialtivec.h | 0 {contrib/gcc => gcc}/config/rs6000/eabisim.h | 0 {contrib/gcc => gcc}/config/rs6000/eabispe.h | 0 {contrib/gcc => gcc}/config/rs6000/freebsd.h | 0 {contrib/gcc => gcc}/config/rs6000/gnu.h | 0 {contrib/gcc => gcc}/config/rs6000/host-darwin.c | 0 {contrib/gcc => gcc}/config/rs6000/host-ppc64-darwin.c | 0 {contrib/gcc => gcc}/config/rs6000/kaos-ppc.h | 0 {contrib/gcc => gcc}/config/rs6000/libgcc-ppc-glibc.ver | 0 {contrib/gcc => gcc}/config/rs6000/libgcc-ppc64.ver | 0 {contrib/gcc => gcc}/config/rs6000/linux-unwind.h | 0 {contrib/gcc => gcc}/config/rs6000/linux.h | 0 {contrib/gcc => gcc}/config/rs6000/linux64.h | 0 {contrib/gcc => gcc}/config/rs6000/linux64.opt | 0 {contrib/gcc => gcc}/config/rs6000/linuxaltivec.h | 0 {contrib/gcc => gcc}/config/rs6000/linuxspe.h | 0 {contrib/gcc => gcc}/config/rs6000/lynx.h | 0 {contrib/gcc => gcc}/config/rs6000/milli.exp | 0 {contrib/gcc => gcc}/config/rs6000/mpc.md | 0 {contrib/gcc => gcc}/config/rs6000/netbsd.h | 0 {contrib/gcc => gcc}/config/rs6000/power4.md | 0 {contrib/gcc => gcc}/config/rs6000/power5.md | 0 {contrib/gcc => gcc}/config/rs6000/ppc-asm.h | 0 {contrib/gcc => gcc}/config/rs6000/ppc64-fp.c | 0 {contrib/gcc => gcc}/config/rs6000/predicates.md | 0 {contrib/gcc => gcc}/config/rs6000/rios1.md | 0 {contrib/gcc => gcc}/config/rs6000/rios2.md | 0 {contrib/gcc => gcc}/config/rs6000/rs6000-c.c | 0 {contrib/gcc => gcc}/config/rs6000/rs6000-modes.def | 0 {contrib/gcc => gcc}/config/rs6000/rs6000-protos.h | 0 {contrib/gcc => gcc}/config/rs6000/rs6000.c | 0 {contrib/gcc => gcc}/config/rs6000/rs6000.h | 0 {contrib/gcc => gcc}/config/rs6000/rs6000.md | 0 {contrib/gcc => gcc}/config/rs6000/rs6000.opt | 0 {contrib/gcc => gcc}/config/rs6000/rs64.md | 0 {contrib/gcc => gcc}/config/rs6000/rtems.h | 0 {contrib/gcc => gcc}/config/rs6000/secureplt.h | 0 {contrib/gcc => gcc}/config/rs6000/sfp-machine.h | 0 {contrib/gcc => gcc}/config/rs6000/sol-ci.asm | 0 {contrib/gcc => gcc}/config/rs6000/sol-cn.asm | 0 {contrib/gcc => gcc}/config/rs6000/spe.h | 0 {contrib/gcc => gcc}/config/rs6000/spe.md | 0 {contrib/gcc => gcc}/config/rs6000/sync.md | 0 {contrib/gcc => gcc}/config/rs6000/sysv4.h | 0 {contrib/gcc => gcc}/config/rs6000/sysv4.opt | 0 {contrib/gcc => gcc}/config/rs6000/sysv4le.h | 0 {contrib/gcc => gcc}/config/rs6000/t-aix43 | 0 {contrib/gcc => gcc}/config/rs6000/t-aix52 | 0 {contrib/gcc => gcc}/config/rs6000/t-beos | 0 {contrib/gcc => gcc}/config/rs6000/t-darwin | 0 {contrib/gcc => gcc}/config/rs6000/t-darwin8 | 0 {contrib/gcc => gcc}/config/rs6000/t-fprules | 0 {contrib/gcc => gcc}/config/rs6000/t-fprules-fpbit | 0 {contrib/gcc => gcc}/config/rs6000/t-fprules-softfp | 0 {contrib/gcc => gcc}/config/rs6000/t-linux64 | 0 {contrib/gcc => gcc}/config/rs6000/t-lynx | 0 {contrib/gcc => gcc}/config/rs6000/t-netbsd | 0 {contrib/gcc => gcc}/config/rs6000/t-newas | 0 {contrib/gcc => gcc}/config/rs6000/t-ppccomm | 0 {contrib/gcc => gcc}/config/rs6000/t-ppcendian | 0 {contrib/gcc => gcc}/config/rs6000/t-ppcgas | 0 {contrib/gcc => gcc}/config/rs6000/t-ppcos | 0 {contrib/gcc => gcc}/config/rs6000/t-rs6000 | 0 {contrib/gcc => gcc}/config/rs6000/t-rtems | 0 {contrib/gcc => gcc}/config/rs6000/t-spe | 0 {contrib/gcc => gcc}/config/rs6000/t-vxworks | 0 {contrib/gcc => gcc}/config/rs6000/t-vxworksae | 0 {contrib/gcc => gcc}/config/rs6000/tramp.asm | 0 {contrib/gcc => gcc}/config/rs6000/vxworks.h | 0 {contrib/gcc => gcc}/config/rs6000/vxworksae.h | 0 {contrib/gcc => gcc}/config/rs6000/windiss.h | 0 {contrib/gcc => gcc}/config/rs6000/x-darwin | 0 {contrib/gcc => gcc}/config/rs6000/x-darwin64 | 0 {contrib/gcc => gcc}/config/rs6000/x-linux64 | 0 {contrib/gcc => gcc}/config/rs6000/xcoff.h | 0 {contrib/gcc => gcc}/config/rtems.h | 0 {contrib/gcc => gcc}/config/s390/2064.md | 0 {contrib/gcc => gcc}/config/s390/2084.md | 0 {contrib/gcc => gcc}/config/s390/constraints.md | 0 {contrib/gcc => gcc}/config/s390/fixdfdi.h | 0 {contrib/gcc => gcc}/config/s390/libgcc-glibc.ver | 0 {contrib/gcc => gcc}/config/s390/linux-unwind.h | 0 {contrib/gcc => gcc}/config/s390/linux.h | 0 {contrib/gcc => gcc}/config/s390/predicates.md | 0 {contrib/gcc => gcc}/config/s390/s390-modes.def | 0 {contrib/gcc => gcc}/config/s390/s390-protos.h | 0 {contrib/gcc => gcc}/config/s390/s390.c | 0 {contrib/gcc => gcc}/config/s390/s390.h | 0 {contrib/gcc => gcc}/config/s390/s390.md | 0 {contrib/gcc => gcc}/config/s390/s390.opt | 0 {contrib/gcc => gcc}/config/s390/s390x.h | 0 {contrib/gcc => gcc}/config/s390/t-crtstuff | 0 {contrib/gcc => gcc}/config/s390/t-linux | 0 {contrib/gcc => gcc}/config/s390/t-linux64 | 0 {contrib/gcc => gcc}/config/s390/t-tpf | 0 {contrib/gcc => gcc}/config/s390/tpf-unwind.h | 0 {contrib/gcc => gcc}/config/s390/tpf.h | 0 {contrib/gcc => gcc}/config/s390/tpf.md | 0 {contrib/gcc => gcc}/config/s390/tpf.opt | 0 {contrib/gcc => gcc}/config/soft-fp/README | 0 {contrib/gcc => gcc}/config/soft-fp/adddf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/addsf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/addtf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/divdf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/divsf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/divtf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/double.h | 0 {contrib/gcc => gcc}/config/soft-fp/eqdf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/eqsf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/eqtf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/extenddftf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/extended.h | 0 {contrib/gcc => gcc}/config/soft-fp/extendsfdf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/extendsftf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixdfdi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixdfsi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixsfdi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixsfsi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixtfdi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixtfsi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixunsdfdi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixunsdfsi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixunssfdi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixunssfsi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixunstfdi.c | 0 {contrib/gcc => gcc}/config/soft-fp/fixunstfsi.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatdidf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatdisf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatditf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatsidf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatsisf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatsitf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatundidf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatundisf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatunditf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatunsidf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatunsisf.c | 0 {contrib/gcc => gcc}/config/soft-fp/floatunsitf.c | 0 {contrib/gcc => gcc}/config/soft-fp/gedf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/gesf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/getf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/ledf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/lesf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/letf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/muldf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/mulsf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/multf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/negdf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/negsf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/negtf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/op-1.h | 0 {contrib/gcc => gcc}/config/soft-fp/op-2.h | 0 {contrib/gcc => gcc}/config/soft-fp/op-4.h | 0 {contrib/gcc => gcc}/config/soft-fp/op-8.h | 0 {contrib/gcc => gcc}/config/soft-fp/op-common.h | 0 {contrib/gcc => gcc}/config/soft-fp/quad.h | 0 {contrib/gcc => gcc}/config/soft-fp/single.h | 0 {contrib/gcc => gcc}/config/soft-fp/soft-fp.h | 0 {contrib/gcc => gcc}/config/soft-fp/subdf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/subsf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/subtf3.c | 0 {contrib/gcc => gcc}/config/soft-fp/t-softfp | 0 {contrib/gcc => gcc}/config/soft-fp/truncdfsf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/trunctfdf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/trunctfsf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/unorddf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/unordsf2.c | 0 {contrib/gcc => gcc}/config/soft-fp/unordtf2.c | 0 {contrib/gcc => gcc}/config/sol2-10.h | 0 {contrib/gcc => gcc}/config/sol2-6.h | 0 {contrib/gcc => gcc}/config/sol2-c.c | 0 {contrib/gcc => gcc}/config/sol2-protos.h | 0 {contrib/gcc => gcc}/config/sol2.c | 0 {contrib/gcc => gcc}/config/sol2.h | 0 {contrib/gcc => gcc}/config/sparc/biarch64.h | 0 {contrib/gcc => gcc}/config/sparc/crtfastmath.c | 0 {contrib/gcc => gcc}/config/sparc/cypress.md | 0 {contrib/gcc => gcc}/config/sparc/freebsd.h | 0 {contrib/gcc => gcc}/config/sparc/gmon-sol2.c | 0 {contrib/gcc => gcc}/config/sparc/hypersparc.md | 0 {contrib/gcc => gcc}/config/sparc/lb1spc.asm | 0 {contrib/gcc => gcc}/config/sparc/lb1spl.asm | 0 {contrib/gcc => gcc}/config/sparc/libgcc-sparc-glibc.ver | 0 {contrib/gcc => gcc}/config/sparc/linux-unwind.h | 0 {contrib/gcc => gcc}/config/sparc/linux.h | 0 {contrib/gcc => gcc}/config/sparc/linux64.h | 0 {contrib/gcc => gcc}/config/sparc/little-endian.opt | 0 {contrib/gcc => gcc}/config/sparc/long-double-switch.opt | 0 {contrib/gcc => gcc}/config/sparc/netbsd-elf.h | 0 {contrib/gcc => gcc}/config/sparc/niagara.md | 0 {contrib/gcc => gcc}/config/sparc/openbsd1-64.h | 0 {contrib/gcc => gcc}/config/sparc/openbsd64.h | 0 {contrib/gcc => gcc}/config/sparc/predicates.md | 0 {contrib/gcc => gcc}/config/sparc/rtemself.h | 0 {contrib/gcc => gcc}/config/sparc/sol2-64.h | 0 {contrib/gcc => gcc}/config/sparc/sol2-bi.h | 0 {contrib/gcc => gcc}/config/sparc/sol2-c1.asm | 0 {contrib/gcc => gcc}/config/sparc/sol2-ci.asm | 0 {contrib/gcc => gcc}/config/sparc/sol2-cn.asm | 0 {contrib/gcc => gcc}/config/sparc/sol2-gas-bi.h | 0 {contrib/gcc => gcc}/config/sparc/sol2-gas.h | 0 {contrib/gcc => gcc}/config/sparc/sol2-gld-bi.h | 0 {contrib/gcc => gcc}/config/sparc/sol2-gld.h | 0 {contrib/gcc => gcc}/config/sparc/sol2.h | 0 {contrib/gcc => gcc}/config/sparc/sol26-sld.h | 0 {contrib/gcc => gcc}/config/sparc/sp-elf.h | 0 {contrib/gcc => gcc}/config/sparc/sp64-elf.h | 0 {contrib/gcc => gcc}/config/sparc/sparc-modes.def | 0 {contrib/gcc => gcc}/config/sparc/sparc-protos.h | 0 {contrib/gcc => gcc}/config/sparc/sparc.c | 0 {contrib/gcc => gcc}/config/sparc/sparc.h | 0 {contrib/gcc => gcc}/config/sparc/sparc.md | 0 {contrib/gcc => gcc}/config/sparc/sparc.opt | 0 {contrib/gcc => gcc}/config/sparc/sparclet.md | 0 {contrib/gcc => gcc}/config/sparc/supersparc.md | 0 {contrib/gcc => gcc}/config/sparc/sync.md | 0 {contrib/gcc => gcc}/config/sparc/sysv4-only.h | 0 {contrib/gcc => gcc}/config/sparc/sysv4.h | 0 {contrib/gcc => gcc}/config/sparc/t-crtfm | 0 {contrib/gcc => gcc}/config/sparc/t-elf | 0 {contrib/gcc => gcc}/config/sparc/t-linux | 0 {contrib/gcc => gcc}/config/sparc/t-linux64 | 0 {contrib/gcc => gcc}/config/sparc/t-netbsd64 | 0 {contrib/gcc => gcc}/config/sparc/t-sol2 | 0 {contrib/gcc => gcc}/config/sparc/t-sol2-64 | 0 {contrib/gcc => gcc}/config/sparc/ultra1_2.md | 0 {contrib/gcc => gcc}/config/sparc/ultra3.md | 0 {contrib/gcc => gcc}/config/svr3.h | 0 {contrib/gcc => gcc}/config/svr4.h | 0 {contrib/gcc => gcc}/config/t-darwin | 0 {contrib/gcc => gcc}/config/t-dfprules | 0 {contrib/gcc => gcc}/config/t-freebsd | 0 {contrib/gcc => gcc}/config/t-freebsd-thread | 0 {contrib/gcc => gcc}/config/t-gnu | 0 {contrib/gcc => gcc}/config/t-libc-ok | 0 {contrib/gcc => gcc}/config/t-libgcc-pic | 0 {contrib/gcc => gcc}/config/t-libunwind | 0 {contrib/gcc => gcc}/config/t-libunwind-elf | 0 {contrib/gcc => gcc}/config/t-linux | 0 {contrib/gcc => gcc}/config/t-lynx | 0 {contrib/gcc => gcc}/config/t-netbsd | 0 {contrib/gcc => gcc}/config/t-openbsd | 0 {contrib/gcc => gcc}/config/t-openbsd-thread | 0 {contrib/gcc => gcc}/config/t-rtems | 0 {contrib/gcc => gcc}/config/t-slibgcc-darwin | 0 {contrib/gcc => gcc}/config/t-slibgcc-elf-ver | 0 {contrib/gcc => gcc}/config/t-slibgcc-nolc-override | 0 {contrib/gcc => gcc}/config/t-slibgcc-sld | 0 {contrib/gcc => gcc}/config/t-sol2 | 0 {contrib/gcc => gcc}/config/t-svr4 | 0 {contrib/gcc => gcc}/config/t-vxworks | 0 {contrib/gcc => gcc}/config/tm-dwarf2.h | 0 {contrib/gcc => gcc}/config/udivmod.c | 0 {contrib/gcc => gcc}/config/udivmodsi4.c | 0 {contrib/gcc => gcc}/config/usegas.h | 0 {contrib/gcc => gcc}/config/vx-common.h | 0 {contrib/gcc => gcc}/config/vxlib.c | 0 {contrib/gcc => gcc}/config/vxworks.h | 0 {contrib/gcc => gcc}/config/vxworks.opt | 0 {contrib/gcc => gcc}/config/vxworksae.h | 0 {contrib/gcc => gcc}/config/windiss.h | 0 {contrib/gcc => gcc}/config/x-darwin | 0 {contrib/gcc => gcc}/config/x-hpux | 0 {contrib/gcc => gcc}/config/x-interix | 0 {contrib/gcc => gcc}/config/x-linux | 0 {contrib/gcc => gcc}/config/x-solaris | 0 {contrib/gcc => gcc}/configure | 0 {contrib/gcc => gcc}/configure.ac | 0 {contrib/gcc => gcc}/conflict.c | 0 {contrib/gcc => gcc}/convert.c | 0 {contrib/gcc => gcc}/convert.h | 0 {contrib/gcc => gcc}/coretypes.h | 0 {contrib/gcc => gcc}/coverage.c | 0 {contrib/gcc => gcc}/coverage.h | 0 {contrib/gcc => gcc}/cp/ChangeLog | 0 {contrib/gcc => gcc}/cp/ChangeLog-1993 | 0 {contrib/gcc => gcc}/cp/ChangeLog-1994 | 0 {contrib/gcc => gcc}/cp/ChangeLog-1995 | 0 {contrib/gcc => gcc}/cp/ChangeLog-1996 | 0 {contrib/gcc => gcc}/cp/ChangeLog-1997 | 0 {contrib/gcc => gcc}/cp/ChangeLog-1998 | 0 {contrib/gcc => gcc}/cp/ChangeLog-1999 | 0 {contrib/gcc => gcc}/cp/ChangeLog-2000 | 0 {contrib/gcc => gcc}/cp/ChangeLog-2001 | 0 {contrib/gcc => gcc}/cp/ChangeLog-2002 | 0 {contrib/gcc => gcc}/cp/ChangeLog-2003 | 0 {contrib/gcc => gcc}/cp/ChangeLog-2004 | 0 {contrib/gcc => gcc}/cp/ChangeLog.tree-ssa | 0 {contrib/gcc => gcc}/cp/Make-lang.in | 0 {contrib/gcc => gcc}/cp/NEWS | 0 {contrib/gcc => gcc}/cp/call.c | 0 {contrib/gcc => gcc}/cp/cfns.gperf | 0 {contrib/gcc => gcc}/cp/class.c | 0 {contrib/gcc => gcc}/cp/config-lang.in | 0 {contrib/gcc => gcc}/cp/cp-gimplify.c | 0 {contrib/gcc => gcc}/cp/cp-lang.c | 0 {contrib/gcc => gcc}/cp/cp-objcp-common.c | 0 {contrib/gcc => gcc}/cp/cp-objcp-common.h | 0 {contrib/gcc => gcc}/cp/cp-tree.def | 0 {contrib/gcc => gcc}/cp/cp-tree.h | 0 {contrib/gcc => gcc}/cp/cvt.c | 0 {contrib/gcc => gcc}/cp/cxx-pretty-print.c | 0 {contrib/gcc => gcc}/cp/cxx-pretty-print.h | 0 {contrib/gcc => gcc}/cp/decl.c | 0 {contrib/gcc => gcc}/cp/decl.h | 0 {contrib/gcc => gcc}/cp/decl2.c | 0 {contrib/gcc => gcc}/cp/dump.c | 0 {contrib/gcc => gcc}/cp/error.c | 0 {contrib/gcc => gcc}/cp/except.c | 0 {contrib/gcc => gcc}/cp/expr.c | 0 {contrib/gcc => gcc}/cp/friend.c | 0 {contrib/gcc => gcc}/cp/g++.1 | 0 {contrib/gcc => gcc}/cp/g++spec.c | 0 {contrib/gcc => gcc}/cp/init.c | 0 {contrib/gcc => gcc}/cp/lang-specs.h | 0 {contrib/gcc => gcc}/cp/lex.c | 0 {contrib/gcc => gcc}/cp/mangle.c | 0 {contrib/gcc => gcc}/cp/method.c | 0 {contrib/gcc => gcc}/cp/name-lookup.c | 0 {contrib/gcc => gcc}/cp/name-lookup.h | 0 {contrib/gcc => gcc}/cp/operators.def | 0 {contrib/gcc => gcc}/cp/optimize.c | 0 {contrib/gcc => gcc}/cp/parser.c | 0 {contrib/gcc => gcc}/cp/pt.c | 0 {contrib/gcc => gcc}/cp/ptree.c | 0 {contrib/gcc => gcc}/cp/repo.c | 0 {contrib/gcc => gcc}/cp/rtti.c | 0 {contrib/gcc => gcc}/cp/search.c | 0 {contrib/gcc => gcc}/cp/semantics.c | 0 {contrib/gcc => gcc}/cp/tree.c | 0 {contrib/gcc => gcc}/cp/typeck.c | 0 {contrib/gcc => gcc}/cp/typeck2.c | 0 {contrib/gcc => gcc}/cppdefault.c | 0 {contrib/gcc => gcc}/cppdefault.h | 0 {contrib/gcc => gcc}/cppspec.c | 0 {contrib/gcc => gcc}/crtstuff.c | 0 {contrib/gcc => gcc}/cse.c | 0 {contrib/gcc => gcc}/cselib.c | 0 {contrib/gcc => gcc}/cselib.h | 0 {contrib/gcc => gcc}/cstamp-h.in | 0 {contrib/gcc => gcc}/dbxout.c | 0 {contrib/gcc => gcc}/dbxout.h | 0 {contrib/gcc => gcc}/ddg.c | 0 {contrib/gcc => gcc}/ddg.h | 0 {contrib/gcc => gcc}/debug.c | 0 {contrib/gcc => gcc}/debug.h | 0 {contrib/gcc => gcc}/defaults.h | 0 {contrib/gcc => gcc}/df-core.c | 0 {contrib/gcc => gcc}/df-problems.c | 0 {contrib/gcc => gcc}/df-scan.c | 0 {contrib/gcc => gcc}/df.h | 0 {contrib/gcc => gcc}/dfp.c | 0 {contrib/gcc => gcc}/dfp.h | 0 {contrib/gcc => gcc}/diagnostic.c | 0 {contrib/gcc => gcc}/diagnostic.def | 0 {contrib/gcc => gcc}/diagnostic.h | 0 {contrib/gcc => gcc}/doc/bugreport.texi | 0 {contrib/gcc => gcc}/doc/c-tree.texi | 0 {contrib/gcc => gcc}/doc/cfg.texi | 0 {contrib/gcc => gcc}/doc/collect2.texi | 0 {contrib/gcc => gcc}/doc/compat.texi | 0 {contrib/gcc => gcc}/doc/configfiles.texi | 0 {contrib/gcc => gcc}/doc/configterms.texi | 0 {contrib/gcc => gcc}/doc/contrib.texi | 0 {contrib/gcc => gcc}/doc/contribute.texi | 0 {contrib/gcc => gcc}/doc/cpp.1 | 0 {contrib/gcc => gcc}/doc/cpp.texi | 0 {contrib/gcc => gcc}/doc/cppenv.texi | 0 {contrib/gcc => gcc}/doc/cppinternals.texi | 0 {contrib/gcc => gcc}/doc/cppopts.texi | 0 {contrib/gcc => gcc}/doc/extend.texi | 0 {contrib/gcc => gcc}/doc/fragments.texi | 0 {contrib/gcc => gcc}/doc/frontends.texi | 0 {contrib/gcc => gcc}/doc/gcc.1 | 0 {contrib/gcc => gcc}/doc/gcc.texi | 0 {contrib/gcc => gcc}/doc/gccint.texi | 0 {contrib/gcc => gcc}/doc/gcov.1 | 0 {contrib/gcc => gcc}/doc/gcov.texi | 0 {contrib/gcc => gcc}/doc/gnu.texi | 0 {contrib/gcc => gcc}/doc/gty.texi | 0 {contrib/gcc => gcc}/doc/headerdirs.texi | 0 {contrib/gcc => gcc}/doc/hostconfig.texi | 0 {contrib/gcc => gcc}/doc/implement-c.texi | 0 {contrib/gcc => gcc}/doc/include/fdl.texi | 0 {contrib/gcc => gcc}/doc/include/funding.texi | 0 {contrib/gcc => gcc}/doc/include/gcc-common.texi | 0 {contrib/gcc => gcc}/doc/include/gpl.texi | 0 {contrib/gcc => gcc}/doc/include/texinfo.tex | 0 {contrib/gcc => gcc}/doc/interface.texi | 0 {contrib/gcc => gcc}/doc/invoke.texi | 0 {contrib/gcc => gcc}/doc/languages.texi | 0 {contrib/gcc => gcc}/doc/libgcc.texi | 0 {contrib/gcc => gcc}/doc/loop.texi | 0 {contrib/gcc => gcc}/doc/makefile.texi | 0 {contrib/gcc => gcc}/doc/md.texi | 0 {contrib/gcc => gcc}/doc/objc.texi | 0 {contrib/gcc => gcc}/doc/options.texi | 0 {contrib/gcc => gcc}/doc/passes.texi | 0 {contrib/gcc => gcc}/doc/portability.texi | 0 {contrib/gcc => gcc}/doc/rtl.texi | 0 {contrib/gcc => gcc}/doc/service.texi | 0 {contrib/gcc => gcc}/doc/sourcebuild.texi | 0 {contrib/gcc => gcc}/doc/standards.texi | 0 {contrib/gcc => gcc}/doc/tm.texi | 0 {contrib/gcc => gcc}/doc/tree-ssa.texi | 0 {contrib/gcc => gcc}/doc/trouble.texi | 0 {contrib/gcc => gcc}/dojump.c | 0 {contrib/gcc => gcc}/dominance.c | 0 {contrib/gcc => gcc}/domwalk.c | 0 {contrib/gcc => gcc}/domwalk.h | 0 {contrib/gcc => gcc}/double-int.c | 0 {contrib/gcc => gcc}/double-int.h | 0 {contrib/gcc => gcc}/dummy-checksum.c | 0 {contrib/gcc => gcc}/dwarf.h | 0 {contrib/gcc => gcc}/dwarf2.h | 0 {contrib/gcc => gcc}/dwarf2asm.c | 0 {contrib/gcc => gcc}/dwarf2asm.h | 0 {contrib/gcc => gcc}/dwarf2out.c | 0 {contrib/gcc => gcc}/dwarf2out.h | 0 {contrib/gcc => gcc}/emit-rtl.c | 0 {contrib/gcc => gcc}/emit-rtl.h | 0 {contrib/gcc => gcc}/emutls.c | 0 {contrib/gcc => gcc}/errors.c | 0 {contrib/gcc => gcc}/errors.h | 0 {contrib/gcc => gcc}/et-forest.c | 0 {contrib/gcc => gcc}/et-forest.h | 0 {contrib/gcc => gcc}/except.c | 0 {contrib/gcc => gcc}/except.h | 0 {contrib/gcc => gcc}/explow.c | 0 {contrib/gcc => gcc}/expmed.c | 0 {contrib/gcc => gcc}/expr.c | 0 {contrib/gcc => gcc}/expr.h | 0 {contrib/gcc => gcc}/final.c | 0 {contrib/gcc => gcc}/fix-header.c | 0 {contrib/gcc => gcc}/fixproto | 0 {contrib/gcc => gcc}/flags.h | 0 {contrib/gcc => gcc}/flow.c | 0 {contrib/gcc => gcc}/fold-const.c | 0 {contrib/gcc => gcc}/fp-test.c | 0 {contrib/gcc => gcc}/function.c | 0 {contrib/gcc => gcc}/function.h | 0 {contrib/gcc => gcc}/gbl-ctors.h | 0 {contrib/gcc => gcc}/gcc.c | 0 {contrib/gcc => gcc}/gcc.h | 0 {contrib/gcc => gcc}/gccbug.in | 0 {contrib/gcc => gcc}/gccspec.c | 0 {contrib/gcc => gcc}/gcov-dump.c | 0 {contrib/gcc => gcc}/gcov-io.c | 0 {contrib/gcc => gcc}/gcov-io.h | 0 {contrib/gcc => gcc}/gcov-iov.c | 0 {contrib/gcc => gcc}/gcov.c | 0 {contrib/gcc => gcc}/gcse.c | 0 {contrib/gcc => gcc}/gdbinit.in | 0 {contrib/gcc => gcc}/gen-protos.c | 0 {contrib/gcc => gcc}/genattr.c | 0 {contrib/gcc => gcc}/genattrtab.c | 0 {contrib/gcc => gcc}/genautomata.c | 0 {contrib/gcc => gcc}/gencheck.c | 0 {contrib/gcc => gcc}/genchecksum.c | 0 {contrib/gcc => gcc}/gencodes.c | 0 {contrib/gcc => gcc}/genconditions.c | 0 {contrib/gcc => gcc}/genconfig.c | 0 {contrib/gcc => gcc}/genconstants.c | 0 {contrib/gcc => gcc}/genemit.c | 0 {contrib/gcc => gcc}/genextract.c | 0 {contrib/gcc => gcc}/genflags.c | 0 {contrib/gcc => gcc}/gengenrtl.c | 0 {contrib/gcc => gcc}/gengtype-lex.l | 0 {contrib/gcc => gcc}/gengtype-yacc.y | 0 {contrib/gcc => gcc}/gengtype.c | 0 {contrib/gcc => gcc}/gengtype.h | 0 {contrib/gcc => gcc}/genmddeps.c | 0 {contrib/gcc => gcc}/genmodes.c | 0 {contrib/gcc => gcc}/genmultilib | 0 {contrib/gcc => gcc}/genopinit.c | 0 {contrib/gcc => gcc}/genoutput.c | 0 {contrib/gcc => gcc}/genpeep.c | 0 {contrib/gcc => gcc}/genpreds.c | 0 {contrib/gcc => gcc}/genrecog.c | 0 {contrib/gcc => gcc}/gensupport.c | 0 {contrib/gcc => gcc}/gensupport.h | 0 {contrib/gcc => gcc}/ggc-common.c | 0 {contrib/gcc => gcc}/ggc-none.c | 0 {contrib/gcc => gcc}/ggc-page.c | 0 {contrib/gcc => gcc}/ggc-zone.c | 0 {contrib/gcc => gcc}/ggc.h | 0 {contrib/gcc => gcc}/gimple-low.c | 0 {contrib/gcc => gcc}/gimplify.c | 0 {contrib/gcc => gcc}/ginclude/decfloat.h | 0 {contrib/gcc => gcc}/ginclude/float.h | 0 {contrib/gcc => gcc}/ginclude/iso646.h | 0 {contrib/gcc => gcc}/ginclude/stdarg.h | 0 {contrib/gcc => gcc}/ginclude/stdbool.h | 0 {contrib/gcc => gcc}/ginclude/stddef.h | 0 {contrib/gcc => gcc}/ginclude/varargs.h | 0 {contrib/gcc => gcc}/glimits.h | 0 {contrib/gcc => gcc}/global.c | 0 {contrib/gcc => gcc}/graph.c | 0 {contrib/gcc => gcc}/graph.h | 0 {contrib/gcc => gcc}/gstab.h | 0 {contrib/gcc => gcc}/gsyms.h | 0 {contrib/gcc => gcc}/gsyslimits.h | 0 {contrib/gcc => gcc}/gthr-aix.h | 0 {contrib/gcc => gcc}/gthr-dce.h | 0 {contrib/gcc => gcc}/gthr-gnat.c | 0 {contrib/gcc => gcc}/gthr-gnat.h | 0 {contrib/gcc => gcc}/gthr-lynx.h | 0 {contrib/gcc => gcc}/gthr-nks.h | 0 {contrib/gcc => gcc}/gthr-posix.c | 0 {contrib/gcc => gcc}/gthr-posix.h | 0 {contrib/gcc => gcc}/gthr-posix95.h | 0 {contrib/gcc => gcc}/gthr-rtems.h | 0 {contrib/gcc => gcc}/gthr-single.h | 0 {contrib/gcc => gcc}/gthr-solaris.h | 0 {contrib/gcc => gcc}/gthr-tpf.h | 0 {contrib/gcc => gcc}/gthr-vxworks.h | 0 {contrib/gcc => gcc}/gthr-win32.h | 0 {contrib/gcc => gcc}/gthr.h | 0 {contrib/gcc => gcc}/haifa-sched.c | 0 {contrib/gcc => gcc}/hard-reg-set.h | 0 {contrib/gcc => gcc}/hooks.c | 0 {contrib/gcc => gcc}/hooks.h | 0 {contrib/gcc => gcc}/host-default.c | 0 {contrib/gcc => gcc}/hosthooks-def.h | 0 {contrib/gcc => gcc}/hosthooks.h | 0 {contrib/gcc => gcc}/hwint.h | 0 {contrib/gcc => gcc}/ifcvt.c | 0 {contrib/gcc => gcc}/input.h | 0 {contrib/gcc => gcc}/insn-addr.h | 0 {contrib/gcc => gcc}/insn-notes.def | 0 {contrib/gcc => gcc}/integrate.c | 0 {contrib/gcc => gcc}/integrate.h | 0 {contrib/gcc => gcc}/intl.c | 0 {contrib/gcc => gcc}/intl.h | 0 {contrib/gcc => gcc}/ipa-cp.c | 0 {contrib/gcc => gcc}/ipa-inline.c | 0 {contrib/gcc => gcc}/ipa-prop.c | 0 {contrib/gcc => gcc}/ipa-prop.h | 0 {contrib/gcc => gcc}/ipa-pure-const.c | 0 {contrib/gcc => gcc}/ipa-reference.c | 0 {contrib/gcc => gcc}/ipa-reference.h | 0 {contrib/gcc => gcc}/ipa-type-escape.c | 0 {contrib/gcc => gcc}/ipa-type-escape.h | 0 {contrib/gcc => gcc}/ipa-utils.c | 0 {contrib/gcc => gcc}/ipa-utils.h | 0 {contrib/gcc => gcc}/ipa.c | 0 {contrib/gcc => gcc}/jump.c | 0 {contrib/gcc => gcc}/lambda-code.c | 0 {contrib/gcc => gcc}/lambda-mat.c | 0 {contrib/gcc => gcc}/lambda-trans.c | 0 {contrib/gcc => gcc}/lambda.h | 0 {contrib/gcc => gcc}/langhooks-def.h | 0 {contrib/gcc => gcc}/langhooks.c | 0 {contrib/gcc => gcc}/langhooks.h | 0 {contrib/gcc => gcc}/lcm.c | 0 {contrib/gcc => gcc}/libada-mk.in | 0 {contrib/gcc => gcc}/libfuncs.h | 0 {contrib/gcc => gcc}/libgcc-std.ver | 0 {contrib/gcc => gcc}/libgcc2.c | 0 {contrib/gcc => gcc}/libgcc2.h | 0 {contrib/gcc => gcc}/libgcov.c | 0 {contrib/gcc => gcc}/limitx.h | 0 {contrib/gcc => gcc}/limity.h | 0 {contrib/gcc => gcc}/lists.c | 0 {contrib/gcc => gcc}/local-alloc.c | 0 {contrib/gcc => gcc}/longlong.h | 0 {contrib/gcc => gcc}/loop-doloop.c | 0 {contrib/gcc => gcc}/loop-init.c | 0 {contrib/gcc => gcc}/loop-invariant.c | 0 {contrib/gcc => gcc}/loop-iv.c | 0 {contrib/gcc => gcc}/loop-unroll.c | 0 {contrib/gcc => gcc}/loop-unswitch.c | 0 {contrib/gcc => gcc}/machmode.def | 0 {contrib/gcc => gcc}/machmode.h | 0 {contrib/gcc => gcc}/main.c | 0 {contrib/gcc => gcc}/mips-tdump.c | 0 {contrib/gcc => gcc}/mips-tfile.c | 0 {contrib/gcc => gcc}/mkconfig.sh | 0 {contrib/gcc => gcc}/mklibgcc.in | 0 {contrib/gcc => gcc}/mkmap-flat.awk | 0 {contrib/gcc => gcc}/mkmap-symver.awk | 0 {contrib/gcc => gcc}/mode-classes.def | 0 {contrib/gcc => gcc}/mode-switching.c | 0 {contrib/gcc => gcc}/modulo-sched.c | 0 {contrib/gcc => gcc}/objc/ChangeLog | 0 {contrib/gcc => gcc}/objc/Make-lang.in | 0 {contrib/gcc => gcc}/objc/README | 0 {contrib/gcc => gcc}/objc/config-lang.in | 0 {contrib/gcc => gcc}/objc/lang-specs.h | 0 {contrib/gcc => gcc}/objc/objc-act.c | 0 {contrib/gcc => gcc}/objc/objc-act.h | 0 {contrib/gcc => gcc}/objc/objc-lang.c | 0 {contrib/gcc => gcc}/objc/objc-tree.def | 0 {contrib/gcc => gcc}/omp-builtins.def | 0 {contrib/gcc => gcc}/omp-low.c | 0 {contrib/gcc => gcc}/opt-functions.awk | 0 {contrib/gcc => gcc}/opt-gather.awk | 0 {contrib/gcc => gcc}/optabs.c | 0 {contrib/gcc => gcc}/optabs.h | 0 {contrib/gcc => gcc}/optc-gen.awk | 0 {contrib/gcc => gcc}/opth-gen.awk | 0 {contrib/gcc => gcc}/opts-common.c | 0 {contrib/gcc => gcc}/opts.c | 0 {contrib/gcc => gcc}/opts.h | 0 {contrib/gcc => gcc}/output.h | 0 {contrib/gcc => gcc}/params.c | 0 {contrib/gcc => gcc}/params.def | 0 {contrib/gcc => gcc}/params.h | 0 {contrib/gcc => gcc}/passes.c | 0 {contrib/gcc => gcc}/pointer-set.c | 0 {contrib/gcc => gcc}/pointer-set.h | 0 {contrib/gcc => gcc}/postreload-gcse.c | 0 {contrib/gcc => gcc}/postreload.c | 0 {contrib/gcc => gcc}/predict.c | 0 {contrib/gcc => gcc}/predict.def | 0 {contrib/gcc => gcc}/predict.h | 0 {contrib/gcc => gcc}/prefix.c | 0 {contrib/gcc => gcc}/prefix.h | 0 {contrib/gcc => gcc}/pretty-print.c | 0 {contrib/gcc => gcc}/pretty-print.h | 0 {contrib/gcc => gcc}/print-rtl.c | 0 {contrib/gcc => gcc}/print-tree.c | 0 {contrib/gcc => gcc}/profile.c | 0 {contrib/gcc => gcc}/protoize.c | 0 {contrib/gcc => gcc}/read-rtl.c | 0 {contrib/gcc => gcc}/real.c | 0 {contrib/gcc => gcc}/real.h | 0 {contrib/gcc => gcc}/recog.c | 0 {contrib/gcc => gcc}/recog.h | 0 {contrib/gcc => gcc}/reg-notes.def | 0 {contrib/gcc => gcc}/reg-stack.c | 0 {contrib/gcc => gcc}/regclass.c | 0 {contrib/gcc => gcc}/regmove.c | 0 {contrib/gcc => gcc}/regrename.c | 0 {contrib/gcc => gcc}/regs.h | 0 {contrib/gcc => gcc}/reload.c | 0 {contrib/gcc => gcc}/reload.h | 0 {contrib/gcc => gcc}/reload1.c | 0 {contrib/gcc => gcc}/reorg.c | 0 {contrib/gcc => gcc}/resource.c | 0 {contrib/gcc => gcc}/resource.h | 0 {contrib/gcc => gcc}/rtl-error.c | 0 {contrib/gcc => gcc}/rtl-factoring.c | 0 {contrib/gcc => gcc}/rtl.c | 0 {contrib/gcc => gcc}/rtl.def | 0 {contrib/gcc => gcc}/rtl.h | 0 {contrib/gcc => gcc}/rtlanal.c | 0 {contrib/gcc => gcc}/rtlhooks-def.h | 0 {contrib/gcc => gcc}/rtlhooks.c | 0 {contrib/gcc => gcc}/sbitmap.c | 0 {contrib/gcc => gcc}/sbitmap.h | 0 {contrib/gcc => gcc}/scan-decls.c | 0 {contrib/gcc => gcc}/scan-types.sh | 0 {contrib/gcc => gcc}/scan.c | 0 {contrib/gcc => gcc}/scan.h | 0 {contrib/gcc => gcc}/sched-deps.c | 0 {contrib/gcc => gcc}/sched-ebb.c | 0 {contrib/gcc => gcc}/sched-int.h | 0 {contrib/gcc => gcc}/sched-rgn.c | 0 {contrib/gcc => gcc}/sched-vis.c | 0 {contrib/gcc => gcc}/sdbout.c | 0 {contrib/gcc => gcc}/sdbout.h | 0 {contrib/gcc => gcc}/see.c | 0 {contrib/gcc => gcc}/simplify-rtx.c | 0 {contrib/gcc => gcc}/sort-protos | 0 {contrib/gcc => gcc}/sreal.c | 0 {contrib/gcc => gcc}/sreal.h | 0 {contrib/gcc => gcc}/stab.def | 0 {contrib/gcc => gcc}/statistics.h | 0 {contrib/gcc => gcc}/stmt.c | 0 {contrib/gcc => gcc}/stor-layout.c | 0 {contrib/gcc => gcc}/stringpool.c | 0 {contrib/gcc => gcc}/struct-equiv.c | 0 {contrib/gcc => gcc}/stub-objc.c | 0 {contrib/gcc => gcc}/sync-builtins.def | 0 {contrib/gcc => gcc}/sys-protos.h | 0 {contrib/gcc => gcc}/sys-types.h | 0 {contrib/gcc => gcc}/system.h | 0 {contrib/gcc => gcc}/target-def.h | 0 {contrib/gcc => gcc}/target.h | 0 {contrib/gcc => gcc}/targhooks.c | 0 {contrib/gcc => gcc}/targhooks.h | 0 {contrib/gcc => gcc}/timevar.c | 0 {contrib/gcc => gcc}/timevar.def | 0 {contrib/gcc => gcc}/timevar.h | 0 {contrib/gcc => gcc}/tlink.c | 0 {contrib/gcc => gcc}/toplev.c | 0 {contrib/gcc => gcc}/toplev.h | 0 {contrib/gcc => gcc}/tracer.c | 0 {contrib/gcc => gcc}/tree-browser.c | 0 {contrib/gcc => gcc}/tree-browser.def | 0 {contrib/gcc => gcc}/tree-cfg.c | 0 {contrib/gcc => gcc}/tree-cfgcleanup.c | 0 {contrib/gcc => gcc}/tree-chrec.c | 0 {contrib/gcc => gcc}/tree-chrec.h | 0 {contrib/gcc => gcc}/tree-complex.c | 0 {contrib/gcc => gcc}/tree-data-ref.c | 0 {contrib/gcc => gcc}/tree-data-ref.h | 0 {contrib/gcc => gcc}/tree-dfa.c | 0 {contrib/gcc => gcc}/tree-dump.c | 0 {contrib/gcc => gcc}/tree-dump.h | 0 {contrib/gcc => gcc}/tree-eh.c | 0 {contrib/gcc => gcc}/tree-flow-inline.h | 0 {contrib/gcc => gcc}/tree-flow.h | 0 {contrib/gcc => gcc}/tree-gimple.c | 0 {contrib/gcc => gcc}/tree-gimple.h | 0 {contrib/gcc => gcc}/tree-if-conv.c | 0 {contrib/gcc => gcc}/tree-inline.c | 0 {contrib/gcc => gcc}/tree-inline.h | 0 {contrib/gcc => gcc}/tree-into-ssa.c | 0 {contrib/gcc => gcc}/tree-iterator.c | 0 {contrib/gcc => gcc}/tree-iterator.h | 0 {contrib/gcc => gcc}/tree-loop-linear.c | 0 {contrib/gcc => gcc}/tree-mudflap.c | 0 {contrib/gcc => gcc}/tree-mudflap.h | 0 {contrib/gcc => gcc}/tree-nested.c | 0 {contrib/gcc => gcc}/tree-nomudflap.c | 0 {contrib/gcc => gcc}/tree-nrv.c | 0 {contrib/gcc => gcc}/tree-object-size.c | 0 {contrib/gcc => gcc}/tree-optimize.c | 0 {contrib/gcc => gcc}/tree-outof-ssa.c | 0 {contrib/gcc => gcc}/tree-pass.h | 0 {contrib/gcc => gcc}/tree-phinodes.c | 0 {contrib/gcc => gcc}/tree-pretty-print.c | 0 {contrib/gcc => gcc}/tree-profile.c | 0 {contrib/gcc => gcc}/tree-scalar-evolution.c | 0 {contrib/gcc => gcc}/tree-scalar-evolution.h | 0 {contrib/gcc => gcc}/tree-sra.c | 0 {contrib/gcc => gcc}/tree-ssa-address.c | 0 {contrib/gcc => gcc}/tree-ssa-alias.c | 0 {contrib/gcc => gcc}/tree-ssa-ccp.c | 0 {contrib/gcc => gcc}/tree-ssa-copy.c | 0 {contrib/gcc => gcc}/tree-ssa-copyrename.c | 0 {contrib/gcc => gcc}/tree-ssa-dce.c | 0 {contrib/gcc => gcc}/tree-ssa-dom.c | 0 {contrib/gcc => gcc}/tree-ssa-dse.c | 0 {contrib/gcc => gcc}/tree-ssa-forwprop.c | 0 {contrib/gcc => gcc}/tree-ssa-live.c | 0 {contrib/gcc => gcc}/tree-ssa-live.h | 0 {contrib/gcc => gcc}/tree-ssa-loop-ch.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-im.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-ivcanon.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-ivopts.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-manip.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-niter.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-prefetch.c | 0 {contrib/gcc => gcc}/tree-ssa-loop-unswitch.c | 0 {contrib/gcc => gcc}/tree-ssa-loop.c | 0 {contrib/gcc => gcc}/tree-ssa-math-opts.c | 0 {contrib/gcc => gcc}/tree-ssa-operands.c | 0 {contrib/gcc => gcc}/tree-ssa-operands.h | 0 {contrib/gcc => gcc}/tree-ssa-phiopt.c | 0 {contrib/gcc => gcc}/tree-ssa-pre.c | 0 {contrib/gcc => gcc}/tree-ssa-propagate.c | 0 {contrib/gcc => gcc}/tree-ssa-propagate.h | 0 {contrib/gcc => gcc}/tree-ssa-reassoc.c | 0 {contrib/gcc => gcc}/tree-ssa-sink.c | 0 {contrib/gcc => gcc}/tree-ssa-structalias.c | 0 {contrib/gcc => gcc}/tree-ssa-structalias.h | 0 {contrib/gcc => gcc}/tree-ssa-threadedge.c | 0 {contrib/gcc => gcc}/tree-ssa-threadupdate.c | 0 {contrib/gcc => gcc}/tree-ssa-uncprop.c | 0 {contrib/gcc => gcc}/tree-ssa.c | 0 {contrib/gcc => gcc}/tree-ssanames.c | 0 {contrib/gcc => gcc}/tree-stdarg.c | 0 {contrib/gcc => gcc}/tree-stdarg.h | 0 {contrib/gcc => gcc}/tree-tailcall.c | 0 {contrib/gcc => gcc}/tree-vect-analyze.c | 0 {contrib/gcc => gcc}/tree-vect-generic.c | 0 {contrib/gcc => gcc}/tree-vect-patterns.c | 0 {contrib/gcc => gcc}/tree-vect-transform.c | 0 {contrib/gcc => gcc}/tree-vectorizer.c | 0 {contrib/gcc => gcc}/tree-vectorizer.h | 0 {contrib/gcc => gcc}/tree-vn.c | 0 {contrib/gcc => gcc}/tree-vrp.c | 0 {contrib/gcc => gcc}/tree.c | 0 {contrib/gcc => gcc}/tree.def | 0 {contrib/gcc => gcc}/tree.h | 0 {contrib/gcc => gcc}/treestruct.def | 0 {contrib/gcc => gcc}/tsystem.h | 0 {contrib/gcc => gcc}/typeclass.h | 0 {contrib/gcc => gcc}/unwind-c.c | 0 {contrib/gcc => gcc}/unwind-compat.c | 0 {contrib/gcc => gcc}/unwind-compat.h | 0 {contrib/gcc => gcc}/unwind-dw2-fde-compat.c | 0 {contrib/gcc => gcc}/unwind-dw2-fde-darwin.c | 0 {contrib/gcc => gcc}/unwind-dw2-fde-glibc.c | 0 {contrib/gcc => gcc}/unwind-dw2-fde.c | 0 {contrib/gcc => gcc}/unwind-dw2-fde.h | 0 {contrib/gcc => gcc}/unwind-dw2.c | 0 {contrib/gcc => gcc}/unwind-dw2.h | 0 {contrib/gcc => gcc}/unwind-generic.h | 0 {contrib/gcc => gcc}/unwind-pe.h | 0 {contrib/gcc => gcc}/unwind-sjlj.c | 0 {contrib/gcc => gcc}/unwind.inc | 0 {contrib/gcc => gcc}/value-prof.c | 0 {contrib/gcc => gcc}/value-prof.h | 0 {contrib/gcc => gcc}/var-tracking.c | 0 {contrib/gcc => gcc}/varasm.c | 0 {contrib/gcc => gcc}/varray.c | 0 {contrib/gcc => gcc}/varray.h | 0 {contrib/gcc => gcc}/vec.c | 0 {contrib/gcc => gcc}/vec.h | 0 {contrib/gcc => gcc}/vecprim.h | 0 {contrib/gcc => gcc}/version.c | 0 {contrib/gcc => gcc}/version.h | 0 {contrib/gcc => gcc}/vmsdbg.h | 0 {contrib/gcc => gcc}/vmsdbgout.c | 0 {contrib/gcc => gcc}/web.c | 0 {contrib/gcc => gcc}/xcoff.h | 0 {contrib/gcc => gcc}/xcoffout.c | 0 {contrib/gcc => gcc}/xcoffout.h | 0 {contrib/gcclibs/include => include}/COPYING | 0 {contrib/gcclibs/include => include}/ChangeLog | 0 {contrib/gcclibs/include => include}/ChangeLog-9103 | 0 {contrib/gcclibs/include => include}/ansidecl.h | 0 {contrib/gcclibs/include => include}/demangle.h | 0 {contrib/gcclibs/include => include}/dyn-string.h | 0 {contrib/gcclibs/include => include}/fibheap.h | 0 {contrib/gcclibs/include => include}/filenames.h | 0 {contrib/gcclibs/include => include}/floatformat.h | 0 {contrib/gcclibs/include => include}/fnmatch.h | 0 {contrib/gcclibs/include => include}/getopt.h | 0 {contrib/gcclibs/include => include}/hashtab.h | 0 {contrib/gcclibs/include => include}/libiberty.h | 0 {contrib/gcclibs/include => include}/md5.h | 0 {contrib/gcclibs/include => include}/objalloc.h | 0 {contrib/gcclibs/include => include}/obstack.h | 0 {contrib/gcclibs/include => include}/partition.h | 0 {contrib/gcclibs/include => include}/safe-ctype.h | 0 {contrib/gcclibs/include => include}/sort.h | 0 {contrib/gcclibs/include => include}/splay-tree.h | 0 {contrib/gcclibs/include => include}/symcat.h | 0 {contrib/gcclibs/include => include}/ternary.h | 0 {contrib/gcclibs/include => include}/xregex.h | 0 {contrib/gcclibs/include => include}/xregex2.h | 0 {contrib/gcclibs/include => include}/xtensa-config.h | 0 {contrib/gcclibs/libcpp => libcpp}/ChangeLog | 0 {contrib/gcclibs/libcpp => libcpp}/Makefile.in | 0 {contrib/gcclibs/libcpp => libcpp}/aclocal.m4 | 0 {contrib/gcclibs/libcpp => libcpp}/charset.c | 0 {contrib/gcclibs/libcpp => libcpp}/config.in | 0 {contrib/gcclibs/libcpp => libcpp}/configure | 0 {contrib/gcclibs/libcpp => libcpp}/configure.ac | 0 {contrib/gcclibs/libcpp => libcpp}/directives.c | 0 {contrib/gcclibs/libcpp => libcpp}/errors.c | 0 {contrib/gcclibs/libcpp => libcpp}/expr.c | 0 {contrib/gcclibs/libcpp => libcpp}/files.c | 0 {contrib/gcclibs/libcpp => libcpp}/identifiers.c | 0 {contrib/gcclibs/libcpp => libcpp}/include/cpp-id-data.h | 0 {contrib/gcclibs/libcpp => libcpp}/include/cpplib.h | 0 {contrib/gcclibs/libcpp => libcpp}/include/line-map.h | 0 {contrib/gcclibs/libcpp => libcpp}/include/mkdeps.h | 0 {contrib/gcclibs/libcpp => libcpp}/include/symtab.h | 0 {contrib/gcclibs/libcpp => libcpp}/init.c | 0 {contrib/gcclibs/libcpp => libcpp}/internal.h | 0 {contrib/gcclibs/libcpp => libcpp}/lex.c | 0 {contrib/gcclibs/libcpp => libcpp}/line-map.c | 0 {contrib/gcclibs/libcpp => libcpp}/macro.c | 0 {contrib/gcclibs/libcpp => libcpp}/makedepend.c | 0 {contrib/gcclibs/libcpp => libcpp}/makeucnid.c | 0 {contrib/gcclibs/libcpp => libcpp}/mkdeps.c | 0 {contrib/gcclibs/libcpp => libcpp}/pch.c | 0 {contrib/gcclibs/libcpp => libcpp}/symtab.c | 0 {contrib/gcclibs/libcpp => libcpp}/system.h | 0 {contrib/gcclibs/libcpp => libcpp}/traditional.c | 0 {contrib/gcclibs/libcpp => libcpp}/ucnid.h | 0 {contrib/gcclibs/libcpp => libcpp}/ucnid.tab | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/ChangeLog | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/Makefile.in | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/aclocal.m4 | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/config.in | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/configure | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/configure.ac | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decContext.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decContext.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decDPD.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decLibrary.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decNumber.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decNumber.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decNumberLocal.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decRound.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decUtility.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decUtility.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decimal128.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decimal128.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decimal32.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decimal32.h | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decimal64.c | 0 {contrib/gcclibs/libdecnumber => libdecnumber}/decimal64.h | 0 {contrib/libf2c => libf2c}/ChangeLog | 0 {contrib/libf2c => libf2c}/Makefile.in | 0 {contrib/libf2c => libf2c}/README | 0 {contrib/libf2c => libf2c}/TODO | 0 {contrib/libf2c => libf2c}/aclocal.m4 | 0 {contrib/libf2c => libf2c}/changes.netlib | 0 {contrib/libf2c => libf2c}/configure | 0 {contrib/libf2c => libf2c}/configure.in | 0 {contrib/libf2c => libf2c}/disclaimer.netlib | 0 {contrib/libf2c => libf2c}/f2c.h | 0 {contrib/libf2c => libf2c}/f2cext.c | 0 {contrib/libf2c => libf2c}/g2c.hin | 0 {contrib/libf2c => libf2c}/libF77/F77_aloc.c | 0 {contrib/libf2c => libf2c}/libF77/Makefile.in | 0 {contrib/libf2c => libf2c}/libF77/Notice | 0 {contrib/libf2c => libf2c}/libF77/README.netlib | 0 {contrib/libf2c => libf2c}/libF77/Version.c | 0 {contrib/libf2c => libf2c}/libF77/abort_.c | 0 {contrib/libf2c => libf2c}/libF77/c_abs.c | 0 {contrib/libf2c => libf2c}/libF77/c_cos.c | 0 {contrib/libf2c => libf2c}/libF77/c_div.c | 0 {contrib/libf2c => libf2c}/libF77/c_exp.c | 0 {contrib/libf2c => libf2c}/libF77/c_log.c | 0 {contrib/libf2c => libf2c}/libF77/c_sin.c | 0 {contrib/libf2c => libf2c}/libF77/c_sqrt.c | 0 {contrib/libf2c => libf2c}/libF77/cabs.c | 0 {contrib/libf2c => libf2c}/libF77/configure | 0 {contrib/libf2c => libf2c}/libF77/configure.in | 0 {contrib/libf2c => libf2c}/libF77/d_abs.c | 0 {contrib/libf2c => libf2c}/libF77/d_acos.c | 0 {contrib/libf2c => libf2c}/libF77/d_asin.c | 0 {contrib/libf2c => libf2c}/libF77/d_atan.c | 0 {contrib/libf2c => libf2c}/libF77/d_atn2.c | 0 {contrib/libf2c => libf2c}/libF77/d_cnjg.c | 0 {contrib/libf2c => libf2c}/libF77/d_cos.c | 0 {contrib/libf2c => libf2c}/libF77/d_cosh.c | 0 {contrib/libf2c => libf2c}/libF77/d_dim.c | 0 {contrib/libf2c => libf2c}/libF77/d_exp.c | 0 {contrib/libf2c => libf2c}/libF77/d_imag.c | 0 {contrib/libf2c => libf2c}/libF77/d_int.c | 0 {contrib/libf2c => libf2c}/libF77/d_lg10.c | 0 {contrib/libf2c => libf2c}/libF77/d_log.c | 0 {contrib/libf2c => libf2c}/libF77/d_mod.c | 0 {contrib/libf2c => libf2c}/libF77/d_nint.c | 0 {contrib/libf2c => libf2c}/libF77/d_prod.c | 0 {contrib/libf2c => libf2c}/libF77/d_sign.c | 0 {contrib/libf2c => libf2c}/libF77/d_sin.c | 0 {contrib/libf2c => libf2c}/libF77/d_sinh.c | 0 {contrib/libf2c => libf2c}/libF77/d_sqrt.c | 0 {contrib/libf2c => libf2c}/libF77/d_tan.c | 0 {contrib/libf2c => libf2c}/libF77/d_tanh.c | 0 {contrib/libf2c => libf2c}/libF77/derf_.c | 0 {contrib/libf2c => libf2c}/libF77/derfc_.c | 0 {contrib/libf2c => libf2c}/libF77/dtime_.c | 0 {contrib/libf2c => libf2c}/libF77/ef1asc_.c | 0 {contrib/libf2c => libf2c}/libF77/ef1cmc_.c | 0 {contrib/libf2c => libf2c}/libF77/erf_.c | 0 {contrib/libf2c => libf2c}/libF77/erfc_.c | 0 {contrib/libf2c => libf2c}/libF77/etime_.c | 0 {contrib/libf2c => libf2c}/libF77/exit_.c | 0 {contrib/libf2c => libf2c}/libF77/f2ch.add | 0 {contrib/libf2c => libf2c}/libF77/getarg_.c | 0 {contrib/libf2c => libf2c}/libF77/getenv_.c | 0 {contrib/libf2c => libf2c}/libF77/h_abs.c | 0 {contrib/libf2c => libf2c}/libF77/h_dim.c | 0 {contrib/libf2c => libf2c}/libF77/h_dnnt.c | 0 {contrib/libf2c => libf2c}/libF77/h_indx.c | 0 {contrib/libf2c => libf2c}/libF77/h_len.c | 0 {contrib/libf2c => libf2c}/libF77/h_mod.c | 0 {contrib/libf2c => libf2c}/libF77/h_nint.c | 0 {contrib/libf2c => libf2c}/libF77/h_sign.c | 0 {contrib/libf2c => libf2c}/libF77/hl_ge.c | 0 {contrib/libf2c => libf2c}/libF77/hl_gt.c | 0 {contrib/libf2c => libf2c}/libF77/hl_le.c | 0 {contrib/libf2c => libf2c}/libF77/hl_lt.c | 0 {contrib/libf2c => libf2c}/libF77/i_abs.c | 0 {contrib/libf2c => libf2c}/libF77/i_dim.c | 0 {contrib/libf2c => libf2c}/libF77/i_dnnt.c | 0 {contrib/libf2c => libf2c}/libF77/i_indx.c | 0 {contrib/libf2c => libf2c}/libF77/i_len.c | 0 {contrib/libf2c => libf2c}/libF77/i_mod.c | 0 {contrib/libf2c => libf2c}/libF77/i_nint.c | 0 {contrib/libf2c => libf2c}/libF77/i_sign.c | 0 {contrib/libf2c => libf2c}/libF77/iargc_.c | 0 {contrib/libf2c => libf2c}/libF77/l_ge.c | 0 {contrib/libf2c => libf2c}/libF77/l_gt.c | 0 {contrib/libf2c => libf2c}/libF77/l_le.c | 0 {contrib/libf2c => libf2c}/libF77/l_lt.c | 0 {contrib/libf2c => libf2c}/libF77/lbitbits.c | 0 {contrib/libf2c => libf2c}/libF77/lbitshft.c | 0 {contrib/libf2c => libf2c}/libF77/main.c | 0 {contrib/libf2c => libf2c}/libF77/makefile.netlib | 0 {contrib/libf2c => libf2c}/libF77/pow_ci.c | 0 {contrib/libf2c => libf2c}/libF77/pow_dd.c | 0 {contrib/libf2c => libf2c}/libF77/pow_di.c | 0 {contrib/libf2c => libf2c}/libF77/pow_hh.c | 0 {contrib/libf2c => libf2c}/libF77/pow_ii.c | 0 {contrib/libf2c => libf2c}/libF77/pow_qq.c | 0 {contrib/libf2c => libf2c}/libF77/pow_ri.c | 0 {contrib/libf2c => libf2c}/libF77/pow_zi.c | 0 {contrib/libf2c => libf2c}/libF77/pow_zz.c | 0 {contrib/libf2c => libf2c}/libF77/qbitbits.c | 0 {contrib/libf2c => libf2c}/libF77/qbitshft.c | 0 {contrib/libf2c => libf2c}/libF77/r_abs.c | 0 {contrib/libf2c => libf2c}/libF77/r_acos.c | 0 {contrib/libf2c => libf2c}/libF77/r_asin.c | 0 {contrib/libf2c => libf2c}/libF77/r_atan.c | 0 {contrib/libf2c => libf2c}/libF77/r_atn2.c | 0 {contrib/libf2c => libf2c}/libF77/r_cnjg.c | 0 {contrib/libf2c => libf2c}/libF77/r_cos.c | 0 {contrib/libf2c => libf2c}/libF77/r_cosh.c | 0 {contrib/libf2c => libf2c}/libF77/r_dim.c | 0 {contrib/libf2c => libf2c}/libF77/r_exp.c | 0 {contrib/libf2c => libf2c}/libF77/r_imag.c | 0 {contrib/libf2c => libf2c}/libF77/r_int.c | 0 {contrib/libf2c => libf2c}/libF77/r_lg10.c | 0 {contrib/libf2c => libf2c}/libF77/r_log.c | 0 {contrib/libf2c => libf2c}/libF77/r_mod.c | 0 {contrib/libf2c => libf2c}/libF77/r_nint.c | 0 {contrib/libf2c => libf2c}/libF77/r_sign.c | 0 {contrib/libf2c => libf2c}/libF77/r_sin.c | 0 {contrib/libf2c => libf2c}/libF77/r_sinh.c | 0 {contrib/libf2c => libf2c}/libF77/r_sqrt.c | 0 {contrib/libf2c => libf2c}/libF77/r_tan.c | 0 {contrib/libf2c => libf2c}/libF77/r_tanh.c | 0 {contrib/libf2c => libf2c}/libF77/s_cat.c | 0 {contrib/libf2c => libf2c}/libF77/s_cmp.c | 0 {contrib/libf2c => libf2c}/libF77/s_copy.c | 0 {contrib/libf2c => libf2c}/libF77/s_paus.c | 0 {contrib/libf2c => libf2c}/libF77/s_rnge.c | 0 {contrib/libf2c => libf2c}/libF77/s_stop.c | 0 {contrib/libf2c => libf2c}/libF77/setarg.c | 0 {contrib/libf2c => libf2c}/libF77/setsig.c | 0 {contrib/libf2c => libf2c}/libF77/sig_die.c | 0 {contrib/libf2c => libf2c}/libF77/signal1.h | 0 {contrib/libf2c => libf2c}/libF77/signal1.h0 | 0 {contrib/libf2c => libf2c}/libF77/signal_.c | 0 {contrib/libf2c => libf2c}/libF77/system_.c | 0 {contrib/libf2c => libf2c}/libF77/z_abs.c | 0 {contrib/libf2c => libf2c}/libF77/z_cos.c | 0 {contrib/libf2c => libf2c}/libF77/z_div.c | 0 {contrib/libf2c => libf2c}/libF77/z_exp.c | 0 {contrib/libf2c => libf2c}/libF77/z_log.c | 0 {contrib/libf2c => libf2c}/libF77/z_sin.c | 0 {contrib/libf2c => libf2c}/libF77/z_sqrt.c | 0 {contrib/libf2c => libf2c}/libI77/Makefile.in | 0 {contrib/libf2c => libf2c}/libI77/Notice | 0 {contrib/libf2c => libf2c}/libI77/README.netlib | 0 {contrib/libf2c => libf2c}/libI77/Version.c | 0 {contrib/libf2c => libf2c}/libI77/backspace.c | 0 {contrib/libf2c => libf2c}/libI77/close.c | 0 {contrib/libf2c => libf2c}/libI77/config.h.in | 0 {contrib/libf2c => libf2c}/libI77/configure | 0 {contrib/libf2c => libf2c}/libI77/configure.in | 0 {contrib/libf2c => libf2c}/libI77/dfe.c | 0 {contrib/libf2c => libf2c}/libI77/dolio.c | 0 {contrib/libf2c => libf2c}/libI77/due.c | 0 {contrib/libf2c => libf2c}/libI77/endfile.c | 0 {contrib/libf2c => libf2c}/libI77/err.c | 0 {contrib/libf2c => libf2c}/libI77/f2ch.add | 0 {contrib/libf2c => libf2c}/libI77/fio.h | 0 {contrib/libf2c => libf2c}/libI77/fmt.c | 0 {contrib/libf2c => libf2c}/libI77/fmt.h | 0 {contrib/libf2c => libf2c}/libI77/fmtlib.c | 0 {contrib/libf2c => libf2c}/libI77/fp.h | 0 {contrib/libf2c => libf2c}/libI77/ftell_.c | 0 {contrib/libf2c => libf2c}/libI77/iio.c | 0 {contrib/libf2c => libf2c}/libI77/ilnw.c | 0 {contrib/libf2c => libf2c}/libI77/inquire.c | 0 {contrib/libf2c => libf2c}/libI77/lio.h | 0 {contrib/libf2c => libf2c}/libI77/lread.c | 0 {contrib/libf2c => libf2c}/libI77/lwrite.c | 0 {contrib/libf2c => libf2c}/libI77/makefile.netlib | 0 {contrib/libf2c => libf2c}/libI77/open.c | 0 {contrib/libf2c => libf2c}/libI77/rdfmt.c | 0 {contrib/libf2c => libf2c}/libI77/rewind.c | 0 {contrib/libf2c => libf2c}/libI77/rsfe.c | 0 {contrib/libf2c => libf2c}/libI77/rsli.c | 0 {contrib/libf2c => libf2c}/libI77/rsne.c | 0 {contrib/libf2c => libf2c}/libI77/sfe.c | 0 {contrib/libf2c => libf2c}/libI77/stamp-h.in | 0 {contrib/libf2c => libf2c}/libI77/sue.c | 0 {contrib/libf2c => libf2c}/libI77/typesize.c | 0 {contrib/libf2c => libf2c}/libI77/uio.c | 0 {contrib/libf2c => libf2c}/libI77/util.c | 0 {contrib/libf2c => libf2c}/libI77/wref.c | 0 {contrib/libf2c => libf2c}/libI77/wrtfmt.c | 0 {contrib/libf2c => libf2c}/libI77/wsfe.c | 0 {contrib/libf2c => libf2c}/libI77/wsle.c | 0 {contrib/libf2c => libf2c}/libI77/wsne.c | 0 {contrib/libf2c => libf2c}/libI77/xwsne.c | 0 {contrib/libf2c => libf2c}/libU77/COPYING.LIB | 0 {contrib/libf2c => libf2c}/libU77/Makefile.in | 0 {contrib/libf2c => libf2c}/libU77/PROJECTS | 0 {contrib/libf2c => libf2c}/libU77/README | 0 {contrib/libf2c => libf2c}/libU77/Version.c | 0 {contrib/libf2c => libf2c}/libU77/access_.c | 0 {contrib/libf2c => libf2c}/libU77/acconfig.h | 0 {contrib/libf2c => libf2c}/libU77/aclocal.m4 | 0 {contrib/libf2c => libf2c}/libU77/alarm_.c | 0 {contrib/libf2c => libf2c}/libU77/chdir_.c | 0 {contrib/libf2c => libf2c}/libU77/chmod_.c | 0 {contrib/libf2c => libf2c}/libU77/config.hin | 0 {contrib/libf2c => libf2c}/libU77/configure | 0 {contrib/libf2c => libf2c}/libU77/configure.in | 0 {contrib/libf2c => libf2c}/libU77/ctime_.c | 0 {contrib/libf2c => libf2c}/libU77/date_.c | 0 {contrib/libf2c => libf2c}/libU77/datetime_.c | 0 {contrib/libf2c => libf2c}/libU77/dtime_.c | 0 {contrib/libf2c => libf2c}/libU77/etime_.c | 0 {contrib/libf2c => libf2c}/libU77/fdate_.c | 0 {contrib/libf2c => libf2c}/libU77/fgetc_.c | 0 {contrib/libf2c => libf2c}/libU77/flush1_.c | 0 {contrib/libf2c => libf2c}/libU77/fnum_.c | 0 {contrib/libf2c => libf2c}/libU77/fputc_.c | 0 {contrib/libf2c => libf2c}/libU77/fstat_.c | 0 {contrib/libf2c => libf2c}/libU77/gerror_.c | 0 {contrib/libf2c => libf2c}/libU77/getcwd_.c | 0 {contrib/libf2c => libf2c}/libU77/getgid_.c | 0 {contrib/libf2c => libf2c}/libU77/getlog_.c | 0 {contrib/libf2c => libf2c}/libU77/getpid_.c | 0 {contrib/libf2c => libf2c}/libU77/getuid_.c | 0 {contrib/libf2c => libf2c}/libU77/gmtime_.c | 0 {contrib/libf2c => libf2c}/libU77/hostnm_.c | 0 {contrib/libf2c => libf2c}/libU77/idate_.c | 0 {contrib/libf2c => libf2c}/libU77/ierrno_.c | 0 {contrib/libf2c => libf2c}/libU77/irand_.c | 0 {contrib/libf2c => libf2c}/libU77/isatty_.c | 0 {contrib/libf2c => libf2c}/libU77/itime_.c | 0 {contrib/libf2c => libf2c}/libU77/kill_.c | 0 {contrib/libf2c => libf2c}/libU77/link_.c | 0 {contrib/libf2c => libf2c}/libU77/lnblnk_.c | 0 {contrib/libf2c => libf2c}/libU77/lstat_.c | 0 {contrib/libf2c => libf2c}/libU77/ltime_.c | 0 {contrib/libf2c => libf2c}/libU77/mclock_.c | 0 {contrib/libf2c => libf2c}/libU77/perror_.c | 0 {contrib/libf2c => libf2c}/libU77/rand_.c | 0 {contrib/libf2c => libf2c}/libU77/rename_.c | 0 {contrib/libf2c => libf2c}/libU77/secnds_.c | 0 {contrib/libf2c => libf2c}/libU77/second_.c | 0 {contrib/libf2c => libf2c}/libU77/sleep_.c | 0 {contrib/libf2c => libf2c}/libU77/srand_.c | 0 {contrib/libf2c => libf2c}/libU77/stamp-h.in | 0 {contrib/libf2c => libf2c}/libU77/stat_.c | 0 {contrib/libf2c => libf2c}/libU77/symlnk_.c | 0 {contrib/libf2c => libf2c}/libU77/sys_clock_.c | 0 {contrib/libf2c => libf2c}/libU77/time_.c | 0 {contrib/libf2c => libf2c}/libU77/ttynam_.c | 0 {contrib/libf2c => libf2c}/libU77/u77-test.f | 0 {contrib/libf2c => libf2c}/libU77/umask_.c | 0 {contrib/libf2c => libf2c}/libU77/unlink_.c | 0 {contrib/libf2c => libf2c}/libU77/vxtidate_.c | 0 {contrib/libf2c => libf2c}/libU77/vxttime_.c | 0 {contrib/libf2c => libf2c}/permission.netlib | 0 {contrib/libf2c => libf2c}/readme.netlib | 0 {contrib/libg++ => libg++}/COPYING | 0 {contrib/libg++ => libg++}/COPYING.LIB | 0 {contrib/libg++ => libg++}/include/ChangeLog | 0 {contrib/libg++ => libg++}/include/ansidecl.h | 0 {contrib/libg++ => libg++}/include/demangle.h | 0 {contrib/libg++ => libg++}/include/floatformat.h | 0 {contrib/libg++ => libg++}/include/getopt.h | 0 {contrib/libg++ => libg++}/include/libiberty.h | 0 {contrib/libg++ => libg++}/include/obstack.h | 0 {contrib/libg++ => libg++}/libg++/ChangeLog | 0 {contrib/libg++ => libg++}/libg++/Makefile.in | 0 {contrib/libg++ => libg++}/libg++/NEWS | 0 {contrib/libg++ => libg++}/libg++/README | 0 {contrib/libg++ => libg++}/libg++/README.SHLIB | 0 {contrib/libg++ => libg++}/libg++/TODO | 0 {contrib/libg++ => libg++}/libg++/g++FAQ.texi | 0 {contrib/libg++ => libg++}/libg++/genclass/ChangeLog | 0 {contrib/libg++ => libg++}/libg++/genclass/Makefile.in | 0 {contrib/libg++ => libg++}/libg++/genclass/configure.in | 0 {contrib/libg++ => libg++}/libg++/genclass/expected.out | 0 {contrib/libg++ => libg++}/libg++/genclass/genclass.sh | 0 {contrib/libg++ => libg++}/libg++/genclass/gentest.sh | 0 {contrib/libg++ => libg++}/libg++/libg++.texi | 0 {contrib/libg++ => libg++}/libg++/src/ACG.cc | 0 {contrib/libg++ => libg++}/libg++/src/ACG.h | 0 {contrib/libg++ => libg++}/libg++/src/AllocRing.cc | 0 {contrib/libg++ => libg++}/libg++/src/AllocRing.h | 0 {contrib/libg++ => libg++}/libg++/src/Binomial.cc | 0 {contrib/libg++ => libg++}/libg++/src/Binomial.h | 0 {contrib/libg++ => libg++}/libg++/src/BitSet.cc | 0 {contrib/libg++ => libg++}/libg++/src/BitSet.h | 0 {contrib/libg++ => libg++}/libg++/src/BitString.cc | 0 {contrib/libg++ => libg++}/libg++/src/BitString.h | 0 {contrib/libg++ => libg++}/libg++/src/ChangeLog | 0 {contrib/libg++ => libg++}/libg++/src/Complex.h | 0 {contrib/libg++ => libg++}/libg++/src/CursesW.cc | 0 {contrib/libg++ => libg++}/libg++/src/CursesW.h | 0 {contrib/libg++ => libg++}/libg++/src/DLList.cc | 0 {contrib/libg++ => libg++}/libg++/src/DLList.h | 0 {contrib/libg++ => libg++}/libg++/src/DiscUnif.cc | 0 {contrib/libg++ => libg++}/libg++/src/DiscUnif.h | 0 {contrib/libg++ => libg++}/libg++/src/Erlang.cc | 0 {contrib/libg++ => libg++}/libg++/src/Erlang.h | 0 {contrib/libg++ => libg++}/libg++/src/Fix.cc | 0 {contrib/libg++ => libg++}/libg++/src/Fix.h | 0 {contrib/libg++ => libg++}/libg++/src/Fix16.cc | 0 {contrib/libg++ => libg++}/libg++/src/Fix16.h | 0 {contrib/libg++ => libg++}/libg++/src/Fix24.cc | 0 {contrib/libg++ => libg++}/libg++/src/Fix24.h | 0 {contrib/libg++ => libg++}/libg++/src/Geom.cc | 0 {contrib/libg++ => libg++}/libg++/src/Geom.h | 0 {contrib/libg++ => libg++}/libg++/src/GetOpt.cc | 0 {contrib/libg++ => libg++}/libg++/src/GetOpt.h | 0 {contrib/libg++ => libg++}/libg++/src/HypGeom.cc | 0 {contrib/libg++ => libg++}/libg++/src/HypGeom.h | 0 {contrib/libg++ => libg++}/libg++/src/Incremental.h | 0 {contrib/libg++ => libg++}/libg++/src/Intdouble.cc | 0 {contrib/libg++ => libg++}/libg++/src/Integer.cc | 0 {contrib/libg++ => libg++}/libg++/src/Integer.h | 0 {contrib/libg++ => libg++}/libg++/src/Integer.hP | 0 {contrib/libg++ => libg++}/libg++/src/LogNorm.cc | 0 {contrib/libg++ => libg++}/libg++/src/LogNorm.h | 0 {contrib/libg++ => libg++}/libg++/src/MLCG.cc | 0 {contrib/libg++ => libg++}/libg++/src/MLCG.h | 0 {contrib/libg++ => libg++}/libg++/src/Makefile.in | 0 {contrib/libg++ => libg++}/libg++/src/NegExp.cc | 0 {contrib/libg++ => libg++}/libg++/src/NegExp.h | 0 {contrib/libg++ => libg++}/libg++/src/Normal.cc | 0 {contrib/libg++ => libg++}/libg++/src/Normal.h | 0 {contrib/libg++ => libg++}/libg++/src/Obstack.cc | 0 {contrib/libg++ => libg++}/libg++/src/Obstack.h | 0 {contrib/libg++ => libg++}/libg++/src/Pix.h | 0 {contrib/libg++ => libg++}/libg++/src/Poisson.cc | 0 {contrib/libg++ => libg++}/libg++/src/Poisson.h | 0 {contrib/libg++ => libg++}/libg++/src/RNG.cc | 0 {contrib/libg++ => libg++}/libg++/src/RNG.h | 0 {contrib/libg++ => libg++}/libg++/src/Random.cc | 0 {contrib/libg++ => libg++}/libg++/src/Random.h | 0 {contrib/libg++ => libg++}/libg++/src/Rational.cc | 0 {contrib/libg++ => libg++}/libg++/src/Rational.h | 0 {contrib/libg++ => libg++}/libg++/src/Regex.cc | 0 {contrib/libg++ => libg++}/libg++/src/Regex.h | 0 {contrib/libg++ => libg++}/libg++/src/RndInt.cc | 0 {contrib/libg++ => libg++}/libg++/src/RndInt.h | 0 {contrib/libg++ => libg++}/libg++/src/SLList.cc | 0 {contrib/libg++ => libg++}/libg++/src/SLList.h | 0 {contrib/libg++ => libg++}/libg++/src/Sample.cc | 0 {contrib/libg++ => libg++}/libg++/src/SmplHist.cc | 0 {contrib/libg++ => libg++}/libg++/src/SmplHist.h | 0 {contrib/libg++ => libg++}/libg++/src/SmplStat.cc | 0 {contrib/libg++ => libg++}/libg++/src/SmplStat.h | 0 {contrib/libg++ => libg++}/libg++/src/String.cc | 0 {contrib/libg++ => libg++}/libg++/src/String.h | 0 {contrib/libg++ => libg++}/libg++/src/Uniform.cc | 0 {contrib/libg++ => libg++}/libg++/src/Uniform.h | 0 {contrib/libg++ => libg++}/libg++/src/Weibull.cc | 0 {contrib/libg++ => libg++}/libg++/src/Weibull.h | 0 {contrib/libg++ => libg++}/libg++/src/bitand.c | 0 {contrib/libg++ => libg++}/libg++/src/bitany.c | 0 {contrib/libg++ => libg++}/libg++/src/bitblt.c | 0 {contrib/libg++ => libg++}/libg++/src/bitclear.c | 0 {contrib/libg++ => libg++}/libg++/src/bitcopy.c | 0 {contrib/libg++ => libg++}/libg++/src/bitcount.c | 0 {contrib/libg++ => libg++}/libg++/src/bitdo1.h | 0 {contrib/libg++ => libg++}/libg++/src/bitdo2.h | 0 {contrib/libg++ => libg++}/libg++/src/bitinvert.c | 0 {contrib/libg++ => libg++}/libg++/src/bitlcomp.c | 0 {contrib/libg++ => libg++}/libg++/src/bitprims.h | 0 {contrib/libg++ => libg++}/libg++/src/bitset1.c | 0 {contrib/libg++ => libg++}/libg++/src/bitxor.c | 0 {contrib/libg++ => libg++}/libg++/src/bool.h | 0 {contrib/libg++ => libg++}/libg++/src/builtin.cc | 0 {contrib/libg++ => libg++}/libg++/src/builtin.h | 0 {contrib/libg++ => libg++}/libg++/src/compare.cc | 0 {contrib/libg++ => libg++}/libg++/src/compare.h | 0 {contrib/libg++ => libg++}/libg++/src/configure.in | 0 {contrib/libg++ => libg++}/libg++/src/depend | 0 {contrib/libg++ => libg++}/libg++/src/dtoa.cc | 0 {contrib/libg++ => libg++}/libg++/src/error.cc | 0 {contrib/libg++ => libg++}/libg++/src/fmtq.cc | 0 {contrib/libg++ => libg++}/libg++/src/gcd.cc | 0 {contrib/libg++ => libg++}/libg++/src/gen/AVLMap.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/AVLMap.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/AVLSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/AVLSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/AVec.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/AVec.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/BSTSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/BSTSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Bag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Bag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHMap.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHMap.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHNode.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHNode.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/CHSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/DLDeque.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/DLDeque.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/DLList.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/DLList.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Deque.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Deque.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/FPQueue.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/FPQueue.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/FPStack.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/FPStack.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/FPlex.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/FPlex.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/List.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/List.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/MPlex.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/MPlex.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Map.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Map.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OSLBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OSLBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OSLSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OSLSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OXPBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OXPBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OXPSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/OXPSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/PHPQ.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/PHPQ.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/PQ.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/PQ.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/PSList.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/PVec.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Plex.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Plex.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Queue.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Queue.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/RAVLMap.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/RAVLMap.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/RPlex.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/RPlex.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLList.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLList.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLQueue.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLQueue.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLStack.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SLStack.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Set.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Set.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SkipBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SkipBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SkipMap.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SkipMap.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SkipSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SkipSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayMap.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayMap.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayNode.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayNode.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayPQ.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplayPQ.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplaySet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/SplaySet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Stack.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Stack.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VHBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VHBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VHMap.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VHMap.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VHSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VHSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VOHSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VOHSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VQueue.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VQueue.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VStack.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/VStack.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Vec.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/Vec.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPBag.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPBag.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPDeque.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPDeque.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPPQ.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPPQ.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPQueue.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPQueue.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPSet.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPSet.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPStack.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPStack.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPlex.ccP | 0 {contrib/libg++ => libg++}/libg++/src/gen/XPlex.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/defs.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/intSList.hP | 0 {contrib/libg++ => libg++}/libg++/src/gen/intVec.hP | 0 {contrib/libg++ => libg++}/libg++/src/generic.h | 0 {contrib/libg++ => libg++}/libg++/src/getpagesize.h | 0 {contrib/libg++ => libg++}/libg++/src/hash.cc | 0 {contrib/libg++ => libg++}/libg++/src/ioob.cc | 0 {contrib/libg++ => libg++}/libg++/src/lg.cc | 0 {contrib/libg++ => libg++}/libg++/src/libc.h | 0 {contrib/libg++ => libg++}/libg++/src/malloc.c | 0 {contrib/libg++ => libg++}/libg++/src/minmax.cc | 0 {contrib/libg++ => libg++}/libg++/src/minmax.h | 0 {contrib/libg++ => libg++}/libg++/src/osfcn.h | 0 {contrib/libg++ => libg++}/libg++/src/pow.cc | 0 {contrib/libg++ => libg++}/libg++/src/sqrt.cc | 0 {contrib/libg++ => libg++}/libg++/src/std.h | 0 {contrib/libg++ => libg++}/libg++/src/strclass.h | 0 {contrib/libg++ => libg++}/libg++/src/swap.h | 0 {contrib/libg++ => libg++}/libg++/src/sysent.h | 0 {contrib/libg++ => libg++}/libg++/src/timer.c | 0 {contrib/libg++ => libg++}/libg++/src/typemacros.h | 0 {contrib/libg++ => libg++}/libg++/test-install/ChangeLog | 0 {contrib/libg++ => libg++}/libg++/test-install/Foo.cc | 0 {contrib/libg++ => libg++}/libg++/test-install/Foo.h | 0 {contrib/libg++ => libg++}/libg++/test-install/Makefile.in | 0 {contrib/libg++ => libg++}/libg++/test-install/a.cc | 0 {contrib/libg++ => libg++}/libg++/test-install/bf.cc | 0 {contrib/libg++ => libg++}/libg++/test-install/bm.cc | 0 {contrib/libg++ => libg++}/libg++/test-install/configure.in | 0 {contrib/libg++ => libg++}/libg++/test-install/ex_bar.cc | 0 {contrib/libg++ => libg++}/libg++/test-install/expected.out | 0 {contrib/libg++ => libg++}/libg++/test-install/foo_func.cc | 0 {contrib/libg++ => libg++}/libg++/test-install/foo_main.cc | 0 {contrib/libg++ => libg++}/libg++/tests/ChangeLog | 0 {contrib/libg++ => libg++}/libg++/tests/Makefile.in | 0 {contrib/libg++ => libg++}/libg++/tests/Makefile.sh | 0 {contrib/libg++ => libg++}/libg++/tests/configure.in | 0 {contrib/libg++ => libg++}/libg++/tests/depend | 0 {contrib/libg++ => libg++}/libg++/tests/tBag.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tBag.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tBag.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tBitSet.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tBitSet.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tBitSet.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tBitString.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tBitString.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tBitString.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tCurses.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tCurses.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tDeque.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tDeque.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tDeque.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tFile.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tFile.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tFile.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tFix.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tFix.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tFix.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tFix16.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tFix16.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tFix16.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tFix24.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tFix24.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tFix24.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tGetOpt.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tGetOpt.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tGetOpt.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tInteger.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tInteger.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tInteger.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tLList.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tLList.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tLList.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tList.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tList.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tList.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tMap.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tMap.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tMap.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tObstack.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tObstack.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tObstack.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tPQ.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tPQ.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tPQ.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tPlex.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tPlex.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tPlex.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tQueue.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tQueue.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tQueue.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tRandom.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tRandom.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tRandom.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tRational.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tRational.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tRational.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tSet.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tSet.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tSet.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tStack.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tStack.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tStack.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tString.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tString.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tString.inp | 0 {contrib/libg++ => libg++}/libg++/tests/tVec.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tVec.exp | 0 {contrib/libg++ => libg++}/libg++/tests/tVec.inp | 0 {contrib/libg++ => libg++}/libg++/tests/test_h.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tiLList.cc | 0 {contrib/libg++ => libg++}/libg++/tests/tiLList.exp | 0 {contrib/libg++ => libg++}/libiberty/ChangeLog | 0 {contrib/libg++ => libg++}/libiberty/insque.c | 0 {contrib/libg++ => libg++}/libiberty/strerror.c | 0 {contrib/libg++ => libg++}/libio/ChangeLog | 0 {contrib/libg++ => libg++}/libio/Makefile.in | 0 {contrib/libg++ => libg++}/libio/NEWS | 0 {contrib/libg++ => libg++}/libio/PlotFile.cc | 0 {contrib/libg++ => libg++}/libio/PlotFile.h | 0 {contrib/libg++ => libg++}/libio/README | 0 {contrib/libg++ => libg++}/libio/SFile.cc | 0 {contrib/libg++ => libg++}/libio/SFile.h | 0 {contrib/libg++ => libg++}/libio/builtinbuf.cc | 0 {contrib/libg++ => libg++}/libio/builtinbuf.h | 0 {contrib/libg++ => libg++}/libio/cleanup.c | 0 {contrib/libg++ => libg++}/libio/depend | 0 {contrib/libg++ => libg++}/libio/editbuf.cc | 0 {contrib/libg++ => libg++}/libio/editbuf.h | 0 {contrib/libg++ => libg++}/libio/filebuf.cc | 0 {contrib/libg++ => libg++}/libio/filedoalloc.c | 0 {contrib/libg++ => libg++}/libio/fileops.c | 0 {contrib/libg++ => libg++}/libio/floatconv.c | 0 {contrib/libg++ => libg++}/libio/floatio.h | 0 {contrib/libg++ => libg++}/libio/fstream.cc | 0 {contrib/libg++ => libg++}/libio/fstream.h | 0 {contrib/libg++ => libg++}/libio/gen-params | 0 {contrib/libg++ => libg++}/libio/genops.c | 0 {contrib/libg++ => libg++}/libio/indstream.cc | 0 {contrib/libg++ => libg++}/libio/indstream.h | 0 {contrib/libg++ => libg++}/libio/ioassign.cc | 0 {contrib/libg++ => libg++}/libio/ioextend.cc | 0 {contrib/libg++ => libg++}/libio/iofclose.c | 0 {contrib/libg++ => libg++}/libio/iofdopen.c | 0 {contrib/libg++ => libg++}/libio/iofflush.c | 0 {contrib/libg++ => libg++}/libio/iofgetpos.c | 0 {contrib/libg++ => libg++}/libio/iofgets.c | 0 {contrib/libg++ => libg++}/libio/iofopen.c | 0 {contrib/libg++ => libg++}/libio/iofprintf.c | 0 {contrib/libg++ => libg++}/libio/iofputs.c | 0 {contrib/libg++ => libg++}/libio/iofread.c | 0 {contrib/libg++ => libg++}/libio/iofscanf.c | 0 {contrib/libg++ => libg++}/libio/iofsetpos.c | 0 {contrib/libg++ => libg++}/libio/ioftell.c | 0 {contrib/libg++ => libg++}/libio/iofwrite.c | 0 {contrib/libg++ => libg++}/libio/iogetdelim.c | 0 {contrib/libg++ => libg++}/libio/iogetline.c | 0 {contrib/libg++ => libg++}/libio/iogets.c | 0 {contrib/libg++ => libg++}/libio/ioignore.c | 0 {contrib/libg++ => libg++}/libio/iolibio.h | 0 {contrib/libg++ => libg++}/libio/iomanip.cc | 0 {contrib/libg++ => libg++}/libio/iomanip.h | 0 {contrib/libg++ => libg++}/libio/iopadn.c | 0 {contrib/libg++ => libg++}/libio/ioperror.c | 0 {contrib/libg++ => libg++}/libio/iopopen.c | 0 {contrib/libg++ => libg++}/libio/ioprims.c | 0 {contrib/libg++ => libg++}/libio/ioprintf.c | 0 {contrib/libg++ => libg++}/libio/ioputs.c | 0 {contrib/libg++ => libg++}/libio/ioscanf.c | 0 {contrib/libg++ => libg++}/libio/ioseekoff.c | 0 {contrib/libg++ => libg++}/libio/ioseekpos.c | 0 {contrib/libg++ => libg++}/libio/iosetbuffer.c | 0 {contrib/libg++ => libg++}/libio/iosetvbuf.c | 0 {contrib/libg++ => libg++}/libio/iosprintf.c | 0 {contrib/libg++ => libg++}/libio/iosscanf.c | 0 {contrib/libg++ => libg++}/libio/iostdio.h | 0 {contrib/libg++ => libg++}/libio/iostream.cc | 0 {contrib/libg++ => libg++}/libio/iostream.h | 0 {contrib/libg++ => libg++}/libio/iostream.texi | 0 {contrib/libg++ => libg++}/libio/iostreamP.h | 0 {contrib/libg++ => libg++}/libio/iostrerror.c | 0 {contrib/libg++ => libg++}/libio/ioungetc.c | 0 {contrib/libg++ => libg++}/libio/iovfprintf.c | 0 {contrib/libg++ => libg++}/libio/iovfscanf.c | 0 {contrib/libg++ => libg++}/libio/iovsprintf.c | 0 {contrib/libg++ => libg++}/libio/iovsscanf.c | 0 {contrib/libg++ => libg++}/libio/isgetline.cc | 0 {contrib/libg++ => libg++}/libio/isgetsb.cc | 0 {contrib/libg++ => libg++}/libio/isscan.cc | 0 {contrib/libg++ => libg++}/libio/istream.h | 0 {contrib/libg++ => libg++}/libio/libio.h | 0 {contrib/libg++ => libg++}/libio/libioP.h | 0 {contrib/libg++ => libg++}/libio/osform.cc | 0 {contrib/libg++ => libg++}/libio/ostream.h | 0 {contrib/libg++ => libg++}/libio/outfloat.c | 0 {contrib/libg++ => libg++}/libio/parsestream.cc | 0 {contrib/libg++ => libg++}/libio/parsestream.h | 0 {contrib/libg++ => libg++}/libio/pfstream.cc | 0 {contrib/libg++ => libg++}/libio/pfstream.h | 0 {contrib/libg++ => libg++}/libio/procbuf.cc | 0 {contrib/libg++ => libg++}/libio/procbuf.h | 0 {contrib/libg++ => libg++}/libio/sbform.cc | 0 {contrib/libg++ => libg++}/libio/sbgetline.cc | 0 {contrib/libg++ => libg++}/libio/sbscan.cc | 0 {contrib/libg++ => libg++}/libio/stdfiles.c | 0 {contrib/libg++ => libg++}/libio/stdiostream.cc | 0 {contrib/libg++ => libg++}/libio/stdiostream.h | 0 {contrib/libg++ => libg++}/libio/stdstrbufs.cc | 0 {contrib/libg++ => libg++}/libio/stdstreams.cc | 0 {contrib/libg++ => libg++}/libio/stream.cc | 0 {contrib/libg++ => libg++}/libio/stream.h | 0 {contrib/libg++ => libg++}/libio/streambuf.cc | 0 {contrib/libg++ => libg++}/libio/streambuf.h | 0 {contrib/libg++ => libg++}/libio/strfile.h | 0 {contrib/libg++ => libg++}/libio/strops.c | 0 {contrib/libg++ => libg++}/libio/strstream.cc | 0 {contrib/libg++ => libg++}/libio/strstream.h | 0 {contrib/libg++ => libg++}/libio/tests/ChangeLog | 0 {contrib/libg++ => libg++}/libio/tests/Makefile.in | 0 {contrib/libg++ => libg++}/libio/tests/configure.in | 0 {contrib/libg++ => libg++}/libio/tests/hounddog.cc | 0 {contrib/libg++ => libg++}/libio/tests/hounddog.exp | 0 {contrib/libg++ => libg++}/libio/tests/hounddog.inp | 0 {contrib/libg++ => libg++}/libio/tests/putbackdog.cc | 0 {contrib/libg++ => libg++}/libio/tests/tFile.cc | 0 {contrib/libg++ => libg++}/libio/tests/tFile.exp | 0 {contrib/libg++ => libg++}/libio/tests/tFile.inp | 0 {contrib/libg++ => libg++}/libio/tests/tfformat.c | 0 {contrib/libg++ => libg++}/libio/tests/tiformat.c | 0 {contrib/libg++ => libg++}/libio/tests/tiomanip.cc | 0 {contrib/libg++ => libg++}/libio/tests/tiomanip.exp | 0 {contrib/libg++ => libg++}/libio/tests/tiomisc.cc | 0 {contrib/libg++ => libg++}/libio/tests/tiomisc.exp | 0 {contrib/libg++ => libg++}/libio/tests/tstdiomisc.c | 0 {contrib/libg++ => libg++}/libio/tests/tstdiomisc.exp | 0 {contrib/libg++ => libg++}/librx/ChangeLog | 0 {contrib/libg++ => libg++}/librx/DOC | 0 {contrib/libg++ => libg++}/librx/rx.c | 0 {contrib/libg++ => libg++}/librx/rx.h | 0 {contrib/libg++ => libg++}/libstdc++/ChangeLog | 0 {contrib/libg++ => libg++}/libstdc++/Makefile.in | 0 {contrib/libg++ => libg++}/libstdc++/algorithm | 0 {contrib/libg++ => libg++}/libstdc++/cassert | 0 {contrib/libg++ => libg++}/libstdc++/cctype | 0 {contrib/libg++ => libg++}/libstdc++/cerrno | 0 {contrib/libg++ => libg++}/libstdc++/cfloat | 0 {contrib/libg++ => libg++}/libstdc++/cinst.cc | 0 {contrib/libg++ => libg++}/libstdc++/ciso646 | 0 {contrib/libg++ => libg++}/libstdc++/climits | 0 {contrib/libg++ => libg++}/libstdc++/clocale | 0 {contrib/libg++ => libg++}/libstdc++/cmath | 0 {contrib/libg++ => libg++}/libstdc++/cmathi.cc | 0 {contrib/libg++ => libg++}/libstdc++/complex | 0 {contrib/libg++ => libg++}/libstdc++/complex.h | 0 {contrib/libg++ => libg++}/libstdc++/csetjmp | 0 {contrib/libg++ => libg++}/libstdc++/csignal | 0 {contrib/libg++ => libg++}/libstdc++/cstdarg | 0 {contrib/libg++ => libg++}/libstdc++/cstddef | 0 {contrib/libg++ => libg++}/libstdc++/cstdio | 0 {contrib/libg++ => libg++}/libstdc++/cstdlib | 0 {contrib/libg++ => libg++}/libstdc++/cstdlibi.cc | 0 {contrib/libg++ => libg++}/libstdc++/cstring | 0 {contrib/libg++ => libg++}/libstdc++/cstringi.cc | 0 {contrib/libg++ => libg++}/libstdc++/ctime | 0 {contrib/libg++ => libg++}/libstdc++/cwchar | 0 {contrib/libg++ => libg++}/libstdc++/cwctype | 0 {contrib/libg++ => libg++}/libstdc++/deque | 0 {contrib/libg++ => libg++}/libstdc++/exception | 0 {contrib/libg++ => libg++}/libstdc++/exceptioni.cc | 0 {contrib/libg++ => libg++}/libstdc++/functional | 0 {contrib/libg++ => libg++}/libstdc++/iterator | 0 {contrib/libg++ => libg++}/libstdc++/list | 0 {contrib/libg++ => libg++}/libstdc++/map | 0 {contrib/libg++ => libg++}/libstdc++/memory | 0 {contrib/libg++ => libg++}/libstdc++/new | 0 {contrib/libg++ => libg++}/libstdc++/new.h | 0 {contrib/libg++ => libg++}/libstdc++/newi.cc | 0 {contrib/libg++ => libg++}/libstdc++/numeric | 0 {contrib/libg++ => libg++}/libstdc++/queue | 0 {contrib/libg++ => libg++}/libstdc++/set | 0 {contrib/libg++ => libg++}/libstdc++/sinst.cc | 0 {contrib/libg++ => libg++}/libstdc++/stack | 0 {contrib/libg++ => libg++}/libstdc++/std/bastring.cc | 0 {contrib/libg++ => libg++}/libstdc++/std/bastring.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cassert.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cctype.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cerrno.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cfloat.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cinst.h | 0 {contrib/libg++ => libg++}/libstdc++/std/ciso646.h | 0 {contrib/libg++ => libg++}/libstdc++/std/climits.h | 0 {contrib/libg++ => libg++}/libstdc++/std/clocale.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cmath.h | 0 {contrib/libg++ => libg++}/libstdc++/std/complex.h | 0 {contrib/libg++ => libg++}/libstdc++/std/complext.cc | 0 {contrib/libg++ => libg++}/libstdc++/std/complext.h | 0 {contrib/libg++ => libg++}/libstdc++/std/csetjmp.h | 0 {contrib/libg++ => libg++}/libstdc++/std/csignal.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cstdarg.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cstddef.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cstdio.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cstdlib.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cstring.h | 0 {contrib/libg++ => libg++}/libstdc++/std/ctime.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cwchar.h | 0 {contrib/libg++ => libg++}/libstdc++/std/cwctype.h | 0 {contrib/libg++ => libg++}/libstdc++/std/dcomplex.h | 0 {contrib/libg++ => libg++}/libstdc++/std/exception.h | 0 {contrib/libg++ => libg++}/libstdc++/std/fcomplex.h | 0 {contrib/libg++ => libg++}/libstdc++/std/ldcomplex.h | 0 {contrib/libg++ => libg++}/libstdc++/std/new.h | 0 {contrib/libg++ => libg++}/libstdc++/std/sinst.h | 0 {contrib/libg++ => libg++}/libstdc++/std/stddef.h | 0 {contrib/libg++ => libg++}/libstdc++/std/stdexcept.h | 0 {contrib/libg++ => libg++}/libstdc++/std/straits.h | 0 {contrib/libg++ => libg++}/libstdc++/std/string.h | 0 {contrib/libg++ => libg++}/libstdc++/std/typeinfo.h | 0 {contrib/libg++ => libg++}/libstdc++/stddef | 0 {contrib/libg++ => libg++}/libstdc++/stddefi.cc | 0 {contrib/libg++ => libg++}/libstdc++/stdexcept | 0 {contrib/libg++ => libg++}/libstdc++/stdexcepti.cc | 0 {contrib/libg++ => libg++}/libstdc++/stl.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/ChangeLog | 0 {contrib/libg++ => libg++}/libstdc++/stl/Makefile.in | 0 {contrib/libg++ => libg++}/libstdc++/stl/README | 0 {contrib/libg++ => libg++}/libstdc++/stl/algo.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/algobase.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/bool.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/bvector.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/configure.in | 0 {contrib/libg++ => libg++}/libstdc++/stl/defalloc.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/deque.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/faralloc.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/fdeque.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/flist.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/fmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/fmultmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/fmultset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/fset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/function.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hdeque.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/heap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hlist.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hmultmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hmultset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hugalloc.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/hvector.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/iterator.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/lbvector.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/ldeque.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/list.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/llist.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/lmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/lmultmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/lmultset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/lngalloc.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/lset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/map.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/multimap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/multiset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/neralloc.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/nmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/nmultmap.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/nmultset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/nset.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/pair.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/projectn.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/random.cc | 0 {contrib/libg++ => libg++}/libstdc++/stl/set.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/stack.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/tempbuf.cc | 0 {contrib/libg++ => libg++}/libstdc++/stl/tempbuf.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/tree.cc | 0 {contrib/libg++ => libg++}/libstdc++/stl/tree.h | 0 {contrib/libg++ => libg++}/libstdc++/stl/vector.h | 0 {contrib/libg++ => libg++}/libstdc++/string | 0 {contrib/libg++ => libg++}/libstdc++/tests/ChangeLog | 0 {contrib/libg++ => libg++}/libstdc++/tests/Makefile.in | 0 {contrib/libg++ => libg++}/libstdc++/tests/configure.in | 0 {contrib/libg++ => libg++}/libstdc++/tests/tcomplex.cc | 0 {contrib/libg++ => libg++}/libstdc++/tests/tcomplex.exp | 0 {contrib/libg++ => libg++}/libstdc++/tests/tcomplex.inp | 0 {contrib/libg++ => libg++}/libstdc++/tests/tlist.cc | 0 {contrib/libg++ => libg++}/libstdc++/tests/tlist.exp | 0 {contrib/libg++ => libg++}/libstdc++/tests/tmap.cc | 0 {contrib/libg++ => libg++}/libstdc++/tests/tmap.exp | 0 {contrib/libg++ => libg++}/libstdc++/tests/tstring.cc | 0 {contrib/libg++ => libg++}/libstdc++/tests/tstring.exp | 0 {contrib/libg++ => libg++}/libstdc++/tests/tstring.inp | 0 {contrib/libg++ => libg++}/libstdc++/tests/tvector.cc | 0 {contrib/libg++ => libg++}/libstdc++/tests/tvector.exp | 0 {contrib/libg++ => libg++}/libstdc++/typeinfo | 0 {contrib/libg++ => libg++}/libstdc++/typeinfoi.cc | 0 {contrib/libg++ => libg++}/libstdc++/utility | 0 {contrib/libg++ => libg++}/libstdc++/vector | 0 {contrib/gcclibs/libgomp => libgomp}/ChangeLog | 0 {contrib/gcclibs/libgomp => libgomp}/Makefile.am | 0 {contrib/gcclibs/libgomp => libgomp}/Makefile.in | 0 {contrib/gcclibs/libgomp => libgomp}/acinclude.m4 | 0 {contrib/gcclibs/libgomp => libgomp}/aclocal.m4 | 0 {contrib/gcclibs/libgomp => libgomp}/alloc.c | 0 {contrib/gcclibs/libgomp => libgomp}/barrier.c | 0 {contrib/gcclibs/libgomp => libgomp}/config.h.in | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/alpha/futex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/bar.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/bar.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/ia64/futex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/lock.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/mutex.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/mutex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/omp-lock.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/powerpc/futex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/s390/futex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/sem.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/sem.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/sparc/futex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/linux/x86/futex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/mingw32/time.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/bar.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/bar.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/lock.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/mutex.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/mutex.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/omp-lock.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/proc.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/sem.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/sem.h | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix/time.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix95/lock.c | 0 {contrib/gcclibs/libgomp => libgomp}/config/posix95/omp-lock.h | 0 {contrib/gcclibs/libgomp => libgomp}/configure | 0 {contrib/gcclibs/libgomp => libgomp}/configure.ac | 0 {contrib/gcclibs/libgomp => libgomp}/configure.tgt | 0 {contrib/gcclibs/libgomp => libgomp}/critical.c | 0 {contrib/gcclibs/libgomp => libgomp}/env.c | 0 {contrib/gcclibs/libgomp => libgomp}/error.c | 0 {contrib/gcclibs/libgomp => libgomp}/fortran.c | 0 {contrib/gcclibs/libgomp => libgomp}/iter.c | 0 {contrib/gcclibs/libgomp => libgomp}/libgomp.h | 0 {contrib/gcclibs/libgomp => libgomp}/libgomp.map | 0 {contrib/gcclibs/libgomp => libgomp}/libgomp.spec.in | 0 {contrib/gcclibs/libgomp => libgomp}/libgomp.texi | 0 {contrib/gcclibs/libgomp => libgomp}/libgomp_f.h.in | 0 {contrib/gcclibs/libgomp => libgomp}/libgomp_g.h | 0 {contrib/gcclibs/libgomp => libgomp}/loop.c | 0 {contrib/gcclibs/libgomp => libgomp}/omp.h.in | 0 {contrib/gcclibs/libgomp => libgomp}/omp_lib.f90.in | 0 {contrib/gcclibs/libgomp => libgomp}/omp_lib.h.in | 0 {contrib/gcclibs/libgomp => libgomp}/ordered.c | 0 {contrib/gcclibs/libgomp => libgomp}/parallel.c | 0 {contrib/gcclibs/libgomp => libgomp}/sections.c | 0 {contrib/gcclibs/libgomp => libgomp}/single.c | 0 {contrib/gcclibs/libgomp => libgomp}/team.c | 0 {contrib/gcclibs/libgomp => libgomp}/work.c | 0 {contrib/gcclibs/libiberty => libiberty}/COPYING.LIB | 0 {contrib/gcclibs/libiberty => libiberty}/ChangeLog | 0 {contrib/gcclibs/libiberty => libiberty}/Makefile.in | 0 {contrib/gcclibs/libiberty => libiberty}/README | 0 {contrib/gcclibs/libiberty => libiberty}/_doprnt.c | 0 {contrib/gcclibs/libiberty => libiberty}/aclocal.m4 | 0 {contrib/gcclibs/libiberty => libiberty}/alloca.c | 0 {contrib/gcclibs/libiberty => libiberty}/argv.c | 0 {contrib/gcclibs/libiberty => libiberty}/asprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/at-file.texi | 0 {contrib/gcclibs/libiberty => libiberty}/atexit.c | 0 {contrib/gcclibs/libiberty => libiberty}/basename.c | 0 {contrib/gcclibs/libiberty => libiberty}/bcmp.c | 0 {contrib/gcclibs/libiberty => libiberty}/bcopy.c | 0 {contrib/gcclibs/libiberty => libiberty}/bsearch.c | 0 {contrib/gcclibs/libiberty => libiberty}/bzero.c | 0 {contrib/gcclibs/libiberty => libiberty}/calloc.c | 0 {contrib/gcclibs/libiberty => libiberty}/choose-temp.c | 0 {contrib/gcclibs/libiberty => libiberty}/clock.c | 0 {contrib/gcclibs/libiberty => libiberty}/concat.c | 0 {contrib/gcclibs/libiberty => libiberty}/config.h-vms | 0 {contrib/gcclibs/libiberty => libiberty}/config.in | 0 {contrib/gcclibs/libiberty => libiberty}/config/mh-aix | 0 {contrib/gcclibs/libiberty => libiberty}/config/mh-cxux7 | 0 {contrib/gcclibs/libiberty => libiberty}/config/mh-fbsd21 | 0 {contrib/gcclibs/libiberty => libiberty}/config/mh-openedition | 0 {contrib/gcclibs/libiberty => libiberty}/config/mh-windows | 0 {contrib/gcclibs/libiberty => libiberty}/configure | 0 {contrib/gcclibs/libiberty => libiberty}/configure.ac | 0 {contrib/gcclibs/libiberty => libiberty}/copying-lib.texi | 0 {contrib/gcclibs/libiberty => libiberty}/copysign.c | 0 {contrib/gcclibs/libiberty => libiberty}/cp-demangle.c | 0 {contrib/gcclibs/libiberty => libiberty}/cp-demangle.h | 0 {contrib/gcclibs/libiberty => libiberty}/cp-demint.c | 0 {contrib/gcclibs/libiberty => libiberty}/cplus-dem.c | 0 {contrib/gcclibs/libiberty => libiberty}/dyn-string.c | 0 {contrib/gcclibs/libiberty => libiberty}/fdmatch.c | 0 {contrib/gcclibs/libiberty => libiberty}/ffs.c | 0 {contrib/gcclibs/libiberty => libiberty}/fibheap.c | 0 {contrib/gcclibs/libiberty => libiberty}/floatformat.c | 0 {contrib/gcclibs/libiberty => libiberty}/fnmatch.c | 0 {contrib/gcclibs/libiberty => libiberty}/fnmatch.txh | 0 {contrib/gcclibs/libiberty => libiberty}/fopen_unlocked.c | 0 {contrib/gcclibs/libiberty => libiberty}/functions.texi | 0 {contrib/gcclibs/libiberty => libiberty}/gather-docs | 0 {contrib/gcclibs/libiberty => libiberty}/getcwd.c | 0 {contrib/gcclibs/libiberty => libiberty}/getopt.c | 0 {contrib/gcclibs/libiberty => libiberty}/getopt1.c | 0 {contrib/gcclibs/libiberty => libiberty}/getpagesize.c | 0 {contrib/gcclibs/libiberty => libiberty}/getpwd.c | 0 {contrib/gcclibs/libiberty => libiberty}/getruntime.c | 0 {contrib/gcclibs/libiberty => libiberty}/gettimeofday.c | 0 {contrib/gcclibs/libiberty => libiberty}/hashtab.c | 0 {contrib/gcclibs/libiberty => libiberty}/hex.c | 0 {contrib/gcclibs/libiberty => libiberty}/index.c | 0 {contrib/gcclibs/libiberty => libiberty}/insque.c | 0 {contrib/gcclibs/libiberty => libiberty}/lbasename.c | 0 {contrib/gcclibs/libiberty => libiberty}/libiberty.texi | 0 {contrib/gcclibs/libiberty => libiberty}/lrealpath.c | 0 {contrib/gcclibs/libiberty => libiberty}/maint-tool | 0 {contrib/gcclibs/libiberty => libiberty}/make-relative-prefix.c | 0 {contrib/gcclibs/libiberty => libiberty}/make-temp-file.c | 0 {contrib/gcclibs/libiberty => libiberty}/makefile.vms | 0 {contrib/gcclibs/libiberty => libiberty}/md5.c | 0 {contrib/gcclibs/libiberty => libiberty}/memchr.c | 0 {contrib/gcclibs/libiberty => libiberty}/memcmp.c | 0 {contrib/gcclibs/libiberty => libiberty}/memcpy.c | 0 {contrib/gcclibs/libiberty => libiberty}/memmove.c | 0 {contrib/gcclibs/libiberty => libiberty}/mempcpy.c | 0 {contrib/gcclibs/libiberty => libiberty}/memset.c | 0 {contrib/gcclibs/libiberty => libiberty}/mkstemps.c | 0 {contrib/gcclibs/libiberty => libiberty}/msdos.c | 0 {contrib/gcclibs/libiberty => libiberty}/objalloc.c | 0 {contrib/gcclibs/libiberty => libiberty}/obstack.c | 0 {contrib/gcclibs/libiberty => libiberty}/obstacks.texi | 0 {contrib/gcclibs/libiberty => libiberty}/partition.c | 0 {contrib/gcclibs/libiberty => libiberty}/pex-common.c | 0 {contrib/gcclibs/libiberty => libiberty}/pex-common.h | 0 {contrib/gcclibs/libiberty => libiberty}/pex-djgpp.c | 0 {contrib/gcclibs/libiberty => libiberty}/pex-msdos.c | 0 {contrib/gcclibs/libiberty => libiberty}/pex-one.c | 0 {contrib/gcclibs/libiberty => libiberty}/pex-unix.c | 0 {contrib/gcclibs/libiberty => libiberty}/pex-win32.c | 0 {contrib/gcclibs/libiberty => libiberty}/pexecute.c | 0 {contrib/gcclibs/libiberty => libiberty}/pexecute.txh | 0 {contrib/gcclibs/libiberty => libiberty}/physmem.c | 0 {contrib/gcclibs/libiberty => libiberty}/putenv.c | 0 {contrib/gcclibs/libiberty => libiberty}/random.c | 0 {contrib/gcclibs/libiberty => libiberty}/regex.c | 0 {contrib/gcclibs/libiberty => libiberty}/rename.c | 0 {contrib/gcclibs/libiberty => libiberty}/rindex.c | 0 {contrib/gcclibs/libiberty => libiberty}/safe-ctype.c | 0 {contrib/gcclibs/libiberty => libiberty}/setenv.c | 0 {contrib/gcclibs/libiberty => libiberty}/sigsetmask.c | 0 {contrib/gcclibs/libiberty => libiberty}/snprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/sort.c | 0 {contrib/gcclibs/libiberty => libiberty}/spaces.c | 0 {contrib/gcclibs/libiberty => libiberty}/splay-tree.c | 0 {contrib/gcclibs/libiberty => libiberty}/stpcpy.c | 0 {contrib/gcclibs/libiberty => libiberty}/stpncpy.c | 0 {contrib/gcclibs/libiberty => libiberty}/strcasecmp.c | 0 {contrib/gcclibs/libiberty => libiberty}/strchr.c | 0 {contrib/gcclibs/libiberty => libiberty}/strdup.c | 0 {contrib/gcclibs/libiberty => libiberty}/strerror.c | 0 {contrib/gcclibs/libiberty => libiberty}/strncasecmp.c | 0 {contrib/gcclibs/libiberty => libiberty}/strncmp.c | 0 {contrib/gcclibs/libiberty => libiberty}/strndup.c | 0 {contrib/gcclibs/libiberty => libiberty}/strrchr.c | 0 {contrib/gcclibs/libiberty => libiberty}/strsignal.c | 0 {contrib/gcclibs/libiberty => libiberty}/strstr.c | 0 {contrib/gcclibs/libiberty => libiberty}/strtod.c | 0 {contrib/gcclibs/libiberty => libiberty}/strtol.c | 0 {contrib/gcclibs/libiberty => libiberty}/strtoul.c | 0 {contrib/gcclibs/libiberty => libiberty}/strverscmp.c | 0 {contrib/gcclibs/libiberty => libiberty}/ternary.c | 0 {contrib/gcclibs/libiberty => libiberty}/testsuite/Makefile.in | 0 .../gcclibs/libiberty => libiberty}/testsuite/demangle-expected | 0 .../gcclibs/libiberty => libiberty}/testsuite/test-demangle.c | 0 .../gcclibs/libiberty => libiberty}/testsuite/test-expandargv.c | 0 .../gcclibs/libiberty => libiberty}/testsuite/test-pexecute.c | 0 {contrib/gcclibs/libiberty => libiberty}/tmpnam.c | 0 {contrib/gcclibs/libiberty => libiberty}/unlink-if-ordinary.c | 0 {contrib/gcclibs/libiberty => libiberty}/vasprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/vfork.c | 0 {contrib/gcclibs/libiberty => libiberty}/vfprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/vmsbuild.com | 0 {contrib/gcclibs/libiberty => libiberty}/vprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/vsnprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/vsprintf.c | 0 {contrib/gcclibs/libiberty => libiberty}/waitpid.c | 0 {contrib/gcclibs/libiberty => libiberty}/xatexit.c | 0 {contrib/gcclibs/libiberty => libiberty}/xexit.c | 0 {contrib/gcclibs/libiberty => libiberty}/xmalloc.c | 0 {contrib/gcclibs/libiberty => libiberty}/xmemdup.c | 0 {contrib/gcclibs/libiberty => libiberty}/xstrdup.c | 0 {contrib/gcclibs/libiberty => libiberty}/xstrerror.c | 0 {contrib/gcclibs/libiberty => libiberty}/xstrndup.c | 0 {contrib/libio => libio}/ChangeLog | 0 {contrib/libio => libio}/Makefile.in | 0 {contrib/libio => libio}/NEWS | 0 {contrib/libio => libio}/PlotFile.cc | 0 {contrib/libio => libio}/PlotFile.h | 0 {contrib/libio => libio}/README | 0 {contrib/libio => libio}/SFile.cc | 0 {contrib/libio => libio}/SFile.h | 0 {contrib/libio => libio}/builtinbuf.cc | 0 {contrib/libio => libio}/builtinbuf.h | 0 {contrib/libio => libio}/cleanup.c | 0 {contrib/libio => libio}/config.shared | 0 {contrib/libio => libio}/config/hpux.mt | 0 {contrib/libio => libio}/config/isc.mt | 0 {contrib/libio => libio}/config/linux.mt | 0 {contrib/libio => libio}/config/linuxaxp1-libc-lock.h | 0 {contrib/libio => libio}/config/linuxaxp1-stdio-lock.h | 0 {contrib/libio => libio}/config/linuxaxp1.mt | 0 {contrib/libio => libio}/config/linuxlibc1.mt | 0 {contrib/libio => libio}/config/mn10200.mt | 0 {contrib/libio => libio}/config/mtsafe.mt | 0 {contrib/libio => libio}/config/netware.mt | 0 {contrib/libio => libio}/configure.in | 0 {contrib/libio => libio}/dbz/Makefile.in | 0 {contrib/libio => libio}/dbz/README | 0 {contrib/libio => libio}/dbz/altbytes | 0 {contrib/libio => libio}/dbz/byteflip.c | 0 {contrib/libio => libio}/dbz/case.c | 0 {contrib/libio => libio}/dbz/case.h | 0 {contrib/libio => libio}/dbz/configure.in | 0 {contrib/libio => libio}/dbz/dbz.1 | 0 {contrib/libio => libio}/dbz/dbz.3z | 0 {contrib/libio => libio}/dbz/dbz.c | 0 {contrib/libio => libio}/dbz/dbz.h | 0 {contrib/libio => libio}/dbz/dbzmain.c | 0 {contrib/libio => libio}/dbz/fake.c | 0 {contrib/libio => libio}/dbz/firstlast25 | 0 {contrib/libio => libio}/dbz/getmap | 0 {contrib/libio => libio}/dbz/random.c | 0 {contrib/libio => libio}/dbz/revbytes | 0 {contrib/libio => libio}/dbz/stdio.h | 0 {contrib/libio => libio}/depend | 0 {contrib/libio => libio}/editbuf.cc | 0 {contrib/libio => libio}/editbuf.h | 0 {contrib/libio => libio}/filebuf.cc | 0 {contrib/libio => libio}/filedoalloc.c | 0 {contrib/libio => libio}/fileops.c | 0 {contrib/libio => libio}/floatconv.c | 0 {contrib/libio => libio}/floatio.h | 0 {contrib/libio => libio}/fstream.cc | 0 {contrib/libio => libio}/fstream.h | 0 {contrib/libio => libio}/gen-params | 0 {contrib/libio => libio}/genops.c | 0 {contrib/libio => libio}/include/empty.h | 0 {contrib/libio => libio}/indstream.cc | 0 {contrib/libio => libio}/indstream.h | 0 {contrib/libio => libio}/ioassign.cc | 0 {contrib/libio => libio}/ioextend.cc | 0 {contrib/libio => libio}/iofclose.c | 0 {contrib/libio => libio}/iofdopen.c | 0 {contrib/libio => libio}/iofeof.c | 0 {contrib/libio => libio}/ioferror.c | 0 {contrib/libio => libio}/iofflush.c | 0 {contrib/libio => libio}/iofflush_u.c | 0 {contrib/libio => libio}/iofgetpos.c | 0 {contrib/libio => libio}/iofgets.c | 0 {contrib/libio => libio}/iofopen.c | 0 {contrib/libio => libio}/iofprintf.c | 0 {contrib/libio => libio}/iofputs.c | 0 {contrib/libio => libio}/iofread.c | 0 {contrib/libio => libio}/iofscanf.c | 0 {contrib/libio => libio}/iofsetpos.c | 0 {contrib/libio => libio}/ioftell.c | 0 {contrib/libio => libio}/iofwrite.c | 0 {contrib/libio => libio}/iogetc.c | 0 {contrib/libio => libio}/iogetdelim.c | 0 {contrib/libio => libio}/iogetline.c | 0 {contrib/libio => libio}/iogets.c | 0 {contrib/libio => libio}/ioignore.c | 0 {contrib/libio => libio}/iolibio.h | 0 {contrib/libio => libio}/iomanip.cc | 0 {contrib/libio => libio}/iomanip.h | 0 {contrib/libio => libio}/iopadn.c | 0 {contrib/libio => libio}/ioperror.c | 0 {contrib/libio => libio}/iopopen.c | 0 {contrib/libio => libio}/ioprims.c | 0 {contrib/libio => libio}/ioprintf.c | 0 {contrib/libio => libio}/ioputc.c | 0 {contrib/libio => libio}/ioputs.c | 0 {contrib/libio => libio}/ioscanf.c | 0 {contrib/libio => libio}/ioseekoff.c | 0 {contrib/libio => libio}/ioseekpos.c | 0 {contrib/libio => libio}/iosetbuffer.c | 0 {contrib/libio => libio}/iosetvbuf.c | 0 {contrib/libio => libio}/iosprintf.c | 0 {contrib/libio => libio}/iosscanf.c | 0 {contrib/libio => libio}/iostdio.h | 0 {contrib/libio => libio}/iostream.cc | 0 {contrib/libio => libio}/iostream.h | 0 {contrib/libio => libio}/iostream.texi | 0 {contrib/libio => libio}/iostreamP.h | 0 {contrib/libio => libio}/iostrerror.c | 0 {contrib/libio => libio}/ioungetc.c | 0 {contrib/libio => libio}/iovfprintf.c | 0 {contrib/libio => libio}/iovfscanf.c | 0 {contrib/libio => libio}/iovsprintf.c | 0 {contrib/libio => libio}/iovsscanf.c | 0 {contrib/libio => libio}/isgetline.cc | 0 {contrib/libio => libio}/isgetsb.cc | 0 {contrib/libio => libio}/isscan.cc | 0 {contrib/libio => libio}/istream.h | 0 {contrib/libio => libio}/libio.h | 0 {contrib/libio => libio}/libioP.h | 0 {contrib/libio => libio}/osform.cc | 0 {contrib/libio => libio}/ostream.h | 0 {contrib/libio => libio}/outfloat.c | 0 {contrib/libio => libio}/parsestream.cc | 0 {contrib/libio => libio}/parsestream.h | 0 {contrib/libio => libio}/peekc.c | 0 {contrib/libio => libio}/pfstream.cc | 0 {contrib/libio => libio}/pfstream.h | 0 {contrib/libio => libio}/procbuf.cc | 0 {contrib/libio => libio}/procbuf.h | 0 {contrib/libio => libio}/sbform.cc | 0 {contrib/libio => libio}/sbgetline.cc | 0 {contrib/libio => libio}/sbscan.cc | 0 {contrib/libio => libio}/stdfiles.c | 0 {contrib/libio => libio}/stdio/ChangeLog | 0 {contrib/libio => libio}/stdio/Makefile.in | 0 {contrib/libio => libio}/stdio/clearerr.c | 0 {contrib/libio => libio}/stdio/clearerr_u.c | 0 {contrib/libio => libio}/stdio/configure.in | 0 {contrib/libio => libio}/stdio/fdopen.c | 0 {contrib/libio => libio}/stdio/feof.c | 0 {contrib/libio => libio}/stdio/feof_u.c | 0 {contrib/libio => libio}/stdio/ferror.c | 0 {contrib/libio => libio}/stdio/ferror_u.c | 0 {contrib/libio => libio}/stdio/fgetc.c | 0 {contrib/libio => libio}/stdio/fileno.c | 0 {contrib/libio => libio}/stdio/fputc.c | 0 {contrib/libio => libio}/stdio/fputc_u.c | 0 {contrib/libio => libio}/stdio/freopen.c | 0 {contrib/libio => libio}/stdio/fseek.c | 0 {contrib/libio => libio}/stdio/getc.c | 0 {contrib/libio => libio}/stdio/getc_u.c | 0 {contrib/libio => libio}/stdio/getchar.c | 0 {contrib/libio => libio}/stdio/getchar_u.c | 0 {contrib/libio => libio}/stdio/getline.c | 0 {contrib/libio => libio}/stdio/getw.c | 0 {contrib/libio => libio}/stdio/obprintf.c | 0 {contrib/libio => libio}/stdio/popen.c | 0 {contrib/libio => libio}/stdio/putc.c | 0 {contrib/libio => libio}/stdio/putc_u.c | 0 {contrib/libio => libio}/stdio/putchar.c | 0 {contrib/libio => libio}/stdio/putchar_u.c | 0 {contrib/libio => libio}/stdio/putw.c | 0 {contrib/libio => libio}/stdio/rewind.c | 0 {contrib/libio => libio}/stdio/setbuf.c | 0 {contrib/libio => libio}/stdio/setfileno.c | 0 {contrib/libio => libio}/stdio/setlinebuf.c | 0 {contrib/libio => libio}/stdio/snprintf.c | 0 {contrib/libio => libio}/stdio/stdio.h | 0 {contrib/libio => libio}/stdio/vasprintf.c | 0 {contrib/libio => libio}/stdio/vfprintf.c | 0 {contrib/libio => libio}/stdio/vfscanf.c | 0 {contrib/libio => libio}/stdio/vprintf.c | 0 {contrib/libio => libio}/stdio/vscanf.c | 0 {contrib/libio => libio}/stdio/vsnprintf.c | 0 {contrib/libio => libio}/stdiostream.cc | 0 {contrib/libio => libio}/stdiostream.h | 0 {contrib/libio => libio}/stdstrbufs.cc | 0 {contrib/libio => libio}/stdstreams.cc | 0 {contrib/libio => libio}/stream.cc | 0 {contrib/libio => libio}/stream.h | 0 {contrib/libio => libio}/streambuf.cc | 0 {contrib/libio => libio}/streambuf.h | 0 {contrib/libio => libio}/strfile.h | 0 {contrib/libio => libio}/strops.c | 0 {contrib/libio => libio}/strstream.cc | 0 {contrib/libio => libio}/strstream.h | 0 {contrib/libio => libio}/tests/ChangeLog | 0 {contrib/libio => libio}/tests/Makefile.in | 0 {contrib/libio => libio}/tests/configure.in | 0 {contrib/libio => libio}/tests/hounddog.cc | 0 {contrib/libio => libio}/tests/hounddog.exp | 0 {contrib/libio => libio}/tests/hounddog.inp | 0 {contrib/libio => libio}/tests/putbackdog.cc | 0 {contrib/libio => libio}/tests/tFile.cc | 0 {contrib/libio => libio}/tests/tFile.exp | 0 {contrib/libio => libio}/tests/tFile.inp | 0 {contrib/libio => libio}/tests/tfformat.c | 0 {contrib/libio => libio}/tests/tiformat.c | 0 {contrib/libio => libio}/tests/tiomanip.cc | 0 {contrib/libio => libio}/tests/tiomanip.exp | 0 {contrib/libio => libio}/tests/tiomisc.cc | 0 {contrib/libio => libio}/tests/tiomisc.exp | 0 {contrib/libio => libio}/tests/tstdiomisc.c | 0 {contrib/libio => libio}/tests/tstdiomisc.exp | 0 {contrib/libio => libio}/testsuite/ChangeLog | 0 {contrib/libio => libio}/testsuite/Makefile.in | 0 {contrib/libio => libio}/testsuite/config/default.exp | 0 {contrib/libio => libio}/testsuite/configure.in | 0 {contrib/libio => libio}/testsuite/lib/libio.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/hounddog.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/putbackdog.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/tFile.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/tfformat.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/tiformat.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/tiomanip.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/tiomisc.exp | 0 {contrib/libio => libio}/testsuite/libio.tests/tstdiomisc.exp | 0 {contrib/gcclibs/libmudflap => libmudflap}/ChangeLog | 0 {contrib/gcclibs/libmudflap => libmudflap}/Makefile.am | 0 {contrib/gcclibs/libmudflap => libmudflap}/Makefile.in | 0 {contrib/gcclibs/libmudflap => libmudflap}/acinclude.m4 | 0 {contrib/gcclibs/libmudflap => libmudflap}/aclocal.m4 | 0 {contrib/gcclibs/libmudflap => libmudflap}/config.h.in | 0 {contrib/gcclibs/libmudflap => libmudflap}/configure | 0 {contrib/gcclibs/libmudflap => libmudflap}/configure.ac | 0 {contrib/gcclibs/libmudflap => libmudflap}/libtool-version | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-heuristics.c | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-hooks1.c | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-hooks2.c | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-hooks3.c | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-impl.h | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-runtime.c | 0 {contrib/gcclibs/libmudflap => libmudflap}/mf-runtime.h | 0 {contrib/libobjc => libobjc}/ChangeLog | 0 {contrib/libobjc => libobjc}/Makefile.in | 0 {contrib/libobjc => libobjc}/NXConstStr.m | 0 {contrib/libobjc => libobjc}/Object.m | 0 {contrib/libobjc => libobjc}/Protocol.m | 0 {contrib/libobjc => libobjc}/README | 0 {contrib/libobjc => libobjc}/README.threads | 0 {contrib/libobjc => libobjc}/THREADS | 0 {contrib/libobjc => libobjc}/THREADS.MACH | 0 {contrib/libobjc => libobjc}/acinclude.m4 | 0 {contrib/libobjc => libobjc}/aclocal.m4 | 0 {contrib/libobjc => libobjc}/archive.c | 0 {contrib/libobjc => libobjc}/class.c | 0 {contrib/libobjc => libobjc}/config.h.in | 0 {contrib/libobjc => libobjc}/configure | 0 {contrib/libobjc => libobjc}/configure.ac | 0 {contrib/libobjc => libobjc}/encoding.c | 0 {contrib/libobjc => libobjc}/exception.c | 0 {contrib/libobjc => libobjc}/gc.c | 0 {contrib/libobjc => libobjc}/hash.c | 0 {contrib/libobjc => libobjc}/init.c | 0 {contrib/libobjc => libobjc}/libobjc.def | 0 {contrib/libobjc => libobjc}/libobjc_entry.c | 0 {contrib/libobjc => libobjc}/linking.m | 0 {contrib/libobjc => libobjc}/makefile.dos | 0 {contrib/libobjc => libobjc}/misc.c | 0 {contrib/libobjc => libobjc}/nil_method.c | 0 {contrib/libobjc => libobjc}/objc/NXConstStr.h | 0 {contrib/libobjc => libobjc}/objc/Object.h | 0 {contrib/libobjc => libobjc}/objc/Protocol.h | 0 {contrib/libobjc => libobjc}/objc/encoding.h | 0 {contrib/libobjc => libobjc}/objc/hash.h | 0 {contrib/libobjc => libobjc}/objc/objc-api.h | 0 {contrib/libobjc => libobjc}/objc/objc-decls.h | 0 {contrib/libobjc => libobjc}/objc/objc-list.h | 0 {contrib/libobjc => libobjc}/objc/objc.h | 0 {contrib/libobjc => libobjc}/objc/runtime.h | 0 {contrib/libobjc => libobjc}/objc/sarray.h | 0 {contrib/libobjc => libobjc}/objc/thr.h | 0 {contrib/libobjc => libobjc}/objc/typedstream.h | 0 {contrib/libobjc => libobjc}/objects.c | 0 {contrib/libobjc => libobjc}/sarray.c | 0 {contrib/libobjc => libobjc}/selector.c | 0 {contrib/libobjc => libobjc}/sendmsg.c | 0 {contrib/libobjc => libobjc}/thr-dce.c | 0 {contrib/libobjc => libobjc}/thr-decosf1.c | 0 {contrib/libobjc => libobjc}/thr-irix.c | 0 {contrib/libobjc => libobjc}/thr-mach.c | 0 {contrib/libobjc => libobjc}/thr-objc.c | 0 {contrib/libobjc => libobjc}/thr-os2.c | 0 {contrib/libobjc => libobjc}/thr-posix.c | 0 {contrib/libobjc => libobjc}/thr-pthreads.c | 0 {contrib/libobjc => libobjc}/thr-rtems.c | 0 {contrib/libobjc => libobjc}/thr-single.c | 0 {contrib/libobjc => libobjc}/thr-solaris.c | 0 {contrib/libobjc => libobjc}/thr-vxworks.c | 0 {contrib/libobjc => libobjc}/thr-win32.c | 0 {contrib/libobjc => libobjc}/thr.c | 0 {contrib/gcclibs/libssp => libssp}/ChangeLog | 0 {contrib/gcclibs/libssp => libssp}/Makefile.am | 0 {contrib/gcclibs/libssp => libssp}/Makefile.in | 0 {contrib/gcclibs/libssp => libssp}/aclocal.m4 | 0 {contrib/gcclibs/libssp => libssp}/config.h.in | 0 {contrib/gcclibs/libssp => libssp}/configure | 0 {contrib/gcclibs/libssp => libssp}/configure.ac | 0 {contrib/gcclibs/libssp => libssp}/gets-chk.c | 0 {contrib/gcclibs/libssp => libssp}/libtool-version | 0 {contrib/gcclibs/libssp => libssp}/memcpy-chk.c | 0 {contrib/gcclibs/libssp => libssp}/memmove-chk.c | 0 {contrib/gcclibs/libssp => libssp}/mempcpy-chk.c | 0 {contrib/gcclibs/libssp => libssp}/memset-chk.c | 0 {contrib/gcclibs/libssp => libssp}/snprintf-chk.c | 0 {contrib/gcclibs/libssp => libssp}/sprintf-chk.c | 0 {contrib/gcclibs/libssp => libssp}/ssp-local.c | 0 {contrib/gcclibs/libssp => libssp}/ssp.c | 0 {contrib/gcclibs/libssp => libssp}/ssp.map | 0 {contrib/gcclibs/libssp => libssp}/ssp/ssp.h.in | 0 {contrib/gcclibs/libssp => libssp}/ssp/stdio.h | 0 {contrib/gcclibs/libssp => libssp}/ssp/string.h | 0 {contrib/gcclibs/libssp => libssp}/ssp/unistd.h | 0 {contrib/gcclibs/libssp => libssp}/stpcpy-chk.c | 0 {contrib/gcclibs/libssp => libssp}/strcat-chk.c | 0 {contrib/gcclibs/libssp => libssp}/strcpy-chk.c | 0 {contrib/gcclibs/libssp => libssp}/strncat-chk.c | 0 {contrib/gcclibs/libssp => libssp}/strncpy-chk.c | 0 {contrib/gcclibs/libssp => libssp}/vsnprintf-chk.c | 0 {contrib/gcclibs/libssp => libssp}/vsprintf-chk.c | 0 {contrib/libstdc++ => libstdc++}/ChangeLog | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-1998 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-1999 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2000 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2001 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2002 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2003 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2004 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2005 | 0 {contrib/libstdc++ => libstdc++}/ChangeLog-2006 | 0 {contrib/libstdc++ => libstdc++}/FREEBSD-upgrade | 0 {contrib/libstdc++ => libstdc++}/Makefile.am | 0 {contrib/libstdc++ => libstdc++}/Makefile.in | 0 {contrib/libstdc++ => libstdc++}/README | 0 {contrib/libstdc++ => libstdc++}/acinclude.m4 | 0 {contrib/libstdc++ => libstdc++}/aclocal.m4 | 0 {contrib/libstdc++ => libstdc++}/config.h.in | 0 {contrib/libstdc++ => libstdc++}/config/abi/compatibility.h | 0 .../config/abi/post/alpha-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/hppa-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/i386-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/i486-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/ia64-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/mips-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/powerpc-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt | 0 .../config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/s390-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/s390x-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/sparc-linux-gnu/baseline_symbols.txt | 0 .../config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt | 0 .../config/abi/post/x86_64-linux-gnu/baseline_symbols.txt | 0 .../config/abi/pre/gnu-versioned-namespace.ver | 0 {contrib/libstdc++ => libstdc++}/config/abi/pre/gnu.ver | 0 {contrib/libstdc++ => libstdc++}/config/abi/pre/none.ver | 0 .../config/allocator/bitmap_allocator_base.h | 0 .../config/allocator/malloc_allocator_base.h | 0 .../libstdc++ => libstdc++}/config/allocator/mt_allocator_base.h | 0 .../libstdc++ => libstdc++}/config/allocator/new_allocator_base.h | 0 .../config/allocator/pool_allocator_base.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/alpha/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/arm/cxxabi_tweaks.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/cris/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/cris/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/generic/atomic_word.h | 0 .../config/cpu/generic/atomicity_builtins/atomicity.h | 0 .../config/cpu/generic/atomicity_mutex/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/generic/cpu_defines.h | 0 .../libstdc++ => libstdc++}/config/cpu/generic/cxxabi_tweaks.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/hppa/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/i386/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/i486/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/ia64/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/m68k/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/mips/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/powerpc/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/powerpc/cpu_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/sh/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/sparc/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/cpu/sparc/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/io/basic_file_stdio.cc | 0 {contrib/libstdc++ => libstdc++}/config/io/basic_file_stdio.h | 0 {contrib/libstdc++ => libstdc++}/config/io/c_io_stdio.h | 0 .../libstdc++ => libstdc++}/config/locale/darwin/ctype_members.cc | 0 .../config/locale/generic/c++locale_internal.h | 0 .../libstdc++ => libstdc++}/config/locale/generic/c_locale.cc | 0 {contrib/libstdc++ => libstdc++}/config/locale/generic/c_locale.h | 0 .../config/locale/generic/codecvt_members.cc | 0 .../config/locale/generic/collate_members.cc | 0 .../config/locale/generic/ctype_members.cc | 0 .../config/locale/generic/messages_members.cc | 0 .../config/locale/generic/messages_members.h | 0 .../config/locale/generic/monetary_members.cc | 0 .../config/locale/generic/numeric_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/generic/time_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/generic/time_members.h | 0 .../config/locale/gnu/c++locale_internal.h | 0 {contrib/libstdc++ => libstdc++}/config/locale/gnu/c_locale.cc | 0 {contrib/libstdc++ => libstdc++}/config/locale/gnu/c_locale.h | 0 .../libstdc++ => libstdc++}/config/locale/gnu/codecvt_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/gnu/collate_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/gnu/ctype_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/gnu/messages_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/gnu/messages_members.h | 0 .../libstdc++ => libstdc++}/config/locale/gnu/monetary_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/gnu/numeric_members.cc | 0 .../libstdc++ => libstdc++}/config/locale/gnu/time_members.cc | 0 {contrib/libstdc++ => libstdc++}/config/locale/gnu/time_members.h | 0 .../config/locale/ieee_1003.1-2001/c_locale.cc | 0 .../config/locale/ieee_1003.1-2001/c_locale.h | 0 .../config/locale/ieee_1003.1-2001/messages_members.cc | 0 .../config/locale/ieee_1003.1-2001/messages_members.h | 0 {contrib/libstdc++ => libstdc++}/config/os/aix/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/os/aix/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/config/os/aix/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/aix/ctype_inline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/aix/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/aix/os_defines.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/darwin/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/darwin/ctype_inline.h | 0 .../config/os/bsd/darwin/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/darwin/os_defines.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/darwin/ppc-extra.ver | 0 .../libstdc++ => libstdc++}/config/os/bsd/freebsd/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/freebsd/ctype_inline.h | 0 .../config/os/bsd/freebsd/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/freebsd/os_defines.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/netbsd/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/netbsd/ctype_inline.h | 0 .../config/os/bsd/netbsd/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/bsd/netbsd/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/djgpp/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/djgpp/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/djgpp/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/djgpp/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/generic/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/generic/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/generic/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/generic/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/gnu-linux/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/gnu-linux/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/gnu-linux/ldbl-extra.ver | 0 {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/hpux/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/hpux/ctype_inline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/hpux/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/hpux/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/irix/atomic_word.h | 0 {contrib/libstdc++ => libstdc++}/config/os/irix/atomicity.h | 0 .../libstdc++ => libstdc++}/config/os/irix/irix5.2/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/irix/irix5.2/ctype_inline.h | 0 .../config/os/irix/irix5.2/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/irix/irix5.2/os_defines.h | 0 .../libstdc++ => libstdc++}/config/os/irix/irix6.5/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/irix/irix6.5/ctype_inline.h | 0 .../config/os/irix/irix6.5/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/irix/irix6.5/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/mingw32/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/mingw32/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/mingw32/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/mingw32/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/newlib/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/newlib/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/newlib/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/newlib/os_defines.h | 0 .../libstdc++ => libstdc++}/config/os/qnx/qnx6.1/ctype_base.h | 0 .../libstdc++ => libstdc++}/config/os/qnx/qnx6.1/ctype_inline.h | 0 .../config/os/qnx/qnx6.1/ctype_noninline.h | 0 .../libstdc++ => libstdc++}/config/os/qnx/qnx6.1/os_defines.h | 0 .../config/os/solaris/solaris2.5/ctype_base.h | 0 .../config/os/solaris/solaris2.5/ctype_inline.h | 0 .../config/os/solaris/solaris2.5/ctype_noninline.h | 0 .../config/os/solaris/solaris2.5/os_defines.h | 0 .../config/os/solaris/solaris2.6/ctype_base.h | 0 .../config/os/solaris/solaris2.6/ctype_inline.h | 0 .../config/os/solaris/solaris2.6/ctype_noninline.h | 0 .../config/os/solaris/solaris2.6/os_defines.h | 0 .../config/os/solaris/solaris2.7/ctype_base.h | 0 .../config/os/solaris/solaris2.7/ctype_inline.h | 0 .../config/os/solaris/solaris2.7/ctype_noninline.h | 0 .../config/os/solaris/solaris2.7/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/tpf/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/tpf/ctype_inline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/tpf/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/tpf/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/uclibc/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/uclibc/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/uclibc/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/uclibc/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/vxworks/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/vxworks/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/vxworks/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/vxworks/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/config/os/windiss/ctype_base.h | 0 {contrib/libstdc++ => libstdc++}/config/os/windiss/ctype_inline.h | 0 .../libstdc++ => libstdc++}/config/os/windiss/ctype_noninline.h | 0 {contrib/libstdc++ => libstdc++}/config/os/windiss/os_defines.h | 0 {contrib/libstdc++ => libstdc++}/configure | 0 {contrib/libstdc++ => libstdc++}/configure.ac | 0 {contrib/libstdc++ => libstdc++}/configure.host | 0 {contrib/libstdc++ => libstdc++}/crossconfig.m4 | 0 {contrib/libstdc++ => libstdc++}/fragment.am | 0 {contrib/libstdc++ => libstdc++}/include/Makefile.am | 0 {contrib/libstdc++ => libstdc++}/include/Makefile.in | 0 {contrib/libstdc++ => libstdc++}/include/backward/algo.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/algobase.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/alloc.h | 0 .../libstdc++ => libstdc++}/include/backward/backward_warning.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/bvector.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/complex.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/defalloc.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/deque.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/fstream.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/function.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/hash_map.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/hash_set.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/hashtable.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/heap.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/iomanip.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/iostream.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/istream.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/iterator.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/list.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/map.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/multimap.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/multiset.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/new.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/ostream.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/pair.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/queue.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/rope.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/set.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/slist.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/stack.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/stream.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/streambuf.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/strstream | 0 {contrib/libstdc++ => libstdc++}/include/backward/tempbuf.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/tree.h | 0 {contrib/libstdc++ => libstdc++}/include/backward/vector.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/basic_ios.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/basic_ios.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/basic_string.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/basic_string.tcc | 0 .../libstdc++ => libstdc++}/include/bits/boost_concept_check.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/c++config | 0 {contrib/libstdc++ => libstdc++}/include/bits/char_traits.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/codecvt.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/concept_check.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/cpp_type_traits.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/deque.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/fstream.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/functexcept.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/gslice.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/gslice_array.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/indirect_array.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/ios_base.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/istream.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/list.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/locale_classes.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/locale_facets.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/locale_facets.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/localefwd.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/mask_array.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/ostream.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/ostream_insert.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/postypes.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/slice_array.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/sstream.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_algo.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_algobase.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_bvector.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_construct.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_deque.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_function.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_heap.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_iterator.h | 0 .../include/bits/stl_iterator_base_funcs.h | 0 .../include/bits/stl_iterator_base_types.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_list.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_map.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_multimap.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_multiset.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_numeric.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_pair.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_queue.h | 0 .../libstdc++ => libstdc++}/include/bits/stl_raw_storage_iter.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_relops.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_set.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_stack.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_tempbuf.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_tree.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_uninitialized.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stl_vector.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stream_iterator.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/streambuf.tcc | 0 .../libstdc++ => libstdc++}/include/bits/streambuf_iterator.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/stringfwd.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/valarray_after.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/valarray_array.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/valarray_array.tcc | 0 {contrib/libstdc++ => libstdc++}/include/bits/valarray_before.h | 0 {contrib/libstdc++ => libstdc++}/include/bits/vector.tcc | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cassert.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cctype.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cerrno.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cfloat.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_ciso646.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_climits.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_clocale.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cmath.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_csetjmp.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_csignal.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cstdarg.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cstddef.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cstdio.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cstdlib.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cstring.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_ctime.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cwchar.h | 0 {contrib/libstdc++ => libstdc++}/include/c/std_cwctype.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/assert.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/ctype.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/errno.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/float.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/iso646.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/limits.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/locale.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/math.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/setjmp.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/signal.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/stdarg.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/stddef.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/stdio.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/stdlib.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/string.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/time.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/wchar.h | 0 {contrib/libstdc++ => libstdc++}/include/c_compatibility/wctype.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/cmath.tcc | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cassert.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cctype.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cerrno.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cfloat.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_ciso646.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_climits.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_clocale.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cmath.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_csetjmp.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_csignal.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cstdarg.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cstddef.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cstdio.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cstdlib.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cstring.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_ctime.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cwchar.h | 0 {contrib/libstdc++ => libstdc++}/include/c_std/std_cwctype.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/bitset | 0 {contrib/libstdc++ => libstdc++}/include/debug/debug.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/deque | 0 {contrib/libstdc++ => libstdc++}/include/debug/formatter.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/functions.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/hash_map | 0 {contrib/libstdc++ => libstdc++}/include/debug/hash_map.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/hash_multimap.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/hash_multiset.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/hash_set | 0 {contrib/libstdc++ => libstdc++}/include/debug/hash_set.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/list | 0 {contrib/libstdc++ => libstdc++}/include/debug/macros.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/map | 0 {contrib/libstdc++ => libstdc++}/include/debug/map.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/multimap.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/multiset.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/safe_base.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/safe_iterator.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/safe_iterator.tcc | 0 {contrib/libstdc++ => libstdc++}/include/debug/safe_sequence.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/set | 0 {contrib/libstdc++ => libstdc++}/include/debug/set.h | 0 {contrib/libstdc++ => libstdc++}/include/debug/string | 0 {contrib/libstdc++ => libstdc++}/include/debug/vector | 0 {contrib/libstdc++ => libstdc++}/include/ext/algorithm | 0 {contrib/libstdc++ => libstdc++}/include/ext/array_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/atomicity.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/bitmap_allocator.h | 0 .../libstdc++ => libstdc++}/include/ext/codecvt_specializations.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/concurrence.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/debug_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/functional | 0 {contrib/libstdc++ => libstdc++}/include/ext/hash_fun.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/hash_map | 0 {contrib/libstdc++ => libstdc++}/include/ext/hash_set | 0 {contrib/libstdc++ => libstdc++}/include/ext/hashtable.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/iterator | 0 {contrib/libstdc++ => libstdc++}/include/ext/malloc_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/memory | 0 {contrib/libstdc++ => libstdc++}/include/ext/mt_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/new_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/numeric | 0 {contrib/libstdc++ => libstdc++}/include/ext/numeric_traits.h | 0 .../libstdc++ => libstdc++}/include/ext/pb_ds/assoc_container.hpp | 0 .../ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp | 0 .../ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp | 0 .../include/ext/pb_ds/detail/basic_tree_policy/traits.hpp | 0 .../include/ext/pb_ds/detail/basic_types.hpp | 0 .../ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp | 0 .../ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp | 0 .../pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp | 0 .../detail/bin_search_tree_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp | 0 .../ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp | 0 .../ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp | 0 .../ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/bin_search_tree_/traits.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp | 0 .../ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp | 0 .../pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp | 0 .../ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp | 0 .../detail/binomial_heap_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp | 0 .../ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp | 0 .../binomial_heap_base_/constructors_destructor_fn_imps.hpp | 0 .../ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp | 0 .../ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp | 0 .../ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp | 0 .../ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp | 0 .../detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp | 0 .../detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp | 0 .../constructor_destructor_no_store_hash_fn_imps.hpp | 0 .../constructor_destructor_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp | 0 .../detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp | 0 .../ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp | 0 .../detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp | 0 .../pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp | 0 .../ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp | 0 .../detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp | 0 .../ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp | 0 .../ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp | 0 .../ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp | 0 .../detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp | 0 .../ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp | 0 .../include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/cond_dealtor.hpp | 0 .../include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/container_base_dispatch.hpp | 0 .../include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp | 0 .../include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp | 0 .../detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp | 0 .../constructor_destructor_no_store_hash_fn_imps.hpp | 0 .../constructor_destructor_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp | 0 .../detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp | 0 .../detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp | 0 .../detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp | 0 .../include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp | 0 .../ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp | 0 .../detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp | 0 .../ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp | 0 .../ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp | 0 .../ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp | 0 .../detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp | 0 .../pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp | 0 .../ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp | 0 .../include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp | 0 .../ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp | 0 .../ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp | 0 .../include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp | 0 .../detail/left_child_next_sibling_heap_/const_point_iterator.hpp | 0 .../constructors_destructor_fn_imps.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp | 0 .../detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp | 0 .../left_child_next_sibling_heap_.hpp | 0 .../ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp | 0 .../left_child_next_sibling_heap_/policy_access_fn_imps.hpp | 0 .../pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp | 0 .../detail/list_update_map_/constructor_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp | 0 .../ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp | 0 .../ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp | 0 .../include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp | 0 .../ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp | 0 .../ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp | 0 .../ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp | 0 .../ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp | 0 .../include/ext/pb_ds/detail/map_debug_base.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp | 0 .../pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp | 0 .../ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/ov_tree_map_/traits.hpp | 0 .../detail/pairing_heap_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp | 0 .../include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp | 0 .../ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp | 0 .../pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/head.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/internal_node.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/leaf.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/node_base.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/traits.hpp | 0 .../include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp | 0 .../pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/node.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rb_tree_map_/traits.hpp | 0 .../detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp | 0 .../ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp | 0 .../ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp | 0 .../cc_hash_max_collision_check_resize_trigger_imp.hpp | 0 .../detail/resize_policy/hash_exponential_size_policy_imp.hpp | 0 .../detail/resize_policy/hash_load_check_resize_trigger_imp.hpp | 0 .../resize_policy/hash_load_check_resize_trigger_size_base.hpp | 0 .../ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp | 0 .../detail/resize_policy/hash_standard_resize_policy_imp.hpp | 0 .../ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp | 0 .../ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp | 0 .../include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp | 0 .../pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/node.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/splay_tree_/traits.hpp | 0 .../include/ext/pb_ds/detail/standard_policies.hpp | 0 .../pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp | 0 .../include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp | 0 .../ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp | 0 .../include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp | 0 .../include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp | 0 .../ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp | 0 .../include/ext/pb_ds/detail/tree_trace_base.hpp | 0 .../ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp | 0 .../include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp | 0 .../include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp | 0 .../pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp | 0 .../ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp | 0 .../ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp | 0 .../pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp | 0 .../include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp | 0 .../include/ext/pb_ds/detail/type_utils.hpp | 0 .../include/ext/pb_ds/detail/types_traits.hpp | 0 .../ext/pb_ds/detail/unordered_iterator/const_iterator.hpp | 0 .../ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp | 0 .../include/ext/pb_ds/detail/unordered_iterator/iterator.hpp | 0 .../ext/pb_ds/detail/unordered_iterator/point_iterator.hpp | 0 {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/exception.hpp | 0 .../libstdc++ => libstdc++}/include/ext/pb_ds/hash_policy.hpp | 0 .../include/ext/pb_ds/list_update_policy.hpp | 0 .../libstdc++ => libstdc++}/include/ext/pb_ds/priority_queue.hpp | 0 .../libstdc++ => libstdc++}/include/ext/pb_ds/tag_and_trait.hpp | 0 .../libstdc++ => libstdc++}/include/ext/pb_ds/tree_policy.hpp | 0 .../libstdc++ => libstdc++}/include/ext/pb_ds/trie_policy.hpp | 0 {contrib/libstdc++ => libstdc++}/include/ext/pod_char_traits.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/pool_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/rb_tree | 0 {contrib/libstdc++ => libstdc++}/include/ext/rc_string_base.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/rope | 0 {contrib/libstdc++ => libstdc++}/include/ext/ropeimpl.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/slist | 0 {contrib/libstdc++ => libstdc++}/include/ext/sso_string_base.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/stdio_filebuf.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/stdio_sync_filebuf.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/throw_allocator.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/type_traits.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/typelist.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/vstring.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/vstring.tcc | 0 {contrib/libstdc++ => libstdc++}/include/ext/vstring_fwd.h | 0 {contrib/libstdc++ => libstdc++}/include/ext/vstring_util.h | 0 {contrib/libstdc++ => libstdc++}/include/precompiled/extc++.h | 0 {contrib/libstdc++ => libstdc++}/include/precompiled/stdc++.h | 0 {contrib/libstdc++ => libstdc++}/include/precompiled/stdtr1c++.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_algorithm.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_bitset.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_complex.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_deque.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_fstream.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_functional.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_iomanip.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_ios.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_iosfwd.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_iostream.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_istream.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_iterator.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_limits.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_list.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_locale.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_map.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_memory.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_numeric.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_ostream.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_queue.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_set.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_sstream.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_stack.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_stdexcept.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_streambuf.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_string.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_utility.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_valarray.h | 0 {contrib/libstdc++ => libstdc++}/include/std/std_vector.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/array | 0 {contrib/libstdc++ => libstdc++}/include/tr1/bind_iterate.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/bind_repeat.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/boost_shared_ptr.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cctype | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cfenv | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cfloat | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cinttypes | 0 {contrib/libstdc++ => libstdc++}/include/tr1/climits | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cmath | 0 {contrib/libstdc++ => libstdc++}/include/tr1/common.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/complex | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cstdarg | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cstdbool | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cstdint | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cstdio | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cstdlib | 0 {contrib/libstdc++ => libstdc++}/include/tr1/ctgmath | 0 {contrib/libstdc++ => libstdc++}/include/tr1/ctime | 0 {contrib/libstdc++ => libstdc++}/include/tr1/ctype.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cwchar | 0 {contrib/libstdc++ => libstdc++}/include/tr1/cwctype | 0 {contrib/libstdc++ => libstdc++}/include/tr1/fenv.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/float.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/functional | 0 {contrib/libstdc++ => libstdc++}/include/tr1/functional_hash.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/functional_iterate.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/hashtable | 0 {contrib/libstdc++ => libstdc++}/include/tr1/hashtable_policy.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/inttypes.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/limits.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/math.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/memory | 0 {contrib/libstdc++ => libstdc++}/include/tr1/mu_iterate.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/random | 0 {contrib/libstdc++ => libstdc++}/include/tr1/random.tcc | 0 {contrib/libstdc++ => libstdc++}/include/tr1/ref_fwd.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/ref_wrap_iterate.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/repeat.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/stdarg.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/stdbool.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/stdint.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/stdio.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/stdlib.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/tgmath.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/tuple | 0 {contrib/libstdc++ => libstdc++}/include/tr1/tuple_defs.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/tuple_iterate.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/type_traits | 0 {contrib/libstdc++ => libstdc++}/include/tr1/type_traits_fwd.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/unordered_map | 0 {contrib/libstdc++ => libstdc++}/include/tr1/unordered_set | 0 {contrib/libstdc++ => libstdc++}/include/tr1/utility | 0 {contrib/libstdc++ => libstdc++}/include/tr1/wchar.h | 0 {contrib/libstdc++ => libstdc++}/include/tr1/wctype.h | 0 {contrib/libstdc++ => libstdc++}/libmath/Makefile.am | 0 {contrib/libstdc++ => libstdc++}/libmath/Makefile.in | 0 {contrib/libstdc++ => libstdc++}/libmath/copysignf.c | 0 {contrib/libstdc++ => libstdc++}/libmath/mathconf.h | 0 {contrib/libstdc++ => libstdc++}/libmath/signbit.c | 0 {contrib/libstdc++ => libstdc++}/libmath/signbitf.c | 0 {contrib/libstdc++ => libstdc++}/libmath/signbitl.c | 0 {contrib/libstdc++ => libstdc++}/libmath/stubs.c | 0 {contrib/libstdc++ => libstdc++}/libsupc++/Makefile.am | 0 {contrib/libstdc++ => libstdc++}/libsupc++/Makefile.in | 0 {contrib/libstdc++ => libstdc++}/libsupc++/cxxabi.h | 0 {contrib/libstdc++ => libstdc++}/libsupc++/del_op.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/del_opnt.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/del_opv.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/del_opvnt.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_alloc.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_arm.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_aux_runtime.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_call.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_catch.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_exception.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_globals.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_personality.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_term_handler.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_terminate.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_throw.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_type.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/eh_unex_handler.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/exception | 0 {contrib/libstdc++ => libstdc++}/libsupc++/exception_defines.h | 0 {contrib/libstdc++ => libstdc++}/libsupc++/guard.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/new | 0 {contrib/libstdc++ => libstdc++}/libsupc++/new_handler.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/new_op.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/new_opnt.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/new_opv.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/new_opvnt.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/pure.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/tinfo.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/tinfo.h | 0 {contrib/libstdc++ => libstdc++}/libsupc++/tinfo2.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/typeinfo | 0 {contrib/libstdc++ => libstdc++}/libsupc++/unwind-cxx.h | 0 {contrib/libstdc++ => libstdc++}/libsupc++/vec.cc | 0 {contrib/libstdc++ => libstdc++}/libsupc++/vterminate.cc | 0 {contrib/libstdc++ => libstdc++}/linkage.m4 | 0 {contrib/libstdc++ => libstdc++}/scripts/check_performance | 0 {contrib/libstdc++ => libstdc++}/scripts/create_testsuite_files | 0 {contrib/libstdc++ => libstdc++}/scripts/extract_symvers | 0 {contrib/libstdc++ => libstdc++}/scripts/gen_bind_includers.pl | 0 {contrib/libstdc++ => libstdc++}/scripts/gen_includers.pl | 0 {contrib/libstdc++ => libstdc++}/scripts/gen_includers2.pl | 0 {contrib/libstdc++ => libstdc++}/scripts/make_exports.pl | 0 {contrib/libstdc++ => libstdc++}/scripts/make_graph.py | 0 {contrib/libstdc++ => libstdc++}/scripts/make_graphs.py | 0 {contrib/libstdc++ => libstdc++}/scripts/testsuite_flags.in | 0 {contrib/libstdc++ => libstdc++}/src/Makefile.am | 0 {contrib/libstdc++ => libstdc++}/src/Makefile.in | 0 {contrib/libstdc++ => libstdc++}/src/allocator-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/bitmap_allocator.cc | 0 {contrib/libstdc++ => libstdc++}/src/codecvt.cc | 0 {contrib/libstdc++ => libstdc++}/src/compatibility-ldbl.cc | 0 {contrib/libstdc++ => libstdc++}/src/compatibility.cc | 0 {contrib/libstdc++ => libstdc++}/src/complex_io.cc | 0 {contrib/libstdc++ => libstdc++}/src/concept-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/ctype.cc | 0 {contrib/libstdc++ => libstdc++}/src/debug.cc | 0 {contrib/libstdc++ => libstdc++}/src/debug_list.cc | 0 {contrib/libstdc++ => libstdc++}/src/ext-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/fstream-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/functexcept.cc | 0 {contrib/libstdc++ => libstdc++}/src/globals_io.cc | 0 {contrib/libstdc++ => libstdc++}/src/ios-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/ios.cc | 0 {contrib/libstdc++ => libstdc++}/src/ios_failure.cc | 0 {contrib/libstdc++ => libstdc++}/src/ios_init.cc | 0 {contrib/libstdc++ => libstdc++}/src/ios_locale.cc | 0 {contrib/libstdc++ => libstdc++}/src/iostream-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/istream-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/istream.cc | 0 {contrib/libstdc++ => libstdc++}/src/limits.cc | 0 {contrib/libstdc++ => libstdc++}/src/list.cc | 0 {contrib/libstdc++ => libstdc++}/src/locale-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/locale.cc | 0 {contrib/libstdc++ => libstdc++}/src/locale_facets.cc | 0 {contrib/libstdc++ => libstdc++}/src/locale_init.cc | 0 {contrib/libstdc++ => libstdc++}/src/localename.cc | 0 {contrib/libstdc++ => libstdc++}/src/misc-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/mt_allocator.cc | 0 {contrib/libstdc++ => libstdc++}/src/ostream-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/pool_allocator.cc | 0 {contrib/libstdc++ => libstdc++}/src/sstream-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/stdexcept.cc | 0 {contrib/libstdc++ => libstdc++}/src/streambuf-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/streambuf.cc | 0 {contrib/libstdc++ => libstdc++}/src/string-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/strstream.cc | 0 {contrib/libstdc++ => libstdc++}/src/tree.cc | 0 {contrib/libstdc++ => libstdc++}/src/valarray-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/wlocale-inst.cc | 0 {contrib/libstdc++ => libstdc++}/src/wstring-inst.cc | 0 3662 files changed, 0 insertions(+), 0 deletions(-) rename {contrib/gcc => gcc}/BASE-VER (100%) rename {contrib/gcc => gcc}/COPYING (100%) rename {contrib/gcc => gcc}/COPYING.LIB (100%) rename {contrib/gcc => gcc}/ChangeLog (100%) rename {contrib/gcc => gcc}/ChangeLog-1997 (100%) rename {contrib/gcc => gcc}/ChangeLog-1998 (100%) rename {contrib/gcc => gcc}/ChangeLog-1999 (100%) rename {contrib/gcc => gcc}/ChangeLog-2000 (100%) rename {contrib/gcc => gcc}/ChangeLog-2001 (100%) rename {contrib/gcc => gcc}/ChangeLog-2002 (100%) rename {contrib/gcc => gcc}/ChangeLog-2003 (100%) rename {contrib/gcc => gcc}/ChangeLog-2004 (100%) rename {contrib/gcc => gcc}/ChangeLog-2005 (100%) rename {contrib/gcc => gcc}/ChangeLog-2006 (100%) rename {contrib/gcc => gcc}/ChangeLog.lib (100%) rename {contrib/gcc => gcc}/ChangeLog.tree-ssa (100%) rename {contrib/gcc => gcc}/DATESTAMP (100%) rename {contrib/gcc => gcc}/DEV-PHASE (100%) rename {contrib/gcc => gcc}/FSFChangeLog (100%) rename {contrib/gcc => gcc}/FSFChangeLog.10 (100%) rename {contrib/gcc => gcc}/FSFChangeLog.11 (100%) rename {contrib/gcc => gcc}/LANGUAGES (100%) rename {contrib/gcc => gcc}/Makefile.in (100%) rename {contrib/gcc => gcc}/ONEWS (100%) rename {contrib/gcc => gcc}/README.Portability (100%) rename {contrib/gcc => gcc}/SERVICE (100%) rename {contrib/gcc => gcc}/acinclude.m4 (100%) rename {contrib/gcc => gcc}/aclocal.m4 (100%) rename {contrib/gcc => gcc}/addresses.h (100%) rename {contrib/gcc => gcc}/alias.c (100%) rename {contrib/gcc => gcc}/alias.h (100%) rename {contrib/gcc => gcc}/alloc-pool.c (100%) rename {contrib/gcc => gcc}/alloc-pool.h (100%) rename {contrib/gcc => gcc}/attribs.c (100%) rename {contrib/gcc => gcc}/basic-block.h (100%) rename {contrib/gcc => gcc}/bb-reorder.c (100%) rename {contrib/gcc => gcc}/bitmap.c (100%) rename {contrib/gcc => gcc}/bitmap.h (100%) rename {contrib/gcc => gcc}/bt-load.c (100%) rename {contrib/gcc => gcc}/builtin-attrs.def (100%) rename {contrib/gcc => gcc}/builtin-types.def (100%) rename {contrib/gcc => gcc}/builtins.c (100%) rename {contrib/gcc => gcc}/builtins.def (100%) rename {contrib/gcc => gcc}/c-aux-info.c (100%) rename {contrib/gcc => gcc}/c-common.c (100%) rename {contrib/gcc => gcc}/c-common.def (100%) rename {contrib/gcc => gcc}/c-common.h (100%) rename {contrib/gcc => gcc}/c-config-lang.in (100%) rename {contrib/gcc => gcc}/c-convert.c (100%) rename {contrib/gcc => gcc}/c-cppbuiltin.c (100%) rename {contrib/gcc => gcc}/c-decl.c (100%) rename {contrib/gcc => gcc}/c-dump.c (100%) rename {contrib/gcc => gcc}/c-errors.c (100%) rename {contrib/gcc => gcc}/c-format.c (100%) rename {contrib/gcc => gcc}/c-format.h (100%) rename {contrib/gcc => gcc}/c-gimplify.c (100%) rename {contrib/gcc => gcc}/c-incpath.c (100%) rename {contrib/gcc => gcc}/c-incpath.h (100%) rename {contrib/gcc => gcc}/c-lang.c (100%) rename {contrib/gcc => gcc}/c-lex.c (100%) rename {contrib/gcc => gcc}/c-objc-common.c (100%) rename {contrib/gcc => gcc}/c-objc-common.h (100%) rename {contrib/gcc => gcc}/c-omp.c (100%) rename {contrib/gcc => gcc}/c-opts.c (100%) rename {contrib/gcc => gcc}/c-parser.c (100%) rename {contrib/gcc => gcc}/c-pch.c (100%) rename {contrib/gcc => gcc}/c-ppoutput.c (100%) rename {contrib/gcc => gcc}/c-pragma.c (100%) rename {contrib/gcc => gcc}/c-pragma.h (100%) rename {contrib/gcc => gcc}/c-pretty-print.c (100%) rename {contrib/gcc => gcc}/c-pretty-print.h (100%) rename {contrib/gcc => gcc}/c-semantics.c (100%) rename {contrib/gcc => gcc}/c-tree.h (100%) rename {contrib/gcc => gcc}/c-typeck.c (100%) rename {contrib/gcc => gcc}/c.opt (100%) rename {contrib/gcc => gcc}/caller-save.c (100%) rename {contrib/gcc => gcc}/calls.c (100%) rename {contrib/gcc => gcc}/cfg.c (100%) rename {contrib/gcc => gcc}/cfganal.c (100%) rename {contrib/gcc => gcc}/cfgbuild.c (100%) rename {contrib/gcc => gcc}/cfgcleanup.c (100%) rename {contrib/gcc => gcc}/cfgexpand.c (100%) rename {contrib/gcc => gcc}/cfghooks.c (100%) rename {contrib/gcc => gcc}/cfghooks.h (100%) rename {contrib/gcc => gcc}/cfglayout.c (100%) rename {contrib/gcc => gcc}/cfglayout.h (100%) rename {contrib/gcc => gcc}/cfgloop.c (100%) rename {contrib/gcc => gcc}/cfgloop.h (100%) rename {contrib/gcc => gcc}/cfgloopanal.c (100%) rename {contrib/gcc => gcc}/cfgloopmanip.c (100%) rename {contrib/gcc => gcc}/cfgrtl.c (100%) rename {contrib/gcc => gcc}/cgraph.c (100%) rename {contrib/gcc => gcc}/cgraph.h (100%) rename {contrib/gcc => gcc}/cgraphunit.c (100%) rename {contrib/gcc => gcc}/collect2.c (100%) rename {contrib/gcc => gcc}/collect2.h (100%) rename {contrib/gcc => gcc}/combine.c (100%) rename {contrib/gcc => gcc}/common.opt (100%) rename {contrib/gcc => gcc}/conditions.h (100%) rename {contrib/gcc => gcc}/config.build (100%) rename {contrib/gcc => gcc}/config.gcc (100%) rename {contrib/gcc => gcc}/config.host (100%) rename {contrib/gcc => gcc}/config.in (100%) rename {contrib/gcc => gcc}/config/README (100%) rename {contrib/gcc => gcc}/config/arm/README-interworking (100%) rename {contrib/gcc => gcc}/config/arm/aof.h (100%) rename {contrib/gcc => gcc}/config/arm/aout.h (100%) rename {contrib/gcc => gcc}/config/arm/arm-cores.def (100%) rename {contrib/gcc => gcc}/config/arm/arm-generic.md (100%) rename {contrib/gcc => gcc}/config/arm/arm-modes.def (100%) rename {contrib/gcc => gcc}/config/arm/arm-protos.h (100%) rename {contrib/gcc => gcc}/config/arm/arm-tune.md (100%) rename {contrib/gcc => gcc}/config/arm/arm.c (100%) rename {contrib/gcc => gcc}/config/arm/arm.h (100%) rename {contrib/gcc => gcc}/config/arm/arm.md (100%) rename {contrib/gcc => gcc}/config/arm/arm.opt (100%) rename {contrib/gcc => gcc}/config/arm/arm1020e.md (100%) rename {contrib/gcc => gcc}/config/arm/arm1026ejs.md (100%) rename {contrib/gcc => gcc}/config/arm/arm1136jfs.md (100%) rename {contrib/gcc => gcc}/config/arm/arm926ejs.md (100%) rename {contrib/gcc => gcc}/config/arm/bpabi.S (100%) rename {contrib/gcc => gcc}/config/arm/bpabi.c (100%) rename {contrib/gcc => gcc}/config/arm/bpabi.h (100%) rename {contrib/gcc => gcc}/config/arm/cirrus.md (100%) rename {contrib/gcc => gcc}/config/arm/coff.h (100%) rename {contrib/gcc => gcc}/config/arm/constraints.md (100%) rename {contrib/gcc => gcc}/config/arm/crti.asm (100%) rename {contrib/gcc => gcc}/config/arm/crtn.asm (100%) rename {contrib/gcc => gcc}/config/arm/ecos-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/elf.h (100%) rename {contrib/gcc => gcc}/config/arm/fpa.md (100%) rename {contrib/gcc => gcc}/config/arm/freebsd.h (100%) rename {contrib/gcc => gcc}/config/arm/gentune.sh (100%) rename {contrib/gcc => gcc}/config/arm/ieee754-df.S (100%) rename {contrib/gcc => gcc}/config/arm/ieee754-sf.S (100%) rename {contrib/gcc => gcc}/config/arm/iwmmxt.md (100%) rename {contrib/gcc => gcc}/config/arm/kaos-arm.h (100%) rename {contrib/gcc => gcc}/config/arm/kaos-strongarm.h (100%) rename {contrib/gcc => gcc}/config/arm/lib1funcs.asm (100%) rename {contrib/gcc => gcc}/config/arm/libgcc-bpabi.ver (100%) rename {contrib/gcc => gcc}/config/arm/libunwind.S (100%) rename {contrib/gcc => gcc}/config/arm/linux-eabi.h (100%) rename {contrib/gcc => gcc}/config/arm/linux-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/linux-gas.h (100%) rename {contrib/gcc => gcc}/config/arm/mmintrin.h (100%) rename {contrib/gcc => gcc}/config/arm/netbsd-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/netbsd.h (100%) rename {contrib/gcc => gcc}/config/arm/pe.c (100%) rename {contrib/gcc => gcc}/config/arm/pe.h (100%) rename {contrib/gcc => gcc}/config/arm/pe.opt (100%) rename {contrib/gcc => gcc}/config/arm/pr-support.c (100%) rename {contrib/gcc => gcc}/config/arm/predicates.md (100%) rename {contrib/gcc => gcc}/config/arm/rtems-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/semi.h (100%) rename {contrib/gcc => gcc}/config/arm/semiaof.h (100%) rename {contrib/gcc => gcc}/config/arm/strongarm-coff.h (100%) rename {contrib/gcc => gcc}/config/arm/strongarm-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/strongarm-pe.h (100%) rename {contrib/gcc => gcc}/config/arm/symbian.h (100%) rename {contrib/gcc => gcc}/config/arm/t-arm (100%) rename {contrib/gcc => gcc}/config/arm/t-arm-coff (100%) rename {contrib/gcc => gcc}/config/arm/t-arm-elf (100%) rename {contrib/gcc => gcc}/config/arm/t-bpabi (100%) rename {contrib/gcc => gcc}/config/arm/t-linux (100%) rename {contrib/gcc => gcc}/config/arm/t-linux-eabi (100%) rename {contrib/gcc => gcc}/config/arm/t-netbsd (100%) rename {contrib/gcc => gcc}/config/arm/t-pe (100%) rename {contrib/gcc => gcc}/config/arm/t-rtems (100%) rename {contrib/gcc => gcc}/config/arm/t-semi (100%) rename {contrib/gcc => gcc}/config/arm/t-strongarm-elf (100%) rename {contrib/gcc => gcc}/config/arm/t-strongarm-pe (100%) rename {contrib/gcc => gcc}/config/arm/t-symbian (100%) rename {contrib/gcc => gcc}/config/arm/t-vxworks (100%) rename {contrib/gcc => gcc}/config/arm/t-wince-pe (100%) rename {contrib/gcc => gcc}/config/arm/t-xscale-coff (100%) rename {contrib/gcc => gcc}/config/arm/t-xscale-elf (100%) rename {contrib/gcc => gcc}/config/arm/uclinux-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/unaligned-funcs.c (100%) rename {contrib/gcc => gcc}/config/arm/unknown-elf.h (100%) rename {contrib/gcc => gcc}/config/arm/unwind-arm.c (100%) rename {contrib/gcc => gcc}/config/arm/unwind-arm.h (100%) rename {contrib/gcc => gcc}/config/arm/vfp.md (100%) rename {contrib/gcc => gcc}/config/arm/vxworks.h (100%) rename {contrib/gcc => gcc}/config/arm/wince-pe.h (100%) rename {contrib/gcc => gcc}/config/arm/xscale-coff.h (100%) rename {contrib/gcc => gcc}/config/arm/xscale-elf.h (100%) rename {contrib/gcc => gcc}/config/darwin-64.c (100%) rename {contrib/gcc => gcc}/config/darwin-c.c (100%) rename {contrib/gcc => gcc}/config/darwin-crt2.c (100%) rename {contrib/gcc => gcc}/config/darwin-crt3.c (100%) rename {contrib/gcc => gcc}/config/darwin-protos.h (100%) rename {contrib/gcc => gcc}/config/darwin-sections.def (100%) rename {contrib/gcc => gcc}/config/darwin.c (100%) rename {contrib/gcc => gcc}/config/darwin.h (100%) rename {contrib/gcc => gcc}/config/darwin.opt (100%) rename {contrib/gcc => gcc}/config/darwin9.h (100%) rename {contrib/gcc => gcc}/config/dbx.h (100%) rename {contrib/gcc => gcc}/config/dbxcoff.h (100%) rename {contrib/gcc => gcc}/config/dbxelf.h (100%) rename {contrib/gcc => gcc}/config/dfp-bit.c (100%) rename {contrib/gcc => gcc}/config/dfp-bit.h (100%) rename {contrib/gcc => gcc}/config/divmod.c (100%) rename {contrib/gcc => gcc}/config/elfos.h (100%) rename {contrib/gcc => gcc}/config/floatunsidf.c (100%) rename {contrib/gcc => gcc}/config/floatunsisf.c (100%) rename {contrib/gcc => gcc}/config/floatunsitf.c (100%) rename {contrib/gcc => gcc}/config/floatunsixf.c (100%) rename {contrib/gcc => gcc}/config/fp-bit.c (100%) rename {contrib/gcc => gcc}/config/fp-bit.h (100%) rename {contrib/gcc => gcc}/config/freebsd-nthr.h (100%) rename {contrib/gcc => gcc}/config/freebsd-spec.h (100%) rename {contrib/gcc => gcc}/config/freebsd.h (100%) rename {contrib/gcc => gcc}/config/gnu.h (100%) rename {contrib/gcc => gcc}/config/gofast.h (100%) rename {contrib/gcc => gcc}/config/host-darwin.c (100%) rename {contrib/gcc => gcc}/config/host-darwin.h (100%) rename {contrib/gcc => gcc}/config/host-hpux.c (100%) rename {contrib/gcc => gcc}/config/host-linux.c (100%) rename {contrib/gcc => gcc}/config/host-solaris.c (100%) rename {contrib/gcc => gcc}/config/i386/athlon.md (100%) rename {contrib/gcc => gcc}/config/i386/att.h (100%) rename {contrib/gcc => gcc}/config/i386/beos-elf.h (100%) rename {contrib/gcc => gcc}/config/i386/biarch64.h (100%) rename {contrib/gcc => gcc}/config/i386/bsd.h (100%) rename {contrib/gcc => gcc}/config/i386/constraints.md (100%) rename {contrib/gcc => gcc}/config/i386/crtdll.h (100%) rename {contrib/gcc => gcc}/config/i386/crtfastmath.c (100%) rename {contrib/gcc => gcc}/config/i386/cygming.h (100%) rename {contrib/gcc => gcc}/config/i386/cygming.opt (100%) rename {contrib/gcc => gcc}/config/i386/cygwin.asm (100%) rename {contrib/gcc => gcc}/config/i386/cygwin.h (100%) rename {contrib/gcc => gcc}/config/i386/cygwin1.c (100%) rename {contrib/gcc => gcc}/config/i386/cygwin2.c (100%) rename {contrib/gcc => gcc}/config/i386/darwin-libgcc.10.4.ver (100%) rename {contrib/gcc => gcc}/config/i386/darwin-libgcc.10.5.ver (100%) rename {contrib/gcc => gcc}/config/i386/darwin.h (100%) rename {contrib/gcc => gcc}/config/i386/darwin64.h (100%) rename {contrib/gcc => gcc}/config/i386/djgpp.h (100%) rename {contrib/gcc => gcc}/config/i386/djgpp.opt (100%) rename {contrib/gcc => gcc}/config/i386/driver-i386.c (100%) rename {contrib/gcc => gcc}/config/i386/emmintrin.h (100%) rename {contrib/gcc => gcc}/config/i386/freebsd.h (100%) rename {contrib/gcc => gcc}/config/i386/freebsd64.h (100%) rename {contrib/gcc => gcc}/config/i386/gas.h (100%) rename {contrib/gcc => gcc}/config/i386/gmm_malloc.h (100%) rename {contrib/gcc => gcc}/config/i386/gmon-sol2.c (100%) rename {contrib/gcc => gcc}/config/i386/gnu.h (100%) rename {contrib/gcc => gcc}/config/i386/gstabs.h (100%) rename {contrib/gcc => gcc}/config/i386/gthr-win32.c (100%) rename {contrib/gcc => gcc}/config/i386/host-cygwin.c (100%) rename {contrib/gcc => gcc}/config/i386/host-i386-darwin.c (100%) rename {contrib/gcc => gcc}/config/i386/host-mingw32.c (100%) rename {contrib/gcc => gcc}/config/i386/i386-aout.h (100%) rename {contrib/gcc => gcc}/config/i386/i386-coff.h (100%) rename {contrib/gcc => gcc}/config/i386/i386-interix.h (100%) rename {contrib/gcc => gcc}/config/i386/i386-interix3.h (100%) rename {contrib/gcc => gcc}/config/i386/i386-modes.def (100%) rename {contrib/gcc => gcc}/config/i386/i386-protos.h (100%) rename {contrib/gcc => gcc}/config/i386/i386.c (100%) rename {contrib/gcc => gcc}/config/i386/i386.h (100%) rename {contrib/gcc => gcc}/config/i386/i386.md (100%) rename {contrib/gcc => gcc}/config/i386/i386.opt (100%) rename {contrib/gcc => gcc}/config/i386/i386elf.h (100%) rename {contrib/gcc => gcc}/config/i386/k6.md (100%) rename {contrib/gcc => gcc}/config/i386/kaos-i386.h (100%) rename {contrib/gcc => gcc}/config/i386/kfreebsd-gnu.h (100%) rename {contrib/gcc => gcc}/config/i386/knetbsd-gnu.h (100%) rename {contrib/gcc => gcc}/config/i386/libgcc-x86_64-glibc.ver (100%) rename {contrib/gcc => gcc}/config/i386/linux-unwind.h (100%) rename {contrib/gcc => gcc}/config/i386/linux.h (100%) rename {contrib/gcc => gcc}/config/i386/linux64.h (100%) rename {contrib/gcc => gcc}/config/i386/lynx.h (100%) rename {contrib/gcc => gcc}/config/i386/mach.h (100%) rename {contrib/gcc => gcc}/config/i386/mingw32.h (100%) rename {contrib/gcc => gcc}/config/i386/mm3dnow.h (100%) rename {contrib/gcc => gcc}/config/i386/mmintrin.h (100%) rename {contrib/gcc => gcc}/config/i386/mmx.md (100%) rename {contrib/gcc => gcc}/config/i386/netbsd-elf.h (100%) rename {contrib/gcc => gcc}/config/i386/netbsd.h (100%) rename {contrib/gcc => gcc}/config/i386/netbsd64.h (100%) rename {contrib/gcc => gcc}/config/i386/netware-crt0.c (100%) rename {contrib/gcc => gcc}/config/i386/netware-libgcc.c (100%) rename {contrib/gcc => gcc}/config/i386/netware-libgcc.def (100%) rename {contrib/gcc => gcc}/config/i386/netware-libgcc.exp (100%) rename {contrib/gcc => gcc}/config/i386/netware.c (100%) rename {contrib/gcc => gcc}/config/i386/nto.h (100%) rename {contrib/gcc => gcc}/config/i386/nwld.c (100%) rename {contrib/gcc => gcc}/config/i386/nwld.h (100%) rename {contrib/gcc => gcc}/config/i386/openbsd.h (100%) rename {contrib/gcc => gcc}/config/i386/openbsdelf.h (100%) rename {contrib/gcc => gcc}/config/i386/pentium.md (100%) rename {contrib/gcc => gcc}/config/i386/pmm_malloc.h (100%) rename {contrib/gcc => gcc}/config/i386/pmmintrin.h (100%) rename {contrib/gcc => gcc}/config/i386/ppro.md (100%) rename {contrib/gcc => gcc}/config/i386/predicates.md (100%) rename {contrib/gcc => gcc}/config/i386/ptx4-i.h (100%) rename {contrib/gcc => gcc}/config/i386/rtemself.h (100%) rename {contrib/gcc => gcc}/config/i386/sco5.h (100%) rename {contrib/gcc => gcc}/config/i386/sco5.opt (100%) rename {contrib/gcc => gcc}/config/i386/sol2-10.h (100%) rename {contrib/gcc => gcc}/config/i386/sol2-c1.asm (100%) rename {contrib/gcc => gcc}/config/i386/sol2-ci.asm (100%) rename {contrib/gcc => gcc}/config/i386/sol2-cn.asm (100%) rename {contrib/gcc => gcc}/config/i386/sol2-gc1.asm (100%) rename {contrib/gcc => gcc}/config/i386/sol2.h (100%) rename {contrib/gcc => gcc}/config/i386/sse.md (100%) rename {contrib/gcc => gcc}/config/i386/sync.md (100%) rename {contrib/gcc => gcc}/config/i386/sysv4-cpp.h (100%) rename {contrib/gcc => gcc}/config/i386/sysv4.h (100%) rename {contrib/gcc => gcc}/config/i386/sysv5.h (100%) rename {contrib/gcc => gcc}/config/i386/t-beos (100%) rename {contrib/gcc => gcc}/config/i386/t-crtfm (100%) rename {contrib/gcc => gcc}/config/i386/t-crtpic (100%) rename {contrib/gcc => gcc}/config/i386/t-crtstuff (100%) rename {contrib/gcc => gcc}/config/i386/t-cygming (100%) rename {contrib/gcc => gcc}/config/i386/t-cygwin (100%) rename {contrib/gcc => gcc}/config/i386/t-darwin (100%) rename {contrib/gcc => gcc}/config/i386/t-darwin64 (100%) rename {contrib/gcc => gcc}/config/i386/t-djgpp (100%) rename {contrib/gcc => gcc}/config/i386/t-gmm_malloc (100%) rename {contrib/gcc => gcc}/config/i386/t-gthr-win32 (100%) rename {contrib/gcc => gcc}/config/i386/t-i386elf (100%) rename {contrib/gcc => gcc}/config/i386/t-interix (100%) rename {contrib/gcc => gcc}/config/i386/t-linux64 (100%) rename {contrib/gcc => gcc}/config/i386/t-mingw32 (100%) rename {contrib/gcc => gcc}/config/i386/t-nto (100%) rename {contrib/gcc => gcc}/config/i386/t-nwld (100%) rename {contrib/gcc => gcc}/config/i386/t-openbsd (100%) rename {contrib/gcc => gcc}/config/i386/t-pmm_malloc (100%) rename {contrib/gcc => gcc}/config/i386/t-rtems-i386 (100%) rename {contrib/gcc => gcc}/config/i386/t-sco5 (100%) rename {contrib/gcc => gcc}/config/i386/t-sol2 (100%) rename {contrib/gcc => gcc}/config/i386/t-sol2-10 (100%) rename {contrib/gcc => gcc}/config/i386/t-svr3dbx (100%) rename {contrib/gcc => gcc}/config/i386/t-uwin (100%) rename {contrib/gcc => gcc}/config/i386/t-vxworks (100%) rename {contrib/gcc => gcc}/config/i386/t-vxworksae (100%) rename {contrib/gcc => gcc}/config/i386/unix.h (100%) rename {contrib/gcc => gcc}/config/i386/uwin.asm (100%) rename {contrib/gcc => gcc}/config/i386/uwin.h (100%) rename {contrib/gcc => gcc}/config/i386/vxworks.h (100%) rename {contrib/gcc => gcc}/config/i386/vxworksae.h (100%) rename {contrib/gcc => gcc}/config/i386/winnt-cxx.c (100%) rename {contrib/gcc => gcc}/config/i386/winnt-stubs.c (100%) rename {contrib/gcc => gcc}/config/i386/winnt.c (100%) rename {contrib/gcc => gcc}/config/i386/x-cygwin (100%) rename {contrib/gcc => gcc}/config/i386/x-darwin (100%) rename {contrib/gcc => gcc}/config/i386/x-i386 (100%) rename {contrib/gcc => gcc}/config/i386/x-mingw32 (100%) rename {contrib/gcc => gcc}/config/i386/x86-64.h (100%) rename {contrib/gcc => gcc}/config/i386/xm-cygwin.h (100%) rename {contrib/gcc => gcc}/config/i386/xm-djgpp.h (100%) rename {contrib/gcc => gcc}/config/i386/xm-mingw32.h (100%) rename {contrib/gcc => gcc}/config/i386/xmmintrin.h (100%) rename {contrib/gcc => gcc}/config/ia64/crtbegin.asm (100%) rename {contrib/gcc => gcc}/config/ia64/crtend.asm (100%) rename {contrib/gcc => gcc}/config/ia64/crtfastmath.c (100%) rename {contrib/gcc => gcc}/config/ia64/crti.asm (100%) rename {contrib/gcc => gcc}/config/ia64/crtn.asm (100%) rename {contrib/gcc => gcc}/config/ia64/elf.h (100%) rename {contrib/gcc => gcc}/config/ia64/fde-glibc.c (100%) rename {contrib/gcc => gcc}/config/ia64/freebsd.h (100%) rename {contrib/gcc => gcc}/config/ia64/hpux.h (100%) rename {contrib/gcc => gcc}/config/ia64/ia64-c.c (100%) rename {contrib/gcc => gcc}/config/ia64/ia64-modes.def (100%) rename {contrib/gcc => gcc}/config/ia64/ia64-protos.h (100%) rename {contrib/gcc => gcc}/config/ia64/ia64.c (100%) rename {contrib/gcc => gcc}/config/ia64/ia64.h (100%) rename {contrib/gcc => gcc}/config/ia64/ia64.md (100%) rename {contrib/gcc => gcc}/config/ia64/ia64.opt (100%) rename {contrib/gcc => gcc}/config/ia64/ia64intrin.h (100%) rename {contrib/gcc => gcc}/config/ia64/ilp32.opt (100%) rename {contrib/gcc => gcc}/config/ia64/itanium1.md (100%) rename {contrib/gcc => gcc}/config/ia64/itanium2.md (100%) rename {contrib/gcc => gcc}/config/ia64/lib1funcs.asm (100%) rename {contrib/gcc => gcc}/config/ia64/libgcc-ia64.ver (100%) rename {contrib/gcc => gcc}/config/ia64/linux-unwind.h (100%) rename {contrib/gcc => gcc}/config/ia64/linux.h (100%) rename {contrib/gcc => gcc}/config/ia64/predicates.md (100%) rename {contrib/gcc => gcc}/config/ia64/quadlib.c (100%) rename {contrib/gcc => gcc}/config/ia64/sync.md (100%) rename {contrib/gcc => gcc}/config/ia64/sysv4.h (100%) rename {contrib/gcc => gcc}/config/ia64/t-glibc (100%) rename {contrib/gcc => gcc}/config/ia64/t-glibc-libunwind (100%) rename {contrib/gcc => gcc}/config/ia64/t-hpux (100%) rename {contrib/gcc => gcc}/config/ia64/t-ia64 (100%) rename {contrib/gcc => gcc}/config/ia64/unwind-ia64.c (100%) rename {contrib/gcc => gcc}/config/ia64/unwind-ia64.h (100%) rename {contrib/gcc => gcc}/config/ia64/vect.md (100%) rename {contrib/gcc => gcc}/config/interix.h (100%) rename {contrib/gcc => gcc}/config/interix3.h (100%) rename {contrib/gcc => gcc}/config/kaos.h (100%) rename {contrib/gcc => gcc}/config/kfreebsd-gnu.h (100%) rename {contrib/gcc => gcc}/config/knetbsd-gnu.h (100%) rename {contrib/gcc => gcc}/config/libgcc-glibc.ver (100%) rename {contrib/gcc => gcc}/config/libgloss.h (100%) rename {contrib/gcc => gcc}/config/linux.h (100%) rename {contrib/gcc => gcc}/config/linux.opt (100%) rename {contrib/gcc => gcc}/config/lynx.h (100%) rename {contrib/gcc => gcc}/config/lynx.opt (100%) rename {contrib/gcc => gcc}/config/memcmp.c (100%) rename {contrib/gcc => gcc}/config/memcpy.c (100%) rename {contrib/gcc => gcc}/config/memmove.c (100%) rename {contrib/gcc => gcc}/config/memset.c (100%) rename {contrib/gcc => gcc}/config/mips/24k.md (100%) rename {contrib/gcc => gcc}/config/mips/3000.md (100%) rename {contrib/gcc => gcc}/config/mips/4000.md (100%) rename {contrib/gcc => gcc}/config/mips/4100.md (100%) rename {contrib/gcc => gcc}/config/mips/4130.md (100%) rename {contrib/gcc => gcc}/config/mips/4300.md (100%) rename {contrib/gcc => gcc}/config/mips/4600.md (100%) rename {contrib/gcc => gcc}/config/mips/4k.md (100%) rename {contrib/gcc => gcc}/config/mips/5000.md (100%) rename {contrib/gcc => gcc}/config/mips/5400.md (100%) rename {contrib/gcc => gcc}/config/mips/5500.md (100%) rename {contrib/gcc => gcc}/config/mips/5k.md (100%) rename {contrib/gcc => gcc}/config/mips/6000.md (100%) rename {contrib/gcc => gcc}/config/mips/7000.md (100%) rename {contrib/gcc => gcc}/config/mips/9000.md (100%) rename {contrib/gcc => gcc}/config/mips/constraints.md (100%) rename {contrib/gcc => gcc}/config/mips/crti.asm (100%) rename {contrib/gcc => gcc}/config/mips/crtn.asm (100%) rename {contrib/gcc => gcc}/config/mips/dbxmdebug.h (100%) rename {contrib/gcc => gcc}/config/mips/elf.h (100%) rename {contrib/gcc => gcc}/config/mips/elforion.h (100%) rename {contrib/gcc => gcc}/config/mips/generic.md (100%) rename {contrib/gcc => gcc}/config/mips/iris.h (100%) rename {contrib/gcc => gcc}/config/mips/iris5.h (100%) rename {contrib/gcc => gcc}/config/mips/iris6.h (100%) rename {contrib/gcc => gcc}/config/mips/irix-crti.asm (100%) rename {contrib/gcc => gcc}/config/mips/irix-crtn.asm (100%) rename {contrib/gcc => gcc}/config/mips/linux-unwind.h (100%) rename {contrib/gcc => gcc}/config/mips/linux.h (100%) rename {contrib/gcc => gcc}/config/mips/linux64.h (100%) rename {contrib/gcc => gcc}/config/mips/mips-dsp.md (100%) rename {contrib/gcc => gcc}/config/mips/mips-modes.def (100%) rename {contrib/gcc => gcc}/config/mips/mips-protos.h (100%) rename {contrib/gcc => gcc}/config/mips/mips-ps-3d.md (100%) rename {contrib/gcc => gcc}/config/mips/mips.c (100%) rename {contrib/gcc => gcc}/config/mips/mips.h (100%) rename {contrib/gcc => gcc}/config/mips/mips.md (100%) rename {contrib/gcc => gcc}/config/mips/mips.opt (100%) rename {contrib/gcc => gcc}/config/mips/mips16.S (100%) rename {contrib/gcc => gcc}/config/mips/netbsd.h (100%) rename {contrib/gcc => gcc}/config/mips/openbsd.h (100%) rename {contrib/gcc => gcc}/config/mips/predicates.md (100%) rename {contrib/gcc => gcc}/config/mips/r3900.h (100%) rename {contrib/gcc => gcc}/config/mips/rtems.h (100%) rename {contrib/gcc => gcc}/config/mips/sb1.md (100%) rename {contrib/gcc => gcc}/config/mips/sdb.h (100%) rename {contrib/gcc => gcc}/config/mips/sr71k.md (100%) rename {contrib/gcc => gcc}/config/mips/t-elf (100%) rename {contrib/gcc => gcc}/config/mips/t-gofast (100%) rename {contrib/gcc => gcc}/config/mips/t-iris (100%) rename {contrib/gcc => gcc}/config/mips/t-iris6 (100%) rename {contrib/gcc => gcc}/config/mips/t-isa3264 (100%) rename {contrib/gcc => gcc}/config/mips/t-linux64 (100%) rename {contrib/gcc => gcc}/config/mips/t-mips (100%) rename {contrib/gcc => gcc}/config/mips/t-r3900 (100%) rename {contrib/gcc => gcc}/config/mips/t-rtems (100%) rename {contrib/gcc => gcc}/config/mips/t-sb1 (100%) rename {contrib/gcc => gcc}/config/mips/t-slibgcc-irix (100%) rename {contrib/gcc => gcc}/config/mips/t-sr71k (100%) rename {contrib/gcc => gcc}/config/mips/t-vr (100%) rename {contrib/gcc => gcc}/config/mips/t-vxworks (100%) rename {contrib/gcc => gcc}/config/mips/vr.h (100%) rename {contrib/gcc => gcc}/config/mips/vr4120-div.S (100%) rename {contrib/gcc => gcc}/config/mips/vxworks.h (100%) rename {contrib/gcc => gcc}/config/mips/windiss.h (100%) rename {contrib/gcc => gcc}/config/netbsd-aout.h (100%) rename {contrib/gcc => gcc}/config/netbsd-elf.h (100%) rename {contrib/gcc => gcc}/config/netbsd.h (100%) rename {contrib/gcc => gcc}/config/openbsd-oldgas.h (100%) rename {contrib/gcc => gcc}/config/openbsd.h (100%) rename {contrib/gcc => gcc}/config/ptx4.h (100%) rename {contrib/gcc => gcc}/config/rs6000/40x.md (100%) rename {contrib/gcc => gcc}/config/rs6000/440.md (100%) rename {contrib/gcc => gcc}/config/rs6000/603.md (100%) rename {contrib/gcc => gcc}/config/rs6000/6xx.md (100%) rename {contrib/gcc => gcc}/config/rs6000/7450.md (100%) rename {contrib/gcc => gcc}/config/rs6000/7xx.md (100%) rename {contrib/gcc => gcc}/config/rs6000/8540.md (100%) rename {contrib/gcc => gcc}/config/rs6000/aix.h (100%) rename {contrib/gcc => gcc}/config/rs6000/aix.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/aix41.h (100%) rename {contrib/gcc => gcc}/config/rs6000/aix41.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/aix43.h (100%) rename {contrib/gcc => gcc}/config/rs6000/aix51.h (100%) rename {contrib/gcc => gcc}/config/rs6000/aix52.h (100%) rename {contrib/gcc => gcc}/config/rs6000/aix64.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/altivec.h (100%) rename {contrib/gcc => gcc}/config/rs6000/altivec.md (100%) rename {contrib/gcc => gcc}/config/rs6000/beos.h (100%) rename {contrib/gcc => gcc}/config/rs6000/biarch64.h (100%) rename {contrib/gcc => gcc}/config/rs6000/constraints.md (100%) rename {contrib/gcc => gcc}/config/rs6000/crtsavres.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-asm.h (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-fallback.c (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-fpsave.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-ldouble-format (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-ldouble.c (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-libgcc.10.4.ver (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-libgcc.10.5.ver (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-tramp.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-unwind.h (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-vecsave.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin-world.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin.h (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin.md (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin64.h (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin7.h (100%) rename {contrib/gcc => gcc}/config/rs6000/darwin8.h (100%) rename {contrib/gcc => gcc}/config/rs6000/default64.h (100%) rename {contrib/gcc => gcc}/config/rs6000/e500-double.h (100%) rename {contrib/gcc => gcc}/config/rs6000/eabi-ci.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/eabi-cn.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/eabi.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/eabi.h (100%) rename {contrib/gcc => gcc}/config/rs6000/eabialtivec.h (100%) rename {contrib/gcc => gcc}/config/rs6000/eabisim.h (100%) rename {contrib/gcc => gcc}/config/rs6000/eabispe.h (100%) rename {contrib/gcc => gcc}/config/rs6000/freebsd.h (100%) rename {contrib/gcc => gcc}/config/rs6000/gnu.h (100%) rename {contrib/gcc => gcc}/config/rs6000/host-darwin.c (100%) rename {contrib/gcc => gcc}/config/rs6000/host-ppc64-darwin.c (100%) rename {contrib/gcc => gcc}/config/rs6000/kaos-ppc.h (100%) rename {contrib/gcc => gcc}/config/rs6000/libgcc-ppc-glibc.ver (100%) rename {contrib/gcc => gcc}/config/rs6000/libgcc-ppc64.ver (100%) rename {contrib/gcc => gcc}/config/rs6000/linux-unwind.h (100%) rename {contrib/gcc => gcc}/config/rs6000/linux.h (100%) rename {contrib/gcc => gcc}/config/rs6000/linux64.h (100%) rename {contrib/gcc => gcc}/config/rs6000/linux64.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/linuxaltivec.h (100%) rename {contrib/gcc => gcc}/config/rs6000/linuxspe.h (100%) rename {contrib/gcc => gcc}/config/rs6000/lynx.h (100%) rename {contrib/gcc => gcc}/config/rs6000/milli.exp (100%) rename {contrib/gcc => gcc}/config/rs6000/mpc.md (100%) rename {contrib/gcc => gcc}/config/rs6000/netbsd.h (100%) rename {contrib/gcc => gcc}/config/rs6000/power4.md (100%) rename {contrib/gcc => gcc}/config/rs6000/power5.md (100%) rename {contrib/gcc => gcc}/config/rs6000/ppc-asm.h (100%) rename {contrib/gcc => gcc}/config/rs6000/ppc64-fp.c (100%) rename {contrib/gcc => gcc}/config/rs6000/predicates.md (100%) rename {contrib/gcc => gcc}/config/rs6000/rios1.md (100%) rename {contrib/gcc => gcc}/config/rs6000/rios2.md (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000-c.c (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000-modes.def (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000-protos.h (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000.c (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000.h (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000.md (100%) rename {contrib/gcc => gcc}/config/rs6000/rs6000.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/rs64.md (100%) rename {contrib/gcc => gcc}/config/rs6000/rtems.h (100%) rename {contrib/gcc => gcc}/config/rs6000/secureplt.h (100%) rename {contrib/gcc => gcc}/config/rs6000/sfp-machine.h (100%) rename {contrib/gcc => gcc}/config/rs6000/sol-ci.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/sol-cn.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/spe.h (100%) rename {contrib/gcc => gcc}/config/rs6000/spe.md (100%) rename {contrib/gcc => gcc}/config/rs6000/sync.md (100%) rename {contrib/gcc => gcc}/config/rs6000/sysv4.h (100%) rename {contrib/gcc => gcc}/config/rs6000/sysv4.opt (100%) rename {contrib/gcc => gcc}/config/rs6000/sysv4le.h (100%) rename {contrib/gcc => gcc}/config/rs6000/t-aix43 (100%) rename {contrib/gcc => gcc}/config/rs6000/t-aix52 (100%) rename {contrib/gcc => gcc}/config/rs6000/t-beos (100%) rename {contrib/gcc => gcc}/config/rs6000/t-darwin (100%) rename {contrib/gcc => gcc}/config/rs6000/t-darwin8 (100%) rename {contrib/gcc => gcc}/config/rs6000/t-fprules (100%) rename {contrib/gcc => gcc}/config/rs6000/t-fprules-fpbit (100%) rename {contrib/gcc => gcc}/config/rs6000/t-fprules-softfp (100%) rename {contrib/gcc => gcc}/config/rs6000/t-linux64 (100%) rename {contrib/gcc => gcc}/config/rs6000/t-lynx (100%) rename {contrib/gcc => gcc}/config/rs6000/t-netbsd (100%) rename {contrib/gcc => gcc}/config/rs6000/t-newas (100%) rename {contrib/gcc => gcc}/config/rs6000/t-ppccomm (100%) rename {contrib/gcc => gcc}/config/rs6000/t-ppcendian (100%) rename {contrib/gcc => gcc}/config/rs6000/t-ppcgas (100%) rename {contrib/gcc => gcc}/config/rs6000/t-ppcos (100%) rename {contrib/gcc => gcc}/config/rs6000/t-rs6000 (100%) rename {contrib/gcc => gcc}/config/rs6000/t-rtems (100%) rename {contrib/gcc => gcc}/config/rs6000/t-spe (100%) rename {contrib/gcc => gcc}/config/rs6000/t-vxworks (100%) rename {contrib/gcc => gcc}/config/rs6000/t-vxworksae (100%) rename {contrib/gcc => gcc}/config/rs6000/tramp.asm (100%) rename {contrib/gcc => gcc}/config/rs6000/vxworks.h (100%) rename {contrib/gcc => gcc}/config/rs6000/vxworksae.h (100%) rename {contrib/gcc => gcc}/config/rs6000/windiss.h (100%) rename {contrib/gcc => gcc}/config/rs6000/x-darwin (100%) rename {contrib/gcc => gcc}/config/rs6000/x-darwin64 (100%) rename {contrib/gcc => gcc}/config/rs6000/x-linux64 (100%) rename {contrib/gcc => gcc}/config/rs6000/xcoff.h (100%) rename {contrib/gcc => gcc}/config/rtems.h (100%) rename {contrib/gcc => gcc}/config/s390/2064.md (100%) rename {contrib/gcc => gcc}/config/s390/2084.md (100%) rename {contrib/gcc => gcc}/config/s390/constraints.md (100%) rename {contrib/gcc => gcc}/config/s390/fixdfdi.h (100%) rename {contrib/gcc => gcc}/config/s390/libgcc-glibc.ver (100%) rename {contrib/gcc => gcc}/config/s390/linux-unwind.h (100%) rename {contrib/gcc => gcc}/config/s390/linux.h (100%) rename {contrib/gcc => gcc}/config/s390/predicates.md (100%) rename {contrib/gcc => gcc}/config/s390/s390-modes.def (100%) rename {contrib/gcc => gcc}/config/s390/s390-protos.h (100%) rename {contrib/gcc => gcc}/config/s390/s390.c (100%) rename {contrib/gcc => gcc}/config/s390/s390.h (100%) rename {contrib/gcc => gcc}/config/s390/s390.md (100%) rename {contrib/gcc => gcc}/config/s390/s390.opt (100%) rename {contrib/gcc => gcc}/config/s390/s390x.h (100%) rename {contrib/gcc => gcc}/config/s390/t-crtstuff (100%) rename {contrib/gcc => gcc}/config/s390/t-linux (100%) rename {contrib/gcc => gcc}/config/s390/t-linux64 (100%) rename {contrib/gcc => gcc}/config/s390/t-tpf (100%) rename {contrib/gcc => gcc}/config/s390/tpf-unwind.h (100%) rename {contrib/gcc => gcc}/config/s390/tpf.h (100%) rename {contrib/gcc => gcc}/config/s390/tpf.md (100%) rename {contrib/gcc => gcc}/config/s390/tpf.opt (100%) rename {contrib/gcc => gcc}/config/soft-fp/README (100%) rename {contrib/gcc => gcc}/config/soft-fp/adddf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/addsf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/addtf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/divdf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/divsf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/divtf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/double.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/eqdf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/eqsf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/eqtf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/extenddftf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/extended.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/extendsfdf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/extendsftf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixdfdi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixdfsi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixsfdi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixsfsi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixtfdi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixtfsi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixunsdfdi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixunsdfsi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixunssfdi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixunssfsi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixunstfdi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/fixunstfsi.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatdidf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatdisf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatditf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatsidf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatsisf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatsitf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatundidf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatundisf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatunditf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatunsidf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatunsisf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/floatunsitf.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/gedf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/gesf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/getf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/ledf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/lesf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/letf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/muldf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/mulsf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/multf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/negdf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/negsf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/negtf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/op-1.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/op-2.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/op-4.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/op-8.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/op-common.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/quad.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/single.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/soft-fp.h (100%) rename {contrib/gcc => gcc}/config/soft-fp/subdf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/subsf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/subtf3.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/t-softfp (100%) rename {contrib/gcc => gcc}/config/soft-fp/truncdfsf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/trunctfdf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/trunctfsf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/unorddf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/unordsf2.c (100%) rename {contrib/gcc => gcc}/config/soft-fp/unordtf2.c (100%) rename {contrib/gcc => gcc}/config/sol2-10.h (100%) rename {contrib/gcc => gcc}/config/sol2-6.h (100%) rename {contrib/gcc => gcc}/config/sol2-c.c (100%) rename {contrib/gcc => gcc}/config/sol2-protos.h (100%) rename {contrib/gcc => gcc}/config/sol2.c (100%) rename {contrib/gcc => gcc}/config/sol2.h (100%) rename {contrib/gcc => gcc}/config/sparc/biarch64.h (100%) rename {contrib/gcc => gcc}/config/sparc/crtfastmath.c (100%) rename {contrib/gcc => gcc}/config/sparc/cypress.md (100%) rename {contrib/gcc => gcc}/config/sparc/freebsd.h (100%) rename {contrib/gcc => gcc}/config/sparc/gmon-sol2.c (100%) rename {contrib/gcc => gcc}/config/sparc/hypersparc.md (100%) rename {contrib/gcc => gcc}/config/sparc/lb1spc.asm (100%) rename {contrib/gcc => gcc}/config/sparc/lb1spl.asm (100%) rename {contrib/gcc => gcc}/config/sparc/libgcc-sparc-glibc.ver (100%) rename {contrib/gcc => gcc}/config/sparc/linux-unwind.h (100%) rename {contrib/gcc => gcc}/config/sparc/linux.h (100%) rename {contrib/gcc => gcc}/config/sparc/linux64.h (100%) rename {contrib/gcc => gcc}/config/sparc/little-endian.opt (100%) rename {contrib/gcc => gcc}/config/sparc/long-double-switch.opt (100%) rename {contrib/gcc => gcc}/config/sparc/netbsd-elf.h (100%) rename {contrib/gcc => gcc}/config/sparc/niagara.md (100%) rename {contrib/gcc => gcc}/config/sparc/openbsd1-64.h (100%) rename {contrib/gcc => gcc}/config/sparc/openbsd64.h (100%) rename {contrib/gcc => gcc}/config/sparc/predicates.md (100%) rename {contrib/gcc => gcc}/config/sparc/rtemself.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-64.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-bi.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-c1.asm (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-ci.asm (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-cn.asm (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-gas-bi.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-gas.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-gld-bi.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2-gld.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol2.h (100%) rename {contrib/gcc => gcc}/config/sparc/sol26-sld.h (100%) rename {contrib/gcc => gcc}/config/sparc/sp-elf.h (100%) rename {contrib/gcc => gcc}/config/sparc/sp64-elf.h (100%) rename {contrib/gcc => gcc}/config/sparc/sparc-modes.def (100%) rename {contrib/gcc => gcc}/config/sparc/sparc-protos.h (100%) rename {contrib/gcc => gcc}/config/sparc/sparc.c (100%) rename {contrib/gcc => gcc}/config/sparc/sparc.h (100%) rename {contrib/gcc => gcc}/config/sparc/sparc.md (100%) rename {contrib/gcc => gcc}/config/sparc/sparc.opt (100%) rename {contrib/gcc => gcc}/config/sparc/sparclet.md (100%) rename {contrib/gcc => gcc}/config/sparc/supersparc.md (100%) rename {contrib/gcc => gcc}/config/sparc/sync.md (100%) rename {contrib/gcc => gcc}/config/sparc/sysv4-only.h (100%) rename {contrib/gcc => gcc}/config/sparc/sysv4.h (100%) rename {contrib/gcc => gcc}/config/sparc/t-crtfm (100%) rename {contrib/gcc => gcc}/config/sparc/t-elf (100%) rename {contrib/gcc => gcc}/config/sparc/t-linux (100%) rename {contrib/gcc => gcc}/config/sparc/t-linux64 (100%) rename {contrib/gcc => gcc}/config/sparc/t-netbsd64 (100%) rename {contrib/gcc => gcc}/config/sparc/t-sol2 (100%) rename {contrib/gcc => gcc}/config/sparc/t-sol2-64 (100%) rename {contrib/gcc => gcc}/config/sparc/ultra1_2.md (100%) rename {contrib/gcc => gcc}/config/sparc/ultra3.md (100%) rename {contrib/gcc => gcc}/config/svr3.h (100%) rename {contrib/gcc => gcc}/config/svr4.h (100%) rename {contrib/gcc => gcc}/config/t-darwin (100%) rename {contrib/gcc => gcc}/config/t-dfprules (100%) rename {contrib/gcc => gcc}/config/t-freebsd (100%) rename {contrib/gcc => gcc}/config/t-freebsd-thread (100%) rename {contrib/gcc => gcc}/config/t-gnu (100%) rename {contrib/gcc => gcc}/config/t-libc-ok (100%) rename {contrib/gcc => gcc}/config/t-libgcc-pic (100%) rename {contrib/gcc => gcc}/config/t-libunwind (100%) rename {contrib/gcc => gcc}/config/t-libunwind-elf (100%) rename {contrib/gcc => gcc}/config/t-linux (100%) rename {contrib/gcc => gcc}/config/t-lynx (100%) rename {contrib/gcc => gcc}/config/t-netbsd (100%) rename {contrib/gcc => gcc}/config/t-openbsd (100%) rename {contrib/gcc => gcc}/config/t-openbsd-thread (100%) rename {contrib/gcc => gcc}/config/t-rtems (100%) rename {contrib/gcc => gcc}/config/t-slibgcc-darwin (100%) rename {contrib/gcc => gcc}/config/t-slibgcc-elf-ver (100%) rename {contrib/gcc => gcc}/config/t-slibgcc-nolc-override (100%) rename {contrib/gcc => gcc}/config/t-slibgcc-sld (100%) rename {contrib/gcc => gcc}/config/t-sol2 (100%) rename {contrib/gcc => gcc}/config/t-svr4 (100%) rename {contrib/gcc => gcc}/config/t-vxworks (100%) rename {contrib/gcc => gcc}/config/tm-dwarf2.h (100%) rename {contrib/gcc => gcc}/config/udivmod.c (100%) rename {contrib/gcc => gcc}/config/udivmodsi4.c (100%) rename {contrib/gcc => gcc}/config/usegas.h (100%) rename {contrib/gcc => gcc}/config/vx-common.h (100%) rename {contrib/gcc => gcc}/config/vxlib.c (100%) rename {contrib/gcc => gcc}/config/vxworks.h (100%) rename {contrib/gcc => gcc}/config/vxworks.opt (100%) rename {contrib/gcc => gcc}/config/vxworksae.h (100%) rename {contrib/gcc => gcc}/config/windiss.h (100%) rename {contrib/gcc => gcc}/config/x-darwin (100%) rename {contrib/gcc => gcc}/config/x-hpux (100%) rename {contrib/gcc => gcc}/config/x-interix (100%) rename {contrib/gcc => gcc}/config/x-linux (100%) rename {contrib/gcc => gcc}/config/x-solaris (100%) rename {contrib/gcc => gcc}/configure (100%) rename {contrib/gcc => gcc}/configure.ac (100%) rename {contrib/gcc => gcc}/conflict.c (100%) rename {contrib/gcc => gcc}/convert.c (100%) rename {contrib/gcc => gcc}/convert.h (100%) rename {contrib/gcc => gcc}/coretypes.h (100%) rename {contrib/gcc => gcc}/coverage.c (100%) rename {contrib/gcc => gcc}/coverage.h (100%) rename {contrib/gcc => gcc}/cp/ChangeLog (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1993 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1994 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1995 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1996 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1997 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1998 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-1999 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-2000 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-2001 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-2002 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-2003 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog-2004 (100%) rename {contrib/gcc => gcc}/cp/ChangeLog.tree-ssa (100%) rename {contrib/gcc => gcc}/cp/Make-lang.in (100%) rename {contrib/gcc => gcc}/cp/NEWS (100%) rename {contrib/gcc => gcc}/cp/call.c (100%) rename {contrib/gcc => gcc}/cp/cfns.gperf (100%) rename {contrib/gcc => gcc}/cp/class.c (100%) rename {contrib/gcc => gcc}/cp/config-lang.in (100%) rename {contrib/gcc => gcc}/cp/cp-gimplify.c (100%) rename {contrib/gcc => gcc}/cp/cp-lang.c (100%) rename {contrib/gcc => gcc}/cp/cp-objcp-common.c (100%) rename {contrib/gcc => gcc}/cp/cp-objcp-common.h (100%) rename {contrib/gcc => gcc}/cp/cp-tree.def (100%) rename {contrib/gcc => gcc}/cp/cp-tree.h (100%) rename {contrib/gcc => gcc}/cp/cvt.c (100%) rename {contrib/gcc => gcc}/cp/cxx-pretty-print.c (100%) rename {contrib/gcc => gcc}/cp/cxx-pretty-print.h (100%) rename {contrib/gcc => gcc}/cp/decl.c (100%) rename {contrib/gcc => gcc}/cp/decl.h (100%) rename {contrib/gcc => gcc}/cp/decl2.c (100%) rename {contrib/gcc => gcc}/cp/dump.c (100%) rename {contrib/gcc => gcc}/cp/error.c (100%) rename {contrib/gcc => gcc}/cp/except.c (100%) rename {contrib/gcc => gcc}/cp/expr.c (100%) rename {contrib/gcc => gcc}/cp/friend.c (100%) rename {contrib/gcc => gcc}/cp/g++.1 (100%) rename {contrib/gcc => gcc}/cp/g++spec.c (100%) rename {contrib/gcc => gcc}/cp/init.c (100%) rename {contrib/gcc => gcc}/cp/lang-specs.h (100%) rename {contrib/gcc => gcc}/cp/lex.c (100%) rename {contrib/gcc => gcc}/cp/mangle.c (100%) rename {contrib/gcc => gcc}/cp/method.c (100%) rename {contrib/gcc => gcc}/cp/name-lookup.c (100%) rename {contrib/gcc => gcc}/cp/name-lookup.h (100%) rename {contrib/gcc => gcc}/cp/operators.def (100%) rename {contrib/gcc => gcc}/cp/optimize.c (100%) rename {contrib/gcc => gcc}/cp/parser.c (100%) rename {contrib/gcc => gcc}/cp/pt.c (100%) rename {contrib/gcc => gcc}/cp/ptree.c (100%) rename {contrib/gcc => gcc}/cp/repo.c (100%) rename {contrib/gcc => gcc}/cp/rtti.c (100%) rename {contrib/gcc => gcc}/cp/search.c (100%) rename {contrib/gcc => gcc}/cp/semantics.c (100%) rename {contrib/gcc => gcc}/cp/tree.c (100%) rename {contrib/gcc => gcc}/cp/typeck.c (100%) rename {contrib/gcc => gcc}/cp/typeck2.c (100%) rename {contrib/gcc => gcc}/cppdefault.c (100%) rename {contrib/gcc => gcc}/cppdefault.h (100%) rename {contrib/gcc => gcc}/cppspec.c (100%) rename {contrib/gcc => gcc}/crtstuff.c (100%) rename {contrib/gcc => gcc}/cse.c (100%) rename {contrib/gcc => gcc}/cselib.c (100%) rename {contrib/gcc => gcc}/cselib.h (100%) rename {contrib/gcc => gcc}/cstamp-h.in (100%) rename {contrib/gcc => gcc}/dbxout.c (100%) rename {contrib/gcc => gcc}/dbxout.h (100%) rename {contrib/gcc => gcc}/ddg.c (100%) rename {contrib/gcc => gcc}/ddg.h (100%) rename {contrib/gcc => gcc}/debug.c (100%) rename {contrib/gcc => gcc}/debug.h (100%) rename {contrib/gcc => gcc}/defaults.h (100%) rename {contrib/gcc => gcc}/df-core.c (100%) rename {contrib/gcc => gcc}/df-problems.c (100%) rename {contrib/gcc => gcc}/df-scan.c (100%) rename {contrib/gcc => gcc}/df.h (100%) rename {contrib/gcc => gcc}/dfp.c (100%) rename {contrib/gcc => gcc}/dfp.h (100%) rename {contrib/gcc => gcc}/diagnostic.c (100%) rename {contrib/gcc => gcc}/diagnostic.def (100%) rename {contrib/gcc => gcc}/diagnostic.h (100%) rename {contrib/gcc => gcc}/doc/bugreport.texi (100%) rename {contrib/gcc => gcc}/doc/c-tree.texi (100%) rename {contrib/gcc => gcc}/doc/cfg.texi (100%) rename {contrib/gcc => gcc}/doc/collect2.texi (100%) rename {contrib/gcc => gcc}/doc/compat.texi (100%) rename {contrib/gcc => gcc}/doc/configfiles.texi (100%) rename {contrib/gcc => gcc}/doc/configterms.texi (100%) rename {contrib/gcc => gcc}/doc/contrib.texi (100%) rename {contrib/gcc => gcc}/doc/contribute.texi (100%) rename {contrib/gcc => gcc}/doc/cpp.1 (100%) rename {contrib/gcc => gcc}/doc/cpp.texi (100%) rename {contrib/gcc => gcc}/doc/cppenv.texi (100%) rename {contrib/gcc => gcc}/doc/cppinternals.texi (100%) rename {contrib/gcc => gcc}/doc/cppopts.texi (100%) rename {contrib/gcc => gcc}/doc/extend.texi (100%) rename {contrib/gcc => gcc}/doc/fragments.texi (100%) rename {contrib/gcc => gcc}/doc/frontends.texi (100%) rename {contrib/gcc => gcc}/doc/gcc.1 (100%) rename {contrib/gcc => gcc}/doc/gcc.texi (100%) rename {contrib/gcc => gcc}/doc/gccint.texi (100%) rename {contrib/gcc => gcc}/doc/gcov.1 (100%) rename {contrib/gcc => gcc}/doc/gcov.texi (100%) rename {contrib/gcc => gcc}/doc/gnu.texi (100%) rename {contrib/gcc => gcc}/doc/gty.texi (100%) rename {contrib/gcc => gcc}/doc/headerdirs.texi (100%) rename {contrib/gcc => gcc}/doc/hostconfig.texi (100%) rename {contrib/gcc => gcc}/doc/implement-c.texi (100%) rename {contrib/gcc => gcc}/doc/include/fdl.texi (100%) rename {contrib/gcc => gcc}/doc/include/funding.texi (100%) rename {contrib/gcc => gcc}/doc/include/gcc-common.texi (100%) rename {contrib/gcc => gcc}/doc/include/gpl.texi (100%) rename {contrib/gcc => gcc}/doc/include/texinfo.tex (100%) rename {contrib/gcc => gcc}/doc/interface.texi (100%) rename {contrib/gcc => gcc}/doc/invoke.texi (100%) rename {contrib/gcc => gcc}/doc/languages.texi (100%) rename {contrib/gcc => gcc}/doc/libgcc.texi (100%) rename {contrib/gcc => gcc}/doc/loop.texi (100%) rename {contrib/gcc => gcc}/doc/makefile.texi (100%) rename {contrib/gcc => gcc}/doc/md.texi (100%) rename {contrib/gcc => gcc}/doc/objc.texi (100%) rename {contrib/gcc => gcc}/doc/options.texi (100%) rename {contrib/gcc => gcc}/doc/passes.texi (100%) rename {contrib/gcc => gcc}/doc/portability.texi (100%) rename {contrib/gcc => gcc}/doc/rtl.texi (100%) rename {contrib/gcc => gcc}/doc/service.texi (100%) rename {contrib/gcc => gcc}/doc/sourcebuild.texi (100%) rename {contrib/gcc => gcc}/doc/standards.texi (100%) rename {contrib/gcc => gcc}/doc/tm.texi (100%) rename {contrib/gcc => gcc}/doc/tree-ssa.texi (100%) rename {contrib/gcc => gcc}/doc/trouble.texi (100%) rename {contrib/gcc => gcc}/dojump.c (100%) rename {contrib/gcc => gcc}/dominance.c (100%) rename {contrib/gcc => gcc}/domwalk.c (100%) rename {contrib/gcc => gcc}/domwalk.h (100%) rename {contrib/gcc => gcc}/double-int.c (100%) rename {contrib/gcc => gcc}/double-int.h (100%) rename {contrib/gcc => gcc}/dummy-checksum.c (100%) rename {contrib/gcc => gcc}/dwarf.h (100%) rename {contrib/gcc => gcc}/dwarf2.h (100%) rename {contrib/gcc => gcc}/dwarf2asm.c (100%) rename {contrib/gcc => gcc}/dwarf2asm.h (100%) rename {contrib/gcc => gcc}/dwarf2out.c (100%) rename {contrib/gcc => gcc}/dwarf2out.h (100%) rename {contrib/gcc => gcc}/emit-rtl.c (100%) rename {contrib/gcc => gcc}/emit-rtl.h (100%) rename {contrib/gcc => gcc}/emutls.c (100%) rename {contrib/gcc => gcc}/errors.c (100%) rename {contrib/gcc => gcc}/errors.h (100%) rename {contrib/gcc => gcc}/et-forest.c (100%) rename {contrib/gcc => gcc}/et-forest.h (100%) rename {contrib/gcc => gcc}/except.c (100%) rename {contrib/gcc => gcc}/except.h (100%) rename {contrib/gcc => gcc}/explow.c (100%) rename {contrib/gcc => gcc}/expmed.c (100%) rename {contrib/gcc => gcc}/expr.c (100%) rename {contrib/gcc => gcc}/expr.h (100%) rename {contrib/gcc => gcc}/final.c (100%) rename {contrib/gcc => gcc}/fix-header.c (100%) rename {contrib/gcc => gcc}/fixproto (100%) rename {contrib/gcc => gcc}/flags.h (100%) rename {contrib/gcc => gcc}/flow.c (100%) rename {contrib/gcc => gcc}/fold-const.c (100%) rename {contrib/gcc => gcc}/fp-test.c (100%) rename {contrib/gcc => gcc}/function.c (100%) rename {contrib/gcc => gcc}/function.h (100%) rename {contrib/gcc => gcc}/gbl-ctors.h (100%) rename {contrib/gcc => gcc}/gcc.c (100%) rename {contrib/gcc => gcc}/gcc.h (100%) rename {contrib/gcc => gcc}/gccbug.in (100%) rename {contrib/gcc => gcc}/gccspec.c (100%) rename {contrib/gcc => gcc}/gcov-dump.c (100%) rename {contrib/gcc => gcc}/gcov-io.c (100%) rename {contrib/gcc => gcc}/gcov-io.h (100%) rename {contrib/gcc => gcc}/gcov-iov.c (100%) rename {contrib/gcc => gcc}/gcov.c (100%) rename {contrib/gcc => gcc}/gcse.c (100%) rename {contrib/gcc => gcc}/gdbinit.in (100%) rename {contrib/gcc => gcc}/gen-protos.c (100%) rename {contrib/gcc => gcc}/genattr.c (100%) rename {contrib/gcc => gcc}/genattrtab.c (100%) rename {contrib/gcc => gcc}/genautomata.c (100%) rename {contrib/gcc => gcc}/gencheck.c (100%) rename {contrib/gcc => gcc}/genchecksum.c (100%) rename {contrib/gcc => gcc}/gencodes.c (100%) rename {contrib/gcc => gcc}/genconditions.c (100%) rename {contrib/gcc => gcc}/genconfig.c (100%) rename {contrib/gcc => gcc}/genconstants.c (100%) rename {contrib/gcc => gcc}/genemit.c (100%) rename {contrib/gcc => gcc}/genextract.c (100%) rename {contrib/gcc => gcc}/genflags.c (100%) rename {contrib/gcc => gcc}/gengenrtl.c (100%) rename {contrib/gcc => gcc}/gengtype-lex.l (100%) rename {contrib/gcc => gcc}/gengtype-yacc.y (100%) rename {contrib/gcc => gcc}/gengtype.c (100%) rename {contrib/gcc => gcc}/gengtype.h (100%) rename {contrib/gcc => gcc}/genmddeps.c (100%) rename {contrib/gcc => gcc}/genmodes.c (100%) rename {contrib/gcc => gcc}/genmultilib (100%) rename {contrib/gcc => gcc}/genopinit.c (100%) rename {contrib/gcc => gcc}/genoutput.c (100%) rename {contrib/gcc => gcc}/genpeep.c (100%) rename {contrib/gcc => gcc}/genpreds.c (100%) rename {contrib/gcc => gcc}/genrecog.c (100%) rename {contrib/gcc => gcc}/gensupport.c (100%) rename {contrib/gcc => gcc}/gensupport.h (100%) rename {contrib/gcc => gcc}/ggc-common.c (100%) rename {contrib/gcc => gcc}/ggc-none.c (100%) rename {contrib/gcc => gcc}/ggc-page.c (100%) rename {contrib/gcc => gcc}/ggc-zone.c (100%) rename {contrib/gcc => gcc}/ggc.h (100%) rename {contrib/gcc => gcc}/gimple-low.c (100%) rename {contrib/gcc => gcc}/gimplify.c (100%) rename {contrib/gcc => gcc}/ginclude/decfloat.h (100%) rename {contrib/gcc => gcc}/ginclude/float.h (100%) rename {contrib/gcc => gcc}/ginclude/iso646.h (100%) rename {contrib/gcc => gcc}/ginclude/stdarg.h (100%) rename {contrib/gcc => gcc}/ginclude/stdbool.h (100%) rename {contrib/gcc => gcc}/ginclude/stddef.h (100%) rename {contrib/gcc => gcc}/ginclude/varargs.h (100%) rename {contrib/gcc => gcc}/glimits.h (100%) rename {contrib/gcc => gcc}/global.c (100%) rename {contrib/gcc => gcc}/graph.c (100%) rename {contrib/gcc => gcc}/graph.h (100%) rename {contrib/gcc => gcc}/gstab.h (100%) rename {contrib/gcc => gcc}/gsyms.h (100%) rename {contrib/gcc => gcc}/gsyslimits.h (100%) rename {contrib/gcc => gcc}/gthr-aix.h (100%) rename {contrib/gcc => gcc}/gthr-dce.h (100%) rename {contrib/gcc => gcc}/gthr-gnat.c (100%) rename {contrib/gcc => gcc}/gthr-gnat.h (100%) rename {contrib/gcc => gcc}/gthr-lynx.h (100%) rename {contrib/gcc => gcc}/gthr-nks.h (100%) rename {contrib/gcc => gcc}/gthr-posix.c (100%) rename {contrib/gcc => gcc}/gthr-posix.h (100%) rename {contrib/gcc => gcc}/gthr-posix95.h (100%) rename {contrib/gcc => gcc}/gthr-rtems.h (100%) rename {contrib/gcc => gcc}/gthr-single.h (100%) rename {contrib/gcc => gcc}/gthr-solaris.h (100%) rename {contrib/gcc => gcc}/gthr-tpf.h (100%) rename {contrib/gcc => gcc}/gthr-vxworks.h (100%) rename {contrib/gcc => gcc}/gthr-win32.h (100%) rename {contrib/gcc => gcc}/gthr.h (100%) rename {contrib/gcc => gcc}/haifa-sched.c (100%) rename {contrib/gcc => gcc}/hard-reg-set.h (100%) rename {contrib/gcc => gcc}/hooks.c (100%) rename {contrib/gcc => gcc}/hooks.h (100%) rename {contrib/gcc => gcc}/host-default.c (100%) rename {contrib/gcc => gcc}/hosthooks-def.h (100%) rename {contrib/gcc => gcc}/hosthooks.h (100%) rename {contrib/gcc => gcc}/hwint.h (100%) rename {contrib/gcc => gcc}/ifcvt.c (100%) rename {contrib/gcc => gcc}/input.h (100%) rename {contrib/gcc => gcc}/insn-addr.h (100%) rename {contrib/gcc => gcc}/insn-notes.def (100%) rename {contrib/gcc => gcc}/integrate.c (100%) rename {contrib/gcc => gcc}/integrate.h (100%) rename {contrib/gcc => gcc}/intl.c (100%) rename {contrib/gcc => gcc}/intl.h (100%) rename {contrib/gcc => gcc}/ipa-cp.c (100%) rename {contrib/gcc => gcc}/ipa-inline.c (100%) rename {contrib/gcc => gcc}/ipa-prop.c (100%) rename {contrib/gcc => gcc}/ipa-prop.h (100%) rename {contrib/gcc => gcc}/ipa-pure-const.c (100%) rename {contrib/gcc => gcc}/ipa-reference.c (100%) rename {contrib/gcc => gcc}/ipa-reference.h (100%) rename {contrib/gcc => gcc}/ipa-type-escape.c (100%) rename {contrib/gcc => gcc}/ipa-type-escape.h (100%) rename {contrib/gcc => gcc}/ipa-utils.c (100%) rename {contrib/gcc => gcc}/ipa-utils.h (100%) rename {contrib/gcc => gcc}/ipa.c (100%) rename {contrib/gcc => gcc}/jump.c (100%) rename {contrib/gcc => gcc}/lambda-code.c (100%) rename {contrib/gcc => gcc}/lambda-mat.c (100%) rename {contrib/gcc => gcc}/lambda-trans.c (100%) rename {contrib/gcc => gcc}/lambda.h (100%) rename {contrib/gcc => gcc}/langhooks-def.h (100%) rename {contrib/gcc => gcc}/langhooks.c (100%) rename {contrib/gcc => gcc}/langhooks.h (100%) rename {contrib/gcc => gcc}/lcm.c (100%) rename {contrib/gcc => gcc}/libada-mk.in (100%) rename {contrib/gcc => gcc}/libfuncs.h (100%) rename {contrib/gcc => gcc}/libgcc-std.ver (100%) rename {contrib/gcc => gcc}/libgcc2.c (100%) rename {contrib/gcc => gcc}/libgcc2.h (100%) rename {contrib/gcc => gcc}/libgcov.c (100%) rename {contrib/gcc => gcc}/limitx.h (100%) rename {contrib/gcc => gcc}/limity.h (100%) rename {contrib/gcc => gcc}/lists.c (100%) rename {contrib/gcc => gcc}/local-alloc.c (100%) rename {contrib/gcc => gcc}/longlong.h (100%) rename {contrib/gcc => gcc}/loop-doloop.c (100%) rename {contrib/gcc => gcc}/loop-init.c (100%) rename {contrib/gcc => gcc}/loop-invariant.c (100%) rename {contrib/gcc => gcc}/loop-iv.c (100%) rename {contrib/gcc => gcc}/loop-unroll.c (100%) rename {contrib/gcc => gcc}/loop-unswitch.c (100%) rename {contrib/gcc => gcc}/machmode.def (100%) rename {contrib/gcc => gcc}/machmode.h (100%) rename {contrib/gcc => gcc}/main.c (100%) rename {contrib/gcc => gcc}/mips-tdump.c (100%) rename {contrib/gcc => gcc}/mips-tfile.c (100%) rename {contrib/gcc => gcc}/mkconfig.sh (100%) rename {contrib/gcc => gcc}/mklibgcc.in (100%) rename {contrib/gcc => gcc}/mkmap-flat.awk (100%) rename {contrib/gcc => gcc}/mkmap-symver.awk (100%) rename {contrib/gcc => gcc}/mode-classes.def (100%) rename {contrib/gcc => gcc}/mode-switching.c (100%) rename {contrib/gcc => gcc}/modulo-sched.c (100%) rename {contrib/gcc => gcc}/objc/ChangeLog (100%) rename {contrib/gcc => gcc}/objc/Make-lang.in (100%) rename {contrib/gcc => gcc}/objc/README (100%) rename {contrib/gcc => gcc}/objc/config-lang.in (100%) rename {contrib/gcc => gcc}/objc/lang-specs.h (100%) rename {contrib/gcc => gcc}/objc/objc-act.c (100%) rename {contrib/gcc => gcc}/objc/objc-act.h (100%) rename {contrib/gcc => gcc}/objc/objc-lang.c (100%) rename {contrib/gcc => gcc}/objc/objc-tree.def (100%) rename {contrib/gcc => gcc}/omp-builtins.def (100%) rename {contrib/gcc => gcc}/omp-low.c (100%) rename {contrib/gcc => gcc}/opt-functions.awk (100%) rename {contrib/gcc => gcc}/opt-gather.awk (100%) rename {contrib/gcc => gcc}/optabs.c (100%) rename {contrib/gcc => gcc}/optabs.h (100%) rename {contrib/gcc => gcc}/optc-gen.awk (100%) rename {contrib/gcc => gcc}/opth-gen.awk (100%) rename {contrib/gcc => gcc}/opts-common.c (100%) rename {contrib/gcc => gcc}/opts.c (100%) rename {contrib/gcc => gcc}/opts.h (100%) rename {contrib/gcc => gcc}/output.h (100%) rename {contrib/gcc => gcc}/params.c (100%) rename {contrib/gcc => gcc}/params.def (100%) rename {contrib/gcc => gcc}/params.h (100%) rename {contrib/gcc => gcc}/passes.c (100%) rename {contrib/gcc => gcc}/pointer-set.c (100%) rename {contrib/gcc => gcc}/pointer-set.h (100%) rename {contrib/gcc => gcc}/postreload-gcse.c (100%) rename {contrib/gcc => gcc}/postreload.c (100%) rename {contrib/gcc => gcc}/predict.c (100%) rename {contrib/gcc => gcc}/predict.def (100%) rename {contrib/gcc => gcc}/predict.h (100%) rename {contrib/gcc => gcc}/prefix.c (100%) rename {contrib/gcc => gcc}/prefix.h (100%) rename {contrib/gcc => gcc}/pretty-print.c (100%) rename {contrib/gcc => gcc}/pretty-print.h (100%) rename {contrib/gcc => gcc}/print-rtl.c (100%) rename {contrib/gcc => gcc}/print-tree.c (100%) rename {contrib/gcc => gcc}/profile.c (100%) rename {contrib/gcc => gcc}/protoize.c (100%) rename {contrib/gcc => gcc}/read-rtl.c (100%) rename {contrib/gcc => gcc}/real.c (100%) rename {contrib/gcc => gcc}/real.h (100%) rename {contrib/gcc => gcc}/recog.c (100%) rename {contrib/gcc => gcc}/recog.h (100%) rename {contrib/gcc => gcc}/reg-notes.def (100%) rename {contrib/gcc => gcc}/reg-stack.c (100%) rename {contrib/gcc => gcc}/regclass.c (100%) rename {contrib/gcc => gcc}/regmove.c (100%) rename {contrib/gcc => gcc}/regrename.c (100%) rename {contrib/gcc => gcc}/regs.h (100%) rename {contrib/gcc => gcc}/reload.c (100%) rename {contrib/gcc => gcc}/reload.h (100%) rename {contrib/gcc => gcc}/reload1.c (100%) rename {contrib/gcc => gcc}/reorg.c (100%) rename {contrib/gcc => gcc}/resource.c (100%) rename {contrib/gcc => gcc}/resource.h (100%) rename {contrib/gcc => gcc}/rtl-error.c (100%) rename {contrib/gcc => gcc}/rtl-factoring.c (100%) rename {contrib/gcc => gcc}/rtl.c (100%) rename {contrib/gcc => gcc}/rtl.def (100%) rename {contrib/gcc => gcc}/rtl.h (100%) rename {contrib/gcc => gcc}/rtlanal.c (100%) rename {contrib/gcc => gcc}/rtlhooks-def.h (100%) rename {contrib/gcc => gcc}/rtlhooks.c (100%) rename {contrib/gcc => gcc}/sbitmap.c (100%) rename {contrib/gcc => gcc}/sbitmap.h (100%) rename {contrib/gcc => gcc}/scan-decls.c (100%) rename {contrib/gcc => gcc}/scan-types.sh (100%) rename {contrib/gcc => gcc}/scan.c (100%) rename {contrib/gcc => gcc}/scan.h (100%) rename {contrib/gcc => gcc}/sched-deps.c (100%) rename {contrib/gcc => gcc}/sched-ebb.c (100%) rename {contrib/gcc => gcc}/sched-int.h (100%) rename {contrib/gcc => gcc}/sched-rgn.c (100%) rename {contrib/gcc => gcc}/sched-vis.c (100%) rename {contrib/gcc => gcc}/sdbout.c (100%) rename {contrib/gcc => gcc}/sdbout.h (100%) rename {contrib/gcc => gcc}/see.c (100%) rename {contrib/gcc => gcc}/simplify-rtx.c (100%) rename {contrib/gcc => gcc}/sort-protos (100%) rename {contrib/gcc => gcc}/sreal.c (100%) rename {contrib/gcc => gcc}/sreal.h (100%) rename {contrib/gcc => gcc}/stab.def (100%) rename {contrib/gcc => gcc}/statistics.h (100%) rename {contrib/gcc => gcc}/stmt.c (100%) rename {contrib/gcc => gcc}/stor-layout.c (100%) rename {contrib/gcc => gcc}/stringpool.c (100%) rename {contrib/gcc => gcc}/struct-equiv.c (100%) rename {contrib/gcc => gcc}/stub-objc.c (100%) rename {contrib/gcc => gcc}/sync-builtins.def (100%) rename {contrib/gcc => gcc}/sys-protos.h (100%) rename {contrib/gcc => gcc}/sys-types.h (100%) rename {contrib/gcc => gcc}/system.h (100%) rename {contrib/gcc => gcc}/target-def.h (100%) rename {contrib/gcc => gcc}/target.h (100%) rename {contrib/gcc => gcc}/targhooks.c (100%) rename {contrib/gcc => gcc}/targhooks.h (100%) rename {contrib/gcc => gcc}/timevar.c (100%) rename {contrib/gcc => gcc}/timevar.def (100%) rename {contrib/gcc => gcc}/timevar.h (100%) rename {contrib/gcc => gcc}/tlink.c (100%) rename {contrib/gcc => gcc}/toplev.c (100%) rename {contrib/gcc => gcc}/toplev.h (100%) rename {contrib/gcc => gcc}/tracer.c (100%) rename {contrib/gcc => gcc}/tree-browser.c (100%) rename {contrib/gcc => gcc}/tree-browser.def (100%) rename {contrib/gcc => gcc}/tree-cfg.c (100%) rename {contrib/gcc => gcc}/tree-cfgcleanup.c (100%) rename {contrib/gcc => gcc}/tree-chrec.c (100%) rename {contrib/gcc => gcc}/tree-chrec.h (100%) rename {contrib/gcc => gcc}/tree-complex.c (100%) rename {contrib/gcc => gcc}/tree-data-ref.c (100%) rename {contrib/gcc => gcc}/tree-data-ref.h (100%) rename {contrib/gcc => gcc}/tree-dfa.c (100%) rename {contrib/gcc => gcc}/tree-dump.c (100%) rename {contrib/gcc => gcc}/tree-dump.h (100%) rename {contrib/gcc => gcc}/tree-eh.c (100%) rename {contrib/gcc => gcc}/tree-flow-inline.h (100%) rename {contrib/gcc => gcc}/tree-flow.h (100%) rename {contrib/gcc => gcc}/tree-gimple.c (100%) rename {contrib/gcc => gcc}/tree-gimple.h (100%) rename {contrib/gcc => gcc}/tree-if-conv.c (100%) rename {contrib/gcc => gcc}/tree-inline.c (100%) rename {contrib/gcc => gcc}/tree-inline.h (100%) rename {contrib/gcc => gcc}/tree-into-ssa.c (100%) rename {contrib/gcc => gcc}/tree-iterator.c (100%) rename {contrib/gcc => gcc}/tree-iterator.h (100%) rename {contrib/gcc => gcc}/tree-loop-linear.c (100%) rename {contrib/gcc => gcc}/tree-mudflap.c (100%) rename {contrib/gcc => gcc}/tree-mudflap.h (100%) rename {contrib/gcc => gcc}/tree-nested.c (100%) rename {contrib/gcc => gcc}/tree-nomudflap.c (100%) rename {contrib/gcc => gcc}/tree-nrv.c (100%) rename {contrib/gcc => gcc}/tree-object-size.c (100%) rename {contrib/gcc => gcc}/tree-optimize.c (100%) rename {contrib/gcc => gcc}/tree-outof-ssa.c (100%) rename {contrib/gcc => gcc}/tree-pass.h (100%) rename {contrib/gcc => gcc}/tree-phinodes.c (100%) rename {contrib/gcc => gcc}/tree-pretty-print.c (100%) rename {contrib/gcc => gcc}/tree-profile.c (100%) rename {contrib/gcc => gcc}/tree-scalar-evolution.c (100%) rename {contrib/gcc => gcc}/tree-scalar-evolution.h (100%) rename {contrib/gcc => gcc}/tree-sra.c (100%) rename {contrib/gcc => gcc}/tree-ssa-address.c (100%) rename {contrib/gcc => gcc}/tree-ssa-alias.c (100%) rename {contrib/gcc => gcc}/tree-ssa-ccp.c (100%) rename {contrib/gcc => gcc}/tree-ssa-copy.c (100%) rename {contrib/gcc => gcc}/tree-ssa-copyrename.c (100%) rename {contrib/gcc => gcc}/tree-ssa-dce.c (100%) rename {contrib/gcc => gcc}/tree-ssa-dom.c (100%) rename {contrib/gcc => gcc}/tree-ssa-dse.c (100%) rename {contrib/gcc => gcc}/tree-ssa-forwprop.c (100%) rename {contrib/gcc => gcc}/tree-ssa-live.c (100%) rename {contrib/gcc => gcc}/tree-ssa-live.h (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-ch.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-im.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-ivcanon.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-ivopts.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-manip.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-niter.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-prefetch.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop-unswitch.c (100%) rename {contrib/gcc => gcc}/tree-ssa-loop.c (100%) rename {contrib/gcc => gcc}/tree-ssa-math-opts.c (100%) rename {contrib/gcc => gcc}/tree-ssa-operands.c (100%) rename {contrib/gcc => gcc}/tree-ssa-operands.h (100%) rename {contrib/gcc => gcc}/tree-ssa-phiopt.c (100%) rename {contrib/gcc => gcc}/tree-ssa-pre.c (100%) rename {contrib/gcc => gcc}/tree-ssa-propagate.c (100%) rename {contrib/gcc => gcc}/tree-ssa-propagate.h (100%) rename {contrib/gcc => gcc}/tree-ssa-reassoc.c (100%) rename {contrib/gcc => gcc}/tree-ssa-sink.c (100%) rename {contrib/gcc => gcc}/tree-ssa-structalias.c (100%) rename {contrib/gcc => gcc}/tree-ssa-structalias.h (100%) rename {contrib/gcc => gcc}/tree-ssa-threadedge.c (100%) rename {contrib/gcc => gcc}/tree-ssa-threadupdate.c (100%) rename {contrib/gcc => gcc}/tree-ssa-uncprop.c (100%) rename {contrib/gcc => gcc}/tree-ssa.c (100%) rename {contrib/gcc => gcc}/tree-ssanames.c (100%) rename {contrib/gcc => gcc}/tree-stdarg.c (100%) rename {contrib/gcc => gcc}/tree-stdarg.h (100%) rename {contrib/gcc => gcc}/tree-tailcall.c (100%) rename {contrib/gcc => gcc}/tree-vect-analyze.c (100%) rename {contrib/gcc => gcc}/tree-vect-generic.c (100%) rename {contrib/gcc => gcc}/tree-vect-patterns.c (100%) rename {contrib/gcc => gcc}/tree-vect-transform.c (100%) rename {contrib/gcc => gcc}/tree-vectorizer.c (100%) rename {contrib/gcc => gcc}/tree-vectorizer.h (100%) rename {contrib/gcc => gcc}/tree-vn.c (100%) rename {contrib/gcc => gcc}/tree-vrp.c (100%) rename {contrib/gcc => gcc}/tree.c (100%) rename {contrib/gcc => gcc}/tree.def (100%) rename {contrib/gcc => gcc}/tree.h (100%) rename {contrib/gcc => gcc}/treestruct.def (100%) rename {contrib/gcc => gcc}/tsystem.h (100%) rename {contrib/gcc => gcc}/typeclass.h (100%) rename {contrib/gcc => gcc}/unwind-c.c (100%) rename {contrib/gcc => gcc}/unwind-compat.c (100%) rename {contrib/gcc => gcc}/unwind-compat.h (100%) rename {contrib/gcc => gcc}/unwind-dw2-fde-compat.c (100%) rename {contrib/gcc => gcc}/unwind-dw2-fde-darwin.c (100%) rename {contrib/gcc => gcc}/unwind-dw2-fde-glibc.c (100%) rename {contrib/gcc => gcc}/unwind-dw2-fde.c (100%) rename {contrib/gcc => gcc}/unwind-dw2-fde.h (100%) rename {contrib/gcc => gcc}/unwind-dw2.c (100%) rename {contrib/gcc => gcc}/unwind-dw2.h (100%) rename {contrib/gcc => gcc}/unwind-generic.h (100%) rename {contrib/gcc => gcc}/unwind-pe.h (100%) rename {contrib/gcc => gcc}/unwind-sjlj.c (100%) rename {contrib/gcc => gcc}/unwind.inc (100%) rename {contrib/gcc => gcc}/value-prof.c (100%) rename {contrib/gcc => gcc}/value-prof.h (100%) rename {contrib/gcc => gcc}/var-tracking.c (100%) rename {contrib/gcc => gcc}/varasm.c (100%) rename {contrib/gcc => gcc}/varray.c (100%) rename {contrib/gcc => gcc}/varray.h (100%) rename {contrib/gcc => gcc}/vec.c (100%) rename {contrib/gcc => gcc}/vec.h (100%) rename {contrib/gcc => gcc}/vecprim.h (100%) rename {contrib/gcc => gcc}/version.c (100%) rename {contrib/gcc => gcc}/version.h (100%) rename {contrib/gcc => gcc}/vmsdbg.h (100%) rename {contrib/gcc => gcc}/vmsdbgout.c (100%) rename {contrib/gcc => gcc}/web.c (100%) rename {contrib/gcc => gcc}/xcoff.h (100%) rename {contrib/gcc => gcc}/xcoffout.c (100%) rename {contrib/gcc => gcc}/xcoffout.h (100%) rename {contrib/gcclibs/include => include}/COPYING (100%) rename {contrib/gcclibs/include => include}/ChangeLog (100%) rename {contrib/gcclibs/include => include}/ChangeLog-9103 (100%) rename {contrib/gcclibs/include => include}/ansidecl.h (100%) rename {contrib/gcclibs/include => include}/demangle.h (100%) rename {contrib/gcclibs/include => include}/dyn-string.h (100%) rename {contrib/gcclibs/include => include}/fibheap.h (100%) rename {contrib/gcclibs/include => include}/filenames.h (100%) rename {contrib/gcclibs/include => include}/floatformat.h (100%) rename {contrib/gcclibs/include => include}/fnmatch.h (100%) rename {contrib/gcclibs/include => include}/getopt.h (100%) rename {contrib/gcclibs/include => include}/hashtab.h (100%) rename {contrib/gcclibs/include => include}/libiberty.h (100%) rename {contrib/gcclibs/include => include}/md5.h (100%) rename {contrib/gcclibs/include => include}/objalloc.h (100%) rename {contrib/gcclibs/include => include}/obstack.h (100%) rename {contrib/gcclibs/include => include}/partition.h (100%) rename {contrib/gcclibs/include => include}/safe-ctype.h (100%) rename {contrib/gcclibs/include => include}/sort.h (100%) rename {contrib/gcclibs/include => include}/splay-tree.h (100%) rename {contrib/gcclibs/include => include}/symcat.h (100%) rename {contrib/gcclibs/include => include}/ternary.h (100%) rename {contrib/gcclibs/include => include}/xregex.h (100%) rename {contrib/gcclibs/include => include}/xregex2.h (100%) rename {contrib/gcclibs/include => include}/xtensa-config.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/ChangeLog (100%) rename {contrib/gcclibs/libcpp => libcpp}/Makefile.in (100%) rename {contrib/gcclibs/libcpp => libcpp}/aclocal.m4 (100%) rename {contrib/gcclibs/libcpp => libcpp}/charset.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/config.in (100%) rename {contrib/gcclibs/libcpp => libcpp}/configure (100%) rename {contrib/gcclibs/libcpp => libcpp}/configure.ac (100%) rename {contrib/gcclibs/libcpp => libcpp}/directives.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/errors.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/expr.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/files.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/identifiers.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/include/cpp-id-data.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/include/cpplib.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/include/line-map.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/include/mkdeps.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/include/symtab.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/init.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/internal.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/lex.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/line-map.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/macro.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/makedepend.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/makeucnid.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/mkdeps.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/pch.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/symtab.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/system.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/traditional.c (100%) rename {contrib/gcclibs/libcpp => libcpp}/ucnid.h (100%) rename {contrib/gcclibs/libcpp => libcpp}/ucnid.tab (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/ChangeLog (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/Makefile.in (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/aclocal.m4 (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/config.in (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/configure (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/configure.ac (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decContext.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decContext.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decDPD.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decLibrary.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decNumber.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decNumber.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decNumberLocal.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decRound.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decUtility.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decUtility.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decimal128.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decimal128.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decimal32.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decimal32.h (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decimal64.c (100%) rename {contrib/gcclibs/libdecnumber => libdecnumber}/decimal64.h (100%) rename {contrib/libf2c => libf2c}/ChangeLog (100%) rename {contrib/libf2c => libf2c}/Makefile.in (100%) rename {contrib/libf2c => libf2c}/README (100%) rename {contrib/libf2c => libf2c}/TODO (100%) rename {contrib/libf2c => libf2c}/aclocal.m4 (100%) rename {contrib/libf2c => libf2c}/changes.netlib (100%) rename {contrib/libf2c => libf2c}/configure (100%) rename {contrib/libf2c => libf2c}/configure.in (100%) rename {contrib/libf2c => libf2c}/disclaimer.netlib (100%) rename {contrib/libf2c => libf2c}/f2c.h (100%) rename {contrib/libf2c => libf2c}/f2cext.c (100%) rename {contrib/libf2c => libf2c}/g2c.hin (100%) rename {contrib/libf2c => libf2c}/libF77/F77_aloc.c (100%) rename {contrib/libf2c => libf2c}/libF77/Makefile.in (100%) rename {contrib/libf2c => libf2c}/libF77/Notice (100%) rename {contrib/libf2c => libf2c}/libF77/README.netlib (100%) rename {contrib/libf2c => libf2c}/libF77/Version.c (100%) rename {contrib/libf2c => libf2c}/libF77/abort_.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_abs.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_cos.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_div.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_exp.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_log.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_sin.c (100%) rename {contrib/libf2c => libf2c}/libF77/c_sqrt.c (100%) rename {contrib/libf2c => libf2c}/libF77/cabs.c (100%) rename {contrib/libf2c => libf2c}/libF77/configure (100%) rename {contrib/libf2c => libf2c}/libF77/configure.in (100%) rename {contrib/libf2c => libf2c}/libF77/d_abs.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_acos.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_asin.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_atan.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_atn2.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_cnjg.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_cos.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_cosh.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_dim.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_exp.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_imag.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_int.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_lg10.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_log.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_mod.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_nint.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_prod.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_sign.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_sin.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_sinh.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_sqrt.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_tan.c (100%) rename {contrib/libf2c => libf2c}/libF77/d_tanh.c (100%) rename {contrib/libf2c => libf2c}/libF77/derf_.c (100%) rename {contrib/libf2c => libf2c}/libF77/derfc_.c (100%) rename {contrib/libf2c => libf2c}/libF77/dtime_.c (100%) rename {contrib/libf2c => libf2c}/libF77/ef1asc_.c (100%) rename {contrib/libf2c => libf2c}/libF77/ef1cmc_.c (100%) rename {contrib/libf2c => libf2c}/libF77/erf_.c (100%) rename {contrib/libf2c => libf2c}/libF77/erfc_.c (100%) rename {contrib/libf2c => libf2c}/libF77/etime_.c (100%) rename {contrib/libf2c => libf2c}/libF77/exit_.c (100%) rename {contrib/libf2c => libf2c}/libF77/f2ch.add (100%) rename {contrib/libf2c => libf2c}/libF77/getarg_.c (100%) rename {contrib/libf2c => libf2c}/libF77/getenv_.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_abs.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_dim.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_dnnt.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_indx.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_len.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_mod.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_nint.c (100%) rename {contrib/libf2c => libf2c}/libF77/h_sign.c (100%) rename {contrib/libf2c => libf2c}/libF77/hl_ge.c (100%) rename {contrib/libf2c => libf2c}/libF77/hl_gt.c (100%) rename {contrib/libf2c => libf2c}/libF77/hl_le.c (100%) rename {contrib/libf2c => libf2c}/libF77/hl_lt.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_abs.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_dim.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_dnnt.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_indx.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_len.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_mod.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_nint.c (100%) rename {contrib/libf2c => libf2c}/libF77/i_sign.c (100%) rename {contrib/libf2c => libf2c}/libF77/iargc_.c (100%) rename {contrib/libf2c => libf2c}/libF77/l_ge.c (100%) rename {contrib/libf2c => libf2c}/libF77/l_gt.c (100%) rename {contrib/libf2c => libf2c}/libF77/l_le.c (100%) rename {contrib/libf2c => libf2c}/libF77/l_lt.c (100%) rename {contrib/libf2c => libf2c}/libF77/lbitbits.c (100%) rename {contrib/libf2c => libf2c}/libF77/lbitshft.c (100%) rename {contrib/libf2c => libf2c}/libF77/main.c (100%) rename {contrib/libf2c => libf2c}/libF77/makefile.netlib (100%) rename {contrib/libf2c => libf2c}/libF77/pow_ci.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_dd.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_di.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_hh.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_ii.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_qq.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_ri.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_zi.c (100%) rename {contrib/libf2c => libf2c}/libF77/pow_zz.c (100%) rename {contrib/libf2c => libf2c}/libF77/qbitbits.c (100%) rename {contrib/libf2c => libf2c}/libF77/qbitshft.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_abs.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_acos.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_asin.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_atan.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_atn2.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_cnjg.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_cos.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_cosh.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_dim.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_exp.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_imag.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_int.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_lg10.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_log.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_mod.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_nint.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_sign.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_sin.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_sinh.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_sqrt.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_tan.c (100%) rename {contrib/libf2c => libf2c}/libF77/r_tanh.c (100%) rename {contrib/libf2c => libf2c}/libF77/s_cat.c (100%) rename {contrib/libf2c => libf2c}/libF77/s_cmp.c (100%) rename {contrib/libf2c => libf2c}/libF77/s_copy.c (100%) rename {contrib/libf2c => libf2c}/libF77/s_paus.c (100%) rename {contrib/libf2c => libf2c}/libF77/s_rnge.c (100%) rename {contrib/libf2c => libf2c}/libF77/s_stop.c (100%) rename {contrib/libf2c => libf2c}/libF77/setarg.c (100%) rename {contrib/libf2c => libf2c}/libF77/setsig.c (100%) rename {contrib/libf2c => libf2c}/libF77/sig_die.c (100%) rename {contrib/libf2c => libf2c}/libF77/signal1.h (100%) rename {contrib/libf2c => libf2c}/libF77/signal1.h0 (100%) rename {contrib/libf2c => libf2c}/libF77/signal_.c (100%) rename {contrib/libf2c => libf2c}/libF77/system_.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_abs.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_cos.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_div.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_exp.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_log.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_sin.c (100%) rename {contrib/libf2c => libf2c}/libF77/z_sqrt.c (100%) rename {contrib/libf2c => libf2c}/libI77/Makefile.in (100%) rename {contrib/libf2c => libf2c}/libI77/Notice (100%) rename {contrib/libf2c => libf2c}/libI77/README.netlib (100%) rename {contrib/libf2c => libf2c}/libI77/Version.c (100%) rename {contrib/libf2c => libf2c}/libI77/backspace.c (100%) rename {contrib/libf2c => libf2c}/libI77/close.c (100%) rename {contrib/libf2c => libf2c}/libI77/config.h.in (100%) rename {contrib/libf2c => libf2c}/libI77/configure (100%) rename {contrib/libf2c => libf2c}/libI77/configure.in (100%) rename {contrib/libf2c => libf2c}/libI77/dfe.c (100%) rename {contrib/libf2c => libf2c}/libI77/dolio.c (100%) rename {contrib/libf2c => libf2c}/libI77/due.c (100%) rename {contrib/libf2c => libf2c}/libI77/endfile.c (100%) rename {contrib/libf2c => libf2c}/libI77/err.c (100%) rename {contrib/libf2c => libf2c}/libI77/f2ch.add (100%) rename {contrib/libf2c => libf2c}/libI77/fio.h (100%) rename {contrib/libf2c => libf2c}/libI77/fmt.c (100%) rename {contrib/libf2c => libf2c}/libI77/fmt.h (100%) rename {contrib/libf2c => libf2c}/libI77/fmtlib.c (100%) rename {contrib/libf2c => libf2c}/libI77/fp.h (100%) rename {contrib/libf2c => libf2c}/libI77/ftell_.c (100%) rename {contrib/libf2c => libf2c}/libI77/iio.c (100%) rename {contrib/libf2c => libf2c}/libI77/ilnw.c (100%) rename {contrib/libf2c => libf2c}/libI77/inquire.c (100%) rename {contrib/libf2c => libf2c}/libI77/lio.h (100%) rename {contrib/libf2c => libf2c}/libI77/lread.c (100%) rename {contrib/libf2c => libf2c}/libI77/lwrite.c (100%) rename {contrib/libf2c => libf2c}/libI77/makefile.netlib (100%) rename {contrib/libf2c => libf2c}/libI77/open.c (100%) rename {contrib/libf2c => libf2c}/libI77/rdfmt.c (100%) rename {contrib/libf2c => libf2c}/libI77/rewind.c (100%) rename {contrib/libf2c => libf2c}/libI77/rsfe.c (100%) rename {contrib/libf2c => libf2c}/libI77/rsli.c (100%) rename {contrib/libf2c => libf2c}/libI77/rsne.c (100%) rename {contrib/libf2c => libf2c}/libI77/sfe.c (100%) rename {contrib/libf2c => libf2c}/libI77/stamp-h.in (100%) rename {contrib/libf2c => libf2c}/libI77/sue.c (100%) rename {contrib/libf2c => libf2c}/libI77/typesize.c (100%) rename {contrib/libf2c => libf2c}/libI77/uio.c (100%) rename {contrib/libf2c => libf2c}/libI77/util.c (100%) rename {contrib/libf2c => libf2c}/libI77/wref.c (100%) rename {contrib/libf2c => libf2c}/libI77/wrtfmt.c (100%) rename {contrib/libf2c => libf2c}/libI77/wsfe.c (100%) rename {contrib/libf2c => libf2c}/libI77/wsle.c (100%) rename {contrib/libf2c => libf2c}/libI77/wsne.c (100%) rename {contrib/libf2c => libf2c}/libI77/xwsne.c (100%) rename {contrib/libf2c => libf2c}/libU77/COPYING.LIB (100%) rename {contrib/libf2c => libf2c}/libU77/Makefile.in (100%) rename {contrib/libf2c => libf2c}/libU77/PROJECTS (100%) rename {contrib/libf2c => libf2c}/libU77/README (100%) rename {contrib/libf2c => libf2c}/libU77/Version.c (100%) rename {contrib/libf2c => libf2c}/libU77/access_.c (100%) rename {contrib/libf2c => libf2c}/libU77/acconfig.h (100%) rename {contrib/libf2c => libf2c}/libU77/aclocal.m4 (100%) rename {contrib/libf2c => libf2c}/libU77/alarm_.c (100%) rename {contrib/libf2c => libf2c}/libU77/chdir_.c (100%) rename {contrib/libf2c => libf2c}/libU77/chmod_.c (100%) rename {contrib/libf2c => libf2c}/libU77/config.hin (100%) rename {contrib/libf2c => libf2c}/libU77/configure (100%) rename {contrib/libf2c => libf2c}/libU77/configure.in (100%) rename {contrib/libf2c => libf2c}/libU77/ctime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/date_.c (100%) rename {contrib/libf2c => libf2c}/libU77/datetime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/dtime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/etime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/fdate_.c (100%) rename {contrib/libf2c => libf2c}/libU77/fgetc_.c (100%) rename {contrib/libf2c => libf2c}/libU77/flush1_.c (100%) rename {contrib/libf2c => libf2c}/libU77/fnum_.c (100%) rename {contrib/libf2c => libf2c}/libU77/fputc_.c (100%) rename {contrib/libf2c => libf2c}/libU77/fstat_.c (100%) rename {contrib/libf2c => libf2c}/libU77/gerror_.c (100%) rename {contrib/libf2c => libf2c}/libU77/getcwd_.c (100%) rename {contrib/libf2c => libf2c}/libU77/getgid_.c (100%) rename {contrib/libf2c => libf2c}/libU77/getlog_.c (100%) rename {contrib/libf2c => libf2c}/libU77/getpid_.c (100%) rename {contrib/libf2c => libf2c}/libU77/getuid_.c (100%) rename {contrib/libf2c => libf2c}/libU77/gmtime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/hostnm_.c (100%) rename {contrib/libf2c => libf2c}/libU77/idate_.c (100%) rename {contrib/libf2c => libf2c}/libU77/ierrno_.c (100%) rename {contrib/libf2c => libf2c}/libU77/irand_.c (100%) rename {contrib/libf2c => libf2c}/libU77/isatty_.c (100%) rename {contrib/libf2c => libf2c}/libU77/itime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/kill_.c (100%) rename {contrib/libf2c => libf2c}/libU77/link_.c (100%) rename {contrib/libf2c => libf2c}/libU77/lnblnk_.c (100%) rename {contrib/libf2c => libf2c}/libU77/lstat_.c (100%) rename {contrib/libf2c => libf2c}/libU77/ltime_.c (100%) rename {contrib/libf2c => libf2c}/libU77/mclock_.c (100%) rename {contrib/libf2c => libf2c}/libU77/perror_.c (100%) rename {contrib/libf2c => libf2c}/libU77/rand_.c (100%) rename {contrib/libf2c => libf2c}/libU77/rename_.c (100%) rename {contrib/libf2c => libf2c}/libU77/secnds_.c (100%) rename {contrib/libf2c => libf2c}/libU77/second_.c (100%) rename {contrib/libf2c => libf2c}/libU77/sleep_.c (100%) rename {contrib/libf2c => libf2c}/libU77/srand_.c (100%) rename {contrib/libf2c => libf2c}/libU77/stamp-h.in (100%) rename {contrib/libf2c => libf2c}/libU77/stat_.c (100%) rename {contrib/libf2c => libf2c}/libU77/symlnk_.c (100%) rename {contrib/libf2c => libf2c}/libU77/sys_clock_.c (100%) rename {contrib/libf2c => libf2c}/libU77/time_.c (100%) rename {contrib/libf2c => libf2c}/libU77/ttynam_.c (100%) rename {contrib/libf2c => libf2c}/libU77/u77-test.f (100%) rename {contrib/libf2c => libf2c}/libU77/umask_.c (100%) rename {contrib/libf2c => libf2c}/libU77/unlink_.c (100%) rename {contrib/libf2c => libf2c}/libU77/vxtidate_.c (100%) rename {contrib/libf2c => libf2c}/libU77/vxttime_.c (100%) rename {contrib/libf2c => libf2c}/permission.netlib (100%) rename {contrib/libf2c => libf2c}/readme.netlib (100%) rename {contrib/libg++ => libg++}/COPYING (100%) rename {contrib/libg++ => libg++}/COPYING.LIB (100%) rename {contrib/libg++ => libg++}/include/ChangeLog (100%) rename {contrib/libg++ => libg++}/include/ansidecl.h (100%) rename {contrib/libg++ => libg++}/include/demangle.h (100%) rename {contrib/libg++ => libg++}/include/floatformat.h (100%) rename {contrib/libg++ => libg++}/include/getopt.h (100%) rename {contrib/libg++ => libg++}/include/libiberty.h (100%) rename {contrib/libg++ => libg++}/include/obstack.h (100%) rename {contrib/libg++ => libg++}/libg++/ChangeLog (100%) rename {contrib/libg++ => libg++}/libg++/Makefile.in (100%) rename {contrib/libg++ => libg++}/libg++/NEWS (100%) rename {contrib/libg++ => libg++}/libg++/README (100%) rename {contrib/libg++ => libg++}/libg++/README.SHLIB (100%) rename {contrib/libg++ => libg++}/libg++/TODO (100%) rename {contrib/libg++ => libg++}/libg++/g++FAQ.texi (100%) rename {contrib/libg++ => libg++}/libg++/genclass/ChangeLog (100%) rename {contrib/libg++ => libg++}/libg++/genclass/Makefile.in (100%) rename {contrib/libg++ => libg++}/libg++/genclass/configure.in (100%) rename {contrib/libg++ => libg++}/libg++/genclass/expected.out (100%) rename {contrib/libg++ => libg++}/libg++/genclass/genclass.sh (100%) rename {contrib/libg++ => libg++}/libg++/genclass/gentest.sh (100%) rename {contrib/libg++ => libg++}/libg++/libg++.texi (100%) rename {contrib/libg++ => libg++}/libg++/src/ACG.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/ACG.h (100%) rename {contrib/libg++ => libg++}/libg++/src/AllocRing.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/AllocRing.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Binomial.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Binomial.h (100%) rename {contrib/libg++ => libg++}/libg++/src/BitSet.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/BitSet.h (100%) rename {contrib/libg++ => libg++}/libg++/src/BitString.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/BitString.h (100%) rename {contrib/libg++ => libg++}/libg++/src/ChangeLog (100%) rename {contrib/libg++ => libg++}/libg++/src/Complex.h (100%) rename {contrib/libg++ => libg++}/libg++/src/CursesW.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/CursesW.h (100%) rename {contrib/libg++ => libg++}/libg++/src/DLList.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/DLList.h (100%) rename {contrib/libg++ => libg++}/libg++/src/DiscUnif.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/DiscUnif.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Erlang.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Erlang.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Fix.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Fix.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Fix16.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Fix16.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Fix24.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Fix24.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Geom.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Geom.h (100%) rename {contrib/libg++ => libg++}/libg++/src/GetOpt.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/GetOpt.h (100%) rename {contrib/libg++ => libg++}/libg++/src/HypGeom.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/HypGeom.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Incremental.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Intdouble.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Integer.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Integer.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Integer.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/LogNorm.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/LogNorm.h (100%) rename {contrib/libg++ => libg++}/libg++/src/MLCG.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/MLCG.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Makefile.in (100%) rename {contrib/libg++ => libg++}/libg++/src/NegExp.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/NegExp.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Normal.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Normal.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Obstack.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Obstack.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Pix.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Poisson.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Poisson.h (100%) rename {contrib/libg++ => libg++}/libg++/src/RNG.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/RNG.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Random.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Random.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Rational.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Rational.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Regex.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Regex.h (100%) rename {contrib/libg++ => libg++}/libg++/src/RndInt.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/RndInt.h (100%) rename {contrib/libg++ => libg++}/libg++/src/SLList.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/SLList.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Sample.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/SmplHist.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/SmplHist.h (100%) rename {contrib/libg++ => libg++}/libg++/src/SmplStat.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/SmplStat.h (100%) rename {contrib/libg++ => libg++}/libg++/src/String.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/String.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Uniform.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Uniform.h (100%) rename {contrib/libg++ => libg++}/libg++/src/Weibull.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/Weibull.h (100%) rename {contrib/libg++ => libg++}/libg++/src/bitand.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitany.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitblt.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitclear.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitcopy.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitcount.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitdo1.h (100%) rename {contrib/libg++ => libg++}/libg++/src/bitdo2.h (100%) rename {contrib/libg++ => libg++}/libg++/src/bitinvert.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitlcomp.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitprims.h (100%) rename {contrib/libg++ => libg++}/libg++/src/bitset1.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bitxor.c (100%) rename {contrib/libg++ => libg++}/libg++/src/bool.h (100%) rename {contrib/libg++ => libg++}/libg++/src/builtin.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/builtin.h (100%) rename {contrib/libg++ => libg++}/libg++/src/compare.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/compare.h (100%) rename {contrib/libg++ => libg++}/libg++/src/configure.in (100%) rename {contrib/libg++ => libg++}/libg++/src/depend (100%) rename {contrib/libg++ => libg++}/libg++/src/dtoa.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/error.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/fmtq.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/gcd.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/AVLMap.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/AVLMap.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/AVLSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/AVLSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/AVec.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/AVec.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/BSTSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/BSTSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Bag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Bag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHMap.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHMap.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHNode.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHNode.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/CHSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/DLDeque.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/DLDeque.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/DLList.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/DLList.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Deque.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Deque.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/FPQueue.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/FPQueue.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/FPStack.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/FPStack.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/FPlex.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/FPlex.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/List.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/List.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/MPlex.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/MPlex.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Map.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Map.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OSLBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OSLBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OSLSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OSLSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OXPBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OXPBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OXPSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/OXPSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/PHPQ.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/PHPQ.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/PQ.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/PQ.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/PSList.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/PVec.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Plex.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Plex.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Queue.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Queue.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/RAVLMap.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/RAVLMap.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/RPlex.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/RPlex.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLList.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLList.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLQueue.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLQueue.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLStack.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SLStack.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Set.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Set.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SkipBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SkipBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SkipMap.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SkipMap.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SkipSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SkipSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayMap.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayMap.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayNode.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayNode.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayPQ.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplayPQ.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplaySet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/SplaySet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Stack.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Stack.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VHBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VHBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VHMap.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VHMap.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VHSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VHSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VOHSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VOHSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VQueue.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VQueue.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VStack.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/VStack.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Vec.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/Vec.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPBag.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPBag.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPDeque.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPDeque.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPPQ.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPPQ.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPQueue.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPQueue.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPSet.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPSet.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPStack.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPStack.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPlex.ccP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/XPlex.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/defs.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/intSList.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/gen/intVec.hP (100%) rename {contrib/libg++ => libg++}/libg++/src/generic.h (100%) rename {contrib/libg++ => libg++}/libg++/src/getpagesize.h (100%) rename {contrib/libg++ => libg++}/libg++/src/hash.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/ioob.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/lg.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/libc.h (100%) rename {contrib/libg++ => libg++}/libg++/src/malloc.c (100%) rename {contrib/libg++ => libg++}/libg++/src/minmax.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/minmax.h (100%) rename {contrib/libg++ => libg++}/libg++/src/osfcn.h (100%) rename {contrib/libg++ => libg++}/libg++/src/pow.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/sqrt.cc (100%) rename {contrib/libg++ => libg++}/libg++/src/std.h (100%) rename {contrib/libg++ => libg++}/libg++/src/strclass.h (100%) rename {contrib/libg++ => libg++}/libg++/src/swap.h (100%) rename {contrib/libg++ => libg++}/libg++/src/sysent.h (100%) rename {contrib/libg++ => libg++}/libg++/src/timer.c (100%) rename {contrib/libg++ => libg++}/libg++/src/typemacros.h (100%) rename {contrib/libg++ => libg++}/libg++/test-install/ChangeLog (100%) rename {contrib/libg++ => libg++}/libg++/test-install/Foo.cc (100%) rename {contrib/libg++ => libg++}/libg++/test-install/Foo.h (100%) rename {contrib/libg++ => libg++}/libg++/test-install/Makefile.in (100%) rename {contrib/libg++ => libg++}/libg++/test-install/a.cc (100%) rename {contrib/libg++ => libg++}/libg++/test-install/bf.cc (100%) rename {contrib/libg++ => libg++}/libg++/test-install/bm.cc (100%) rename {contrib/libg++ => libg++}/libg++/test-install/configure.in (100%) rename {contrib/libg++ => libg++}/libg++/test-install/ex_bar.cc (100%) rename {contrib/libg++ => libg++}/libg++/test-install/expected.out (100%) rename {contrib/libg++ => libg++}/libg++/test-install/foo_func.cc (100%) rename {contrib/libg++ => libg++}/libg++/test-install/foo_main.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/ChangeLog (100%) rename {contrib/libg++ => libg++}/libg++/tests/Makefile.in (100%) rename {contrib/libg++ => libg++}/libg++/tests/Makefile.sh (100%) rename {contrib/libg++ => libg++}/libg++/tests/configure.in (100%) rename {contrib/libg++ => libg++}/libg++/tests/depend (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBag.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBag.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBag.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBitSet.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBitSet.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBitSet.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBitString.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBitString.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tBitString.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tCurses.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tCurses.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tDeque.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tDeque.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tDeque.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFile.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFile.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFile.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix16.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix16.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix16.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix24.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix24.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tFix24.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tGetOpt.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tGetOpt.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tGetOpt.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tInteger.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tInteger.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tInteger.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tLList.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tLList.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tLList.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tList.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tList.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tList.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tMap.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tMap.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tMap.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tObstack.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tObstack.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tObstack.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tPQ.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tPQ.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tPQ.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tPlex.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tPlex.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tPlex.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tQueue.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tQueue.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tQueue.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tRandom.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tRandom.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tRandom.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tRational.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tRational.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tRational.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tSet.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tSet.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tSet.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tStack.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tStack.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tStack.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tString.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tString.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tString.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tVec.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tVec.exp (100%) rename {contrib/libg++ => libg++}/libg++/tests/tVec.inp (100%) rename {contrib/libg++ => libg++}/libg++/tests/test_h.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tiLList.cc (100%) rename {contrib/libg++ => libg++}/libg++/tests/tiLList.exp (100%) rename {contrib/libg++ => libg++}/libiberty/ChangeLog (100%) rename {contrib/libg++ => libg++}/libiberty/insque.c (100%) rename {contrib/libg++ => libg++}/libiberty/strerror.c (100%) rename {contrib/libg++ => libg++}/libio/ChangeLog (100%) rename {contrib/libg++ => libg++}/libio/Makefile.in (100%) rename {contrib/libg++ => libg++}/libio/NEWS (100%) rename {contrib/libg++ => libg++}/libio/PlotFile.cc (100%) rename {contrib/libg++ => libg++}/libio/PlotFile.h (100%) rename {contrib/libg++ => libg++}/libio/README (100%) rename {contrib/libg++ => libg++}/libio/SFile.cc (100%) rename {contrib/libg++ => libg++}/libio/SFile.h (100%) rename {contrib/libg++ => libg++}/libio/builtinbuf.cc (100%) rename {contrib/libg++ => libg++}/libio/builtinbuf.h (100%) rename {contrib/libg++ => libg++}/libio/cleanup.c (100%) rename {contrib/libg++ => libg++}/libio/depend (100%) rename {contrib/libg++ => libg++}/libio/editbuf.cc (100%) rename {contrib/libg++ => libg++}/libio/editbuf.h (100%) rename {contrib/libg++ => libg++}/libio/filebuf.cc (100%) rename {contrib/libg++ => libg++}/libio/filedoalloc.c (100%) rename {contrib/libg++ => libg++}/libio/fileops.c (100%) rename {contrib/libg++ => libg++}/libio/floatconv.c (100%) rename {contrib/libg++ => libg++}/libio/floatio.h (100%) rename {contrib/libg++ => libg++}/libio/fstream.cc (100%) rename {contrib/libg++ => libg++}/libio/fstream.h (100%) rename {contrib/libg++ => libg++}/libio/gen-params (100%) rename {contrib/libg++ => libg++}/libio/genops.c (100%) rename {contrib/libg++ => libg++}/libio/indstream.cc (100%) rename {contrib/libg++ => libg++}/libio/indstream.h (100%) rename {contrib/libg++ => libg++}/libio/ioassign.cc (100%) rename {contrib/libg++ => libg++}/libio/ioextend.cc (100%) rename {contrib/libg++ => libg++}/libio/iofclose.c (100%) rename {contrib/libg++ => libg++}/libio/iofdopen.c (100%) rename {contrib/libg++ => libg++}/libio/iofflush.c (100%) rename {contrib/libg++ => libg++}/libio/iofgetpos.c (100%) rename {contrib/libg++ => libg++}/libio/iofgets.c (100%) rename {contrib/libg++ => libg++}/libio/iofopen.c (100%) rename {contrib/libg++ => libg++}/libio/iofprintf.c (100%) rename {contrib/libg++ => libg++}/libio/iofputs.c (100%) rename {contrib/libg++ => libg++}/libio/iofread.c (100%) rename {contrib/libg++ => libg++}/libio/iofscanf.c (100%) rename {contrib/libg++ => libg++}/libio/iofsetpos.c (100%) rename {contrib/libg++ => libg++}/libio/ioftell.c (100%) rename {contrib/libg++ => libg++}/libio/iofwrite.c (100%) rename {contrib/libg++ => libg++}/libio/iogetdelim.c (100%) rename {contrib/libg++ => libg++}/libio/iogetline.c (100%) rename {contrib/libg++ => libg++}/libio/iogets.c (100%) rename {contrib/libg++ => libg++}/libio/ioignore.c (100%) rename {contrib/libg++ => libg++}/libio/iolibio.h (100%) rename {contrib/libg++ => libg++}/libio/iomanip.cc (100%) rename {contrib/libg++ => libg++}/libio/iomanip.h (100%) rename {contrib/libg++ => libg++}/libio/iopadn.c (100%) rename {contrib/libg++ => libg++}/libio/ioperror.c (100%) rename {contrib/libg++ => libg++}/libio/iopopen.c (100%) rename {contrib/libg++ => libg++}/libio/ioprims.c (100%) rename {contrib/libg++ => libg++}/libio/ioprintf.c (100%) rename {contrib/libg++ => libg++}/libio/ioputs.c (100%) rename {contrib/libg++ => libg++}/libio/ioscanf.c (100%) rename {contrib/libg++ => libg++}/libio/ioseekoff.c (100%) rename {contrib/libg++ => libg++}/libio/ioseekpos.c (100%) rename {contrib/libg++ => libg++}/libio/iosetbuffer.c (100%) rename {contrib/libg++ => libg++}/libio/iosetvbuf.c (100%) rename {contrib/libg++ => libg++}/libio/iosprintf.c (100%) rename {contrib/libg++ => libg++}/libio/iosscanf.c (100%) rename {contrib/libg++ => libg++}/libio/iostdio.h (100%) rename {contrib/libg++ => libg++}/libio/iostream.cc (100%) rename {contrib/libg++ => libg++}/libio/iostream.h (100%) rename {contrib/libg++ => libg++}/libio/iostream.texi (100%) rename {contrib/libg++ => libg++}/libio/iostreamP.h (100%) rename {contrib/libg++ => libg++}/libio/iostrerror.c (100%) rename {contrib/libg++ => libg++}/libio/ioungetc.c (100%) rename {contrib/libg++ => libg++}/libio/iovfprintf.c (100%) rename {contrib/libg++ => libg++}/libio/iovfscanf.c (100%) rename {contrib/libg++ => libg++}/libio/iovsprintf.c (100%) rename {contrib/libg++ => libg++}/libio/iovsscanf.c (100%) rename {contrib/libg++ => libg++}/libio/isgetline.cc (100%) rename {contrib/libg++ => libg++}/libio/isgetsb.cc (100%) rename {contrib/libg++ => libg++}/libio/isscan.cc (100%) rename {contrib/libg++ => libg++}/libio/istream.h (100%) rename {contrib/libg++ => libg++}/libio/libio.h (100%) rename {contrib/libg++ => libg++}/libio/libioP.h (100%) rename {contrib/libg++ => libg++}/libio/osform.cc (100%) rename {contrib/libg++ => libg++}/libio/ostream.h (100%) rename {contrib/libg++ => libg++}/libio/outfloat.c (100%) rename {contrib/libg++ => libg++}/libio/parsestream.cc (100%) rename {contrib/libg++ => libg++}/libio/parsestream.h (100%) rename {contrib/libg++ => libg++}/libio/pfstream.cc (100%) rename {contrib/libg++ => libg++}/libio/pfstream.h (100%) rename {contrib/libg++ => libg++}/libio/procbuf.cc (100%) rename {contrib/libg++ => libg++}/libio/procbuf.h (100%) rename {contrib/libg++ => libg++}/libio/sbform.cc (100%) rename {contrib/libg++ => libg++}/libio/sbgetline.cc (100%) rename {contrib/libg++ => libg++}/libio/sbscan.cc (100%) rename {contrib/libg++ => libg++}/libio/stdfiles.c (100%) rename {contrib/libg++ => libg++}/libio/stdiostream.cc (100%) rename {contrib/libg++ => libg++}/libio/stdiostream.h (100%) rename {contrib/libg++ => libg++}/libio/stdstrbufs.cc (100%) rename {contrib/libg++ => libg++}/libio/stdstreams.cc (100%) rename {contrib/libg++ => libg++}/libio/stream.cc (100%) rename {contrib/libg++ => libg++}/libio/stream.h (100%) rename {contrib/libg++ => libg++}/libio/streambuf.cc (100%) rename {contrib/libg++ => libg++}/libio/streambuf.h (100%) rename {contrib/libg++ => libg++}/libio/strfile.h (100%) rename {contrib/libg++ => libg++}/libio/strops.c (100%) rename {contrib/libg++ => libg++}/libio/strstream.cc (100%) rename {contrib/libg++ => libg++}/libio/strstream.h (100%) rename {contrib/libg++ => libg++}/libio/tests/ChangeLog (100%) rename {contrib/libg++ => libg++}/libio/tests/Makefile.in (100%) rename {contrib/libg++ => libg++}/libio/tests/configure.in (100%) rename {contrib/libg++ => libg++}/libio/tests/hounddog.cc (100%) rename {contrib/libg++ => libg++}/libio/tests/hounddog.exp (100%) rename {contrib/libg++ => libg++}/libio/tests/hounddog.inp (100%) rename {contrib/libg++ => libg++}/libio/tests/putbackdog.cc (100%) rename {contrib/libg++ => libg++}/libio/tests/tFile.cc (100%) rename {contrib/libg++ => libg++}/libio/tests/tFile.exp (100%) rename {contrib/libg++ => libg++}/libio/tests/tFile.inp (100%) rename {contrib/libg++ => libg++}/libio/tests/tfformat.c (100%) rename {contrib/libg++ => libg++}/libio/tests/tiformat.c (100%) rename {contrib/libg++ => libg++}/libio/tests/tiomanip.cc (100%) rename {contrib/libg++ => libg++}/libio/tests/tiomanip.exp (100%) rename {contrib/libg++ => libg++}/libio/tests/tiomisc.cc (100%) rename {contrib/libg++ => libg++}/libio/tests/tiomisc.exp (100%) rename {contrib/libg++ => libg++}/libio/tests/tstdiomisc.c (100%) rename {contrib/libg++ => libg++}/libio/tests/tstdiomisc.exp (100%) rename {contrib/libg++ => libg++}/librx/ChangeLog (100%) rename {contrib/libg++ => libg++}/librx/DOC (100%) rename {contrib/libg++ => libg++}/librx/rx.c (100%) rename {contrib/libg++ => libg++}/librx/rx.h (100%) rename {contrib/libg++ => libg++}/libstdc++/ChangeLog (100%) rename {contrib/libg++ => libg++}/libstdc++/Makefile.in (100%) rename {contrib/libg++ => libg++}/libstdc++/algorithm (100%) rename {contrib/libg++ => libg++}/libstdc++/cassert (100%) rename {contrib/libg++ => libg++}/libstdc++/cctype (100%) rename {contrib/libg++ => libg++}/libstdc++/cerrno (100%) rename {contrib/libg++ => libg++}/libstdc++/cfloat (100%) rename {contrib/libg++ => libg++}/libstdc++/cinst.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/ciso646 (100%) rename {contrib/libg++ => libg++}/libstdc++/climits (100%) rename {contrib/libg++ => libg++}/libstdc++/clocale (100%) rename {contrib/libg++ => libg++}/libstdc++/cmath (100%) rename {contrib/libg++ => libg++}/libstdc++/cmathi.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/complex (100%) rename {contrib/libg++ => libg++}/libstdc++/complex.h (100%) rename {contrib/libg++ => libg++}/libstdc++/csetjmp (100%) rename {contrib/libg++ => libg++}/libstdc++/csignal (100%) rename {contrib/libg++ => libg++}/libstdc++/cstdarg (100%) rename {contrib/libg++ => libg++}/libstdc++/cstddef (100%) rename {contrib/libg++ => libg++}/libstdc++/cstdio (100%) rename {contrib/libg++ => libg++}/libstdc++/cstdlib (100%) rename {contrib/libg++ => libg++}/libstdc++/cstdlibi.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/cstring (100%) rename {contrib/libg++ => libg++}/libstdc++/cstringi.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/ctime (100%) rename {contrib/libg++ => libg++}/libstdc++/cwchar (100%) rename {contrib/libg++ => libg++}/libstdc++/cwctype (100%) rename {contrib/libg++ => libg++}/libstdc++/deque (100%) rename {contrib/libg++ => libg++}/libstdc++/exception (100%) rename {contrib/libg++ => libg++}/libstdc++/exceptioni.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/functional (100%) rename {contrib/libg++ => libg++}/libstdc++/iterator (100%) rename {contrib/libg++ => libg++}/libstdc++/list (100%) rename {contrib/libg++ => libg++}/libstdc++/map (100%) rename {contrib/libg++ => libg++}/libstdc++/memory (100%) rename {contrib/libg++ => libg++}/libstdc++/new (100%) rename {contrib/libg++ => libg++}/libstdc++/new.h (100%) rename {contrib/libg++ => libg++}/libstdc++/newi.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/numeric (100%) rename {contrib/libg++ => libg++}/libstdc++/queue (100%) rename {contrib/libg++ => libg++}/libstdc++/set (100%) rename {contrib/libg++ => libg++}/libstdc++/sinst.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/stack (100%) rename {contrib/libg++ => libg++}/libstdc++/std/bastring.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/std/bastring.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cassert.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cctype.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cerrno.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cfloat.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cinst.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/ciso646.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/climits.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/clocale.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cmath.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/complex.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/complext.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/std/complext.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/csetjmp.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/csignal.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cstdarg.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cstddef.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cstdio.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cstdlib.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cstring.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/ctime.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cwchar.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/cwctype.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/dcomplex.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/exception.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/fcomplex.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/ldcomplex.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/new.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/sinst.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/stddef.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/stdexcept.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/straits.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/string.h (100%) rename {contrib/libg++ => libg++}/libstdc++/std/typeinfo.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stddef (100%) rename {contrib/libg++ => libg++}/libstdc++/stddefi.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/stdexcept (100%) rename {contrib/libg++ => libg++}/libstdc++/stdexcepti.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/stl.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/ChangeLog (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/Makefile.in (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/README (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/algo.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/algobase.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/bool.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/bvector.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/configure.in (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/defalloc.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/deque.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/faralloc.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/fdeque.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/flist.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/fmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/fmultmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/fmultset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/fset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/function.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hdeque.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/heap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hlist.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hmultmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hmultset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hugalloc.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/hvector.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/iterator.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/lbvector.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/ldeque.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/list.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/llist.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/lmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/lmultmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/lmultset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/lngalloc.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/lset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/map.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/multimap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/multiset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/neralloc.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/nmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/nmultmap.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/nmultset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/nset.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/pair.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/projectn.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/random.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/set.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/stack.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/tempbuf.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/tempbuf.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/tree.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/tree.h (100%) rename {contrib/libg++ => libg++}/libstdc++/stl/vector.h (100%) rename {contrib/libg++ => libg++}/libstdc++/string (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/ChangeLog (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/Makefile.in (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/configure.in (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tcomplex.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tcomplex.exp (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tcomplex.inp (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tlist.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tlist.exp (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tmap.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tmap.exp (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tstring.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tstring.exp (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tstring.inp (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tvector.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/tests/tvector.exp (100%) rename {contrib/libg++ => libg++}/libstdc++/typeinfo (100%) rename {contrib/libg++ => libg++}/libstdc++/typeinfoi.cc (100%) rename {contrib/libg++ => libg++}/libstdc++/utility (100%) rename {contrib/libg++ => libg++}/libstdc++/vector (100%) rename {contrib/gcclibs/libgomp => libgomp}/ChangeLog (100%) rename {contrib/gcclibs/libgomp => libgomp}/Makefile.am (100%) rename {contrib/gcclibs/libgomp => libgomp}/Makefile.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/acinclude.m4 (100%) rename {contrib/gcclibs/libgomp => libgomp}/aclocal.m4 (100%) rename {contrib/gcclibs/libgomp => libgomp}/alloc.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/barrier.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config.h.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/alpha/futex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/bar.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/bar.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/ia64/futex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/lock.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/mutex.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/mutex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/omp-lock.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/powerpc/futex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/s390/futex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/sem.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/sem.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/sparc/futex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/linux/x86/futex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/mingw32/time.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/bar.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/bar.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/lock.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/mutex.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/mutex.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/omp-lock.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/proc.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/sem.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/sem.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix/time.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix95/lock.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/config/posix95/omp-lock.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/configure (100%) rename {contrib/gcclibs/libgomp => libgomp}/configure.ac (100%) rename {contrib/gcclibs/libgomp => libgomp}/configure.tgt (100%) rename {contrib/gcclibs/libgomp => libgomp}/critical.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/env.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/error.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/fortran.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/iter.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/libgomp.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/libgomp.map (100%) rename {contrib/gcclibs/libgomp => libgomp}/libgomp.spec.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/libgomp.texi (100%) rename {contrib/gcclibs/libgomp => libgomp}/libgomp_f.h.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/libgomp_g.h (100%) rename {contrib/gcclibs/libgomp => libgomp}/loop.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/omp.h.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/omp_lib.f90.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/omp_lib.h.in (100%) rename {contrib/gcclibs/libgomp => libgomp}/ordered.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/parallel.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/sections.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/single.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/team.c (100%) rename {contrib/gcclibs/libgomp => libgomp}/work.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/COPYING.LIB (100%) rename {contrib/gcclibs/libiberty => libiberty}/ChangeLog (100%) rename {contrib/gcclibs/libiberty => libiberty}/Makefile.in (100%) rename {contrib/gcclibs/libiberty => libiberty}/README (100%) rename {contrib/gcclibs/libiberty => libiberty}/_doprnt.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/aclocal.m4 (100%) rename {contrib/gcclibs/libiberty => libiberty}/alloca.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/argv.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/asprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/at-file.texi (100%) rename {contrib/gcclibs/libiberty => libiberty}/atexit.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/basename.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/bcmp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/bcopy.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/bsearch.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/bzero.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/calloc.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/choose-temp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/clock.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/concat.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/config.h-vms (100%) rename {contrib/gcclibs/libiberty => libiberty}/config.in (100%) rename {contrib/gcclibs/libiberty => libiberty}/config/mh-aix (100%) rename {contrib/gcclibs/libiberty => libiberty}/config/mh-cxux7 (100%) rename {contrib/gcclibs/libiberty => libiberty}/config/mh-fbsd21 (100%) rename {contrib/gcclibs/libiberty => libiberty}/config/mh-openedition (100%) rename {contrib/gcclibs/libiberty => libiberty}/config/mh-windows (100%) rename {contrib/gcclibs/libiberty => libiberty}/configure (100%) rename {contrib/gcclibs/libiberty => libiberty}/configure.ac (100%) rename {contrib/gcclibs/libiberty => libiberty}/copying-lib.texi (100%) rename {contrib/gcclibs/libiberty => libiberty}/copysign.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/cp-demangle.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/cp-demangle.h (100%) rename {contrib/gcclibs/libiberty => libiberty}/cp-demint.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/cplus-dem.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/dyn-string.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/fdmatch.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/ffs.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/fibheap.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/floatformat.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/fnmatch.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/fnmatch.txh (100%) rename {contrib/gcclibs/libiberty => libiberty}/fopen_unlocked.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/functions.texi (100%) rename {contrib/gcclibs/libiberty => libiberty}/gather-docs (100%) rename {contrib/gcclibs/libiberty => libiberty}/getcwd.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/getopt.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/getopt1.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/getpagesize.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/getpwd.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/getruntime.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/gettimeofday.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/hashtab.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/hex.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/index.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/insque.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/lbasename.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/libiberty.texi (100%) rename {contrib/gcclibs/libiberty => libiberty}/lrealpath.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/maint-tool (100%) rename {contrib/gcclibs/libiberty => libiberty}/make-relative-prefix.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/make-temp-file.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/makefile.vms (100%) rename {contrib/gcclibs/libiberty => libiberty}/md5.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/memchr.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/memcmp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/memcpy.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/memmove.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/mempcpy.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/memset.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/mkstemps.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/msdos.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/objalloc.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/obstack.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/obstacks.texi (100%) rename {contrib/gcclibs/libiberty => libiberty}/partition.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-common.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-common.h (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-djgpp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-msdos.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-one.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-unix.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pex-win32.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pexecute.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/pexecute.txh (100%) rename {contrib/gcclibs/libiberty => libiberty}/physmem.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/putenv.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/random.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/regex.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/rename.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/rindex.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/safe-ctype.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/setenv.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/sigsetmask.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/snprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/sort.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/spaces.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/splay-tree.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/stpcpy.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/stpncpy.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strcasecmp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strchr.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strdup.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strerror.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strncasecmp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strncmp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strndup.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strrchr.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strsignal.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strstr.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strtod.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strtol.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strtoul.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/strverscmp.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/ternary.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/testsuite/Makefile.in (100%) rename {contrib/gcclibs/libiberty => libiberty}/testsuite/demangle-expected (100%) rename {contrib/gcclibs/libiberty => libiberty}/testsuite/test-demangle.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/testsuite/test-expandargv.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/testsuite/test-pexecute.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/tmpnam.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/unlink-if-ordinary.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/vasprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/vfork.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/vfprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/vmsbuild.com (100%) rename {contrib/gcclibs/libiberty => libiberty}/vprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/vsnprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/vsprintf.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/waitpid.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xatexit.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xexit.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xmalloc.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xmemdup.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xstrdup.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xstrerror.c (100%) rename {contrib/gcclibs/libiberty => libiberty}/xstrndup.c (100%) rename {contrib/libio => libio}/ChangeLog (100%) rename {contrib/libio => libio}/Makefile.in (100%) rename {contrib/libio => libio}/NEWS (100%) rename {contrib/libio => libio}/PlotFile.cc (100%) rename {contrib/libio => libio}/PlotFile.h (100%) rename {contrib/libio => libio}/README (100%) rename {contrib/libio => libio}/SFile.cc (100%) rename {contrib/libio => libio}/SFile.h (100%) rename {contrib/libio => libio}/builtinbuf.cc (100%) rename {contrib/libio => libio}/builtinbuf.h (100%) rename {contrib/libio => libio}/cleanup.c (100%) rename {contrib/libio => libio}/config.shared (100%) rename {contrib/libio => libio}/config/hpux.mt (100%) rename {contrib/libio => libio}/config/isc.mt (100%) rename {contrib/libio => libio}/config/linux.mt (100%) rename {contrib/libio => libio}/config/linuxaxp1-libc-lock.h (100%) rename {contrib/libio => libio}/config/linuxaxp1-stdio-lock.h (100%) rename {contrib/libio => libio}/config/linuxaxp1.mt (100%) rename {contrib/libio => libio}/config/linuxlibc1.mt (100%) rename {contrib/libio => libio}/config/mn10200.mt (100%) rename {contrib/libio => libio}/config/mtsafe.mt (100%) rename {contrib/libio => libio}/config/netware.mt (100%) rename {contrib/libio => libio}/configure.in (100%) rename {contrib/libio => libio}/dbz/Makefile.in (100%) rename {contrib/libio => libio}/dbz/README (100%) rename {contrib/libio => libio}/dbz/altbytes (100%) rename {contrib/libio => libio}/dbz/byteflip.c (100%) rename {contrib/libio => libio}/dbz/case.c (100%) rename {contrib/libio => libio}/dbz/case.h (100%) rename {contrib/libio => libio}/dbz/configure.in (100%) rename {contrib/libio => libio}/dbz/dbz.1 (100%) rename {contrib/libio => libio}/dbz/dbz.3z (100%) rename {contrib/libio => libio}/dbz/dbz.c (100%) rename {contrib/libio => libio}/dbz/dbz.h (100%) rename {contrib/libio => libio}/dbz/dbzmain.c (100%) rename {contrib/libio => libio}/dbz/fake.c (100%) rename {contrib/libio => libio}/dbz/firstlast25 (100%) rename {contrib/libio => libio}/dbz/getmap (100%) rename {contrib/libio => libio}/dbz/random.c (100%) rename {contrib/libio => libio}/dbz/revbytes (100%) rename {contrib/libio => libio}/dbz/stdio.h (100%) rename {contrib/libio => libio}/depend (100%) rename {contrib/libio => libio}/editbuf.cc (100%) rename {contrib/libio => libio}/editbuf.h (100%) rename {contrib/libio => libio}/filebuf.cc (100%) rename {contrib/libio => libio}/filedoalloc.c (100%) rename {contrib/libio => libio}/fileops.c (100%) rename {contrib/libio => libio}/floatconv.c (100%) rename {contrib/libio => libio}/floatio.h (100%) rename {contrib/libio => libio}/fstream.cc (100%) rename {contrib/libio => libio}/fstream.h (100%) rename {contrib/libio => libio}/gen-params (100%) rename {contrib/libio => libio}/genops.c (100%) rename {contrib/libio => libio}/include/empty.h (100%) rename {contrib/libio => libio}/indstream.cc (100%) rename {contrib/libio => libio}/indstream.h (100%) rename {contrib/libio => libio}/ioassign.cc (100%) rename {contrib/libio => libio}/ioextend.cc (100%) rename {contrib/libio => libio}/iofclose.c (100%) rename {contrib/libio => libio}/iofdopen.c (100%) rename {contrib/libio => libio}/iofeof.c (100%) rename {contrib/libio => libio}/ioferror.c (100%) rename {contrib/libio => libio}/iofflush.c (100%) rename {contrib/libio => libio}/iofflush_u.c (100%) rename {contrib/libio => libio}/iofgetpos.c (100%) rename {contrib/libio => libio}/iofgets.c (100%) rename {contrib/libio => libio}/iofopen.c (100%) rename {contrib/libio => libio}/iofprintf.c (100%) rename {contrib/libio => libio}/iofputs.c (100%) rename {contrib/libio => libio}/iofread.c (100%) rename {contrib/libio => libio}/iofscanf.c (100%) rename {contrib/libio => libio}/iofsetpos.c (100%) rename {contrib/libio => libio}/ioftell.c (100%) rename {contrib/libio => libio}/iofwrite.c (100%) rename {contrib/libio => libio}/iogetc.c (100%) rename {contrib/libio => libio}/iogetdelim.c (100%) rename {contrib/libio => libio}/iogetline.c (100%) rename {contrib/libio => libio}/iogets.c (100%) rename {contrib/libio => libio}/ioignore.c (100%) rename {contrib/libio => libio}/iolibio.h (100%) rename {contrib/libio => libio}/iomanip.cc (100%) rename {contrib/libio => libio}/iomanip.h (100%) rename {contrib/libio => libio}/iopadn.c (100%) rename {contrib/libio => libio}/ioperror.c (100%) rename {contrib/libio => libio}/iopopen.c (100%) rename {contrib/libio => libio}/ioprims.c (100%) rename {contrib/libio => libio}/ioprintf.c (100%) rename {contrib/libio => libio}/ioputc.c (100%) rename {contrib/libio => libio}/ioputs.c (100%) rename {contrib/libio => libio}/ioscanf.c (100%) rename {contrib/libio => libio}/ioseekoff.c (100%) rename {contrib/libio => libio}/ioseekpos.c (100%) rename {contrib/libio => libio}/iosetbuffer.c (100%) rename {contrib/libio => libio}/iosetvbuf.c (100%) rename {contrib/libio => libio}/iosprintf.c (100%) rename {contrib/libio => libio}/iosscanf.c (100%) rename {contrib/libio => libio}/iostdio.h (100%) rename {contrib/libio => libio}/iostream.cc (100%) rename {contrib/libio => libio}/iostream.h (100%) rename {contrib/libio => libio}/iostream.texi (100%) rename {contrib/libio => libio}/iostreamP.h (100%) rename {contrib/libio => libio}/iostrerror.c (100%) rename {contrib/libio => libio}/ioungetc.c (100%) rename {contrib/libio => libio}/iovfprintf.c (100%) rename {contrib/libio => libio}/iovfscanf.c (100%) rename {contrib/libio => libio}/iovsprintf.c (100%) rename {contrib/libio => libio}/iovsscanf.c (100%) rename {contrib/libio => libio}/isgetline.cc (100%) rename {contrib/libio => libio}/isgetsb.cc (100%) rename {contrib/libio => libio}/isscan.cc (100%) rename {contrib/libio => libio}/istream.h (100%) rename {contrib/libio => libio}/libio.h (100%) rename {contrib/libio => libio}/libioP.h (100%) rename {contrib/libio => libio}/osform.cc (100%) rename {contrib/libio => libio}/ostream.h (100%) rename {contrib/libio => libio}/outfloat.c (100%) rename {contrib/libio => libio}/parsestream.cc (100%) rename {contrib/libio => libio}/parsestream.h (100%) rename {contrib/libio => libio}/peekc.c (100%) rename {contrib/libio => libio}/pfstream.cc (100%) rename {contrib/libio => libio}/pfstream.h (100%) rename {contrib/libio => libio}/procbuf.cc (100%) rename {contrib/libio => libio}/procbuf.h (100%) rename {contrib/libio => libio}/sbform.cc (100%) rename {contrib/libio => libio}/sbgetline.cc (100%) rename {contrib/libio => libio}/sbscan.cc (100%) rename {contrib/libio => libio}/stdfiles.c (100%) rename {contrib/libio => libio}/stdio/ChangeLog (100%) rename {contrib/libio => libio}/stdio/Makefile.in (100%) rename {contrib/libio => libio}/stdio/clearerr.c (100%) rename {contrib/libio => libio}/stdio/clearerr_u.c (100%) rename {contrib/libio => libio}/stdio/configure.in (100%) rename {contrib/libio => libio}/stdio/fdopen.c (100%) rename {contrib/libio => libio}/stdio/feof.c (100%) rename {contrib/libio => libio}/stdio/feof_u.c (100%) rename {contrib/libio => libio}/stdio/ferror.c (100%) rename {contrib/libio => libio}/stdio/ferror_u.c (100%) rename {contrib/libio => libio}/stdio/fgetc.c (100%) rename {contrib/libio => libio}/stdio/fileno.c (100%) rename {contrib/libio => libio}/stdio/fputc.c (100%) rename {contrib/libio => libio}/stdio/fputc_u.c (100%) rename {contrib/libio => libio}/stdio/freopen.c (100%) rename {contrib/libio => libio}/stdio/fseek.c (100%) rename {contrib/libio => libio}/stdio/getc.c (100%) rename {contrib/libio => libio}/stdio/getc_u.c (100%) rename {contrib/libio => libio}/stdio/getchar.c (100%) rename {contrib/libio => libio}/stdio/getchar_u.c (100%) rename {contrib/libio => libio}/stdio/getline.c (100%) rename {contrib/libio => libio}/stdio/getw.c (100%) rename {contrib/libio => libio}/stdio/obprintf.c (100%) rename {contrib/libio => libio}/stdio/popen.c (100%) rename {contrib/libio => libio}/stdio/putc.c (100%) rename {contrib/libio => libio}/stdio/putc_u.c (100%) rename {contrib/libio => libio}/stdio/putchar.c (100%) rename {contrib/libio => libio}/stdio/putchar_u.c (100%) rename {contrib/libio => libio}/stdio/putw.c (100%) rename {contrib/libio => libio}/stdio/rewind.c (100%) rename {contrib/libio => libio}/stdio/setbuf.c (100%) rename {contrib/libio => libio}/stdio/setfileno.c (100%) rename {contrib/libio => libio}/stdio/setlinebuf.c (100%) rename {contrib/libio => libio}/stdio/snprintf.c (100%) rename {contrib/libio => libio}/stdio/stdio.h (100%) rename {contrib/libio => libio}/stdio/vasprintf.c (100%) rename {contrib/libio => libio}/stdio/vfprintf.c (100%) rename {contrib/libio => libio}/stdio/vfscanf.c (100%) rename {contrib/libio => libio}/stdio/vprintf.c (100%) rename {contrib/libio => libio}/stdio/vscanf.c (100%) rename {contrib/libio => libio}/stdio/vsnprintf.c (100%) rename {contrib/libio => libio}/stdiostream.cc (100%) rename {contrib/libio => libio}/stdiostream.h (100%) rename {contrib/libio => libio}/stdstrbufs.cc (100%) rename {contrib/libio => libio}/stdstreams.cc (100%) rename {contrib/libio => libio}/stream.cc (100%) rename {contrib/libio => libio}/stream.h (100%) rename {contrib/libio => libio}/streambuf.cc (100%) rename {contrib/libio => libio}/streambuf.h (100%) rename {contrib/libio => libio}/strfile.h (100%) rename {contrib/libio => libio}/strops.c (100%) rename {contrib/libio => libio}/strstream.cc (100%) rename {contrib/libio => libio}/strstream.h (100%) rename {contrib/libio => libio}/tests/ChangeLog (100%) rename {contrib/libio => libio}/tests/Makefile.in (100%) rename {contrib/libio => libio}/tests/configure.in (100%) rename {contrib/libio => libio}/tests/hounddog.cc (100%) rename {contrib/libio => libio}/tests/hounddog.exp (100%) rename {contrib/libio => libio}/tests/hounddog.inp (100%) rename {contrib/libio => libio}/tests/putbackdog.cc (100%) rename {contrib/libio => libio}/tests/tFile.cc (100%) rename {contrib/libio => libio}/tests/tFile.exp (100%) rename {contrib/libio => libio}/tests/tFile.inp (100%) rename {contrib/libio => libio}/tests/tfformat.c (100%) rename {contrib/libio => libio}/tests/tiformat.c (100%) rename {contrib/libio => libio}/tests/tiomanip.cc (100%) rename {contrib/libio => libio}/tests/tiomanip.exp (100%) rename {contrib/libio => libio}/tests/tiomisc.cc (100%) rename {contrib/libio => libio}/tests/tiomisc.exp (100%) rename {contrib/libio => libio}/tests/tstdiomisc.c (100%) rename {contrib/libio => libio}/tests/tstdiomisc.exp (100%) rename {contrib/libio => libio}/testsuite/ChangeLog (100%) rename {contrib/libio => libio}/testsuite/Makefile.in (100%) rename {contrib/libio => libio}/testsuite/config/default.exp (100%) rename {contrib/libio => libio}/testsuite/configure.in (100%) rename {contrib/libio => libio}/testsuite/lib/libio.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/hounddog.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/putbackdog.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/tFile.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/tfformat.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/tiformat.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/tiomanip.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/tiomisc.exp (100%) rename {contrib/libio => libio}/testsuite/libio.tests/tstdiomisc.exp (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/ChangeLog (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/Makefile.am (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/Makefile.in (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/acinclude.m4 (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/aclocal.m4 (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/config.h.in (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/configure (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/configure.ac (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/libtool-version (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-heuristics.c (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-hooks1.c (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-hooks2.c (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-hooks3.c (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-impl.h (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-runtime.c (100%) rename {contrib/gcclibs/libmudflap => libmudflap}/mf-runtime.h (100%) rename {contrib/libobjc => libobjc}/ChangeLog (100%) rename {contrib/libobjc => libobjc}/Makefile.in (100%) rename {contrib/libobjc => libobjc}/NXConstStr.m (100%) rename {contrib/libobjc => libobjc}/Object.m (100%) rename {contrib/libobjc => libobjc}/Protocol.m (100%) rename {contrib/libobjc => libobjc}/README (100%) rename {contrib/libobjc => libobjc}/README.threads (100%) rename {contrib/libobjc => libobjc}/THREADS (100%) rename {contrib/libobjc => libobjc}/THREADS.MACH (100%) rename {contrib/libobjc => libobjc}/acinclude.m4 (100%) rename {contrib/libobjc => libobjc}/aclocal.m4 (100%) rename {contrib/libobjc => libobjc}/archive.c (100%) rename {contrib/libobjc => libobjc}/class.c (100%) rename {contrib/libobjc => libobjc}/config.h.in (100%) rename {contrib/libobjc => libobjc}/configure (100%) rename {contrib/libobjc => libobjc}/configure.ac (100%) rename {contrib/libobjc => libobjc}/encoding.c (100%) rename {contrib/libobjc => libobjc}/exception.c (100%) rename {contrib/libobjc => libobjc}/gc.c (100%) rename {contrib/libobjc => libobjc}/hash.c (100%) rename {contrib/libobjc => libobjc}/init.c (100%) rename {contrib/libobjc => libobjc}/libobjc.def (100%) rename {contrib/libobjc => libobjc}/libobjc_entry.c (100%) rename {contrib/libobjc => libobjc}/linking.m (100%) rename {contrib/libobjc => libobjc}/makefile.dos (100%) rename {contrib/libobjc => libobjc}/misc.c (100%) rename {contrib/libobjc => libobjc}/nil_method.c (100%) rename {contrib/libobjc => libobjc}/objc/NXConstStr.h (100%) rename {contrib/libobjc => libobjc}/objc/Object.h (100%) rename {contrib/libobjc => libobjc}/objc/Protocol.h (100%) rename {contrib/libobjc => libobjc}/objc/encoding.h (100%) rename {contrib/libobjc => libobjc}/objc/hash.h (100%) rename {contrib/libobjc => libobjc}/objc/objc-api.h (100%) rename {contrib/libobjc => libobjc}/objc/objc-decls.h (100%) rename {contrib/libobjc => libobjc}/objc/objc-list.h (100%) rename {contrib/libobjc => libobjc}/objc/objc.h (100%) rename {contrib/libobjc => libobjc}/objc/runtime.h (100%) rename {contrib/libobjc => libobjc}/objc/sarray.h (100%) rename {contrib/libobjc => libobjc}/objc/thr.h (100%) rename {contrib/libobjc => libobjc}/objc/typedstream.h (100%) rename {contrib/libobjc => libobjc}/objects.c (100%) rename {contrib/libobjc => libobjc}/sarray.c (100%) rename {contrib/libobjc => libobjc}/selector.c (100%) rename {contrib/libobjc => libobjc}/sendmsg.c (100%) rename {contrib/libobjc => libobjc}/thr-dce.c (100%) rename {contrib/libobjc => libobjc}/thr-decosf1.c (100%) rename {contrib/libobjc => libobjc}/thr-irix.c (100%) rename {contrib/libobjc => libobjc}/thr-mach.c (100%) rename {contrib/libobjc => libobjc}/thr-objc.c (100%) rename {contrib/libobjc => libobjc}/thr-os2.c (100%) rename {contrib/libobjc => libobjc}/thr-posix.c (100%) rename {contrib/libobjc => libobjc}/thr-pthreads.c (100%) rename {contrib/libobjc => libobjc}/thr-rtems.c (100%) rename {contrib/libobjc => libobjc}/thr-single.c (100%) rename {contrib/libobjc => libobjc}/thr-solaris.c (100%) rename {contrib/libobjc => libobjc}/thr-vxworks.c (100%) rename {contrib/libobjc => libobjc}/thr-win32.c (100%) rename {contrib/libobjc => libobjc}/thr.c (100%) rename {contrib/gcclibs/libssp => libssp}/ChangeLog (100%) rename {contrib/gcclibs/libssp => libssp}/Makefile.am (100%) rename {contrib/gcclibs/libssp => libssp}/Makefile.in (100%) rename {contrib/gcclibs/libssp => libssp}/aclocal.m4 (100%) rename {contrib/gcclibs/libssp => libssp}/config.h.in (100%) rename {contrib/gcclibs/libssp => libssp}/configure (100%) rename {contrib/gcclibs/libssp => libssp}/configure.ac (100%) rename {contrib/gcclibs/libssp => libssp}/gets-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/libtool-version (100%) rename {contrib/gcclibs/libssp => libssp}/memcpy-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/memmove-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/mempcpy-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/memset-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/snprintf-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/sprintf-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/ssp-local.c (100%) rename {contrib/gcclibs/libssp => libssp}/ssp.c (100%) rename {contrib/gcclibs/libssp => libssp}/ssp.map (100%) rename {contrib/gcclibs/libssp => libssp}/ssp/ssp.h.in (100%) rename {contrib/gcclibs/libssp => libssp}/ssp/stdio.h (100%) rename {contrib/gcclibs/libssp => libssp}/ssp/string.h (100%) rename {contrib/gcclibs/libssp => libssp}/ssp/unistd.h (100%) rename {contrib/gcclibs/libssp => libssp}/stpcpy-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/strcat-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/strcpy-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/strncat-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/strncpy-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/vsnprintf-chk.c (100%) rename {contrib/gcclibs/libssp => libssp}/vsprintf-chk.c (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-1998 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-1999 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2000 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2001 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2002 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2003 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2004 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2005 (100%) rename {contrib/libstdc++ => libstdc++}/ChangeLog-2006 (100%) rename {contrib/libstdc++ => libstdc++}/FREEBSD-upgrade (100%) rename {contrib/libstdc++ => libstdc++}/Makefile.am (100%) rename {contrib/libstdc++ => libstdc++}/Makefile.in (100%) rename {contrib/libstdc++ => libstdc++}/README (100%) rename {contrib/libstdc++ => libstdc++}/acinclude.m4 (100%) rename {contrib/libstdc++ => libstdc++}/aclocal.m4 (100%) rename {contrib/libstdc++ => libstdc++}/config.h.in (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/compatibility.h (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/alpha-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/i386-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/i486-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/ia64-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/mips-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/s390-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/s390x-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/sparc-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/pre/gnu-versioned-namespace.ver (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/pre/gnu.ver (100%) rename {contrib/libstdc++ => libstdc++}/config/abi/pre/none.ver (100%) rename {contrib/libstdc++ => libstdc++}/config/allocator/bitmap_allocator_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/allocator/malloc_allocator_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/allocator/mt_allocator_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/allocator/new_allocator_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/allocator/pool_allocator_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/alpha/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/arm/cxxabi_tweaks.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/cris/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/cris/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/generic/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/generic/atomicity_builtins/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/generic/atomicity_mutex/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/generic/cpu_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/generic/cxxabi_tweaks.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/hppa/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/i386/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/i486/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/ia64/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/m68k/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/mips/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/powerpc/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/powerpc/cpu_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/sh/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/sparc/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/cpu/sparc/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/io/basic_file_stdio.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/io/basic_file_stdio.h (100%) rename {contrib/libstdc++ => libstdc++}/config/io/c_io_stdio.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/darwin/ctype_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/c++locale_internal.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/c_locale.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/c_locale.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/codecvt_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/collate_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/ctype_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/messages_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/messages_members.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/monetary_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/numeric_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/time_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/generic/time_members.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/c++locale_internal.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/c_locale.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/c_locale.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/codecvt_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/collate_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/ctype_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/messages_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/messages_members.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/monetary_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/numeric_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/time_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/gnu/time_members.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/ieee_1003.1-2001/c_locale.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/ieee_1003.1-2001/c_locale.h (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/ieee_1003.1-2001/messages_members.cc (100%) rename {contrib/libstdc++ => libstdc++}/config/locale/ieee_1003.1-2001/messages_members.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/aix/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/aix/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/aix/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/aix/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/aix/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/aix/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/darwin/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/darwin/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/darwin/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/darwin/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/darwin/ppc-extra.ver (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/freebsd/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/freebsd/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/freebsd/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/freebsd/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/netbsd/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/netbsd/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/netbsd/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/bsd/netbsd/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/djgpp/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/djgpp/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/djgpp/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/djgpp/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/generic/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/generic/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/generic/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/generic/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/ldbl-extra.ver (100%) rename {contrib/libstdc++ => libstdc++}/config/os/gnu-linux/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/hpux/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/hpux/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/hpux/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/hpux/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/atomic_word.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix5.2/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix5.2/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix5.2/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix5.2/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix6.5/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix6.5/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix6.5/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/irix/irix6.5/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/mingw32/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/mingw32/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/mingw32/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/mingw32/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/newlib/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/newlib/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/newlib/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/newlib/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/qnx/qnx6.1/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/qnx/qnx6.1/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/qnx/qnx6.1/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/qnx/qnx6.1/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.5/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.5/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.5/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.5/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.6/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.6/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.6/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.6/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.7/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.7/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.7/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/solaris/solaris2.7/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/tpf/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/tpf/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/tpf/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/tpf/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/uclibc/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/uclibc/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/uclibc/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/uclibc/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/vxworks/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/vxworks/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/vxworks/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/vxworks/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/windiss/ctype_base.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/windiss/ctype_inline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/windiss/ctype_noninline.h (100%) rename {contrib/libstdc++ => libstdc++}/config/os/windiss/os_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/configure (100%) rename {contrib/libstdc++ => libstdc++}/configure.ac (100%) rename {contrib/libstdc++ => libstdc++}/configure.host (100%) rename {contrib/libstdc++ => libstdc++}/crossconfig.m4 (100%) rename {contrib/libstdc++ => libstdc++}/fragment.am (100%) rename {contrib/libstdc++ => libstdc++}/include/Makefile.am (100%) rename {contrib/libstdc++ => libstdc++}/include/Makefile.in (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/algo.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/algobase.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/alloc.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/backward_warning.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/bvector.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/complex.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/defalloc.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/deque.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/fstream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/function.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/hash_map.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/hash_set.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/hashtable.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/heap.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/iomanip.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/iostream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/istream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/iterator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/list.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/map.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/multimap.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/multiset.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/new.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/ostream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/pair.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/queue.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/rope.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/set.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/slist.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/stack.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/stream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/streambuf.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/strstream (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/tempbuf.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/tree.h (100%) rename {contrib/libstdc++ => libstdc++}/include/backward/vector.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/basic_ios.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/basic_ios.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/basic_string.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/basic_string.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/boost_concept_check.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/c++config (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/char_traits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/codecvt.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/concept_check.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/cpp_type_traits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/deque.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/fstream.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/functexcept.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/gslice.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/gslice_array.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/indirect_array.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/ios_base.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/istream.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/list.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/locale_classes.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/locale_facets.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/locale_facets.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/localefwd.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/mask_array.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/ostream.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/ostream_insert.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/postypes.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/slice_array.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/sstream.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_algo.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_algobase.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_bvector.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_construct.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_deque.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_function.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_heap.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_iterator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_iterator_base_funcs.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_iterator_base_types.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_list.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_map.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_multimap.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_multiset.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_numeric.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_pair.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_queue.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_raw_storage_iter.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_relops.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_set.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_stack.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_tempbuf.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_tree.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_uninitialized.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stl_vector.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stream_iterator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/streambuf.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/streambuf_iterator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/stringfwd.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/valarray_after.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/valarray_array.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/valarray_array.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/valarray_before.h (100%) rename {contrib/libstdc++ => libstdc++}/include/bits/vector.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cassert.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cerrno.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cfloat.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_ciso646.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_climits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_clocale.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cmath.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_csetjmp.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_csignal.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cstdarg.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cstddef.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cstdio.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cstdlib.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cstring.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_ctime.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cwchar.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c/std_cwctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/assert.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/ctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/errno.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/float.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/iso646.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/limits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/locale.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/math.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/setjmp.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/signal.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/stdarg.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/stddef.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/stdio.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/stdlib.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/string.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/time.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/wchar.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_compatibility/wctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/cmath.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cassert.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cerrno.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cfloat.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_ciso646.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_climits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_clocale.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cmath.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_csetjmp.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_csignal.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cstdarg.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cstddef.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cstdio.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cstdlib.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cstring.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_ctime.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cwchar.h (100%) rename {contrib/libstdc++ => libstdc++}/include/c_std/std_cwctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/bitset (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/debug.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/deque (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/formatter.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/functions.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/hash_map (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/hash_map.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/hash_multimap.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/hash_multiset.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/hash_set (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/hash_set.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/list (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/macros.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/map (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/map.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/multimap.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/multiset.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/safe_base.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/safe_iterator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/safe_iterator.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/safe_sequence.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/set (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/set.h (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/string (100%) rename {contrib/libstdc++ => libstdc++}/include/debug/vector (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/algorithm (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/array_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/atomicity.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/bitmap_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/codecvt_specializations.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/concurrence.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/debug_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/functional (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/hash_fun.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/hash_map (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/hash_set (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/hashtable.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/iterator (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/malloc_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/memory (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/mt_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/new_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/numeric (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/numeric_traits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/assoc_container.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/basic_types.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/cond_dealtor.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/container_base_dispatch.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/map_debug_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/head.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/leaf.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/node_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/node.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/node.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/splay_tree_/traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/standard_policies.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/tree_trace_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/type_utils.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/types_traits.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/exception.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/hash_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/list_update_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/priority_queue.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/tag_and_trait.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/tree_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pb_ds/trie_policy.hpp (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pod_char_traits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/pool_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/rb_tree (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/rc_string_base.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/rope (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/ropeimpl.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/slist (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/sso_string_base.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/stdio_filebuf.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/stdio_sync_filebuf.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/throw_allocator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/type_traits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/typelist.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/vstring.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/vstring.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/vstring_fwd.h (100%) rename {contrib/libstdc++ => libstdc++}/include/ext/vstring_util.h (100%) rename {contrib/libstdc++ => libstdc++}/include/precompiled/extc++.h (100%) rename {contrib/libstdc++ => libstdc++}/include/precompiled/stdc++.h (100%) rename {contrib/libstdc++ => libstdc++}/include/precompiled/stdtr1c++.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_algorithm.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_bitset.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_complex.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_deque.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_fstream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_functional.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_iomanip.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_ios.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_iosfwd.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_iostream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_istream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_iterator.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_limits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_list.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_locale.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_map.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_memory.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_numeric.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_ostream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_queue.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_set.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_sstream.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_stack.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_stdexcept.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_streambuf.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_string.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_utility.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_valarray.h (100%) rename {contrib/libstdc++ => libstdc++}/include/std/std_vector.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/array (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/bind_iterate.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/bind_repeat.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/boost_shared_ptr.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cctype (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cfenv (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cfloat (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cinttypes (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/climits (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cmath (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/common.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/complex (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cstdarg (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cstdbool (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cstdint (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cstdio (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cstdlib (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/ctgmath (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/ctime (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/ctype.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cwchar (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/cwctype (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/fenv.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/float.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/functional (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/functional_hash.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/functional_iterate.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/hashtable (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/hashtable_policy.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/inttypes.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/limits.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/math.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/memory (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/mu_iterate.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/random (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/random.tcc (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/ref_fwd.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/ref_wrap_iterate.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/repeat.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/stdarg.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/stdbool.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/stdint.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/stdio.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/stdlib.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/tgmath.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/tuple (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/tuple_defs.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/tuple_iterate.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/type_traits (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/type_traits_fwd.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/unordered_map (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/unordered_set (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/utility (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/wchar.h (100%) rename {contrib/libstdc++ => libstdc++}/include/tr1/wctype.h (100%) rename {contrib/libstdc++ => libstdc++}/libmath/Makefile.am (100%) rename {contrib/libstdc++ => libstdc++}/libmath/Makefile.in (100%) rename {contrib/libstdc++ => libstdc++}/libmath/copysignf.c (100%) rename {contrib/libstdc++ => libstdc++}/libmath/mathconf.h (100%) rename {contrib/libstdc++ => libstdc++}/libmath/signbit.c (100%) rename {contrib/libstdc++ => libstdc++}/libmath/signbitf.c (100%) rename {contrib/libstdc++ => libstdc++}/libmath/signbitl.c (100%) rename {contrib/libstdc++ => libstdc++}/libmath/stubs.c (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/Makefile.am (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/Makefile.in (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/cxxabi.h (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/del_op.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/del_opnt.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/del_opv.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/del_opvnt.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_alloc.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_arm.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_aux_runtime.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_call.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_catch.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_exception.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_globals.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_personality.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_term_handler.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_terminate.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_throw.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_type.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/eh_unex_handler.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/exception (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/exception_defines.h (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/guard.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/new (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/new_handler.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/new_op.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/new_opnt.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/new_opv.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/new_opvnt.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/pure.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/tinfo.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/tinfo.h (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/tinfo2.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/typeinfo (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/unwind-cxx.h (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/vec.cc (100%) rename {contrib/libstdc++ => libstdc++}/libsupc++/vterminate.cc (100%) rename {contrib/libstdc++ => libstdc++}/linkage.m4 (100%) rename {contrib/libstdc++ => libstdc++}/scripts/check_performance (100%) rename {contrib/libstdc++ => libstdc++}/scripts/create_testsuite_files (100%) rename {contrib/libstdc++ => libstdc++}/scripts/extract_symvers (100%) rename {contrib/libstdc++ => libstdc++}/scripts/gen_bind_includers.pl (100%) rename {contrib/libstdc++ => libstdc++}/scripts/gen_includers.pl (100%) rename {contrib/libstdc++ => libstdc++}/scripts/gen_includers2.pl (100%) rename {contrib/libstdc++ => libstdc++}/scripts/make_exports.pl (100%) rename {contrib/libstdc++ => libstdc++}/scripts/make_graph.py (100%) rename {contrib/libstdc++ => libstdc++}/scripts/make_graphs.py (100%) rename {contrib/libstdc++ => libstdc++}/scripts/testsuite_flags.in (100%) rename {contrib/libstdc++ => libstdc++}/src/Makefile.am (100%) rename {contrib/libstdc++ => libstdc++}/src/Makefile.in (100%) rename {contrib/libstdc++ => libstdc++}/src/allocator-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/bitmap_allocator.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/codecvt.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/compatibility-ldbl.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/compatibility.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/complex_io.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/concept-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ctype.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/debug.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/debug_list.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ext-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/fstream-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/functexcept.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/globals_io.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ios-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ios.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ios_failure.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ios_init.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ios_locale.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/iostream-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/istream-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/istream.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/limits.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/list.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/locale-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/locale.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/locale_facets.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/locale_init.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/localename.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/misc-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/mt_allocator.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/ostream-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/pool_allocator.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/sstream-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/stdexcept.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/streambuf-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/streambuf.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/string-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/strstream.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/tree.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/valarray-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/wlocale-inst.cc (100%) rename {contrib/libstdc++ => libstdc++}/src/wstring-inst.cc (100%) diff --git a/contrib/gcc/BASE-VER b/gcc/BASE-VER similarity index 100% rename from contrib/gcc/BASE-VER rename to gcc/BASE-VER diff --git a/contrib/gcc/COPYING b/gcc/COPYING similarity index 100% rename from contrib/gcc/COPYING rename to gcc/COPYING diff --git a/contrib/gcc/COPYING.LIB b/gcc/COPYING.LIB similarity index 100% rename from contrib/gcc/COPYING.LIB rename to gcc/COPYING.LIB diff --git a/contrib/gcc/ChangeLog b/gcc/ChangeLog similarity index 100% rename from contrib/gcc/ChangeLog rename to gcc/ChangeLog diff --git a/contrib/gcc/ChangeLog-1997 b/gcc/ChangeLog-1997 similarity index 100% rename from contrib/gcc/ChangeLog-1997 rename to gcc/ChangeLog-1997 diff --git a/contrib/gcc/ChangeLog-1998 b/gcc/ChangeLog-1998 similarity index 100% rename from contrib/gcc/ChangeLog-1998 rename to gcc/ChangeLog-1998 diff --git a/contrib/gcc/ChangeLog-1999 b/gcc/ChangeLog-1999 similarity index 100% rename from contrib/gcc/ChangeLog-1999 rename to gcc/ChangeLog-1999 diff --git a/contrib/gcc/ChangeLog-2000 b/gcc/ChangeLog-2000 similarity index 100% rename from contrib/gcc/ChangeLog-2000 rename to gcc/ChangeLog-2000 diff --git a/contrib/gcc/ChangeLog-2001 b/gcc/ChangeLog-2001 similarity index 100% rename from contrib/gcc/ChangeLog-2001 rename to gcc/ChangeLog-2001 diff --git a/contrib/gcc/ChangeLog-2002 b/gcc/ChangeLog-2002 similarity index 100% rename from contrib/gcc/ChangeLog-2002 rename to gcc/ChangeLog-2002 diff --git a/contrib/gcc/ChangeLog-2003 b/gcc/ChangeLog-2003 similarity index 100% rename from contrib/gcc/ChangeLog-2003 rename to gcc/ChangeLog-2003 diff --git a/contrib/gcc/ChangeLog-2004 b/gcc/ChangeLog-2004 similarity index 100% rename from contrib/gcc/ChangeLog-2004 rename to gcc/ChangeLog-2004 diff --git a/contrib/gcc/ChangeLog-2005 b/gcc/ChangeLog-2005 similarity index 100% rename from contrib/gcc/ChangeLog-2005 rename to gcc/ChangeLog-2005 diff --git a/contrib/gcc/ChangeLog-2006 b/gcc/ChangeLog-2006 similarity index 100% rename from contrib/gcc/ChangeLog-2006 rename to gcc/ChangeLog-2006 diff --git a/contrib/gcc/ChangeLog.lib b/gcc/ChangeLog.lib similarity index 100% rename from contrib/gcc/ChangeLog.lib rename to gcc/ChangeLog.lib diff --git a/contrib/gcc/ChangeLog.tree-ssa b/gcc/ChangeLog.tree-ssa similarity index 100% rename from contrib/gcc/ChangeLog.tree-ssa rename to gcc/ChangeLog.tree-ssa diff --git a/contrib/gcc/DATESTAMP b/gcc/DATESTAMP similarity index 100% rename from contrib/gcc/DATESTAMP rename to gcc/DATESTAMP diff --git a/contrib/gcc/DEV-PHASE b/gcc/DEV-PHASE similarity index 100% rename from contrib/gcc/DEV-PHASE rename to gcc/DEV-PHASE diff --git a/contrib/gcc/FSFChangeLog b/gcc/FSFChangeLog similarity index 100% rename from contrib/gcc/FSFChangeLog rename to gcc/FSFChangeLog diff --git a/contrib/gcc/FSFChangeLog.10 b/gcc/FSFChangeLog.10 similarity index 100% rename from contrib/gcc/FSFChangeLog.10 rename to gcc/FSFChangeLog.10 diff --git a/contrib/gcc/FSFChangeLog.11 b/gcc/FSFChangeLog.11 similarity index 100% rename from contrib/gcc/FSFChangeLog.11 rename to gcc/FSFChangeLog.11 diff --git a/contrib/gcc/LANGUAGES b/gcc/LANGUAGES similarity index 100% rename from contrib/gcc/LANGUAGES rename to gcc/LANGUAGES diff --git a/contrib/gcc/Makefile.in b/gcc/Makefile.in similarity index 100% rename from contrib/gcc/Makefile.in rename to gcc/Makefile.in diff --git a/contrib/gcc/ONEWS b/gcc/ONEWS similarity index 100% rename from contrib/gcc/ONEWS rename to gcc/ONEWS diff --git a/contrib/gcc/README.Portability b/gcc/README.Portability similarity index 100% rename from contrib/gcc/README.Portability rename to gcc/README.Portability diff --git a/contrib/gcc/SERVICE b/gcc/SERVICE similarity index 100% rename from contrib/gcc/SERVICE rename to gcc/SERVICE diff --git a/contrib/gcc/acinclude.m4 b/gcc/acinclude.m4 similarity index 100% rename from contrib/gcc/acinclude.m4 rename to gcc/acinclude.m4 diff --git a/contrib/gcc/aclocal.m4 b/gcc/aclocal.m4 similarity index 100% rename from contrib/gcc/aclocal.m4 rename to gcc/aclocal.m4 diff --git a/contrib/gcc/addresses.h b/gcc/addresses.h similarity index 100% rename from contrib/gcc/addresses.h rename to gcc/addresses.h diff --git a/contrib/gcc/alias.c b/gcc/alias.c similarity index 100% rename from contrib/gcc/alias.c rename to gcc/alias.c diff --git a/contrib/gcc/alias.h b/gcc/alias.h similarity index 100% rename from contrib/gcc/alias.h rename to gcc/alias.h diff --git a/contrib/gcc/alloc-pool.c b/gcc/alloc-pool.c similarity index 100% rename from contrib/gcc/alloc-pool.c rename to gcc/alloc-pool.c diff --git a/contrib/gcc/alloc-pool.h b/gcc/alloc-pool.h similarity index 100% rename from contrib/gcc/alloc-pool.h rename to gcc/alloc-pool.h diff --git a/contrib/gcc/attribs.c b/gcc/attribs.c similarity index 100% rename from contrib/gcc/attribs.c rename to gcc/attribs.c diff --git a/contrib/gcc/basic-block.h b/gcc/basic-block.h similarity index 100% rename from contrib/gcc/basic-block.h rename to gcc/basic-block.h diff --git a/contrib/gcc/bb-reorder.c b/gcc/bb-reorder.c similarity index 100% rename from contrib/gcc/bb-reorder.c rename to gcc/bb-reorder.c diff --git a/contrib/gcc/bitmap.c b/gcc/bitmap.c similarity index 100% rename from contrib/gcc/bitmap.c rename to gcc/bitmap.c diff --git a/contrib/gcc/bitmap.h b/gcc/bitmap.h similarity index 100% rename from contrib/gcc/bitmap.h rename to gcc/bitmap.h diff --git a/contrib/gcc/bt-load.c b/gcc/bt-load.c similarity index 100% rename from contrib/gcc/bt-load.c rename to gcc/bt-load.c diff --git a/contrib/gcc/builtin-attrs.def b/gcc/builtin-attrs.def similarity index 100% rename from contrib/gcc/builtin-attrs.def rename to gcc/builtin-attrs.def diff --git a/contrib/gcc/builtin-types.def b/gcc/builtin-types.def similarity index 100% rename from contrib/gcc/builtin-types.def rename to gcc/builtin-types.def diff --git a/contrib/gcc/builtins.c b/gcc/builtins.c similarity index 100% rename from contrib/gcc/builtins.c rename to gcc/builtins.c diff --git a/contrib/gcc/builtins.def b/gcc/builtins.def similarity index 100% rename from contrib/gcc/builtins.def rename to gcc/builtins.def diff --git a/contrib/gcc/c-aux-info.c b/gcc/c-aux-info.c similarity index 100% rename from contrib/gcc/c-aux-info.c rename to gcc/c-aux-info.c diff --git a/contrib/gcc/c-common.c b/gcc/c-common.c similarity index 100% rename from contrib/gcc/c-common.c rename to gcc/c-common.c diff --git a/contrib/gcc/c-common.def b/gcc/c-common.def similarity index 100% rename from contrib/gcc/c-common.def rename to gcc/c-common.def diff --git a/contrib/gcc/c-common.h b/gcc/c-common.h similarity index 100% rename from contrib/gcc/c-common.h rename to gcc/c-common.h diff --git a/contrib/gcc/c-config-lang.in b/gcc/c-config-lang.in similarity index 100% rename from contrib/gcc/c-config-lang.in rename to gcc/c-config-lang.in diff --git a/contrib/gcc/c-convert.c b/gcc/c-convert.c similarity index 100% rename from contrib/gcc/c-convert.c rename to gcc/c-convert.c diff --git a/contrib/gcc/c-cppbuiltin.c b/gcc/c-cppbuiltin.c similarity index 100% rename from contrib/gcc/c-cppbuiltin.c rename to gcc/c-cppbuiltin.c diff --git a/contrib/gcc/c-decl.c b/gcc/c-decl.c similarity index 100% rename from contrib/gcc/c-decl.c rename to gcc/c-decl.c diff --git a/contrib/gcc/c-dump.c b/gcc/c-dump.c similarity index 100% rename from contrib/gcc/c-dump.c rename to gcc/c-dump.c diff --git a/contrib/gcc/c-errors.c b/gcc/c-errors.c similarity index 100% rename from contrib/gcc/c-errors.c rename to gcc/c-errors.c diff --git a/contrib/gcc/c-format.c b/gcc/c-format.c similarity index 100% rename from contrib/gcc/c-format.c rename to gcc/c-format.c diff --git a/contrib/gcc/c-format.h b/gcc/c-format.h similarity index 100% rename from contrib/gcc/c-format.h rename to gcc/c-format.h diff --git a/contrib/gcc/c-gimplify.c b/gcc/c-gimplify.c similarity index 100% rename from contrib/gcc/c-gimplify.c rename to gcc/c-gimplify.c diff --git a/contrib/gcc/c-incpath.c b/gcc/c-incpath.c similarity index 100% rename from contrib/gcc/c-incpath.c rename to gcc/c-incpath.c diff --git a/contrib/gcc/c-incpath.h b/gcc/c-incpath.h similarity index 100% rename from contrib/gcc/c-incpath.h rename to gcc/c-incpath.h diff --git a/contrib/gcc/c-lang.c b/gcc/c-lang.c similarity index 100% rename from contrib/gcc/c-lang.c rename to gcc/c-lang.c diff --git a/contrib/gcc/c-lex.c b/gcc/c-lex.c similarity index 100% rename from contrib/gcc/c-lex.c rename to gcc/c-lex.c diff --git a/contrib/gcc/c-objc-common.c b/gcc/c-objc-common.c similarity index 100% rename from contrib/gcc/c-objc-common.c rename to gcc/c-objc-common.c diff --git a/contrib/gcc/c-objc-common.h b/gcc/c-objc-common.h similarity index 100% rename from contrib/gcc/c-objc-common.h rename to gcc/c-objc-common.h diff --git a/contrib/gcc/c-omp.c b/gcc/c-omp.c similarity index 100% rename from contrib/gcc/c-omp.c rename to gcc/c-omp.c diff --git a/contrib/gcc/c-opts.c b/gcc/c-opts.c similarity index 100% rename from contrib/gcc/c-opts.c rename to gcc/c-opts.c diff --git a/contrib/gcc/c-parser.c b/gcc/c-parser.c similarity index 100% rename from contrib/gcc/c-parser.c rename to gcc/c-parser.c diff --git a/contrib/gcc/c-pch.c b/gcc/c-pch.c similarity index 100% rename from contrib/gcc/c-pch.c rename to gcc/c-pch.c diff --git a/contrib/gcc/c-ppoutput.c b/gcc/c-ppoutput.c similarity index 100% rename from contrib/gcc/c-ppoutput.c rename to gcc/c-ppoutput.c diff --git a/contrib/gcc/c-pragma.c b/gcc/c-pragma.c similarity index 100% rename from contrib/gcc/c-pragma.c rename to gcc/c-pragma.c diff --git a/contrib/gcc/c-pragma.h b/gcc/c-pragma.h similarity index 100% rename from contrib/gcc/c-pragma.h rename to gcc/c-pragma.h diff --git a/contrib/gcc/c-pretty-print.c b/gcc/c-pretty-print.c similarity index 100% rename from contrib/gcc/c-pretty-print.c rename to gcc/c-pretty-print.c diff --git a/contrib/gcc/c-pretty-print.h b/gcc/c-pretty-print.h similarity index 100% rename from contrib/gcc/c-pretty-print.h rename to gcc/c-pretty-print.h diff --git a/contrib/gcc/c-semantics.c b/gcc/c-semantics.c similarity index 100% rename from contrib/gcc/c-semantics.c rename to gcc/c-semantics.c diff --git a/contrib/gcc/c-tree.h b/gcc/c-tree.h similarity index 100% rename from contrib/gcc/c-tree.h rename to gcc/c-tree.h diff --git a/contrib/gcc/c-typeck.c b/gcc/c-typeck.c similarity index 100% rename from contrib/gcc/c-typeck.c rename to gcc/c-typeck.c diff --git a/contrib/gcc/c.opt b/gcc/c.opt similarity index 100% rename from contrib/gcc/c.opt rename to gcc/c.opt diff --git a/contrib/gcc/caller-save.c b/gcc/caller-save.c similarity index 100% rename from contrib/gcc/caller-save.c rename to gcc/caller-save.c diff --git a/contrib/gcc/calls.c b/gcc/calls.c similarity index 100% rename from contrib/gcc/calls.c rename to gcc/calls.c diff --git a/contrib/gcc/cfg.c b/gcc/cfg.c similarity index 100% rename from contrib/gcc/cfg.c rename to gcc/cfg.c diff --git a/contrib/gcc/cfganal.c b/gcc/cfganal.c similarity index 100% rename from contrib/gcc/cfganal.c rename to gcc/cfganal.c diff --git a/contrib/gcc/cfgbuild.c b/gcc/cfgbuild.c similarity index 100% rename from contrib/gcc/cfgbuild.c rename to gcc/cfgbuild.c diff --git a/contrib/gcc/cfgcleanup.c b/gcc/cfgcleanup.c similarity index 100% rename from contrib/gcc/cfgcleanup.c rename to gcc/cfgcleanup.c diff --git a/contrib/gcc/cfgexpand.c b/gcc/cfgexpand.c similarity index 100% rename from contrib/gcc/cfgexpand.c rename to gcc/cfgexpand.c diff --git a/contrib/gcc/cfghooks.c b/gcc/cfghooks.c similarity index 100% rename from contrib/gcc/cfghooks.c rename to gcc/cfghooks.c diff --git a/contrib/gcc/cfghooks.h b/gcc/cfghooks.h similarity index 100% rename from contrib/gcc/cfghooks.h rename to gcc/cfghooks.h diff --git a/contrib/gcc/cfglayout.c b/gcc/cfglayout.c similarity index 100% rename from contrib/gcc/cfglayout.c rename to gcc/cfglayout.c diff --git a/contrib/gcc/cfglayout.h b/gcc/cfglayout.h similarity index 100% rename from contrib/gcc/cfglayout.h rename to gcc/cfglayout.h diff --git a/contrib/gcc/cfgloop.c b/gcc/cfgloop.c similarity index 100% rename from contrib/gcc/cfgloop.c rename to gcc/cfgloop.c diff --git a/contrib/gcc/cfgloop.h b/gcc/cfgloop.h similarity index 100% rename from contrib/gcc/cfgloop.h rename to gcc/cfgloop.h diff --git a/contrib/gcc/cfgloopanal.c b/gcc/cfgloopanal.c similarity index 100% rename from contrib/gcc/cfgloopanal.c rename to gcc/cfgloopanal.c diff --git a/contrib/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c similarity index 100% rename from contrib/gcc/cfgloopmanip.c rename to gcc/cfgloopmanip.c diff --git a/contrib/gcc/cfgrtl.c b/gcc/cfgrtl.c similarity index 100% rename from contrib/gcc/cfgrtl.c rename to gcc/cfgrtl.c diff --git a/contrib/gcc/cgraph.c b/gcc/cgraph.c similarity index 100% rename from contrib/gcc/cgraph.c rename to gcc/cgraph.c diff --git a/contrib/gcc/cgraph.h b/gcc/cgraph.h similarity index 100% rename from contrib/gcc/cgraph.h rename to gcc/cgraph.h diff --git a/contrib/gcc/cgraphunit.c b/gcc/cgraphunit.c similarity index 100% rename from contrib/gcc/cgraphunit.c rename to gcc/cgraphunit.c diff --git a/contrib/gcc/collect2.c b/gcc/collect2.c similarity index 100% rename from contrib/gcc/collect2.c rename to gcc/collect2.c diff --git a/contrib/gcc/collect2.h b/gcc/collect2.h similarity index 100% rename from contrib/gcc/collect2.h rename to gcc/collect2.h diff --git a/contrib/gcc/combine.c b/gcc/combine.c similarity index 100% rename from contrib/gcc/combine.c rename to gcc/combine.c diff --git a/contrib/gcc/common.opt b/gcc/common.opt similarity index 100% rename from contrib/gcc/common.opt rename to gcc/common.opt diff --git a/contrib/gcc/conditions.h b/gcc/conditions.h similarity index 100% rename from contrib/gcc/conditions.h rename to gcc/conditions.h diff --git a/contrib/gcc/config.build b/gcc/config.build similarity index 100% rename from contrib/gcc/config.build rename to gcc/config.build diff --git a/contrib/gcc/config.gcc b/gcc/config.gcc similarity index 100% rename from contrib/gcc/config.gcc rename to gcc/config.gcc diff --git a/contrib/gcc/config.host b/gcc/config.host similarity index 100% rename from contrib/gcc/config.host rename to gcc/config.host diff --git a/contrib/gcc/config.in b/gcc/config.in similarity index 100% rename from contrib/gcc/config.in rename to gcc/config.in diff --git a/contrib/gcc/config/README b/gcc/config/README similarity index 100% rename from contrib/gcc/config/README rename to gcc/config/README diff --git a/contrib/gcc/config/arm/README-interworking b/gcc/config/arm/README-interworking similarity index 100% rename from contrib/gcc/config/arm/README-interworking rename to gcc/config/arm/README-interworking diff --git a/contrib/gcc/config/arm/aof.h b/gcc/config/arm/aof.h similarity index 100% rename from contrib/gcc/config/arm/aof.h rename to gcc/config/arm/aof.h diff --git a/contrib/gcc/config/arm/aout.h b/gcc/config/arm/aout.h similarity index 100% rename from contrib/gcc/config/arm/aout.h rename to gcc/config/arm/aout.h diff --git a/contrib/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def similarity index 100% rename from contrib/gcc/config/arm/arm-cores.def rename to gcc/config/arm/arm-cores.def diff --git a/contrib/gcc/config/arm/arm-generic.md b/gcc/config/arm/arm-generic.md similarity index 100% rename from contrib/gcc/config/arm/arm-generic.md rename to gcc/config/arm/arm-generic.md diff --git a/contrib/gcc/config/arm/arm-modes.def b/gcc/config/arm/arm-modes.def similarity index 100% rename from contrib/gcc/config/arm/arm-modes.def rename to gcc/config/arm/arm-modes.def diff --git a/contrib/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h similarity index 100% rename from contrib/gcc/config/arm/arm-protos.h rename to gcc/config/arm/arm-protos.h diff --git a/contrib/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md similarity index 100% rename from contrib/gcc/config/arm/arm-tune.md rename to gcc/config/arm/arm-tune.md diff --git a/contrib/gcc/config/arm/arm.c b/gcc/config/arm/arm.c similarity index 100% rename from contrib/gcc/config/arm/arm.c rename to gcc/config/arm/arm.c diff --git a/contrib/gcc/config/arm/arm.h b/gcc/config/arm/arm.h similarity index 100% rename from contrib/gcc/config/arm/arm.h rename to gcc/config/arm/arm.h diff --git a/contrib/gcc/config/arm/arm.md b/gcc/config/arm/arm.md similarity index 100% rename from contrib/gcc/config/arm/arm.md rename to gcc/config/arm/arm.md diff --git a/contrib/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt similarity index 100% rename from contrib/gcc/config/arm/arm.opt rename to gcc/config/arm/arm.opt diff --git a/contrib/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md similarity index 100% rename from contrib/gcc/config/arm/arm1020e.md rename to gcc/config/arm/arm1020e.md diff --git a/contrib/gcc/config/arm/arm1026ejs.md b/gcc/config/arm/arm1026ejs.md similarity index 100% rename from contrib/gcc/config/arm/arm1026ejs.md rename to gcc/config/arm/arm1026ejs.md diff --git a/contrib/gcc/config/arm/arm1136jfs.md b/gcc/config/arm/arm1136jfs.md similarity index 100% rename from contrib/gcc/config/arm/arm1136jfs.md rename to gcc/config/arm/arm1136jfs.md diff --git a/contrib/gcc/config/arm/arm926ejs.md b/gcc/config/arm/arm926ejs.md similarity index 100% rename from contrib/gcc/config/arm/arm926ejs.md rename to gcc/config/arm/arm926ejs.md diff --git a/contrib/gcc/config/arm/bpabi.S b/gcc/config/arm/bpabi.S similarity index 100% rename from contrib/gcc/config/arm/bpabi.S rename to gcc/config/arm/bpabi.S diff --git a/contrib/gcc/config/arm/bpabi.c b/gcc/config/arm/bpabi.c similarity index 100% rename from contrib/gcc/config/arm/bpabi.c rename to gcc/config/arm/bpabi.c diff --git a/contrib/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h similarity index 100% rename from contrib/gcc/config/arm/bpabi.h rename to gcc/config/arm/bpabi.h diff --git a/contrib/gcc/config/arm/cirrus.md b/gcc/config/arm/cirrus.md similarity index 100% rename from contrib/gcc/config/arm/cirrus.md rename to gcc/config/arm/cirrus.md diff --git a/contrib/gcc/config/arm/coff.h b/gcc/config/arm/coff.h similarity index 100% rename from contrib/gcc/config/arm/coff.h rename to gcc/config/arm/coff.h diff --git a/contrib/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md similarity index 100% rename from contrib/gcc/config/arm/constraints.md rename to gcc/config/arm/constraints.md diff --git a/contrib/gcc/config/arm/crti.asm b/gcc/config/arm/crti.asm similarity index 100% rename from contrib/gcc/config/arm/crti.asm rename to gcc/config/arm/crti.asm diff --git a/contrib/gcc/config/arm/crtn.asm b/gcc/config/arm/crtn.asm similarity index 100% rename from contrib/gcc/config/arm/crtn.asm rename to gcc/config/arm/crtn.asm diff --git a/contrib/gcc/config/arm/ecos-elf.h b/gcc/config/arm/ecos-elf.h similarity index 100% rename from contrib/gcc/config/arm/ecos-elf.h rename to gcc/config/arm/ecos-elf.h diff --git a/contrib/gcc/config/arm/elf.h b/gcc/config/arm/elf.h similarity index 100% rename from contrib/gcc/config/arm/elf.h rename to gcc/config/arm/elf.h diff --git a/contrib/gcc/config/arm/fpa.md b/gcc/config/arm/fpa.md similarity index 100% rename from contrib/gcc/config/arm/fpa.md rename to gcc/config/arm/fpa.md diff --git a/contrib/gcc/config/arm/freebsd.h b/gcc/config/arm/freebsd.h similarity index 100% rename from contrib/gcc/config/arm/freebsd.h rename to gcc/config/arm/freebsd.h diff --git a/contrib/gcc/config/arm/gentune.sh b/gcc/config/arm/gentune.sh similarity index 100% rename from contrib/gcc/config/arm/gentune.sh rename to gcc/config/arm/gentune.sh diff --git a/contrib/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S similarity index 100% rename from contrib/gcc/config/arm/ieee754-df.S rename to gcc/config/arm/ieee754-df.S diff --git a/contrib/gcc/config/arm/ieee754-sf.S b/gcc/config/arm/ieee754-sf.S similarity index 100% rename from contrib/gcc/config/arm/ieee754-sf.S rename to gcc/config/arm/ieee754-sf.S diff --git a/contrib/gcc/config/arm/iwmmxt.md b/gcc/config/arm/iwmmxt.md similarity index 100% rename from contrib/gcc/config/arm/iwmmxt.md rename to gcc/config/arm/iwmmxt.md diff --git a/contrib/gcc/config/arm/kaos-arm.h b/gcc/config/arm/kaos-arm.h similarity index 100% rename from contrib/gcc/config/arm/kaos-arm.h rename to gcc/config/arm/kaos-arm.h diff --git a/contrib/gcc/config/arm/kaos-strongarm.h b/gcc/config/arm/kaos-strongarm.h similarity index 100% rename from contrib/gcc/config/arm/kaos-strongarm.h rename to gcc/config/arm/kaos-strongarm.h diff --git a/contrib/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm similarity index 100% rename from contrib/gcc/config/arm/lib1funcs.asm rename to gcc/config/arm/lib1funcs.asm diff --git a/contrib/gcc/config/arm/libgcc-bpabi.ver b/gcc/config/arm/libgcc-bpabi.ver similarity index 100% rename from contrib/gcc/config/arm/libgcc-bpabi.ver rename to gcc/config/arm/libgcc-bpabi.ver diff --git a/contrib/gcc/config/arm/libunwind.S b/gcc/config/arm/libunwind.S similarity index 100% rename from contrib/gcc/config/arm/libunwind.S rename to gcc/config/arm/libunwind.S diff --git a/contrib/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h similarity index 100% rename from contrib/gcc/config/arm/linux-eabi.h rename to gcc/config/arm/linux-eabi.h diff --git a/contrib/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h similarity index 100% rename from contrib/gcc/config/arm/linux-elf.h rename to gcc/config/arm/linux-elf.h diff --git a/contrib/gcc/config/arm/linux-gas.h b/gcc/config/arm/linux-gas.h similarity index 100% rename from contrib/gcc/config/arm/linux-gas.h rename to gcc/config/arm/linux-gas.h diff --git a/contrib/gcc/config/arm/mmintrin.h b/gcc/config/arm/mmintrin.h similarity index 100% rename from contrib/gcc/config/arm/mmintrin.h rename to gcc/config/arm/mmintrin.h diff --git a/contrib/gcc/config/arm/netbsd-elf.h b/gcc/config/arm/netbsd-elf.h similarity index 100% rename from contrib/gcc/config/arm/netbsd-elf.h rename to gcc/config/arm/netbsd-elf.h diff --git a/contrib/gcc/config/arm/netbsd.h b/gcc/config/arm/netbsd.h similarity index 100% rename from contrib/gcc/config/arm/netbsd.h rename to gcc/config/arm/netbsd.h diff --git a/contrib/gcc/config/arm/pe.c b/gcc/config/arm/pe.c similarity index 100% rename from contrib/gcc/config/arm/pe.c rename to gcc/config/arm/pe.c diff --git a/contrib/gcc/config/arm/pe.h b/gcc/config/arm/pe.h similarity index 100% rename from contrib/gcc/config/arm/pe.h rename to gcc/config/arm/pe.h diff --git a/contrib/gcc/config/arm/pe.opt b/gcc/config/arm/pe.opt similarity index 100% rename from contrib/gcc/config/arm/pe.opt rename to gcc/config/arm/pe.opt diff --git a/contrib/gcc/config/arm/pr-support.c b/gcc/config/arm/pr-support.c similarity index 100% rename from contrib/gcc/config/arm/pr-support.c rename to gcc/config/arm/pr-support.c diff --git a/contrib/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md similarity index 100% rename from contrib/gcc/config/arm/predicates.md rename to gcc/config/arm/predicates.md diff --git a/contrib/gcc/config/arm/rtems-elf.h b/gcc/config/arm/rtems-elf.h similarity index 100% rename from contrib/gcc/config/arm/rtems-elf.h rename to gcc/config/arm/rtems-elf.h diff --git a/contrib/gcc/config/arm/semi.h b/gcc/config/arm/semi.h similarity index 100% rename from contrib/gcc/config/arm/semi.h rename to gcc/config/arm/semi.h diff --git a/contrib/gcc/config/arm/semiaof.h b/gcc/config/arm/semiaof.h similarity index 100% rename from contrib/gcc/config/arm/semiaof.h rename to gcc/config/arm/semiaof.h diff --git a/contrib/gcc/config/arm/strongarm-coff.h b/gcc/config/arm/strongarm-coff.h similarity index 100% rename from contrib/gcc/config/arm/strongarm-coff.h rename to gcc/config/arm/strongarm-coff.h diff --git a/contrib/gcc/config/arm/strongarm-elf.h b/gcc/config/arm/strongarm-elf.h similarity index 100% rename from contrib/gcc/config/arm/strongarm-elf.h rename to gcc/config/arm/strongarm-elf.h diff --git a/contrib/gcc/config/arm/strongarm-pe.h b/gcc/config/arm/strongarm-pe.h similarity index 100% rename from contrib/gcc/config/arm/strongarm-pe.h rename to gcc/config/arm/strongarm-pe.h diff --git a/contrib/gcc/config/arm/symbian.h b/gcc/config/arm/symbian.h similarity index 100% rename from contrib/gcc/config/arm/symbian.h rename to gcc/config/arm/symbian.h diff --git a/contrib/gcc/config/arm/t-arm b/gcc/config/arm/t-arm similarity index 100% rename from contrib/gcc/config/arm/t-arm rename to gcc/config/arm/t-arm diff --git a/contrib/gcc/config/arm/t-arm-coff b/gcc/config/arm/t-arm-coff similarity index 100% rename from contrib/gcc/config/arm/t-arm-coff rename to gcc/config/arm/t-arm-coff diff --git a/contrib/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf similarity index 100% rename from contrib/gcc/config/arm/t-arm-elf rename to gcc/config/arm/t-arm-elf diff --git a/contrib/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi similarity index 100% rename from contrib/gcc/config/arm/t-bpabi rename to gcc/config/arm/t-bpabi diff --git a/contrib/gcc/config/arm/t-linux b/gcc/config/arm/t-linux similarity index 100% rename from contrib/gcc/config/arm/t-linux rename to gcc/config/arm/t-linux diff --git a/contrib/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi similarity index 100% rename from contrib/gcc/config/arm/t-linux-eabi rename to gcc/config/arm/t-linux-eabi diff --git a/contrib/gcc/config/arm/t-netbsd b/gcc/config/arm/t-netbsd similarity index 100% rename from contrib/gcc/config/arm/t-netbsd rename to gcc/config/arm/t-netbsd diff --git a/contrib/gcc/config/arm/t-pe b/gcc/config/arm/t-pe similarity index 100% rename from contrib/gcc/config/arm/t-pe rename to gcc/config/arm/t-pe diff --git a/contrib/gcc/config/arm/t-rtems b/gcc/config/arm/t-rtems similarity index 100% rename from contrib/gcc/config/arm/t-rtems rename to gcc/config/arm/t-rtems diff --git a/contrib/gcc/config/arm/t-semi b/gcc/config/arm/t-semi similarity index 100% rename from contrib/gcc/config/arm/t-semi rename to gcc/config/arm/t-semi diff --git a/contrib/gcc/config/arm/t-strongarm-elf b/gcc/config/arm/t-strongarm-elf similarity index 100% rename from contrib/gcc/config/arm/t-strongarm-elf rename to gcc/config/arm/t-strongarm-elf diff --git a/contrib/gcc/config/arm/t-strongarm-pe b/gcc/config/arm/t-strongarm-pe similarity index 100% rename from contrib/gcc/config/arm/t-strongarm-pe rename to gcc/config/arm/t-strongarm-pe diff --git a/contrib/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian similarity index 100% rename from contrib/gcc/config/arm/t-symbian rename to gcc/config/arm/t-symbian diff --git a/contrib/gcc/config/arm/t-vxworks b/gcc/config/arm/t-vxworks similarity index 100% rename from contrib/gcc/config/arm/t-vxworks rename to gcc/config/arm/t-vxworks diff --git a/contrib/gcc/config/arm/t-wince-pe b/gcc/config/arm/t-wince-pe similarity index 100% rename from contrib/gcc/config/arm/t-wince-pe rename to gcc/config/arm/t-wince-pe diff --git a/contrib/gcc/config/arm/t-xscale-coff b/gcc/config/arm/t-xscale-coff similarity index 100% rename from contrib/gcc/config/arm/t-xscale-coff rename to gcc/config/arm/t-xscale-coff diff --git a/contrib/gcc/config/arm/t-xscale-elf b/gcc/config/arm/t-xscale-elf similarity index 100% rename from contrib/gcc/config/arm/t-xscale-elf rename to gcc/config/arm/t-xscale-elf diff --git a/contrib/gcc/config/arm/uclinux-elf.h b/gcc/config/arm/uclinux-elf.h similarity index 100% rename from contrib/gcc/config/arm/uclinux-elf.h rename to gcc/config/arm/uclinux-elf.h diff --git a/contrib/gcc/config/arm/unaligned-funcs.c b/gcc/config/arm/unaligned-funcs.c similarity index 100% rename from contrib/gcc/config/arm/unaligned-funcs.c rename to gcc/config/arm/unaligned-funcs.c diff --git a/contrib/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h similarity index 100% rename from contrib/gcc/config/arm/unknown-elf.h rename to gcc/config/arm/unknown-elf.h diff --git a/contrib/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c similarity index 100% rename from contrib/gcc/config/arm/unwind-arm.c rename to gcc/config/arm/unwind-arm.c diff --git a/contrib/gcc/config/arm/unwind-arm.h b/gcc/config/arm/unwind-arm.h similarity index 100% rename from contrib/gcc/config/arm/unwind-arm.h rename to gcc/config/arm/unwind-arm.h diff --git a/contrib/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md similarity index 100% rename from contrib/gcc/config/arm/vfp.md rename to gcc/config/arm/vfp.md diff --git a/contrib/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h similarity index 100% rename from contrib/gcc/config/arm/vxworks.h rename to gcc/config/arm/vxworks.h diff --git a/contrib/gcc/config/arm/wince-pe.h b/gcc/config/arm/wince-pe.h similarity index 100% rename from contrib/gcc/config/arm/wince-pe.h rename to gcc/config/arm/wince-pe.h diff --git a/contrib/gcc/config/arm/xscale-coff.h b/gcc/config/arm/xscale-coff.h similarity index 100% rename from contrib/gcc/config/arm/xscale-coff.h rename to gcc/config/arm/xscale-coff.h diff --git a/contrib/gcc/config/arm/xscale-elf.h b/gcc/config/arm/xscale-elf.h similarity index 100% rename from contrib/gcc/config/arm/xscale-elf.h rename to gcc/config/arm/xscale-elf.h diff --git a/contrib/gcc/config/darwin-64.c b/gcc/config/darwin-64.c similarity index 100% rename from contrib/gcc/config/darwin-64.c rename to gcc/config/darwin-64.c diff --git a/contrib/gcc/config/darwin-c.c b/gcc/config/darwin-c.c similarity index 100% rename from contrib/gcc/config/darwin-c.c rename to gcc/config/darwin-c.c diff --git a/contrib/gcc/config/darwin-crt2.c b/gcc/config/darwin-crt2.c similarity index 100% rename from contrib/gcc/config/darwin-crt2.c rename to gcc/config/darwin-crt2.c diff --git a/contrib/gcc/config/darwin-crt3.c b/gcc/config/darwin-crt3.c similarity index 100% rename from contrib/gcc/config/darwin-crt3.c rename to gcc/config/darwin-crt3.c diff --git a/contrib/gcc/config/darwin-protos.h b/gcc/config/darwin-protos.h similarity index 100% rename from contrib/gcc/config/darwin-protos.h rename to gcc/config/darwin-protos.h diff --git a/contrib/gcc/config/darwin-sections.def b/gcc/config/darwin-sections.def similarity index 100% rename from contrib/gcc/config/darwin-sections.def rename to gcc/config/darwin-sections.def diff --git a/contrib/gcc/config/darwin.c b/gcc/config/darwin.c similarity index 100% rename from contrib/gcc/config/darwin.c rename to gcc/config/darwin.c diff --git a/contrib/gcc/config/darwin.h b/gcc/config/darwin.h similarity index 100% rename from contrib/gcc/config/darwin.h rename to gcc/config/darwin.h diff --git a/contrib/gcc/config/darwin.opt b/gcc/config/darwin.opt similarity index 100% rename from contrib/gcc/config/darwin.opt rename to gcc/config/darwin.opt diff --git a/contrib/gcc/config/darwin9.h b/gcc/config/darwin9.h similarity index 100% rename from contrib/gcc/config/darwin9.h rename to gcc/config/darwin9.h diff --git a/contrib/gcc/config/dbx.h b/gcc/config/dbx.h similarity index 100% rename from contrib/gcc/config/dbx.h rename to gcc/config/dbx.h diff --git a/contrib/gcc/config/dbxcoff.h b/gcc/config/dbxcoff.h similarity index 100% rename from contrib/gcc/config/dbxcoff.h rename to gcc/config/dbxcoff.h diff --git a/contrib/gcc/config/dbxelf.h b/gcc/config/dbxelf.h similarity index 100% rename from contrib/gcc/config/dbxelf.h rename to gcc/config/dbxelf.h diff --git a/contrib/gcc/config/dfp-bit.c b/gcc/config/dfp-bit.c similarity index 100% rename from contrib/gcc/config/dfp-bit.c rename to gcc/config/dfp-bit.c diff --git a/contrib/gcc/config/dfp-bit.h b/gcc/config/dfp-bit.h similarity index 100% rename from contrib/gcc/config/dfp-bit.h rename to gcc/config/dfp-bit.h diff --git a/contrib/gcc/config/divmod.c b/gcc/config/divmod.c similarity index 100% rename from contrib/gcc/config/divmod.c rename to gcc/config/divmod.c diff --git a/contrib/gcc/config/elfos.h b/gcc/config/elfos.h similarity index 100% rename from contrib/gcc/config/elfos.h rename to gcc/config/elfos.h diff --git a/contrib/gcc/config/floatunsidf.c b/gcc/config/floatunsidf.c similarity index 100% rename from contrib/gcc/config/floatunsidf.c rename to gcc/config/floatunsidf.c diff --git a/contrib/gcc/config/floatunsisf.c b/gcc/config/floatunsisf.c similarity index 100% rename from contrib/gcc/config/floatunsisf.c rename to gcc/config/floatunsisf.c diff --git a/contrib/gcc/config/floatunsitf.c b/gcc/config/floatunsitf.c similarity index 100% rename from contrib/gcc/config/floatunsitf.c rename to gcc/config/floatunsitf.c diff --git a/contrib/gcc/config/floatunsixf.c b/gcc/config/floatunsixf.c similarity index 100% rename from contrib/gcc/config/floatunsixf.c rename to gcc/config/floatunsixf.c diff --git a/contrib/gcc/config/fp-bit.c b/gcc/config/fp-bit.c similarity index 100% rename from contrib/gcc/config/fp-bit.c rename to gcc/config/fp-bit.c diff --git a/contrib/gcc/config/fp-bit.h b/gcc/config/fp-bit.h similarity index 100% rename from contrib/gcc/config/fp-bit.h rename to gcc/config/fp-bit.h diff --git a/contrib/gcc/config/freebsd-nthr.h b/gcc/config/freebsd-nthr.h similarity index 100% rename from contrib/gcc/config/freebsd-nthr.h rename to gcc/config/freebsd-nthr.h diff --git a/contrib/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h similarity index 100% rename from contrib/gcc/config/freebsd-spec.h rename to gcc/config/freebsd-spec.h diff --git a/contrib/gcc/config/freebsd.h b/gcc/config/freebsd.h similarity index 100% rename from contrib/gcc/config/freebsd.h rename to gcc/config/freebsd.h diff --git a/contrib/gcc/config/gnu.h b/gcc/config/gnu.h similarity index 100% rename from contrib/gcc/config/gnu.h rename to gcc/config/gnu.h diff --git a/contrib/gcc/config/gofast.h b/gcc/config/gofast.h similarity index 100% rename from contrib/gcc/config/gofast.h rename to gcc/config/gofast.h diff --git a/contrib/gcc/config/host-darwin.c b/gcc/config/host-darwin.c similarity index 100% rename from contrib/gcc/config/host-darwin.c rename to gcc/config/host-darwin.c diff --git a/contrib/gcc/config/host-darwin.h b/gcc/config/host-darwin.h similarity index 100% rename from contrib/gcc/config/host-darwin.h rename to gcc/config/host-darwin.h diff --git a/contrib/gcc/config/host-hpux.c b/gcc/config/host-hpux.c similarity index 100% rename from contrib/gcc/config/host-hpux.c rename to gcc/config/host-hpux.c diff --git a/contrib/gcc/config/host-linux.c b/gcc/config/host-linux.c similarity index 100% rename from contrib/gcc/config/host-linux.c rename to gcc/config/host-linux.c diff --git a/contrib/gcc/config/host-solaris.c b/gcc/config/host-solaris.c similarity index 100% rename from contrib/gcc/config/host-solaris.c rename to gcc/config/host-solaris.c diff --git a/contrib/gcc/config/i386/athlon.md b/gcc/config/i386/athlon.md similarity index 100% rename from contrib/gcc/config/i386/athlon.md rename to gcc/config/i386/athlon.md diff --git a/contrib/gcc/config/i386/att.h b/gcc/config/i386/att.h similarity index 100% rename from contrib/gcc/config/i386/att.h rename to gcc/config/i386/att.h diff --git a/contrib/gcc/config/i386/beos-elf.h b/gcc/config/i386/beos-elf.h similarity index 100% rename from contrib/gcc/config/i386/beos-elf.h rename to gcc/config/i386/beos-elf.h diff --git a/contrib/gcc/config/i386/biarch64.h b/gcc/config/i386/biarch64.h similarity index 100% rename from contrib/gcc/config/i386/biarch64.h rename to gcc/config/i386/biarch64.h diff --git a/contrib/gcc/config/i386/bsd.h b/gcc/config/i386/bsd.h similarity index 100% rename from contrib/gcc/config/i386/bsd.h rename to gcc/config/i386/bsd.h diff --git a/contrib/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md similarity index 100% rename from contrib/gcc/config/i386/constraints.md rename to gcc/config/i386/constraints.md diff --git a/contrib/gcc/config/i386/crtdll.h b/gcc/config/i386/crtdll.h similarity index 100% rename from contrib/gcc/config/i386/crtdll.h rename to gcc/config/i386/crtdll.h diff --git a/contrib/gcc/config/i386/crtfastmath.c b/gcc/config/i386/crtfastmath.c similarity index 100% rename from contrib/gcc/config/i386/crtfastmath.c rename to gcc/config/i386/crtfastmath.c diff --git a/contrib/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h similarity index 100% rename from contrib/gcc/config/i386/cygming.h rename to gcc/config/i386/cygming.h diff --git a/contrib/gcc/config/i386/cygming.opt b/gcc/config/i386/cygming.opt similarity index 100% rename from contrib/gcc/config/i386/cygming.opt rename to gcc/config/i386/cygming.opt diff --git a/contrib/gcc/config/i386/cygwin.asm b/gcc/config/i386/cygwin.asm similarity index 100% rename from contrib/gcc/config/i386/cygwin.asm rename to gcc/config/i386/cygwin.asm diff --git a/contrib/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h similarity index 100% rename from contrib/gcc/config/i386/cygwin.h rename to gcc/config/i386/cygwin.h diff --git a/contrib/gcc/config/i386/cygwin1.c b/gcc/config/i386/cygwin1.c similarity index 100% rename from contrib/gcc/config/i386/cygwin1.c rename to gcc/config/i386/cygwin1.c diff --git a/contrib/gcc/config/i386/cygwin2.c b/gcc/config/i386/cygwin2.c similarity index 100% rename from contrib/gcc/config/i386/cygwin2.c rename to gcc/config/i386/cygwin2.c diff --git a/contrib/gcc/config/i386/darwin-libgcc.10.4.ver b/gcc/config/i386/darwin-libgcc.10.4.ver similarity index 100% rename from contrib/gcc/config/i386/darwin-libgcc.10.4.ver rename to gcc/config/i386/darwin-libgcc.10.4.ver diff --git a/contrib/gcc/config/i386/darwin-libgcc.10.5.ver b/gcc/config/i386/darwin-libgcc.10.5.ver similarity index 100% rename from contrib/gcc/config/i386/darwin-libgcc.10.5.ver rename to gcc/config/i386/darwin-libgcc.10.5.ver diff --git a/contrib/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h similarity index 100% rename from contrib/gcc/config/i386/darwin.h rename to gcc/config/i386/darwin.h diff --git a/contrib/gcc/config/i386/darwin64.h b/gcc/config/i386/darwin64.h similarity index 100% rename from contrib/gcc/config/i386/darwin64.h rename to gcc/config/i386/darwin64.h diff --git a/contrib/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h similarity index 100% rename from contrib/gcc/config/i386/djgpp.h rename to gcc/config/i386/djgpp.h diff --git a/contrib/gcc/config/i386/djgpp.opt b/gcc/config/i386/djgpp.opt similarity index 100% rename from contrib/gcc/config/i386/djgpp.opt rename to gcc/config/i386/djgpp.opt diff --git a/contrib/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c similarity index 100% rename from contrib/gcc/config/i386/driver-i386.c rename to gcc/config/i386/driver-i386.c diff --git a/contrib/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h similarity index 100% rename from contrib/gcc/config/i386/emmintrin.h rename to gcc/config/i386/emmintrin.h diff --git a/contrib/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h similarity index 100% rename from contrib/gcc/config/i386/freebsd.h rename to gcc/config/i386/freebsd.h diff --git a/contrib/gcc/config/i386/freebsd64.h b/gcc/config/i386/freebsd64.h similarity index 100% rename from contrib/gcc/config/i386/freebsd64.h rename to gcc/config/i386/freebsd64.h diff --git a/contrib/gcc/config/i386/gas.h b/gcc/config/i386/gas.h similarity index 100% rename from contrib/gcc/config/i386/gas.h rename to gcc/config/i386/gas.h diff --git a/contrib/gcc/config/i386/gmm_malloc.h b/gcc/config/i386/gmm_malloc.h similarity index 100% rename from contrib/gcc/config/i386/gmm_malloc.h rename to gcc/config/i386/gmm_malloc.h diff --git a/contrib/gcc/config/i386/gmon-sol2.c b/gcc/config/i386/gmon-sol2.c similarity index 100% rename from contrib/gcc/config/i386/gmon-sol2.c rename to gcc/config/i386/gmon-sol2.c diff --git a/contrib/gcc/config/i386/gnu.h b/gcc/config/i386/gnu.h similarity index 100% rename from contrib/gcc/config/i386/gnu.h rename to gcc/config/i386/gnu.h diff --git a/contrib/gcc/config/i386/gstabs.h b/gcc/config/i386/gstabs.h similarity index 100% rename from contrib/gcc/config/i386/gstabs.h rename to gcc/config/i386/gstabs.h diff --git a/contrib/gcc/config/i386/gthr-win32.c b/gcc/config/i386/gthr-win32.c similarity index 100% rename from contrib/gcc/config/i386/gthr-win32.c rename to gcc/config/i386/gthr-win32.c diff --git a/contrib/gcc/config/i386/host-cygwin.c b/gcc/config/i386/host-cygwin.c similarity index 100% rename from contrib/gcc/config/i386/host-cygwin.c rename to gcc/config/i386/host-cygwin.c diff --git a/contrib/gcc/config/i386/host-i386-darwin.c b/gcc/config/i386/host-i386-darwin.c similarity index 100% rename from contrib/gcc/config/i386/host-i386-darwin.c rename to gcc/config/i386/host-i386-darwin.c diff --git a/contrib/gcc/config/i386/host-mingw32.c b/gcc/config/i386/host-mingw32.c similarity index 100% rename from contrib/gcc/config/i386/host-mingw32.c rename to gcc/config/i386/host-mingw32.c diff --git a/contrib/gcc/config/i386/i386-aout.h b/gcc/config/i386/i386-aout.h similarity index 100% rename from contrib/gcc/config/i386/i386-aout.h rename to gcc/config/i386/i386-aout.h diff --git a/contrib/gcc/config/i386/i386-coff.h b/gcc/config/i386/i386-coff.h similarity index 100% rename from contrib/gcc/config/i386/i386-coff.h rename to gcc/config/i386/i386-coff.h diff --git a/contrib/gcc/config/i386/i386-interix.h b/gcc/config/i386/i386-interix.h similarity index 100% rename from contrib/gcc/config/i386/i386-interix.h rename to gcc/config/i386/i386-interix.h diff --git a/contrib/gcc/config/i386/i386-interix3.h b/gcc/config/i386/i386-interix3.h similarity index 100% rename from contrib/gcc/config/i386/i386-interix3.h rename to gcc/config/i386/i386-interix3.h diff --git a/contrib/gcc/config/i386/i386-modes.def b/gcc/config/i386/i386-modes.def similarity index 100% rename from contrib/gcc/config/i386/i386-modes.def rename to gcc/config/i386/i386-modes.def diff --git a/contrib/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h similarity index 100% rename from contrib/gcc/config/i386/i386-protos.h rename to gcc/config/i386/i386-protos.h diff --git a/contrib/gcc/config/i386/i386.c b/gcc/config/i386/i386.c similarity index 100% rename from contrib/gcc/config/i386/i386.c rename to gcc/config/i386/i386.c diff --git a/contrib/gcc/config/i386/i386.h b/gcc/config/i386/i386.h similarity index 100% rename from contrib/gcc/config/i386/i386.h rename to gcc/config/i386/i386.h diff --git a/contrib/gcc/config/i386/i386.md b/gcc/config/i386/i386.md similarity index 100% rename from contrib/gcc/config/i386/i386.md rename to gcc/config/i386/i386.md diff --git a/contrib/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt similarity index 100% rename from contrib/gcc/config/i386/i386.opt rename to gcc/config/i386/i386.opt diff --git a/contrib/gcc/config/i386/i386elf.h b/gcc/config/i386/i386elf.h similarity index 100% rename from contrib/gcc/config/i386/i386elf.h rename to gcc/config/i386/i386elf.h diff --git a/contrib/gcc/config/i386/k6.md b/gcc/config/i386/k6.md similarity index 100% rename from contrib/gcc/config/i386/k6.md rename to gcc/config/i386/k6.md diff --git a/contrib/gcc/config/i386/kaos-i386.h b/gcc/config/i386/kaos-i386.h similarity index 100% rename from contrib/gcc/config/i386/kaos-i386.h rename to gcc/config/i386/kaos-i386.h diff --git a/contrib/gcc/config/i386/kfreebsd-gnu.h b/gcc/config/i386/kfreebsd-gnu.h similarity index 100% rename from contrib/gcc/config/i386/kfreebsd-gnu.h rename to gcc/config/i386/kfreebsd-gnu.h diff --git a/contrib/gcc/config/i386/knetbsd-gnu.h b/gcc/config/i386/knetbsd-gnu.h similarity index 100% rename from contrib/gcc/config/i386/knetbsd-gnu.h rename to gcc/config/i386/knetbsd-gnu.h diff --git a/contrib/gcc/config/i386/libgcc-x86_64-glibc.ver b/gcc/config/i386/libgcc-x86_64-glibc.ver similarity index 100% rename from contrib/gcc/config/i386/libgcc-x86_64-glibc.ver rename to gcc/config/i386/libgcc-x86_64-glibc.ver diff --git a/contrib/gcc/config/i386/linux-unwind.h b/gcc/config/i386/linux-unwind.h similarity index 100% rename from contrib/gcc/config/i386/linux-unwind.h rename to gcc/config/i386/linux-unwind.h diff --git a/contrib/gcc/config/i386/linux.h b/gcc/config/i386/linux.h similarity index 100% rename from contrib/gcc/config/i386/linux.h rename to gcc/config/i386/linux.h diff --git a/contrib/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h similarity index 100% rename from contrib/gcc/config/i386/linux64.h rename to gcc/config/i386/linux64.h diff --git a/contrib/gcc/config/i386/lynx.h b/gcc/config/i386/lynx.h similarity index 100% rename from contrib/gcc/config/i386/lynx.h rename to gcc/config/i386/lynx.h diff --git a/contrib/gcc/config/i386/mach.h b/gcc/config/i386/mach.h similarity index 100% rename from contrib/gcc/config/i386/mach.h rename to gcc/config/i386/mach.h diff --git a/contrib/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h similarity index 100% rename from contrib/gcc/config/i386/mingw32.h rename to gcc/config/i386/mingw32.h diff --git a/contrib/gcc/config/i386/mm3dnow.h b/gcc/config/i386/mm3dnow.h similarity index 100% rename from contrib/gcc/config/i386/mm3dnow.h rename to gcc/config/i386/mm3dnow.h diff --git a/contrib/gcc/config/i386/mmintrin.h b/gcc/config/i386/mmintrin.h similarity index 100% rename from contrib/gcc/config/i386/mmintrin.h rename to gcc/config/i386/mmintrin.h diff --git a/contrib/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md similarity index 100% rename from contrib/gcc/config/i386/mmx.md rename to gcc/config/i386/mmx.md diff --git a/contrib/gcc/config/i386/netbsd-elf.h b/gcc/config/i386/netbsd-elf.h similarity index 100% rename from contrib/gcc/config/i386/netbsd-elf.h rename to gcc/config/i386/netbsd-elf.h diff --git a/contrib/gcc/config/i386/netbsd.h b/gcc/config/i386/netbsd.h similarity index 100% rename from contrib/gcc/config/i386/netbsd.h rename to gcc/config/i386/netbsd.h diff --git a/contrib/gcc/config/i386/netbsd64.h b/gcc/config/i386/netbsd64.h similarity index 100% rename from contrib/gcc/config/i386/netbsd64.h rename to gcc/config/i386/netbsd64.h diff --git a/contrib/gcc/config/i386/netware-crt0.c b/gcc/config/i386/netware-crt0.c similarity index 100% rename from contrib/gcc/config/i386/netware-crt0.c rename to gcc/config/i386/netware-crt0.c diff --git a/contrib/gcc/config/i386/netware-libgcc.c b/gcc/config/i386/netware-libgcc.c similarity index 100% rename from contrib/gcc/config/i386/netware-libgcc.c rename to gcc/config/i386/netware-libgcc.c diff --git a/contrib/gcc/config/i386/netware-libgcc.def b/gcc/config/i386/netware-libgcc.def similarity index 100% rename from contrib/gcc/config/i386/netware-libgcc.def rename to gcc/config/i386/netware-libgcc.def diff --git a/contrib/gcc/config/i386/netware-libgcc.exp b/gcc/config/i386/netware-libgcc.exp similarity index 100% rename from contrib/gcc/config/i386/netware-libgcc.exp rename to gcc/config/i386/netware-libgcc.exp diff --git a/contrib/gcc/config/i386/netware.c b/gcc/config/i386/netware.c similarity index 100% rename from contrib/gcc/config/i386/netware.c rename to gcc/config/i386/netware.c diff --git a/contrib/gcc/config/i386/nto.h b/gcc/config/i386/nto.h similarity index 100% rename from contrib/gcc/config/i386/nto.h rename to gcc/config/i386/nto.h diff --git a/contrib/gcc/config/i386/nwld.c b/gcc/config/i386/nwld.c similarity index 100% rename from contrib/gcc/config/i386/nwld.c rename to gcc/config/i386/nwld.c diff --git a/contrib/gcc/config/i386/nwld.h b/gcc/config/i386/nwld.h similarity index 100% rename from contrib/gcc/config/i386/nwld.h rename to gcc/config/i386/nwld.h diff --git a/contrib/gcc/config/i386/openbsd.h b/gcc/config/i386/openbsd.h similarity index 100% rename from contrib/gcc/config/i386/openbsd.h rename to gcc/config/i386/openbsd.h diff --git a/contrib/gcc/config/i386/openbsdelf.h b/gcc/config/i386/openbsdelf.h similarity index 100% rename from contrib/gcc/config/i386/openbsdelf.h rename to gcc/config/i386/openbsdelf.h diff --git a/contrib/gcc/config/i386/pentium.md b/gcc/config/i386/pentium.md similarity index 100% rename from contrib/gcc/config/i386/pentium.md rename to gcc/config/i386/pentium.md diff --git a/contrib/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h similarity index 100% rename from contrib/gcc/config/i386/pmm_malloc.h rename to gcc/config/i386/pmm_malloc.h diff --git a/contrib/gcc/config/i386/pmmintrin.h b/gcc/config/i386/pmmintrin.h similarity index 100% rename from contrib/gcc/config/i386/pmmintrin.h rename to gcc/config/i386/pmmintrin.h diff --git a/contrib/gcc/config/i386/ppro.md b/gcc/config/i386/ppro.md similarity index 100% rename from contrib/gcc/config/i386/ppro.md rename to gcc/config/i386/ppro.md diff --git a/contrib/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md similarity index 100% rename from contrib/gcc/config/i386/predicates.md rename to gcc/config/i386/predicates.md diff --git a/contrib/gcc/config/i386/ptx4-i.h b/gcc/config/i386/ptx4-i.h similarity index 100% rename from contrib/gcc/config/i386/ptx4-i.h rename to gcc/config/i386/ptx4-i.h diff --git a/contrib/gcc/config/i386/rtemself.h b/gcc/config/i386/rtemself.h similarity index 100% rename from contrib/gcc/config/i386/rtemself.h rename to gcc/config/i386/rtemself.h diff --git a/contrib/gcc/config/i386/sco5.h b/gcc/config/i386/sco5.h similarity index 100% rename from contrib/gcc/config/i386/sco5.h rename to gcc/config/i386/sco5.h diff --git a/contrib/gcc/config/i386/sco5.opt b/gcc/config/i386/sco5.opt similarity index 100% rename from contrib/gcc/config/i386/sco5.opt rename to gcc/config/i386/sco5.opt diff --git a/contrib/gcc/config/i386/sol2-10.h b/gcc/config/i386/sol2-10.h similarity index 100% rename from contrib/gcc/config/i386/sol2-10.h rename to gcc/config/i386/sol2-10.h diff --git a/contrib/gcc/config/i386/sol2-c1.asm b/gcc/config/i386/sol2-c1.asm similarity index 100% rename from contrib/gcc/config/i386/sol2-c1.asm rename to gcc/config/i386/sol2-c1.asm diff --git a/contrib/gcc/config/i386/sol2-ci.asm b/gcc/config/i386/sol2-ci.asm similarity index 100% rename from contrib/gcc/config/i386/sol2-ci.asm rename to gcc/config/i386/sol2-ci.asm diff --git a/contrib/gcc/config/i386/sol2-cn.asm b/gcc/config/i386/sol2-cn.asm similarity index 100% rename from contrib/gcc/config/i386/sol2-cn.asm rename to gcc/config/i386/sol2-cn.asm diff --git a/contrib/gcc/config/i386/sol2-gc1.asm b/gcc/config/i386/sol2-gc1.asm similarity index 100% rename from contrib/gcc/config/i386/sol2-gc1.asm rename to gcc/config/i386/sol2-gc1.asm diff --git a/contrib/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h similarity index 100% rename from contrib/gcc/config/i386/sol2.h rename to gcc/config/i386/sol2.h diff --git a/contrib/gcc/config/i386/sse.md b/gcc/config/i386/sse.md similarity index 100% rename from contrib/gcc/config/i386/sse.md rename to gcc/config/i386/sse.md diff --git a/contrib/gcc/config/i386/sync.md b/gcc/config/i386/sync.md similarity index 100% rename from contrib/gcc/config/i386/sync.md rename to gcc/config/i386/sync.md diff --git a/contrib/gcc/config/i386/sysv4-cpp.h b/gcc/config/i386/sysv4-cpp.h similarity index 100% rename from contrib/gcc/config/i386/sysv4-cpp.h rename to gcc/config/i386/sysv4-cpp.h diff --git a/contrib/gcc/config/i386/sysv4.h b/gcc/config/i386/sysv4.h similarity index 100% rename from contrib/gcc/config/i386/sysv4.h rename to gcc/config/i386/sysv4.h diff --git a/contrib/gcc/config/i386/sysv5.h b/gcc/config/i386/sysv5.h similarity index 100% rename from contrib/gcc/config/i386/sysv5.h rename to gcc/config/i386/sysv5.h diff --git a/contrib/gcc/config/i386/t-beos b/gcc/config/i386/t-beos similarity index 100% rename from contrib/gcc/config/i386/t-beos rename to gcc/config/i386/t-beos diff --git a/contrib/gcc/config/i386/t-crtfm b/gcc/config/i386/t-crtfm similarity index 100% rename from contrib/gcc/config/i386/t-crtfm rename to gcc/config/i386/t-crtfm diff --git a/contrib/gcc/config/i386/t-crtpic b/gcc/config/i386/t-crtpic similarity index 100% rename from contrib/gcc/config/i386/t-crtpic rename to gcc/config/i386/t-crtpic diff --git a/contrib/gcc/config/i386/t-crtstuff b/gcc/config/i386/t-crtstuff similarity index 100% rename from contrib/gcc/config/i386/t-crtstuff rename to gcc/config/i386/t-crtstuff diff --git a/contrib/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming similarity index 100% rename from contrib/gcc/config/i386/t-cygming rename to gcc/config/i386/t-cygming diff --git a/contrib/gcc/config/i386/t-cygwin b/gcc/config/i386/t-cygwin similarity index 100% rename from contrib/gcc/config/i386/t-cygwin rename to gcc/config/i386/t-cygwin diff --git a/contrib/gcc/config/i386/t-darwin b/gcc/config/i386/t-darwin similarity index 100% rename from contrib/gcc/config/i386/t-darwin rename to gcc/config/i386/t-darwin diff --git a/contrib/gcc/config/i386/t-darwin64 b/gcc/config/i386/t-darwin64 similarity index 100% rename from contrib/gcc/config/i386/t-darwin64 rename to gcc/config/i386/t-darwin64 diff --git a/contrib/gcc/config/i386/t-djgpp b/gcc/config/i386/t-djgpp similarity index 100% rename from contrib/gcc/config/i386/t-djgpp rename to gcc/config/i386/t-djgpp diff --git a/contrib/gcc/config/i386/t-gmm_malloc b/gcc/config/i386/t-gmm_malloc similarity index 100% rename from contrib/gcc/config/i386/t-gmm_malloc rename to gcc/config/i386/t-gmm_malloc diff --git a/contrib/gcc/config/i386/t-gthr-win32 b/gcc/config/i386/t-gthr-win32 similarity index 100% rename from contrib/gcc/config/i386/t-gthr-win32 rename to gcc/config/i386/t-gthr-win32 diff --git a/contrib/gcc/config/i386/t-i386elf b/gcc/config/i386/t-i386elf similarity index 100% rename from contrib/gcc/config/i386/t-i386elf rename to gcc/config/i386/t-i386elf diff --git a/contrib/gcc/config/i386/t-interix b/gcc/config/i386/t-interix similarity index 100% rename from contrib/gcc/config/i386/t-interix rename to gcc/config/i386/t-interix diff --git a/contrib/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64 similarity index 100% rename from contrib/gcc/config/i386/t-linux64 rename to gcc/config/i386/t-linux64 diff --git a/contrib/gcc/config/i386/t-mingw32 b/gcc/config/i386/t-mingw32 similarity index 100% rename from contrib/gcc/config/i386/t-mingw32 rename to gcc/config/i386/t-mingw32 diff --git a/contrib/gcc/config/i386/t-nto b/gcc/config/i386/t-nto similarity index 100% rename from contrib/gcc/config/i386/t-nto rename to gcc/config/i386/t-nto diff --git a/contrib/gcc/config/i386/t-nwld b/gcc/config/i386/t-nwld similarity index 100% rename from contrib/gcc/config/i386/t-nwld rename to gcc/config/i386/t-nwld diff --git a/contrib/gcc/config/i386/t-openbsd b/gcc/config/i386/t-openbsd similarity index 100% rename from contrib/gcc/config/i386/t-openbsd rename to gcc/config/i386/t-openbsd diff --git a/contrib/gcc/config/i386/t-pmm_malloc b/gcc/config/i386/t-pmm_malloc similarity index 100% rename from contrib/gcc/config/i386/t-pmm_malloc rename to gcc/config/i386/t-pmm_malloc diff --git a/contrib/gcc/config/i386/t-rtems-i386 b/gcc/config/i386/t-rtems-i386 similarity index 100% rename from contrib/gcc/config/i386/t-rtems-i386 rename to gcc/config/i386/t-rtems-i386 diff --git a/contrib/gcc/config/i386/t-sco5 b/gcc/config/i386/t-sco5 similarity index 100% rename from contrib/gcc/config/i386/t-sco5 rename to gcc/config/i386/t-sco5 diff --git a/contrib/gcc/config/i386/t-sol2 b/gcc/config/i386/t-sol2 similarity index 100% rename from contrib/gcc/config/i386/t-sol2 rename to gcc/config/i386/t-sol2 diff --git a/contrib/gcc/config/i386/t-sol2-10 b/gcc/config/i386/t-sol2-10 similarity index 100% rename from contrib/gcc/config/i386/t-sol2-10 rename to gcc/config/i386/t-sol2-10 diff --git a/contrib/gcc/config/i386/t-svr3dbx b/gcc/config/i386/t-svr3dbx similarity index 100% rename from contrib/gcc/config/i386/t-svr3dbx rename to gcc/config/i386/t-svr3dbx diff --git a/contrib/gcc/config/i386/t-uwin b/gcc/config/i386/t-uwin similarity index 100% rename from contrib/gcc/config/i386/t-uwin rename to gcc/config/i386/t-uwin diff --git a/contrib/gcc/config/i386/t-vxworks b/gcc/config/i386/t-vxworks similarity index 100% rename from contrib/gcc/config/i386/t-vxworks rename to gcc/config/i386/t-vxworks diff --git a/contrib/gcc/config/i386/t-vxworksae b/gcc/config/i386/t-vxworksae similarity index 100% rename from contrib/gcc/config/i386/t-vxworksae rename to gcc/config/i386/t-vxworksae diff --git a/contrib/gcc/config/i386/unix.h b/gcc/config/i386/unix.h similarity index 100% rename from contrib/gcc/config/i386/unix.h rename to gcc/config/i386/unix.h diff --git a/contrib/gcc/config/i386/uwin.asm b/gcc/config/i386/uwin.asm similarity index 100% rename from contrib/gcc/config/i386/uwin.asm rename to gcc/config/i386/uwin.asm diff --git a/contrib/gcc/config/i386/uwin.h b/gcc/config/i386/uwin.h similarity index 100% rename from contrib/gcc/config/i386/uwin.h rename to gcc/config/i386/uwin.h diff --git a/contrib/gcc/config/i386/vxworks.h b/gcc/config/i386/vxworks.h similarity index 100% rename from contrib/gcc/config/i386/vxworks.h rename to gcc/config/i386/vxworks.h diff --git a/contrib/gcc/config/i386/vxworksae.h b/gcc/config/i386/vxworksae.h similarity index 100% rename from contrib/gcc/config/i386/vxworksae.h rename to gcc/config/i386/vxworksae.h diff --git a/contrib/gcc/config/i386/winnt-cxx.c b/gcc/config/i386/winnt-cxx.c similarity index 100% rename from contrib/gcc/config/i386/winnt-cxx.c rename to gcc/config/i386/winnt-cxx.c diff --git a/contrib/gcc/config/i386/winnt-stubs.c b/gcc/config/i386/winnt-stubs.c similarity index 100% rename from contrib/gcc/config/i386/winnt-stubs.c rename to gcc/config/i386/winnt-stubs.c diff --git a/contrib/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c similarity index 100% rename from contrib/gcc/config/i386/winnt.c rename to gcc/config/i386/winnt.c diff --git a/contrib/gcc/config/i386/x-cygwin b/gcc/config/i386/x-cygwin similarity index 100% rename from contrib/gcc/config/i386/x-cygwin rename to gcc/config/i386/x-cygwin diff --git a/contrib/gcc/config/i386/x-darwin b/gcc/config/i386/x-darwin similarity index 100% rename from contrib/gcc/config/i386/x-darwin rename to gcc/config/i386/x-darwin diff --git a/contrib/gcc/config/i386/x-i386 b/gcc/config/i386/x-i386 similarity index 100% rename from contrib/gcc/config/i386/x-i386 rename to gcc/config/i386/x-i386 diff --git a/contrib/gcc/config/i386/x-mingw32 b/gcc/config/i386/x-mingw32 similarity index 100% rename from contrib/gcc/config/i386/x-mingw32 rename to gcc/config/i386/x-mingw32 diff --git a/contrib/gcc/config/i386/x86-64.h b/gcc/config/i386/x86-64.h similarity index 100% rename from contrib/gcc/config/i386/x86-64.h rename to gcc/config/i386/x86-64.h diff --git a/contrib/gcc/config/i386/xm-cygwin.h b/gcc/config/i386/xm-cygwin.h similarity index 100% rename from contrib/gcc/config/i386/xm-cygwin.h rename to gcc/config/i386/xm-cygwin.h diff --git a/contrib/gcc/config/i386/xm-djgpp.h b/gcc/config/i386/xm-djgpp.h similarity index 100% rename from contrib/gcc/config/i386/xm-djgpp.h rename to gcc/config/i386/xm-djgpp.h diff --git a/contrib/gcc/config/i386/xm-mingw32.h b/gcc/config/i386/xm-mingw32.h similarity index 100% rename from contrib/gcc/config/i386/xm-mingw32.h rename to gcc/config/i386/xm-mingw32.h diff --git a/contrib/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h similarity index 100% rename from contrib/gcc/config/i386/xmmintrin.h rename to gcc/config/i386/xmmintrin.h diff --git a/contrib/gcc/config/ia64/crtbegin.asm b/gcc/config/ia64/crtbegin.asm similarity index 100% rename from contrib/gcc/config/ia64/crtbegin.asm rename to gcc/config/ia64/crtbegin.asm diff --git a/contrib/gcc/config/ia64/crtend.asm b/gcc/config/ia64/crtend.asm similarity index 100% rename from contrib/gcc/config/ia64/crtend.asm rename to gcc/config/ia64/crtend.asm diff --git a/contrib/gcc/config/ia64/crtfastmath.c b/gcc/config/ia64/crtfastmath.c similarity index 100% rename from contrib/gcc/config/ia64/crtfastmath.c rename to gcc/config/ia64/crtfastmath.c diff --git a/contrib/gcc/config/ia64/crti.asm b/gcc/config/ia64/crti.asm similarity index 100% rename from contrib/gcc/config/ia64/crti.asm rename to gcc/config/ia64/crti.asm diff --git a/contrib/gcc/config/ia64/crtn.asm b/gcc/config/ia64/crtn.asm similarity index 100% rename from contrib/gcc/config/ia64/crtn.asm rename to gcc/config/ia64/crtn.asm diff --git a/contrib/gcc/config/ia64/elf.h b/gcc/config/ia64/elf.h similarity index 100% rename from contrib/gcc/config/ia64/elf.h rename to gcc/config/ia64/elf.h diff --git a/contrib/gcc/config/ia64/fde-glibc.c b/gcc/config/ia64/fde-glibc.c similarity index 100% rename from contrib/gcc/config/ia64/fde-glibc.c rename to gcc/config/ia64/fde-glibc.c diff --git a/contrib/gcc/config/ia64/freebsd.h b/gcc/config/ia64/freebsd.h similarity index 100% rename from contrib/gcc/config/ia64/freebsd.h rename to gcc/config/ia64/freebsd.h diff --git a/contrib/gcc/config/ia64/hpux.h b/gcc/config/ia64/hpux.h similarity index 100% rename from contrib/gcc/config/ia64/hpux.h rename to gcc/config/ia64/hpux.h diff --git a/contrib/gcc/config/ia64/ia64-c.c b/gcc/config/ia64/ia64-c.c similarity index 100% rename from contrib/gcc/config/ia64/ia64-c.c rename to gcc/config/ia64/ia64-c.c diff --git a/contrib/gcc/config/ia64/ia64-modes.def b/gcc/config/ia64/ia64-modes.def similarity index 100% rename from contrib/gcc/config/ia64/ia64-modes.def rename to gcc/config/ia64/ia64-modes.def diff --git a/contrib/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h similarity index 100% rename from contrib/gcc/config/ia64/ia64-protos.h rename to gcc/config/ia64/ia64-protos.h diff --git a/contrib/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c similarity index 100% rename from contrib/gcc/config/ia64/ia64.c rename to gcc/config/ia64/ia64.c diff --git a/contrib/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h similarity index 100% rename from contrib/gcc/config/ia64/ia64.h rename to gcc/config/ia64/ia64.h diff --git a/contrib/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md similarity index 100% rename from contrib/gcc/config/ia64/ia64.md rename to gcc/config/ia64/ia64.md diff --git a/contrib/gcc/config/ia64/ia64.opt b/gcc/config/ia64/ia64.opt similarity index 100% rename from contrib/gcc/config/ia64/ia64.opt rename to gcc/config/ia64/ia64.opt diff --git a/contrib/gcc/config/ia64/ia64intrin.h b/gcc/config/ia64/ia64intrin.h similarity index 100% rename from contrib/gcc/config/ia64/ia64intrin.h rename to gcc/config/ia64/ia64intrin.h diff --git a/contrib/gcc/config/ia64/ilp32.opt b/gcc/config/ia64/ilp32.opt similarity index 100% rename from contrib/gcc/config/ia64/ilp32.opt rename to gcc/config/ia64/ilp32.opt diff --git a/contrib/gcc/config/ia64/itanium1.md b/gcc/config/ia64/itanium1.md similarity index 100% rename from contrib/gcc/config/ia64/itanium1.md rename to gcc/config/ia64/itanium1.md diff --git a/contrib/gcc/config/ia64/itanium2.md b/gcc/config/ia64/itanium2.md similarity index 100% rename from contrib/gcc/config/ia64/itanium2.md rename to gcc/config/ia64/itanium2.md diff --git a/contrib/gcc/config/ia64/lib1funcs.asm b/gcc/config/ia64/lib1funcs.asm similarity index 100% rename from contrib/gcc/config/ia64/lib1funcs.asm rename to gcc/config/ia64/lib1funcs.asm diff --git a/contrib/gcc/config/ia64/libgcc-ia64.ver b/gcc/config/ia64/libgcc-ia64.ver similarity index 100% rename from contrib/gcc/config/ia64/libgcc-ia64.ver rename to gcc/config/ia64/libgcc-ia64.ver diff --git a/contrib/gcc/config/ia64/linux-unwind.h b/gcc/config/ia64/linux-unwind.h similarity index 100% rename from contrib/gcc/config/ia64/linux-unwind.h rename to gcc/config/ia64/linux-unwind.h diff --git a/contrib/gcc/config/ia64/linux.h b/gcc/config/ia64/linux.h similarity index 100% rename from contrib/gcc/config/ia64/linux.h rename to gcc/config/ia64/linux.h diff --git a/contrib/gcc/config/ia64/predicates.md b/gcc/config/ia64/predicates.md similarity index 100% rename from contrib/gcc/config/ia64/predicates.md rename to gcc/config/ia64/predicates.md diff --git a/contrib/gcc/config/ia64/quadlib.c b/gcc/config/ia64/quadlib.c similarity index 100% rename from contrib/gcc/config/ia64/quadlib.c rename to gcc/config/ia64/quadlib.c diff --git a/contrib/gcc/config/ia64/sync.md b/gcc/config/ia64/sync.md similarity index 100% rename from contrib/gcc/config/ia64/sync.md rename to gcc/config/ia64/sync.md diff --git a/contrib/gcc/config/ia64/sysv4.h b/gcc/config/ia64/sysv4.h similarity index 100% rename from contrib/gcc/config/ia64/sysv4.h rename to gcc/config/ia64/sysv4.h diff --git a/contrib/gcc/config/ia64/t-glibc b/gcc/config/ia64/t-glibc similarity index 100% rename from contrib/gcc/config/ia64/t-glibc rename to gcc/config/ia64/t-glibc diff --git a/contrib/gcc/config/ia64/t-glibc-libunwind b/gcc/config/ia64/t-glibc-libunwind similarity index 100% rename from contrib/gcc/config/ia64/t-glibc-libunwind rename to gcc/config/ia64/t-glibc-libunwind diff --git a/contrib/gcc/config/ia64/t-hpux b/gcc/config/ia64/t-hpux similarity index 100% rename from contrib/gcc/config/ia64/t-hpux rename to gcc/config/ia64/t-hpux diff --git a/contrib/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64 similarity index 100% rename from contrib/gcc/config/ia64/t-ia64 rename to gcc/config/ia64/t-ia64 diff --git a/contrib/gcc/config/ia64/unwind-ia64.c b/gcc/config/ia64/unwind-ia64.c similarity index 100% rename from contrib/gcc/config/ia64/unwind-ia64.c rename to gcc/config/ia64/unwind-ia64.c diff --git a/contrib/gcc/config/ia64/unwind-ia64.h b/gcc/config/ia64/unwind-ia64.h similarity index 100% rename from contrib/gcc/config/ia64/unwind-ia64.h rename to gcc/config/ia64/unwind-ia64.h diff --git a/contrib/gcc/config/ia64/vect.md b/gcc/config/ia64/vect.md similarity index 100% rename from contrib/gcc/config/ia64/vect.md rename to gcc/config/ia64/vect.md diff --git a/contrib/gcc/config/interix.h b/gcc/config/interix.h similarity index 100% rename from contrib/gcc/config/interix.h rename to gcc/config/interix.h diff --git a/contrib/gcc/config/interix3.h b/gcc/config/interix3.h similarity index 100% rename from contrib/gcc/config/interix3.h rename to gcc/config/interix3.h diff --git a/contrib/gcc/config/kaos.h b/gcc/config/kaos.h similarity index 100% rename from contrib/gcc/config/kaos.h rename to gcc/config/kaos.h diff --git a/contrib/gcc/config/kfreebsd-gnu.h b/gcc/config/kfreebsd-gnu.h similarity index 100% rename from contrib/gcc/config/kfreebsd-gnu.h rename to gcc/config/kfreebsd-gnu.h diff --git a/contrib/gcc/config/knetbsd-gnu.h b/gcc/config/knetbsd-gnu.h similarity index 100% rename from contrib/gcc/config/knetbsd-gnu.h rename to gcc/config/knetbsd-gnu.h diff --git a/contrib/gcc/config/libgcc-glibc.ver b/gcc/config/libgcc-glibc.ver similarity index 100% rename from contrib/gcc/config/libgcc-glibc.ver rename to gcc/config/libgcc-glibc.ver diff --git a/contrib/gcc/config/libgloss.h b/gcc/config/libgloss.h similarity index 100% rename from contrib/gcc/config/libgloss.h rename to gcc/config/libgloss.h diff --git a/contrib/gcc/config/linux.h b/gcc/config/linux.h similarity index 100% rename from contrib/gcc/config/linux.h rename to gcc/config/linux.h diff --git a/contrib/gcc/config/linux.opt b/gcc/config/linux.opt similarity index 100% rename from contrib/gcc/config/linux.opt rename to gcc/config/linux.opt diff --git a/contrib/gcc/config/lynx.h b/gcc/config/lynx.h similarity index 100% rename from contrib/gcc/config/lynx.h rename to gcc/config/lynx.h diff --git a/contrib/gcc/config/lynx.opt b/gcc/config/lynx.opt similarity index 100% rename from contrib/gcc/config/lynx.opt rename to gcc/config/lynx.opt diff --git a/contrib/gcc/config/memcmp.c b/gcc/config/memcmp.c similarity index 100% rename from contrib/gcc/config/memcmp.c rename to gcc/config/memcmp.c diff --git a/contrib/gcc/config/memcpy.c b/gcc/config/memcpy.c similarity index 100% rename from contrib/gcc/config/memcpy.c rename to gcc/config/memcpy.c diff --git a/contrib/gcc/config/memmove.c b/gcc/config/memmove.c similarity index 100% rename from contrib/gcc/config/memmove.c rename to gcc/config/memmove.c diff --git a/contrib/gcc/config/memset.c b/gcc/config/memset.c similarity index 100% rename from contrib/gcc/config/memset.c rename to gcc/config/memset.c diff --git a/contrib/gcc/config/mips/24k.md b/gcc/config/mips/24k.md similarity index 100% rename from contrib/gcc/config/mips/24k.md rename to gcc/config/mips/24k.md diff --git a/contrib/gcc/config/mips/3000.md b/gcc/config/mips/3000.md similarity index 100% rename from contrib/gcc/config/mips/3000.md rename to gcc/config/mips/3000.md diff --git a/contrib/gcc/config/mips/4000.md b/gcc/config/mips/4000.md similarity index 100% rename from contrib/gcc/config/mips/4000.md rename to gcc/config/mips/4000.md diff --git a/contrib/gcc/config/mips/4100.md b/gcc/config/mips/4100.md similarity index 100% rename from contrib/gcc/config/mips/4100.md rename to gcc/config/mips/4100.md diff --git a/contrib/gcc/config/mips/4130.md b/gcc/config/mips/4130.md similarity index 100% rename from contrib/gcc/config/mips/4130.md rename to gcc/config/mips/4130.md diff --git a/contrib/gcc/config/mips/4300.md b/gcc/config/mips/4300.md similarity index 100% rename from contrib/gcc/config/mips/4300.md rename to gcc/config/mips/4300.md diff --git a/contrib/gcc/config/mips/4600.md b/gcc/config/mips/4600.md similarity index 100% rename from contrib/gcc/config/mips/4600.md rename to gcc/config/mips/4600.md diff --git a/contrib/gcc/config/mips/4k.md b/gcc/config/mips/4k.md similarity index 100% rename from contrib/gcc/config/mips/4k.md rename to gcc/config/mips/4k.md diff --git a/contrib/gcc/config/mips/5000.md b/gcc/config/mips/5000.md similarity index 100% rename from contrib/gcc/config/mips/5000.md rename to gcc/config/mips/5000.md diff --git a/contrib/gcc/config/mips/5400.md b/gcc/config/mips/5400.md similarity index 100% rename from contrib/gcc/config/mips/5400.md rename to gcc/config/mips/5400.md diff --git a/contrib/gcc/config/mips/5500.md b/gcc/config/mips/5500.md similarity index 100% rename from contrib/gcc/config/mips/5500.md rename to gcc/config/mips/5500.md diff --git a/contrib/gcc/config/mips/5k.md b/gcc/config/mips/5k.md similarity index 100% rename from contrib/gcc/config/mips/5k.md rename to gcc/config/mips/5k.md diff --git a/contrib/gcc/config/mips/6000.md b/gcc/config/mips/6000.md similarity index 100% rename from contrib/gcc/config/mips/6000.md rename to gcc/config/mips/6000.md diff --git a/contrib/gcc/config/mips/7000.md b/gcc/config/mips/7000.md similarity index 100% rename from contrib/gcc/config/mips/7000.md rename to gcc/config/mips/7000.md diff --git a/contrib/gcc/config/mips/9000.md b/gcc/config/mips/9000.md similarity index 100% rename from contrib/gcc/config/mips/9000.md rename to gcc/config/mips/9000.md diff --git a/contrib/gcc/config/mips/constraints.md b/gcc/config/mips/constraints.md similarity index 100% rename from contrib/gcc/config/mips/constraints.md rename to gcc/config/mips/constraints.md diff --git a/contrib/gcc/config/mips/crti.asm b/gcc/config/mips/crti.asm similarity index 100% rename from contrib/gcc/config/mips/crti.asm rename to gcc/config/mips/crti.asm diff --git a/contrib/gcc/config/mips/crtn.asm b/gcc/config/mips/crtn.asm similarity index 100% rename from contrib/gcc/config/mips/crtn.asm rename to gcc/config/mips/crtn.asm diff --git a/contrib/gcc/config/mips/dbxmdebug.h b/gcc/config/mips/dbxmdebug.h similarity index 100% rename from contrib/gcc/config/mips/dbxmdebug.h rename to gcc/config/mips/dbxmdebug.h diff --git a/contrib/gcc/config/mips/elf.h b/gcc/config/mips/elf.h similarity index 100% rename from contrib/gcc/config/mips/elf.h rename to gcc/config/mips/elf.h diff --git a/contrib/gcc/config/mips/elforion.h b/gcc/config/mips/elforion.h similarity index 100% rename from contrib/gcc/config/mips/elforion.h rename to gcc/config/mips/elforion.h diff --git a/contrib/gcc/config/mips/generic.md b/gcc/config/mips/generic.md similarity index 100% rename from contrib/gcc/config/mips/generic.md rename to gcc/config/mips/generic.md diff --git a/contrib/gcc/config/mips/iris.h b/gcc/config/mips/iris.h similarity index 100% rename from contrib/gcc/config/mips/iris.h rename to gcc/config/mips/iris.h diff --git a/contrib/gcc/config/mips/iris5.h b/gcc/config/mips/iris5.h similarity index 100% rename from contrib/gcc/config/mips/iris5.h rename to gcc/config/mips/iris5.h diff --git a/contrib/gcc/config/mips/iris6.h b/gcc/config/mips/iris6.h similarity index 100% rename from contrib/gcc/config/mips/iris6.h rename to gcc/config/mips/iris6.h diff --git a/contrib/gcc/config/mips/irix-crti.asm b/gcc/config/mips/irix-crti.asm similarity index 100% rename from contrib/gcc/config/mips/irix-crti.asm rename to gcc/config/mips/irix-crti.asm diff --git a/contrib/gcc/config/mips/irix-crtn.asm b/gcc/config/mips/irix-crtn.asm similarity index 100% rename from contrib/gcc/config/mips/irix-crtn.asm rename to gcc/config/mips/irix-crtn.asm diff --git a/contrib/gcc/config/mips/linux-unwind.h b/gcc/config/mips/linux-unwind.h similarity index 100% rename from contrib/gcc/config/mips/linux-unwind.h rename to gcc/config/mips/linux-unwind.h diff --git a/contrib/gcc/config/mips/linux.h b/gcc/config/mips/linux.h similarity index 100% rename from contrib/gcc/config/mips/linux.h rename to gcc/config/mips/linux.h diff --git a/contrib/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h similarity index 100% rename from contrib/gcc/config/mips/linux64.h rename to gcc/config/mips/linux64.h diff --git a/contrib/gcc/config/mips/mips-dsp.md b/gcc/config/mips/mips-dsp.md similarity index 100% rename from contrib/gcc/config/mips/mips-dsp.md rename to gcc/config/mips/mips-dsp.md diff --git a/contrib/gcc/config/mips/mips-modes.def b/gcc/config/mips/mips-modes.def similarity index 100% rename from contrib/gcc/config/mips/mips-modes.def rename to gcc/config/mips/mips-modes.def diff --git a/contrib/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h similarity index 100% rename from contrib/gcc/config/mips/mips-protos.h rename to gcc/config/mips/mips-protos.h diff --git a/contrib/gcc/config/mips/mips-ps-3d.md b/gcc/config/mips/mips-ps-3d.md similarity index 100% rename from contrib/gcc/config/mips/mips-ps-3d.md rename to gcc/config/mips/mips-ps-3d.md diff --git a/contrib/gcc/config/mips/mips.c b/gcc/config/mips/mips.c similarity index 100% rename from contrib/gcc/config/mips/mips.c rename to gcc/config/mips/mips.c diff --git a/contrib/gcc/config/mips/mips.h b/gcc/config/mips/mips.h similarity index 100% rename from contrib/gcc/config/mips/mips.h rename to gcc/config/mips/mips.h diff --git a/contrib/gcc/config/mips/mips.md b/gcc/config/mips/mips.md similarity index 100% rename from contrib/gcc/config/mips/mips.md rename to gcc/config/mips/mips.md diff --git a/contrib/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt similarity index 100% rename from contrib/gcc/config/mips/mips.opt rename to gcc/config/mips/mips.opt diff --git a/contrib/gcc/config/mips/mips16.S b/gcc/config/mips/mips16.S similarity index 100% rename from contrib/gcc/config/mips/mips16.S rename to gcc/config/mips/mips16.S diff --git a/contrib/gcc/config/mips/netbsd.h b/gcc/config/mips/netbsd.h similarity index 100% rename from contrib/gcc/config/mips/netbsd.h rename to gcc/config/mips/netbsd.h diff --git a/contrib/gcc/config/mips/openbsd.h b/gcc/config/mips/openbsd.h similarity index 100% rename from contrib/gcc/config/mips/openbsd.h rename to gcc/config/mips/openbsd.h diff --git a/contrib/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md similarity index 100% rename from contrib/gcc/config/mips/predicates.md rename to gcc/config/mips/predicates.md diff --git a/contrib/gcc/config/mips/r3900.h b/gcc/config/mips/r3900.h similarity index 100% rename from contrib/gcc/config/mips/r3900.h rename to gcc/config/mips/r3900.h diff --git a/contrib/gcc/config/mips/rtems.h b/gcc/config/mips/rtems.h similarity index 100% rename from contrib/gcc/config/mips/rtems.h rename to gcc/config/mips/rtems.h diff --git a/contrib/gcc/config/mips/sb1.md b/gcc/config/mips/sb1.md similarity index 100% rename from contrib/gcc/config/mips/sb1.md rename to gcc/config/mips/sb1.md diff --git a/contrib/gcc/config/mips/sdb.h b/gcc/config/mips/sdb.h similarity index 100% rename from contrib/gcc/config/mips/sdb.h rename to gcc/config/mips/sdb.h diff --git a/contrib/gcc/config/mips/sr71k.md b/gcc/config/mips/sr71k.md similarity index 100% rename from contrib/gcc/config/mips/sr71k.md rename to gcc/config/mips/sr71k.md diff --git a/contrib/gcc/config/mips/t-elf b/gcc/config/mips/t-elf similarity index 100% rename from contrib/gcc/config/mips/t-elf rename to gcc/config/mips/t-elf diff --git a/contrib/gcc/config/mips/t-gofast b/gcc/config/mips/t-gofast similarity index 100% rename from contrib/gcc/config/mips/t-gofast rename to gcc/config/mips/t-gofast diff --git a/contrib/gcc/config/mips/t-iris b/gcc/config/mips/t-iris similarity index 100% rename from contrib/gcc/config/mips/t-iris rename to gcc/config/mips/t-iris diff --git a/contrib/gcc/config/mips/t-iris6 b/gcc/config/mips/t-iris6 similarity index 100% rename from contrib/gcc/config/mips/t-iris6 rename to gcc/config/mips/t-iris6 diff --git a/contrib/gcc/config/mips/t-isa3264 b/gcc/config/mips/t-isa3264 similarity index 100% rename from contrib/gcc/config/mips/t-isa3264 rename to gcc/config/mips/t-isa3264 diff --git a/contrib/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64 similarity index 100% rename from contrib/gcc/config/mips/t-linux64 rename to gcc/config/mips/t-linux64 diff --git a/contrib/gcc/config/mips/t-mips b/gcc/config/mips/t-mips similarity index 100% rename from contrib/gcc/config/mips/t-mips rename to gcc/config/mips/t-mips diff --git a/contrib/gcc/config/mips/t-r3900 b/gcc/config/mips/t-r3900 similarity index 100% rename from contrib/gcc/config/mips/t-r3900 rename to gcc/config/mips/t-r3900 diff --git a/contrib/gcc/config/mips/t-rtems b/gcc/config/mips/t-rtems similarity index 100% rename from contrib/gcc/config/mips/t-rtems rename to gcc/config/mips/t-rtems diff --git a/contrib/gcc/config/mips/t-sb1 b/gcc/config/mips/t-sb1 similarity index 100% rename from contrib/gcc/config/mips/t-sb1 rename to gcc/config/mips/t-sb1 diff --git a/contrib/gcc/config/mips/t-slibgcc-irix b/gcc/config/mips/t-slibgcc-irix similarity index 100% rename from contrib/gcc/config/mips/t-slibgcc-irix rename to gcc/config/mips/t-slibgcc-irix diff --git a/contrib/gcc/config/mips/t-sr71k b/gcc/config/mips/t-sr71k similarity index 100% rename from contrib/gcc/config/mips/t-sr71k rename to gcc/config/mips/t-sr71k diff --git a/contrib/gcc/config/mips/t-vr b/gcc/config/mips/t-vr similarity index 100% rename from contrib/gcc/config/mips/t-vr rename to gcc/config/mips/t-vr diff --git a/contrib/gcc/config/mips/t-vxworks b/gcc/config/mips/t-vxworks similarity index 100% rename from contrib/gcc/config/mips/t-vxworks rename to gcc/config/mips/t-vxworks diff --git a/contrib/gcc/config/mips/vr.h b/gcc/config/mips/vr.h similarity index 100% rename from contrib/gcc/config/mips/vr.h rename to gcc/config/mips/vr.h diff --git a/contrib/gcc/config/mips/vr4120-div.S b/gcc/config/mips/vr4120-div.S similarity index 100% rename from contrib/gcc/config/mips/vr4120-div.S rename to gcc/config/mips/vr4120-div.S diff --git a/contrib/gcc/config/mips/vxworks.h b/gcc/config/mips/vxworks.h similarity index 100% rename from contrib/gcc/config/mips/vxworks.h rename to gcc/config/mips/vxworks.h diff --git a/contrib/gcc/config/mips/windiss.h b/gcc/config/mips/windiss.h similarity index 100% rename from contrib/gcc/config/mips/windiss.h rename to gcc/config/mips/windiss.h diff --git a/contrib/gcc/config/netbsd-aout.h b/gcc/config/netbsd-aout.h similarity index 100% rename from contrib/gcc/config/netbsd-aout.h rename to gcc/config/netbsd-aout.h diff --git a/contrib/gcc/config/netbsd-elf.h b/gcc/config/netbsd-elf.h similarity index 100% rename from contrib/gcc/config/netbsd-elf.h rename to gcc/config/netbsd-elf.h diff --git a/contrib/gcc/config/netbsd.h b/gcc/config/netbsd.h similarity index 100% rename from contrib/gcc/config/netbsd.h rename to gcc/config/netbsd.h diff --git a/contrib/gcc/config/openbsd-oldgas.h b/gcc/config/openbsd-oldgas.h similarity index 100% rename from contrib/gcc/config/openbsd-oldgas.h rename to gcc/config/openbsd-oldgas.h diff --git a/contrib/gcc/config/openbsd.h b/gcc/config/openbsd.h similarity index 100% rename from contrib/gcc/config/openbsd.h rename to gcc/config/openbsd.h diff --git a/contrib/gcc/config/ptx4.h b/gcc/config/ptx4.h similarity index 100% rename from contrib/gcc/config/ptx4.h rename to gcc/config/ptx4.h diff --git a/contrib/gcc/config/rs6000/40x.md b/gcc/config/rs6000/40x.md similarity index 100% rename from contrib/gcc/config/rs6000/40x.md rename to gcc/config/rs6000/40x.md diff --git a/contrib/gcc/config/rs6000/440.md b/gcc/config/rs6000/440.md similarity index 100% rename from contrib/gcc/config/rs6000/440.md rename to gcc/config/rs6000/440.md diff --git a/contrib/gcc/config/rs6000/603.md b/gcc/config/rs6000/603.md similarity index 100% rename from contrib/gcc/config/rs6000/603.md rename to gcc/config/rs6000/603.md diff --git a/contrib/gcc/config/rs6000/6xx.md b/gcc/config/rs6000/6xx.md similarity index 100% rename from contrib/gcc/config/rs6000/6xx.md rename to gcc/config/rs6000/6xx.md diff --git a/contrib/gcc/config/rs6000/7450.md b/gcc/config/rs6000/7450.md similarity index 100% rename from contrib/gcc/config/rs6000/7450.md rename to gcc/config/rs6000/7450.md diff --git a/contrib/gcc/config/rs6000/7xx.md b/gcc/config/rs6000/7xx.md similarity index 100% rename from contrib/gcc/config/rs6000/7xx.md rename to gcc/config/rs6000/7xx.md diff --git a/contrib/gcc/config/rs6000/8540.md b/gcc/config/rs6000/8540.md similarity index 100% rename from contrib/gcc/config/rs6000/8540.md rename to gcc/config/rs6000/8540.md diff --git a/contrib/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h similarity index 100% rename from contrib/gcc/config/rs6000/aix.h rename to gcc/config/rs6000/aix.h diff --git a/contrib/gcc/config/rs6000/aix.opt b/gcc/config/rs6000/aix.opt similarity index 100% rename from contrib/gcc/config/rs6000/aix.opt rename to gcc/config/rs6000/aix.opt diff --git a/contrib/gcc/config/rs6000/aix41.h b/gcc/config/rs6000/aix41.h similarity index 100% rename from contrib/gcc/config/rs6000/aix41.h rename to gcc/config/rs6000/aix41.h diff --git a/contrib/gcc/config/rs6000/aix41.opt b/gcc/config/rs6000/aix41.opt similarity index 100% rename from contrib/gcc/config/rs6000/aix41.opt rename to gcc/config/rs6000/aix41.opt diff --git a/contrib/gcc/config/rs6000/aix43.h b/gcc/config/rs6000/aix43.h similarity index 100% rename from contrib/gcc/config/rs6000/aix43.h rename to gcc/config/rs6000/aix43.h diff --git a/contrib/gcc/config/rs6000/aix51.h b/gcc/config/rs6000/aix51.h similarity index 100% rename from contrib/gcc/config/rs6000/aix51.h rename to gcc/config/rs6000/aix51.h diff --git a/contrib/gcc/config/rs6000/aix52.h b/gcc/config/rs6000/aix52.h similarity index 100% rename from contrib/gcc/config/rs6000/aix52.h rename to gcc/config/rs6000/aix52.h diff --git a/contrib/gcc/config/rs6000/aix64.opt b/gcc/config/rs6000/aix64.opt similarity index 100% rename from contrib/gcc/config/rs6000/aix64.opt rename to gcc/config/rs6000/aix64.opt diff --git a/contrib/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h similarity index 100% rename from contrib/gcc/config/rs6000/altivec.h rename to gcc/config/rs6000/altivec.h diff --git a/contrib/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md similarity index 100% rename from contrib/gcc/config/rs6000/altivec.md rename to gcc/config/rs6000/altivec.md diff --git a/contrib/gcc/config/rs6000/beos.h b/gcc/config/rs6000/beos.h similarity index 100% rename from contrib/gcc/config/rs6000/beos.h rename to gcc/config/rs6000/beos.h diff --git a/contrib/gcc/config/rs6000/biarch64.h b/gcc/config/rs6000/biarch64.h similarity index 100% rename from contrib/gcc/config/rs6000/biarch64.h rename to gcc/config/rs6000/biarch64.h diff --git a/contrib/gcc/config/rs6000/constraints.md b/gcc/config/rs6000/constraints.md similarity index 100% rename from contrib/gcc/config/rs6000/constraints.md rename to gcc/config/rs6000/constraints.md diff --git a/contrib/gcc/config/rs6000/crtsavres.asm b/gcc/config/rs6000/crtsavres.asm similarity index 100% rename from contrib/gcc/config/rs6000/crtsavres.asm rename to gcc/config/rs6000/crtsavres.asm diff --git a/contrib/gcc/config/rs6000/darwin-asm.h b/gcc/config/rs6000/darwin-asm.h similarity index 100% rename from contrib/gcc/config/rs6000/darwin-asm.h rename to gcc/config/rs6000/darwin-asm.h diff --git a/contrib/gcc/config/rs6000/darwin-fallback.c b/gcc/config/rs6000/darwin-fallback.c similarity index 100% rename from contrib/gcc/config/rs6000/darwin-fallback.c rename to gcc/config/rs6000/darwin-fallback.c diff --git a/contrib/gcc/config/rs6000/darwin-fpsave.asm b/gcc/config/rs6000/darwin-fpsave.asm similarity index 100% rename from contrib/gcc/config/rs6000/darwin-fpsave.asm rename to gcc/config/rs6000/darwin-fpsave.asm diff --git a/contrib/gcc/config/rs6000/darwin-ldouble-format b/gcc/config/rs6000/darwin-ldouble-format similarity index 100% rename from contrib/gcc/config/rs6000/darwin-ldouble-format rename to gcc/config/rs6000/darwin-ldouble-format diff --git a/contrib/gcc/config/rs6000/darwin-ldouble.c b/gcc/config/rs6000/darwin-ldouble.c similarity index 100% rename from contrib/gcc/config/rs6000/darwin-ldouble.c rename to gcc/config/rs6000/darwin-ldouble.c diff --git a/contrib/gcc/config/rs6000/darwin-libgcc.10.4.ver b/gcc/config/rs6000/darwin-libgcc.10.4.ver similarity index 100% rename from contrib/gcc/config/rs6000/darwin-libgcc.10.4.ver rename to gcc/config/rs6000/darwin-libgcc.10.4.ver diff --git a/contrib/gcc/config/rs6000/darwin-libgcc.10.5.ver b/gcc/config/rs6000/darwin-libgcc.10.5.ver similarity index 100% rename from contrib/gcc/config/rs6000/darwin-libgcc.10.5.ver rename to gcc/config/rs6000/darwin-libgcc.10.5.ver diff --git a/contrib/gcc/config/rs6000/darwin-tramp.asm b/gcc/config/rs6000/darwin-tramp.asm similarity index 100% rename from contrib/gcc/config/rs6000/darwin-tramp.asm rename to gcc/config/rs6000/darwin-tramp.asm diff --git a/contrib/gcc/config/rs6000/darwin-unwind.h b/gcc/config/rs6000/darwin-unwind.h similarity index 100% rename from contrib/gcc/config/rs6000/darwin-unwind.h rename to gcc/config/rs6000/darwin-unwind.h diff --git a/contrib/gcc/config/rs6000/darwin-vecsave.asm b/gcc/config/rs6000/darwin-vecsave.asm similarity index 100% rename from contrib/gcc/config/rs6000/darwin-vecsave.asm rename to gcc/config/rs6000/darwin-vecsave.asm diff --git a/contrib/gcc/config/rs6000/darwin-world.asm b/gcc/config/rs6000/darwin-world.asm similarity index 100% rename from contrib/gcc/config/rs6000/darwin-world.asm rename to gcc/config/rs6000/darwin-world.asm diff --git a/contrib/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h similarity index 100% rename from contrib/gcc/config/rs6000/darwin.h rename to gcc/config/rs6000/darwin.h diff --git a/contrib/gcc/config/rs6000/darwin.md b/gcc/config/rs6000/darwin.md similarity index 100% rename from contrib/gcc/config/rs6000/darwin.md rename to gcc/config/rs6000/darwin.md diff --git a/contrib/gcc/config/rs6000/darwin.opt b/gcc/config/rs6000/darwin.opt similarity index 100% rename from contrib/gcc/config/rs6000/darwin.opt rename to gcc/config/rs6000/darwin.opt diff --git a/contrib/gcc/config/rs6000/darwin64.h b/gcc/config/rs6000/darwin64.h similarity index 100% rename from contrib/gcc/config/rs6000/darwin64.h rename to gcc/config/rs6000/darwin64.h diff --git a/contrib/gcc/config/rs6000/darwin7.h b/gcc/config/rs6000/darwin7.h similarity index 100% rename from contrib/gcc/config/rs6000/darwin7.h rename to gcc/config/rs6000/darwin7.h diff --git a/contrib/gcc/config/rs6000/darwin8.h b/gcc/config/rs6000/darwin8.h similarity index 100% rename from contrib/gcc/config/rs6000/darwin8.h rename to gcc/config/rs6000/darwin8.h diff --git a/contrib/gcc/config/rs6000/default64.h b/gcc/config/rs6000/default64.h similarity index 100% rename from contrib/gcc/config/rs6000/default64.h rename to gcc/config/rs6000/default64.h diff --git a/contrib/gcc/config/rs6000/e500-double.h b/gcc/config/rs6000/e500-double.h similarity index 100% rename from contrib/gcc/config/rs6000/e500-double.h rename to gcc/config/rs6000/e500-double.h diff --git a/contrib/gcc/config/rs6000/eabi-ci.asm b/gcc/config/rs6000/eabi-ci.asm similarity index 100% rename from contrib/gcc/config/rs6000/eabi-ci.asm rename to gcc/config/rs6000/eabi-ci.asm diff --git a/contrib/gcc/config/rs6000/eabi-cn.asm b/gcc/config/rs6000/eabi-cn.asm similarity index 100% rename from contrib/gcc/config/rs6000/eabi-cn.asm rename to gcc/config/rs6000/eabi-cn.asm diff --git a/contrib/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm similarity index 100% rename from contrib/gcc/config/rs6000/eabi.asm rename to gcc/config/rs6000/eabi.asm diff --git a/contrib/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h similarity index 100% rename from contrib/gcc/config/rs6000/eabi.h rename to gcc/config/rs6000/eabi.h diff --git a/contrib/gcc/config/rs6000/eabialtivec.h b/gcc/config/rs6000/eabialtivec.h similarity index 100% rename from contrib/gcc/config/rs6000/eabialtivec.h rename to gcc/config/rs6000/eabialtivec.h diff --git a/contrib/gcc/config/rs6000/eabisim.h b/gcc/config/rs6000/eabisim.h similarity index 100% rename from contrib/gcc/config/rs6000/eabisim.h rename to gcc/config/rs6000/eabisim.h diff --git a/contrib/gcc/config/rs6000/eabispe.h b/gcc/config/rs6000/eabispe.h similarity index 100% rename from contrib/gcc/config/rs6000/eabispe.h rename to gcc/config/rs6000/eabispe.h diff --git a/contrib/gcc/config/rs6000/freebsd.h b/gcc/config/rs6000/freebsd.h similarity index 100% rename from contrib/gcc/config/rs6000/freebsd.h rename to gcc/config/rs6000/freebsd.h diff --git a/contrib/gcc/config/rs6000/gnu.h b/gcc/config/rs6000/gnu.h similarity index 100% rename from contrib/gcc/config/rs6000/gnu.h rename to gcc/config/rs6000/gnu.h diff --git a/contrib/gcc/config/rs6000/host-darwin.c b/gcc/config/rs6000/host-darwin.c similarity index 100% rename from contrib/gcc/config/rs6000/host-darwin.c rename to gcc/config/rs6000/host-darwin.c diff --git a/contrib/gcc/config/rs6000/host-ppc64-darwin.c b/gcc/config/rs6000/host-ppc64-darwin.c similarity index 100% rename from contrib/gcc/config/rs6000/host-ppc64-darwin.c rename to gcc/config/rs6000/host-ppc64-darwin.c diff --git a/contrib/gcc/config/rs6000/kaos-ppc.h b/gcc/config/rs6000/kaos-ppc.h similarity index 100% rename from contrib/gcc/config/rs6000/kaos-ppc.h rename to gcc/config/rs6000/kaos-ppc.h diff --git a/contrib/gcc/config/rs6000/libgcc-ppc-glibc.ver b/gcc/config/rs6000/libgcc-ppc-glibc.ver similarity index 100% rename from contrib/gcc/config/rs6000/libgcc-ppc-glibc.ver rename to gcc/config/rs6000/libgcc-ppc-glibc.ver diff --git a/contrib/gcc/config/rs6000/libgcc-ppc64.ver b/gcc/config/rs6000/libgcc-ppc64.ver similarity index 100% rename from contrib/gcc/config/rs6000/libgcc-ppc64.ver rename to gcc/config/rs6000/libgcc-ppc64.ver diff --git a/contrib/gcc/config/rs6000/linux-unwind.h b/gcc/config/rs6000/linux-unwind.h similarity index 100% rename from contrib/gcc/config/rs6000/linux-unwind.h rename to gcc/config/rs6000/linux-unwind.h diff --git a/contrib/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h similarity index 100% rename from contrib/gcc/config/rs6000/linux.h rename to gcc/config/rs6000/linux.h diff --git a/contrib/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h similarity index 100% rename from contrib/gcc/config/rs6000/linux64.h rename to gcc/config/rs6000/linux64.h diff --git a/contrib/gcc/config/rs6000/linux64.opt b/gcc/config/rs6000/linux64.opt similarity index 100% rename from contrib/gcc/config/rs6000/linux64.opt rename to gcc/config/rs6000/linux64.opt diff --git a/contrib/gcc/config/rs6000/linuxaltivec.h b/gcc/config/rs6000/linuxaltivec.h similarity index 100% rename from contrib/gcc/config/rs6000/linuxaltivec.h rename to gcc/config/rs6000/linuxaltivec.h diff --git a/contrib/gcc/config/rs6000/linuxspe.h b/gcc/config/rs6000/linuxspe.h similarity index 100% rename from contrib/gcc/config/rs6000/linuxspe.h rename to gcc/config/rs6000/linuxspe.h diff --git a/contrib/gcc/config/rs6000/lynx.h b/gcc/config/rs6000/lynx.h similarity index 100% rename from contrib/gcc/config/rs6000/lynx.h rename to gcc/config/rs6000/lynx.h diff --git a/contrib/gcc/config/rs6000/milli.exp b/gcc/config/rs6000/milli.exp similarity index 100% rename from contrib/gcc/config/rs6000/milli.exp rename to gcc/config/rs6000/milli.exp diff --git a/contrib/gcc/config/rs6000/mpc.md b/gcc/config/rs6000/mpc.md similarity index 100% rename from contrib/gcc/config/rs6000/mpc.md rename to gcc/config/rs6000/mpc.md diff --git a/contrib/gcc/config/rs6000/netbsd.h b/gcc/config/rs6000/netbsd.h similarity index 100% rename from contrib/gcc/config/rs6000/netbsd.h rename to gcc/config/rs6000/netbsd.h diff --git a/contrib/gcc/config/rs6000/power4.md b/gcc/config/rs6000/power4.md similarity index 100% rename from contrib/gcc/config/rs6000/power4.md rename to gcc/config/rs6000/power4.md diff --git a/contrib/gcc/config/rs6000/power5.md b/gcc/config/rs6000/power5.md similarity index 100% rename from contrib/gcc/config/rs6000/power5.md rename to gcc/config/rs6000/power5.md diff --git a/contrib/gcc/config/rs6000/ppc-asm.h b/gcc/config/rs6000/ppc-asm.h similarity index 100% rename from contrib/gcc/config/rs6000/ppc-asm.h rename to gcc/config/rs6000/ppc-asm.h diff --git a/contrib/gcc/config/rs6000/ppc64-fp.c b/gcc/config/rs6000/ppc64-fp.c similarity index 100% rename from contrib/gcc/config/rs6000/ppc64-fp.c rename to gcc/config/rs6000/ppc64-fp.c diff --git a/contrib/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md similarity index 100% rename from contrib/gcc/config/rs6000/predicates.md rename to gcc/config/rs6000/predicates.md diff --git a/contrib/gcc/config/rs6000/rios1.md b/gcc/config/rs6000/rios1.md similarity index 100% rename from contrib/gcc/config/rs6000/rios1.md rename to gcc/config/rs6000/rios1.md diff --git a/contrib/gcc/config/rs6000/rios2.md b/gcc/config/rs6000/rios2.md similarity index 100% rename from contrib/gcc/config/rs6000/rios2.md rename to gcc/config/rs6000/rios2.md diff --git a/contrib/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c similarity index 100% rename from contrib/gcc/config/rs6000/rs6000-c.c rename to gcc/config/rs6000/rs6000-c.c diff --git a/contrib/gcc/config/rs6000/rs6000-modes.def b/gcc/config/rs6000/rs6000-modes.def similarity index 100% rename from contrib/gcc/config/rs6000/rs6000-modes.def rename to gcc/config/rs6000/rs6000-modes.def diff --git a/contrib/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h similarity index 100% rename from contrib/gcc/config/rs6000/rs6000-protos.h rename to gcc/config/rs6000/rs6000-protos.h diff --git a/contrib/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c similarity index 100% rename from contrib/gcc/config/rs6000/rs6000.c rename to gcc/config/rs6000/rs6000.c diff --git a/contrib/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h similarity index 100% rename from contrib/gcc/config/rs6000/rs6000.h rename to gcc/config/rs6000/rs6000.h diff --git a/contrib/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md similarity index 100% rename from contrib/gcc/config/rs6000/rs6000.md rename to gcc/config/rs6000/rs6000.md diff --git a/contrib/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt similarity index 100% rename from contrib/gcc/config/rs6000/rs6000.opt rename to gcc/config/rs6000/rs6000.opt diff --git a/contrib/gcc/config/rs6000/rs64.md b/gcc/config/rs6000/rs64.md similarity index 100% rename from contrib/gcc/config/rs6000/rs64.md rename to gcc/config/rs6000/rs64.md diff --git a/contrib/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h similarity index 100% rename from contrib/gcc/config/rs6000/rtems.h rename to gcc/config/rs6000/rtems.h diff --git a/contrib/gcc/config/rs6000/secureplt.h b/gcc/config/rs6000/secureplt.h similarity index 100% rename from contrib/gcc/config/rs6000/secureplt.h rename to gcc/config/rs6000/secureplt.h diff --git a/contrib/gcc/config/rs6000/sfp-machine.h b/gcc/config/rs6000/sfp-machine.h similarity index 100% rename from contrib/gcc/config/rs6000/sfp-machine.h rename to gcc/config/rs6000/sfp-machine.h diff --git a/contrib/gcc/config/rs6000/sol-ci.asm b/gcc/config/rs6000/sol-ci.asm similarity index 100% rename from contrib/gcc/config/rs6000/sol-ci.asm rename to gcc/config/rs6000/sol-ci.asm diff --git a/contrib/gcc/config/rs6000/sol-cn.asm b/gcc/config/rs6000/sol-cn.asm similarity index 100% rename from contrib/gcc/config/rs6000/sol-cn.asm rename to gcc/config/rs6000/sol-cn.asm diff --git a/contrib/gcc/config/rs6000/spe.h b/gcc/config/rs6000/spe.h similarity index 100% rename from contrib/gcc/config/rs6000/spe.h rename to gcc/config/rs6000/spe.h diff --git a/contrib/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md similarity index 100% rename from contrib/gcc/config/rs6000/spe.md rename to gcc/config/rs6000/spe.md diff --git a/contrib/gcc/config/rs6000/sync.md b/gcc/config/rs6000/sync.md similarity index 100% rename from contrib/gcc/config/rs6000/sync.md rename to gcc/config/rs6000/sync.md diff --git a/contrib/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h similarity index 100% rename from contrib/gcc/config/rs6000/sysv4.h rename to gcc/config/rs6000/sysv4.h diff --git a/contrib/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt similarity index 100% rename from contrib/gcc/config/rs6000/sysv4.opt rename to gcc/config/rs6000/sysv4.opt diff --git a/contrib/gcc/config/rs6000/sysv4le.h b/gcc/config/rs6000/sysv4le.h similarity index 100% rename from contrib/gcc/config/rs6000/sysv4le.h rename to gcc/config/rs6000/sysv4le.h diff --git a/contrib/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43 similarity index 100% rename from contrib/gcc/config/rs6000/t-aix43 rename to gcc/config/rs6000/t-aix43 diff --git a/contrib/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52 similarity index 100% rename from contrib/gcc/config/rs6000/t-aix52 rename to gcc/config/rs6000/t-aix52 diff --git a/contrib/gcc/config/rs6000/t-beos b/gcc/config/rs6000/t-beos similarity index 100% rename from contrib/gcc/config/rs6000/t-beos rename to gcc/config/rs6000/t-beos diff --git a/contrib/gcc/config/rs6000/t-darwin b/gcc/config/rs6000/t-darwin similarity index 100% rename from contrib/gcc/config/rs6000/t-darwin rename to gcc/config/rs6000/t-darwin diff --git a/contrib/gcc/config/rs6000/t-darwin8 b/gcc/config/rs6000/t-darwin8 similarity index 100% rename from contrib/gcc/config/rs6000/t-darwin8 rename to gcc/config/rs6000/t-darwin8 diff --git a/contrib/gcc/config/rs6000/t-fprules b/gcc/config/rs6000/t-fprules similarity index 100% rename from contrib/gcc/config/rs6000/t-fprules rename to gcc/config/rs6000/t-fprules diff --git a/contrib/gcc/config/rs6000/t-fprules-fpbit b/gcc/config/rs6000/t-fprules-fpbit similarity index 100% rename from contrib/gcc/config/rs6000/t-fprules-fpbit rename to gcc/config/rs6000/t-fprules-fpbit diff --git a/contrib/gcc/config/rs6000/t-fprules-softfp b/gcc/config/rs6000/t-fprules-softfp similarity index 100% rename from contrib/gcc/config/rs6000/t-fprules-softfp rename to gcc/config/rs6000/t-fprules-softfp diff --git a/contrib/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64 similarity index 100% rename from contrib/gcc/config/rs6000/t-linux64 rename to gcc/config/rs6000/t-linux64 diff --git a/contrib/gcc/config/rs6000/t-lynx b/gcc/config/rs6000/t-lynx similarity index 100% rename from contrib/gcc/config/rs6000/t-lynx rename to gcc/config/rs6000/t-lynx diff --git a/contrib/gcc/config/rs6000/t-netbsd b/gcc/config/rs6000/t-netbsd similarity index 100% rename from contrib/gcc/config/rs6000/t-netbsd rename to gcc/config/rs6000/t-netbsd diff --git a/contrib/gcc/config/rs6000/t-newas b/gcc/config/rs6000/t-newas similarity index 100% rename from contrib/gcc/config/rs6000/t-newas rename to gcc/config/rs6000/t-newas diff --git a/contrib/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm similarity index 100% rename from contrib/gcc/config/rs6000/t-ppccomm rename to gcc/config/rs6000/t-ppccomm diff --git a/contrib/gcc/config/rs6000/t-ppcendian b/gcc/config/rs6000/t-ppcendian similarity index 100% rename from contrib/gcc/config/rs6000/t-ppcendian rename to gcc/config/rs6000/t-ppcendian diff --git a/contrib/gcc/config/rs6000/t-ppcgas b/gcc/config/rs6000/t-ppcgas similarity index 100% rename from contrib/gcc/config/rs6000/t-ppcgas rename to gcc/config/rs6000/t-ppcgas diff --git a/contrib/gcc/config/rs6000/t-ppcos b/gcc/config/rs6000/t-ppcos similarity index 100% rename from contrib/gcc/config/rs6000/t-ppcos rename to gcc/config/rs6000/t-ppcos diff --git a/contrib/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000 similarity index 100% rename from contrib/gcc/config/rs6000/t-rs6000 rename to gcc/config/rs6000/t-rs6000 diff --git a/contrib/gcc/config/rs6000/t-rtems b/gcc/config/rs6000/t-rtems similarity index 100% rename from contrib/gcc/config/rs6000/t-rtems rename to gcc/config/rs6000/t-rtems diff --git a/contrib/gcc/config/rs6000/t-spe b/gcc/config/rs6000/t-spe similarity index 100% rename from contrib/gcc/config/rs6000/t-spe rename to gcc/config/rs6000/t-spe diff --git a/contrib/gcc/config/rs6000/t-vxworks b/gcc/config/rs6000/t-vxworks similarity index 100% rename from contrib/gcc/config/rs6000/t-vxworks rename to gcc/config/rs6000/t-vxworks diff --git a/contrib/gcc/config/rs6000/t-vxworksae b/gcc/config/rs6000/t-vxworksae similarity index 100% rename from contrib/gcc/config/rs6000/t-vxworksae rename to gcc/config/rs6000/t-vxworksae diff --git a/contrib/gcc/config/rs6000/tramp.asm b/gcc/config/rs6000/tramp.asm similarity index 100% rename from contrib/gcc/config/rs6000/tramp.asm rename to gcc/config/rs6000/tramp.asm diff --git a/contrib/gcc/config/rs6000/vxworks.h b/gcc/config/rs6000/vxworks.h similarity index 100% rename from contrib/gcc/config/rs6000/vxworks.h rename to gcc/config/rs6000/vxworks.h diff --git a/contrib/gcc/config/rs6000/vxworksae.h b/gcc/config/rs6000/vxworksae.h similarity index 100% rename from contrib/gcc/config/rs6000/vxworksae.h rename to gcc/config/rs6000/vxworksae.h diff --git a/contrib/gcc/config/rs6000/windiss.h b/gcc/config/rs6000/windiss.h similarity index 100% rename from contrib/gcc/config/rs6000/windiss.h rename to gcc/config/rs6000/windiss.h diff --git a/contrib/gcc/config/rs6000/x-darwin b/gcc/config/rs6000/x-darwin similarity index 100% rename from contrib/gcc/config/rs6000/x-darwin rename to gcc/config/rs6000/x-darwin diff --git a/contrib/gcc/config/rs6000/x-darwin64 b/gcc/config/rs6000/x-darwin64 similarity index 100% rename from contrib/gcc/config/rs6000/x-darwin64 rename to gcc/config/rs6000/x-darwin64 diff --git a/contrib/gcc/config/rs6000/x-linux64 b/gcc/config/rs6000/x-linux64 similarity index 100% rename from contrib/gcc/config/rs6000/x-linux64 rename to gcc/config/rs6000/x-linux64 diff --git a/contrib/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h similarity index 100% rename from contrib/gcc/config/rs6000/xcoff.h rename to gcc/config/rs6000/xcoff.h diff --git a/contrib/gcc/config/rtems.h b/gcc/config/rtems.h similarity index 100% rename from contrib/gcc/config/rtems.h rename to gcc/config/rtems.h diff --git a/contrib/gcc/config/s390/2064.md b/gcc/config/s390/2064.md similarity index 100% rename from contrib/gcc/config/s390/2064.md rename to gcc/config/s390/2064.md diff --git a/contrib/gcc/config/s390/2084.md b/gcc/config/s390/2084.md similarity index 100% rename from contrib/gcc/config/s390/2084.md rename to gcc/config/s390/2084.md diff --git a/contrib/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md similarity index 100% rename from contrib/gcc/config/s390/constraints.md rename to gcc/config/s390/constraints.md diff --git a/contrib/gcc/config/s390/fixdfdi.h b/gcc/config/s390/fixdfdi.h similarity index 100% rename from contrib/gcc/config/s390/fixdfdi.h rename to gcc/config/s390/fixdfdi.h diff --git a/contrib/gcc/config/s390/libgcc-glibc.ver b/gcc/config/s390/libgcc-glibc.ver similarity index 100% rename from contrib/gcc/config/s390/libgcc-glibc.ver rename to gcc/config/s390/libgcc-glibc.ver diff --git a/contrib/gcc/config/s390/linux-unwind.h b/gcc/config/s390/linux-unwind.h similarity index 100% rename from contrib/gcc/config/s390/linux-unwind.h rename to gcc/config/s390/linux-unwind.h diff --git a/contrib/gcc/config/s390/linux.h b/gcc/config/s390/linux.h similarity index 100% rename from contrib/gcc/config/s390/linux.h rename to gcc/config/s390/linux.h diff --git a/contrib/gcc/config/s390/predicates.md b/gcc/config/s390/predicates.md similarity index 100% rename from contrib/gcc/config/s390/predicates.md rename to gcc/config/s390/predicates.md diff --git a/contrib/gcc/config/s390/s390-modes.def b/gcc/config/s390/s390-modes.def similarity index 100% rename from contrib/gcc/config/s390/s390-modes.def rename to gcc/config/s390/s390-modes.def diff --git a/contrib/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h similarity index 100% rename from contrib/gcc/config/s390/s390-protos.h rename to gcc/config/s390/s390-protos.h diff --git a/contrib/gcc/config/s390/s390.c b/gcc/config/s390/s390.c similarity index 100% rename from contrib/gcc/config/s390/s390.c rename to gcc/config/s390/s390.c diff --git a/contrib/gcc/config/s390/s390.h b/gcc/config/s390/s390.h similarity index 100% rename from contrib/gcc/config/s390/s390.h rename to gcc/config/s390/s390.h diff --git a/contrib/gcc/config/s390/s390.md b/gcc/config/s390/s390.md similarity index 100% rename from contrib/gcc/config/s390/s390.md rename to gcc/config/s390/s390.md diff --git a/contrib/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt similarity index 100% rename from contrib/gcc/config/s390/s390.opt rename to gcc/config/s390/s390.opt diff --git a/contrib/gcc/config/s390/s390x.h b/gcc/config/s390/s390x.h similarity index 100% rename from contrib/gcc/config/s390/s390x.h rename to gcc/config/s390/s390x.h diff --git a/contrib/gcc/config/s390/t-crtstuff b/gcc/config/s390/t-crtstuff similarity index 100% rename from contrib/gcc/config/s390/t-crtstuff rename to gcc/config/s390/t-crtstuff diff --git a/contrib/gcc/config/s390/t-linux b/gcc/config/s390/t-linux similarity index 100% rename from contrib/gcc/config/s390/t-linux rename to gcc/config/s390/t-linux diff --git a/contrib/gcc/config/s390/t-linux64 b/gcc/config/s390/t-linux64 similarity index 100% rename from contrib/gcc/config/s390/t-linux64 rename to gcc/config/s390/t-linux64 diff --git a/contrib/gcc/config/s390/t-tpf b/gcc/config/s390/t-tpf similarity index 100% rename from contrib/gcc/config/s390/t-tpf rename to gcc/config/s390/t-tpf diff --git a/contrib/gcc/config/s390/tpf-unwind.h b/gcc/config/s390/tpf-unwind.h similarity index 100% rename from contrib/gcc/config/s390/tpf-unwind.h rename to gcc/config/s390/tpf-unwind.h diff --git a/contrib/gcc/config/s390/tpf.h b/gcc/config/s390/tpf.h similarity index 100% rename from contrib/gcc/config/s390/tpf.h rename to gcc/config/s390/tpf.h diff --git a/contrib/gcc/config/s390/tpf.md b/gcc/config/s390/tpf.md similarity index 100% rename from contrib/gcc/config/s390/tpf.md rename to gcc/config/s390/tpf.md diff --git a/contrib/gcc/config/s390/tpf.opt b/gcc/config/s390/tpf.opt similarity index 100% rename from contrib/gcc/config/s390/tpf.opt rename to gcc/config/s390/tpf.opt diff --git a/contrib/gcc/config/soft-fp/README b/gcc/config/soft-fp/README similarity index 100% rename from contrib/gcc/config/soft-fp/README rename to gcc/config/soft-fp/README diff --git a/contrib/gcc/config/soft-fp/adddf3.c b/gcc/config/soft-fp/adddf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/adddf3.c rename to gcc/config/soft-fp/adddf3.c diff --git a/contrib/gcc/config/soft-fp/addsf3.c b/gcc/config/soft-fp/addsf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/addsf3.c rename to gcc/config/soft-fp/addsf3.c diff --git a/contrib/gcc/config/soft-fp/addtf3.c b/gcc/config/soft-fp/addtf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/addtf3.c rename to gcc/config/soft-fp/addtf3.c diff --git a/contrib/gcc/config/soft-fp/divdf3.c b/gcc/config/soft-fp/divdf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/divdf3.c rename to gcc/config/soft-fp/divdf3.c diff --git a/contrib/gcc/config/soft-fp/divsf3.c b/gcc/config/soft-fp/divsf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/divsf3.c rename to gcc/config/soft-fp/divsf3.c diff --git a/contrib/gcc/config/soft-fp/divtf3.c b/gcc/config/soft-fp/divtf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/divtf3.c rename to gcc/config/soft-fp/divtf3.c diff --git a/contrib/gcc/config/soft-fp/double.h b/gcc/config/soft-fp/double.h similarity index 100% rename from contrib/gcc/config/soft-fp/double.h rename to gcc/config/soft-fp/double.h diff --git a/contrib/gcc/config/soft-fp/eqdf2.c b/gcc/config/soft-fp/eqdf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/eqdf2.c rename to gcc/config/soft-fp/eqdf2.c diff --git a/contrib/gcc/config/soft-fp/eqsf2.c b/gcc/config/soft-fp/eqsf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/eqsf2.c rename to gcc/config/soft-fp/eqsf2.c diff --git a/contrib/gcc/config/soft-fp/eqtf2.c b/gcc/config/soft-fp/eqtf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/eqtf2.c rename to gcc/config/soft-fp/eqtf2.c diff --git a/contrib/gcc/config/soft-fp/extenddftf2.c b/gcc/config/soft-fp/extenddftf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/extenddftf2.c rename to gcc/config/soft-fp/extenddftf2.c diff --git a/contrib/gcc/config/soft-fp/extended.h b/gcc/config/soft-fp/extended.h similarity index 100% rename from contrib/gcc/config/soft-fp/extended.h rename to gcc/config/soft-fp/extended.h diff --git a/contrib/gcc/config/soft-fp/extendsfdf2.c b/gcc/config/soft-fp/extendsfdf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/extendsfdf2.c rename to gcc/config/soft-fp/extendsfdf2.c diff --git a/contrib/gcc/config/soft-fp/extendsftf2.c b/gcc/config/soft-fp/extendsftf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/extendsftf2.c rename to gcc/config/soft-fp/extendsftf2.c diff --git a/contrib/gcc/config/soft-fp/fixdfdi.c b/gcc/config/soft-fp/fixdfdi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixdfdi.c rename to gcc/config/soft-fp/fixdfdi.c diff --git a/contrib/gcc/config/soft-fp/fixdfsi.c b/gcc/config/soft-fp/fixdfsi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixdfsi.c rename to gcc/config/soft-fp/fixdfsi.c diff --git a/contrib/gcc/config/soft-fp/fixsfdi.c b/gcc/config/soft-fp/fixsfdi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixsfdi.c rename to gcc/config/soft-fp/fixsfdi.c diff --git a/contrib/gcc/config/soft-fp/fixsfsi.c b/gcc/config/soft-fp/fixsfsi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixsfsi.c rename to gcc/config/soft-fp/fixsfsi.c diff --git a/contrib/gcc/config/soft-fp/fixtfdi.c b/gcc/config/soft-fp/fixtfdi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixtfdi.c rename to gcc/config/soft-fp/fixtfdi.c diff --git a/contrib/gcc/config/soft-fp/fixtfsi.c b/gcc/config/soft-fp/fixtfsi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixtfsi.c rename to gcc/config/soft-fp/fixtfsi.c diff --git a/contrib/gcc/config/soft-fp/fixunsdfdi.c b/gcc/config/soft-fp/fixunsdfdi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixunsdfdi.c rename to gcc/config/soft-fp/fixunsdfdi.c diff --git a/contrib/gcc/config/soft-fp/fixunsdfsi.c b/gcc/config/soft-fp/fixunsdfsi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixunsdfsi.c rename to gcc/config/soft-fp/fixunsdfsi.c diff --git a/contrib/gcc/config/soft-fp/fixunssfdi.c b/gcc/config/soft-fp/fixunssfdi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixunssfdi.c rename to gcc/config/soft-fp/fixunssfdi.c diff --git a/contrib/gcc/config/soft-fp/fixunssfsi.c b/gcc/config/soft-fp/fixunssfsi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixunssfsi.c rename to gcc/config/soft-fp/fixunssfsi.c diff --git a/contrib/gcc/config/soft-fp/fixunstfdi.c b/gcc/config/soft-fp/fixunstfdi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixunstfdi.c rename to gcc/config/soft-fp/fixunstfdi.c diff --git a/contrib/gcc/config/soft-fp/fixunstfsi.c b/gcc/config/soft-fp/fixunstfsi.c similarity index 100% rename from contrib/gcc/config/soft-fp/fixunstfsi.c rename to gcc/config/soft-fp/fixunstfsi.c diff --git a/contrib/gcc/config/soft-fp/floatdidf.c b/gcc/config/soft-fp/floatdidf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatdidf.c rename to gcc/config/soft-fp/floatdidf.c diff --git a/contrib/gcc/config/soft-fp/floatdisf.c b/gcc/config/soft-fp/floatdisf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatdisf.c rename to gcc/config/soft-fp/floatdisf.c diff --git a/contrib/gcc/config/soft-fp/floatditf.c b/gcc/config/soft-fp/floatditf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatditf.c rename to gcc/config/soft-fp/floatditf.c diff --git a/contrib/gcc/config/soft-fp/floatsidf.c b/gcc/config/soft-fp/floatsidf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatsidf.c rename to gcc/config/soft-fp/floatsidf.c diff --git a/contrib/gcc/config/soft-fp/floatsisf.c b/gcc/config/soft-fp/floatsisf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatsisf.c rename to gcc/config/soft-fp/floatsisf.c diff --git a/contrib/gcc/config/soft-fp/floatsitf.c b/gcc/config/soft-fp/floatsitf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatsitf.c rename to gcc/config/soft-fp/floatsitf.c diff --git a/contrib/gcc/config/soft-fp/floatundidf.c b/gcc/config/soft-fp/floatundidf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatundidf.c rename to gcc/config/soft-fp/floatundidf.c diff --git a/contrib/gcc/config/soft-fp/floatundisf.c b/gcc/config/soft-fp/floatundisf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatundisf.c rename to gcc/config/soft-fp/floatundisf.c diff --git a/contrib/gcc/config/soft-fp/floatunditf.c b/gcc/config/soft-fp/floatunditf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatunditf.c rename to gcc/config/soft-fp/floatunditf.c diff --git a/contrib/gcc/config/soft-fp/floatunsidf.c b/gcc/config/soft-fp/floatunsidf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatunsidf.c rename to gcc/config/soft-fp/floatunsidf.c diff --git a/contrib/gcc/config/soft-fp/floatunsisf.c b/gcc/config/soft-fp/floatunsisf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatunsisf.c rename to gcc/config/soft-fp/floatunsisf.c diff --git a/contrib/gcc/config/soft-fp/floatunsitf.c b/gcc/config/soft-fp/floatunsitf.c similarity index 100% rename from contrib/gcc/config/soft-fp/floatunsitf.c rename to gcc/config/soft-fp/floatunsitf.c diff --git a/contrib/gcc/config/soft-fp/gedf2.c b/gcc/config/soft-fp/gedf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/gedf2.c rename to gcc/config/soft-fp/gedf2.c diff --git a/contrib/gcc/config/soft-fp/gesf2.c b/gcc/config/soft-fp/gesf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/gesf2.c rename to gcc/config/soft-fp/gesf2.c diff --git a/contrib/gcc/config/soft-fp/getf2.c b/gcc/config/soft-fp/getf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/getf2.c rename to gcc/config/soft-fp/getf2.c diff --git a/contrib/gcc/config/soft-fp/ledf2.c b/gcc/config/soft-fp/ledf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/ledf2.c rename to gcc/config/soft-fp/ledf2.c diff --git a/contrib/gcc/config/soft-fp/lesf2.c b/gcc/config/soft-fp/lesf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/lesf2.c rename to gcc/config/soft-fp/lesf2.c diff --git a/contrib/gcc/config/soft-fp/letf2.c b/gcc/config/soft-fp/letf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/letf2.c rename to gcc/config/soft-fp/letf2.c diff --git a/contrib/gcc/config/soft-fp/muldf3.c b/gcc/config/soft-fp/muldf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/muldf3.c rename to gcc/config/soft-fp/muldf3.c diff --git a/contrib/gcc/config/soft-fp/mulsf3.c b/gcc/config/soft-fp/mulsf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/mulsf3.c rename to gcc/config/soft-fp/mulsf3.c diff --git a/contrib/gcc/config/soft-fp/multf3.c b/gcc/config/soft-fp/multf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/multf3.c rename to gcc/config/soft-fp/multf3.c diff --git a/contrib/gcc/config/soft-fp/negdf2.c b/gcc/config/soft-fp/negdf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/negdf2.c rename to gcc/config/soft-fp/negdf2.c diff --git a/contrib/gcc/config/soft-fp/negsf2.c b/gcc/config/soft-fp/negsf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/negsf2.c rename to gcc/config/soft-fp/negsf2.c diff --git a/contrib/gcc/config/soft-fp/negtf2.c b/gcc/config/soft-fp/negtf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/negtf2.c rename to gcc/config/soft-fp/negtf2.c diff --git a/contrib/gcc/config/soft-fp/op-1.h b/gcc/config/soft-fp/op-1.h similarity index 100% rename from contrib/gcc/config/soft-fp/op-1.h rename to gcc/config/soft-fp/op-1.h diff --git a/contrib/gcc/config/soft-fp/op-2.h b/gcc/config/soft-fp/op-2.h similarity index 100% rename from contrib/gcc/config/soft-fp/op-2.h rename to gcc/config/soft-fp/op-2.h diff --git a/contrib/gcc/config/soft-fp/op-4.h b/gcc/config/soft-fp/op-4.h similarity index 100% rename from contrib/gcc/config/soft-fp/op-4.h rename to gcc/config/soft-fp/op-4.h diff --git a/contrib/gcc/config/soft-fp/op-8.h b/gcc/config/soft-fp/op-8.h similarity index 100% rename from contrib/gcc/config/soft-fp/op-8.h rename to gcc/config/soft-fp/op-8.h diff --git a/contrib/gcc/config/soft-fp/op-common.h b/gcc/config/soft-fp/op-common.h similarity index 100% rename from contrib/gcc/config/soft-fp/op-common.h rename to gcc/config/soft-fp/op-common.h diff --git a/contrib/gcc/config/soft-fp/quad.h b/gcc/config/soft-fp/quad.h similarity index 100% rename from contrib/gcc/config/soft-fp/quad.h rename to gcc/config/soft-fp/quad.h diff --git a/contrib/gcc/config/soft-fp/single.h b/gcc/config/soft-fp/single.h similarity index 100% rename from contrib/gcc/config/soft-fp/single.h rename to gcc/config/soft-fp/single.h diff --git a/contrib/gcc/config/soft-fp/soft-fp.h b/gcc/config/soft-fp/soft-fp.h similarity index 100% rename from contrib/gcc/config/soft-fp/soft-fp.h rename to gcc/config/soft-fp/soft-fp.h diff --git a/contrib/gcc/config/soft-fp/subdf3.c b/gcc/config/soft-fp/subdf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/subdf3.c rename to gcc/config/soft-fp/subdf3.c diff --git a/contrib/gcc/config/soft-fp/subsf3.c b/gcc/config/soft-fp/subsf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/subsf3.c rename to gcc/config/soft-fp/subsf3.c diff --git a/contrib/gcc/config/soft-fp/subtf3.c b/gcc/config/soft-fp/subtf3.c similarity index 100% rename from contrib/gcc/config/soft-fp/subtf3.c rename to gcc/config/soft-fp/subtf3.c diff --git a/contrib/gcc/config/soft-fp/t-softfp b/gcc/config/soft-fp/t-softfp similarity index 100% rename from contrib/gcc/config/soft-fp/t-softfp rename to gcc/config/soft-fp/t-softfp diff --git a/contrib/gcc/config/soft-fp/truncdfsf2.c b/gcc/config/soft-fp/truncdfsf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/truncdfsf2.c rename to gcc/config/soft-fp/truncdfsf2.c diff --git a/contrib/gcc/config/soft-fp/trunctfdf2.c b/gcc/config/soft-fp/trunctfdf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/trunctfdf2.c rename to gcc/config/soft-fp/trunctfdf2.c diff --git a/contrib/gcc/config/soft-fp/trunctfsf2.c b/gcc/config/soft-fp/trunctfsf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/trunctfsf2.c rename to gcc/config/soft-fp/trunctfsf2.c diff --git a/contrib/gcc/config/soft-fp/unorddf2.c b/gcc/config/soft-fp/unorddf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/unorddf2.c rename to gcc/config/soft-fp/unorddf2.c diff --git a/contrib/gcc/config/soft-fp/unordsf2.c b/gcc/config/soft-fp/unordsf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/unordsf2.c rename to gcc/config/soft-fp/unordsf2.c diff --git a/contrib/gcc/config/soft-fp/unordtf2.c b/gcc/config/soft-fp/unordtf2.c similarity index 100% rename from contrib/gcc/config/soft-fp/unordtf2.c rename to gcc/config/soft-fp/unordtf2.c diff --git a/contrib/gcc/config/sol2-10.h b/gcc/config/sol2-10.h similarity index 100% rename from contrib/gcc/config/sol2-10.h rename to gcc/config/sol2-10.h diff --git a/contrib/gcc/config/sol2-6.h b/gcc/config/sol2-6.h similarity index 100% rename from contrib/gcc/config/sol2-6.h rename to gcc/config/sol2-6.h diff --git a/contrib/gcc/config/sol2-c.c b/gcc/config/sol2-c.c similarity index 100% rename from contrib/gcc/config/sol2-c.c rename to gcc/config/sol2-c.c diff --git a/contrib/gcc/config/sol2-protos.h b/gcc/config/sol2-protos.h similarity index 100% rename from contrib/gcc/config/sol2-protos.h rename to gcc/config/sol2-protos.h diff --git a/contrib/gcc/config/sol2.c b/gcc/config/sol2.c similarity index 100% rename from contrib/gcc/config/sol2.c rename to gcc/config/sol2.c diff --git a/contrib/gcc/config/sol2.h b/gcc/config/sol2.h similarity index 100% rename from contrib/gcc/config/sol2.h rename to gcc/config/sol2.h diff --git a/contrib/gcc/config/sparc/biarch64.h b/gcc/config/sparc/biarch64.h similarity index 100% rename from contrib/gcc/config/sparc/biarch64.h rename to gcc/config/sparc/biarch64.h diff --git a/contrib/gcc/config/sparc/crtfastmath.c b/gcc/config/sparc/crtfastmath.c similarity index 100% rename from contrib/gcc/config/sparc/crtfastmath.c rename to gcc/config/sparc/crtfastmath.c diff --git a/contrib/gcc/config/sparc/cypress.md b/gcc/config/sparc/cypress.md similarity index 100% rename from contrib/gcc/config/sparc/cypress.md rename to gcc/config/sparc/cypress.md diff --git a/contrib/gcc/config/sparc/freebsd.h b/gcc/config/sparc/freebsd.h similarity index 100% rename from contrib/gcc/config/sparc/freebsd.h rename to gcc/config/sparc/freebsd.h diff --git a/contrib/gcc/config/sparc/gmon-sol2.c b/gcc/config/sparc/gmon-sol2.c similarity index 100% rename from contrib/gcc/config/sparc/gmon-sol2.c rename to gcc/config/sparc/gmon-sol2.c diff --git a/contrib/gcc/config/sparc/hypersparc.md b/gcc/config/sparc/hypersparc.md similarity index 100% rename from contrib/gcc/config/sparc/hypersparc.md rename to gcc/config/sparc/hypersparc.md diff --git a/contrib/gcc/config/sparc/lb1spc.asm b/gcc/config/sparc/lb1spc.asm similarity index 100% rename from contrib/gcc/config/sparc/lb1spc.asm rename to gcc/config/sparc/lb1spc.asm diff --git a/contrib/gcc/config/sparc/lb1spl.asm b/gcc/config/sparc/lb1spl.asm similarity index 100% rename from contrib/gcc/config/sparc/lb1spl.asm rename to gcc/config/sparc/lb1spl.asm diff --git a/contrib/gcc/config/sparc/libgcc-sparc-glibc.ver b/gcc/config/sparc/libgcc-sparc-glibc.ver similarity index 100% rename from contrib/gcc/config/sparc/libgcc-sparc-glibc.ver rename to gcc/config/sparc/libgcc-sparc-glibc.ver diff --git a/contrib/gcc/config/sparc/linux-unwind.h b/gcc/config/sparc/linux-unwind.h similarity index 100% rename from contrib/gcc/config/sparc/linux-unwind.h rename to gcc/config/sparc/linux-unwind.h diff --git a/contrib/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h similarity index 100% rename from contrib/gcc/config/sparc/linux.h rename to gcc/config/sparc/linux.h diff --git a/contrib/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h similarity index 100% rename from contrib/gcc/config/sparc/linux64.h rename to gcc/config/sparc/linux64.h diff --git a/contrib/gcc/config/sparc/little-endian.opt b/gcc/config/sparc/little-endian.opt similarity index 100% rename from contrib/gcc/config/sparc/little-endian.opt rename to gcc/config/sparc/little-endian.opt diff --git a/contrib/gcc/config/sparc/long-double-switch.opt b/gcc/config/sparc/long-double-switch.opt similarity index 100% rename from contrib/gcc/config/sparc/long-double-switch.opt rename to gcc/config/sparc/long-double-switch.opt diff --git a/contrib/gcc/config/sparc/netbsd-elf.h b/gcc/config/sparc/netbsd-elf.h similarity index 100% rename from contrib/gcc/config/sparc/netbsd-elf.h rename to gcc/config/sparc/netbsd-elf.h diff --git a/contrib/gcc/config/sparc/niagara.md b/gcc/config/sparc/niagara.md similarity index 100% rename from contrib/gcc/config/sparc/niagara.md rename to gcc/config/sparc/niagara.md diff --git a/contrib/gcc/config/sparc/openbsd1-64.h b/gcc/config/sparc/openbsd1-64.h similarity index 100% rename from contrib/gcc/config/sparc/openbsd1-64.h rename to gcc/config/sparc/openbsd1-64.h diff --git a/contrib/gcc/config/sparc/openbsd64.h b/gcc/config/sparc/openbsd64.h similarity index 100% rename from contrib/gcc/config/sparc/openbsd64.h rename to gcc/config/sparc/openbsd64.h diff --git a/contrib/gcc/config/sparc/predicates.md b/gcc/config/sparc/predicates.md similarity index 100% rename from contrib/gcc/config/sparc/predicates.md rename to gcc/config/sparc/predicates.md diff --git a/contrib/gcc/config/sparc/rtemself.h b/gcc/config/sparc/rtemself.h similarity index 100% rename from contrib/gcc/config/sparc/rtemself.h rename to gcc/config/sparc/rtemself.h diff --git a/contrib/gcc/config/sparc/sol2-64.h b/gcc/config/sparc/sol2-64.h similarity index 100% rename from contrib/gcc/config/sparc/sol2-64.h rename to gcc/config/sparc/sol2-64.h diff --git a/contrib/gcc/config/sparc/sol2-bi.h b/gcc/config/sparc/sol2-bi.h similarity index 100% rename from contrib/gcc/config/sparc/sol2-bi.h rename to gcc/config/sparc/sol2-bi.h diff --git a/contrib/gcc/config/sparc/sol2-c1.asm b/gcc/config/sparc/sol2-c1.asm similarity index 100% rename from contrib/gcc/config/sparc/sol2-c1.asm rename to gcc/config/sparc/sol2-c1.asm diff --git a/contrib/gcc/config/sparc/sol2-ci.asm b/gcc/config/sparc/sol2-ci.asm similarity index 100% rename from contrib/gcc/config/sparc/sol2-ci.asm rename to gcc/config/sparc/sol2-ci.asm diff --git a/contrib/gcc/config/sparc/sol2-cn.asm b/gcc/config/sparc/sol2-cn.asm similarity index 100% rename from contrib/gcc/config/sparc/sol2-cn.asm rename to gcc/config/sparc/sol2-cn.asm diff --git a/contrib/gcc/config/sparc/sol2-gas-bi.h b/gcc/config/sparc/sol2-gas-bi.h similarity index 100% rename from contrib/gcc/config/sparc/sol2-gas-bi.h rename to gcc/config/sparc/sol2-gas-bi.h diff --git a/contrib/gcc/config/sparc/sol2-gas.h b/gcc/config/sparc/sol2-gas.h similarity index 100% rename from contrib/gcc/config/sparc/sol2-gas.h rename to gcc/config/sparc/sol2-gas.h diff --git a/contrib/gcc/config/sparc/sol2-gld-bi.h b/gcc/config/sparc/sol2-gld-bi.h similarity index 100% rename from contrib/gcc/config/sparc/sol2-gld-bi.h rename to gcc/config/sparc/sol2-gld-bi.h diff --git a/contrib/gcc/config/sparc/sol2-gld.h b/gcc/config/sparc/sol2-gld.h similarity index 100% rename from contrib/gcc/config/sparc/sol2-gld.h rename to gcc/config/sparc/sol2-gld.h diff --git a/contrib/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h similarity index 100% rename from contrib/gcc/config/sparc/sol2.h rename to gcc/config/sparc/sol2.h diff --git a/contrib/gcc/config/sparc/sol26-sld.h b/gcc/config/sparc/sol26-sld.h similarity index 100% rename from contrib/gcc/config/sparc/sol26-sld.h rename to gcc/config/sparc/sol26-sld.h diff --git a/contrib/gcc/config/sparc/sp-elf.h b/gcc/config/sparc/sp-elf.h similarity index 100% rename from contrib/gcc/config/sparc/sp-elf.h rename to gcc/config/sparc/sp-elf.h diff --git a/contrib/gcc/config/sparc/sp64-elf.h b/gcc/config/sparc/sp64-elf.h similarity index 100% rename from contrib/gcc/config/sparc/sp64-elf.h rename to gcc/config/sparc/sp64-elf.h diff --git a/contrib/gcc/config/sparc/sparc-modes.def b/gcc/config/sparc/sparc-modes.def similarity index 100% rename from contrib/gcc/config/sparc/sparc-modes.def rename to gcc/config/sparc/sparc-modes.def diff --git a/contrib/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h similarity index 100% rename from contrib/gcc/config/sparc/sparc-protos.h rename to gcc/config/sparc/sparc-protos.h diff --git a/contrib/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c similarity index 100% rename from contrib/gcc/config/sparc/sparc.c rename to gcc/config/sparc/sparc.c diff --git a/contrib/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h similarity index 100% rename from contrib/gcc/config/sparc/sparc.h rename to gcc/config/sparc/sparc.h diff --git a/contrib/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md similarity index 100% rename from contrib/gcc/config/sparc/sparc.md rename to gcc/config/sparc/sparc.md diff --git a/contrib/gcc/config/sparc/sparc.opt b/gcc/config/sparc/sparc.opt similarity index 100% rename from contrib/gcc/config/sparc/sparc.opt rename to gcc/config/sparc/sparc.opt diff --git a/contrib/gcc/config/sparc/sparclet.md b/gcc/config/sparc/sparclet.md similarity index 100% rename from contrib/gcc/config/sparc/sparclet.md rename to gcc/config/sparc/sparclet.md diff --git a/contrib/gcc/config/sparc/supersparc.md b/gcc/config/sparc/supersparc.md similarity index 100% rename from contrib/gcc/config/sparc/supersparc.md rename to gcc/config/sparc/supersparc.md diff --git a/contrib/gcc/config/sparc/sync.md b/gcc/config/sparc/sync.md similarity index 100% rename from contrib/gcc/config/sparc/sync.md rename to gcc/config/sparc/sync.md diff --git a/contrib/gcc/config/sparc/sysv4-only.h b/gcc/config/sparc/sysv4-only.h similarity index 100% rename from contrib/gcc/config/sparc/sysv4-only.h rename to gcc/config/sparc/sysv4-only.h diff --git a/contrib/gcc/config/sparc/sysv4.h b/gcc/config/sparc/sysv4.h similarity index 100% rename from contrib/gcc/config/sparc/sysv4.h rename to gcc/config/sparc/sysv4.h diff --git a/contrib/gcc/config/sparc/t-crtfm b/gcc/config/sparc/t-crtfm similarity index 100% rename from contrib/gcc/config/sparc/t-crtfm rename to gcc/config/sparc/t-crtfm diff --git a/contrib/gcc/config/sparc/t-elf b/gcc/config/sparc/t-elf similarity index 100% rename from contrib/gcc/config/sparc/t-elf rename to gcc/config/sparc/t-elf diff --git a/contrib/gcc/config/sparc/t-linux b/gcc/config/sparc/t-linux similarity index 100% rename from contrib/gcc/config/sparc/t-linux rename to gcc/config/sparc/t-linux diff --git a/contrib/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64 similarity index 100% rename from contrib/gcc/config/sparc/t-linux64 rename to gcc/config/sparc/t-linux64 diff --git a/contrib/gcc/config/sparc/t-netbsd64 b/gcc/config/sparc/t-netbsd64 similarity index 100% rename from contrib/gcc/config/sparc/t-netbsd64 rename to gcc/config/sparc/t-netbsd64 diff --git a/contrib/gcc/config/sparc/t-sol2 b/gcc/config/sparc/t-sol2 similarity index 100% rename from contrib/gcc/config/sparc/t-sol2 rename to gcc/config/sparc/t-sol2 diff --git a/contrib/gcc/config/sparc/t-sol2-64 b/gcc/config/sparc/t-sol2-64 similarity index 100% rename from contrib/gcc/config/sparc/t-sol2-64 rename to gcc/config/sparc/t-sol2-64 diff --git a/contrib/gcc/config/sparc/ultra1_2.md b/gcc/config/sparc/ultra1_2.md similarity index 100% rename from contrib/gcc/config/sparc/ultra1_2.md rename to gcc/config/sparc/ultra1_2.md diff --git a/contrib/gcc/config/sparc/ultra3.md b/gcc/config/sparc/ultra3.md similarity index 100% rename from contrib/gcc/config/sparc/ultra3.md rename to gcc/config/sparc/ultra3.md diff --git a/contrib/gcc/config/svr3.h b/gcc/config/svr3.h similarity index 100% rename from contrib/gcc/config/svr3.h rename to gcc/config/svr3.h diff --git a/contrib/gcc/config/svr4.h b/gcc/config/svr4.h similarity index 100% rename from contrib/gcc/config/svr4.h rename to gcc/config/svr4.h diff --git a/contrib/gcc/config/t-darwin b/gcc/config/t-darwin similarity index 100% rename from contrib/gcc/config/t-darwin rename to gcc/config/t-darwin diff --git a/contrib/gcc/config/t-dfprules b/gcc/config/t-dfprules similarity index 100% rename from contrib/gcc/config/t-dfprules rename to gcc/config/t-dfprules diff --git a/contrib/gcc/config/t-freebsd b/gcc/config/t-freebsd similarity index 100% rename from contrib/gcc/config/t-freebsd rename to gcc/config/t-freebsd diff --git a/contrib/gcc/config/t-freebsd-thread b/gcc/config/t-freebsd-thread similarity index 100% rename from contrib/gcc/config/t-freebsd-thread rename to gcc/config/t-freebsd-thread diff --git a/contrib/gcc/config/t-gnu b/gcc/config/t-gnu similarity index 100% rename from contrib/gcc/config/t-gnu rename to gcc/config/t-gnu diff --git a/contrib/gcc/config/t-libc-ok b/gcc/config/t-libc-ok similarity index 100% rename from contrib/gcc/config/t-libc-ok rename to gcc/config/t-libc-ok diff --git a/contrib/gcc/config/t-libgcc-pic b/gcc/config/t-libgcc-pic similarity index 100% rename from contrib/gcc/config/t-libgcc-pic rename to gcc/config/t-libgcc-pic diff --git a/contrib/gcc/config/t-libunwind b/gcc/config/t-libunwind similarity index 100% rename from contrib/gcc/config/t-libunwind rename to gcc/config/t-libunwind diff --git a/contrib/gcc/config/t-libunwind-elf b/gcc/config/t-libunwind-elf similarity index 100% rename from contrib/gcc/config/t-libunwind-elf rename to gcc/config/t-libunwind-elf diff --git a/contrib/gcc/config/t-linux b/gcc/config/t-linux similarity index 100% rename from contrib/gcc/config/t-linux rename to gcc/config/t-linux diff --git a/contrib/gcc/config/t-lynx b/gcc/config/t-lynx similarity index 100% rename from contrib/gcc/config/t-lynx rename to gcc/config/t-lynx diff --git a/contrib/gcc/config/t-netbsd b/gcc/config/t-netbsd similarity index 100% rename from contrib/gcc/config/t-netbsd rename to gcc/config/t-netbsd diff --git a/contrib/gcc/config/t-openbsd b/gcc/config/t-openbsd similarity index 100% rename from contrib/gcc/config/t-openbsd rename to gcc/config/t-openbsd diff --git a/contrib/gcc/config/t-openbsd-thread b/gcc/config/t-openbsd-thread similarity index 100% rename from contrib/gcc/config/t-openbsd-thread rename to gcc/config/t-openbsd-thread diff --git a/contrib/gcc/config/t-rtems b/gcc/config/t-rtems similarity index 100% rename from contrib/gcc/config/t-rtems rename to gcc/config/t-rtems diff --git a/contrib/gcc/config/t-slibgcc-darwin b/gcc/config/t-slibgcc-darwin similarity index 100% rename from contrib/gcc/config/t-slibgcc-darwin rename to gcc/config/t-slibgcc-darwin diff --git a/contrib/gcc/config/t-slibgcc-elf-ver b/gcc/config/t-slibgcc-elf-ver similarity index 100% rename from contrib/gcc/config/t-slibgcc-elf-ver rename to gcc/config/t-slibgcc-elf-ver diff --git a/contrib/gcc/config/t-slibgcc-nolc-override b/gcc/config/t-slibgcc-nolc-override similarity index 100% rename from contrib/gcc/config/t-slibgcc-nolc-override rename to gcc/config/t-slibgcc-nolc-override diff --git a/contrib/gcc/config/t-slibgcc-sld b/gcc/config/t-slibgcc-sld similarity index 100% rename from contrib/gcc/config/t-slibgcc-sld rename to gcc/config/t-slibgcc-sld diff --git a/contrib/gcc/config/t-sol2 b/gcc/config/t-sol2 similarity index 100% rename from contrib/gcc/config/t-sol2 rename to gcc/config/t-sol2 diff --git a/contrib/gcc/config/t-svr4 b/gcc/config/t-svr4 similarity index 100% rename from contrib/gcc/config/t-svr4 rename to gcc/config/t-svr4 diff --git a/contrib/gcc/config/t-vxworks b/gcc/config/t-vxworks similarity index 100% rename from contrib/gcc/config/t-vxworks rename to gcc/config/t-vxworks diff --git a/contrib/gcc/config/tm-dwarf2.h b/gcc/config/tm-dwarf2.h similarity index 100% rename from contrib/gcc/config/tm-dwarf2.h rename to gcc/config/tm-dwarf2.h diff --git a/contrib/gcc/config/udivmod.c b/gcc/config/udivmod.c similarity index 100% rename from contrib/gcc/config/udivmod.c rename to gcc/config/udivmod.c diff --git a/contrib/gcc/config/udivmodsi4.c b/gcc/config/udivmodsi4.c similarity index 100% rename from contrib/gcc/config/udivmodsi4.c rename to gcc/config/udivmodsi4.c diff --git a/contrib/gcc/config/usegas.h b/gcc/config/usegas.h similarity index 100% rename from contrib/gcc/config/usegas.h rename to gcc/config/usegas.h diff --git a/contrib/gcc/config/vx-common.h b/gcc/config/vx-common.h similarity index 100% rename from contrib/gcc/config/vx-common.h rename to gcc/config/vx-common.h diff --git a/contrib/gcc/config/vxlib.c b/gcc/config/vxlib.c similarity index 100% rename from contrib/gcc/config/vxlib.c rename to gcc/config/vxlib.c diff --git a/contrib/gcc/config/vxworks.h b/gcc/config/vxworks.h similarity index 100% rename from contrib/gcc/config/vxworks.h rename to gcc/config/vxworks.h diff --git a/contrib/gcc/config/vxworks.opt b/gcc/config/vxworks.opt similarity index 100% rename from contrib/gcc/config/vxworks.opt rename to gcc/config/vxworks.opt diff --git a/contrib/gcc/config/vxworksae.h b/gcc/config/vxworksae.h similarity index 100% rename from contrib/gcc/config/vxworksae.h rename to gcc/config/vxworksae.h diff --git a/contrib/gcc/config/windiss.h b/gcc/config/windiss.h similarity index 100% rename from contrib/gcc/config/windiss.h rename to gcc/config/windiss.h diff --git a/contrib/gcc/config/x-darwin b/gcc/config/x-darwin similarity index 100% rename from contrib/gcc/config/x-darwin rename to gcc/config/x-darwin diff --git a/contrib/gcc/config/x-hpux b/gcc/config/x-hpux similarity index 100% rename from contrib/gcc/config/x-hpux rename to gcc/config/x-hpux diff --git a/contrib/gcc/config/x-interix b/gcc/config/x-interix similarity index 100% rename from contrib/gcc/config/x-interix rename to gcc/config/x-interix diff --git a/contrib/gcc/config/x-linux b/gcc/config/x-linux similarity index 100% rename from contrib/gcc/config/x-linux rename to gcc/config/x-linux diff --git a/contrib/gcc/config/x-solaris b/gcc/config/x-solaris similarity index 100% rename from contrib/gcc/config/x-solaris rename to gcc/config/x-solaris diff --git a/contrib/gcc/configure b/gcc/configure similarity index 100% rename from contrib/gcc/configure rename to gcc/configure diff --git a/contrib/gcc/configure.ac b/gcc/configure.ac similarity index 100% rename from contrib/gcc/configure.ac rename to gcc/configure.ac diff --git a/contrib/gcc/conflict.c b/gcc/conflict.c similarity index 100% rename from contrib/gcc/conflict.c rename to gcc/conflict.c diff --git a/contrib/gcc/convert.c b/gcc/convert.c similarity index 100% rename from contrib/gcc/convert.c rename to gcc/convert.c diff --git a/contrib/gcc/convert.h b/gcc/convert.h similarity index 100% rename from contrib/gcc/convert.h rename to gcc/convert.h diff --git a/contrib/gcc/coretypes.h b/gcc/coretypes.h similarity index 100% rename from contrib/gcc/coretypes.h rename to gcc/coretypes.h diff --git a/contrib/gcc/coverage.c b/gcc/coverage.c similarity index 100% rename from contrib/gcc/coverage.c rename to gcc/coverage.c diff --git a/contrib/gcc/coverage.h b/gcc/coverage.h similarity index 100% rename from contrib/gcc/coverage.h rename to gcc/coverage.h diff --git a/contrib/gcc/cp/ChangeLog b/gcc/cp/ChangeLog similarity index 100% rename from contrib/gcc/cp/ChangeLog rename to gcc/cp/ChangeLog diff --git a/contrib/gcc/cp/ChangeLog-1993 b/gcc/cp/ChangeLog-1993 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1993 rename to gcc/cp/ChangeLog-1993 diff --git a/contrib/gcc/cp/ChangeLog-1994 b/gcc/cp/ChangeLog-1994 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1994 rename to gcc/cp/ChangeLog-1994 diff --git a/contrib/gcc/cp/ChangeLog-1995 b/gcc/cp/ChangeLog-1995 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1995 rename to gcc/cp/ChangeLog-1995 diff --git a/contrib/gcc/cp/ChangeLog-1996 b/gcc/cp/ChangeLog-1996 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1996 rename to gcc/cp/ChangeLog-1996 diff --git a/contrib/gcc/cp/ChangeLog-1997 b/gcc/cp/ChangeLog-1997 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1997 rename to gcc/cp/ChangeLog-1997 diff --git a/contrib/gcc/cp/ChangeLog-1998 b/gcc/cp/ChangeLog-1998 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1998 rename to gcc/cp/ChangeLog-1998 diff --git a/contrib/gcc/cp/ChangeLog-1999 b/gcc/cp/ChangeLog-1999 similarity index 100% rename from contrib/gcc/cp/ChangeLog-1999 rename to gcc/cp/ChangeLog-1999 diff --git a/contrib/gcc/cp/ChangeLog-2000 b/gcc/cp/ChangeLog-2000 similarity index 100% rename from contrib/gcc/cp/ChangeLog-2000 rename to gcc/cp/ChangeLog-2000 diff --git a/contrib/gcc/cp/ChangeLog-2001 b/gcc/cp/ChangeLog-2001 similarity index 100% rename from contrib/gcc/cp/ChangeLog-2001 rename to gcc/cp/ChangeLog-2001 diff --git a/contrib/gcc/cp/ChangeLog-2002 b/gcc/cp/ChangeLog-2002 similarity index 100% rename from contrib/gcc/cp/ChangeLog-2002 rename to gcc/cp/ChangeLog-2002 diff --git a/contrib/gcc/cp/ChangeLog-2003 b/gcc/cp/ChangeLog-2003 similarity index 100% rename from contrib/gcc/cp/ChangeLog-2003 rename to gcc/cp/ChangeLog-2003 diff --git a/contrib/gcc/cp/ChangeLog-2004 b/gcc/cp/ChangeLog-2004 similarity index 100% rename from contrib/gcc/cp/ChangeLog-2004 rename to gcc/cp/ChangeLog-2004 diff --git a/contrib/gcc/cp/ChangeLog.tree-ssa b/gcc/cp/ChangeLog.tree-ssa similarity index 100% rename from contrib/gcc/cp/ChangeLog.tree-ssa rename to gcc/cp/ChangeLog.tree-ssa diff --git a/contrib/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in similarity index 100% rename from contrib/gcc/cp/Make-lang.in rename to gcc/cp/Make-lang.in diff --git a/contrib/gcc/cp/NEWS b/gcc/cp/NEWS similarity index 100% rename from contrib/gcc/cp/NEWS rename to gcc/cp/NEWS diff --git a/contrib/gcc/cp/call.c b/gcc/cp/call.c similarity index 100% rename from contrib/gcc/cp/call.c rename to gcc/cp/call.c diff --git a/contrib/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf similarity index 100% rename from contrib/gcc/cp/cfns.gperf rename to gcc/cp/cfns.gperf diff --git a/contrib/gcc/cp/class.c b/gcc/cp/class.c similarity index 100% rename from contrib/gcc/cp/class.c rename to gcc/cp/class.c diff --git a/contrib/gcc/cp/config-lang.in b/gcc/cp/config-lang.in similarity index 100% rename from contrib/gcc/cp/config-lang.in rename to gcc/cp/config-lang.in diff --git a/contrib/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c similarity index 100% rename from contrib/gcc/cp/cp-gimplify.c rename to gcc/cp/cp-gimplify.c diff --git a/contrib/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c similarity index 100% rename from contrib/gcc/cp/cp-lang.c rename to gcc/cp/cp-lang.c diff --git a/contrib/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c similarity index 100% rename from contrib/gcc/cp/cp-objcp-common.c rename to gcc/cp/cp-objcp-common.c diff --git a/contrib/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h similarity index 100% rename from contrib/gcc/cp/cp-objcp-common.h rename to gcc/cp/cp-objcp-common.h diff --git a/contrib/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def similarity index 100% rename from contrib/gcc/cp/cp-tree.def rename to gcc/cp/cp-tree.def diff --git a/contrib/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h similarity index 100% rename from contrib/gcc/cp/cp-tree.h rename to gcc/cp/cp-tree.h diff --git a/contrib/gcc/cp/cvt.c b/gcc/cp/cvt.c similarity index 100% rename from contrib/gcc/cp/cvt.c rename to gcc/cp/cvt.c diff --git a/contrib/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c similarity index 100% rename from contrib/gcc/cp/cxx-pretty-print.c rename to gcc/cp/cxx-pretty-print.c diff --git a/contrib/gcc/cp/cxx-pretty-print.h b/gcc/cp/cxx-pretty-print.h similarity index 100% rename from contrib/gcc/cp/cxx-pretty-print.h rename to gcc/cp/cxx-pretty-print.h diff --git a/contrib/gcc/cp/decl.c b/gcc/cp/decl.c similarity index 100% rename from contrib/gcc/cp/decl.c rename to gcc/cp/decl.c diff --git a/contrib/gcc/cp/decl.h b/gcc/cp/decl.h similarity index 100% rename from contrib/gcc/cp/decl.h rename to gcc/cp/decl.h diff --git a/contrib/gcc/cp/decl2.c b/gcc/cp/decl2.c similarity index 100% rename from contrib/gcc/cp/decl2.c rename to gcc/cp/decl2.c diff --git a/contrib/gcc/cp/dump.c b/gcc/cp/dump.c similarity index 100% rename from contrib/gcc/cp/dump.c rename to gcc/cp/dump.c diff --git a/contrib/gcc/cp/error.c b/gcc/cp/error.c similarity index 100% rename from contrib/gcc/cp/error.c rename to gcc/cp/error.c diff --git a/contrib/gcc/cp/except.c b/gcc/cp/except.c similarity index 100% rename from contrib/gcc/cp/except.c rename to gcc/cp/except.c diff --git a/contrib/gcc/cp/expr.c b/gcc/cp/expr.c similarity index 100% rename from contrib/gcc/cp/expr.c rename to gcc/cp/expr.c diff --git a/contrib/gcc/cp/friend.c b/gcc/cp/friend.c similarity index 100% rename from contrib/gcc/cp/friend.c rename to gcc/cp/friend.c diff --git a/contrib/gcc/cp/g++.1 b/gcc/cp/g++.1 similarity index 100% rename from contrib/gcc/cp/g++.1 rename to gcc/cp/g++.1 diff --git a/contrib/gcc/cp/g++spec.c b/gcc/cp/g++spec.c similarity index 100% rename from contrib/gcc/cp/g++spec.c rename to gcc/cp/g++spec.c diff --git a/contrib/gcc/cp/init.c b/gcc/cp/init.c similarity index 100% rename from contrib/gcc/cp/init.c rename to gcc/cp/init.c diff --git a/contrib/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h similarity index 100% rename from contrib/gcc/cp/lang-specs.h rename to gcc/cp/lang-specs.h diff --git a/contrib/gcc/cp/lex.c b/gcc/cp/lex.c similarity index 100% rename from contrib/gcc/cp/lex.c rename to gcc/cp/lex.c diff --git a/contrib/gcc/cp/mangle.c b/gcc/cp/mangle.c similarity index 100% rename from contrib/gcc/cp/mangle.c rename to gcc/cp/mangle.c diff --git a/contrib/gcc/cp/method.c b/gcc/cp/method.c similarity index 100% rename from contrib/gcc/cp/method.c rename to gcc/cp/method.c diff --git a/contrib/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c similarity index 100% rename from contrib/gcc/cp/name-lookup.c rename to gcc/cp/name-lookup.c diff --git a/contrib/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h similarity index 100% rename from contrib/gcc/cp/name-lookup.h rename to gcc/cp/name-lookup.h diff --git a/contrib/gcc/cp/operators.def b/gcc/cp/operators.def similarity index 100% rename from contrib/gcc/cp/operators.def rename to gcc/cp/operators.def diff --git a/contrib/gcc/cp/optimize.c b/gcc/cp/optimize.c similarity index 100% rename from contrib/gcc/cp/optimize.c rename to gcc/cp/optimize.c diff --git a/contrib/gcc/cp/parser.c b/gcc/cp/parser.c similarity index 100% rename from contrib/gcc/cp/parser.c rename to gcc/cp/parser.c diff --git a/contrib/gcc/cp/pt.c b/gcc/cp/pt.c similarity index 100% rename from contrib/gcc/cp/pt.c rename to gcc/cp/pt.c diff --git a/contrib/gcc/cp/ptree.c b/gcc/cp/ptree.c similarity index 100% rename from contrib/gcc/cp/ptree.c rename to gcc/cp/ptree.c diff --git a/contrib/gcc/cp/repo.c b/gcc/cp/repo.c similarity index 100% rename from contrib/gcc/cp/repo.c rename to gcc/cp/repo.c diff --git a/contrib/gcc/cp/rtti.c b/gcc/cp/rtti.c similarity index 100% rename from contrib/gcc/cp/rtti.c rename to gcc/cp/rtti.c diff --git a/contrib/gcc/cp/search.c b/gcc/cp/search.c similarity index 100% rename from contrib/gcc/cp/search.c rename to gcc/cp/search.c diff --git a/contrib/gcc/cp/semantics.c b/gcc/cp/semantics.c similarity index 100% rename from contrib/gcc/cp/semantics.c rename to gcc/cp/semantics.c diff --git a/contrib/gcc/cp/tree.c b/gcc/cp/tree.c similarity index 100% rename from contrib/gcc/cp/tree.c rename to gcc/cp/tree.c diff --git a/contrib/gcc/cp/typeck.c b/gcc/cp/typeck.c similarity index 100% rename from contrib/gcc/cp/typeck.c rename to gcc/cp/typeck.c diff --git a/contrib/gcc/cp/typeck2.c b/gcc/cp/typeck2.c similarity index 100% rename from contrib/gcc/cp/typeck2.c rename to gcc/cp/typeck2.c diff --git a/contrib/gcc/cppdefault.c b/gcc/cppdefault.c similarity index 100% rename from contrib/gcc/cppdefault.c rename to gcc/cppdefault.c diff --git a/contrib/gcc/cppdefault.h b/gcc/cppdefault.h similarity index 100% rename from contrib/gcc/cppdefault.h rename to gcc/cppdefault.h diff --git a/contrib/gcc/cppspec.c b/gcc/cppspec.c similarity index 100% rename from contrib/gcc/cppspec.c rename to gcc/cppspec.c diff --git a/contrib/gcc/crtstuff.c b/gcc/crtstuff.c similarity index 100% rename from contrib/gcc/crtstuff.c rename to gcc/crtstuff.c diff --git a/contrib/gcc/cse.c b/gcc/cse.c similarity index 100% rename from contrib/gcc/cse.c rename to gcc/cse.c diff --git a/contrib/gcc/cselib.c b/gcc/cselib.c similarity index 100% rename from contrib/gcc/cselib.c rename to gcc/cselib.c diff --git a/contrib/gcc/cselib.h b/gcc/cselib.h similarity index 100% rename from contrib/gcc/cselib.h rename to gcc/cselib.h diff --git a/contrib/gcc/cstamp-h.in b/gcc/cstamp-h.in similarity index 100% rename from contrib/gcc/cstamp-h.in rename to gcc/cstamp-h.in diff --git a/contrib/gcc/dbxout.c b/gcc/dbxout.c similarity index 100% rename from contrib/gcc/dbxout.c rename to gcc/dbxout.c diff --git a/contrib/gcc/dbxout.h b/gcc/dbxout.h similarity index 100% rename from contrib/gcc/dbxout.h rename to gcc/dbxout.h diff --git a/contrib/gcc/ddg.c b/gcc/ddg.c similarity index 100% rename from contrib/gcc/ddg.c rename to gcc/ddg.c diff --git a/contrib/gcc/ddg.h b/gcc/ddg.h similarity index 100% rename from contrib/gcc/ddg.h rename to gcc/ddg.h diff --git a/contrib/gcc/debug.c b/gcc/debug.c similarity index 100% rename from contrib/gcc/debug.c rename to gcc/debug.c diff --git a/contrib/gcc/debug.h b/gcc/debug.h similarity index 100% rename from contrib/gcc/debug.h rename to gcc/debug.h diff --git a/contrib/gcc/defaults.h b/gcc/defaults.h similarity index 100% rename from contrib/gcc/defaults.h rename to gcc/defaults.h diff --git a/contrib/gcc/df-core.c b/gcc/df-core.c similarity index 100% rename from contrib/gcc/df-core.c rename to gcc/df-core.c diff --git a/contrib/gcc/df-problems.c b/gcc/df-problems.c similarity index 100% rename from contrib/gcc/df-problems.c rename to gcc/df-problems.c diff --git a/contrib/gcc/df-scan.c b/gcc/df-scan.c similarity index 100% rename from contrib/gcc/df-scan.c rename to gcc/df-scan.c diff --git a/contrib/gcc/df.h b/gcc/df.h similarity index 100% rename from contrib/gcc/df.h rename to gcc/df.h diff --git a/contrib/gcc/dfp.c b/gcc/dfp.c similarity index 100% rename from contrib/gcc/dfp.c rename to gcc/dfp.c diff --git a/contrib/gcc/dfp.h b/gcc/dfp.h similarity index 100% rename from contrib/gcc/dfp.h rename to gcc/dfp.h diff --git a/contrib/gcc/diagnostic.c b/gcc/diagnostic.c similarity index 100% rename from contrib/gcc/diagnostic.c rename to gcc/diagnostic.c diff --git a/contrib/gcc/diagnostic.def b/gcc/diagnostic.def similarity index 100% rename from contrib/gcc/diagnostic.def rename to gcc/diagnostic.def diff --git a/contrib/gcc/diagnostic.h b/gcc/diagnostic.h similarity index 100% rename from contrib/gcc/diagnostic.h rename to gcc/diagnostic.h diff --git a/contrib/gcc/doc/bugreport.texi b/gcc/doc/bugreport.texi similarity index 100% rename from contrib/gcc/doc/bugreport.texi rename to gcc/doc/bugreport.texi diff --git a/contrib/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi similarity index 100% rename from contrib/gcc/doc/c-tree.texi rename to gcc/doc/c-tree.texi diff --git a/contrib/gcc/doc/cfg.texi b/gcc/doc/cfg.texi similarity index 100% rename from contrib/gcc/doc/cfg.texi rename to gcc/doc/cfg.texi diff --git a/contrib/gcc/doc/collect2.texi b/gcc/doc/collect2.texi similarity index 100% rename from contrib/gcc/doc/collect2.texi rename to gcc/doc/collect2.texi diff --git a/contrib/gcc/doc/compat.texi b/gcc/doc/compat.texi similarity index 100% rename from contrib/gcc/doc/compat.texi rename to gcc/doc/compat.texi diff --git a/contrib/gcc/doc/configfiles.texi b/gcc/doc/configfiles.texi similarity index 100% rename from contrib/gcc/doc/configfiles.texi rename to gcc/doc/configfiles.texi diff --git a/contrib/gcc/doc/configterms.texi b/gcc/doc/configterms.texi similarity index 100% rename from contrib/gcc/doc/configterms.texi rename to gcc/doc/configterms.texi diff --git a/contrib/gcc/doc/contrib.texi b/gcc/doc/contrib.texi similarity index 100% rename from contrib/gcc/doc/contrib.texi rename to gcc/doc/contrib.texi diff --git a/contrib/gcc/doc/contribute.texi b/gcc/doc/contribute.texi similarity index 100% rename from contrib/gcc/doc/contribute.texi rename to gcc/doc/contribute.texi diff --git a/contrib/gcc/doc/cpp.1 b/gcc/doc/cpp.1 similarity index 100% rename from contrib/gcc/doc/cpp.1 rename to gcc/doc/cpp.1 diff --git a/contrib/gcc/doc/cpp.texi b/gcc/doc/cpp.texi similarity index 100% rename from contrib/gcc/doc/cpp.texi rename to gcc/doc/cpp.texi diff --git a/contrib/gcc/doc/cppenv.texi b/gcc/doc/cppenv.texi similarity index 100% rename from contrib/gcc/doc/cppenv.texi rename to gcc/doc/cppenv.texi diff --git a/contrib/gcc/doc/cppinternals.texi b/gcc/doc/cppinternals.texi similarity index 100% rename from contrib/gcc/doc/cppinternals.texi rename to gcc/doc/cppinternals.texi diff --git a/contrib/gcc/doc/cppopts.texi b/gcc/doc/cppopts.texi similarity index 100% rename from contrib/gcc/doc/cppopts.texi rename to gcc/doc/cppopts.texi diff --git a/contrib/gcc/doc/extend.texi b/gcc/doc/extend.texi similarity index 100% rename from contrib/gcc/doc/extend.texi rename to gcc/doc/extend.texi diff --git a/contrib/gcc/doc/fragments.texi b/gcc/doc/fragments.texi similarity index 100% rename from contrib/gcc/doc/fragments.texi rename to gcc/doc/fragments.texi diff --git a/contrib/gcc/doc/frontends.texi b/gcc/doc/frontends.texi similarity index 100% rename from contrib/gcc/doc/frontends.texi rename to gcc/doc/frontends.texi diff --git a/contrib/gcc/doc/gcc.1 b/gcc/doc/gcc.1 similarity index 100% rename from contrib/gcc/doc/gcc.1 rename to gcc/doc/gcc.1 diff --git a/contrib/gcc/doc/gcc.texi b/gcc/doc/gcc.texi similarity index 100% rename from contrib/gcc/doc/gcc.texi rename to gcc/doc/gcc.texi diff --git a/contrib/gcc/doc/gccint.texi b/gcc/doc/gccint.texi similarity index 100% rename from contrib/gcc/doc/gccint.texi rename to gcc/doc/gccint.texi diff --git a/contrib/gcc/doc/gcov.1 b/gcc/doc/gcov.1 similarity index 100% rename from contrib/gcc/doc/gcov.1 rename to gcc/doc/gcov.1 diff --git a/contrib/gcc/doc/gcov.texi b/gcc/doc/gcov.texi similarity index 100% rename from contrib/gcc/doc/gcov.texi rename to gcc/doc/gcov.texi diff --git a/contrib/gcc/doc/gnu.texi b/gcc/doc/gnu.texi similarity index 100% rename from contrib/gcc/doc/gnu.texi rename to gcc/doc/gnu.texi diff --git a/contrib/gcc/doc/gty.texi b/gcc/doc/gty.texi similarity index 100% rename from contrib/gcc/doc/gty.texi rename to gcc/doc/gty.texi diff --git a/contrib/gcc/doc/headerdirs.texi b/gcc/doc/headerdirs.texi similarity index 100% rename from contrib/gcc/doc/headerdirs.texi rename to gcc/doc/headerdirs.texi diff --git a/contrib/gcc/doc/hostconfig.texi b/gcc/doc/hostconfig.texi similarity index 100% rename from contrib/gcc/doc/hostconfig.texi rename to gcc/doc/hostconfig.texi diff --git a/contrib/gcc/doc/implement-c.texi b/gcc/doc/implement-c.texi similarity index 100% rename from contrib/gcc/doc/implement-c.texi rename to gcc/doc/implement-c.texi diff --git a/contrib/gcc/doc/include/fdl.texi b/gcc/doc/include/fdl.texi similarity index 100% rename from contrib/gcc/doc/include/fdl.texi rename to gcc/doc/include/fdl.texi diff --git a/contrib/gcc/doc/include/funding.texi b/gcc/doc/include/funding.texi similarity index 100% rename from contrib/gcc/doc/include/funding.texi rename to gcc/doc/include/funding.texi diff --git a/contrib/gcc/doc/include/gcc-common.texi b/gcc/doc/include/gcc-common.texi similarity index 100% rename from contrib/gcc/doc/include/gcc-common.texi rename to gcc/doc/include/gcc-common.texi diff --git a/contrib/gcc/doc/include/gpl.texi b/gcc/doc/include/gpl.texi similarity index 100% rename from contrib/gcc/doc/include/gpl.texi rename to gcc/doc/include/gpl.texi diff --git a/contrib/gcc/doc/include/texinfo.tex b/gcc/doc/include/texinfo.tex similarity index 100% rename from contrib/gcc/doc/include/texinfo.tex rename to gcc/doc/include/texinfo.tex diff --git a/contrib/gcc/doc/interface.texi b/gcc/doc/interface.texi similarity index 100% rename from contrib/gcc/doc/interface.texi rename to gcc/doc/interface.texi diff --git a/contrib/gcc/doc/invoke.texi b/gcc/doc/invoke.texi similarity index 100% rename from contrib/gcc/doc/invoke.texi rename to gcc/doc/invoke.texi diff --git a/contrib/gcc/doc/languages.texi b/gcc/doc/languages.texi similarity index 100% rename from contrib/gcc/doc/languages.texi rename to gcc/doc/languages.texi diff --git a/contrib/gcc/doc/libgcc.texi b/gcc/doc/libgcc.texi similarity index 100% rename from contrib/gcc/doc/libgcc.texi rename to gcc/doc/libgcc.texi diff --git a/contrib/gcc/doc/loop.texi b/gcc/doc/loop.texi similarity index 100% rename from contrib/gcc/doc/loop.texi rename to gcc/doc/loop.texi diff --git a/contrib/gcc/doc/makefile.texi b/gcc/doc/makefile.texi similarity index 100% rename from contrib/gcc/doc/makefile.texi rename to gcc/doc/makefile.texi diff --git a/contrib/gcc/doc/md.texi b/gcc/doc/md.texi similarity index 100% rename from contrib/gcc/doc/md.texi rename to gcc/doc/md.texi diff --git a/contrib/gcc/doc/objc.texi b/gcc/doc/objc.texi similarity index 100% rename from contrib/gcc/doc/objc.texi rename to gcc/doc/objc.texi diff --git a/contrib/gcc/doc/options.texi b/gcc/doc/options.texi similarity index 100% rename from contrib/gcc/doc/options.texi rename to gcc/doc/options.texi diff --git a/contrib/gcc/doc/passes.texi b/gcc/doc/passes.texi similarity index 100% rename from contrib/gcc/doc/passes.texi rename to gcc/doc/passes.texi diff --git a/contrib/gcc/doc/portability.texi b/gcc/doc/portability.texi similarity index 100% rename from contrib/gcc/doc/portability.texi rename to gcc/doc/portability.texi diff --git a/contrib/gcc/doc/rtl.texi b/gcc/doc/rtl.texi similarity index 100% rename from contrib/gcc/doc/rtl.texi rename to gcc/doc/rtl.texi diff --git a/contrib/gcc/doc/service.texi b/gcc/doc/service.texi similarity index 100% rename from contrib/gcc/doc/service.texi rename to gcc/doc/service.texi diff --git a/contrib/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi similarity index 100% rename from contrib/gcc/doc/sourcebuild.texi rename to gcc/doc/sourcebuild.texi diff --git a/contrib/gcc/doc/standards.texi b/gcc/doc/standards.texi similarity index 100% rename from contrib/gcc/doc/standards.texi rename to gcc/doc/standards.texi diff --git a/contrib/gcc/doc/tm.texi b/gcc/doc/tm.texi similarity index 100% rename from contrib/gcc/doc/tm.texi rename to gcc/doc/tm.texi diff --git a/contrib/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi similarity index 100% rename from contrib/gcc/doc/tree-ssa.texi rename to gcc/doc/tree-ssa.texi diff --git a/contrib/gcc/doc/trouble.texi b/gcc/doc/trouble.texi similarity index 100% rename from contrib/gcc/doc/trouble.texi rename to gcc/doc/trouble.texi diff --git a/contrib/gcc/dojump.c b/gcc/dojump.c similarity index 100% rename from contrib/gcc/dojump.c rename to gcc/dojump.c diff --git a/contrib/gcc/dominance.c b/gcc/dominance.c similarity index 100% rename from contrib/gcc/dominance.c rename to gcc/dominance.c diff --git a/contrib/gcc/domwalk.c b/gcc/domwalk.c similarity index 100% rename from contrib/gcc/domwalk.c rename to gcc/domwalk.c diff --git a/contrib/gcc/domwalk.h b/gcc/domwalk.h similarity index 100% rename from contrib/gcc/domwalk.h rename to gcc/domwalk.h diff --git a/contrib/gcc/double-int.c b/gcc/double-int.c similarity index 100% rename from contrib/gcc/double-int.c rename to gcc/double-int.c diff --git a/contrib/gcc/double-int.h b/gcc/double-int.h similarity index 100% rename from contrib/gcc/double-int.h rename to gcc/double-int.h diff --git a/contrib/gcc/dummy-checksum.c b/gcc/dummy-checksum.c similarity index 100% rename from contrib/gcc/dummy-checksum.c rename to gcc/dummy-checksum.c diff --git a/contrib/gcc/dwarf.h b/gcc/dwarf.h similarity index 100% rename from contrib/gcc/dwarf.h rename to gcc/dwarf.h diff --git a/contrib/gcc/dwarf2.h b/gcc/dwarf2.h similarity index 100% rename from contrib/gcc/dwarf2.h rename to gcc/dwarf2.h diff --git a/contrib/gcc/dwarf2asm.c b/gcc/dwarf2asm.c similarity index 100% rename from contrib/gcc/dwarf2asm.c rename to gcc/dwarf2asm.c diff --git a/contrib/gcc/dwarf2asm.h b/gcc/dwarf2asm.h similarity index 100% rename from contrib/gcc/dwarf2asm.h rename to gcc/dwarf2asm.h diff --git a/contrib/gcc/dwarf2out.c b/gcc/dwarf2out.c similarity index 100% rename from contrib/gcc/dwarf2out.c rename to gcc/dwarf2out.c diff --git a/contrib/gcc/dwarf2out.h b/gcc/dwarf2out.h similarity index 100% rename from contrib/gcc/dwarf2out.h rename to gcc/dwarf2out.h diff --git a/contrib/gcc/emit-rtl.c b/gcc/emit-rtl.c similarity index 100% rename from contrib/gcc/emit-rtl.c rename to gcc/emit-rtl.c diff --git a/contrib/gcc/emit-rtl.h b/gcc/emit-rtl.h similarity index 100% rename from contrib/gcc/emit-rtl.h rename to gcc/emit-rtl.h diff --git a/contrib/gcc/emutls.c b/gcc/emutls.c similarity index 100% rename from contrib/gcc/emutls.c rename to gcc/emutls.c diff --git a/contrib/gcc/errors.c b/gcc/errors.c similarity index 100% rename from contrib/gcc/errors.c rename to gcc/errors.c diff --git a/contrib/gcc/errors.h b/gcc/errors.h similarity index 100% rename from contrib/gcc/errors.h rename to gcc/errors.h diff --git a/contrib/gcc/et-forest.c b/gcc/et-forest.c similarity index 100% rename from contrib/gcc/et-forest.c rename to gcc/et-forest.c diff --git a/contrib/gcc/et-forest.h b/gcc/et-forest.h similarity index 100% rename from contrib/gcc/et-forest.h rename to gcc/et-forest.h diff --git a/contrib/gcc/except.c b/gcc/except.c similarity index 100% rename from contrib/gcc/except.c rename to gcc/except.c diff --git a/contrib/gcc/except.h b/gcc/except.h similarity index 100% rename from contrib/gcc/except.h rename to gcc/except.h diff --git a/contrib/gcc/explow.c b/gcc/explow.c similarity index 100% rename from contrib/gcc/explow.c rename to gcc/explow.c diff --git a/contrib/gcc/expmed.c b/gcc/expmed.c similarity index 100% rename from contrib/gcc/expmed.c rename to gcc/expmed.c diff --git a/contrib/gcc/expr.c b/gcc/expr.c similarity index 100% rename from contrib/gcc/expr.c rename to gcc/expr.c diff --git a/contrib/gcc/expr.h b/gcc/expr.h similarity index 100% rename from contrib/gcc/expr.h rename to gcc/expr.h diff --git a/contrib/gcc/final.c b/gcc/final.c similarity index 100% rename from contrib/gcc/final.c rename to gcc/final.c diff --git a/contrib/gcc/fix-header.c b/gcc/fix-header.c similarity index 100% rename from contrib/gcc/fix-header.c rename to gcc/fix-header.c diff --git a/contrib/gcc/fixproto b/gcc/fixproto similarity index 100% rename from contrib/gcc/fixproto rename to gcc/fixproto diff --git a/contrib/gcc/flags.h b/gcc/flags.h similarity index 100% rename from contrib/gcc/flags.h rename to gcc/flags.h diff --git a/contrib/gcc/flow.c b/gcc/flow.c similarity index 100% rename from contrib/gcc/flow.c rename to gcc/flow.c diff --git a/contrib/gcc/fold-const.c b/gcc/fold-const.c similarity index 100% rename from contrib/gcc/fold-const.c rename to gcc/fold-const.c diff --git a/contrib/gcc/fp-test.c b/gcc/fp-test.c similarity index 100% rename from contrib/gcc/fp-test.c rename to gcc/fp-test.c diff --git a/contrib/gcc/function.c b/gcc/function.c similarity index 100% rename from contrib/gcc/function.c rename to gcc/function.c diff --git a/contrib/gcc/function.h b/gcc/function.h similarity index 100% rename from contrib/gcc/function.h rename to gcc/function.h diff --git a/contrib/gcc/gbl-ctors.h b/gcc/gbl-ctors.h similarity index 100% rename from contrib/gcc/gbl-ctors.h rename to gcc/gbl-ctors.h diff --git a/contrib/gcc/gcc.c b/gcc/gcc.c similarity index 100% rename from contrib/gcc/gcc.c rename to gcc/gcc.c diff --git a/contrib/gcc/gcc.h b/gcc/gcc.h similarity index 100% rename from contrib/gcc/gcc.h rename to gcc/gcc.h diff --git a/contrib/gcc/gccbug.in b/gcc/gccbug.in similarity index 100% rename from contrib/gcc/gccbug.in rename to gcc/gccbug.in diff --git a/contrib/gcc/gccspec.c b/gcc/gccspec.c similarity index 100% rename from contrib/gcc/gccspec.c rename to gcc/gccspec.c diff --git a/contrib/gcc/gcov-dump.c b/gcc/gcov-dump.c similarity index 100% rename from contrib/gcc/gcov-dump.c rename to gcc/gcov-dump.c diff --git a/contrib/gcc/gcov-io.c b/gcc/gcov-io.c similarity index 100% rename from contrib/gcc/gcov-io.c rename to gcc/gcov-io.c diff --git a/contrib/gcc/gcov-io.h b/gcc/gcov-io.h similarity index 100% rename from contrib/gcc/gcov-io.h rename to gcc/gcov-io.h diff --git a/contrib/gcc/gcov-iov.c b/gcc/gcov-iov.c similarity index 100% rename from contrib/gcc/gcov-iov.c rename to gcc/gcov-iov.c diff --git a/contrib/gcc/gcov.c b/gcc/gcov.c similarity index 100% rename from contrib/gcc/gcov.c rename to gcc/gcov.c diff --git a/contrib/gcc/gcse.c b/gcc/gcse.c similarity index 100% rename from contrib/gcc/gcse.c rename to gcc/gcse.c diff --git a/contrib/gcc/gdbinit.in b/gcc/gdbinit.in similarity index 100% rename from contrib/gcc/gdbinit.in rename to gcc/gdbinit.in diff --git a/contrib/gcc/gen-protos.c b/gcc/gen-protos.c similarity index 100% rename from contrib/gcc/gen-protos.c rename to gcc/gen-protos.c diff --git a/contrib/gcc/genattr.c b/gcc/genattr.c similarity index 100% rename from contrib/gcc/genattr.c rename to gcc/genattr.c diff --git a/contrib/gcc/genattrtab.c b/gcc/genattrtab.c similarity index 100% rename from contrib/gcc/genattrtab.c rename to gcc/genattrtab.c diff --git a/contrib/gcc/genautomata.c b/gcc/genautomata.c similarity index 100% rename from contrib/gcc/genautomata.c rename to gcc/genautomata.c diff --git a/contrib/gcc/gencheck.c b/gcc/gencheck.c similarity index 100% rename from contrib/gcc/gencheck.c rename to gcc/gencheck.c diff --git a/contrib/gcc/genchecksum.c b/gcc/genchecksum.c similarity index 100% rename from contrib/gcc/genchecksum.c rename to gcc/genchecksum.c diff --git a/contrib/gcc/gencodes.c b/gcc/gencodes.c similarity index 100% rename from contrib/gcc/gencodes.c rename to gcc/gencodes.c diff --git a/contrib/gcc/genconditions.c b/gcc/genconditions.c similarity index 100% rename from contrib/gcc/genconditions.c rename to gcc/genconditions.c diff --git a/contrib/gcc/genconfig.c b/gcc/genconfig.c similarity index 100% rename from contrib/gcc/genconfig.c rename to gcc/genconfig.c diff --git a/contrib/gcc/genconstants.c b/gcc/genconstants.c similarity index 100% rename from contrib/gcc/genconstants.c rename to gcc/genconstants.c diff --git a/contrib/gcc/genemit.c b/gcc/genemit.c similarity index 100% rename from contrib/gcc/genemit.c rename to gcc/genemit.c diff --git a/contrib/gcc/genextract.c b/gcc/genextract.c similarity index 100% rename from contrib/gcc/genextract.c rename to gcc/genextract.c diff --git a/contrib/gcc/genflags.c b/gcc/genflags.c similarity index 100% rename from contrib/gcc/genflags.c rename to gcc/genflags.c diff --git a/contrib/gcc/gengenrtl.c b/gcc/gengenrtl.c similarity index 100% rename from contrib/gcc/gengenrtl.c rename to gcc/gengenrtl.c diff --git a/contrib/gcc/gengtype-lex.l b/gcc/gengtype-lex.l similarity index 100% rename from contrib/gcc/gengtype-lex.l rename to gcc/gengtype-lex.l diff --git a/contrib/gcc/gengtype-yacc.y b/gcc/gengtype-yacc.y similarity index 100% rename from contrib/gcc/gengtype-yacc.y rename to gcc/gengtype-yacc.y diff --git a/contrib/gcc/gengtype.c b/gcc/gengtype.c similarity index 100% rename from contrib/gcc/gengtype.c rename to gcc/gengtype.c diff --git a/contrib/gcc/gengtype.h b/gcc/gengtype.h similarity index 100% rename from contrib/gcc/gengtype.h rename to gcc/gengtype.h diff --git a/contrib/gcc/genmddeps.c b/gcc/genmddeps.c similarity index 100% rename from contrib/gcc/genmddeps.c rename to gcc/genmddeps.c diff --git a/contrib/gcc/genmodes.c b/gcc/genmodes.c similarity index 100% rename from contrib/gcc/genmodes.c rename to gcc/genmodes.c diff --git a/contrib/gcc/genmultilib b/gcc/genmultilib similarity index 100% rename from contrib/gcc/genmultilib rename to gcc/genmultilib diff --git a/contrib/gcc/genopinit.c b/gcc/genopinit.c similarity index 100% rename from contrib/gcc/genopinit.c rename to gcc/genopinit.c diff --git a/contrib/gcc/genoutput.c b/gcc/genoutput.c similarity index 100% rename from contrib/gcc/genoutput.c rename to gcc/genoutput.c diff --git a/contrib/gcc/genpeep.c b/gcc/genpeep.c similarity index 100% rename from contrib/gcc/genpeep.c rename to gcc/genpeep.c diff --git a/contrib/gcc/genpreds.c b/gcc/genpreds.c similarity index 100% rename from contrib/gcc/genpreds.c rename to gcc/genpreds.c diff --git a/contrib/gcc/genrecog.c b/gcc/genrecog.c similarity index 100% rename from contrib/gcc/genrecog.c rename to gcc/genrecog.c diff --git a/contrib/gcc/gensupport.c b/gcc/gensupport.c similarity index 100% rename from contrib/gcc/gensupport.c rename to gcc/gensupport.c diff --git a/contrib/gcc/gensupport.h b/gcc/gensupport.h similarity index 100% rename from contrib/gcc/gensupport.h rename to gcc/gensupport.h diff --git a/contrib/gcc/ggc-common.c b/gcc/ggc-common.c similarity index 100% rename from contrib/gcc/ggc-common.c rename to gcc/ggc-common.c diff --git a/contrib/gcc/ggc-none.c b/gcc/ggc-none.c similarity index 100% rename from contrib/gcc/ggc-none.c rename to gcc/ggc-none.c diff --git a/contrib/gcc/ggc-page.c b/gcc/ggc-page.c similarity index 100% rename from contrib/gcc/ggc-page.c rename to gcc/ggc-page.c diff --git a/contrib/gcc/ggc-zone.c b/gcc/ggc-zone.c similarity index 100% rename from contrib/gcc/ggc-zone.c rename to gcc/ggc-zone.c diff --git a/contrib/gcc/ggc.h b/gcc/ggc.h similarity index 100% rename from contrib/gcc/ggc.h rename to gcc/ggc.h diff --git a/contrib/gcc/gimple-low.c b/gcc/gimple-low.c similarity index 100% rename from contrib/gcc/gimple-low.c rename to gcc/gimple-low.c diff --git a/contrib/gcc/gimplify.c b/gcc/gimplify.c similarity index 100% rename from contrib/gcc/gimplify.c rename to gcc/gimplify.c diff --git a/contrib/gcc/ginclude/decfloat.h b/gcc/ginclude/decfloat.h similarity index 100% rename from contrib/gcc/ginclude/decfloat.h rename to gcc/ginclude/decfloat.h diff --git a/contrib/gcc/ginclude/float.h b/gcc/ginclude/float.h similarity index 100% rename from contrib/gcc/ginclude/float.h rename to gcc/ginclude/float.h diff --git a/contrib/gcc/ginclude/iso646.h b/gcc/ginclude/iso646.h similarity index 100% rename from contrib/gcc/ginclude/iso646.h rename to gcc/ginclude/iso646.h diff --git a/contrib/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h similarity index 100% rename from contrib/gcc/ginclude/stdarg.h rename to gcc/ginclude/stdarg.h diff --git a/contrib/gcc/ginclude/stdbool.h b/gcc/ginclude/stdbool.h similarity index 100% rename from contrib/gcc/ginclude/stdbool.h rename to gcc/ginclude/stdbool.h diff --git a/contrib/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h similarity index 100% rename from contrib/gcc/ginclude/stddef.h rename to gcc/ginclude/stddef.h diff --git a/contrib/gcc/ginclude/varargs.h b/gcc/ginclude/varargs.h similarity index 100% rename from contrib/gcc/ginclude/varargs.h rename to gcc/ginclude/varargs.h diff --git a/contrib/gcc/glimits.h b/gcc/glimits.h similarity index 100% rename from contrib/gcc/glimits.h rename to gcc/glimits.h diff --git a/contrib/gcc/global.c b/gcc/global.c similarity index 100% rename from contrib/gcc/global.c rename to gcc/global.c diff --git a/contrib/gcc/graph.c b/gcc/graph.c similarity index 100% rename from contrib/gcc/graph.c rename to gcc/graph.c diff --git a/contrib/gcc/graph.h b/gcc/graph.h similarity index 100% rename from contrib/gcc/graph.h rename to gcc/graph.h diff --git a/contrib/gcc/gstab.h b/gcc/gstab.h similarity index 100% rename from contrib/gcc/gstab.h rename to gcc/gstab.h diff --git a/contrib/gcc/gsyms.h b/gcc/gsyms.h similarity index 100% rename from contrib/gcc/gsyms.h rename to gcc/gsyms.h diff --git a/contrib/gcc/gsyslimits.h b/gcc/gsyslimits.h similarity index 100% rename from contrib/gcc/gsyslimits.h rename to gcc/gsyslimits.h diff --git a/contrib/gcc/gthr-aix.h b/gcc/gthr-aix.h similarity index 100% rename from contrib/gcc/gthr-aix.h rename to gcc/gthr-aix.h diff --git a/contrib/gcc/gthr-dce.h b/gcc/gthr-dce.h similarity index 100% rename from contrib/gcc/gthr-dce.h rename to gcc/gthr-dce.h diff --git a/contrib/gcc/gthr-gnat.c b/gcc/gthr-gnat.c similarity index 100% rename from contrib/gcc/gthr-gnat.c rename to gcc/gthr-gnat.c diff --git a/contrib/gcc/gthr-gnat.h b/gcc/gthr-gnat.h similarity index 100% rename from contrib/gcc/gthr-gnat.h rename to gcc/gthr-gnat.h diff --git a/contrib/gcc/gthr-lynx.h b/gcc/gthr-lynx.h similarity index 100% rename from contrib/gcc/gthr-lynx.h rename to gcc/gthr-lynx.h diff --git a/contrib/gcc/gthr-nks.h b/gcc/gthr-nks.h similarity index 100% rename from contrib/gcc/gthr-nks.h rename to gcc/gthr-nks.h diff --git a/contrib/gcc/gthr-posix.c b/gcc/gthr-posix.c similarity index 100% rename from contrib/gcc/gthr-posix.c rename to gcc/gthr-posix.c diff --git a/contrib/gcc/gthr-posix.h b/gcc/gthr-posix.h similarity index 100% rename from contrib/gcc/gthr-posix.h rename to gcc/gthr-posix.h diff --git a/contrib/gcc/gthr-posix95.h b/gcc/gthr-posix95.h similarity index 100% rename from contrib/gcc/gthr-posix95.h rename to gcc/gthr-posix95.h diff --git a/contrib/gcc/gthr-rtems.h b/gcc/gthr-rtems.h similarity index 100% rename from contrib/gcc/gthr-rtems.h rename to gcc/gthr-rtems.h diff --git a/contrib/gcc/gthr-single.h b/gcc/gthr-single.h similarity index 100% rename from contrib/gcc/gthr-single.h rename to gcc/gthr-single.h diff --git a/contrib/gcc/gthr-solaris.h b/gcc/gthr-solaris.h similarity index 100% rename from contrib/gcc/gthr-solaris.h rename to gcc/gthr-solaris.h diff --git a/contrib/gcc/gthr-tpf.h b/gcc/gthr-tpf.h similarity index 100% rename from contrib/gcc/gthr-tpf.h rename to gcc/gthr-tpf.h diff --git a/contrib/gcc/gthr-vxworks.h b/gcc/gthr-vxworks.h similarity index 100% rename from contrib/gcc/gthr-vxworks.h rename to gcc/gthr-vxworks.h diff --git a/contrib/gcc/gthr-win32.h b/gcc/gthr-win32.h similarity index 100% rename from contrib/gcc/gthr-win32.h rename to gcc/gthr-win32.h diff --git a/contrib/gcc/gthr.h b/gcc/gthr.h similarity index 100% rename from contrib/gcc/gthr.h rename to gcc/gthr.h diff --git a/contrib/gcc/haifa-sched.c b/gcc/haifa-sched.c similarity index 100% rename from contrib/gcc/haifa-sched.c rename to gcc/haifa-sched.c diff --git a/contrib/gcc/hard-reg-set.h b/gcc/hard-reg-set.h similarity index 100% rename from contrib/gcc/hard-reg-set.h rename to gcc/hard-reg-set.h diff --git a/contrib/gcc/hooks.c b/gcc/hooks.c similarity index 100% rename from contrib/gcc/hooks.c rename to gcc/hooks.c diff --git a/contrib/gcc/hooks.h b/gcc/hooks.h similarity index 100% rename from contrib/gcc/hooks.h rename to gcc/hooks.h diff --git a/contrib/gcc/host-default.c b/gcc/host-default.c similarity index 100% rename from contrib/gcc/host-default.c rename to gcc/host-default.c diff --git a/contrib/gcc/hosthooks-def.h b/gcc/hosthooks-def.h similarity index 100% rename from contrib/gcc/hosthooks-def.h rename to gcc/hosthooks-def.h diff --git a/contrib/gcc/hosthooks.h b/gcc/hosthooks.h similarity index 100% rename from contrib/gcc/hosthooks.h rename to gcc/hosthooks.h diff --git a/contrib/gcc/hwint.h b/gcc/hwint.h similarity index 100% rename from contrib/gcc/hwint.h rename to gcc/hwint.h diff --git a/contrib/gcc/ifcvt.c b/gcc/ifcvt.c similarity index 100% rename from contrib/gcc/ifcvt.c rename to gcc/ifcvt.c diff --git a/contrib/gcc/input.h b/gcc/input.h similarity index 100% rename from contrib/gcc/input.h rename to gcc/input.h diff --git a/contrib/gcc/insn-addr.h b/gcc/insn-addr.h similarity index 100% rename from contrib/gcc/insn-addr.h rename to gcc/insn-addr.h diff --git a/contrib/gcc/insn-notes.def b/gcc/insn-notes.def similarity index 100% rename from contrib/gcc/insn-notes.def rename to gcc/insn-notes.def diff --git a/contrib/gcc/integrate.c b/gcc/integrate.c similarity index 100% rename from contrib/gcc/integrate.c rename to gcc/integrate.c diff --git a/contrib/gcc/integrate.h b/gcc/integrate.h similarity index 100% rename from contrib/gcc/integrate.h rename to gcc/integrate.h diff --git a/contrib/gcc/intl.c b/gcc/intl.c similarity index 100% rename from contrib/gcc/intl.c rename to gcc/intl.c diff --git a/contrib/gcc/intl.h b/gcc/intl.h similarity index 100% rename from contrib/gcc/intl.h rename to gcc/intl.h diff --git a/contrib/gcc/ipa-cp.c b/gcc/ipa-cp.c similarity index 100% rename from contrib/gcc/ipa-cp.c rename to gcc/ipa-cp.c diff --git a/contrib/gcc/ipa-inline.c b/gcc/ipa-inline.c similarity index 100% rename from contrib/gcc/ipa-inline.c rename to gcc/ipa-inline.c diff --git a/contrib/gcc/ipa-prop.c b/gcc/ipa-prop.c similarity index 100% rename from contrib/gcc/ipa-prop.c rename to gcc/ipa-prop.c diff --git a/contrib/gcc/ipa-prop.h b/gcc/ipa-prop.h similarity index 100% rename from contrib/gcc/ipa-prop.h rename to gcc/ipa-prop.h diff --git a/contrib/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c similarity index 100% rename from contrib/gcc/ipa-pure-const.c rename to gcc/ipa-pure-const.c diff --git a/contrib/gcc/ipa-reference.c b/gcc/ipa-reference.c similarity index 100% rename from contrib/gcc/ipa-reference.c rename to gcc/ipa-reference.c diff --git a/contrib/gcc/ipa-reference.h b/gcc/ipa-reference.h similarity index 100% rename from contrib/gcc/ipa-reference.h rename to gcc/ipa-reference.h diff --git a/contrib/gcc/ipa-type-escape.c b/gcc/ipa-type-escape.c similarity index 100% rename from contrib/gcc/ipa-type-escape.c rename to gcc/ipa-type-escape.c diff --git a/contrib/gcc/ipa-type-escape.h b/gcc/ipa-type-escape.h similarity index 100% rename from contrib/gcc/ipa-type-escape.h rename to gcc/ipa-type-escape.h diff --git a/contrib/gcc/ipa-utils.c b/gcc/ipa-utils.c similarity index 100% rename from contrib/gcc/ipa-utils.c rename to gcc/ipa-utils.c diff --git a/contrib/gcc/ipa-utils.h b/gcc/ipa-utils.h similarity index 100% rename from contrib/gcc/ipa-utils.h rename to gcc/ipa-utils.h diff --git a/contrib/gcc/ipa.c b/gcc/ipa.c similarity index 100% rename from contrib/gcc/ipa.c rename to gcc/ipa.c diff --git a/contrib/gcc/jump.c b/gcc/jump.c similarity index 100% rename from contrib/gcc/jump.c rename to gcc/jump.c diff --git a/contrib/gcc/lambda-code.c b/gcc/lambda-code.c similarity index 100% rename from contrib/gcc/lambda-code.c rename to gcc/lambda-code.c diff --git a/contrib/gcc/lambda-mat.c b/gcc/lambda-mat.c similarity index 100% rename from contrib/gcc/lambda-mat.c rename to gcc/lambda-mat.c diff --git a/contrib/gcc/lambda-trans.c b/gcc/lambda-trans.c similarity index 100% rename from contrib/gcc/lambda-trans.c rename to gcc/lambda-trans.c diff --git a/contrib/gcc/lambda.h b/gcc/lambda.h similarity index 100% rename from contrib/gcc/lambda.h rename to gcc/lambda.h diff --git a/contrib/gcc/langhooks-def.h b/gcc/langhooks-def.h similarity index 100% rename from contrib/gcc/langhooks-def.h rename to gcc/langhooks-def.h diff --git a/contrib/gcc/langhooks.c b/gcc/langhooks.c similarity index 100% rename from contrib/gcc/langhooks.c rename to gcc/langhooks.c diff --git a/contrib/gcc/langhooks.h b/gcc/langhooks.h similarity index 100% rename from contrib/gcc/langhooks.h rename to gcc/langhooks.h diff --git a/contrib/gcc/lcm.c b/gcc/lcm.c similarity index 100% rename from contrib/gcc/lcm.c rename to gcc/lcm.c diff --git a/contrib/gcc/libada-mk.in b/gcc/libada-mk.in similarity index 100% rename from contrib/gcc/libada-mk.in rename to gcc/libada-mk.in diff --git a/contrib/gcc/libfuncs.h b/gcc/libfuncs.h similarity index 100% rename from contrib/gcc/libfuncs.h rename to gcc/libfuncs.h diff --git a/contrib/gcc/libgcc-std.ver b/gcc/libgcc-std.ver similarity index 100% rename from contrib/gcc/libgcc-std.ver rename to gcc/libgcc-std.ver diff --git a/contrib/gcc/libgcc2.c b/gcc/libgcc2.c similarity index 100% rename from contrib/gcc/libgcc2.c rename to gcc/libgcc2.c diff --git a/contrib/gcc/libgcc2.h b/gcc/libgcc2.h similarity index 100% rename from contrib/gcc/libgcc2.h rename to gcc/libgcc2.h diff --git a/contrib/gcc/libgcov.c b/gcc/libgcov.c similarity index 100% rename from contrib/gcc/libgcov.c rename to gcc/libgcov.c diff --git a/contrib/gcc/limitx.h b/gcc/limitx.h similarity index 100% rename from contrib/gcc/limitx.h rename to gcc/limitx.h diff --git a/contrib/gcc/limity.h b/gcc/limity.h similarity index 100% rename from contrib/gcc/limity.h rename to gcc/limity.h diff --git a/contrib/gcc/lists.c b/gcc/lists.c similarity index 100% rename from contrib/gcc/lists.c rename to gcc/lists.c diff --git a/contrib/gcc/local-alloc.c b/gcc/local-alloc.c similarity index 100% rename from contrib/gcc/local-alloc.c rename to gcc/local-alloc.c diff --git a/contrib/gcc/longlong.h b/gcc/longlong.h similarity index 100% rename from contrib/gcc/longlong.h rename to gcc/longlong.h diff --git a/contrib/gcc/loop-doloop.c b/gcc/loop-doloop.c similarity index 100% rename from contrib/gcc/loop-doloop.c rename to gcc/loop-doloop.c diff --git a/contrib/gcc/loop-init.c b/gcc/loop-init.c similarity index 100% rename from contrib/gcc/loop-init.c rename to gcc/loop-init.c diff --git a/contrib/gcc/loop-invariant.c b/gcc/loop-invariant.c similarity index 100% rename from contrib/gcc/loop-invariant.c rename to gcc/loop-invariant.c diff --git a/contrib/gcc/loop-iv.c b/gcc/loop-iv.c similarity index 100% rename from contrib/gcc/loop-iv.c rename to gcc/loop-iv.c diff --git a/contrib/gcc/loop-unroll.c b/gcc/loop-unroll.c similarity index 100% rename from contrib/gcc/loop-unroll.c rename to gcc/loop-unroll.c diff --git a/contrib/gcc/loop-unswitch.c b/gcc/loop-unswitch.c similarity index 100% rename from contrib/gcc/loop-unswitch.c rename to gcc/loop-unswitch.c diff --git a/contrib/gcc/machmode.def b/gcc/machmode.def similarity index 100% rename from contrib/gcc/machmode.def rename to gcc/machmode.def diff --git a/contrib/gcc/machmode.h b/gcc/machmode.h similarity index 100% rename from contrib/gcc/machmode.h rename to gcc/machmode.h diff --git a/contrib/gcc/main.c b/gcc/main.c similarity index 100% rename from contrib/gcc/main.c rename to gcc/main.c diff --git a/contrib/gcc/mips-tdump.c b/gcc/mips-tdump.c similarity index 100% rename from contrib/gcc/mips-tdump.c rename to gcc/mips-tdump.c diff --git a/contrib/gcc/mips-tfile.c b/gcc/mips-tfile.c similarity index 100% rename from contrib/gcc/mips-tfile.c rename to gcc/mips-tfile.c diff --git a/contrib/gcc/mkconfig.sh b/gcc/mkconfig.sh similarity index 100% rename from contrib/gcc/mkconfig.sh rename to gcc/mkconfig.sh diff --git a/contrib/gcc/mklibgcc.in b/gcc/mklibgcc.in similarity index 100% rename from contrib/gcc/mklibgcc.in rename to gcc/mklibgcc.in diff --git a/contrib/gcc/mkmap-flat.awk b/gcc/mkmap-flat.awk similarity index 100% rename from contrib/gcc/mkmap-flat.awk rename to gcc/mkmap-flat.awk diff --git a/contrib/gcc/mkmap-symver.awk b/gcc/mkmap-symver.awk similarity index 100% rename from contrib/gcc/mkmap-symver.awk rename to gcc/mkmap-symver.awk diff --git a/contrib/gcc/mode-classes.def b/gcc/mode-classes.def similarity index 100% rename from contrib/gcc/mode-classes.def rename to gcc/mode-classes.def diff --git a/contrib/gcc/mode-switching.c b/gcc/mode-switching.c similarity index 100% rename from contrib/gcc/mode-switching.c rename to gcc/mode-switching.c diff --git a/contrib/gcc/modulo-sched.c b/gcc/modulo-sched.c similarity index 100% rename from contrib/gcc/modulo-sched.c rename to gcc/modulo-sched.c diff --git a/contrib/gcc/objc/ChangeLog b/gcc/objc/ChangeLog similarity index 100% rename from contrib/gcc/objc/ChangeLog rename to gcc/objc/ChangeLog diff --git a/contrib/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in similarity index 100% rename from contrib/gcc/objc/Make-lang.in rename to gcc/objc/Make-lang.in diff --git a/contrib/gcc/objc/README b/gcc/objc/README similarity index 100% rename from contrib/gcc/objc/README rename to gcc/objc/README diff --git a/contrib/gcc/objc/config-lang.in b/gcc/objc/config-lang.in similarity index 100% rename from contrib/gcc/objc/config-lang.in rename to gcc/objc/config-lang.in diff --git a/contrib/gcc/objc/lang-specs.h b/gcc/objc/lang-specs.h similarity index 100% rename from contrib/gcc/objc/lang-specs.h rename to gcc/objc/lang-specs.h diff --git a/contrib/gcc/objc/objc-act.c b/gcc/objc/objc-act.c similarity index 100% rename from contrib/gcc/objc/objc-act.c rename to gcc/objc/objc-act.c diff --git a/contrib/gcc/objc/objc-act.h b/gcc/objc/objc-act.h similarity index 100% rename from contrib/gcc/objc/objc-act.h rename to gcc/objc/objc-act.h diff --git a/contrib/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c similarity index 100% rename from contrib/gcc/objc/objc-lang.c rename to gcc/objc/objc-lang.c diff --git a/contrib/gcc/objc/objc-tree.def b/gcc/objc/objc-tree.def similarity index 100% rename from contrib/gcc/objc/objc-tree.def rename to gcc/objc/objc-tree.def diff --git a/contrib/gcc/omp-builtins.def b/gcc/omp-builtins.def similarity index 100% rename from contrib/gcc/omp-builtins.def rename to gcc/omp-builtins.def diff --git a/contrib/gcc/omp-low.c b/gcc/omp-low.c similarity index 100% rename from contrib/gcc/omp-low.c rename to gcc/omp-low.c diff --git a/contrib/gcc/opt-functions.awk b/gcc/opt-functions.awk similarity index 100% rename from contrib/gcc/opt-functions.awk rename to gcc/opt-functions.awk diff --git a/contrib/gcc/opt-gather.awk b/gcc/opt-gather.awk similarity index 100% rename from contrib/gcc/opt-gather.awk rename to gcc/opt-gather.awk diff --git a/contrib/gcc/optabs.c b/gcc/optabs.c similarity index 100% rename from contrib/gcc/optabs.c rename to gcc/optabs.c diff --git a/contrib/gcc/optabs.h b/gcc/optabs.h similarity index 100% rename from contrib/gcc/optabs.h rename to gcc/optabs.h diff --git a/contrib/gcc/optc-gen.awk b/gcc/optc-gen.awk similarity index 100% rename from contrib/gcc/optc-gen.awk rename to gcc/optc-gen.awk diff --git a/contrib/gcc/opth-gen.awk b/gcc/opth-gen.awk similarity index 100% rename from contrib/gcc/opth-gen.awk rename to gcc/opth-gen.awk diff --git a/contrib/gcc/opts-common.c b/gcc/opts-common.c similarity index 100% rename from contrib/gcc/opts-common.c rename to gcc/opts-common.c diff --git a/contrib/gcc/opts.c b/gcc/opts.c similarity index 100% rename from contrib/gcc/opts.c rename to gcc/opts.c diff --git a/contrib/gcc/opts.h b/gcc/opts.h similarity index 100% rename from contrib/gcc/opts.h rename to gcc/opts.h diff --git a/contrib/gcc/output.h b/gcc/output.h similarity index 100% rename from contrib/gcc/output.h rename to gcc/output.h diff --git a/contrib/gcc/params.c b/gcc/params.c similarity index 100% rename from contrib/gcc/params.c rename to gcc/params.c diff --git a/contrib/gcc/params.def b/gcc/params.def similarity index 100% rename from contrib/gcc/params.def rename to gcc/params.def diff --git a/contrib/gcc/params.h b/gcc/params.h similarity index 100% rename from contrib/gcc/params.h rename to gcc/params.h diff --git a/contrib/gcc/passes.c b/gcc/passes.c similarity index 100% rename from contrib/gcc/passes.c rename to gcc/passes.c diff --git a/contrib/gcc/pointer-set.c b/gcc/pointer-set.c similarity index 100% rename from contrib/gcc/pointer-set.c rename to gcc/pointer-set.c diff --git a/contrib/gcc/pointer-set.h b/gcc/pointer-set.h similarity index 100% rename from contrib/gcc/pointer-set.h rename to gcc/pointer-set.h diff --git a/contrib/gcc/postreload-gcse.c b/gcc/postreload-gcse.c similarity index 100% rename from contrib/gcc/postreload-gcse.c rename to gcc/postreload-gcse.c diff --git a/contrib/gcc/postreload.c b/gcc/postreload.c similarity index 100% rename from contrib/gcc/postreload.c rename to gcc/postreload.c diff --git a/contrib/gcc/predict.c b/gcc/predict.c similarity index 100% rename from contrib/gcc/predict.c rename to gcc/predict.c diff --git a/contrib/gcc/predict.def b/gcc/predict.def similarity index 100% rename from contrib/gcc/predict.def rename to gcc/predict.def diff --git a/contrib/gcc/predict.h b/gcc/predict.h similarity index 100% rename from contrib/gcc/predict.h rename to gcc/predict.h diff --git a/contrib/gcc/prefix.c b/gcc/prefix.c similarity index 100% rename from contrib/gcc/prefix.c rename to gcc/prefix.c diff --git a/contrib/gcc/prefix.h b/gcc/prefix.h similarity index 100% rename from contrib/gcc/prefix.h rename to gcc/prefix.h diff --git a/contrib/gcc/pretty-print.c b/gcc/pretty-print.c similarity index 100% rename from contrib/gcc/pretty-print.c rename to gcc/pretty-print.c diff --git a/contrib/gcc/pretty-print.h b/gcc/pretty-print.h similarity index 100% rename from contrib/gcc/pretty-print.h rename to gcc/pretty-print.h diff --git a/contrib/gcc/print-rtl.c b/gcc/print-rtl.c similarity index 100% rename from contrib/gcc/print-rtl.c rename to gcc/print-rtl.c diff --git a/contrib/gcc/print-tree.c b/gcc/print-tree.c similarity index 100% rename from contrib/gcc/print-tree.c rename to gcc/print-tree.c diff --git a/contrib/gcc/profile.c b/gcc/profile.c similarity index 100% rename from contrib/gcc/profile.c rename to gcc/profile.c diff --git a/contrib/gcc/protoize.c b/gcc/protoize.c similarity index 100% rename from contrib/gcc/protoize.c rename to gcc/protoize.c diff --git a/contrib/gcc/read-rtl.c b/gcc/read-rtl.c similarity index 100% rename from contrib/gcc/read-rtl.c rename to gcc/read-rtl.c diff --git a/contrib/gcc/real.c b/gcc/real.c similarity index 100% rename from contrib/gcc/real.c rename to gcc/real.c diff --git a/contrib/gcc/real.h b/gcc/real.h similarity index 100% rename from contrib/gcc/real.h rename to gcc/real.h diff --git a/contrib/gcc/recog.c b/gcc/recog.c similarity index 100% rename from contrib/gcc/recog.c rename to gcc/recog.c diff --git a/contrib/gcc/recog.h b/gcc/recog.h similarity index 100% rename from contrib/gcc/recog.h rename to gcc/recog.h diff --git a/contrib/gcc/reg-notes.def b/gcc/reg-notes.def similarity index 100% rename from contrib/gcc/reg-notes.def rename to gcc/reg-notes.def diff --git a/contrib/gcc/reg-stack.c b/gcc/reg-stack.c similarity index 100% rename from contrib/gcc/reg-stack.c rename to gcc/reg-stack.c diff --git a/contrib/gcc/regclass.c b/gcc/regclass.c similarity index 100% rename from contrib/gcc/regclass.c rename to gcc/regclass.c diff --git a/contrib/gcc/regmove.c b/gcc/regmove.c similarity index 100% rename from contrib/gcc/regmove.c rename to gcc/regmove.c diff --git a/contrib/gcc/regrename.c b/gcc/regrename.c similarity index 100% rename from contrib/gcc/regrename.c rename to gcc/regrename.c diff --git a/contrib/gcc/regs.h b/gcc/regs.h similarity index 100% rename from contrib/gcc/regs.h rename to gcc/regs.h diff --git a/contrib/gcc/reload.c b/gcc/reload.c similarity index 100% rename from contrib/gcc/reload.c rename to gcc/reload.c diff --git a/contrib/gcc/reload.h b/gcc/reload.h similarity index 100% rename from contrib/gcc/reload.h rename to gcc/reload.h diff --git a/contrib/gcc/reload1.c b/gcc/reload1.c similarity index 100% rename from contrib/gcc/reload1.c rename to gcc/reload1.c diff --git a/contrib/gcc/reorg.c b/gcc/reorg.c similarity index 100% rename from contrib/gcc/reorg.c rename to gcc/reorg.c diff --git a/contrib/gcc/resource.c b/gcc/resource.c similarity index 100% rename from contrib/gcc/resource.c rename to gcc/resource.c diff --git a/contrib/gcc/resource.h b/gcc/resource.h similarity index 100% rename from contrib/gcc/resource.h rename to gcc/resource.h diff --git a/contrib/gcc/rtl-error.c b/gcc/rtl-error.c similarity index 100% rename from contrib/gcc/rtl-error.c rename to gcc/rtl-error.c diff --git a/contrib/gcc/rtl-factoring.c b/gcc/rtl-factoring.c similarity index 100% rename from contrib/gcc/rtl-factoring.c rename to gcc/rtl-factoring.c diff --git a/contrib/gcc/rtl.c b/gcc/rtl.c similarity index 100% rename from contrib/gcc/rtl.c rename to gcc/rtl.c diff --git a/contrib/gcc/rtl.def b/gcc/rtl.def similarity index 100% rename from contrib/gcc/rtl.def rename to gcc/rtl.def diff --git a/contrib/gcc/rtl.h b/gcc/rtl.h similarity index 100% rename from contrib/gcc/rtl.h rename to gcc/rtl.h diff --git a/contrib/gcc/rtlanal.c b/gcc/rtlanal.c similarity index 100% rename from contrib/gcc/rtlanal.c rename to gcc/rtlanal.c diff --git a/contrib/gcc/rtlhooks-def.h b/gcc/rtlhooks-def.h similarity index 100% rename from contrib/gcc/rtlhooks-def.h rename to gcc/rtlhooks-def.h diff --git a/contrib/gcc/rtlhooks.c b/gcc/rtlhooks.c similarity index 100% rename from contrib/gcc/rtlhooks.c rename to gcc/rtlhooks.c diff --git a/contrib/gcc/sbitmap.c b/gcc/sbitmap.c similarity index 100% rename from contrib/gcc/sbitmap.c rename to gcc/sbitmap.c diff --git a/contrib/gcc/sbitmap.h b/gcc/sbitmap.h similarity index 100% rename from contrib/gcc/sbitmap.h rename to gcc/sbitmap.h diff --git a/contrib/gcc/scan-decls.c b/gcc/scan-decls.c similarity index 100% rename from contrib/gcc/scan-decls.c rename to gcc/scan-decls.c diff --git a/contrib/gcc/scan-types.sh b/gcc/scan-types.sh similarity index 100% rename from contrib/gcc/scan-types.sh rename to gcc/scan-types.sh diff --git a/contrib/gcc/scan.c b/gcc/scan.c similarity index 100% rename from contrib/gcc/scan.c rename to gcc/scan.c diff --git a/contrib/gcc/scan.h b/gcc/scan.h similarity index 100% rename from contrib/gcc/scan.h rename to gcc/scan.h diff --git a/contrib/gcc/sched-deps.c b/gcc/sched-deps.c similarity index 100% rename from contrib/gcc/sched-deps.c rename to gcc/sched-deps.c diff --git a/contrib/gcc/sched-ebb.c b/gcc/sched-ebb.c similarity index 100% rename from contrib/gcc/sched-ebb.c rename to gcc/sched-ebb.c diff --git a/contrib/gcc/sched-int.h b/gcc/sched-int.h similarity index 100% rename from contrib/gcc/sched-int.h rename to gcc/sched-int.h diff --git a/contrib/gcc/sched-rgn.c b/gcc/sched-rgn.c similarity index 100% rename from contrib/gcc/sched-rgn.c rename to gcc/sched-rgn.c diff --git a/contrib/gcc/sched-vis.c b/gcc/sched-vis.c similarity index 100% rename from contrib/gcc/sched-vis.c rename to gcc/sched-vis.c diff --git a/contrib/gcc/sdbout.c b/gcc/sdbout.c similarity index 100% rename from contrib/gcc/sdbout.c rename to gcc/sdbout.c diff --git a/contrib/gcc/sdbout.h b/gcc/sdbout.h similarity index 100% rename from contrib/gcc/sdbout.h rename to gcc/sdbout.h diff --git a/contrib/gcc/see.c b/gcc/see.c similarity index 100% rename from contrib/gcc/see.c rename to gcc/see.c diff --git a/contrib/gcc/simplify-rtx.c b/gcc/simplify-rtx.c similarity index 100% rename from contrib/gcc/simplify-rtx.c rename to gcc/simplify-rtx.c diff --git a/contrib/gcc/sort-protos b/gcc/sort-protos similarity index 100% rename from contrib/gcc/sort-protos rename to gcc/sort-protos diff --git a/contrib/gcc/sreal.c b/gcc/sreal.c similarity index 100% rename from contrib/gcc/sreal.c rename to gcc/sreal.c diff --git a/contrib/gcc/sreal.h b/gcc/sreal.h similarity index 100% rename from contrib/gcc/sreal.h rename to gcc/sreal.h diff --git a/contrib/gcc/stab.def b/gcc/stab.def similarity index 100% rename from contrib/gcc/stab.def rename to gcc/stab.def diff --git a/contrib/gcc/statistics.h b/gcc/statistics.h similarity index 100% rename from contrib/gcc/statistics.h rename to gcc/statistics.h diff --git a/contrib/gcc/stmt.c b/gcc/stmt.c similarity index 100% rename from contrib/gcc/stmt.c rename to gcc/stmt.c diff --git a/contrib/gcc/stor-layout.c b/gcc/stor-layout.c similarity index 100% rename from contrib/gcc/stor-layout.c rename to gcc/stor-layout.c diff --git a/contrib/gcc/stringpool.c b/gcc/stringpool.c similarity index 100% rename from contrib/gcc/stringpool.c rename to gcc/stringpool.c diff --git a/contrib/gcc/struct-equiv.c b/gcc/struct-equiv.c similarity index 100% rename from contrib/gcc/struct-equiv.c rename to gcc/struct-equiv.c diff --git a/contrib/gcc/stub-objc.c b/gcc/stub-objc.c similarity index 100% rename from contrib/gcc/stub-objc.c rename to gcc/stub-objc.c diff --git a/contrib/gcc/sync-builtins.def b/gcc/sync-builtins.def similarity index 100% rename from contrib/gcc/sync-builtins.def rename to gcc/sync-builtins.def diff --git a/contrib/gcc/sys-protos.h b/gcc/sys-protos.h similarity index 100% rename from contrib/gcc/sys-protos.h rename to gcc/sys-protos.h diff --git a/contrib/gcc/sys-types.h b/gcc/sys-types.h similarity index 100% rename from contrib/gcc/sys-types.h rename to gcc/sys-types.h diff --git a/contrib/gcc/system.h b/gcc/system.h similarity index 100% rename from contrib/gcc/system.h rename to gcc/system.h diff --git a/contrib/gcc/target-def.h b/gcc/target-def.h similarity index 100% rename from contrib/gcc/target-def.h rename to gcc/target-def.h diff --git a/contrib/gcc/target.h b/gcc/target.h similarity index 100% rename from contrib/gcc/target.h rename to gcc/target.h diff --git a/contrib/gcc/targhooks.c b/gcc/targhooks.c similarity index 100% rename from contrib/gcc/targhooks.c rename to gcc/targhooks.c diff --git a/contrib/gcc/targhooks.h b/gcc/targhooks.h similarity index 100% rename from contrib/gcc/targhooks.h rename to gcc/targhooks.h diff --git a/contrib/gcc/timevar.c b/gcc/timevar.c similarity index 100% rename from contrib/gcc/timevar.c rename to gcc/timevar.c diff --git a/contrib/gcc/timevar.def b/gcc/timevar.def similarity index 100% rename from contrib/gcc/timevar.def rename to gcc/timevar.def diff --git a/contrib/gcc/timevar.h b/gcc/timevar.h similarity index 100% rename from contrib/gcc/timevar.h rename to gcc/timevar.h diff --git a/contrib/gcc/tlink.c b/gcc/tlink.c similarity index 100% rename from contrib/gcc/tlink.c rename to gcc/tlink.c diff --git a/contrib/gcc/toplev.c b/gcc/toplev.c similarity index 100% rename from contrib/gcc/toplev.c rename to gcc/toplev.c diff --git a/contrib/gcc/toplev.h b/gcc/toplev.h similarity index 100% rename from contrib/gcc/toplev.h rename to gcc/toplev.h diff --git a/contrib/gcc/tracer.c b/gcc/tracer.c similarity index 100% rename from contrib/gcc/tracer.c rename to gcc/tracer.c diff --git a/contrib/gcc/tree-browser.c b/gcc/tree-browser.c similarity index 100% rename from contrib/gcc/tree-browser.c rename to gcc/tree-browser.c diff --git a/contrib/gcc/tree-browser.def b/gcc/tree-browser.def similarity index 100% rename from contrib/gcc/tree-browser.def rename to gcc/tree-browser.def diff --git a/contrib/gcc/tree-cfg.c b/gcc/tree-cfg.c similarity index 100% rename from contrib/gcc/tree-cfg.c rename to gcc/tree-cfg.c diff --git a/contrib/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c similarity index 100% rename from contrib/gcc/tree-cfgcleanup.c rename to gcc/tree-cfgcleanup.c diff --git a/contrib/gcc/tree-chrec.c b/gcc/tree-chrec.c similarity index 100% rename from contrib/gcc/tree-chrec.c rename to gcc/tree-chrec.c diff --git a/contrib/gcc/tree-chrec.h b/gcc/tree-chrec.h similarity index 100% rename from contrib/gcc/tree-chrec.h rename to gcc/tree-chrec.h diff --git a/contrib/gcc/tree-complex.c b/gcc/tree-complex.c similarity index 100% rename from contrib/gcc/tree-complex.c rename to gcc/tree-complex.c diff --git a/contrib/gcc/tree-data-ref.c b/gcc/tree-data-ref.c similarity index 100% rename from contrib/gcc/tree-data-ref.c rename to gcc/tree-data-ref.c diff --git a/contrib/gcc/tree-data-ref.h b/gcc/tree-data-ref.h similarity index 100% rename from contrib/gcc/tree-data-ref.h rename to gcc/tree-data-ref.h diff --git a/contrib/gcc/tree-dfa.c b/gcc/tree-dfa.c similarity index 100% rename from contrib/gcc/tree-dfa.c rename to gcc/tree-dfa.c diff --git a/contrib/gcc/tree-dump.c b/gcc/tree-dump.c similarity index 100% rename from contrib/gcc/tree-dump.c rename to gcc/tree-dump.c diff --git a/contrib/gcc/tree-dump.h b/gcc/tree-dump.h similarity index 100% rename from contrib/gcc/tree-dump.h rename to gcc/tree-dump.h diff --git a/contrib/gcc/tree-eh.c b/gcc/tree-eh.c similarity index 100% rename from contrib/gcc/tree-eh.c rename to gcc/tree-eh.c diff --git a/contrib/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h similarity index 100% rename from contrib/gcc/tree-flow-inline.h rename to gcc/tree-flow-inline.h diff --git a/contrib/gcc/tree-flow.h b/gcc/tree-flow.h similarity index 100% rename from contrib/gcc/tree-flow.h rename to gcc/tree-flow.h diff --git a/contrib/gcc/tree-gimple.c b/gcc/tree-gimple.c similarity index 100% rename from contrib/gcc/tree-gimple.c rename to gcc/tree-gimple.c diff --git a/contrib/gcc/tree-gimple.h b/gcc/tree-gimple.h similarity index 100% rename from contrib/gcc/tree-gimple.h rename to gcc/tree-gimple.h diff --git a/contrib/gcc/tree-if-conv.c b/gcc/tree-if-conv.c similarity index 100% rename from contrib/gcc/tree-if-conv.c rename to gcc/tree-if-conv.c diff --git a/contrib/gcc/tree-inline.c b/gcc/tree-inline.c similarity index 100% rename from contrib/gcc/tree-inline.c rename to gcc/tree-inline.c diff --git a/contrib/gcc/tree-inline.h b/gcc/tree-inline.h similarity index 100% rename from contrib/gcc/tree-inline.h rename to gcc/tree-inline.h diff --git a/contrib/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c similarity index 100% rename from contrib/gcc/tree-into-ssa.c rename to gcc/tree-into-ssa.c diff --git a/contrib/gcc/tree-iterator.c b/gcc/tree-iterator.c similarity index 100% rename from contrib/gcc/tree-iterator.c rename to gcc/tree-iterator.c diff --git a/contrib/gcc/tree-iterator.h b/gcc/tree-iterator.h similarity index 100% rename from contrib/gcc/tree-iterator.h rename to gcc/tree-iterator.h diff --git a/contrib/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c similarity index 100% rename from contrib/gcc/tree-loop-linear.c rename to gcc/tree-loop-linear.c diff --git a/contrib/gcc/tree-mudflap.c b/gcc/tree-mudflap.c similarity index 100% rename from contrib/gcc/tree-mudflap.c rename to gcc/tree-mudflap.c diff --git a/contrib/gcc/tree-mudflap.h b/gcc/tree-mudflap.h similarity index 100% rename from contrib/gcc/tree-mudflap.h rename to gcc/tree-mudflap.h diff --git a/contrib/gcc/tree-nested.c b/gcc/tree-nested.c similarity index 100% rename from contrib/gcc/tree-nested.c rename to gcc/tree-nested.c diff --git a/contrib/gcc/tree-nomudflap.c b/gcc/tree-nomudflap.c similarity index 100% rename from contrib/gcc/tree-nomudflap.c rename to gcc/tree-nomudflap.c diff --git a/contrib/gcc/tree-nrv.c b/gcc/tree-nrv.c similarity index 100% rename from contrib/gcc/tree-nrv.c rename to gcc/tree-nrv.c diff --git a/contrib/gcc/tree-object-size.c b/gcc/tree-object-size.c similarity index 100% rename from contrib/gcc/tree-object-size.c rename to gcc/tree-object-size.c diff --git a/contrib/gcc/tree-optimize.c b/gcc/tree-optimize.c similarity index 100% rename from contrib/gcc/tree-optimize.c rename to gcc/tree-optimize.c diff --git a/contrib/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c similarity index 100% rename from contrib/gcc/tree-outof-ssa.c rename to gcc/tree-outof-ssa.c diff --git a/contrib/gcc/tree-pass.h b/gcc/tree-pass.h similarity index 100% rename from contrib/gcc/tree-pass.h rename to gcc/tree-pass.h diff --git a/contrib/gcc/tree-phinodes.c b/gcc/tree-phinodes.c similarity index 100% rename from contrib/gcc/tree-phinodes.c rename to gcc/tree-phinodes.c diff --git a/contrib/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c similarity index 100% rename from contrib/gcc/tree-pretty-print.c rename to gcc/tree-pretty-print.c diff --git a/contrib/gcc/tree-profile.c b/gcc/tree-profile.c similarity index 100% rename from contrib/gcc/tree-profile.c rename to gcc/tree-profile.c diff --git a/contrib/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c similarity index 100% rename from contrib/gcc/tree-scalar-evolution.c rename to gcc/tree-scalar-evolution.c diff --git a/contrib/gcc/tree-scalar-evolution.h b/gcc/tree-scalar-evolution.h similarity index 100% rename from contrib/gcc/tree-scalar-evolution.h rename to gcc/tree-scalar-evolution.h diff --git a/contrib/gcc/tree-sra.c b/gcc/tree-sra.c similarity index 100% rename from contrib/gcc/tree-sra.c rename to gcc/tree-sra.c diff --git a/contrib/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c similarity index 100% rename from contrib/gcc/tree-ssa-address.c rename to gcc/tree-ssa-address.c diff --git a/contrib/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c similarity index 100% rename from contrib/gcc/tree-ssa-alias.c rename to gcc/tree-ssa-alias.c diff --git a/contrib/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c similarity index 100% rename from contrib/gcc/tree-ssa-ccp.c rename to gcc/tree-ssa-ccp.c diff --git a/contrib/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c similarity index 100% rename from contrib/gcc/tree-ssa-copy.c rename to gcc/tree-ssa-copy.c diff --git a/contrib/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c similarity index 100% rename from contrib/gcc/tree-ssa-copyrename.c rename to gcc/tree-ssa-copyrename.c diff --git a/contrib/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c similarity index 100% rename from contrib/gcc/tree-ssa-dce.c rename to gcc/tree-ssa-dce.c diff --git a/contrib/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c similarity index 100% rename from contrib/gcc/tree-ssa-dom.c rename to gcc/tree-ssa-dom.c diff --git a/contrib/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c similarity index 100% rename from contrib/gcc/tree-ssa-dse.c rename to gcc/tree-ssa-dse.c diff --git a/contrib/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c similarity index 100% rename from contrib/gcc/tree-ssa-forwprop.c rename to gcc/tree-ssa-forwprop.c diff --git a/contrib/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c similarity index 100% rename from contrib/gcc/tree-ssa-live.c rename to gcc/tree-ssa-live.c diff --git a/contrib/gcc/tree-ssa-live.h b/gcc/tree-ssa-live.h similarity index 100% rename from contrib/gcc/tree-ssa-live.h rename to gcc/tree-ssa-live.h diff --git a/contrib/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-ch.c rename to gcc/tree-ssa-loop-ch.c diff --git a/contrib/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-im.c rename to gcc/tree-ssa-loop-im.c diff --git a/contrib/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-ivcanon.c rename to gcc/tree-ssa-loop-ivcanon.c diff --git a/contrib/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-ivopts.c rename to gcc/tree-ssa-loop-ivopts.c diff --git a/contrib/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-manip.c rename to gcc/tree-ssa-loop-manip.c diff --git a/contrib/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-niter.c rename to gcc/tree-ssa-loop-niter.c diff --git a/contrib/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-prefetch.c rename to gcc/tree-ssa-loop-prefetch.c diff --git a/contrib/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c similarity index 100% rename from contrib/gcc/tree-ssa-loop-unswitch.c rename to gcc/tree-ssa-loop-unswitch.c diff --git a/contrib/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c similarity index 100% rename from contrib/gcc/tree-ssa-loop.c rename to gcc/tree-ssa-loop.c diff --git a/contrib/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c similarity index 100% rename from contrib/gcc/tree-ssa-math-opts.c rename to gcc/tree-ssa-math-opts.c diff --git a/contrib/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c similarity index 100% rename from contrib/gcc/tree-ssa-operands.c rename to gcc/tree-ssa-operands.c diff --git a/contrib/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h similarity index 100% rename from contrib/gcc/tree-ssa-operands.h rename to gcc/tree-ssa-operands.h diff --git a/contrib/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c similarity index 100% rename from contrib/gcc/tree-ssa-phiopt.c rename to gcc/tree-ssa-phiopt.c diff --git a/contrib/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c similarity index 100% rename from contrib/gcc/tree-ssa-pre.c rename to gcc/tree-ssa-pre.c diff --git a/contrib/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c similarity index 100% rename from contrib/gcc/tree-ssa-propagate.c rename to gcc/tree-ssa-propagate.c diff --git a/contrib/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h similarity index 100% rename from contrib/gcc/tree-ssa-propagate.h rename to gcc/tree-ssa-propagate.h diff --git a/contrib/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c similarity index 100% rename from contrib/gcc/tree-ssa-reassoc.c rename to gcc/tree-ssa-reassoc.c diff --git a/contrib/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c similarity index 100% rename from contrib/gcc/tree-ssa-sink.c rename to gcc/tree-ssa-sink.c diff --git a/contrib/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c similarity index 100% rename from contrib/gcc/tree-ssa-structalias.c rename to gcc/tree-ssa-structalias.c diff --git a/contrib/gcc/tree-ssa-structalias.h b/gcc/tree-ssa-structalias.h similarity index 100% rename from contrib/gcc/tree-ssa-structalias.h rename to gcc/tree-ssa-structalias.h diff --git a/contrib/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c similarity index 100% rename from contrib/gcc/tree-ssa-threadedge.c rename to gcc/tree-ssa-threadedge.c diff --git a/contrib/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c similarity index 100% rename from contrib/gcc/tree-ssa-threadupdate.c rename to gcc/tree-ssa-threadupdate.c diff --git a/contrib/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c similarity index 100% rename from contrib/gcc/tree-ssa-uncprop.c rename to gcc/tree-ssa-uncprop.c diff --git a/contrib/gcc/tree-ssa.c b/gcc/tree-ssa.c similarity index 100% rename from contrib/gcc/tree-ssa.c rename to gcc/tree-ssa.c diff --git a/contrib/gcc/tree-ssanames.c b/gcc/tree-ssanames.c similarity index 100% rename from contrib/gcc/tree-ssanames.c rename to gcc/tree-ssanames.c diff --git a/contrib/gcc/tree-stdarg.c b/gcc/tree-stdarg.c similarity index 100% rename from contrib/gcc/tree-stdarg.c rename to gcc/tree-stdarg.c diff --git a/contrib/gcc/tree-stdarg.h b/gcc/tree-stdarg.h similarity index 100% rename from contrib/gcc/tree-stdarg.h rename to gcc/tree-stdarg.h diff --git a/contrib/gcc/tree-tailcall.c b/gcc/tree-tailcall.c similarity index 100% rename from contrib/gcc/tree-tailcall.c rename to gcc/tree-tailcall.c diff --git a/contrib/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c similarity index 100% rename from contrib/gcc/tree-vect-analyze.c rename to gcc/tree-vect-analyze.c diff --git a/contrib/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c similarity index 100% rename from contrib/gcc/tree-vect-generic.c rename to gcc/tree-vect-generic.c diff --git a/contrib/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c similarity index 100% rename from contrib/gcc/tree-vect-patterns.c rename to gcc/tree-vect-patterns.c diff --git a/contrib/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c similarity index 100% rename from contrib/gcc/tree-vect-transform.c rename to gcc/tree-vect-transform.c diff --git a/contrib/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c similarity index 100% rename from contrib/gcc/tree-vectorizer.c rename to gcc/tree-vectorizer.c diff --git a/contrib/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h similarity index 100% rename from contrib/gcc/tree-vectorizer.h rename to gcc/tree-vectorizer.h diff --git a/contrib/gcc/tree-vn.c b/gcc/tree-vn.c similarity index 100% rename from contrib/gcc/tree-vn.c rename to gcc/tree-vn.c diff --git a/contrib/gcc/tree-vrp.c b/gcc/tree-vrp.c similarity index 100% rename from contrib/gcc/tree-vrp.c rename to gcc/tree-vrp.c diff --git a/contrib/gcc/tree.c b/gcc/tree.c similarity index 100% rename from contrib/gcc/tree.c rename to gcc/tree.c diff --git a/contrib/gcc/tree.def b/gcc/tree.def similarity index 100% rename from contrib/gcc/tree.def rename to gcc/tree.def diff --git a/contrib/gcc/tree.h b/gcc/tree.h similarity index 100% rename from contrib/gcc/tree.h rename to gcc/tree.h diff --git a/contrib/gcc/treestruct.def b/gcc/treestruct.def similarity index 100% rename from contrib/gcc/treestruct.def rename to gcc/treestruct.def diff --git a/contrib/gcc/tsystem.h b/gcc/tsystem.h similarity index 100% rename from contrib/gcc/tsystem.h rename to gcc/tsystem.h diff --git a/contrib/gcc/typeclass.h b/gcc/typeclass.h similarity index 100% rename from contrib/gcc/typeclass.h rename to gcc/typeclass.h diff --git a/contrib/gcc/unwind-c.c b/gcc/unwind-c.c similarity index 100% rename from contrib/gcc/unwind-c.c rename to gcc/unwind-c.c diff --git a/contrib/gcc/unwind-compat.c b/gcc/unwind-compat.c similarity index 100% rename from contrib/gcc/unwind-compat.c rename to gcc/unwind-compat.c diff --git a/contrib/gcc/unwind-compat.h b/gcc/unwind-compat.h similarity index 100% rename from contrib/gcc/unwind-compat.h rename to gcc/unwind-compat.h diff --git a/contrib/gcc/unwind-dw2-fde-compat.c b/gcc/unwind-dw2-fde-compat.c similarity index 100% rename from contrib/gcc/unwind-dw2-fde-compat.c rename to gcc/unwind-dw2-fde-compat.c diff --git a/contrib/gcc/unwind-dw2-fde-darwin.c b/gcc/unwind-dw2-fde-darwin.c similarity index 100% rename from contrib/gcc/unwind-dw2-fde-darwin.c rename to gcc/unwind-dw2-fde-darwin.c diff --git a/contrib/gcc/unwind-dw2-fde-glibc.c b/gcc/unwind-dw2-fde-glibc.c similarity index 100% rename from contrib/gcc/unwind-dw2-fde-glibc.c rename to gcc/unwind-dw2-fde-glibc.c diff --git a/contrib/gcc/unwind-dw2-fde.c b/gcc/unwind-dw2-fde.c similarity index 100% rename from contrib/gcc/unwind-dw2-fde.c rename to gcc/unwind-dw2-fde.c diff --git a/contrib/gcc/unwind-dw2-fde.h b/gcc/unwind-dw2-fde.h similarity index 100% rename from contrib/gcc/unwind-dw2-fde.h rename to gcc/unwind-dw2-fde.h diff --git a/contrib/gcc/unwind-dw2.c b/gcc/unwind-dw2.c similarity index 100% rename from contrib/gcc/unwind-dw2.c rename to gcc/unwind-dw2.c diff --git a/contrib/gcc/unwind-dw2.h b/gcc/unwind-dw2.h similarity index 100% rename from contrib/gcc/unwind-dw2.h rename to gcc/unwind-dw2.h diff --git a/contrib/gcc/unwind-generic.h b/gcc/unwind-generic.h similarity index 100% rename from contrib/gcc/unwind-generic.h rename to gcc/unwind-generic.h diff --git a/contrib/gcc/unwind-pe.h b/gcc/unwind-pe.h similarity index 100% rename from contrib/gcc/unwind-pe.h rename to gcc/unwind-pe.h diff --git a/contrib/gcc/unwind-sjlj.c b/gcc/unwind-sjlj.c similarity index 100% rename from contrib/gcc/unwind-sjlj.c rename to gcc/unwind-sjlj.c diff --git a/contrib/gcc/unwind.inc b/gcc/unwind.inc similarity index 100% rename from contrib/gcc/unwind.inc rename to gcc/unwind.inc diff --git a/contrib/gcc/value-prof.c b/gcc/value-prof.c similarity index 100% rename from contrib/gcc/value-prof.c rename to gcc/value-prof.c diff --git a/contrib/gcc/value-prof.h b/gcc/value-prof.h similarity index 100% rename from contrib/gcc/value-prof.h rename to gcc/value-prof.h diff --git a/contrib/gcc/var-tracking.c b/gcc/var-tracking.c similarity index 100% rename from contrib/gcc/var-tracking.c rename to gcc/var-tracking.c diff --git a/contrib/gcc/varasm.c b/gcc/varasm.c similarity index 100% rename from contrib/gcc/varasm.c rename to gcc/varasm.c diff --git a/contrib/gcc/varray.c b/gcc/varray.c similarity index 100% rename from contrib/gcc/varray.c rename to gcc/varray.c diff --git a/contrib/gcc/varray.h b/gcc/varray.h similarity index 100% rename from contrib/gcc/varray.h rename to gcc/varray.h diff --git a/contrib/gcc/vec.c b/gcc/vec.c similarity index 100% rename from contrib/gcc/vec.c rename to gcc/vec.c diff --git a/contrib/gcc/vec.h b/gcc/vec.h similarity index 100% rename from contrib/gcc/vec.h rename to gcc/vec.h diff --git a/contrib/gcc/vecprim.h b/gcc/vecprim.h similarity index 100% rename from contrib/gcc/vecprim.h rename to gcc/vecprim.h diff --git a/contrib/gcc/version.c b/gcc/version.c similarity index 100% rename from contrib/gcc/version.c rename to gcc/version.c diff --git a/contrib/gcc/version.h b/gcc/version.h similarity index 100% rename from contrib/gcc/version.h rename to gcc/version.h diff --git a/contrib/gcc/vmsdbg.h b/gcc/vmsdbg.h similarity index 100% rename from contrib/gcc/vmsdbg.h rename to gcc/vmsdbg.h diff --git a/contrib/gcc/vmsdbgout.c b/gcc/vmsdbgout.c similarity index 100% rename from contrib/gcc/vmsdbgout.c rename to gcc/vmsdbgout.c diff --git a/contrib/gcc/web.c b/gcc/web.c similarity index 100% rename from contrib/gcc/web.c rename to gcc/web.c diff --git a/contrib/gcc/xcoff.h b/gcc/xcoff.h similarity index 100% rename from contrib/gcc/xcoff.h rename to gcc/xcoff.h diff --git a/contrib/gcc/xcoffout.c b/gcc/xcoffout.c similarity index 100% rename from contrib/gcc/xcoffout.c rename to gcc/xcoffout.c diff --git a/contrib/gcc/xcoffout.h b/gcc/xcoffout.h similarity index 100% rename from contrib/gcc/xcoffout.h rename to gcc/xcoffout.h diff --git a/contrib/gcclibs/include/COPYING b/include/COPYING similarity index 100% rename from contrib/gcclibs/include/COPYING rename to include/COPYING diff --git a/contrib/gcclibs/include/ChangeLog b/include/ChangeLog similarity index 100% rename from contrib/gcclibs/include/ChangeLog rename to include/ChangeLog diff --git a/contrib/gcclibs/include/ChangeLog-9103 b/include/ChangeLog-9103 similarity index 100% rename from contrib/gcclibs/include/ChangeLog-9103 rename to include/ChangeLog-9103 diff --git a/contrib/gcclibs/include/ansidecl.h b/include/ansidecl.h similarity index 100% rename from contrib/gcclibs/include/ansidecl.h rename to include/ansidecl.h diff --git a/contrib/gcclibs/include/demangle.h b/include/demangle.h similarity index 100% rename from contrib/gcclibs/include/demangle.h rename to include/demangle.h diff --git a/contrib/gcclibs/include/dyn-string.h b/include/dyn-string.h similarity index 100% rename from contrib/gcclibs/include/dyn-string.h rename to include/dyn-string.h diff --git a/contrib/gcclibs/include/fibheap.h b/include/fibheap.h similarity index 100% rename from contrib/gcclibs/include/fibheap.h rename to include/fibheap.h diff --git a/contrib/gcclibs/include/filenames.h b/include/filenames.h similarity index 100% rename from contrib/gcclibs/include/filenames.h rename to include/filenames.h diff --git a/contrib/gcclibs/include/floatformat.h b/include/floatformat.h similarity index 100% rename from contrib/gcclibs/include/floatformat.h rename to include/floatformat.h diff --git a/contrib/gcclibs/include/fnmatch.h b/include/fnmatch.h similarity index 100% rename from contrib/gcclibs/include/fnmatch.h rename to include/fnmatch.h diff --git a/contrib/gcclibs/include/getopt.h b/include/getopt.h similarity index 100% rename from contrib/gcclibs/include/getopt.h rename to include/getopt.h diff --git a/contrib/gcclibs/include/hashtab.h b/include/hashtab.h similarity index 100% rename from contrib/gcclibs/include/hashtab.h rename to include/hashtab.h diff --git a/contrib/gcclibs/include/libiberty.h b/include/libiberty.h similarity index 100% rename from contrib/gcclibs/include/libiberty.h rename to include/libiberty.h diff --git a/contrib/gcclibs/include/md5.h b/include/md5.h similarity index 100% rename from contrib/gcclibs/include/md5.h rename to include/md5.h diff --git a/contrib/gcclibs/include/objalloc.h b/include/objalloc.h similarity index 100% rename from contrib/gcclibs/include/objalloc.h rename to include/objalloc.h diff --git a/contrib/gcclibs/include/obstack.h b/include/obstack.h similarity index 100% rename from contrib/gcclibs/include/obstack.h rename to include/obstack.h diff --git a/contrib/gcclibs/include/partition.h b/include/partition.h similarity index 100% rename from contrib/gcclibs/include/partition.h rename to include/partition.h diff --git a/contrib/gcclibs/include/safe-ctype.h b/include/safe-ctype.h similarity index 100% rename from contrib/gcclibs/include/safe-ctype.h rename to include/safe-ctype.h diff --git a/contrib/gcclibs/include/sort.h b/include/sort.h similarity index 100% rename from contrib/gcclibs/include/sort.h rename to include/sort.h diff --git a/contrib/gcclibs/include/splay-tree.h b/include/splay-tree.h similarity index 100% rename from contrib/gcclibs/include/splay-tree.h rename to include/splay-tree.h diff --git a/contrib/gcclibs/include/symcat.h b/include/symcat.h similarity index 100% rename from contrib/gcclibs/include/symcat.h rename to include/symcat.h diff --git a/contrib/gcclibs/include/ternary.h b/include/ternary.h similarity index 100% rename from contrib/gcclibs/include/ternary.h rename to include/ternary.h diff --git a/contrib/gcclibs/include/xregex.h b/include/xregex.h similarity index 100% rename from contrib/gcclibs/include/xregex.h rename to include/xregex.h diff --git a/contrib/gcclibs/include/xregex2.h b/include/xregex2.h similarity index 100% rename from contrib/gcclibs/include/xregex2.h rename to include/xregex2.h diff --git a/contrib/gcclibs/include/xtensa-config.h b/include/xtensa-config.h similarity index 100% rename from contrib/gcclibs/include/xtensa-config.h rename to include/xtensa-config.h diff --git a/contrib/gcclibs/libcpp/ChangeLog b/libcpp/ChangeLog similarity index 100% rename from contrib/gcclibs/libcpp/ChangeLog rename to libcpp/ChangeLog diff --git a/contrib/gcclibs/libcpp/Makefile.in b/libcpp/Makefile.in similarity index 100% rename from contrib/gcclibs/libcpp/Makefile.in rename to libcpp/Makefile.in diff --git a/contrib/gcclibs/libcpp/aclocal.m4 b/libcpp/aclocal.m4 similarity index 100% rename from contrib/gcclibs/libcpp/aclocal.m4 rename to libcpp/aclocal.m4 diff --git a/contrib/gcclibs/libcpp/charset.c b/libcpp/charset.c similarity index 100% rename from contrib/gcclibs/libcpp/charset.c rename to libcpp/charset.c diff --git a/contrib/gcclibs/libcpp/config.in b/libcpp/config.in similarity index 100% rename from contrib/gcclibs/libcpp/config.in rename to libcpp/config.in diff --git a/contrib/gcclibs/libcpp/configure b/libcpp/configure similarity index 100% rename from contrib/gcclibs/libcpp/configure rename to libcpp/configure diff --git a/contrib/gcclibs/libcpp/configure.ac b/libcpp/configure.ac similarity index 100% rename from contrib/gcclibs/libcpp/configure.ac rename to libcpp/configure.ac diff --git a/contrib/gcclibs/libcpp/directives.c b/libcpp/directives.c similarity index 100% rename from contrib/gcclibs/libcpp/directives.c rename to libcpp/directives.c diff --git a/contrib/gcclibs/libcpp/errors.c b/libcpp/errors.c similarity index 100% rename from contrib/gcclibs/libcpp/errors.c rename to libcpp/errors.c diff --git a/contrib/gcclibs/libcpp/expr.c b/libcpp/expr.c similarity index 100% rename from contrib/gcclibs/libcpp/expr.c rename to libcpp/expr.c diff --git a/contrib/gcclibs/libcpp/files.c b/libcpp/files.c similarity index 100% rename from contrib/gcclibs/libcpp/files.c rename to libcpp/files.c diff --git a/contrib/gcclibs/libcpp/identifiers.c b/libcpp/identifiers.c similarity index 100% rename from contrib/gcclibs/libcpp/identifiers.c rename to libcpp/identifiers.c diff --git a/contrib/gcclibs/libcpp/include/cpp-id-data.h b/libcpp/include/cpp-id-data.h similarity index 100% rename from contrib/gcclibs/libcpp/include/cpp-id-data.h rename to libcpp/include/cpp-id-data.h diff --git a/contrib/gcclibs/libcpp/include/cpplib.h b/libcpp/include/cpplib.h similarity index 100% rename from contrib/gcclibs/libcpp/include/cpplib.h rename to libcpp/include/cpplib.h diff --git a/contrib/gcclibs/libcpp/include/line-map.h b/libcpp/include/line-map.h similarity index 100% rename from contrib/gcclibs/libcpp/include/line-map.h rename to libcpp/include/line-map.h diff --git a/contrib/gcclibs/libcpp/include/mkdeps.h b/libcpp/include/mkdeps.h similarity index 100% rename from contrib/gcclibs/libcpp/include/mkdeps.h rename to libcpp/include/mkdeps.h diff --git a/contrib/gcclibs/libcpp/include/symtab.h b/libcpp/include/symtab.h similarity index 100% rename from contrib/gcclibs/libcpp/include/symtab.h rename to libcpp/include/symtab.h diff --git a/contrib/gcclibs/libcpp/init.c b/libcpp/init.c similarity index 100% rename from contrib/gcclibs/libcpp/init.c rename to libcpp/init.c diff --git a/contrib/gcclibs/libcpp/internal.h b/libcpp/internal.h similarity index 100% rename from contrib/gcclibs/libcpp/internal.h rename to libcpp/internal.h diff --git a/contrib/gcclibs/libcpp/lex.c b/libcpp/lex.c similarity index 100% rename from contrib/gcclibs/libcpp/lex.c rename to libcpp/lex.c diff --git a/contrib/gcclibs/libcpp/line-map.c b/libcpp/line-map.c similarity index 100% rename from contrib/gcclibs/libcpp/line-map.c rename to libcpp/line-map.c diff --git a/contrib/gcclibs/libcpp/macro.c b/libcpp/macro.c similarity index 100% rename from contrib/gcclibs/libcpp/macro.c rename to libcpp/macro.c diff --git a/contrib/gcclibs/libcpp/makedepend.c b/libcpp/makedepend.c similarity index 100% rename from contrib/gcclibs/libcpp/makedepend.c rename to libcpp/makedepend.c diff --git a/contrib/gcclibs/libcpp/makeucnid.c b/libcpp/makeucnid.c similarity index 100% rename from contrib/gcclibs/libcpp/makeucnid.c rename to libcpp/makeucnid.c diff --git a/contrib/gcclibs/libcpp/mkdeps.c b/libcpp/mkdeps.c similarity index 100% rename from contrib/gcclibs/libcpp/mkdeps.c rename to libcpp/mkdeps.c diff --git a/contrib/gcclibs/libcpp/pch.c b/libcpp/pch.c similarity index 100% rename from contrib/gcclibs/libcpp/pch.c rename to libcpp/pch.c diff --git a/contrib/gcclibs/libcpp/symtab.c b/libcpp/symtab.c similarity index 100% rename from contrib/gcclibs/libcpp/symtab.c rename to libcpp/symtab.c diff --git a/contrib/gcclibs/libcpp/system.h b/libcpp/system.h similarity index 100% rename from contrib/gcclibs/libcpp/system.h rename to libcpp/system.h diff --git a/contrib/gcclibs/libcpp/traditional.c b/libcpp/traditional.c similarity index 100% rename from contrib/gcclibs/libcpp/traditional.c rename to libcpp/traditional.c diff --git a/contrib/gcclibs/libcpp/ucnid.h b/libcpp/ucnid.h similarity index 100% rename from contrib/gcclibs/libcpp/ucnid.h rename to libcpp/ucnid.h diff --git a/contrib/gcclibs/libcpp/ucnid.tab b/libcpp/ucnid.tab similarity index 100% rename from contrib/gcclibs/libcpp/ucnid.tab rename to libcpp/ucnid.tab diff --git a/contrib/gcclibs/libdecnumber/ChangeLog b/libdecnumber/ChangeLog similarity index 100% rename from contrib/gcclibs/libdecnumber/ChangeLog rename to libdecnumber/ChangeLog diff --git a/contrib/gcclibs/libdecnumber/Makefile.in b/libdecnumber/Makefile.in similarity index 100% rename from contrib/gcclibs/libdecnumber/Makefile.in rename to libdecnumber/Makefile.in diff --git a/contrib/gcclibs/libdecnumber/aclocal.m4 b/libdecnumber/aclocal.m4 similarity index 100% rename from contrib/gcclibs/libdecnumber/aclocal.m4 rename to libdecnumber/aclocal.m4 diff --git a/contrib/gcclibs/libdecnumber/config.in b/libdecnumber/config.in similarity index 100% rename from contrib/gcclibs/libdecnumber/config.in rename to libdecnumber/config.in diff --git a/contrib/gcclibs/libdecnumber/configure b/libdecnumber/configure similarity index 100% rename from contrib/gcclibs/libdecnumber/configure rename to libdecnumber/configure diff --git a/contrib/gcclibs/libdecnumber/configure.ac b/libdecnumber/configure.ac similarity index 100% rename from contrib/gcclibs/libdecnumber/configure.ac rename to libdecnumber/configure.ac diff --git a/contrib/gcclibs/libdecnumber/decContext.c b/libdecnumber/decContext.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decContext.c rename to libdecnumber/decContext.c diff --git a/contrib/gcclibs/libdecnumber/decContext.h b/libdecnumber/decContext.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decContext.h rename to libdecnumber/decContext.h diff --git a/contrib/gcclibs/libdecnumber/decDPD.h b/libdecnumber/decDPD.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decDPD.h rename to libdecnumber/decDPD.h diff --git a/contrib/gcclibs/libdecnumber/decLibrary.c b/libdecnumber/decLibrary.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decLibrary.c rename to libdecnumber/decLibrary.c diff --git a/contrib/gcclibs/libdecnumber/decNumber.c b/libdecnumber/decNumber.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decNumber.c rename to libdecnumber/decNumber.c diff --git a/contrib/gcclibs/libdecnumber/decNumber.h b/libdecnumber/decNumber.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decNumber.h rename to libdecnumber/decNumber.h diff --git a/contrib/gcclibs/libdecnumber/decNumberLocal.h b/libdecnumber/decNumberLocal.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decNumberLocal.h rename to libdecnumber/decNumberLocal.h diff --git a/contrib/gcclibs/libdecnumber/decRound.c b/libdecnumber/decRound.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decRound.c rename to libdecnumber/decRound.c diff --git a/contrib/gcclibs/libdecnumber/decUtility.c b/libdecnumber/decUtility.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decUtility.c rename to libdecnumber/decUtility.c diff --git a/contrib/gcclibs/libdecnumber/decUtility.h b/libdecnumber/decUtility.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decUtility.h rename to libdecnumber/decUtility.h diff --git a/contrib/gcclibs/libdecnumber/decimal128.c b/libdecnumber/decimal128.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decimal128.c rename to libdecnumber/decimal128.c diff --git a/contrib/gcclibs/libdecnumber/decimal128.h b/libdecnumber/decimal128.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decimal128.h rename to libdecnumber/decimal128.h diff --git a/contrib/gcclibs/libdecnumber/decimal32.c b/libdecnumber/decimal32.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decimal32.c rename to libdecnumber/decimal32.c diff --git a/contrib/gcclibs/libdecnumber/decimal32.h b/libdecnumber/decimal32.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decimal32.h rename to libdecnumber/decimal32.h diff --git a/contrib/gcclibs/libdecnumber/decimal64.c b/libdecnumber/decimal64.c similarity index 100% rename from contrib/gcclibs/libdecnumber/decimal64.c rename to libdecnumber/decimal64.c diff --git a/contrib/gcclibs/libdecnumber/decimal64.h b/libdecnumber/decimal64.h similarity index 100% rename from contrib/gcclibs/libdecnumber/decimal64.h rename to libdecnumber/decimal64.h diff --git a/contrib/libf2c/ChangeLog b/libf2c/ChangeLog similarity index 100% rename from contrib/libf2c/ChangeLog rename to libf2c/ChangeLog diff --git a/contrib/libf2c/Makefile.in b/libf2c/Makefile.in similarity index 100% rename from contrib/libf2c/Makefile.in rename to libf2c/Makefile.in diff --git a/contrib/libf2c/README b/libf2c/README similarity index 100% rename from contrib/libf2c/README rename to libf2c/README diff --git a/contrib/libf2c/TODO b/libf2c/TODO similarity index 100% rename from contrib/libf2c/TODO rename to libf2c/TODO diff --git a/contrib/libf2c/aclocal.m4 b/libf2c/aclocal.m4 similarity index 100% rename from contrib/libf2c/aclocal.m4 rename to libf2c/aclocal.m4 diff --git a/contrib/libf2c/changes.netlib b/libf2c/changes.netlib similarity index 100% rename from contrib/libf2c/changes.netlib rename to libf2c/changes.netlib diff --git a/contrib/libf2c/configure b/libf2c/configure similarity index 100% rename from contrib/libf2c/configure rename to libf2c/configure diff --git a/contrib/libf2c/configure.in b/libf2c/configure.in similarity index 100% rename from contrib/libf2c/configure.in rename to libf2c/configure.in diff --git a/contrib/libf2c/disclaimer.netlib b/libf2c/disclaimer.netlib similarity index 100% rename from contrib/libf2c/disclaimer.netlib rename to libf2c/disclaimer.netlib diff --git a/contrib/libf2c/f2c.h b/libf2c/f2c.h similarity index 100% rename from contrib/libf2c/f2c.h rename to libf2c/f2c.h diff --git a/contrib/libf2c/f2cext.c b/libf2c/f2cext.c similarity index 100% rename from contrib/libf2c/f2cext.c rename to libf2c/f2cext.c diff --git a/contrib/libf2c/g2c.hin b/libf2c/g2c.hin similarity index 100% rename from contrib/libf2c/g2c.hin rename to libf2c/g2c.hin diff --git a/contrib/libf2c/libF77/F77_aloc.c b/libf2c/libF77/F77_aloc.c similarity index 100% rename from contrib/libf2c/libF77/F77_aloc.c rename to libf2c/libF77/F77_aloc.c diff --git a/contrib/libf2c/libF77/Makefile.in b/libf2c/libF77/Makefile.in similarity index 100% rename from contrib/libf2c/libF77/Makefile.in rename to libf2c/libF77/Makefile.in diff --git a/contrib/libf2c/libF77/Notice b/libf2c/libF77/Notice similarity index 100% rename from contrib/libf2c/libF77/Notice rename to libf2c/libF77/Notice diff --git a/contrib/libf2c/libF77/README.netlib b/libf2c/libF77/README.netlib similarity index 100% rename from contrib/libf2c/libF77/README.netlib rename to libf2c/libF77/README.netlib diff --git a/contrib/libf2c/libF77/Version.c b/libf2c/libF77/Version.c similarity index 100% rename from contrib/libf2c/libF77/Version.c rename to libf2c/libF77/Version.c diff --git a/contrib/libf2c/libF77/abort_.c b/libf2c/libF77/abort_.c similarity index 100% rename from contrib/libf2c/libF77/abort_.c rename to libf2c/libF77/abort_.c diff --git a/contrib/libf2c/libF77/c_abs.c b/libf2c/libF77/c_abs.c similarity index 100% rename from contrib/libf2c/libF77/c_abs.c rename to libf2c/libF77/c_abs.c diff --git a/contrib/libf2c/libF77/c_cos.c b/libf2c/libF77/c_cos.c similarity index 100% rename from contrib/libf2c/libF77/c_cos.c rename to libf2c/libF77/c_cos.c diff --git a/contrib/libf2c/libF77/c_div.c b/libf2c/libF77/c_div.c similarity index 100% rename from contrib/libf2c/libF77/c_div.c rename to libf2c/libF77/c_div.c diff --git a/contrib/libf2c/libF77/c_exp.c b/libf2c/libF77/c_exp.c similarity index 100% rename from contrib/libf2c/libF77/c_exp.c rename to libf2c/libF77/c_exp.c diff --git a/contrib/libf2c/libF77/c_log.c b/libf2c/libF77/c_log.c similarity index 100% rename from contrib/libf2c/libF77/c_log.c rename to libf2c/libF77/c_log.c diff --git a/contrib/libf2c/libF77/c_sin.c b/libf2c/libF77/c_sin.c similarity index 100% rename from contrib/libf2c/libF77/c_sin.c rename to libf2c/libF77/c_sin.c diff --git a/contrib/libf2c/libF77/c_sqrt.c b/libf2c/libF77/c_sqrt.c similarity index 100% rename from contrib/libf2c/libF77/c_sqrt.c rename to libf2c/libF77/c_sqrt.c diff --git a/contrib/libf2c/libF77/cabs.c b/libf2c/libF77/cabs.c similarity index 100% rename from contrib/libf2c/libF77/cabs.c rename to libf2c/libF77/cabs.c diff --git a/contrib/libf2c/libF77/configure b/libf2c/libF77/configure similarity index 100% rename from contrib/libf2c/libF77/configure rename to libf2c/libF77/configure diff --git a/contrib/libf2c/libF77/configure.in b/libf2c/libF77/configure.in similarity index 100% rename from contrib/libf2c/libF77/configure.in rename to libf2c/libF77/configure.in diff --git a/contrib/libf2c/libF77/d_abs.c b/libf2c/libF77/d_abs.c similarity index 100% rename from contrib/libf2c/libF77/d_abs.c rename to libf2c/libF77/d_abs.c diff --git a/contrib/libf2c/libF77/d_acos.c b/libf2c/libF77/d_acos.c similarity index 100% rename from contrib/libf2c/libF77/d_acos.c rename to libf2c/libF77/d_acos.c diff --git a/contrib/libf2c/libF77/d_asin.c b/libf2c/libF77/d_asin.c similarity index 100% rename from contrib/libf2c/libF77/d_asin.c rename to libf2c/libF77/d_asin.c diff --git a/contrib/libf2c/libF77/d_atan.c b/libf2c/libF77/d_atan.c similarity index 100% rename from contrib/libf2c/libF77/d_atan.c rename to libf2c/libF77/d_atan.c diff --git a/contrib/libf2c/libF77/d_atn2.c b/libf2c/libF77/d_atn2.c similarity index 100% rename from contrib/libf2c/libF77/d_atn2.c rename to libf2c/libF77/d_atn2.c diff --git a/contrib/libf2c/libF77/d_cnjg.c b/libf2c/libF77/d_cnjg.c similarity index 100% rename from contrib/libf2c/libF77/d_cnjg.c rename to libf2c/libF77/d_cnjg.c diff --git a/contrib/libf2c/libF77/d_cos.c b/libf2c/libF77/d_cos.c similarity index 100% rename from contrib/libf2c/libF77/d_cos.c rename to libf2c/libF77/d_cos.c diff --git a/contrib/libf2c/libF77/d_cosh.c b/libf2c/libF77/d_cosh.c similarity index 100% rename from contrib/libf2c/libF77/d_cosh.c rename to libf2c/libF77/d_cosh.c diff --git a/contrib/libf2c/libF77/d_dim.c b/libf2c/libF77/d_dim.c similarity index 100% rename from contrib/libf2c/libF77/d_dim.c rename to libf2c/libF77/d_dim.c diff --git a/contrib/libf2c/libF77/d_exp.c b/libf2c/libF77/d_exp.c similarity index 100% rename from contrib/libf2c/libF77/d_exp.c rename to libf2c/libF77/d_exp.c diff --git a/contrib/libf2c/libF77/d_imag.c b/libf2c/libF77/d_imag.c similarity index 100% rename from contrib/libf2c/libF77/d_imag.c rename to libf2c/libF77/d_imag.c diff --git a/contrib/libf2c/libF77/d_int.c b/libf2c/libF77/d_int.c similarity index 100% rename from contrib/libf2c/libF77/d_int.c rename to libf2c/libF77/d_int.c diff --git a/contrib/libf2c/libF77/d_lg10.c b/libf2c/libF77/d_lg10.c similarity index 100% rename from contrib/libf2c/libF77/d_lg10.c rename to libf2c/libF77/d_lg10.c diff --git a/contrib/libf2c/libF77/d_log.c b/libf2c/libF77/d_log.c similarity index 100% rename from contrib/libf2c/libF77/d_log.c rename to libf2c/libF77/d_log.c diff --git a/contrib/libf2c/libF77/d_mod.c b/libf2c/libF77/d_mod.c similarity index 100% rename from contrib/libf2c/libF77/d_mod.c rename to libf2c/libF77/d_mod.c diff --git a/contrib/libf2c/libF77/d_nint.c b/libf2c/libF77/d_nint.c similarity index 100% rename from contrib/libf2c/libF77/d_nint.c rename to libf2c/libF77/d_nint.c diff --git a/contrib/libf2c/libF77/d_prod.c b/libf2c/libF77/d_prod.c similarity index 100% rename from contrib/libf2c/libF77/d_prod.c rename to libf2c/libF77/d_prod.c diff --git a/contrib/libf2c/libF77/d_sign.c b/libf2c/libF77/d_sign.c similarity index 100% rename from contrib/libf2c/libF77/d_sign.c rename to libf2c/libF77/d_sign.c diff --git a/contrib/libf2c/libF77/d_sin.c b/libf2c/libF77/d_sin.c similarity index 100% rename from contrib/libf2c/libF77/d_sin.c rename to libf2c/libF77/d_sin.c diff --git a/contrib/libf2c/libF77/d_sinh.c b/libf2c/libF77/d_sinh.c similarity index 100% rename from contrib/libf2c/libF77/d_sinh.c rename to libf2c/libF77/d_sinh.c diff --git a/contrib/libf2c/libF77/d_sqrt.c b/libf2c/libF77/d_sqrt.c similarity index 100% rename from contrib/libf2c/libF77/d_sqrt.c rename to libf2c/libF77/d_sqrt.c diff --git a/contrib/libf2c/libF77/d_tan.c b/libf2c/libF77/d_tan.c similarity index 100% rename from contrib/libf2c/libF77/d_tan.c rename to libf2c/libF77/d_tan.c diff --git a/contrib/libf2c/libF77/d_tanh.c b/libf2c/libF77/d_tanh.c similarity index 100% rename from contrib/libf2c/libF77/d_tanh.c rename to libf2c/libF77/d_tanh.c diff --git a/contrib/libf2c/libF77/derf_.c b/libf2c/libF77/derf_.c similarity index 100% rename from contrib/libf2c/libF77/derf_.c rename to libf2c/libF77/derf_.c diff --git a/contrib/libf2c/libF77/derfc_.c b/libf2c/libF77/derfc_.c similarity index 100% rename from contrib/libf2c/libF77/derfc_.c rename to libf2c/libF77/derfc_.c diff --git a/contrib/libf2c/libF77/dtime_.c b/libf2c/libF77/dtime_.c similarity index 100% rename from contrib/libf2c/libF77/dtime_.c rename to libf2c/libF77/dtime_.c diff --git a/contrib/libf2c/libF77/ef1asc_.c b/libf2c/libF77/ef1asc_.c similarity index 100% rename from contrib/libf2c/libF77/ef1asc_.c rename to libf2c/libF77/ef1asc_.c diff --git a/contrib/libf2c/libF77/ef1cmc_.c b/libf2c/libF77/ef1cmc_.c similarity index 100% rename from contrib/libf2c/libF77/ef1cmc_.c rename to libf2c/libF77/ef1cmc_.c diff --git a/contrib/libf2c/libF77/erf_.c b/libf2c/libF77/erf_.c similarity index 100% rename from contrib/libf2c/libF77/erf_.c rename to libf2c/libF77/erf_.c diff --git a/contrib/libf2c/libF77/erfc_.c b/libf2c/libF77/erfc_.c similarity index 100% rename from contrib/libf2c/libF77/erfc_.c rename to libf2c/libF77/erfc_.c diff --git a/contrib/libf2c/libF77/etime_.c b/libf2c/libF77/etime_.c similarity index 100% rename from contrib/libf2c/libF77/etime_.c rename to libf2c/libF77/etime_.c diff --git a/contrib/libf2c/libF77/exit_.c b/libf2c/libF77/exit_.c similarity index 100% rename from contrib/libf2c/libF77/exit_.c rename to libf2c/libF77/exit_.c diff --git a/contrib/libf2c/libF77/f2ch.add b/libf2c/libF77/f2ch.add similarity index 100% rename from contrib/libf2c/libF77/f2ch.add rename to libf2c/libF77/f2ch.add diff --git a/contrib/libf2c/libF77/getarg_.c b/libf2c/libF77/getarg_.c similarity index 100% rename from contrib/libf2c/libF77/getarg_.c rename to libf2c/libF77/getarg_.c diff --git a/contrib/libf2c/libF77/getenv_.c b/libf2c/libF77/getenv_.c similarity index 100% rename from contrib/libf2c/libF77/getenv_.c rename to libf2c/libF77/getenv_.c diff --git a/contrib/libf2c/libF77/h_abs.c b/libf2c/libF77/h_abs.c similarity index 100% rename from contrib/libf2c/libF77/h_abs.c rename to libf2c/libF77/h_abs.c diff --git a/contrib/libf2c/libF77/h_dim.c b/libf2c/libF77/h_dim.c similarity index 100% rename from contrib/libf2c/libF77/h_dim.c rename to libf2c/libF77/h_dim.c diff --git a/contrib/libf2c/libF77/h_dnnt.c b/libf2c/libF77/h_dnnt.c similarity index 100% rename from contrib/libf2c/libF77/h_dnnt.c rename to libf2c/libF77/h_dnnt.c diff --git a/contrib/libf2c/libF77/h_indx.c b/libf2c/libF77/h_indx.c similarity index 100% rename from contrib/libf2c/libF77/h_indx.c rename to libf2c/libF77/h_indx.c diff --git a/contrib/libf2c/libF77/h_len.c b/libf2c/libF77/h_len.c similarity index 100% rename from contrib/libf2c/libF77/h_len.c rename to libf2c/libF77/h_len.c diff --git a/contrib/libf2c/libF77/h_mod.c b/libf2c/libF77/h_mod.c similarity index 100% rename from contrib/libf2c/libF77/h_mod.c rename to libf2c/libF77/h_mod.c diff --git a/contrib/libf2c/libF77/h_nint.c b/libf2c/libF77/h_nint.c similarity index 100% rename from contrib/libf2c/libF77/h_nint.c rename to libf2c/libF77/h_nint.c diff --git a/contrib/libf2c/libF77/h_sign.c b/libf2c/libF77/h_sign.c similarity index 100% rename from contrib/libf2c/libF77/h_sign.c rename to libf2c/libF77/h_sign.c diff --git a/contrib/libf2c/libF77/hl_ge.c b/libf2c/libF77/hl_ge.c similarity index 100% rename from contrib/libf2c/libF77/hl_ge.c rename to libf2c/libF77/hl_ge.c diff --git a/contrib/libf2c/libF77/hl_gt.c b/libf2c/libF77/hl_gt.c similarity index 100% rename from contrib/libf2c/libF77/hl_gt.c rename to libf2c/libF77/hl_gt.c diff --git a/contrib/libf2c/libF77/hl_le.c b/libf2c/libF77/hl_le.c similarity index 100% rename from contrib/libf2c/libF77/hl_le.c rename to libf2c/libF77/hl_le.c diff --git a/contrib/libf2c/libF77/hl_lt.c b/libf2c/libF77/hl_lt.c similarity index 100% rename from contrib/libf2c/libF77/hl_lt.c rename to libf2c/libF77/hl_lt.c diff --git a/contrib/libf2c/libF77/i_abs.c b/libf2c/libF77/i_abs.c similarity index 100% rename from contrib/libf2c/libF77/i_abs.c rename to libf2c/libF77/i_abs.c diff --git a/contrib/libf2c/libF77/i_dim.c b/libf2c/libF77/i_dim.c similarity index 100% rename from contrib/libf2c/libF77/i_dim.c rename to libf2c/libF77/i_dim.c diff --git a/contrib/libf2c/libF77/i_dnnt.c b/libf2c/libF77/i_dnnt.c similarity index 100% rename from contrib/libf2c/libF77/i_dnnt.c rename to libf2c/libF77/i_dnnt.c diff --git a/contrib/libf2c/libF77/i_indx.c b/libf2c/libF77/i_indx.c similarity index 100% rename from contrib/libf2c/libF77/i_indx.c rename to libf2c/libF77/i_indx.c diff --git a/contrib/libf2c/libF77/i_len.c b/libf2c/libF77/i_len.c similarity index 100% rename from contrib/libf2c/libF77/i_len.c rename to libf2c/libF77/i_len.c diff --git a/contrib/libf2c/libF77/i_mod.c b/libf2c/libF77/i_mod.c similarity index 100% rename from contrib/libf2c/libF77/i_mod.c rename to libf2c/libF77/i_mod.c diff --git a/contrib/libf2c/libF77/i_nint.c b/libf2c/libF77/i_nint.c similarity index 100% rename from contrib/libf2c/libF77/i_nint.c rename to libf2c/libF77/i_nint.c diff --git a/contrib/libf2c/libF77/i_sign.c b/libf2c/libF77/i_sign.c similarity index 100% rename from contrib/libf2c/libF77/i_sign.c rename to libf2c/libF77/i_sign.c diff --git a/contrib/libf2c/libF77/iargc_.c b/libf2c/libF77/iargc_.c similarity index 100% rename from contrib/libf2c/libF77/iargc_.c rename to libf2c/libF77/iargc_.c diff --git a/contrib/libf2c/libF77/l_ge.c b/libf2c/libF77/l_ge.c similarity index 100% rename from contrib/libf2c/libF77/l_ge.c rename to libf2c/libF77/l_ge.c diff --git a/contrib/libf2c/libF77/l_gt.c b/libf2c/libF77/l_gt.c similarity index 100% rename from contrib/libf2c/libF77/l_gt.c rename to libf2c/libF77/l_gt.c diff --git a/contrib/libf2c/libF77/l_le.c b/libf2c/libF77/l_le.c similarity index 100% rename from contrib/libf2c/libF77/l_le.c rename to libf2c/libF77/l_le.c diff --git a/contrib/libf2c/libF77/l_lt.c b/libf2c/libF77/l_lt.c similarity index 100% rename from contrib/libf2c/libF77/l_lt.c rename to libf2c/libF77/l_lt.c diff --git a/contrib/libf2c/libF77/lbitbits.c b/libf2c/libF77/lbitbits.c similarity index 100% rename from contrib/libf2c/libF77/lbitbits.c rename to libf2c/libF77/lbitbits.c diff --git a/contrib/libf2c/libF77/lbitshft.c b/libf2c/libF77/lbitshft.c similarity index 100% rename from contrib/libf2c/libF77/lbitshft.c rename to libf2c/libF77/lbitshft.c diff --git a/contrib/libf2c/libF77/main.c b/libf2c/libF77/main.c similarity index 100% rename from contrib/libf2c/libF77/main.c rename to libf2c/libF77/main.c diff --git a/contrib/libf2c/libF77/makefile.netlib b/libf2c/libF77/makefile.netlib similarity index 100% rename from contrib/libf2c/libF77/makefile.netlib rename to libf2c/libF77/makefile.netlib diff --git a/contrib/libf2c/libF77/pow_ci.c b/libf2c/libF77/pow_ci.c similarity index 100% rename from contrib/libf2c/libF77/pow_ci.c rename to libf2c/libF77/pow_ci.c diff --git a/contrib/libf2c/libF77/pow_dd.c b/libf2c/libF77/pow_dd.c similarity index 100% rename from contrib/libf2c/libF77/pow_dd.c rename to libf2c/libF77/pow_dd.c diff --git a/contrib/libf2c/libF77/pow_di.c b/libf2c/libF77/pow_di.c similarity index 100% rename from contrib/libf2c/libF77/pow_di.c rename to libf2c/libF77/pow_di.c diff --git a/contrib/libf2c/libF77/pow_hh.c b/libf2c/libF77/pow_hh.c similarity index 100% rename from contrib/libf2c/libF77/pow_hh.c rename to libf2c/libF77/pow_hh.c diff --git a/contrib/libf2c/libF77/pow_ii.c b/libf2c/libF77/pow_ii.c similarity index 100% rename from contrib/libf2c/libF77/pow_ii.c rename to libf2c/libF77/pow_ii.c diff --git a/contrib/libf2c/libF77/pow_qq.c b/libf2c/libF77/pow_qq.c similarity index 100% rename from contrib/libf2c/libF77/pow_qq.c rename to libf2c/libF77/pow_qq.c diff --git a/contrib/libf2c/libF77/pow_ri.c b/libf2c/libF77/pow_ri.c similarity index 100% rename from contrib/libf2c/libF77/pow_ri.c rename to libf2c/libF77/pow_ri.c diff --git a/contrib/libf2c/libF77/pow_zi.c b/libf2c/libF77/pow_zi.c similarity index 100% rename from contrib/libf2c/libF77/pow_zi.c rename to libf2c/libF77/pow_zi.c diff --git a/contrib/libf2c/libF77/pow_zz.c b/libf2c/libF77/pow_zz.c similarity index 100% rename from contrib/libf2c/libF77/pow_zz.c rename to libf2c/libF77/pow_zz.c diff --git a/contrib/libf2c/libF77/qbitbits.c b/libf2c/libF77/qbitbits.c similarity index 100% rename from contrib/libf2c/libF77/qbitbits.c rename to libf2c/libF77/qbitbits.c diff --git a/contrib/libf2c/libF77/qbitshft.c b/libf2c/libF77/qbitshft.c similarity index 100% rename from contrib/libf2c/libF77/qbitshft.c rename to libf2c/libF77/qbitshft.c diff --git a/contrib/libf2c/libF77/r_abs.c b/libf2c/libF77/r_abs.c similarity index 100% rename from contrib/libf2c/libF77/r_abs.c rename to libf2c/libF77/r_abs.c diff --git a/contrib/libf2c/libF77/r_acos.c b/libf2c/libF77/r_acos.c similarity index 100% rename from contrib/libf2c/libF77/r_acos.c rename to libf2c/libF77/r_acos.c diff --git a/contrib/libf2c/libF77/r_asin.c b/libf2c/libF77/r_asin.c similarity index 100% rename from contrib/libf2c/libF77/r_asin.c rename to libf2c/libF77/r_asin.c diff --git a/contrib/libf2c/libF77/r_atan.c b/libf2c/libF77/r_atan.c similarity index 100% rename from contrib/libf2c/libF77/r_atan.c rename to libf2c/libF77/r_atan.c diff --git a/contrib/libf2c/libF77/r_atn2.c b/libf2c/libF77/r_atn2.c similarity index 100% rename from contrib/libf2c/libF77/r_atn2.c rename to libf2c/libF77/r_atn2.c diff --git a/contrib/libf2c/libF77/r_cnjg.c b/libf2c/libF77/r_cnjg.c similarity index 100% rename from contrib/libf2c/libF77/r_cnjg.c rename to libf2c/libF77/r_cnjg.c diff --git a/contrib/libf2c/libF77/r_cos.c b/libf2c/libF77/r_cos.c similarity index 100% rename from contrib/libf2c/libF77/r_cos.c rename to libf2c/libF77/r_cos.c diff --git a/contrib/libf2c/libF77/r_cosh.c b/libf2c/libF77/r_cosh.c similarity index 100% rename from contrib/libf2c/libF77/r_cosh.c rename to libf2c/libF77/r_cosh.c diff --git a/contrib/libf2c/libF77/r_dim.c b/libf2c/libF77/r_dim.c similarity index 100% rename from contrib/libf2c/libF77/r_dim.c rename to libf2c/libF77/r_dim.c diff --git a/contrib/libf2c/libF77/r_exp.c b/libf2c/libF77/r_exp.c similarity index 100% rename from contrib/libf2c/libF77/r_exp.c rename to libf2c/libF77/r_exp.c diff --git a/contrib/libf2c/libF77/r_imag.c b/libf2c/libF77/r_imag.c similarity index 100% rename from contrib/libf2c/libF77/r_imag.c rename to libf2c/libF77/r_imag.c diff --git a/contrib/libf2c/libF77/r_int.c b/libf2c/libF77/r_int.c similarity index 100% rename from contrib/libf2c/libF77/r_int.c rename to libf2c/libF77/r_int.c diff --git a/contrib/libf2c/libF77/r_lg10.c b/libf2c/libF77/r_lg10.c similarity index 100% rename from contrib/libf2c/libF77/r_lg10.c rename to libf2c/libF77/r_lg10.c diff --git a/contrib/libf2c/libF77/r_log.c b/libf2c/libF77/r_log.c similarity index 100% rename from contrib/libf2c/libF77/r_log.c rename to libf2c/libF77/r_log.c diff --git a/contrib/libf2c/libF77/r_mod.c b/libf2c/libF77/r_mod.c similarity index 100% rename from contrib/libf2c/libF77/r_mod.c rename to libf2c/libF77/r_mod.c diff --git a/contrib/libf2c/libF77/r_nint.c b/libf2c/libF77/r_nint.c similarity index 100% rename from contrib/libf2c/libF77/r_nint.c rename to libf2c/libF77/r_nint.c diff --git a/contrib/libf2c/libF77/r_sign.c b/libf2c/libF77/r_sign.c similarity index 100% rename from contrib/libf2c/libF77/r_sign.c rename to libf2c/libF77/r_sign.c diff --git a/contrib/libf2c/libF77/r_sin.c b/libf2c/libF77/r_sin.c similarity index 100% rename from contrib/libf2c/libF77/r_sin.c rename to libf2c/libF77/r_sin.c diff --git a/contrib/libf2c/libF77/r_sinh.c b/libf2c/libF77/r_sinh.c similarity index 100% rename from contrib/libf2c/libF77/r_sinh.c rename to libf2c/libF77/r_sinh.c diff --git a/contrib/libf2c/libF77/r_sqrt.c b/libf2c/libF77/r_sqrt.c similarity index 100% rename from contrib/libf2c/libF77/r_sqrt.c rename to libf2c/libF77/r_sqrt.c diff --git a/contrib/libf2c/libF77/r_tan.c b/libf2c/libF77/r_tan.c similarity index 100% rename from contrib/libf2c/libF77/r_tan.c rename to libf2c/libF77/r_tan.c diff --git a/contrib/libf2c/libF77/r_tanh.c b/libf2c/libF77/r_tanh.c similarity index 100% rename from contrib/libf2c/libF77/r_tanh.c rename to libf2c/libF77/r_tanh.c diff --git a/contrib/libf2c/libF77/s_cat.c b/libf2c/libF77/s_cat.c similarity index 100% rename from contrib/libf2c/libF77/s_cat.c rename to libf2c/libF77/s_cat.c diff --git a/contrib/libf2c/libF77/s_cmp.c b/libf2c/libF77/s_cmp.c similarity index 100% rename from contrib/libf2c/libF77/s_cmp.c rename to libf2c/libF77/s_cmp.c diff --git a/contrib/libf2c/libF77/s_copy.c b/libf2c/libF77/s_copy.c similarity index 100% rename from contrib/libf2c/libF77/s_copy.c rename to libf2c/libF77/s_copy.c diff --git a/contrib/libf2c/libF77/s_paus.c b/libf2c/libF77/s_paus.c similarity index 100% rename from contrib/libf2c/libF77/s_paus.c rename to libf2c/libF77/s_paus.c diff --git a/contrib/libf2c/libF77/s_rnge.c b/libf2c/libF77/s_rnge.c similarity index 100% rename from contrib/libf2c/libF77/s_rnge.c rename to libf2c/libF77/s_rnge.c diff --git a/contrib/libf2c/libF77/s_stop.c b/libf2c/libF77/s_stop.c similarity index 100% rename from contrib/libf2c/libF77/s_stop.c rename to libf2c/libF77/s_stop.c diff --git a/contrib/libf2c/libF77/setarg.c b/libf2c/libF77/setarg.c similarity index 100% rename from contrib/libf2c/libF77/setarg.c rename to libf2c/libF77/setarg.c diff --git a/contrib/libf2c/libF77/setsig.c b/libf2c/libF77/setsig.c similarity index 100% rename from contrib/libf2c/libF77/setsig.c rename to libf2c/libF77/setsig.c diff --git a/contrib/libf2c/libF77/sig_die.c b/libf2c/libF77/sig_die.c similarity index 100% rename from contrib/libf2c/libF77/sig_die.c rename to libf2c/libF77/sig_die.c diff --git a/contrib/libf2c/libF77/signal1.h b/libf2c/libF77/signal1.h similarity index 100% rename from contrib/libf2c/libF77/signal1.h rename to libf2c/libF77/signal1.h diff --git a/contrib/libf2c/libF77/signal1.h0 b/libf2c/libF77/signal1.h0 similarity index 100% rename from contrib/libf2c/libF77/signal1.h0 rename to libf2c/libF77/signal1.h0 diff --git a/contrib/libf2c/libF77/signal_.c b/libf2c/libF77/signal_.c similarity index 100% rename from contrib/libf2c/libF77/signal_.c rename to libf2c/libF77/signal_.c diff --git a/contrib/libf2c/libF77/system_.c b/libf2c/libF77/system_.c similarity index 100% rename from contrib/libf2c/libF77/system_.c rename to libf2c/libF77/system_.c diff --git a/contrib/libf2c/libF77/z_abs.c b/libf2c/libF77/z_abs.c similarity index 100% rename from contrib/libf2c/libF77/z_abs.c rename to libf2c/libF77/z_abs.c diff --git a/contrib/libf2c/libF77/z_cos.c b/libf2c/libF77/z_cos.c similarity index 100% rename from contrib/libf2c/libF77/z_cos.c rename to libf2c/libF77/z_cos.c diff --git a/contrib/libf2c/libF77/z_div.c b/libf2c/libF77/z_div.c similarity index 100% rename from contrib/libf2c/libF77/z_div.c rename to libf2c/libF77/z_div.c diff --git a/contrib/libf2c/libF77/z_exp.c b/libf2c/libF77/z_exp.c similarity index 100% rename from contrib/libf2c/libF77/z_exp.c rename to libf2c/libF77/z_exp.c diff --git a/contrib/libf2c/libF77/z_log.c b/libf2c/libF77/z_log.c similarity index 100% rename from contrib/libf2c/libF77/z_log.c rename to libf2c/libF77/z_log.c diff --git a/contrib/libf2c/libF77/z_sin.c b/libf2c/libF77/z_sin.c similarity index 100% rename from contrib/libf2c/libF77/z_sin.c rename to libf2c/libF77/z_sin.c diff --git a/contrib/libf2c/libF77/z_sqrt.c b/libf2c/libF77/z_sqrt.c similarity index 100% rename from contrib/libf2c/libF77/z_sqrt.c rename to libf2c/libF77/z_sqrt.c diff --git a/contrib/libf2c/libI77/Makefile.in b/libf2c/libI77/Makefile.in similarity index 100% rename from contrib/libf2c/libI77/Makefile.in rename to libf2c/libI77/Makefile.in diff --git a/contrib/libf2c/libI77/Notice b/libf2c/libI77/Notice similarity index 100% rename from contrib/libf2c/libI77/Notice rename to libf2c/libI77/Notice diff --git a/contrib/libf2c/libI77/README.netlib b/libf2c/libI77/README.netlib similarity index 100% rename from contrib/libf2c/libI77/README.netlib rename to libf2c/libI77/README.netlib diff --git a/contrib/libf2c/libI77/Version.c b/libf2c/libI77/Version.c similarity index 100% rename from contrib/libf2c/libI77/Version.c rename to libf2c/libI77/Version.c diff --git a/contrib/libf2c/libI77/backspace.c b/libf2c/libI77/backspace.c similarity index 100% rename from contrib/libf2c/libI77/backspace.c rename to libf2c/libI77/backspace.c diff --git a/contrib/libf2c/libI77/close.c b/libf2c/libI77/close.c similarity index 100% rename from contrib/libf2c/libI77/close.c rename to libf2c/libI77/close.c diff --git a/contrib/libf2c/libI77/config.h.in b/libf2c/libI77/config.h.in similarity index 100% rename from contrib/libf2c/libI77/config.h.in rename to libf2c/libI77/config.h.in diff --git a/contrib/libf2c/libI77/configure b/libf2c/libI77/configure similarity index 100% rename from contrib/libf2c/libI77/configure rename to libf2c/libI77/configure diff --git a/contrib/libf2c/libI77/configure.in b/libf2c/libI77/configure.in similarity index 100% rename from contrib/libf2c/libI77/configure.in rename to libf2c/libI77/configure.in diff --git a/contrib/libf2c/libI77/dfe.c b/libf2c/libI77/dfe.c similarity index 100% rename from contrib/libf2c/libI77/dfe.c rename to libf2c/libI77/dfe.c diff --git a/contrib/libf2c/libI77/dolio.c b/libf2c/libI77/dolio.c similarity index 100% rename from contrib/libf2c/libI77/dolio.c rename to libf2c/libI77/dolio.c diff --git a/contrib/libf2c/libI77/due.c b/libf2c/libI77/due.c similarity index 100% rename from contrib/libf2c/libI77/due.c rename to libf2c/libI77/due.c diff --git a/contrib/libf2c/libI77/endfile.c b/libf2c/libI77/endfile.c similarity index 100% rename from contrib/libf2c/libI77/endfile.c rename to libf2c/libI77/endfile.c diff --git a/contrib/libf2c/libI77/err.c b/libf2c/libI77/err.c similarity index 100% rename from contrib/libf2c/libI77/err.c rename to libf2c/libI77/err.c diff --git a/contrib/libf2c/libI77/f2ch.add b/libf2c/libI77/f2ch.add similarity index 100% rename from contrib/libf2c/libI77/f2ch.add rename to libf2c/libI77/f2ch.add diff --git a/contrib/libf2c/libI77/fio.h b/libf2c/libI77/fio.h similarity index 100% rename from contrib/libf2c/libI77/fio.h rename to libf2c/libI77/fio.h diff --git a/contrib/libf2c/libI77/fmt.c b/libf2c/libI77/fmt.c similarity index 100% rename from contrib/libf2c/libI77/fmt.c rename to libf2c/libI77/fmt.c diff --git a/contrib/libf2c/libI77/fmt.h b/libf2c/libI77/fmt.h similarity index 100% rename from contrib/libf2c/libI77/fmt.h rename to libf2c/libI77/fmt.h diff --git a/contrib/libf2c/libI77/fmtlib.c b/libf2c/libI77/fmtlib.c similarity index 100% rename from contrib/libf2c/libI77/fmtlib.c rename to libf2c/libI77/fmtlib.c diff --git a/contrib/libf2c/libI77/fp.h b/libf2c/libI77/fp.h similarity index 100% rename from contrib/libf2c/libI77/fp.h rename to libf2c/libI77/fp.h diff --git a/contrib/libf2c/libI77/ftell_.c b/libf2c/libI77/ftell_.c similarity index 100% rename from contrib/libf2c/libI77/ftell_.c rename to libf2c/libI77/ftell_.c diff --git a/contrib/libf2c/libI77/iio.c b/libf2c/libI77/iio.c similarity index 100% rename from contrib/libf2c/libI77/iio.c rename to libf2c/libI77/iio.c diff --git a/contrib/libf2c/libI77/ilnw.c b/libf2c/libI77/ilnw.c similarity index 100% rename from contrib/libf2c/libI77/ilnw.c rename to libf2c/libI77/ilnw.c diff --git a/contrib/libf2c/libI77/inquire.c b/libf2c/libI77/inquire.c similarity index 100% rename from contrib/libf2c/libI77/inquire.c rename to libf2c/libI77/inquire.c diff --git a/contrib/libf2c/libI77/lio.h b/libf2c/libI77/lio.h similarity index 100% rename from contrib/libf2c/libI77/lio.h rename to libf2c/libI77/lio.h diff --git a/contrib/libf2c/libI77/lread.c b/libf2c/libI77/lread.c similarity index 100% rename from contrib/libf2c/libI77/lread.c rename to libf2c/libI77/lread.c diff --git a/contrib/libf2c/libI77/lwrite.c b/libf2c/libI77/lwrite.c similarity index 100% rename from contrib/libf2c/libI77/lwrite.c rename to libf2c/libI77/lwrite.c diff --git a/contrib/libf2c/libI77/makefile.netlib b/libf2c/libI77/makefile.netlib similarity index 100% rename from contrib/libf2c/libI77/makefile.netlib rename to libf2c/libI77/makefile.netlib diff --git a/contrib/libf2c/libI77/open.c b/libf2c/libI77/open.c similarity index 100% rename from contrib/libf2c/libI77/open.c rename to libf2c/libI77/open.c diff --git a/contrib/libf2c/libI77/rdfmt.c b/libf2c/libI77/rdfmt.c similarity index 100% rename from contrib/libf2c/libI77/rdfmt.c rename to libf2c/libI77/rdfmt.c diff --git a/contrib/libf2c/libI77/rewind.c b/libf2c/libI77/rewind.c similarity index 100% rename from contrib/libf2c/libI77/rewind.c rename to libf2c/libI77/rewind.c diff --git a/contrib/libf2c/libI77/rsfe.c b/libf2c/libI77/rsfe.c similarity index 100% rename from contrib/libf2c/libI77/rsfe.c rename to libf2c/libI77/rsfe.c diff --git a/contrib/libf2c/libI77/rsli.c b/libf2c/libI77/rsli.c similarity index 100% rename from contrib/libf2c/libI77/rsli.c rename to libf2c/libI77/rsli.c diff --git a/contrib/libf2c/libI77/rsne.c b/libf2c/libI77/rsne.c similarity index 100% rename from contrib/libf2c/libI77/rsne.c rename to libf2c/libI77/rsne.c diff --git a/contrib/libf2c/libI77/sfe.c b/libf2c/libI77/sfe.c similarity index 100% rename from contrib/libf2c/libI77/sfe.c rename to libf2c/libI77/sfe.c diff --git a/contrib/libf2c/libI77/stamp-h.in b/libf2c/libI77/stamp-h.in similarity index 100% rename from contrib/libf2c/libI77/stamp-h.in rename to libf2c/libI77/stamp-h.in diff --git a/contrib/libf2c/libI77/sue.c b/libf2c/libI77/sue.c similarity index 100% rename from contrib/libf2c/libI77/sue.c rename to libf2c/libI77/sue.c diff --git a/contrib/libf2c/libI77/typesize.c b/libf2c/libI77/typesize.c similarity index 100% rename from contrib/libf2c/libI77/typesize.c rename to libf2c/libI77/typesize.c diff --git a/contrib/libf2c/libI77/uio.c b/libf2c/libI77/uio.c similarity index 100% rename from contrib/libf2c/libI77/uio.c rename to libf2c/libI77/uio.c diff --git a/contrib/libf2c/libI77/util.c b/libf2c/libI77/util.c similarity index 100% rename from contrib/libf2c/libI77/util.c rename to libf2c/libI77/util.c diff --git a/contrib/libf2c/libI77/wref.c b/libf2c/libI77/wref.c similarity index 100% rename from contrib/libf2c/libI77/wref.c rename to libf2c/libI77/wref.c diff --git a/contrib/libf2c/libI77/wrtfmt.c b/libf2c/libI77/wrtfmt.c similarity index 100% rename from contrib/libf2c/libI77/wrtfmt.c rename to libf2c/libI77/wrtfmt.c diff --git a/contrib/libf2c/libI77/wsfe.c b/libf2c/libI77/wsfe.c similarity index 100% rename from contrib/libf2c/libI77/wsfe.c rename to libf2c/libI77/wsfe.c diff --git a/contrib/libf2c/libI77/wsle.c b/libf2c/libI77/wsle.c similarity index 100% rename from contrib/libf2c/libI77/wsle.c rename to libf2c/libI77/wsle.c diff --git a/contrib/libf2c/libI77/wsne.c b/libf2c/libI77/wsne.c similarity index 100% rename from contrib/libf2c/libI77/wsne.c rename to libf2c/libI77/wsne.c diff --git a/contrib/libf2c/libI77/xwsne.c b/libf2c/libI77/xwsne.c similarity index 100% rename from contrib/libf2c/libI77/xwsne.c rename to libf2c/libI77/xwsne.c diff --git a/contrib/libf2c/libU77/COPYING.LIB b/libf2c/libU77/COPYING.LIB similarity index 100% rename from contrib/libf2c/libU77/COPYING.LIB rename to libf2c/libU77/COPYING.LIB diff --git a/contrib/libf2c/libU77/Makefile.in b/libf2c/libU77/Makefile.in similarity index 100% rename from contrib/libf2c/libU77/Makefile.in rename to libf2c/libU77/Makefile.in diff --git a/contrib/libf2c/libU77/PROJECTS b/libf2c/libU77/PROJECTS similarity index 100% rename from contrib/libf2c/libU77/PROJECTS rename to libf2c/libU77/PROJECTS diff --git a/contrib/libf2c/libU77/README b/libf2c/libU77/README similarity index 100% rename from contrib/libf2c/libU77/README rename to libf2c/libU77/README diff --git a/contrib/libf2c/libU77/Version.c b/libf2c/libU77/Version.c similarity index 100% rename from contrib/libf2c/libU77/Version.c rename to libf2c/libU77/Version.c diff --git a/contrib/libf2c/libU77/access_.c b/libf2c/libU77/access_.c similarity index 100% rename from contrib/libf2c/libU77/access_.c rename to libf2c/libU77/access_.c diff --git a/contrib/libf2c/libU77/acconfig.h b/libf2c/libU77/acconfig.h similarity index 100% rename from contrib/libf2c/libU77/acconfig.h rename to libf2c/libU77/acconfig.h diff --git a/contrib/libf2c/libU77/aclocal.m4 b/libf2c/libU77/aclocal.m4 similarity index 100% rename from contrib/libf2c/libU77/aclocal.m4 rename to libf2c/libU77/aclocal.m4 diff --git a/contrib/libf2c/libU77/alarm_.c b/libf2c/libU77/alarm_.c similarity index 100% rename from contrib/libf2c/libU77/alarm_.c rename to libf2c/libU77/alarm_.c diff --git a/contrib/libf2c/libU77/chdir_.c b/libf2c/libU77/chdir_.c similarity index 100% rename from contrib/libf2c/libU77/chdir_.c rename to libf2c/libU77/chdir_.c diff --git a/contrib/libf2c/libU77/chmod_.c b/libf2c/libU77/chmod_.c similarity index 100% rename from contrib/libf2c/libU77/chmod_.c rename to libf2c/libU77/chmod_.c diff --git a/contrib/libf2c/libU77/config.hin b/libf2c/libU77/config.hin similarity index 100% rename from contrib/libf2c/libU77/config.hin rename to libf2c/libU77/config.hin diff --git a/contrib/libf2c/libU77/configure b/libf2c/libU77/configure similarity index 100% rename from contrib/libf2c/libU77/configure rename to libf2c/libU77/configure diff --git a/contrib/libf2c/libU77/configure.in b/libf2c/libU77/configure.in similarity index 100% rename from contrib/libf2c/libU77/configure.in rename to libf2c/libU77/configure.in diff --git a/contrib/libf2c/libU77/ctime_.c b/libf2c/libU77/ctime_.c similarity index 100% rename from contrib/libf2c/libU77/ctime_.c rename to libf2c/libU77/ctime_.c diff --git a/contrib/libf2c/libU77/date_.c b/libf2c/libU77/date_.c similarity index 100% rename from contrib/libf2c/libU77/date_.c rename to libf2c/libU77/date_.c diff --git a/contrib/libf2c/libU77/datetime_.c b/libf2c/libU77/datetime_.c similarity index 100% rename from contrib/libf2c/libU77/datetime_.c rename to libf2c/libU77/datetime_.c diff --git a/contrib/libf2c/libU77/dtime_.c b/libf2c/libU77/dtime_.c similarity index 100% rename from contrib/libf2c/libU77/dtime_.c rename to libf2c/libU77/dtime_.c diff --git a/contrib/libf2c/libU77/etime_.c b/libf2c/libU77/etime_.c similarity index 100% rename from contrib/libf2c/libU77/etime_.c rename to libf2c/libU77/etime_.c diff --git a/contrib/libf2c/libU77/fdate_.c b/libf2c/libU77/fdate_.c similarity index 100% rename from contrib/libf2c/libU77/fdate_.c rename to libf2c/libU77/fdate_.c diff --git a/contrib/libf2c/libU77/fgetc_.c b/libf2c/libU77/fgetc_.c similarity index 100% rename from contrib/libf2c/libU77/fgetc_.c rename to libf2c/libU77/fgetc_.c diff --git a/contrib/libf2c/libU77/flush1_.c b/libf2c/libU77/flush1_.c similarity index 100% rename from contrib/libf2c/libU77/flush1_.c rename to libf2c/libU77/flush1_.c diff --git a/contrib/libf2c/libU77/fnum_.c b/libf2c/libU77/fnum_.c similarity index 100% rename from contrib/libf2c/libU77/fnum_.c rename to libf2c/libU77/fnum_.c diff --git a/contrib/libf2c/libU77/fputc_.c b/libf2c/libU77/fputc_.c similarity index 100% rename from contrib/libf2c/libU77/fputc_.c rename to libf2c/libU77/fputc_.c diff --git a/contrib/libf2c/libU77/fstat_.c b/libf2c/libU77/fstat_.c similarity index 100% rename from contrib/libf2c/libU77/fstat_.c rename to libf2c/libU77/fstat_.c diff --git a/contrib/libf2c/libU77/gerror_.c b/libf2c/libU77/gerror_.c similarity index 100% rename from contrib/libf2c/libU77/gerror_.c rename to libf2c/libU77/gerror_.c diff --git a/contrib/libf2c/libU77/getcwd_.c b/libf2c/libU77/getcwd_.c similarity index 100% rename from contrib/libf2c/libU77/getcwd_.c rename to libf2c/libU77/getcwd_.c diff --git a/contrib/libf2c/libU77/getgid_.c b/libf2c/libU77/getgid_.c similarity index 100% rename from contrib/libf2c/libU77/getgid_.c rename to libf2c/libU77/getgid_.c diff --git a/contrib/libf2c/libU77/getlog_.c b/libf2c/libU77/getlog_.c similarity index 100% rename from contrib/libf2c/libU77/getlog_.c rename to libf2c/libU77/getlog_.c diff --git a/contrib/libf2c/libU77/getpid_.c b/libf2c/libU77/getpid_.c similarity index 100% rename from contrib/libf2c/libU77/getpid_.c rename to libf2c/libU77/getpid_.c diff --git a/contrib/libf2c/libU77/getuid_.c b/libf2c/libU77/getuid_.c similarity index 100% rename from contrib/libf2c/libU77/getuid_.c rename to libf2c/libU77/getuid_.c diff --git a/contrib/libf2c/libU77/gmtime_.c b/libf2c/libU77/gmtime_.c similarity index 100% rename from contrib/libf2c/libU77/gmtime_.c rename to libf2c/libU77/gmtime_.c diff --git a/contrib/libf2c/libU77/hostnm_.c b/libf2c/libU77/hostnm_.c similarity index 100% rename from contrib/libf2c/libU77/hostnm_.c rename to libf2c/libU77/hostnm_.c diff --git a/contrib/libf2c/libU77/idate_.c b/libf2c/libU77/idate_.c similarity index 100% rename from contrib/libf2c/libU77/idate_.c rename to libf2c/libU77/idate_.c diff --git a/contrib/libf2c/libU77/ierrno_.c b/libf2c/libU77/ierrno_.c similarity index 100% rename from contrib/libf2c/libU77/ierrno_.c rename to libf2c/libU77/ierrno_.c diff --git a/contrib/libf2c/libU77/irand_.c b/libf2c/libU77/irand_.c similarity index 100% rename from contrib/libf2c/libU77/irand_.c rename to libf2c/libU77/irand_.c diff --git a/contrib/libf2c/libU77/isatty_.c b/libf2c/libU77/isatty_.c similarity index 100% rename from contrib/libf2c/libU77/isatty_.c rename to libf2c/libU77/isatty_.c diff --git a/contrib/libf2c/libU77/itime_.c b/libf2c/libU77/itime_.c similarity index 100% rename from contrib/libf2c/libU77/itime_.c rename to libf2c/libU77/itime_.c diff --git a/contrib/libf2c/libU77/kill_.c b/libf2c/libU77/kill_.c similarity index 100% rename from contrib/libf2c/libU77/kill_.c rename to libf2c/libU77/kill_.c diff --git a/contrib/libf2c/libU77/link_.c b/libf2c/libU77/link_.c similarity index 100% rename from contrib/libf2c/libU77/link_.c rename to libf2c/libU77/link_.c diff --git a/contrib/libf2c/libU77/lnblnk_.c b/libf2c/libU77/lnblnk_.c similarity index 100% rename from contrib/libf2c/libU77/lnblnk_.c rename to libf2c/libU77/lnblnk_.c diff --git a/contrib/libf2c/libU77/lstat_.c b/libf2c/libU77/lstat_.c similarity index 100% rename from contrib/libf2c/libU77/lstat_.c rename to libf2c/libU77/lstat_.c diff --git a/contrib/libf2c/libU77/ltime_.c b/libf2c/libU77/ltime_.c similarity index 100% rename from contrib/libf2c/libU77/ltime_.c rename to libf2c/libU77/ltime_.c diff --git a/contrib/libf2c/libU77/mclock_.c b/libf2c/libU77/mclock_.c similarity index 100% rename from contrib/libf2c/libU77/mclock_.c rename to libf2c/libU77/mclock_.c diff --git a/contrib/libf2c/libU77/perror_.c b/libf2c/libU77/perror_.c similarity index 100% rename from contrib/libf2c/libU77/perror_.c rename to libf2c/libU77/perror_.c diff --git a/contrib/libf2c/libU77/rand_.c b/libf2c/libU77/rand_.c similarity index 100% rename from contrib/libf2c/libU77/rand_.c rename to libf2c/libU77/rand_.c diff --git a/contrib/libf2c/libU77/rename_.c b/libf2c/libU77/rename_.c similarity index 100% rename from contrib/libf2c/libU77/rename_.c rename to libf2c/libU77/rename_.c diff --git a/contrib/libf2c/libU77/secnds_.c b/libf2c/libU77/secnds_.c similarity index 100% rename from contrib/libf2c/libU77/secnds_.c rename to libf2c/libU77/secnds_.c diff --git a/contrib/libf2c/libU77/second_.c b/libf2c/libU77/second_.c similarity index 100% rename from contrib/libf2c/libU77/second_.c rename to libf2c/libU77/second_.c diff --git a/contrib/libf2c/libU77/sleep_.c b/libf2c/libU77/sleep_.c similarity index 100% rename from contrib/libf2c/libU77/sleep_.c rename to libf2c/libU77/sleep_.c diff --git a/contrib/libf2c/libU77/srand_.c b/libf2c/libU77/srand_.c similarity index 100% rename from contrib/libf2c/libU77/srand_.c rename to libf2c/libU77/srand_.c diff --git a/contrib/libf2c/libU77/stamp-h.in b/libf2c/libU77/stamp-h.in similarity index 100% rename from contrib/libf2c/libU77/stamp-h.in rename to libf2c/libU77/stamp-h.in diff --git a/contrib/libf2c/libU77/stat_.c b/libf2c/libU77/stat_.c similarity index 100% rename from contrib/libf2c/libU77/stat_.c rename to libf2c/libU77/stat_.c diff --git a/contrib/libf2c/libU77/symlnk_.c b/libf2c/libU77/symlnk_.c similarity index 100% rename from contrib/libf2c/libU77/symlnk_.c rename to libf2c/libU77/symlnk_.c diff --git a/contrib/libf2c/libU77/sys_clock_.c b/libf2c/libU77/sys_clock_.c similarity index 100% rename from contrib/libf2c/libU77/sys_clock_.c rename to libf2c/libU77/sys_clock_.c diff --git a/contrib/libf2c/libU77/time_.c b/libf2c/libU77/time_.c similarity index 100% rename from contrib/libf2c/libU77/time_.c rename to libf2c/libU77/time_.c diff --git a/contrib/libf2c/libU77/ttynam_.c b/libf2c/libU77/ttynam_.c similarity index 100% rename from contrib/libf2c/libU77/ttynam_.c rename to libf2c/libU77/ttynam_.c diff --git a/contrib/libf2c/libU77/u77-test.f b/libf2c/libU77/u77-test.f similarity index 100% rename from contrib/libf2c/libU77/u77-test.f rename to libf2c/libU77/u77-test.f diff --git a/contrib/libf2c/libU77/umask_.c b/libf2c/libU77/umask_.c similarity index 100% rename from contrib/libf2c/libU77/umask_.c rename to libf2c/libU77/umask_.c diff --git a/contrib/libf2c/libU77/unlink_.c b/libf2c/libU77/unlink_.c similarity index 100% rename from contrib/libf2c/libU77/unlink_.c rename to libf2c/libU77/unlink_.c diff --git a/contrib/libf2c/libU77/vxtidate_.c b/libf2c/libU77/vxtidate_.c similarity index 100% rename from contrib/libf2c/libU77/vxtidate_.c rename to libf2c/libU77/vxtidate_.c diff --git a/contrib/libf2c/libU77/vxttime_.c b/libf2c/libU77/vxttime_.c similarity index 100% rename from contrib/libf2c/libU77/vxttime_.c rename to libf2c/libU77/vxttime_.c diff --git a/contrib/libf2c/permission.netlib b/libf2c/permission.netlib similarity index 100% rename from contrib/libf2c/permission.netlib rename to libf2c/permission.netlib diff --git a/contrib/libf2c/readme.netlib b/libf2c/readme.netlib similarity index 100% rename from contrib/libf2c/readme.netlib rename to libf2c/readme.netlib diff --git a/contrib/libg++/COPYING b/libg++/COPYING similarity index 100% rename from contrib/libg++/COPYING rename to libg++/COPYING diff --git a/contrib/libg++/COPYING.LIB b/libg++/COPYING.LIB similarity index 100% rename from contrib/libg++/COPYING.LIB rename to libg++/COPYING.LIB diff --git a/contrib/libg++/include/ChangeLog b/libg++/include/ChangeLog similarity index 100% rename from contrib/libg++/include/ChangeLog rename to libg++/include/ChangeLog diff --git a/contrib/libg++/include/ansidecl.h b/libg++/include/ansidecl.h similarity index 100% rename from contrib/libg++/include/ansidecl.h rename to libg++/include/ansidecl.h diff --git a/contrib/libg++/include/demangle.h b/libg++/include/demangle.h similarity index 100% rename from contrib/libg++/include/demangle.h rename to libg++/include/demangle.h diff --git a/contrib/libg++/include/floatformat.h b/libg++/include/floatformat.h similarity index 100% rename from contrib/libg++/include/floatformat.h rename to libg++/include/floatformat.h diff --git a/contrib/libg++/include/getopt.h b/libg++/include/getopt.h similarity index 100% rename from contrib/libg++/include/getopt.h rename to libg++/include/getopt.h diff --git a/contrib/libg++/include/libiberty.h b/libg++/include/libiberty.h similarity index 100% rename from contrib/libg++/include/libiberty.h rename to libg++/include/libiberty.h diff --git a/contrib/libg++/include/obstack.h b/libg++/include/obstack.h similarity index 100% rename from contrib/libg++/include/obstack.h rename to libg++/include/obstack.h diff --git a/contrib/libg++/libg++/ChangeLog b/libg++/libg++/ChangeLog similarity index 100% rename from contrib/libg++/libg++/ChangeLog rename to libg++/libg++/ChangeLog diff --git a/contrib/libg++/libg++/Makefile.in b/libg++/libg++/Makefile.in similarity index 100% rename from contrib/libg++/libg++/Makefile.in rename to libg++/libg++/Makefile.in diff --git a/contrib/libg++/libg++/NEWS b/libg++/libg++/NEWS similarity index 100% rename from contrib/libg++/libg++/NEWS rename to libg++/libg++/NEWS diff --git a/contrib/libg++/libg++/README b/libg++/libg++/README similarity index 100% rename from contrib/libg++/libg++/README rename to libg++/libg++/README diff --git a/contrib/libg++/libg++/README.SHLIB b/libg++/libg++/README.SHLIB similarity index 100% rename from contrib/libg++/libg++/README.SHLIB rename to libg++/libg++/README.SHLIB diff --git a/contrib/libg++/libg++/TODO b/libg++/libg++/TODO similarity index 100% rename from contrib/libg++/libg++/TODO rename to libg++/libg++/TODO diff --git a/contrib/libg++/libg++/g++FAQ.texi b/libg++/libg++/g++FAQ.texi similarity index 100% rename from contrib/libg++/libg++/g++FAQ.texi rename to libg++/libg++/g++FAQ.texi diff --git a/contrib/libg++/libg++/genclass/ChangeLog b/libg++/libg++/genclass/ChangeLog similarity index 100% rename from contrib/libg++/libg++/genclass/ChangeLog rename to libg++/libg++/genclass/ChangeLog diff --git a/contrib/libg++/libg++/genclass/Makefile.in b/libg++/libg++/genclass/Makefile.in similarity index 100% rename from contrib/libg++/libg++/genclass/Makefile.in rename to libg++/libg++/genclass/Makefile.in diff --git a/contrib/libg++/libg++/genclass/configure.in b/libg++/libg++/genclass/configure.in similarity index 100% rename from contrib/libg++/libg++/genclass/configure.in rename to libg++/libg++/genclass/configure.in diff --git a/contrib/libg++/libg++/genclass/expected.out b/libg++/libg++/genclass/expected.out similarity index 100% rename from contrib/libg++/libg++/genclass/expected.out rename to libg++/libg++/genclass/expected.out diff --git a/contrib/libg++/libg++/genclass/genclass.sh b/libg++/libg++/genclass/genclass.sh similarity index 100% rename from contrib/libg++/libg++/genclass/genclass.sh rename to libg++/libg++/genclass/genclass.sh diff --git a/contrib/libg++/libg++/genclass/gentest.sh b/libg++/libg++/genclass/gentest.sh similarity index 100% rename from contrib/libg++/libg++/genclass/gentest.sh rename to libg++/libg++/genclass/gentest.sh diff --git a/contrib/libg++/libg++/libg++.texi b/libg++/libg++/libg++.texi similarity index 100% rename from contrib/libg++/libg++/libg++.texi rename to libg++/libg++/libg++.texi diff --git a/contrib/libg++/libg++/src/ACG.cc b/libg++/libg++/src/ACG.cc similarity index 100% rename from contrib/libg++/libg++/src/ACG.cc rename to libg++/libg++/src/ACG.cc diff --git a/contrib/libg++/libg++/src/ACG.h b/libg++/libg++/src/ACG.h similarity index 100% rename from contrib/libg++/libg++/src/ACG.h rename to libg++/libg++/src/ACG.h diff --git a/contrib/libg++/libg++/src/AllocRing.cc b/libg++/libg++/src/AllocRing.cc similarity index 100% rename from contrib/libg++/libg++/src/AllocRing.cc rename to libg++/libg++/src/AllocRing.cc diff --git a/contrib/libg++/libg++/src/AllocRing.h b/libg++/libg++/src/AllocRing.h similarity index 100% rename from contrib/libg++/libg++/src/AllocRing.h rename to libg++/libg++/src/AllocRing.h diff --git a/contrib/libg++/libg++/src/Binomial.cc b/libg++/libg++/src/Binomial.cc similarity index 100% rename from contrib/libg++/libg++/src/Binomial.cc rename to libg++/libg++/src/Binomial.cc diff --git a/contrib/libg++/libg++/src/Binomial.h b/libg++/libg++/src/Binomial.h similarity index 100% rename from contrib/libg++/libg++/src/Binomial.h rename to libg++/libg++/src/Binomial.h diff --git a/contrib/libg++/libg++/src/BitSet.cc b/libg++/libg++/src/BitSet.cc similarity index 100% rename from contrib/libg++/libg++/src/BitSet.cc rename to libg++/libg++/src/BitSet.cc diff --git a/contrib/libg++/libg++/src/BitSet.h b/libg++/libg++/src/BitSet.h similarity index 100% rename from contrib/libg++/libg++/src/BitSet.h rename to libg++/libg++/src/BitSet.h diff --git a/contrib/libg++/libg++/src/BitString.cc b/libg++/libg++/src/BitString.cc similarity index 100% rename from contrib/libg++/libg++/src/BitString.cc rename to libg++/libg++/src/BitString.cc diff --git a/contrib/libg++/libg++/src/BitString.h b/libg++/libg++/src/BitString.h similarity index 100% rename from contrib/libg++/libg++/src/BitString.h rename to libg++/libg++/src/BitString.h diff --git a/contrib/libg++/libg++/src/ChangeLog b/libg++/libg++/src/ChangeLog similarity index 100% rename from contrib/libg++/libg++/src/ChangeLog rename to libg++/libg++/src/ChangeLog diff --git a/contrib/libg++/libg++/src/Complex.h b/libg++/libg++/src/Complex.h similarity index 100% rename from contrib/libg++/libg++/src/Complex.h rename to libg++/libg++/src/Complex.h diff --git a/contrib/libg++/libg++/src/CursesW.cc b/libg++/libg++/src/CursesW.cc similarity index 100% rename from contrib/libg++/libg++/src/CursesW.cc rename to libg++/libg++/src/CursesW.cc diff --git a/contrib/libg++/libg++/src/CursesW.h b/libg++/libg++/src/CursesW.h similarity index 100% rename from contrib/libg++/libg++/src/CursesW.h rename to libg++/libg++/src/CursesW.h diff --git a/contrib/libg++/libg++/src/DLList.cc b/libg++/libg++/src/DLList.cc similarity index 100% rename from contrib/libg++/libg++/src/DLList.cc rename to libg++/libg++/src/DLList.cc diff --git a/contrib/libg++/libg++/src/DLList.h b/libg++/libg++/src/DLList.h similarity index 100% rename from contrib/libg++/libg++/src/DLList.h rename to libg++/libg++/src/DLList.h diff --git a/contrib/libg++/libg++/src/DiscUnif.cc b/libg++/libg++/src/DiscUnif.cc similarity index 100% rename from contrib/libg++/libg++/src/DiscUnif.cc rename to libg++/libg++/src/DiscUnif.cc diff --git a/contrib/libg++/libg++/src/DiscUnif.h b/libg++/libg++/src/DiscUnif.h similarity index 100% rename from contrib/libg++/libg++/src/DiscUnif.h rename to libg++/libg++/src/DiscUnif.h diff --git a/contrib/libg++/libg++/src/Erlang.cc b/libg++/libg++/src/Erlang.cc similarity index 100% rename from contrib/libg++/libg++/src/Erlang.cc rename to libg++/libg++/src/Erlang.cc diff --git a/contrib/libg++/libg++/src/Erlang.h b/libg++/libg++/src/Erlang.h similarity index 100% rename from contrib/libg++/libg++/src/Erlang.h rename to libg++/libg++/src/Erlang.h diff --git a/contrib/libg++/libg++/src/Fix.cc b/libg++/libg++/src/Fix.cc similarity index 100% rename from contrib/libg++/libg++/src/Fix.cc rename to libg++/libg++/src/Fix.cc diff --git a/contrib/libg++/libg++/src/Fix.h b/libg++/libg++/src/Fix.h similarity index 100% rename from contrib/libg++/libg++/src/Fix.h rename to libg++/libg++/src/Fix.h diff --git a/contrib/libg++/libg++/src/Fix16.cc b/libg++/libg++/src/Fix16.cc similarity index 100% rename from contrib/libg++/libg++/src/Fix16.cc rename to libg++/libg++/src/Fix16.cc diff --git a/contrib/libg++/libg++/src/Fix16.h b/libg++/libg++/src/Fix16.h similarity index 100% rename from contrib/libg++/libg++/src/Fix16.h rename to libg++/libg++/src/Fix16.h diff --git a/contrib/libg++/libg++/src/Fix24.cc b/libg++/libg++/src/Fix24.cc similarity index 100% rename from contrib/libg++/libg++/src/Fix24.cc rename to libg++/libg++/src/Fix24.cc diff --git a/contrib/libg++/libg++/src/Fix24.h b/libg++/libg++/src/Fix24.h similarity index 100% rename from contrib/libg++/libg++/src/Fix24.h rename to libg++/libg++/src/Fix24.h diff --git a/contrib/libg++/libg++/src/Geom.cc b/libg++/libg++/src/Geom.cc similarity index 100% rename from contrib/libg++/libg++/src/Geom.cc rename to libg++/libg++/src/Geom.cc diff --git a/contrib/libg++/libg++/src/Geom.h b/libg++/libg++/src/Geom.h similarity index 100% rename from contrib/libg++/libg++/src/Geom.h rename to libg++/libg++/src/Geom.h diff --git a/contrib/libg++/libg++/src/GetOpt.cc b/libg++/libg++/src/GetOpt.cc similarity index 100% rename from contrib/libg++/libg++/src/GetOpt.cc rename to libg++/libg++/src/GetOpt.cc diff --git a/contrib/libg++/libg++/src/GetOpt.h b/libg++/libg++/src/GetOpt.h similarity index 100% rename from contrib/libg++/libg++/src/GetOpt.h rename to libg++/libg++/src/GetOpt.h diff --git a/contrib/libg++/libg++/src/HypGeom.cc b/libg++/libg++/src/HypGeom.cc similarity index 100% rename from contrib/libg++/libg++/src/HypGeom.cc rename to libg++/libg++/src/HypGeom.cc diff --git a/contrib/libg++/libg++/src/HypGeom.h b/libg++/libg++/src/HypGeom.h similarity index 100% rename from contrib/libg++/libg++/src/HypGeom.h rename to libg++/libg++/src/HypGeom.h diff --git a/contrib/libg++/libg++/src/Incremental.h b/libg++/libg++/src/Incremental.h similarity index 100% rename from contrib/libg++/libg++/src/Incremental.h rename to libg++/libg++/src/Incremental.h diff --git a/contrib/libg++/libg++/src/Intdouble.cc b/libg++/libg++/src/Intdouble.cc similarity index 100% rename from contrib/libg++/libg++/src/Intdouble.cc rename to libg++/libg++/src/Intdouble.cc diff --git a/contrib/libg++/libg++/src/Integer.cc b/libg++/libg++/src/Integer.cc similarity index 100% rename from contrib/libg++/libg++/src/Integer.cc rename to libg++/libg++/src/Integer.cc diff --git a/contrib/libg++/libg++/src/Integer.h b/libg++/libg++/src/Integer.h similarity index 100% rename from contrib/libg++/libg++/src/Integer.h rename to libg++/libg++/src/Integer.h diff --git a/contrib/libg++/libg++/src/Integer.hP b/libg++/libg++/src/Integer.hP similarity index 100% rename from contrib/libg++/libg++/src/Integer.hP rename to libg++/libg++/src/Integer.hP diff --git a/contrib/libg++/libg++/src/LogNorm.cc b/libg++/libg++/src/LogNorm.cc similarity index 100% rename from contrib/libg++/libg++/src/LogNorm.cc rename to libg++/libg++/src/LogNorm.cc diff --git a/contrib/libg++/libg++/src/LogNorm.h b/libg++/libg++/src/LogNorm.h similarity index 100% rename from contrib/libg++/libg++/src/LogNorm.h rename to libg++/libg++/src/LogNorm.h diff --git a/contrib/libg++/libg++/src/MLCG.cc b/libg++/libg++/src/MLCG.cc similarity index 100% rename from contrib/libg++/libg++/src/MLCG.cc rename to libg++/libg++/src/MLCG.cc diff --git a/contrib/libg++/libg++/src/MLCG.h b/libg++/libg++/src/MLCG.h similarity index 100% rename from contrib/libg++/libg++/src/MLCG.h rename to libg++/libg++/src/MLCG.h diff --git a/contrib/libg++/libg++/src/Makefile.in b/libg++/libg++/src/Makefile.in similarity index 100% rename from contrib/libg++/libg++/src/Makefile.in rename to libg++/libg++/src/Makefile.in diff --git a/contrib/libg++/libg++/src/NegExp.cc b/libg++/libg++/src/NegExp.cc similarity index 100% rename from contrib/libg++/libg++/src/NegExp.cc rename to libg++/libg++/src/NegExp.cc diff --git a/contrib/libg++/libg++/src/NegExp.h b/libg++/libg++/src/NegExp.h similarity index 100% rename from contrib/libg++/libg++/src/NegExp.h rename to libg++/libg++/src/NegExp.h diff --git a/contrib/libg++/libg++/src/Normal.cc b/libg++/libg++/src/Normal.cc similarity index 100% rename from contrib/libg++/libg++/src/Normal.cc rename to libg++/libg++/src/Normal.cc diff --git a/contrib/libg++/libg++/src/Normal.h b/libg++/libg++/src/Normal.h similarity index 100% rename from contrib/libg++/libg++/src/Normal.h rename to libg++/libg++/src/Normal.h diff --git a/contrib/libg++/libg++/src/Obstack.cc b/libg++/libg++/src/Obstack.cc similarity index 100% rename from contrib/libg++/libg++/src/Obstack.cc rename to libg++/libg++/src/Obstack.cc diff --git a/contrib/libg++/libg++/src/Obstack.h b/libg++/libg++/src/Obstack.h similarity index 100% rename from contrib/libg++/libg++/src/Obstack.h rename to libg++/libg++/src/Obstack.h diff --git a/contrib/libg++/libg++/src/Pix.h b/libg++/libg++/src/Pix.h similarity index 100% rename from contrib/libg++/libg++/src/Pix.h rename to libg++/libg++/src/Pix.h diff --git a/contrib/libg++/libg++/src/Poisson.cc b/libg++/libg++/src/Poisson.cc similarity index 100% rename from contrib/libg++/libg++/src/Poisson.cc rename to libg++/libg++/src/Poisson.cc diff --git a/contrib/libg++/libg++/src/Poisson.h b/libg++/libg++/src/Poisson.h similarity index 100% rename from contrib/libg++/libg++/src/Poisson.h rename to libg++/libg++/src/Poisson.h diff --git a/contrib/libg++/libg++/src/RNG.cc b/libg++/libg++/src/RNG.cc similarity index 100% rename from contrib/libg++/libg++/src/RNG.cc rename to libg++/libg++/src/RNG.cc diff --git a/contrib/libg++/libg++/src/RNG.h b/libg++/libg++/src/RNG.h similarity index 100% rename from contrib/libg++/libg++/src/RNG.h rename to libg++/libg++/src/RNG.h diff --git a/contrib/libg++/libg++/src/Random.cc b/libg++/libg++/src/Random.cc similarity index 100% rename from contrib/libg++/libg++/src/Random.cc rename to libg++/libg++/src/Random.cc diff --git a/contrib/libg++/libg++/src/Random.h b/libg++/libg++/src/Random.h similarity index 100% rename from contrib/libg++/libg++/src/Random.h rename to libg++/libg++/src/Random.h diff --git a/contrib/libg++/libg++/src/Rational.cc b/libg++/libg++/src/Rational.cc similarity index 100% rename from contrib/libg++/libg++/src/Rational.cc rename to libg++/libg++/src/Rational.cc diff --git a/contrib/libg++/libg++/src/Rational.h b/libg++/libg++/src/Rational.h similarity index 100% rename from contrib/libg++/libg++/src/Rational.h rename to libg++/libg++/src/Rational.h diff --git a/contrib/libg++/libg++/src/Regex.cc b/libg++/libg++/src/Regex.cc similarity index 100% rename from contrib/libg++/libg++/src/Regex.cc rename to libg++/libg++/src/Regex.cc diff --git a/contrib/libg++/libg++/src/Regex.h b/libg++/libg++/src/Regex.h similarity index 100% rename from contrib/libg++/libg++/src/Regex.h rename to libg++/libg++/src/Regex.h diff --git a/contrib/libg++/libg++/src/RndInt.cc b/libg++/libg++/src/RndInt.cc similarity index 100% rename from contrib/libg++/libg++/src/RndInt.cc rename to libg++/libg++/src/RndInt.cc diff --git a/contrib/libg++/libg++/src/RndInt.h b/libg++/libg++/src/RndInt.h similarity index 100% rename from contrib/libg++/libg++/src/RndInt.h rename to libg++/libg++/src/RndInt.h diff --git a/contrib/libg++/libg++/src/SLList.cc b/libg++/libg++/src/SLList.cc similarity index 100% rename from contrib/libg++/libg++/src/SLList.cc rename to libg++/libg++/src/SLList.cc diff --git a/contrib/libg++/libg++/src/SLList.h b/libg++/libg++/src/SLList.h similarity index 100% rename from contrib/libg++/libg++/src/SLList.h rename to libg++/libg++/src/SLList.h diff --git a/contrib/libg++/libg++/src/Sample.cc b/libg++/libg++/src/Sample.cc similarity index 100% rename from contrib/libg++/libg++/src/Sample.cc rename to libg++/libg++/src/Sample.cc diff --git a/contrib/libg++/libg++/src/SmplHist.cc b/libg++/libg++/src/SmplHist.cc similarity index 100% rename from contrib/libg++/libg++/src/SmplHist.cc rename to libg++/libg++/src/SmplHist.cc diff --git a/contrib/libg++/libg++/src/SmplHist.h b/libg++/libg++/src/SmplHist.h similarity index 100% rename from contrib/libg++/libg++/src/SmplHist.h rename to libg++/libg++/src/SmplHist.h diff --git a/contrib/libg++/libg++/src/SmplStat.cc b/libg++/libg++/src/SmplStat.cc similarity index 100% rename from contrib/libg++/libg++/src/SmplStat.cc rename to libg++/libg++/src/SmplStat.cc diff --git a/contrib/libg++/libg++/src/SmplStat.h b/libg++/libg++/src/SmplStat.h similarity index 100% rename from contrib/libg++/libg++/src/SmplStat.h rename to libg++/libg++/src/SmplStat.h diff --git a/contrib/libg++/libg++/src/String.cc b/libg++/libg++/src/String.cc similarity index 100% rename from contrib/libg++/libg++/src/String.cc rename to libg++/libg++/src/String.cc diff --git a/contrib/libg++/libg++/src/String.h b/libg++/libg++/src/String.h similarity index 100% rename from contrib/libg++/libg++/src/String.h rename to libg++/libg++/src/String.h diff --git a/contrib/libg++/libg++/src/Uniform.cc b/libg++/libg++/src/Uniform.cc similarity index 100% rename from contrib/libg++/libg++/src/Uniform.cc rename to libg++/libg++/src/Uniform.cc diff --git a/contrib/libg++/libg++/src/Uniform.h b/libg++/libg++/src/Uniform.h similarity index 100% rename from contrib/libg++/libg++/src/Uniform.h rename to libg++/libg++/src/Uniform.h diff --git a/contrib/libg++/libg++/src/Weibull.cc b/libg++/libg++/src/Weibull.cc similarity index 100% rename from contrib/libg++/libg++/src/Weibull.cc rename to libg++/libg++/src/Weibull.cc diff --git a/contrib/libg++/libg++/src/Weibull.h b/libg++/libg++/src/Weibull.h similarity index 100% rename from contrib/libg++/libg++/src/Weibull.h rename to libg++/libg++/src/Weibull.h diff --git a/contrib/libg++/libg++/src/bitand.c b/libg++/libg++/src/bitand.c similarity index 100% rename from contrib/libg++/libg++/src/bitand.c rename to libg++/libg++/src/bitand.c diff --git a/contrib/libg++/libg++/src/bitany.c b/libg++/libg++/src/bitany.c similarity index 100% rename from contrib/libg++/libg++/src/bitany.c rename to libg++/libg++/src/bitany.c diff --git a/contrib/libg++/libg++/src/bitblt.c b/libg++/libg++/src/bitblt.c similarity index 100% rename from contrib/libg++/libg++/src/bitblt.c rename to libg++/libg++/src/bitblt.c diff --git a/contrib/libg++/libg++/src/bitclear.c b/libg++/libg++/src/bitclear.c similarity index 100% rename from contrib/libg++/libg++/src/bitclear.c rename to libg++/libg++/src/bitclear.c diff --git a/contrib/libg++/libg++/src/bitcopy.c b/libg++/libg++/src/bitcopy.c similarity index 100% rename from contrib/libg++/libg++/src/bitcopy.c rename to libg++/libg++/src/bitcopy.c diff --git a/contrib/libg++/libg++/src/bitcount.c b/libg++/libg++/src/bitcount.c similarity index 100% rename from contrib/libg++/libg++/src/bitcount.c rename to libg++/libg++/src/bitcount.c diff --git a/contrib/libg++/libg++/src/bitdo1.h b/libg++/libg++/src/bitdo1.h similarity index 100% rename from contrib/libg++/libg++/src/bitdo1.h rename to libg++/libg++/src/bitdo1.h diff --git a/contrib/libg++/libg++/src/bitdo2.h b/libg++/libg++/src/bitdo2.h similarity index 100% rename from contrib/libg++/libg++/src/bitdo2.h rename to libg++/libg++/src/bitdo2.h diff --git a/contrib/libg++/libg++/src/bitinvert.c b/libg++/libg++/src/bitinvert.c similarity index 100% rename from contrib/libg++/libg++/src/bitinvert.c rename to libg++/libg++/src/bitinvert.c diff --git a/contrib/libg++/libg++/src/bitlcomp.c b/libg++/libg++/src/bitlcomp.c similarity index 100% rename from contrib/libg++/libg++/src/bitlcomp.c rename to libg++/libg++/src/bitlcomp.c diff --git a/contrib/libg++/libg++/src/bitprims.h b/libg++/libg++/src/bitprims.h similarity index 100% rename from contrib/libg++/libg++/src/bitprims.h rename to libg++/libg++/src/bitprims.h diff --git a/contrib/libg++/libg++/src/bitset1.c b/libg++/libg++/src/bitset1.c similarity index 100% rename from contrib/libg++/libg++/src/bitset1.c rename to libg++/libg++/src/bitset1.c diff --git a/contrib/libg++/libg++/src/bitxor.c b/libg++/libg++/src/bitxor.c similarity index 100% rename from contrib/libg++/libg++/src/bitxor.c rename to libg++/libg++/src/bitxor.c diff --git a/contrib/libg++/libg++/src/bool.h b/libg++/libg++/src/bool.h similarity index 100% rename from contrib/libg++/libg++/src/bool.h rename to libg++/libg++/src/bool.h diff --git a/contrib/libg++/libg++/src/builtin.cc b/libg++/libg++/src/builtin.cc similarity index 100% rename from contrib/libg++/libg++/src/builtin.cc rename to libg++/libg++/src/builtin.cc diff --git a/contrib/libg++/libg++/src/builtin.h b/libg++/libg++/src/builtin.h similarity index 100% rename from contrib/libg++/libg++/src/builtin.h rename to libg++/libg++/src/builtin.h diff --git a/contrib/libg++/libg++/src/compare.cc b/libg++/libg++/src/compare.cc similarity index 100% rename from contrib/libg++/libg++/src/compare.cc rename to libg++/libg++/src/compare.cc diff --git a/contrib/libg++/libg++/src/compare.h b/libg++/libg++/src/compare.h similarity index 100% rename from contrib/libg++/libg++/src/compare.h rename to libg++/libg++/src/compare.h diff --git a/contrib/libg++/libg++/src/configure.in b/libg++/libg++/src/configure.in similarity index 100% rename from contrib/libg++/libg++/src/configure.in rename to libg++/libg++/src/configure.in diff --git a/contrib/libg++/libg++/src/depend b/libg++/libg++/src/depend similarity index 100% rename from contrib/libg++/libg++/src/depend rename to libg++/libg++/src/depend diff --git a/contrib/libg++/libg++/src/dtoa.cc b/libg++/libg++/src/dtoa.cc similarity index 100% rename from contrib/libg++/libg++/src/dtoa.cc rename to libg++/libg++/src/dtoa.cc diff --git a/contrib/libg++/libg++/src/error.cc b/libg++/libg++/src/error.cc similarity index 100% rename from contrib/libg++/libg++/src/error.cc rename to libg++/libg++/src/error.cc diff --git a/contrib/libg++/libg++/src/fmtq.cc b/libg++/libg++/src/fmtq.cc similarity index 100% rename from contrib/libg++/libg++/src/fmtq.cc rename to libg++/libg++/src/fmtq.cc diff --git a/contrib/libg++/libg++/src/gcd.cc b/libg++/libg++/src/gcd.cc similarity index 100% rename from contrib/libg++/libg++/src/gcd.cc rename to libg++/libg++/src/gcd.cc diff --git a/contrib/libg++/libg++/src/gen/AVLMap.ccP b/libg++/libg++/src/gen/AVLMap.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/AVLMap.ccP rename to libg++/libg++/src/gen/AVLMap.ccP diff --git a/contrib/libg++/libg++/src/gen/AVLMap.hP b/libg++/libg++/src/gen/AVLMap.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/AVLMap.hP rename to libg++/libg++/src/gen/AVLMap.hP diff --git a/contrib/libg++/libg++/src/gen/AVLSet.ccP b/libg++/libg++/src/gen/AVLSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/AVLSet.ccP rename to libg++/libg++/src/gen/AVLSet.ccP diff --git a/contrib/libg++/libg++/src/gen/AVLSet.hP b/libg++/libg++/src/gen/AVLSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/AVLSet.hP rename to libg++/libg++/src/gen/AVLSet.hP diff --git a/contrib/libg++/libg++/src/gen/AVec.ccP b/libg++/libg++/src/gen/AVec.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/AVec.ccP rename to libg++/libg++/src/gen/AVec.ccP diff --git a/contrib/libg++/libg++/src/gen/AVec.hP b/libg++/libg++/src/gen/AVec.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/AVec.hP rename to libg++/libg++/src/gen/AVec.hP diff --git a/contrib/libg++/libg++/src/gen/BSTSet.ccP b/libg++/libg++/src/gen/BSTSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/BSTSet.ccP rename to libg++/libg++/src/gen/BSTSet.ccP diff --git a/contrib/libg++/libg++/src/gen/BSTSet.hP b/libg++/libg++/src/gen/BSTSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/BSTSet.hP rename to libg++/libg++/src/gen/BSTSet.hP diff --git a/contrib/libg++/libg++/src/gen/Bag.ccP b/libg++/libg++/src/gen/Bag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Bag.ccP rename to libg++/libg++/src/gen/Bag.ccP diff --git a/contrib/libg++/libg++/src/gen/Bag.hP b/libg++/libg++/src/gen/Bag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Bag.hP rename to libg++/libg++/src/gen/Bag.hP diff --git a/contrib/libg++/libg++/src/gen/CHBag.ccP b/libg++/libg++/src/gen/CHBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHBag.ccP rename to libg++/libg++/src/gen/CHBag.ccP diff --git a/contrib/libg++/libg++/src/gen/CHBag.hP b/libg++/libg++/src/gen/CHBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHBag.hP rename to libg++/libg++/src/gen/CHBag.hP diff --git a/contrib/libg++/libg++/src/gen/CHMap.ccP b/libg++/libg++/src/gen/CHMap.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHMap.ccP rename to libg++/libg++/src/gen/CHMap.ccP diff --git a/contrib/libg++/libg++/src/gen/CHMap.hP b/libg++/libg++/src/gen/CHMap.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHMap.hP rename to libg++/libg++/src/gen/CHMap.hP diff --git a/contrib/libg++/libg++/src/gen/CHNode.ccP b/libg++/libg++/src/gen/CHNode.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHNode.ccP rename to libg++/libg++/src/gen/CHNode.ccP diff --git a/contrib/libg++/libg++/src/gen/CHNode.hP b/libg++/libg++/src/gen/CHNode.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHNode.hP rename to libg++/libg++/src/gen/CHNode.hP diff --git a/contrib/libg++/libg++/src/gen/CHSet.ccP b/libg++/libg++/src/gen/CHSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHSet.ccP rename to libg++/libg++/src/gen/CHSet.ccP diff --git a/contrib/libg++/libg++/src/gen/CHSet.hP b/libg++/libg++/src/gen/CHSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/CHSet.hP rename to libg++/libg++/src/gen/CHSet.hP diff --git a/contrib/libg++/libg++/src/gen/DLDeque.ccP b/libg++/libg++/src/gen/DLDeque.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/DLDeque.ccP rename to libg++/libg++/src/gen/DLDeque.ccP diff --git a/contrib/libg++/libg++/src/gen/DLDeque.hP b/libg++/libg++/src/gen/DLDeque.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/DLDeque.hP rename to libg++/libg++/src/gen/DLDeque.hP diff --git a/contrib/libg++/libg++/src/gen/DLList.ccP b/libg++/libg++/src/gen/DLList.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/DLList.ccP rename to libg++/libg++/src/gen/DLList.ccP diff --git a/contrib/libg++/libg++/src/gen/DLList.hP b/libg++/libg++/src/gen/DLList.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/DLList.hP rename to libg++/libg++/src/gen/DLList.hP diff --git a/contrib/libg++/libg++/src/gen/Deque.ccP b/libg++/libg++/src/gen/Deque.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Deque.ccP rename to libg++/libg++/src/gen/Deque.ccP diff --git a/contrib/libg++/libg++/src/gen/Deque.hP b/libg++/libg++/src/gen/Deque.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Deque.hP rename to libg++/libg++/src/gen/Deque.hP diff --git a/contrib/libg++/libg++/src/gen/FPQueue.ccP b/libg++/libg++/src/gen/FPQueue.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/FPQueue.ccP rename to libg++/libg++/src/gen/FPQueue.ccP diff --git a/contrib/libg++/libg++/src/gen/FPQueue.hP b/libg++/libg++/src/gen/FPQueue.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/FPQueue.hP rename to libg++/libg++/src/gen/FPQueue.hP diff --git a/contrib/libg++/libg++/src/gen/FPStack.ccP b/libg++/libg++/src/gen/FPStack.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/FPStack.ccP rename to libg++/libg++/src/gen/FPStack.ccP diff --git a/contrib/libg++/libg++/src/gen/FPStack.hP b/libg++/libg++/src/gen/FPStack.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/FPStack.hP rename to libg++/libg++/src/gen/FPStack.hP diff --git a/contrib/libg++/libg++/src/gen/FPlex.ccP b/libg++/libg++/src/gen/FPlex.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/FPlex.ccP rename to libg++/libg++/src/gen/FPlex.ccP diff --git a/contrib/libg++/libg++/src/gen/FPlex.hP b/libg++/libg++/src/gen/FPlex.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/FPlex.hP rename to libg++/libg++/src/gen/FPlex.hP diff --git a/contrib/libg++/libg++/src/gen/List.ccP b/libg++/libg++/src/gen/List.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/List.ccP rename to libg++/libg++/src/gen/List.ccP diff --git a/contrib/libg++/libg++/src/gen/List.hP b/libg++/libg++/src/gen/List.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/List.hP rename to libg++/libg++/src/gen/List.hP diff --git a/contrib/libg++/libg++/src/gen/MPlex.ccP b/libg++/libg++/src/gen/MPlex.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/MPlex.ccP rename to libg++/libg++/src/gen/MPlex.ccP diff --git a/contrib/libg++/libg++/src/gen/MPlex.hP b/libg++/libg++/src/gen/MPlex.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/MPlex.hP rename to libg++/libg++/src/gen/MPlex.hP diff --git a/contrib/libg++/libg++/src/gen/Map.ccP b/libg++/libg++/src/gen/Map.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Map.ccP rename to libg++/libg++/src/gen/Map.ccP diff --git a/contrib/libg++/libg++/src/gen/Map.hP b/libg++/libg++/src/gen/Map.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Map.hP rename to libg++/libg++/src/gen/Map.hP diff --git a/contrib/libg++/libg++/src/gen/OSLBag.ccP b/libg++/libg++/src/gen/OSLBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/OSLBag.ccP rename to libg++/libg++/src/gen/OSLBag.ccP diff --git a/contrib/libg++/libg++/src/gen/OSLBag.hP b/libg++/libg++/src/gen/OSLBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/OSLBag.hP rename to libg++/libg++/src/gen/OSLBag.hP diff --git a/contrib/libg++/libg++/src/gen/OSLSet.ccP b/libg++/libg++/src/gen/OSLSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/OSLSet.ccP rename to libg++/libg++/src/gen/OSLSet.ccP diff --git a/contrib/libg++/libg++/src/gen/OSLSet.hP b/libg++/libg++/src/gen/OSLSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/OSLSet.hP rename to libg++/libg++/src/gen/OSLSet.hP diff --git a/contrib/libg++/libg++/src/gen/OXPBag.ccP b/libg++/libg++/src/gen/OXPBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/OXPBag.ccP rename to libg++/libg++/src/gen/OXPBag.ccP diff --git a/contrib/libg++/libg++/src/gen/OXPBag.hP b/libg++/libg++/src/gen/OXPBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/OXPBag.hP rename to libg++/libg++/src/gen/OXPBag.hP diff --git a/contrib/libg++/libg++/src/gen/OXPSet.ccP b/libg++/libg++/src/gen/OXPSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/OXPSet.ccP rename to libg++/libg++/src/gen/OXPSet.ccP diff --git a/contrib/libg++/libg++/src/gen/OXPSet.hP b/libg++/libg++/src/gen/OXPSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/OXPSet.hP rename to libg++/libg++/src/gen/OXPSet.hP diff --git a/contrib/libg++/libg++/src/gen/PHPQ.ccP b/libg++/libg++/src/gen/PHPQ.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/PHPQ.ccP rename to libg++/libg++/src/gen/PHPQ.ccP diff --git a/contrib/libg++/libg++/src/gen/PHPQ.hP b/libg++/libg++/src/gen/PHPQ.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/PHPQ.hP rename to libg++/libg++/src/gen/PHPQ.hP diff --git a/contrib/libg++/libg++/src/gen/PQ.ccP b/libg++/libg++/src/gen/PQ.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/PQ.ccP rename to libg++/libg++/src/gen/PQ.ccP diff --git a/contrib/libg++/libg++/src/gen/PQ.hP b/libg++/libg++/src/gen/PQ.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/PQ.hP rename to libg++/libg++/src/gen/PQ.hP diff --git a/contrib/libg++/libg++/src/gen/PSList.hP b/libg++/libg++/src/gen/PSList.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/PSList.hP rename to libg++/libg++/src/gen/PSList.hP diff --git a/contrib/libg++/libg++/src/gen/PVec.hP b/libg++/libg++/src/gen/PVec.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/PVec.hP rename to libg++/libg++/src/gen/PVec.hP diff --git a/contrib/libg++/libg++/src/gen/Plex.ccP b/libg++/libg++/src/gen/Plex.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Plex.ccP rename to libg++/libg++/src/gen/Plex.ccP diff --git a/contrib/libg++/libg++/src/gen/Plex.hP b/libg++/libg++/src/gen/Plex.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Plex.hP rename to libg++/libg++/src/gen/Plex.hP diff --git a/contrib/libg++/libg++/src/gen/Queue.ccP b/libg++/libg++/src/gen/Queue.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Queue.ccP rename to libg++/libg++/src/gen/Queue.ccP diff --git a/contrib/libg++/libg++/src/gen/Queue.hP b/libg++/libg++/src/gen/Queue.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Queue.hP rename to libg++/libg++/src/gen/Queue.hP diff --git a/contrib/libg++/libg++/src/gen/RAVLMap.ccP b/libg++/libg++/src/gen/RAVLMap.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/RAVLMap.ccP rename to libg++/libg++/src/gen/RAVLMap.ccP diff --git a/contrib/libg++/libg++/src/gen/RAVLMap.hP b/libg++/libg++/src/gen/RAVLMap.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/RAVLMap.hP rename to libg++/libg++/src/gen/RAVLMap.hP diff --git a/contrib/libg++/libg++/src/gen/RPlex.ccP b/libg++/libg++/src/gen/RPlex.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/RPlex.ccP rename to libg++/libg++/src/gen/RPlex.ccP diff --git a/contrib/libg++/libg++/src/gen/RPlex.hP b/libg++/libg++/src/gen/RPlex.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/RPlex.hP rename to libg++/libg++/src/gen/RPlex.hP diff --git a/contrib/libg++/libg++/src/gen/SLBag.ccP b/libg++/libg++/src/gen/SLBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLBag.ccP rename to libg++/libg++/src/gen/SLBag.ccP diff --git a/contrib/libg++/libg++/src/gen/SLBag.hP b/libg++/libg++/src/gen/SLBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLBag.hP rename to libg++/libg++/src/gen/SLBag.hP diff --git a/contrib/libg++/libg++/src/gen/SLList.ccP b/libg++/libg++/src/gen/SLList.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLList.ccP rename to libg++/libg++/src/gen/SLList.ccP diff --git a/contrib/libg++/libg++/src/gen/SLList.hP b/libg++/libg++/src/gen/SLList.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLList.hP rename to libg++/libg++/src/gen/SLList.hP diff --git a/contrib/libg++/libg++/src/gen/SLQueue.ccP b/libg++/libg++/src/gen/SLQueue.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLQueue.ccP rename to libg++/libg++/src/gen/SLQueue.ccP diff --git a/contrib/libg++/libg++/src/gen/SLQueue.hP b/libg++/libg++/src/gen/SLQueue.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLQueue.hP rename to libg++/libg++/src/gen/SLQueue.hP diff --git a/contrib/libg++/libg++/src/gen/SLSet.ccP b/libg++/libg++/src/gen/SLSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLSet.ccP rename to libg++/libg++/src/gen/SLSet.ccP diff --git a/contrib/libg++/libg++/src/gen/SLSet.hP b/libg++/libg++/src/gen/SLSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLSet.hP rename to libg++/libg++/src/gen/SLSet.hP diff --git a/contrib/libg++/libg++/src/gen/SLStack.ccP b/libg++/libg++/src/gen/SLStack.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLStack.ccP rename to libg++/libg++/src/gen/SLStack.ccP diff --git a/contrib/libg++/libg++/src/gen/SLStack.hP b/libg++/libg++/src/gen/SLStack.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SLStack.hP rename to libg++/libg++/src/gen/SLStack.hP diff --git a/contrib/libg++/libg++/src/gen/Set.ccP b/libg++/libg++/src/gen/Set.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Set.ccP rename to libg++/libg++/src/gen/Set.ccP diff --git a/contrib/libg++/libg++/src/gen/Set.hP b/libg++/libg++/src/gen/Set.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Set.hP rename to libg++/libg++/src/gen/Set.hP diff --git a/contrib/libg++/libg++/src/gen/SkipBag.ccP b/libg++/libg++/src/gen/SkipBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SkipBag.ccP rename to libg++/libg++/src/gen/SkipBag.ccP diff --git a/contrib/libg++/libg++/src/gen/SkipBag.hP b/libg++/libg++/src/gen/SkipBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SkipBag.hP rename to libg++/libg++/src/gen/SkipBag.hP diff --git a/contrib/libg++/libg++/src/gen/SkipMap.ccP b/libg++/libg++/src/gen/SkipMap.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SkipMap.ccP rename to libg++/libg++/src/gen/SkipMap.ccP diff --git a/contrib/libg++/libg++/src/gen/SkipMap.hP b/libg++/libg++/src/gen/SkipMap.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SkipMap.hP rename to libg++/libg++/src/gen/SkipMap.hP diff --git a/contrib/libg++/libg++/src/gen/SkipSet.ccP b/libg++/libg++/src/gen/SkipSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SkipSet.ccP rename to libg++/libg++/src/gen/SkipSet.ccP diff --git a/contrib/libg++/libg++/src/gen/SkipSet.hP b/libg++/libg++/src/gen/SkipSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SkipSet.hP rename to libg++/libg++/src/gen/SkipSet.hP diff --git a/contrib/libg++/libg++/src/gen/SplayBag.ccP b/libg++/libg++/src/gen/SplayBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayBag.ccP rename to libg++/libg++/src/gen/SplayBag.ccP diff --git a/contrib/libg++/libg++/src/gen/SplayBag.hP b/libg++/libg++/src/gen/SplayBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayBag.hP rename to libg++/libg++/src/gen/SplayBag.hP diff --git a/contrib/libg++/libg++/src/gen/SplayMap.ccP b/libg++/libg++/src/gen/SplayMap.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayMap.ccP rename to libg++/libg++/src/gen/SplayMap.ccP diff --git a/contrib/libg++/libg++/src/gen/SplayMap.hP b/libg++/libg++/src/gen/SplayMap.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayMap.hP rename to libg++/libg++/src/gen/SplayMap.hP diff --git a/contrib/libg++/libg++/src/gen/SplayNode.ccP b/libg++/libg++/src/gen/SplayNode.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayNode.ccP rename to libg++/libg++/src/gen/SplayNode.ccP diff --git a/contrib/libg++/libg++/src/gen/SplayNode.hP b/libg++/libg++/src/gen/SplayNode.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayNode.hP rename to libg++/libg++/src/gen/SplayNode.hP diff --git a/contrib/libg++/libg++/src/gen/SplayPQ.ccP b/libg++/libg++/src/gen/SplayPQ.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayPQ.ccP rename to libg++/libg++/src/gen/SplayPQ.ccP diff --git a/contrib/libg++/libg++/src/gen/SplayPQ.hP b/libg++/libg++/src/gen/SplayPQ.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplayPQ.hP rename to libg++/libg++/src/gen/SplayPQ.hP diff --git a/contrib/libg++/libg++/src/gen/SplaySet.ccP b/libg++/libg++/src/gen/SplaySet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplaySet.ccP rename to libg++/libg++/src/gen/SplaySet.ccP diff --git a/contrib/libg++/libg++/src/gen/SplaySet.hP b/libg++/libg++/src/gen/SplaySet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/SplaySet.hP rename to libg++/libg++/src/gen/SplaySet.hP diff --git a/contrib/libg++/libg++/src/gen/Stack.ccP b/libg++/libg++/src/gen/Stack.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Stack.ccP rename to libg++/libg++/src/gen/Stack.ccP diff --git a/contrib/libg++/libg++/src/gen/Stack.hP b/libg++/libg++/src/gen/Stack.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Stack.hP rename to libg++/libg++/src/gen/Stack.hP diff --git a/contrib/libg++/libg++/src/gen/VHBag.ccP b/libg++/libg++/src/gen/VHBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/VHBag.ccP rename to libg++/libg++/src/gen/VHBag.ccP diff --git a/contrib/libg++/libg++/src/gen/VHBag.hP b/libg++/libg++/src/gen/VHBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/VHBag.hP rename to libg++/libg++/src/gen/VHBag.hP diff --git a/contrib/libg++/libg++/src/gen/VHMap.ccP b/libg++/libg++/src/gen/VHMap.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/VHMap.ccP rename to libg++/libg++/src/gen/VHMap.ccP diff --git a/contrib/libg++/libg++/src/gen/VHMap.hP b/libg++/libg++/src/gen/VHMap.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/VHMap.hP rename to libg++/libg++/src/gen/VHMap.hP diff --git a/contrib/libg++/libg++/src/gen/VHSet.ccP b/libg++/libg++/src/gen/VHSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/VHSet.ccP rename to libg++/libg++/src/gen/VHSet.ccP diff --git a/contrib/libg++/libg++/src/gen/VHSet.hP b/libg++/libg++/src/gen/VHSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/VHSet.hP rename to libg++/libg++/src/gen/VHSet.hP diff --git a/contrib/libg++/libg++/src/gen/VOHSet.ccP b/libg++/libg++/src/gen/VOHSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/VOHSet.ccP rename to libg++/libg++/src/gen/VOHSet.ccP diff --git a/contrib/libg++/libg++/src/gen/VOHSet.hP b/libg++/libg++/src/gen/VOHSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/VOHSet.hP rename to libg++/libg++/src/gen/VOHSet.hP diff --git a/contrib/libg++/libg++/src/gen/VQueue.ccP b/libg++/libg++/src/gen/VQueue.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/VQueue.ccP rename to libg++/libg++/src/gen/VQueue.ccP diff --git a/contrib/libg++/libg++/src/gen/VQueue.hP b/libg++/libg++/src/gen/VQueue.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/VQueue.hP rename to libg++/libg++/src/gen/VQueue.hP diff --git a/contrib/libg++/libg++/src/gen/VStack.ccP b/libg++/libg++/src/gen/VStack.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/VStack.ccP rename to libg++/libg++/src/gen/VStack.ccP diff --git a/contrib/libg++/libg++/src/gen/VStack.hP b/libg++/libg++/src/gen/VStack.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/VStack.hP rename to libg++/libg++/src/gen/VStack.hP diff --git a/contrib/libg++/libg++/src/gen/Vec.ccP b/libg++/libg++/src/gen/Vec.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/Vec.ccP rename to libg++/libg++/src/gen/Vec.ccP diff --git a/contrib/libg++/libg++/src/gen/Vec.hP b/libg++/libg++/src/gen/Vec.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/Vec.hP rename to libg++/libg++/src/gen/Vec.hP diff --git a/contrib/libg++/libg++/src/gen/XPBag.ccP b/libg++/libg++/src/gen/XPBag.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPBag.ccP rename to libg++/libg++/src/gen/XPBag.ccP diff --git a/contrib/libg++/libg++/src/gen/XPBag.hP b/libg++/libg++/src/gen/XPBag.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPBag.hP rename to libg++/libg++/src/gen/XPBag.hP diff --git a/contrib/libg++/libg++/src/gen/XPDeque.ccP b/libg++/libg++/src/gen/XPDeque.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPDeque.ccP rename to libg++/libg++/src/gen/XPDeque.ccP diff --git a/contrib/libg++/libg++/src/gen/XPDeque.hP b/libg++/libg++/src/gen/XPDeque.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPDeque.hP rename to libg++/libg++/src/gen/XPDeque.hP diff --git a/contrib/libg++/libg++/src/gen/XPPQ.ccP b/libg++/libg++/src/gen/XPPQ.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPPQ.ccP rename to libg++/libg++/src/gen/XPPQ.ccP diff --git a/contrib/libg++/libg++/src/gen/XPPQ.hP b/libg++/libg++/src/gen/XPPQ.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPPQ.hP rename to libg++/libg++/src/gen/XPPQ.hP diff --git a/contrib/libg++/libg++/src/gen/XPQueue.ccP b/libg++/libg++/src/gen/XPQueue.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPQueue.ccP rename to libg++/libg++/src/gen/XPQueue.ccP diff --git a/contrib/libg++/libg++/src/gen/XPQueue.hP b/libg++/libg++/src/gen/XPQueue.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPQueue.hP rename to libg++/libg++/src/gen/XPQueue.hP diff --git a/contrib/libg++/libg++/src/gen/XPSet.ccP b/libg++/libg++/src/gen/XPSet.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPSet.ccP rename to libg++/libg++/src/gen/XPSet.ccP diff --git a/contrib/libg++/libg++/src/gen/XPSet.hP b/libg++/libg++/src/gen/XPSet.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPSet.hP rename to libg++/libg++/src/gen/XPSet.hP diff --git a/contrib/libg++/libg++/src/gen/XPStack.ccP b/libg++/libg++/src/gen/XPStack.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPStack.ccP rename to libg++/libg++/src/gen/XPStack.ccP diff --git a/contrib/libg++/libg++/src/gen/XPStack.hP b/libg++/libg++/src/gen/XPStack.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPStack.hP rename to libg++/libg++/src/gen/XPStack.hP diff --git a/contrib/libg++/libg++/src/gen/XPlex.ccP b/libg++/libg++/src/gen/XPlex.ccP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPlex.ccP rename to libg++/libg++/src/gen/XPlex.ccP diff --git a/contrib/libg++/libg++/src/gen/XPlex.hP b/libg++/libg++/src/gen/XPlex.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/XPlex.hP rename to libg++/libg++/src/gen/XPlex.hP diff --git a/contrib/libg++/libg++/src/gen/defs.hP b/libg++/libg++/src/gen/defs.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/defs.hP rename to libg++/libg++/src/gen/defs.hP diff --git a/contrib/libg++/libg++/src/gen/intSList.hP b/libg++/libg++/src/gen/intSList.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/intSList.hP rename to libg++/libg++/src/gen/intSList.hP diff --git a/contrib/libg++/libg++/src/gen/intVec.hP b/libg++/libg++/src/gen/intVec.hP similarity index 100% rename from contrib/libg++/libg++/src/gen/intVec.hP rename to libg++/libg++/src/gen/intVec.hP diff --git a/contrib/libg++/libg++/src/generic.h b/libg++/libg++/src/generic.h similarity index 100% rename from contrib/libg++/libg++/src/generic.h rename to libg++/libg++/src/generic.h diff --git a/contrib/libg++/libg++/src/getpagesize.h b/libg++/libg++/src/getpagesize.h similarity index 100% rename from contrib/libg++/libg++/src/getpagesize.h rename to libg++/libg++/src/getpagesize.h diff --git a/contrib/libg++/libg++/src/hash.cc b/libg++/libg++/src/hash.cc similarity index 100% rename from contrib/libg++/libg++/src/hash.cc rename to libg++/libg++/src/hash.cc diff --git a/contrib/libg++/libg++/src/ioob.cc b/libg++/libg++/src/ioob.cc similarity index 100% rename from contrib/libg++/libg++/src/ioob.cc rename to libg++/libg++/src/ioob.cc diff --git a/contrib/libg++/libg++/src/lg.cc b/libg++/libg++/src/lg.cc similarity index 100% rename from contrib/libg++/libg++/src/lg.cc rename to libg++/libg++/src/lg.cc diff --git a/contrib/libg++/libg++/src/libc.h b/libg++/libg++/src/libc.h similarity index 100% rename from contrib/libg++/libg++/src/libc.h rename to libg++/libg++/src/libc.h diff --git a/contrib/libg++/libg++/src/malloc.c b/libg++/libg++/src/malloc.c similarity index 100% rename from contrib/libg++/libg++/src/malloc.c rename to libg++/libg++/src/malloc.c diff --git a/contrib/libg++/libg++/src/minmax.cc b/libg++/libg++/src/minmax.cc similarity index 100% rename from contrib/libg++/libg++/src/minmax.cc rename to libg++/libg++/src/minmax.cc diff --git a/contrib/libg++/libg++/src/minmax.h b/libg++/libg++/src/minmax.h similarity index 100% rename from contrib/libg++/libg++/src/minmax.h rename to libg++/libg++/src/minmax.h diff --git a/contrib/libg++/libg++/src/osfcn.h b/libg++/libg++/src/osfcn.h similarity index 100% rename from contrib/libg++/libg++/src/osfcn.h rename to libg++/libg++/src/osfcn.h diff --git a/contrib/libg++/libg++/src/pow.cc b/libg++/libg++/src/pow.cc similarity index 100% rename from contrib/libg++/libg++/src/pow.cc rename to libg++/libg++/src/pow.cc diff --git a/contrib/libg++/libg++/src/sqrt.cc b/libg++/libg++/src/sqrt.cc similarity index 100% rename from contrib/libg++/libg++/src/sqrt.cc rename to libg++/libg++/src/sqrt.cc diff --git a/contrib/libg++/libg++/src/std.h b/libg++/libg++/src/std.h similarity index 100% rename from contrib/libg++/libg++/src/std.h rename to libg++/libg++/src/std.h diff --git a/contrib/libg++/libg++/src/strclass.h b/libg++/libg++/src/strclass.h similarity index 100% rename from contrib/libg++/libg++/src/strclass.h rename to libg++/libg++/src/strclass.h diff --git a/contrib/libg++/libg++/src/swap.h b/libg++/libg++/src/swap.h similarity index 100% rename from contrib/libg++/libg++/src/swap.h rename to libg++/libg++/src/swap.h diff --git a/contrib/libg++/libg++/src/sysent.h b/libg++/libg++/src/sysent.h similarity index 100% rename from contrib/libg++/libg++/src/sysent.h rename to libg++/libg++/src/sysent.h diff --git a/contrib/libg++/libg++/src/timer.c b/libg++/libg++/src/timer.c similarity index 100% rename from contrib/libg++/libg++/src/timer.c rename to libg++/libg++/src/timer.c diff --git a/contrib/libg++/libg++/src/typemacros.h b/libg++/libg++/src/typemacros.h similarity index 100% rename from contrib/libg++/libg++/src/typemacros.h rename to libg++/libg++/src/typemacros.h diff --git a/contrib/libg++/libg++/test-install/ChangeLog b/libg++/libg++/test-install/ChangeLog similarity index 100% rename from contrib/libg++/libg++/test-install/ChangeLog rename to libg++/libg++/test-install/ChangeLog diff --git a/contrib/libg++/libg++/test-install/Foo.cc b/libg++/libg++/test-install/Foo.cc similarity index 100% rename from contrib/libg++/libg++/test-install/Foo.cc rename to libg++/libg++/test-install/Foo.cc diff --git a/contrib/libg++/libg++/test-install/Foo.h b/libg++/libg++/test-install/Foo.h similarity index 100% rename from contrib/libg++/libg++/test-install/Foo.h rename to libg++/libg++/test-install/Foo.h diff --git a/contrib/libg++/libg++/test-install/Makefile.in b/libg++/libg++/test-install/Makefile.in similarity index 100% rename from contrib/libg++/libg++/test-install/Makefile.in rename to libg++/libg++/test-install/Makefile.in diff --git a/contrib/libg++/libg++/test-install/a.cc b/libg++/libg++/test-install/a.cc similarity index 100% rename from contrib/libg++/libg++/test-install/a.cc rename to libg++/libg++/test-install/a.cc diff --git a/contrib/libg++/libg++/test-install/bf.cc b/libg++/libg++/test-install/bf.cc similarity index 100% rename from contrib/libg++/libg++/test-install/bf.cc rename to libg++/libg++/test-install/bf.cc diff --git a/contrib/libg++/libg++/test-install/bm.cc b/libg++/libg++/test-install/bm.cc similarity index 100% rename from contrib/libg++/libg++/test-install/bm.cc rename to libg++/libg++/test-install/bm.cc diff --git a/contrib/libg++/libg++/test-install/configure.in b/libg++/libg++/test-install/configure.in similarity index 100% rename from contrib/libg++/libg++/test-install/configure.in rename to libg++/libg++/test-install/configure.in diff --git a/contrib/libg++/libg++/test-install/ex_bar.cc b/libg++/libg++/test-install/ex_bar.cc similarity index 100% rename from contrib/libg++/libg++/test-install/ex_bar.cc rename to libg++/libg++/test-install/ex_bar.cc diff --git a/contrib/libg++/libg++/test-install/expected.out b/libg++/libg++/test-install/expected.out similarity index 100% rename from contrib/libg++/libg++/test-install/expected.out rename to libg++/libg++/test-install/expected.out diff --git a/contrib/libg++/libg++/test-install/foo_func.cc b/libg++/libg++/test-install/foo_func.cc similarity index 100% rename from contrib/libg++/libg++/test-install/foo_func.cc rename to libg++/libg++/test-install/foo_func.cc diff --git a/contrib/libg++/libg++/test-install/foo_main.cc b/libg++/libg++/test-install/foo_main.cc similarity index 100% rename from contrib/libg++/libg++/test-install/foo_main.cc rename to libg++/libg++/test-install/foo_main.cc diff --git a/contrib/libg++/libg++/tests/ChangeLog b/libg++/libg++/tests/ChangeLog similarity index 100% rename from contrib/libg++/libg++/tests/ChangeLog rename to libg++/libg++/tests/ChangeLog diff --git a/contrib/libg++/libg++/tests/Makefile.in b/libg++/libg++/tests/Makefile.in similarity index 100% rename from contrib/libg++/libg++/tests/Makefile.in rename to libg++/libg++/tests/Makefile.in diff --git a/contrib/libg++/libg++/tests/Makefile.sh b/libg++/libg++/tests/Makefile.sh similarity index 100% rename from contrib/libg++/libg++/tests/Makefile.sh rename to libg++/libg++/tests/Makefile.sh diff --git a/contrib/libg++/libg++/tests/configure.in b/libg++/libg++/tests/configure.in similarity index 100% rename from contrib/libg++/libg++/tests/configure.in rename to libg++/libg++/tests/configure.in diff --git a/contrib/libg++/libg++/tests/depend b/libg++/libg++/tests/depend similarity index 100% rename from contrib/libg++/libg++/tests/depend rename to libg++/libg++/tests/depend diff --git a/contrib/libg++/libg++/tests/tBag.cc b/libg++/libg++/tests/tBag.cc similarity index 100% rename from contrib/libg++/libg++/tests/tBag.cc rename to libg++/libg++/tests/tBag.cc diff --git a/contrib/libg++/libg++/tests/tBag.exp b/libg++/libg++/tests/tBag.exp similarity index 100% rename from contrib/libg++/libg++/tests/tBag.exp rename to libg++/libg++/tests/tBag.exp diff --git a/contrib/libg++/libg++/tests/tBag.inp b/libg++/libg++/tests/tBag.inp similarity index 100% rename from contrib/libg++/libg++/tests/tBag.inp rename to libg++/libg++/tests/tBag.inp diff --git a/contrib/libg++/libg++/tests/tBitSet.cc b/libg++/libg++/tests/tBitSet.cc similarity index 100% rename from contrib/libg++/libg++/tests/tBitSet.cc rename to libg++/libg++/tests/tBitSet.cc diff --git a/contrib/libg++/libg++/tests/tBitSet.exp b/libg++/libg++/tests/tBitSet.exp similarity index 100% rename from contrib/libg++/libg++/tests/tBitSet.exp rename to libg++/libg++/tests/tBitSet.exp diff --git a/contrib/libg++/libg++/tests/tBitSet.inp b/libg++/libg++/tests/tBitSet.inp similarity index 100% rename from contrib/libg++/libg++/tests/tBitSet.inp rename to libg++/libg++/tests/tBitSet.inp diff --git a/contrib/libg++/libg++/tests/tBitString.cc b/libg++/libg++/tests/tBitString.cc similarity index 100% rename from contrib/libg++/libg++/tests/tBitString.cc rename to libg++/libg++/tests/tBitString.cc diff --git a/contrib/libg++/libg++/tests/tBitString.exp b/libg++/libg++/tests/tBitString.exp similarity index 100% rename from contrib/libg++/libg++/tests/tBitString.exp rename to libg++/libg++/tests/tBitString.exp diff --git a/contrib/libg++/libg++/tests/tBitString.inp b/libg++/libg++/tests/tBitString.inp similarity index 100% rename from contrib/libg++/libg++/tests/tBitString.inp rename to libg++/libg++/tests/tBitString.inp diff --git a/contrib/libg++/libg++/tests/tCurses.cc b/libg++/libg++/tests/tCurses.cc similarity index 100% rename from contrib/libg++/libg++/tests/tCurses.cc rename to libg++/libg++/tests/tCurses.cc diff --git a/contrib/libg++/libg++/tests/tCurses.inp b/libg++/libg++/tests/tCurses.inp similarity index 100% rename from contrib/libg++/libg++/tests/tCurses.inp rename to libg++/libg++/tests/tCurses.inp diff --git a/contrib/libg++/libg++/tests/tDeque.cc b/libg++/libg++/tests/tDeque.cc similarity index 100% rename from contrib/libg++/libg++/tests/tDeque.cc rename to libg++/libg++/tests/tDeque.cc diff --git a/contrib/libg++/libg++/tests/tDeque.exp b/libg++/libg++/tests/tDeque.exp similarity index 100% rename from contrib/libg++/libg++/tests/tDeque.exp rename to libg++/libg++/tests/tDeque.exp diff --git a/contrib/libg++/libg++/tests/tDeque.inp b/libg++/libg++/tests/tDeque.inp similarity index 100% rename from contrib/libg++/libg++/tests/tDeque.inp rename to libg++/libg++/tests/tDeque.inp diff --git a/contrib/libg++/libg++/tests/tFile.cc b/libg++/libg++/tests/tFile.cc similarity index 100% rename from contrib/libg++/libg++/tests/tFile.cc rename to libg++/libg++/tests/tFile.cc diff --git a/contrib/libg++/libg++/tests/tFile.exp b/libg++/libg++/tests/tFile.exp similarity index 100% rename from contrib/libg++/libg++/tests/tFile.exp rename to libg++/libg++/tests/tFile.exp diff --git a/contrib/libg++/libg++/tests/tFile.inp b/libg++/libg++/tests/tFile.inp similarity index 100% rename from contrib/libg++/libg++/tests/tFile.inp rename to libg++/libg++/tests/tFile.inp diff --git a/contrib/libg++/libg++/tests/tFix.cc b/libg++/libg++/tests/tFix.cc similarity index 100% rename from contrib/libg++/libg++/tests/tFix.cc rename to libg++/libg++/tests/tFix.cc diff --git a/contrib/libg++/libg++/tests/tFix.exp b/libg++/libg++/tests/tFix.exp similarity index 100% rename from contrib/libg++/libg++/tests/tFix.exp rename to libg++/libg++/tests/tFix.exp diff --git a/contrib/libg++/libg++/tests/tFix.inp b/libg++/libg++/tests/tFix.inp similarity index 100% rename from contrib/libg++/libg++/tests/tFix.inp rename to libg++/libg++/tests/tFix.inp diff --git a/contrib/libg++/libg++/tests/tFix16.cc b/libg++/libg++/tests/tFix16.cc similarity index 100% rename from contrib/libg++/libg++/tests/tFix16.cc rename to libg++/libg++/tests/tFix16.cc diff --git a/contrib/libg++/libg++/tests/tFix16.exp b/libg++/libg++/tests/tFix16.exp similarity index 100% rename from contrib/libg++/libg++/tests/tFix16.exp rename to libg++/libg++/tests/tFix16.exp diff --git a/contrib/libg++/libg++/tests/tFix16.inp b/libg++/libg++/tests/tFix16.inp similarity index 100% rename from contrib/libg++/libg++/tests/tFix16.inp rename to libg++/libg++/tests/tFix16.inp diff --git a/contrib/libg++/libg++/tests/tFix24.cc b/libg++/libg++/tests/tFix24.cc similarity index 100% rename from contrib/libg++/libg++/tests/tFix24.cc rename to libg++/libg++/tests/tFix24.cc diff --git a/contrib/libg++/libg++/tests/tFix24.exp b/libg++/libg++/tests/tFix24.exp similarity index 100% rename from contrib/libg++/libg++/tests/tFix24.exp rename to libg++/libg++/tests/tFix24.exp diff --git a/contrib/libg++/libg++/tests/tFix24.inp b/libg++/libg++/tests/tFix24.inp similarity index 100% rename from contrib/libg++/libg++/tests/tFix24.inp rename to libg++/libg++/tests/tFix24.inp diff --git a/contrib/libg++/libg++/tests/tGetOpt.cc b/libg++/libg++/tests/tGetOpt.cc similarity index 100% rename from contrib/libg++/libg++/tests/tGetOpt.cc rename to libg++/libg++/tests/tGetOpt.cc diff --git a/contrib/libg++/libg++/tests/tGetOpt.exp b/libg++/libg++/tests/tGetOpt.exp similarity index 100% rename from contrib/libg++/libg++/tests/tGetOpt.exp rename to libg++/libg++/tests/tGetOpt.exp diff --git a/contrib/libg++/libg++/tests/tGetOpt.inp b/libg++/libg++/tests/tGetOpt.inp similarity index 100% rename from contrib/libg++/libg++/tests/tGetOpt.inp rename to libg++/libg++/tests/tGetOpt.inp diff --git a/contrib/libg++/libg++/tests/tInteger.cc b/libg++/libg++/tests/tInteger.cc similarity index 100% rename from contrib/libg++/libg++/tests/tInteger.cc rename to libg++/libg++/tests/tInteger.cc diff --git a/contrib/libg++/libg++/tests/tInteger.exp b/libg++/libg++/tests/tInteger.exp similarity index 100% rename from contrib/libg++/libg++/tests/tInteger.exp rename to libg++/libg++/tests/tInteger.exp diff --git a/contrib/libg++/libg++/tests/tInteger.inp b/libg++/libg++/tests/tInteger.inp similarity index 100% rename from contrib/libg++/libg++/tests/tInteger.inp rename to libg++/libg++/tests/tInteger.inp diff --git a/contrib/libg++/libg++/tests/tLList.cc b/libg++/libg++/tests/tLList.cc similarity index 100% rename from contrib/libg++/libg++/tests/tLList.cc rename to libg++/libg++/tests/tLList.cc diff --git a/contrib/libg++/libg++/tests/tLList.exp b/libg++/libg++/tests/tLList.exp similarity index 100% rename from contrib/libg++/libg++/tests/tLList.exp rename to libg++/libg++/tests/tLList.exp diff --git a/contrib/libg++/libg++/tests/tLList.inp b/libg++/libg++/tests/tLList.inp similarity index 100% rename from contrib/libg++/libg++/tests/tLList.inp rename to libg++/libg++/tests/tLList.inp diff --git a/contrib/libg++/libg++/tests/tList.cc b/libg++/libg++/tests/tList.cc similarity index 100% rename from contrib/libg++/libg++/tests/tList.cc rename to libg++/libg++/tests/tList.cc diff --git a/contrib/libg++/libg++/tests/tList.exp b/libg++/libg++/tests/tList.exp similarity index 100% rename from contrib/libg++/libg++/tests/tList.exp rename to libg++/libg++/tests/tList.exp diff --git a/contrib/libg++/libg++/tests/tList.inp b/libg++/libg++/tests/tList.inp similarity index 100% rename from contrib/libg++/libg++/tests/tList.inp rename to libg++/libg++/tests/tList.inp diff --git a/contrib/libg++/libg++/tests/tMap.cc b/libg++/libg++/tests/tMap.cc similarity index 100% rename from contrib/libg++/libg++/tests/tMap.cc rename to libg++/libg++/tests/tMap.cc diff --git a/contrib/libg++/libg++/tests/tMap.exp b/libg++/libg++/tests/tMap.exp similarity index 100% rename from contrib/libg++/libg++/tests/tMap.exp rename to libg++/libg++/tests/tMap.exp diff --git a/contrib/libg++/libg++/tests/tMap.inp b/libg++/libg++/tests/tMap.inp similarity index 100% rename from contrib/libg++/libg++/tests/tMap.inp rename to libg++/libg++/tests/tMap.inp diff --git a/contrib/libg++/libg++/tests/tObstack.cc b/libg++/libg++/tests/tObstack.cc similarity index 100% rename from contrib/libg++/libg++/tests/tObstack.cc rename to libg++/libg++/tests/tObstack.cc diff --git a/contrib/libg++/libg++/tests/tObstack.exp b/libg++/libg++/tests/tObstack.exp similarity index 100% rename from contrib/libg++/libg++/tests/tObstack.exp rename to libg++/libg++/tests/tObstack.exp diff --git a/contrib/libg++/libg++/tests/tObstack.inp b/libg++/libg++/tests/tObstack.inp similarity index 100% rename from contrib/libg++/libg++/tests/tObstack.inp rename to libg++/libg++/tests/tObstack.inp diff --git a/contrib/libg++/libg++/tests/tPQ.cc b/libg++/libg++/tests/tPQ.cc similarity index 100% rename from contrib/libg++/libg++/tests/tPQ.cc rename to libg++/libg++/tests/tPQ.cc diff --git a/contrib/libg++/libg++/tests/tPQ.exp b/libg++/libg++/tests/tPQ.exp similarity index 100% rename from contrib/libg++/libg++/tests/tPQ.exp rename to libg++/libg++/tests/tPQ.exp diff --git a/contrib/libg++/libg++/tests/tPQ.inp b/libg++/libg++/tests/tPQ.inp similarity index 100% rename from contrib/libg++/libg++/tests/tPQ.inp rename to libg++/libg++/tests/tPQ.inp diff --git a/contrib/libg++/libg++/tests/tPlex.cc b/libg++/libg++/tests/tPlex.cc similarity index 100% rename from contrib/libg++/libg++/tests/tPlex.cc rename to libg++/libg++/tests/tPlex.cc diff --git a/contrib/libg++/libg++/tests/tPlex.exp b/libg++/libg++/tests/tPlex.exp similarity index 100% rename from contrib/libg++/libg++/tests/tPlex.exp rename to libg++/libg++/tests/tPlex.exp diff --git a/contrib/libg++/libg++/tests/tPlex.inp b/libg++/libg++/tests/tPlex.inp similarity index 100% rename from contrib/libg++/libg++/tests/tPlex.inp rename to libg++/libg++/tests/tPlex.inp diff --git a/contrib/libg++/libg++/tests/tQueue.cc b/libg++/libg++/tests/tQueue.cc similarity index 100% rename from contrib/libg++/libg++/tests/tQueue.cc rename to libg++/libg++/tests/tQueue.cc diff --git a/contrib/libg++/libg++/tests/tQueue.exp b/libg++/libg++/tests/tQueue.exp similarity index 100% rename from contrib/libg++/libg++/tests/tQueue.exp rename to libg++/libg++/tests/tQueue.exp diff --git a/contrib/libg++/libg++/tests/tQueue.inp b/libg++/libg++/tests/tQueue.inp similarity index 100% rename from contrib/libg++/libg++/tests/tQueue.inp rename to libg++/libg++/tests/tQueue.inp diff --git a/contrib/libg++/libg++/tests/tRandom.cc b/libg++/libg++/tests/tRandom.cc similarity index 100% rename from contrib/libg++/libg++/tests/tRandom.cc rename to libg++/libg++/tests/tRandom.cc diff --git a/contrib/libg++/libg++/tests/tRandom.exp b/libg++/libg++/tests/tRandom.exp similarity index 100% rename from contrib/libg++/libg++/tests/tRandom.exp rename to libg++/libg++/tests/tRandom.exp diff --git a/contrib/libg++/libg++/tests/tRandom.inp b/libg++/libg++/tests/tRandom.inp similarity index 100% rename from contrib/libg++/libg++/tests/tRandom.inp rename to libg++/libg++/tests/tRandom.inp diff --git a/contrib/libg++/libg++/tests/tRational.cc b/libg++/libg++/tests/tRational.cc similarity index 100% rename from contrib/libg++/libg++/tests/tRational.cc rename to libg++/libg++/tests/tRational.cc diff --git a/contrib/libg++/libg++/tests/tRational.exp b/libg++/libg++/tests/tRational.exp similarity index 100% rename from contrib/libg++/libg++/tests/tRational.exp rename to libg++/libg++/tests/tRational.exp diff --git a/contrib/libg++/libg++/tests/tRational.inp b/libg++/libg++/tests/tRational.inp similarity index 100% rename from contrib/libg++/libg++/tests/tRational.inp rename to libg++/libg++/tests/tRational.inp diff --git a/contrib/libg++/libg++/tests/tSet.cc b/libg++/libg++/tests/tSet.cc similarity index 100% rename from contrib/libg++/libg++/tests/tSet.cc rename to libg++/libg++/tests/tSet.cc diff --git a/contrib/libg++/libg++/tests/tSet.exp b/libg++/libg++/tests/tSet.exp similarity index 100% rename from contrib/libg++/libg++/tests/tSet.exp rename to libg++/libg++/tests/tSet.exp diff --git a/contrib/libg++/libg++/tests/tSet.inp b/libg++/libg++/tests/tSet.inp similarity index 100% rename from contrib/libg++/libg++/tests/tSet.inp rename to libg++/libg++/tests/tSet.inp diff --git a/contrib/libg++/libg++/tests/tStack.cc b/libg++/libg++/tests/tStack.cc similarity index 100% rename from contrib/libg++/libg++/tests/tStack.cc rename to libg++/libg++/tests/tStack.cc diff --git a/contrib/libg++/libg++/tests/tStack.exp b/libg++/libg++/tests/tStack.exp similarity index 100% rename from contrib/libg++/libg++/tests/tStack.exp rename to libg++/libg++/tests/tStack.exp diff --git a/contrib/libg++/libg++/tests/tStack.inp b/libg++/libg++/tests/tStack.inp similarity index 100% rename from contrib/libg++/libg++/tests/tStack.inp rename to libg++/libg++/tests/tStack.inp diff --git a/contrib/libg++/libg++/tests/tString.cc b/libg++/libg++/tests/tString.cc similarity index 100% rename from contrib/libg++/libg++/tests/tString.cc rename to libg++/libg++/tests/tString.cc diff --git a/contrib/libg++/libg++/tests/tString.exp b/libg++/libg++/tests/tString.exp similarity index 100% rename from contrib/libg++/libg++/tests/tString.exp rename to libg++/libg++/tests/tString.exp diff --git a/contrib/libg++/libg++/tests/tString.inp b/libg++/libg++/tests/tString.inp similarity index 100% rename from contrib/libg++/libg++/tests/tString.inp rename to libg++/libg++/tests/tString.inp diff --git a/contrib/libg++/libg++/tests/tVec.cc b/libg++/libg++/tests/tVec.cc similarity index 100% rename from contrib/libg++/libg++/tests/tVec.cc rename to libg++/libg++/tests/tVec.cc diff --git a/contrib/libg++/libg++/tests/tVec.exp b/libg++/libg++/tests/tVec.exp similarity index 100% rename from contrib/libg++/libg++/tests/tVec.exp rename to libg++/libg++/tests/tVec.exp diff --git a/contrib/libg++/libg++/tests/tVec.inp b/libg++/libg++/tests/tVec.inp similarity index 100% rename from contrib/libg++/libg++/tests/tVec.inp rename to libg++/libg++/tests/tVec.inp diff --git a/contrib/libg++/libg++/tests/test_h.cc b/libg++/libg++/tests/test_h.cc similarity index 100% rename from contrib/libg++/libg++/tests/test_h.cc rename to libg++/libg++/tests/test_h.cc diff --git a/contrib/libg++/libg++/tests/tiLList.cc b/libg++/libg++/tests/tiLList.cc similarity index 100% rename from contrib/libg++/libg++/tests/tiLList.cc rename to libg++/libg++/tests/tiLList.cc diff --git a/contrib/libg++/libg++/tests/tiLList.exp b/libg++/libg++/tests/tiLList.exp similarity index 100% rename from contrib/libg++/libg++/tests/tiLList.exp rename to libg++/libg++/tests/tiLList.exp diff --git a/contrib/libg++/libiberty/ChangeLog b/libg++/libiberty/ChangeLog similarity index 100% rename from contrib/libg++/libiberty/ChangeLog rename to libg++/libiberty/ChangeLog diff --git a/contrib/libg++/libiberty/insque.c b/libg++/libiberty/insque.c similarity index 100% rename from contrib/libg++/libiberty/insque.c rename to libg++/libiberty/insque.c diff --git a/contrib/libg++/libiberty/strerror.c b/libg++/libiberty/strerror.c similarity index 100% rename from contrib/libg++/libiberty/strerror.c rename to libg++/libiberty/strerror.c diff --git a/contrib/libg++/libio/ChangeLog b/libg++/libio/ChangeLog similarity index 100% rename from contrib/libg++/libio/ChangeLog rename to libg++/libio/ChangeLog diff --git a/contrib/libg++/libio/Makefile.in b/libg++/libio/Makefile.in similarity index 100% rename from contrib/libg++/libio/Makefile.in rename to libg++/libio/Makefile.in diff --git a/contrib/libg++/libio/NEWS b/libg++/libio/NEWS similarity index 100% rename from contrib/libg++/libio/NEWS rename to libg++/libio/NEWS diff --git a/contrib/libg++/libio/PlotFile.cc b/libg++/libio/PlotFile.cc similarity index 100% rename from contrib/libg++/libio/PlotFile.cc rename to libg++/libio/PlotFile.cc diff --git a/contrib/libg++/libio/PlotFile.h b/libg++/libio/PlotFile.h similarity index 100% rename from contrib/libg++/libio/PlotFile.h rename to libg++/libio/PlotFile.h diff --git a/contrib/libg++/libio/README b/libg++/libio/README similarity index 100% rename from contrib/libg++/libio/README rename to libg++/libio/README diff --git a/contrib/libg++/libio/SFile.cc b/libg++/libio/SFile.cc similarity index 100% rename from contrib/libg++/libio/SFile.cc rename to libg++/libio/SFile.cc diff --git a/contrib/libg++/libio/SFile.h b/libg++/libio/SFile.h similarity index 100% rename from contrib/libg++/libio/SFile.h rename to libg++/libio/SFile.h diff --git a/contrib/libg++/libio/builtinbuf.cc b/libg++/libio/builtinbuf.cc similarity index 100% rename from contrib/libg++/libio/builtinbuf.cc rename to libg++/libio/builtinbuf.cc diff --git a/contrib/libg++/libio/builtinbuf.h b/libg++/libio/builtinbuf.h similarity index 100% rename from contrib/libg++/libio/builtinbuf.h rename to libg++/libio/builtinbuf.h diff --git a/contrib/libg++/libio/cleanup.c b/libg++/libio/cleanup.c similarity index 100% rename from contrib/libg++/libio/cleanup.c rename to libg++/libio/cleanup.c diff --git a/contrib/libg++/libio/depend b/libg++/libio/depend similarity index 100% rename from contrib/libg++/libio/depend rename to libg++/libio/depend diff --git a/contrib/libg++/libio/editbuf.cc b/libg++/libio/editbuf.cc similarity index 100% rename from contrib/libg++/libio/editbuf.cc rename to libg++/libio/editbuf.cc diff --git a/contrib/libg++/libio/editbuf.h b/libg++/libio/editbuf.h similarity index 100% rename from contrib/libg++/libio/editbuf.h rename to libg++/libio/editbuf.h diff --git a/contrib/libg++/libio/filebuf.cc b/libg++/libio/filebuf.cc similarity index 100% rename from contrib/libg++/libio/filebuf.cc rename to libg++/libio/filebuf.cc diff --git a/contrib/libg++/libio/filedoalloc.c b/libg++/libio/filedoalloc.c similarity index 100% rename from contrib/libg++/libio/filedoalloc.c rename to libg++/libio/filedoalloc.c diff --git a/contrib/libg++/libio/fileops.c b/libg++/libio/fileops.c similarity index 100% rename from contrib/libg++/libio/fileops.c rename to libg++/libio/fileops.c diff --git a/contrib/libg++/libio/floatconv.c b/libg++/libio/floatconv.c similarity index 100% rename from contrib/libg++/libio/floatconv.c rename to libg++/libio/floatconv.c diff --git a/contrib/libg++/libio/floatio.h b/libg++/libio/floatio.h similarity index 100% rename from contrib/libg++/libio/floatio.h rename to libg++/libio/floatio.h diff --git a/contrib/libg++/libio/fstream.cc b/libg++/libio/fstream.cc similarity index 100% rename from contrib/libg++/libio/fstream.cc rename to libg++/libio/fstream.cc diff --git a/contrib/libg++/libio/fstream.h b/libg++/libio/fstream.h similarity index 100% rename from contrib/libg++/libio/fstream.h rename to libg++/libio/fstream.h diff --git a/contrib/libg++/libio/gen-params b/libg++/libio/gen-params similarity index 100% rename from contrib/libg++/libio/gen-params rename to libg++/libio/gen-params diff --git a/contrib/libg++/libio/genops.c b/libg++/libio/genops.c similarity index 100% rename from contrib/libg++/libio/genops.c rename to libg++/libio/genops.c diff --git a/contrib/libg++/libio/indstream.cc b/libg++/libio/indstream.cc similarity index 100% rename from contrib/libg++/libio/indstream.cc rename to libg++/libio/indstream.cc diff --git a/contrib/libg++/libio/indstream.h b/libg++/libio/indstream.h similarity index 100% rename from contrib/libg++/libio/indstream.h rename to libg++/libio/indstream.h diff --git a/contrib/libg++/libio/ioassign.cc b/libg++/libio/ioassign.cc similarity index 100% rename from contrib/libg++/libio/ioassign.cc rename to libg++/libio/ioassign.cc diff --git a/contrib/libg++/libio/ioextend.cc b/libg++/libio/ioextend.cc similarity index 100% rename from contrib/libg++/libio/ioextend.cc rename to libg++/libio/ioextend.cc diff --git a/contrib/libg++/libio/iofclose.c b/libg++/libio/iofclose.c similarity index 100% rename from contrib/libg++/libio/iofclose.c rename to libg++/libio/iofclose.c diff --git a/contrib/libg++/libio/iofdopen.c b/libg++/libio/iofdopen.c similarity index 100% rename from contrib/libg++/libio/iofdopen.c rename to libg++/libio/iofdopen.c diff --git a/contrib/libg++/libio/iofflush.c b/libg++/libio/iofflush.c similarity index 100% rename from contrib/libg++/libio/iofflush.c rename to libg++/libio/iofflush.c diff --git a/contrib/libg++/libio/iofgetpos.c b/libg++/libio/iofgetpos.c similarity index 100% rename from contrib/libg++/libio/iofgetpos.c rename to libg++/libio/iofgetpos.c diff --git a/contrib/libg++/libio/iofgets.c b/libg++/libio/iofgets.c similarity index 100% rename from contrib/libg++/libio/iofgets.c rename to libg++/libio/iofgets.c diff --git a/contrib/libg++/libio/iofopen.c b/libg++/libio/iofopen.c similarity index 100% rename from contrib/libg++/libio/iofopen.c rename to libg++/libio/iofopen.c diff --git a/contrib/libg++/libio/iofprintf.c b/libg++/libio/iofprintf.c similarity index 100% rename from contrib/libg++/libio/iofprintf.c rename to libg++/libio/iofprintf.c diff --git a/contrib/libg++/libio/iofputs.c b/libg++/libio/iofputs.c similarity index 100% rename from contrib/libg++/libio/iofputs.c rename to libg++/libio/iofputs.c diff --git a/contrib/libg++/libio/iofread.c b/libg++/libio/iofread.c similarity index 100% rename from contrib/libg++/libio/iofread.c rename to libg++/libio/iofread.c diff --git a/contrib/libg++/libio/iofscanf.c b/libg++/libio/iofscanf.c similarity index 100% rename from contrib/libg++/libio/iofscanf.c rename to libg++/libio/iofscanf.c diff --git a/contrib/libg++/libio/iofsetpos.c b/libg++/libio/iofsetpos.c similarity index 100% rename from contrib/libg++/libio/iofsetpos.c rename to libg++/libio/iofsetpos.c diff --git a/contrib/libg++/libio/ioftell.c b/libg++/libio/ioftell.c similarity index 100% rename from contrib/libg++/libio/ioftell.c rename to libg++/libio/ioftell.c diff --git a/contrib/libg++/libio/iofwrite.c b/libg++/libio/iofwrite.c similarity index 100% rename from contrib/libg++/libio/iofwrite.c rename to libg++/libio/iofwrite.c diff --git a/contrib/libg++/libio/iogetdelim.c b/libg++/libio/iogetdelim.c similarity index 100% rename from contrib/libg++/libio/iogetdelim.c rename to libg++/libio/iogetdelim.c diff --git a/contrib/libg++/libio/iogetline.c b/libg++/libio/iogetline.c similarity index 100% rename from contrib/libg++/libio/iogetline.c rename to libg++/libio/iogetline.c diff --git a/contrib/libg++/libio/iogets.c b/libg++/libio/iogets.c similarity index 100% rename from contrib/libg++/libio/iogets.c rename to libg++/libio/iogets.c diff --git a/contrib/libg++/libio/ioignore.c b/libg++/libio/ioignore.c similarity index 100% rename from contrib/libg++/libio/ioignore.c rename to libg++/libio/ioignore.c diff --git a/contrib/libg++/libio/iolibio.h b/libg++/libio/iolibio.h similarity index 100% rename from contrib/libg++/libio/iolibio.h rename to libg++/libio/iolibio.h diff --git a/contrib/libg++/libio/iomanip.cc b/libg++/libio/iomanip.cc similarity index 100% rename from contrib/libg++/libio/iomanip.cc rename to libg++/libio/iomanip.cc diff --git a/contrib/libg++/libio/iomanip.h b/libg++/libio/iomanip.h similarity index 100% rename from contrib/libg++/libio/iomanip.h rename to libg++/libio/iomanip.h diff --git a/contrib/libg++/libio/iopadn.c b/libg++/libio/iopadn.c similarity index 100% rename from contrib/libg++/libio/iopadn.c rename to libg++/libio/iopadn.c diff --git a/contrib/libg++/libio/ioperror.c b/libg++/libio/ioperror.c similarity index 100% rename from contrib/libg++/libio/ioperror.c rename to libg++/libio/ioperror.c diff --git a/contrib/libg++/libio/iopopen.c b/libg++/libio/iopopen.c similarity index 100% rename from contrib/libg++/libio/iopopen.c rename to libg++/libio/iopopen.c diff --git a/contrib/libg++/libio/ioprims.c b/libg++/libio/ioprims.c similarity index 100% rename from contrib/libg++/libio/ioprims.c rename to libg++/libio/ioprims.c diff --git a/contrib/libg++/libio/ioprintf.c b/libg++/libio/ioprintf.c similarity index 100% rename from contrib/libg++/libio/ioprintf.c rename to libg++/libio/ioprintf.c diff --git a/contrib/libg++/libio/ioputs.c b/libg++/libio/ioputs.c similarity index 100% rename from contrib/libg++/libio/ioputs.c rename to libg++/libio/ioputs.c diff --git a/contrib/libg++/libio/ioscanf.c b/libg++/libio/ioscanf.c similarity index 100% rename from contrib/libg++/libio/ioscanf.c rename to libg++/libio/ioscanf.c diff --git a/contrib/libg++/libio/ioseekoff.c b/libg++/libio/ioseekoff.c similarity index 100% rename from contrib/libg++/libio/ioseekoff.c rename to libg++/libio/ioseekoff.c diff --git a/contrib/libg++/libio/ioseekpos.c b/libg++/libio/ioseekpos.c similarity index 100% rename from contrib/libg++/libio/ioseekpos.c rename to libg++/libio/ioseekpos.c diff --git a/contrib/libg++/libio/iosetbuffer.c b/libg++/libio/iosetbuffer.c similarity index 100% rename from contrib/libg++/libio/iosetbuffer.c rename to libg++/libio/iosetbuffer.c diff --git a/contrib/libg++/libio/iosetvbuf.c b/libg++/libio/iosetvbuf.c similarity index 100% rename from contrib/libg++/libio/iosetvbuf.c rename to libg++/libio/iosetvbuf.c diff --git a/contrib/libg++/libio/iosprintf.c b/libg++/libio/iosprintf.c similarity index 100% rename from contrib/libg++/libio/iosprintf.c rename to libg++/libio/iosprintf.c diff --git a/contrib/libg++/libio/iosscanf.c b/libg++/libio/iosscanf.c similarity index 100% rename from contrib/libg++/libio/iosscanf.c rename to libg++/libio/iosscanf.c diff --git a/contrib/libg++/libio/iostdio.h b/libg++/libio/iostdio.h similarity index 100% rename from contrib/libg++/libio/iostdio.h rename to libg++/libio/iostdio.h diff --git a/contrib/libg++/libio/iostream.cc b/libg++/libio/iostream.cc similarity index 100% rename from contrib/libg++/libio/iostream.cc rename to libg++/libio/iostream.cc diff --git a/contrib/libg++/libio/iostream.h b/libg++/libio/iostream.h similarity index 100% rename from contrib/libg++/libio/iostream.h rename to libg++/libio/iostream.h diff --git a/contrib/libg++/libio/iostream.texi b/libg++/libio/iostream.texi similarity index 100% rename from contrib/libg++/libio/iostream.texi rename to libg++/libio/iostream.texi diff --git a/contrib/libg++/libio/iostreamP.h b/libg++/libio/iostreamP.h similarity index 100% rename from contrib/libg++/libio/iostreamP.h rename to libg++/libio/iostreamP.h diff --git a/contrib/libg++/libio/iostrerror.c b/libg++/libio/iostrerror.c similarity index 100% rename from contrib/libg++/libio/iostrerror.c rename to libg++/libio/iostrerror.c diff --git a/contrib/libg++/libio/ioungetc.c b/libg++/libio/ioungetc.c similarity index 100% rename from contrib/libg++/libio/ioungetc.c rename to libg++/libio/ioungetc.c diff --git a/contrib/libg++/libio/iovfprintf.c b/libg++/libio/iovfprintf.c similarity index 100% rename from contrib/libg++/libio/iovfprintf.c rename to libg++/libio/iovfprintf.c diff --git a/contrib/libg++/libio/iovfscanf.c b/libg++/libio/iovfscanf.c similarity index 100% rename from contrib/libg++/libio/iovfscanf.c rename to libg++/libio/iovfscanf.c diff --git a/contrib/libg++/libio/iovsprintf.c b/libg++/libio/iovsprintf.c similarity index 100% rename from contrib/libg++/libio/iovsprintf.c rename to libg++/libio/iovsprintf.c diff --git a/contrib/libg++/libio/iovsscanf.c b/libg++/libio/iovsscanf.c similarity index 100% rename from contrib/libg++/libio/iovsscanf.c rename to libg++/libio/iovsscanf.c diff --git a/contrib/libg++/libio/isgetline.cc b/libg++/libio/isgetline.cc similarity index 100% rename from contrib/libg++/libio/isgetline.cc rename to libg++/libio/isgetline.cc diff --git a/contrib/libg++/libio/isgetsb.cc b/libg++/libio/isgetsb.cc similarity index 100% rename from contrib/libg++/libio/isgetsb.cc rename to libg++/libio/isgetsb.cc diff --git a/contrib/libg++/libio/isscan.cc b/libg++/libio/isscan.cc similarity index 100% rename from contrib/libg++/libio/isscan.cc rename to libg++/libio/isscan.cc diff --git a/contrib/libg++/libio/istream.h b/libg++/libio/istream.h similarity index 100% rename from contrib/libg++/libio/istream.h rename to libg++/libio/istream.h diff --git a/contrib/libg++/libio/libio.h b/libg++/libio/libio.h similarity index 100% rename from contrib/libg++/libio/libio.h rename to libg++/libio/libio.h diff --git a/contrib/libg++/libio/libioP.h b/libg++/libio/libioP.h similarity index 100% rename from contrib/libg++/libio/libioP.h rename to libg++/libio/libioP.h diff --git a/contrib/libg++/libio/osform.cc b/libg++/libio/osform.cc similarity index 100% rename from contrib/libg++/libio/osform.cc rename to libg++/libio/osform.cc diff --git a/contrib/libg++/libio/ostream.h b/libg++/libio/ostream.h similarity index 100% rename from contrib/libg++/libio/ostream.h rename to libg++/libio/ostream.h diff --git a/contrib/libg++/libio/outfloat.c b/libg++/libio/outfloat.c similarity index 100% rename from contrib/libg++/libio/outfloat.c rename to libg++/libio/outfloat.c diff --git a/contrib/libg++/libio/parsestream.cc b/libg++/libio/parsestream.cc similarity index 100% rename from contrib/libg++/libio/parsestream.cc rename to libg++/libio/parsestream.cc diff --git a/contrib/libg++/libio/parsestream.h b/libg++/libio/parsestream.h similarity index 100% rename from contrib/libg++/libio/parsestream.h rename to libg++/libio/parsestream.h diff --git a/contrib/libg++/libio/pfstream.cc b/libg++/libio/pfstream.cc similarity index 100% rename from contrib/libg++/libio/pfstream.cc rename to libg++/libio/pfstream.cc diff --git a/contrib/libg++/libio/pfstream.h b/libg++/libio/pfstream.h similarity index 100% rename from contrib/libg++/libio/pfstream.h rename to libg++/libio/pfstream.h diff --git a/contrib/libg++/libio/procbuf.cc b/libg++/libio/procbuf.cc similarity index 100% rename from contrib/libg++/libio/procbuf.cc rename to libg++/libio/procbuf.cc diff --git a/contrib/libg++/libio/procbuf.h b/libg++/libio/procbuf.h similarity index 100% rename from contrib/libg++/libio/procbuf.h rename to libg++/libio/procbuf.h diff --git a/contrib/libg++/libio/sbform.cc b/libg++/libio/sbform.cc similarity index 100% rename from contrib/libg++/libio/sbform.cc rename to libg++/libio/sbform.cc diff --git a/contrib/libg++/libio/sbgetline.cc b/libg++/libio/sbgetline.cc similarity index 100% rename from contrib/libg++/libio/sbgetline.cc rename to libg++/libio/sbgetline.cc diff --git a/contrib/libg++/libio/sbscan.cc b/libg++/libio/sbscan.cc similarity index 100% rename from contrib/libg++/libio/sbscan.cc rename to libg++/libio/sbscan.cc diff --git a/contrib/libg++/libio/stdfiles.c b/libg++/libio/stdfiles.c similarity index 100% rename from contrib/libg++/libio/stdfiles.c rename to libg++/libio/stdfiles.c diff --git a/contrib/libg++/libio/stdiostream.cc b/libg++/libio/stdiostream.cc similarity index 100% rename from contrib/libg++/libio/stdiostream.cc rename to libg++/libio/stdiostream.cc diff --git a/contrib/libg++/libio/stdiostream.h b/libg++/libio/stdiostream.h similarity index 100% rename from contrib/libg++/libio/stdiostream.h rename to libg++/libio/stdiostream.h diff --git a/contrib/libg++/libio/stdstrbufs.cc b/libg++/libio/stdstrbufs.cc similarity index 100% rename from contrib/libg++/libio/stdstrbufs.cc rename to libg++/libio/stdstrbufs.cc diff --git a/contrib/libg++/libio/stdstreams.cc b/libg++/libio/stdstreams.cc similarity index 100% rename from contrib/libg++/libio/stdstreams.cc rename to libg++/libio/stdstreams.cc diff --git a/contrib/libg++/libio/stream.cc b/libg++/libio/stream.cc similarity index 100% rename from contrib/libg++/libio/stream.cc rename to libg++/libio/stream.cc diff --git a/contrib/libg++/libio/stream.h b/libg++/libio/stream.h similarity index 100% rename from contrib/libg++/libio/stream.h rename to libg++/libio/stream.h diff --git a/contrib/libg++/libio/streambuf.cc b/libg++/libio/streambuf.cc similarity index 100% rename from contrib/libg++/libio/streambuf.cc rename to libg++/libio/streambuf.cc diff --git a/contrib/libg++/libio/streambuf.h b/libg++/libio/streambuf.h similarity index 100% rename from contrib/libg++/libio/streambuf.h rename to libg++/libio/streambuf.h diff --git a/contrib/libg++/libio/strfile.h b/libg++/libio/strfile.h similarity index 100% rename from contrib/libg++/libio/strfile.h rename to libg++/libio/strfile.h diff --git a/contrib/libg++/libio/strops.c b/libg++/libio/strops.c similarity index 100% rename from contrib/libg++/libio/strops.c rename to libg++/libio/strops.c diff --git a/contrib/libg++/libio/strstream.cc b/libg++/libio/strstream.cc similarity index 100% rename from contrib/libg++/libio/strstream.cc rename to libg++/libio/strstream.cc diff --git a/contrib/libg++/libio/strstream.h b/libg++/libio/strstream.h similarity index 100% rename from contrib/libg++/libio/strstream.h rename to libg++/libio/strstream.h diff --git a/contrib/libg++/libio/tests/ChangeLog b/libg++/libio/tests/ChangeLog similarity index 100% rename from contrib/libg++/libio/tests/ChangeLog rename to libg++/libio/tests/ChangeLog diff --git a/contrib/libg++/libio/tests/Makefile.in b/libg++/libio/tests/Makefile.in similarity index 100% rename from contrib/libg++/libio/tests/Makefile.in rename to libg++/libio/tests/Makefile.in diff --git a/contrib/libg++/libio/tests/configure.in b/libg++/libio/tests/configure.in similarity index 100% rename from contrib/libg++/libio/tests/configure.in rename to libg++/libio/tests/configure.in diff --git a/contrib/libg++/libio/tests/hounddog.cc b/libg++/libio/tests/hounddog.cc similarity index 100% rename from contrib/libg++/libio/tests/hounddog.cc rename to libg++/libio/tests/hounddog.cc diff --git a/contrib/libg++/libio/tests/hounddog.exp b/libg++/libio/tests/hounddog.exp similarity index 100% rename from contrib/libg++/libio/tests/hounddog.exp rename to libg++/libio/tests/hounddog.exp diff --git a/contrib/libg++/libio/tests/hounddog.inp b/libg++/libio/tests/hounddog.inp similarity index 100% rename from contrib/libg++/libio/tests/hounddog.inp rename to libg++/libio/tests/hounddog.inp diff --git a/contrib/libg++/libio/tests/putbackdog.cc b/libg++/libio/tests/putbackdog.cc similarity index 100% rename from contrib/libg++/libio/tests/putbackdog.cc rename to libg++/libio/tests/putbackdog.cc diff --git a/contrib/libg++/libio/tests/tFile.cc b/libg++/libio/tests/tFile.cc similarity index 100% rename from contrib/libg++/libio/tests/tFile.cc rename to libg++/libio/tests/tFile.cc diff --git a/contrib/libg++/libio/tests/tFile.exp b/libg++/libio/tests/tFile.exp similarity index 100% rename from contrib/libg++/libio/tests/tFile.exp rename to libg++/libio/tests/tFile.exp diff --git a/contrib/libg++/libio/tests/tFile.inp b/libg++/libio/tests/tFile.inp similarity index 100% rename from contrib/libg++/libio/tests/tFile.inp rename to libg++/libio/tests/tFile.inp diff --git a/contrib/libg++/libio/tests/tfformat.c b/libg++/libio/tests/tfformat.c similarity index 100% rename from contrib/libg++/libio/tests/tfformat.c rename to libg++/libio/tests/tfformat.c diff --git a/contrib/libg++/libio/tests/tiformat.c b/libg++/libio/tests/tiformat.c similarity index 100% rename from contrib/libg++/libio/tests/tiformat.c rename to libg++/libio/tests/tiformat.c diff --git a/contrib/libg++/libio/tests/tiomanip.cc b/libg++/libio/tests/tiomanip.cc similarity index 100% rename from contrib/libg++/libio/tests/tiomanip.cc rename to libg++/libio/tests/tiomanip.cc diff --git a/contrib/libg++/libio/tests/tiomanip.exp b/libg++/libio/tests/tiomanip.exp similarity index 100% rename from contrib/libg++/libio/tests/tiomanip.exp rename to libg++/libio/tests/tiomanip.exp diff --git a/contrib/libg++/libio/tests/tiomisc.cc b/libg++/libio/tests/tiomisc.cc similarity index 100% rename from contrib/libg++/libio/tests/tiomisc.cc rename to libg++/libio/tests/tiomisc.cc diff --git a/contrib/libg++/libio/tests/tiomisc.exp b/libg++/libio/tests/tiomisc.exp similarity index 100% rename from contrib/libg++/libio/tests/tiomisc.exp rename to libg++/libio/tests/tiomisc.exp diff --git a/contrib/libg++/libio/tests/tstdiomisc.c b/libg++/libio/tests/tstdiomisc.c similarity index 100% rename from contrib/libg++/libio/tests/tstdiomisc.c rename to libg++/libio/tests/tstdiomisc.c diff --git a/contrib/libg++/libio/tests/tstdiomisc.exp b/libg++/libio/tests/tstdiomisc.exp similarity index 100% rename from contrib/libg++/libio/tests/tstdiomisc.exp rename to libg++/libio/tests/tstdiomisc.exp diff --git a/contrib/libg++/librx/ChangeLog b/libg++/librx/ChangeLog similarity index 100% rename from contrib/libg++/librx/ChangeLog rename to libg++/librx/ChangeLog diff --git a/contrib/libg++/librx/DOC b/libg++/librx/DOC similarity index 100% rename from contrib/libg++/librx/DOC rename to libg++/librx/DOC diff --git a/contrib/libg++/librx/rx.c b/libg++/librx/rx.c similarity index 100% rename from contrib/libg++/librx/rx.c rename to libg++/librx/rx.c diff --git a/contrib/libg++/librx/rx.h b/libg++/librx/rx.h similarity index 100% rename from contrib/libg++/librx/rx.h rename to libg++/librx/rx.h diff --git a/contrib/libg++/libstdc++/ChangeLog b/libg++/libstdc++/ChangeLog similarity index 100% rename from contrib/libg++/libstdc++/ChangeLog rename to libg++/libstdc++/ChangeLog diff --git a/contrib/libg++/libstdc++/Makefile.in b/libg++/libstdc++/Makefile.in similarity index 100% rename from contrib/libg++/libstdc++/Makefile.in rename to libg++/libstdc++/Makefile.in diff --git a/contrib/libg++/libstdc++/algorithm b/libg++/libstdc++/algorithm similarity index 100% rename from contrib/libg++/libstdc++/algorithm rename to libg++/libstdc++/algorithm diff --git a/contrib/libg++/libstdc++/cassert b/libg++/libstdc++/cassert similarity index 100% rename from contrib/libg++/libstdc++/cassert rename to libg++/libstdc++/cassert diff --git a/contrib/libg++/libstdc++/cctype b/libg++/libstdc++/cctype similarity index 100% rename from contrib/libg++/libstdc++/cctype rename to libg++/libstdc++/cctype diff --git a/contrib/libg++/libstdc++/cerrno b/libg++/libstdc++/cerrno similarity index 100% rename from contrib/libg++/libstdc++/cerrno rename to libg++/libstdc++/cerrno diff --git a/contrib/libg++/libstdc++/cfloat b/libg++/libstdc++/cfloat similarity index 100% rename from contrib/libg++/libstdc++/cfloat rename to libg++/libstdc++/cfloat diff --git a/contrib/libg++/libstdc++/cinst.cc b/libg++/libstdc++/cinst.cc similarity index 100% rename from contrib/libg++/libstdc++/cinst.cc rename to libg++/libstdc++/cinst.cc diff --git a/contrib/libg++/libstdc++/ciso646 b/libg++/libstdc++/ciso646 similarity index 100% rename from contrib/libg++/libstdc++/ciso646 rename to libg++/libstdc++/ciso646 diff --git a/contrib/libg++/libstdc++/climits b/libg++/libstdc++/climits similarity index 100% rename from contrib/libg++/libstdc++/climits rename to libg++/libstdc++/climits diff --git a/contrib/libg++/libstdc++/clocale b/libg++/libstdc++/clocale similarity index 100% rename from contrib/libg++/libstdc++/clocale rename to libg++/libstdc++/clocale diff --git a/contrib/libg++/libstdc++/cmath b/libg++/libstdc++/cmath similarity index 100% rename from contrib/libg++/libstdc++/cmath rename to libg++/libstdc++/cmath diff --git a/contrib/libg++/libstdc++/cmathi.cc b/libg++/libstdc++/cmathi.cc similarity index 100% rename from contrib/libg++/libstdc++/cmathi.cc rename to libg++/libstdc++/cmathi.cc diff --git a/contrib/libg++/libstdc++/complex b/libg++/libstdc++/complex similarity index 100% rename from contrib/libg++/libstdc++/complex rename to libg++/libstdc++/complex diff --git a/contrib/libg++/libstdc++/complex.h b/libg++/libstdc++/complex.h similarity index 100% rename from contrib/libg++/libstdc++/complex.h rename to libg++/libstdc++/complex.h diff --git a/contrib/libg++/libstdc++/csetjmp b/libg++/libstdc++/csetjmp similarity index 100% rename from contrib/libg++/libstdc++/csetjmp rename to libg++/libstdc++/csetjmp diff --git a/contrib/libg++/libstdc++/csignal b/libg++/libstdc++/csignal similarity index 100% rename from contrib/libg++/libstdc++/csignal rename to libg++/libstdc++/csignal diff --git a/contrib/libg++/libstdc++/cstdarg b/libg++/libstdc++/cstdarg similarity index 100% rename from contrib/libg++/libstdc++/cstdarg rename to libg++/libstdc++/cstdarg diff --git a/contrib/libg++/libstdc++/cstddef b/libg++/libstdc++/cstddef similarity index 100% rename from contrib/libg++/libstdc++/cstddef rename to libg++/libstdc++/cstddef diff --git a/contrib/libg++/libstdc++/cstdio b/libg++/libstdc++/cstdio similarity index 100% rename from contrib/libg++/libstdc++/cstdio rename to libg++/libstdc++/cstdio diff --git a/contrib/libg++/libstdc++/cstdlib b/libg++/libstdc++/cstdlib similarity index 100% rename from contrib/libg++/libstdc++/cstdlib rename to libg++/libstdc++/cstdlib diff --git a/contrib/libg++/libstdc++/cstdlibi.cc b/libg++/libstdc++/cstdlibi.cc similarity index 100% rename from contrib/libg++/libstdc++/cstdlibi.cc rename to libg++/libstdc++/cstdlibi.cc diff --git a/contrib/libg++/libstdc++/cstring b/libg++/libstdc++/cstring similarity index 100% rename from contrib/libg++/libstdc++/cstring rename to libg++/libstdc++/cstring diff --git a/contrib/libg++/libstdc++/cstringi.cc b/libg++/libstdc++/cstringi.cc similarity index 100% rename from contrib/libg++/libstdc++/cstringi.cc rename to libg++/libstdc++/cstringi.cc diff --git a/contrib/libg++/libstdc++/ctime b/libg++/libstdc++/ctime similarity index 100% rename from contrib/libg++/libstdc++/ctime rename to libg++/libstdc++/ctime diff --git a/contrib/libg++/libstdc++/cwchar b/libg++/libstdc++/cwchar similarity index 100% rename from contrib/libg++/libstdc++/cwchar rename to libg++/libstdc++/cwchar diff --git a/contrib/libg++/libstdc++/cwctype b/libg++/libstdc++/cwctype similarity index 100% rename from contrib/libg++/libstdc++/cwctype rename to libg++/libstdc++/cwctype diff --git a/contrib/libg++/libstdc++/deque b/libg++/libstdc++/deque similarity index 100% rename from contrib/libg++/libstdc++/deque rename to libg++/libstdc++/deque diff --git a/contrib/libg++/libstdc++/exception b/libg++/libstdc++/exception similarity index 100% rename from contrib/libg++/libstdc++/exception rename to libg++/libstdc++/exception diff --git a/contrib/libg++/libstdc++/exceptioni.cc b/libg++/libstdc++/exceptioni.cc similarity index 100% rename from contrib/libg++/libstdc++/exceptioni.cc rename to libg++/libstdc++/exceptioni.cc diff --git a/contrib/libg++/libstdc++/functional b/libg++/libstdc++/functional similarity index 100% rename from contrib/libg++/libstdc++/functional rename to libg++/libstdc++/functional diff --git a/contrib/libg++/libstdc++/iterator b/libg++/libstdc++/iterator similarity index 100% rename from contrib/libg++/libstdc++/iterator rename to libg++/libstdc++/iterator diff --git a/contrib/libg++/libstdc++/list b/libg++/libstdc++/list similarity index 100% rename from contrib/libg++/libstdc++/list rename to libg++/libstdc++/list diff --git a/contrib/libg++/libstdc++/map b/libg++/libstdc++/map similarity index 100% rename from contrib/libg++/libstdc++/map rename to libg++/libstdc++/map diff --git a/contrib/libg++/libstdc++/memory b/libg++/libstdc++/memory similarity index 100% rename from contrib/libg++/libstdc++/memory rename to libg++/libstdc++/memory diff --git a/contrib/libg++/libstdc++/new b/libg++/libstdc++/new similarity index 100% rename from contrib/libg++/libstdc++/new rename to libg++/libstdc++/new diff --git a/contrib/libg++/libstdc++/new.h b/libg++/libstdc++/new.h similarity index 100% rename from contrib/libg++/libstdc++/new.h rename to libg++/libstdc++/new.h diff --git a/contrib/libg++/libstdc++/newi.cc b/libg++/libstdc++/newi.cc similarity index 100% rename from contrib/libg++/libstdc++/newi.cc rename to libg++/libstdc++/newi.cc diff --git a/contrib/libg++/libstdc++/numeric b/libg++/libstdc++/numeric similarity index 100% rename from contrib/libg++/libstdc++/numeric rename to libg++/libstdc++/numeric diff --git a/contrib/libg++/libstdc++/queue b/libg++/libstdc++/queue similarity index 100% rename from contrib/libg++/libstdc++/queue rename to libg++/libstdc++/queue diff --git a/contrib/libg++/libstdc++/set b/libg++/libstdc++/set similarity index 100% rename from contrib/libg++/libstdc++/set rename to libg++/libstdc++/set diff --git a/contrib/libg++/libstdc++/sinst.cc b/libg++/libstdc++/sinst.cc similarity index 100% rename from contrib/libg++/libstdc++/sinst.cc rename to libg++/libstdc++/sinst.cc diff --git a/contrib/libg++/libstdc++/stack b/libg++/libstdc++/stack similarity index 100% rename from contrib/libg++/libstdc++/stack rename to libg++/libstdc++/stack diff --git a/contrib/libg++/libstdc++/std/bastring.cc b/libg++/libstdc++/std/bastring.cc similarity index 100% rename from contrib/libg++/libstdc++/std/bastring.cc rename to libg++/libstdc++/std/bastring.cc diff --git a/contrib/libg++/libstdc++/std/bastring.h b/libg++/libstdc++/std/bastring.h similarity index 100% rename from contrib/libg++/libstdc++/std/bastring.h rename to libg++/libstdc++/std/bastring.h diff --git a/contrib/libg++/libstdc++/std/cassert.h b/libg++/libstdc++/std/cassert.h similarity index 100% rename from contrib/libg++/libstdc++/std/cassert.h rename to libg++/libstdc++/std/cassert.h diff --git a/contrib/libg++/libstdc++/std/cctype.h b/libg++/libstdc++/std/cctype.h similarity index 100% rename from contrib/libg++/libstdc++/std/cctype.h rename to libg++/libstdc++/std/cctype.h diff --git a/contrib/libg++/libstdc++/std/cerrno.h b/libg++/libstdc++/std/cerrno.h similarity index 100% rename from contrib/libg++/libstdc++/std/cerrno.h rename to libg++/libstdc++/std/cerrno.h diff --git a/contrib/libg++/libstdc++/std/cfloat.h b/libg++/libstdc++/std/cfloat.h similarity index 100% rename from contrib/libg++/libstdc++/std/cfloat.h rename to libg++/libstdc++/std/cfloat.h diff --git a/contrib/libg++/libstdc++/std/cinst.h b/libg++/libstdc++/std/cinst.h similarity index 100% rename from contrib/libg++/libstdc++/std/cinst.h rename to libg++/libstdc++/std/cinst.h diff --git a/contrib/libg++/libstdc++/std/ciso646.h b/libg++/libstdc++/std/ciso646.h similarity index 100% rename from contrib/libg++/libstdc++/std/ciso646.h rename to libg++/libstdc++/std/ciso646.h diff --git a/contrib/libg++/libstdc++/std/climits.h b/libg++/libstdc++/std/climits.h similarity index 100% rename from contrib/libg++/libstdc++/std/climits.h rename to libg++/libstdc++/std/climits.h diff --git a/contrib/libg++/libstdc++/std/clocale.h b/libg++/libstdc++/std/clocale.h similarity index 100% rename from contrib/libg++/libstdc++/std/clocale.h rename to libg++/libstdc++/std/clocale.h diff --git a/contrib/libg++/libstdc++/std/cmath.h b/libg++/libstdc++/std/cmath.h similarity index 100% rename from contrib/libg++/libstdc++/std/cmath.h rename to libg++/libstdc++/std/cmath.h diff --git a/contrib/libg++/libstdc++/std/complex.h b/libg++/libstdc++/std/complex.h similarity index 100% rename from contrib/libg++/libstdc++/std/complex.h rename to libg++/libstdc++/std/complex.h diff --git a/contrib/libg++/libstdc++/std/complext.cc b/libg++/libstdc++/std/complext.cc similarity index 100% rename from contrib/libg++/libstdc++/std/complext.cc rename to libg++/libstdc++/std/complext.cc diff --git a/contrib/libg++/libstdc++/std/complext.h b/libg++/libstdc++/std/complext.h similarity index 100% rename from contrib/libg++/libstdc++/std/complext.h rename to libg++/libstdc++/std/complext.h diff --git a/contrib/libg++/libstdc++/std/csetjmp.h b/libg++/libstdc++/std/csetjmp.h similarity index 100% rename from contrib/libg++/libstdc++/std/csetjmp.h rename to libg++/libstdc++/std/csetjmp.h diff --git a/contrib/libg++/libstdc++/std/csignal.h b/libg++/libstdc++/std/csignal.h similarity index 100% rename from contrib/libg++/libstdc++/std/csignal.h rename to libg++/libstdc++/std/csignal.h diff --git a/contrib/libg++/libstdc++/std/cstdarg.h b/libg++/libstdc++/std/cstdarg.h similarity index 100% rename from contrib/libg++/libstdc++/std/cstdarg.h rename to libg++/libstdc++/std/cstdarg.h diff --git a/contrib/libg++/libstdc++/std/cstddef.h b/libg++/libstdc++/std/cstddef.h similarity index 100% rename from contrib/libg++/libstdc++/std/cstddef.h rename to libg++/libstdc++/std/cstddef.h diff --git a/contrib/libg++/libstdc++/std/cstdio.h b/libg++/libstdc++/std/cstdio.h similarity index 100% rename from contrib/libg++/libstdc++/std/cstdio.h rename to libg++/libstdc++/std/cstdio.h diff --git a/contrib/libg++/libstdc++/std/cstdlib.h b/libg++/libstdc++/std/cstdlib.h similarity index 100% rename from contrib/libg++/libstdc++/std/cstdlib.h rename to libg++/libstdc++/std/cstdlib.h diff --git a/contrib/libg++/libstdc++/std/cstring.h b/libg++/libstdc++/std/cstring.h similarity index 100% rename from contrib/libg++/libstdc++/std/cstring.h rename to libg++/libstdc++/std/cstring.h diff --git a/contrib/libg++/libstdc++/std/ctime.h b/libg++/libstdc++/std/ctime.h similarity index 100% rename from contrib/libg++/libstdc++/std/ctime.h rename to libg++/libstdc++/std/ctime.h diff --git a/contrib/libg++/libstdc++/std/cwchar.h b/libg++/libstdc++/std/cwchar.h similarity index 100% rename from contrib/libg++/libstdc++/std/cwchar.h rename to libg++/libstdc++/std/cwchar.h diff --git a/contrib/libg++/libstdc++/std/cwctype.h b/libg++/libstdc++/std/cwctype.h similarity index 100% rename from contrib/libg++/libstdc++/std/cwctype.h rename to libg++/libstdc++/std/cwctype.h diff --git a/contrib/libg++/libstdc++/std/dcomplex.h b/libg++/libstdc++/std/dcomplex.h similarity index 100% rename from contrib/libg++/libstdc++/std/dcomplex.h rename to libg++/libstdc++/std/dcomplex.h diff --git a/contrib/libg++/libstdc++/std/exception.h b/libg++/libstdc++/std/exception.h similarity index 100% rename from contrib/libg++/libstdc++/std/exception.h rename to libg++/libstdc++/std/exception.h diff --git a/contrib/libg++/libstdc++/std/fcomplex.h b/libg++/libstdc++/std/fcomplex.h similarity index 100% rename from contrib/libg++/libstdc++/std/fcomplex.h rename to libg++/libstdc++/std/fcomplex.h diff --git a/contrib/libg++/libstdc++/std/ldcomplex.h b/libg++/libstdc++/std/ldcomplex.h similarity index 100% rename from contrib/libg++/libstdc++/std/ldcomplex.h rename to libg++/libstdc++/std/ldcomplex.h diff --git a/contrib/libg++/libstdc++/std/new.h b/libg++/libstdc++/std/new.h similarity index 100% rename from contrib/libg++/libstdc++/std/new.h rename to libg++/libstdc++/std/new.h diff --git a/contrib/libg++/libstdc++/std/sinst.h b/libg++/libstdc++/std/sinst.h similarity index 100% rename from contrib/libg++/libstdc++/std/sinst.h rename to libg++/libstdc++/std/sinst.h diff --git a/contrib/libg++/libstdc++/std/stddef.h b/libg++/libstdc++/std/stddef.h similarity index 100% rename from contrib/libg++/libstdc++/std/stddef.h rename to libg++/libstdc++/std/stddef.h diff --git a/contrib/libg++/libstdc++/std/stdexcept.h b/libg++/libstdc++/std/stdexcept.h similarity index 100% rename from contrib/libg++/libstdc++/std/stdexcept.h rename to libg++/libstdc++/std/stdexcept.h diff --git a/contrib/libg++/libstdc++/std/straits.h b/libg++/libstdc++/std/straits.h similarity index 100% rename from contrib/libg++/libstdc++/std/straits.h rename to libg++/libstdc++/std/straits.h diff --git a/contrib/libg++/libstdc++/std/string.h b/libg++/libstdc++/std/string.h similarity index 100% rename from contrib/libg++/libstdc++/std/string.h rename to libg++/libstdc++/std/string.h diff --git a/contrib/libg++/libstdc++/std/typeinfo.h b/libg++/libstdc++/std/typeinfo.h similarity index 100% rename from contrib/libg++/libstdc++/std/typeinfo.h rename to libg++/libstdc++/std/typeinfo.h diff --git a/contrib/libg++/libstdc++/stddef b/libg++/libstdc++/stddef similarity index 100% rename from contrib/libg++/libstdc++/stddef rename to libg++/libstdc++/stddef diff --git a/contrib/libg++/libstdc++/stddefi.cc b/libg++/libstdc++/stddefi.cc similarity index 100% rename from contrib/libg++/libstdc++/stddefi.cc rename to libg++/libstdc++/stddefi.cc diff --git a/contrib/libg++/libstdc++/stdexcept b/libg++/libstdc++/stdexcept similarity index 100% rename from contrib/libg++/libstdc++/stdexcept rename to libg++/libstdc++/stdexcept diff --git a/contrib/libg++/libstdc++/stdexcepti.cc b/libg++/libstdc++/stdexcepti.cc similarity index 100% rename from contrib/libg++/libstdc++/stdexcepti.cc rename to libg++/libstdc++/stdexcepti.cc diff --git a/contrib/libg++/libstdc++/stl.h b/libg++/libstdc++/stl.h similarity index 100% rename from contrib/libg++/libstdc++/stl.h rename to libg++/libstdc++/stl.h diff --git a/contrib/libg++/libstdc++/stl/ChangeLog b/libg++/libstdc++/stl/ChangeLog similarity index 100% rename from contrib/libg++/libstdc++/stl/ChangeLog rename to libg++/libstdc++/stl/ChangeLog diff --git a/contrib/libg++/libstdc++/stl/Makefile.in b/libg++/libstdc++/stl/Makefile.in similarity index 100% rename from contrib/libg++/libstdc++/stl/Makefile.in rename to libg++/libstdc++/stl/Makefile.in diff --git a/contrib/libg++/libstdc++/stl/README b/libg++/libstdc++/stl/README similarity index 100% rename from contrib/libg++/libstdc++/stl/README rename to libg++/libstdc++/stl/README diff --git a/contrib/libg++/libstdc++/stl/algo.h b/libg++/libstdc++/stl/algo.h similarity index 100% rename from contrib/libg++/libstdc++/stl/algo.h rename to libg++/libstdc++/stl/algo.h diff --git a/contrib/libg++/libstdc++/stl/algobase.h b/libg++/libstdc++/stl/algobase.h similarity index 100% rename from contrib/libg++/libstdc++/stl/algobase.h rename to libg++/libstdc++/stl/algobase.h diff --git a/contrib/libg++/libstdc++/stl/bool.h b/libg++/libstdc++/stl/bool.h similarity index 100% rename from contrib/libg++/libstdc++/stl/bool.h rename to libg++/libstdc++/stl/bool.h diff --git a/contrib/libg++/libstdc++/stl/bvector.h b/libg++/libstdc++/stl/bvector.h similarity index 100% rename from contrib/libg++/libstdc++/stl/bvector.h rename to libg++/libstdc++/stl/bvector.h diff --git a/contrib/libg++/libstdc++/stl/configure.in b/libg++/libstdc++/stl/configure.in similarity index 100% rename from contrib/libg++/libstdc++/stl/configure.in rename to libg++/libstdc++/stl/configure.in diff --git a/contrib/libg++/libstdc++/stl/defalloc.h b/libg++/libstdc++/stl/defalloc.h similarity index 100% rename from contrib/libg++/libstdc++/stl/defalloc.h rename to libg++/libstdc++/stl/defalloc.h diff --git a/contrib/libg++/libstdc++/stl/deque.h b/libg++/libstdc++/stl/deque.h similarity index 100% rename from contrib/libg++/libstdc++/stl/deque.h rename to libg++/libstdc++/stl/deque.h diff --git a/contrib/libg++/libstdc++/stl/faralloc.h b/libg++/libstdc++/stl/faralloc.h similarity index 100% rename from contrib/libg++/libstdc++/stl/faralloc.h rename to libg++/libstdc++/stl/faralloc.h diff --git a/contrib/libg++/libstdc++/stl/fdeque.h b/libg++/libstdc++/stl/fdeque.h similarity index 100% rename from contrib/libg++/libstdc++/stl/fdeque.h rename to libg++/libstdc++/stl/fdeque.h diff --git a/contrib/libg++/libstdc++/stl/flist.h b/libg++/libstdc++/stl/flist.h similarity index 100% rename from contrib/libg++/libstdc++/stl/flist.h rename to libg++/libstdc++/stl/flist.h diff --git a/contrib/libg++/libstdc++/stl/fmap.h b/libg++/libstdc++/stl/fmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/fmap.h rename to libg++/libstdc++/stl/fmap.h diff --git a/contrib/libg++/libstdc++/stl/fmultmap.h b/libg++/libstdc++/stl/fmultmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/fmultmap.h rename to libg++/libstdc++/stl/fmultmap.h diff --git a/contrib/libg++/libstdc++/stl/fmultset.h b/libg++/libstdc++/stl/fmultset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/fmultset.h rename to libg++/libstdc++/stl/fmultset.h diff --git a/contrib/libg++/libstdc++/stl/fset.h b/libg++/libstdc++/stl/fset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/fset.h rename to libg++/libstdc++/stl/fset.h diff --git a/contrib/libg++/libstdc++/stl/function.h b/libg++/libstdc++/stl/function.h similarity index 100% rename from contrib/libg++/libstdc++/stl/function.h rename to libg++/libstdc++/stl/function.h diff --git a/contrib/libg++/libstdc++/stl/hdeque.h b/libg++/libstdc++/stl/hdeque.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hdeque.h rename to libg++/libstdc++/stl/hdeque.h diff --git a/contrib/libg++/libstdc++/stl/heap.h b/libg++/libstdc++/stl/heap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/heap.h rename to libg++/libstdc++/stl/heap.h diff --git a/contrib/libg++/libstdc++/stl/hlist.h b/libg++/libstdc++/stl/hlist.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hlist.h rename to libg++/libstdc++/stl/hlist.h diff --git a/contrib/libg++/libstdc++/stl/hmap.h b/libg++/libstdc++/stl/hmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hmap.h rename to libg++/libstdc++/stl/hmap.h diff --git a/contrib/libg++/libstdc++/stl/hmultmap.h b/libg++/libstdc++/stl/hmultmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hmultmap.h rename to libg++/libstdc++/stl/hmultmap.h diff --git a/contrib/libg++/libstdc++/stl/hmultset.h b/libg++/libstdc++/stl/hmultset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hmultset.h rename to libg++/libstdc++/stl/hmultset.h diff --git a/contrib/libg++/libstdc++/stl/hset.h b/libg++/libstdc++/stl/hset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hset.h rename to libg++/libstdc++/stl/hset.h diff --git a/contrib/libg++/libstdc++/stl/hugalloc.h b/libg++/libstdc++/stl/hugalloc.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hugalloc.h rename to libg++/libstdc++/stl/hugalloc.h diff --git a/contrib/libg++/libstdc++/stl/hvector.h b/libg++/libstdc++/stl/hvector.h similarity index 100% rename from contrib/libg++/libstdc++/stl/hvector.h rename to libg++/libstdc++/stl/hvector.h diff --git a/contrib/libg++/libstdc++/stl/iterator.h b/libg++/libstdc++/stl/iterator.h similarity index 100% rename from contrib/libg++/libstdc++/stl/iterator.h rename to libg++/libstdc++/stl/iterator.h diff --git a/contrib/libg++/libstdc++/stl/lbvector.h b/libg++/libstdc++/stl/lbvector.h similarity index 100% rename from contrib/libg++/libstdc++/stl/lbvector.h rename to libg++/libstdc++/stl/lbvector.h diff --git a/contrib/libg++/libstdc++/stl/ldeque.h b/libg++/libstdc++/stl/ldeque.h similarity index 100% rename from contrib/libg++/libstdc++/stl/ldeque.h rename to libg++/libstdc++/stl/ldeque.h diff --git a/contrib/libg++/libstdc++/stl/list.h b/libg++/libstdc++/stl/list.h similarity index 100% rename from contrib/libg++/libstdc++/stl/list.h rename to libg++/libstdc++/stl/list.h diff --git a/contrib/libg++/libstdc++/stl/llist.h b/libg++/libstdc++/stl/llist.h similarity index 100% rename from contrib/libg++/libstdc++/stl/llist.h rename to libg++/libstdc++/stl/llist.h diff --git a/contrib/libg++/libstdc++/stl/lmap.h b/libg++/libstdc++/stl/lmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/lmap.h rename to libg++/libstdc++/stl/lmap.h diff --git a/contrib/libg++/libstdc++/stl/lmultmap.h b/libg++/libstdc++/stl/lmultmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/lmultmap.h rename to libg++/libstdc++/stl/lmultmap.h diff --git a/contrib/libg++/libstdc++/stl/lmultset.h b/libg++/libstdc++/stl/lmultset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/lmultset.h rename to libg++/libstdc++/stl/lmultset.h diff --git a/contrib/libg++/libstdc++/stl/lngalloc.h b/libg++/libstdc++/stl/lngalloc.h similarity index 100% rename from contrib/libg++/libstdc++/stl/lngalloc.h rename to libg++/libstdc++/stl/lngalloc.h diff --git a/contrib/libg++/libstdc++/stl/lset.h b/libg++/libstdc++/stl/lset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/lset.h rename to libg++/libstdc++/stl/lset.h diff --git a/contrib/libg++/libstdc++/stl/map.h b/libg++/libstdc++/stl/map.h similarity index 100% rename from contrib/libg++/libstdc++/stl/map.h rename to libg++/libstdc++/stl/map.h diff --git a/contrib/libg++/libstdc++/stl/multimap.h b/libg++/libstdc++/stl/multimap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/multimap.h rename to libg++/libstdc++/stl/multimap.h diff --git a/contrib/libg++/libstdc++/stl/multiset.h b/libg++/libstdc++/stl/multiset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/multiset.h rename to libg++/libstdc++/stl/multiset.h diff --git a/contrib/libg++/libstdc++/stl/neralloc.h b/libg++/libstdc++/stl/neralloc.h similarity index 100% rename from contrib/libg++/libstdc++/stl/neralloc.h rename to libg++/libstdc++/stl/neralloc.h diff --git a/contrib/libg++/libstdc++/stl/nmap.h b/libg++/libstdc++/stl/nmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/nmap.h rename to libg++/libstdc++/stl/nmap.h diff --git a/contrib/libg++/libstdc++/stl/nmultmap.h b/libg++/libstdc++/stl/nmultmap.h similarity index 100% rename from contrib/libg++/libstdc++/stl/nmultmap.h rename to libg++/libstdc++/stl/nmultmap.h diff --git a/contrib/libg++/libstdc++/stl/nmultset.h b/libg++/libstdc++/stl/nmultset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/nmultset.h rename to libg++/libstdc++/stl/nmultset.h diff --git a/contrib/libg++/libstdc++/stl/nset.h b/libg++/libstdc++/stl/nset.h similarity index 100% rename from contrib/libg++/libstdc++/stl/nset.h rename to libg++/libstdc++/stl/nset.h diff --git a/contrib/libg++/libstdc++/stl/pair.h b/libg++/libstdc++/stl/pair.h similarity index 100% rename from contrib/libg++/libstdc++/stl/pair.h rename to libg++/libstdc++/stl/pair.h diff --git a/contrib/libg++/libstdc++/stl/projectn.h b/libg++/libstdc++/stl/projectn.h similarity index 100% rename from contrib/libg++/libstdc++/stl/projectn.h rename to libg++/libstdc++/stl/projectn.h diff --git a/contrib/libg++/libstdc++/stl/random.cc b/libg++/libstdc++/stl/random.cc similarity index 100% rename from contrib/libg++/libstdc++/stl/random.cc rename to libg++/libstdc++/stl/random.cc diff --git a/contrib/libg++/libstdc++/stl/set.h b/libg++/libstdc++/stl/set.h similarity index 100% rename from contrib/libg++/libstdc++/stl/set.h rename to libg++/libstdc++/stl/set.h diff --git a/contrib/libg++/libstdc++/stl/stack.h b/libg++/libstdc++/stl/stack.h similarity index 100% rename from contrib/libg++/libstdc++/stl/stack.h rename to libg++/libstdc++/stl/stack.h diff --git a/contrib/libg++/libstdc++/stl/tempbuf.cc b/libg++/libstdc++/stl/tempbuf.cc similarity index 100% rename from contrib/libg++/libstdc++/stl/tempbuf.cc rename to libg++/libstdc++/stl/tempbuf.cc diff --git a/contrib/libg++/libstdc++/stl/tempbuf.h b/libg++/libstdc++/stl/tempbuf.h similarity index 100% rename from contrib/libg++/libstdc++/stl/tempbuf.h rename to libg++/libstdc++/stl/tempbuf.h diff --git a/contrib/libg++/libstdc++/stl/tree.cc b/libg++/libstdc++/stl/tree.cc similarity index 100% rename from contrib/libg++/libstdc++/stl/tree.cc rename to libg++/libstdc++/stl/tree.cc diff --git a/contrib/libg++/libstdc++/stl/tree.h b/libg++/libstdc++/stl/tree.h similarity index 100% rename from contrib/libg++/libstdc++/stl/tree.h rename to libg++/libstdc++/stl/tree.h diff --git a/contrib/libg++/libstdc++/stl/vector.h b/libg++/libstdc++/stl/vector.h similarity index 100% rename from contrib/libg++/libstdc++/stl/vector.h rename to libg++/libstdc++/stl/vector.h diff --git a/contrib/libg++/libstdc++/string b/libg++/libstdc++/string similarity index 100% rename from contrib/libg++/libstdc++/string rename to libg++/libstdc++/string diff --git a/contrib/libg++/libstdc++/tests/ChangeLog b/libg++/libstdc++/tests/ChangeLog similarity index 100% rename from contrib/libg++/libstdc++/tests/ChangeLog rename to libg++/libstdc++/tests/ChangeLog diff --git a/contrib/libg++/libstdc++/tests/Makefile.in b/libg++/libstdc++/tests/Makefile.in similarity index 100% rename from contrib/libg++/libstdc++/tests/Makefile.in rename to libg++/libstdc++/tests/Makefile.in diff --git a/contrib/libg++/libstdc++/tests/configure.in b/libg++/libstdc++/tests/configure.in similarity index 100% rename from contrib/libg++/libstdc++/tests/configure.in rename to libg++/libstdc++/tests/configure.in diff --git a/contrib/libg++/libstdc++/tests/tcomplex.cc b/libg++/libstdc++/tests/tcomplex.cc similarity index 100% rename from contrib/libg++/libstdc++/tests/tcomplex.cc rename to libg++/libstdc++/tests/tcomplex.cc diff --git a/contrib/libg++/libstdc++/tests/tcomplex.exp b/libg++/libstdc++/tests/tcomplex.exp similarity index 100% rename from contrib/libg++/libstdc++/tests/tcomplex.exp rename to libg++/libstdc++/tests/tcomplex.exp diff --git a/contrib/libg++/libstdc++/tests/tcomplex.inp b/libg++/libstdc++/tests/tcomplex.inp similarity index 100% rename from contrib/libg++/libstdc++/tests/tcomplex.inp rename to libg++/libstdc++/tests/tcomplex.inp diff --git a/contrib/libg++/libstdc++/tests/tlist.cc b/libg++/libstdc++/tests/tlist.cc similarity index 100% rename from contrib/libg++/libstdc++/tests/tlist.cc rename to libg++/libstdc++/tests/tlist.cc diff --git a/contrib/libg++/libstdc++/tests/tlist.exp b/libg++/libstdc++/tests/tlist.exp similarity index 100% rename from contrib/libg++/libstdc++/tests/tlist.exp rename to libg++/libstdc++/tests/tlist.exp diff --git a/contrib/libg++/libstdc++/tests/tmap.cc b/libg++/libstdc++/tests/tmap.cc similarity index 100% rename from contrib/libg++/libstdc++/tests/tmap.cc rename to libg++/libstdc++/tests/tmap.cc diff --git a/contrib/libg++/libstdc++/tests/tmap.exp b/libg++/libstdc++/tests/tmap.exp similarity index 100% rename from contrib/libg++/libstdc++/tests/tmap.exp rename to libg++/libstdc++/tests/tmap.exp diff --git a/contrib/libg++/libstdc++/tests/tstring.cc b/libg++/libstdc++/tests/tstring.cc similarity index 100% rename from contrib/libg++/libstdc++/tests/tstring.cc rename to libg++/libstdc++/tests/tstring.cc diff --git a/contrib/libg++/libstdc++/tests/tstring.exp b/libg++/libstdc++/tests/tstring.exp similarity index 100% rename from contrib/libg++/libstdc++/tests/tstring.exp rename to libg++/libstdc++/tests/tstring.exp diff --git a/contrib/libg++/libstdc++/tests/tstring.inp b/libg++/libstdc++/tests/tstring.inp similarity index 100% rename from contrib/libg++/libstdc++/tests/tstring.inp rename to libg++/libstdc++/tests/tstring.inp diff --git a/contrib/libg++/libstdc++/tests/tvector.cc b/libg++/libstdc++/tests/tvector.cc similarity index 100% rename from contrib/libg++/libstdc++/tests/tvector.cc rename to libg++/libstdc++/tests/tvector.cc diff --git a/contrib/libg++/libstdc++/tests/tvector.exp b/libg++/libstdc++/tests/tvector.exp similarity index 100% rename from contrib/libg++/libstdc++/tests/tvector.exp rename to libg++/libstdc++/tests/tvector.exp diff --git a/contrib/libg++/libstdc++/typeinfo b/libg++/libstdc++/typeinfo similarity index 100% rename from contrib/libg++/libstdc++/typeinfo rename to libg++/libstdc++/typeinfo diff --git a/contrib/libg++/libstdc++/typeinfoi.cc b/libg++/libstdc++/typeinfoi.cc similarity index 100% rename from contrib/libg++/libstdc++/typeinfoi.cc rename to libg++/libstdc++/typeinfoi.cc diff --git a/contrib/libg++/libstdc++/utility b/libg++/libstdc++/utility similarity index 100% rename from contrib/libg++/libstdc++/utility rename to libg++/libstdc++/utility diff --git a/contrib/libg++/libstdc++/vector b/libg++/libstdc++/vector similarity index 100% rename from contrib/libg++/libstdc++/vector rename to libg++/libstdc++/vector diff --git a/contrib/gcclibs/libgomp/ChangeLog b/libgomp/ChangeLog similarity index 100% rename from contrib/gcclibs/libgomp/ChangeLog rename to libgomp/ChangeLog diff --git a/contrib/gcclibs/libgomp/Makefile.am b/libgomp/Makefile.am similarity index 100% rename from contrib/gcclibs/libgomp/Makefile.am rename to libgomp/Makefile.am diff --git a/contrib/gcclibs/libgomp/Makefile.in b/libgomp/Makefile.in similarity index 100% rename from contrib/gcclibs/libgomp/Makefile.in rename to libgomp/Makefile.in diff --git a/contrib/gcclibs/libgomp/acinclude.m4 b/libgomp/acinclude.m4 similarity index 100% rename from contrib/gcclibs/libgomp/acinclude.m4 rename to libgomp/acinclude.m4 diff --git a/contrib/gcclibs/libgomp/aclocal.m4 b/libgomp/aclocal.m4 similarity index 100% rename from contrib/gcclibs/libgomp/aclocal.m4 rename to libgomp/aclocal.m4 diff --git a/contrib/gcclibs/libgomp/alloc.c b/libgomp/alloc.c similarity index 100% rename from contrib/gcclibs/libgomp/alloc.c rename to libgomp/alloc.c diff --git a/contrib/gcclibs/libgomp/barrier.c b/libgomp/barrier.c similarity index 100% rename from contrib/gcclibs/libgomp/barrier.c rename to libgomp/barrier.c diff --git a/contrib/gcclibs/libgomp/config.h.in b/libgomp/config.h.in similarity index 100% rename from contrib/gcclibs/libgomp/config.h.in rename to libgomp/config.h.in diff --git a/contrib/gcclibs/libgomp/config/linux/alpha/futex.h b/libgomp/config/linux/alpha/futex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/alpha/futex.h rename to libgomp/config/linux/alpha/futex.h diff --git a/contrib/gcclibs/libgomp/config/linux/bar.c b/libgomp/config/linux/bar.c similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/bar.c rename to libgomp/config/linux/bar.c diff --git a/contrib/gcclibs/libgomp/config/linux/bar.h b/libgomp/config/linux/bar.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/bar.h rename to libgomp/config/linux/bar.h diff --git a/contrib/gcclibs/libgomp/config/linux/ia64/futex.h b/libgomp/config/linux/ia64/futex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/ia64/futex.h rename to libgomp/config/linux/ia64/futex.h diff --git a/contrib/gcclibs/libgomp/config/linux/lock.c b/libgomp/config/linux/lock.c similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/lock.c rename to libgomp/config/linux/lock.c diff --git a/contrib/gcclibs/libgomp/config/linux/mutex.c b/libgomp/config/linux/mutex.c similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/mutex.c rename to libgomp/config/linux/mutex.c diff --git a/contrib/gcclibs/libgomp/config/linux/mutex.h b/libgomp/config/linux/mutex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/mutex.h rename to libgomp/config/linux/mutex.h diff --git a/contrib/gcclibs/libgomp/config/linux/omp-lock.h b/libgomp/config/linux/omp-lock.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/omp-lock.h rename to libgomp/config/linux/omp-lock.h diff --git a/contrib/gcclibs/libgomp/config/linux/powerpc/futex.h b/libgomp/config/linux/powerpc/futex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/powerpc/futex.h rename to libgomp/config/linux/powerpc/futex.h diff --git a/contrib/gcclibs/libgomp/config/linux/s390/futex.h b/libgomp/config/linux/s390/futex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/s390/futex.h rename to libgomp/config/linux/s390/futex.h diff --git a/contrib/gcclibs/libgomp/config/linux/sem.c b/libgomp/config/linux/sem.c similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/sem.c rename to libgomp/config/linux/sem.c diff --git a/contrib/gcclibs/libgomp/config/linux/sem.h b/libgomp/config/linux/sem.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/sem.h rename to libgomp/config/linux/sem.h diff --git a/contrib/gcclibs/libgomp/config/linux/sparc/futex.h b/libgomp/config/linux/sparc/futex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/sparc/futex.h rename to libgomp/config/linux/sparc/futex.h diff --git a/contrib/gcclibs/libgomp/config/linux/x86/futex.h b/libgomp/config/linux/x86/futex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/linux/x86/futex.h rename to libgomp/config/linux/x86/futex.h diff --git a/contrib/gcclibs/libgomp/config/mingw32/time.c b/libgomp/config/mingw32/time.c similarity index 100% rename from contrib/gcclibs/libgomp/config/mingw32/time.c rename to libgomp/config/mingw32/time.c diff --git a/contrib/gcclibs/libgomp/config/posix/bar.c b/libgomp/config/posix/bar.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/bar.c rename to libgomp/config/posix/bar.c diff --git a/contrib/gcclibs/libgomp/config/posix/bar.h b/libgomp/config/posix/bar.h similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/bar.h rename to libgomp/config/posix/bar.h diff --git a/contrib/gcclibs/libgomp/config/posix/lock.c b/libgomp/config/posix/lock.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/lock.c rename to libgomp/config/posix/lock.c diff --git a/contrib/gcclibs/libgomp/config/posix/mutex.c b/libgomp/config/posix/mutex.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/mutex.c rename to libgomp/config/posix/mutex.c diff --git a/contrib/gcclibs/libgomp/config/posix/mutex.h b/libgomp/config/posix/mutex.h similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/mutex.h rename to libgomp/config/posix/mutex.h diff --git a/contrib/gcclibs/libgomp/config/posix/omp-lock.h b/libgomp/config/posix/omp-lock.h similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/omp-lock.h rename to libgomp/config/posix/omp-lock.h diff --git a/contrib/gcclibs/libgomp/config/posix/proc.c b/libgomp/config/posix/proc.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/proc.c rename to libgomp/config/posix/proc.c diff --git a/contrib/gcclibs/libgomp/config/posix/sem.c b/libgomp/config/posix/sem.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/sem.c rename to libgomp/config/posix/sem.c diff --git a/contrib/gcclibs/libgomp/config/posix/sem.h b/libgomp/config/posix/sem.h similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/sem.h rename to libgomp/config/posix/sem.h diff --git a/contrib/gcclibs/libgomp/config/posix/time.c b/libgomp/config/posix/time.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix/time.c rename to libgomp/config/posix/time.c diff --git a/contrib/gcclibs/libgomp/config/posix95/lock.c b/libgomp/config/posix95/lock.c similarity index 100% rename from contrib/gcclibs/libgomp/config/posix95/lock.c rename to libgomp/config/posix95/lock.c diff --git a/contrib/gcclibs/libgomp/config/posix95/omp-lock.h b/libgomp/config/posix95/omp-lock.h similarity index 100% rename from contrib/gcclibs/libgomp/config/posix95/omp-lock.h rename to libgomp/config/posix95/omp-lock.h diff --git a/contrib/gcclibs/libgomp/configure b/libgomp/configure similarity index 100% rename from contrib/gcclibs/libgomp/configure rename to libgomp/configure diff --git a/contrib/gcclibs/libgomp/configure.ac b/libgomp/configure.ac similarity index 100% rename from contrib/gcclibs/libgomp/configure.ac rename to libgomp/configure.ac diff --git a/contrib/gcclibs/libgomp/configure.tgt b/libgomp/configure.tgt similarity index 100% rename from contrib/gcclibs/libgomp/configure.tgt rename to libgomp/configure.tgt diff --git a/contrib/gcclibs/libgomp/critical.c b/libgomp/critical.c similarity index 100% rename from contrib/gcclibs/libgomp/critical.c rename to libgomp/critical.c diff --git a/contrib/gcclibs/libgomp/env.c b/libgomp/env.c similarity index 100% rename from contrib/gcclibs/libgomp/env.c rename to libgomp/env.c diff --git a/contrib/gcclibs/libgomp/error.c b/libgomp/error.c similarity index 100% rename from contrib/gcclibs/libgomp/error.c rename to libgomp/error.c diff --git a/contrib/gcclibs/libgomp/fortran.c b/libgomp/fortran.c similarity index 100% rename from contrib/gcclibs/libgomp/fortran.c rename to libgomp/fortran.c diff --git a/contrib/gcclibs/libgomp/iter.c b/libgomp/iter.c similarity index 100% rename from contrib/gcclibs/libgomp/iter.c rename to libgomp/iter.c diff --git a/contrib/gcclibs/libgomp/libgomp.h b/libgomp/libgomp.h similarity index 100% rename from contrib/gcclibs/libgomp/libgomp.h rename to libgomp/libgomp.h diff --git a/contrib/gcclibs/libgomp/libgomp.map b/libgomp/libgomp.map similarity index 100% rename from contrib/gcclibs/libgomp/libgomp.map rename to libgomp/libgomp.map diff --git a/contrib/gcclibs/libgomp/libgomp.spec.in b/libgomp/libgomp.spec.in similarity index 100% rename from contrib/gcclibs/libgomp/libgomp.spec.in rename to libgomp/libgomp.spec.in diff --git a/contrib/gcclibs/libgomp/libgomp.texi b/libgomp/libgomp.texi similarity index 100% rename from contrib/gcclibs/libgomp/libgomp.texi rename to libgomp/libgomp.texi diff --git a/contrib/gcclibs/libgomp/libgomp_f.h.in b/libgomp/libgomp_f.h.in similarity index 100% rename from contrib/gcclibs/libgomp/libgomp_f.h.in rename to libgomp/libgomp_f.h.in diff --git a/contrib/gcclibs/libgomp/libgomp_g.h b/libgomp/libgomp_g.h similarity index 100% rename from contrib/gcclibs/libgomp/libgomp_g.h rename to libgomp/libgomp_g.h diff --git a/contrib/gcclibs/libgomp/loop.c b/libgomp/loop.c similarity index 100% rename from contrib/gcclibs/libgomp/loop.c rename to libgomp/loop.c diff --git a/contrib/gcclibs/libgomp/omp.h.in b/libgomp/omp.h.in similarity index 100% rename from contrib/gcclibs/libgomp/omp.h.in rename to libgomp/omp.h.in diff --git a/contrib/gcclibs/libgomp/omp_lib.f90.in b/libgomp/omp_lib.f90.in similarity index 100% rename from contrib/gcclibs/libgomp/omp_lib.f90.in rename to libgomp/omp_lib.f90.in diff --git a/contrib/gcclibs/libgomp/omp_lib.h.in b/libgomp/omp_lib.h.in similarity index 100% rename from contrib/gcclibs/libgomp/omp_lib.h.in rename to libgomp/omp_lib.h.in diff --git a/contrib/gcclibs/libgomp/ordered.c b/libgomp/ordered.c similarity index 100% rename from contrib/gcclibs/libgomp/ordered.c rename to libgomp/ordered.c diff --git a/contrib/gcclibs/libgomp/parallel.c b/libgomp/parallel.c similarity index 100% rename from contrib/gcclibs/libgomp/parallel.c rename to libgomp/parallel.c diff --git a/contrib/gcclibs/libgomp/sections.c b/libgomp/sections.c similarity index 100% rename from contrib/gcclibs/libgomp/sections.c rename to libgomp/sections.c diff --git a/contrib/gcclibs/libgomp/single.c b/libgomp/single.c similarity index 100% rename from contrib/gcclibs/libgomp/single.c rename to libgomp/single.c diff --git a/contrib/gcclibs/libgomp/team.c b/libgomp/team.c similarity index 100% rename from contrib/gcclibs/libgomp/team.c rename to libgomp/team.c diff --git a/contrib/gcclibs/libgomp/work.c b/libgomp/work.c similarity index 100% rename from contrib/gcclibs/libgomp/work.c rename to libgomp/work.c diff --git a/contrib/gcclibs/libiberty/COPYING.LIB b/libiberty/COPYING.LIB similarity index 100% rename from contrib/gcclibs/libiberty/COPYING.LIB rename to libiberty/COPYING.LIB diff --git a/contrib/gcclibs/libiberty/ChangeLog b/libiberty/ChangeLog similarity index 100% rename from contrib/gcclibs/libiberty/ChangeLog rename to libiberty/ChangeLog diff --git a/contrib/gcclibs/libiberty/Makefile.in b/libiberty/Makefile.in similarity index 100% rename from contrib/gcclibs/libiberty/Makefile.in rename to libiberty/Makefile.in diff --git a/contrib/gcclibs/libiberty/README b/libiberty/README similarity index 100% rename from contrib/gcclibs/libiberty/README rename to libiberty/README diff --git a/contrib/gcclibs/libiberty/_doprnt.c b/libiberty/_doprnt.c similarity index 100% rename from contrib/gcclibs/libiberty/_doprnt.c rename to libiberty/_doprnt.c diff --git a/contrib/gcclibs/libiberty/aclocal.m4 b/libiberty/aclocal.m4 similarity index 100% rename from contrib/gcclibs/libiberty/aclocal.m4 rename to libiberty/aclocal.m4 diff --git a/contrib/gcclibs/libiberty/alloca.c b/libiberty/alloca.c similarity index 100% rename from contrib/gcclibs/libiberty/alloca.c rename to libiberty/alloca.c diff --git a/contrib/gcclibs/libiberty/argv.c b/libiberty/argv.c similarity index 100% rename from contrib/gcclibs/libiberty/argv.c rename to libiberty/argv.c diff --git a/contrib/gcclibs/libiberty/asprintf.c b/libiberty/asprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/asprintf.c rename to libiberty/asprintf.c diff --git a/contrib/gcclibs/libiberty/at-file.texi b/libiberty/at-file.texi similarity index 100% rename from contrib/gcclibs/libiberty/at-file.texi rename to libiberty/at-file.texi diff --git a/contrib/gcclibs/libiberty/atexit.c b/libiberty/atexit.c similarity index 100% rename from contrib/gcclibs/libiberty/atexit.c rename to libiberty/atexit.c diff --git a/contrib/gcclibs/libiberty/basename.c b/libiberty/basename.c similarity index 100% rename from contrib/gcclibs/libiberty/basename.c rename to libiberty/basename.c diff --git a/contrib/gcclibs/libiberty/bcmp.c b/libiberty/bcmp.c similarity index 100% rename from contrib/gcclibs/libiberty/bcmp.c rename to libiberty/bcmp.c diff --git a/contrib/gcclibs/libiberty/bcopy.c b/libiberty/bcopy.c similarity index 100% rename from contrib/gcclibs/libiberty/bcopy.c rename to libiberty/bcopy.c diff --git a/contrib/gcclibs/libiberty/bsearch.c b/libiberty/bsearch.c similarity index 100% rename from contrib/gcclibs/libiberty/bsearch.c rename to libiberty/bsearch.c diff --git a/contrib/gcclibs/libiberty/bzero.c b/libiberty/bzero.c similarity index 100% rename from contrib/gcclibs/libiberty/bzero.c rename to libiberty/bzero.c diff --git a/contrib/gcclibs/libiberty/calloc.c b/libiberty/calloc.c similarity index 100% rename from contrib/gcclibs/libiberty/calloc.c rename to libiberty/calloc.c diff --git a/contrib/gcclibs/libiberty/choose-temp.c b/libiberty/choose-temp.c similarity index 100% rename from contrib/gcclibs/libiberty/choose-temp.c rename to libiberty/choose-temp.c diff --git a/contrib/gcclibs/libiberty/clock.c b/libiberty/clock.c similarity index 100% rename from contrib/gcclibs/libiberty/clock.c rename to libiberty/clock.c diff --git a/contrib/gcclibs/libiberty/concat.c b/libiberty/concat.c similarity index 100% rename from contrib/gcclibs/libiberty/concat.c rename to libiberty/concat.c diff --git a/contrib/gcclibs/libiberty/config.h-vms b/libiberty/config.h-vms similarity index 100% rename from contrib/gcclibs/libiberty/config.h-vms rename to libiberty/config.h-vms diff --git a/contrib/gcclibs/libiberty/config.in b/libiberty/config.in similarity index 100% rename from contrib/gcclibs/libiberty/config.in rename to libiberty/config.in diff --git a/contrib/gcclibs/libiberty/config/mh-aix b/libiberty/config/mh-aix similarity index 100% rename from contrib/gcclibs/libiberty/config/mh-aix rename to libiberty/config/mh-aix diff --git a/contrib/gcclibs/libiberty/config/mh-cxux7 b/libiberty/config/mh-cxux7 similarity index 100% rename from contrib/gcclibs/libiberty/config/mh-cxux7 rename to libiberty/config/mh-cxux7 diff --git a/contrib/gcclibs/libiberty/config/mh-fbsd21 b/libiberty/config/mh-fbsd21 similarity index 100% rename from contrib/gcclibs/libiberty/config/mh-fbsd21 rename to libiberty/config/mh-fbsd21 diff --git a/contrib/gcclibs/libiberty/config/mh-openedition b/libiberty/config/mh-openedition similarity index 100% rename from contrib/gcclibs/libiberty/config/mh-openedition rename to libiberty/config/mh-openedition diff --git a/contrib/gcclibs/libiberty/config/mh-windows b/libiberty/config/mh-windows similarity index 100% rename from contrib/gcclibs/libiberty/config/mh-windows rename to libiberty/config/mh-windows diff --git a/contrib/gcclibs/libiberty/configure b/libiberty/configure similarity index 100% rename from contrib/gcclibs/libiberty/configure rename to libiberty/configure diff --git a/contrib/gcclibs/libiberty/configure.ac b/libiberty/configure.ac similarity index 100% rename from contrib/gcclibs/libiberty/configure.ac rename to libiberty/configure.ac diff --git a/contrib/gcclibs/libiberty/copying-lib.texi b/libiberty/copying-lib.texi similarity index 100% rename from contrib/gcclibs/libiberty/copying-lib.texi rename to libiberty/copying-lib.texi diff --git a/contrib/gcclibs/libiberty/copysign.c b/libiberty/copysign.c similarity index 100% rename from contrib/gcclibs/libiberty/copysign.c rename to libiberty/copysign.c diff --git a/contrib/gcclibs/libiberty/cp-demangle.c b/libiberty/cp-demangle.c similarity index 100% rename from contrib/gcclibs/libiberty/cp-demangle.c rename to libiberty/cp-demangle.c diff --git a/contrib/gcclibs/libiberty/cp-demangle.h b/libiberty/cp-demangle.h similarity index 100% rename from contrib/gcclibs/libiberty/cp-demangle.h rename to libiberty/cp-demangle.h diff --git a/contrib/gcclibs/libiberty/cp-demint.c b/libiberty/cp-demint.c similarity index 100% rename from contrib/gcclibs/libiberty/cp-demint.c rename to libiberty/cp-demint.c diff --git a/contrib/gcclibs/libiberty/cplus-dem.c b/libiberty/cplus-dem.c similarity index 100% rename from contrib/gcclibs/libiberty/cplus-dem.c rename to libiberty/cplus-dem.c diff --git a/contrib/gcclibs/libiberty/dyn-string.c b/libiberty/dyn-string.c similarity index 100% rename from contrib/gcclibs/libiberty/dyn-string.c rename to libiberty/dyn-string.c diff --git a/contrib/gcclibs/libiberty/fdmatch.c b/libiberty/fdmatch.c similarity index 100% rename from contrib/gcclibs/libiberty/fdmatch.c rename to libiberty/fdmatch.c diff --git a/contrib/gcclibs/libiberty/ffs.c b/libiberty/ffs.c similarity index 100% rename from contrib/gcclibs/libiberty/ffs.c rename to libiberty/ffs.c diff --git a/contrib/gcclibs/libiberty/fibheap.c b/libiberty/fibheap.c similarity index 100% rename from contrib/gcclibs/libiberty/fibheap.c rename to libiberty/fibheap.c diff --git a/contrib/gcclibs/libiberty/floatformat.c b/libiberty/floatformat.c similarity index 100% rename from contrib/gcclibs/libiberty/floatformat.c rename to libiberty/floatformat.c diff --git a/contrib/gcclibs/libiberty/fnmatch.c b/libiberty/fnmatch.c similarity index 100% rename from contrib/gcclibs/libiberty/fnmatch.c rename to libiberty/fnmatch.c diff --git a/contrib/gcclibs/libiberty/fnmatch.txh b/libiberty/fnmatch.txh similarity index 100% rename from contrib/gcclibs/libiberty/fnmatch.txh rename to libiberty/fnmatch.txh diff --git a/contrib/gcclibs/libiberty/fopen_unlocked.c b/libiberty/fopen_unlocked.c similarity index 100% rename from contrib/gcclibs/libiberty/fopen_unlocked.c rename to libiberty/fopen_unlocked.c diff --git a/contrib/gcclibs/libiberty/functions.texi b/libiberty/functions.texi similarity index 100% rename from contrib/gcclibs/libiberty/functions.texi rename to libiberty/functions.texi diff --git a/contrib/gcclibs/libiberty/gather-docs b/libiberty/gather-docs similarity index 100% rename from contrib/gcclibs/libiberty/gather-docs rename to libiberty/gather-docs diff --git a/contrib/gcclibs/libiberty/getcwd.c b/libiberty/getcwd.c similarity index 100% rename from contrib/gcclibs/libiberty/getcwd.c rename to libiberty/getcwd.c diff --git a/contrib/gcclibs/libiberty/getopt.c b/libiberty/getopt.c similarity index 100% rename from contrib/gcclibs/libiberty/getopt.c rename to libiberty/getopt.c diff --git a/contrib/gcclibs/libiberty/getopt1.c b/libiberty/getopt1.c similarity index 100% rename from contrib/gcclibs/libiberty/getopt1.c rename to libiberty/getopt1.c diff --git a/contrib/gcclibs/libiberty/getpagesize.c b/libiberty/getpagesize.c similarity index 100% rename from contrib/gcclibs/libiberty/getpagesize.c rename to libiberty/getpagesize.c diff --git a/contrib/gcclibs/libiberty/getpwd.c b/libiberty/getpwd.c similarity index 100% rename from contrib/gcclibs/libiberty/getpwd.c rename to libiberty/getpwd.c diff --git a/contrib/gcclibs/libiberty/getruntime.c b/libiberty/getruntime.c similarity index 100% rename from contrib/gcclibs/libiberty/getruntime.c rename to libiberty/getruntime.c diff --git a/contrib/gcclibs/libiberty/gettimeofday.c b/libiberty/gettimeofday.c similarity index 100% rename from contrib/gcclibs/libiberty/gettimeofday.c rename to libiberty/gettimeofday.c diff --git a/contrib/gcclibs/libiberty/hashtab.c b/libiberty/hashtab.c similarity index 100% rename from contrib/gcclibs/libiberty/hashtab.c rename to libiberty/hashtab.c diff --git a/contrib/gcclibs/libiberty/hex.c b/libiberty/hex.c similarity index 100% rename from contrib/gcclibs/libiberty/hex.c rename to libiberty/hex.c diff --git a/contrib/gcclibs/libiberty/index.c b/libiberty/index.c similarity index 100% rename from contrib/gcclibs/libiberty/index.c rename to libiberty/index.c diff --git a/contrib/gcclibs/libiberty/insque.c b/libiberty/insque.c similarity index 100% rename from contrib/gcclibs/libiberty/insque.c rename to libiberty/insque.c diff --git a/contrib/gcclibs/libiberty/lbasename.c b/libiberty/lbasename.c similarity index 100% rename from contrib/gcclibs/libiberty/lbasename.c rename to libiberty/lbasename.c diff --git a/contrib/gcclibs/libiberty/libiberty.texi b/libiberty/libiberty.texi similarity index 100% rename from contrib/gcclibs/libiberty/libiberty.texi rename to libiberty/libiberty.texi diff --git a/contrib/gcclibs/libiberty/lrealpath.c b/libiberty/lrealpath.c similarity index 100% rename from contrib/gcclibs/libiberty/lrealpath.c rename to libiberty/lrealpath.c diff --git a/contrib/gcclibs/libiberty/maint-tool b/libiberty/maint-tool similarity index 100% rename from contrib/gcclibs/libiberty/maint-tool rename to libiberty/maint-tool diff --git a/contrib/gcclibs/libiberty/make-relative-prefix.c b/libiberty/make-relative-prefix.c similarity index 100% rename from contrib/gcclibs/libiberty/make-relative-prefix.c rename to libiberty/make-relative-prefix.c diff --git a/contrib/gcclibs/libiberty/make-temp-file.c b/libiberty/make-temp-file.c similarity index 100% rename from contrib/gcclibs/libiberty/make-temp-file.c rename to libiberty/make-temp-file.c diff --git a/contrib/gcclibs/libiberty/makefile.vms b/libiberty/makefile.vms similarity index 100% rename from contrib/gcclibs/libiberty/makefile.vms rename to libiberty/makefile.vms diff --git a/contrib/gcclibs/libiberty/md5.c b/libiberty/md5.c similarity index 100% rename from contrib/gcclibs/libiberty/md5.c rename to libiberty/md5.c diff --git a/contrib/gcclibs/libiberty/memchr.c b/libiberty/memchr.c similarity index 100% rename from contrib/gcclibs/libiberty/memchr.c rename to libiberty/memchr.c diff --git a/contrib/gcclibs/libiberty/memcmp.c b/libiberty/memcmp.c similarity index 100% rename from contrib/gcclibs/libiberty/memcmp.c rename to libiberty/memcmp.c diff --git a/contrib/gcclibs/libiberty/memcpy.c b/libiberty/memcpy.c similarity index 100% rename from contrib/gcclibs/libiberty/memcpy.c rename to libiberty/memcpy.c diff --git a/contrib/gcclibs/libiberty/memmove.c b/libiberty/memmove.c similarity index 100% rename from contrib/gcclibs/libiberty/memmove.c rename to libiberty/memmove.c diff --git a/contrib/gcclibs/libiberty/mempcpy.c b/libiberty/mempcpy.c similarity index 100% rename from contrib/gcclibs/libiberty/mempcpy.c rename to libiberty/mempcpy.c diff --git a/contrib/gcclibs/libiberty/memset.c b/libiberty/memset.c similarity index 100% rename from contrib/gcclibs/libiberty/memset.c rename to libiberty/memset.c diff --git a/contrib/gcclibs/libiberty/mkstemps.c b/libiberty/mkstemps.c similarity index 100% rename from contrib/gcclibs/libiberty/mkstemps.c rename to libiberty/mkstemps.c diff --git a/contrib/gcclibs/libiberty/msdos.c b/libiberty/msdos.c similarity index 100% rename from contrib/gcclibs/libiberty/msdos.c rename to libiberty/msdos.c diff --git a/contrib/gcclibs/libiberty/objalloc.c b/libiberty/objalloc.c similarity index 100% rename from contrib/gcclibs/libiberty/objalloc.c rename to libiberty/objalloc.c diff --git a/contrib/gcclibs/libiberty/obstack.c b/libiberty/obstack.c similarity index 100% rename from contrib/gcclibs/libiberty/obstack.c rename to libiberty/obstack.c diff --git a/contrib/gcclibs/libiberty/obstacks.texi b/libiberty/obstacks.texi similarity index 100% rename from contrib/gcclibs/libiberty/obstacks.texi rename to libiberty/obstacks.texi diff --git a/contrib/gcclibs/libiberty/partition.c b/libiberty/partition.c similarity index 100% rename from contrib/gcclibs/libiberty/partition.c rename to libiberty/partition.c diff --git a/contrib/gcclibs/libiberty/pex-common.c b/libiberty/pex-common.c similarity index 100% rename from contrib/gcclibs/libiberty/pex-common.c rename to libiberty/pex-common.c diff --git a/contrib/gcclibs/libiberty/pex-common.h b/libiberty/pex-common.h similarity index 100% rename from contrib/gcclibs/libiberty/pex-common.h rename to libiberty/pex-common.h diff --git a/contrib/gcclibs/libiberty/pex-djgpp.c b/libiberty/pex-djgpp.c similarity index 100% rename from contrib/gcclibs/libiberty/pex-djgpp.c rename to libiberty/pex-djgpp.c diff --git a/contrib/gcclibs/libiberty/pex-msdos.c b/libiberty/pex-msdos.c similarity index 100% rename from contrib/gcclibs/libiberty/pex-msdos.c rename to libiberty/pex-msdos.c diff --git a/contrib/gcclibs/libiberty/pex-one.c b/libiberty/pex-one.c similarity index 100% rename from contrib/gcclibs/libiberty/pex-one.c rename to libiberty/pex-one.c diff --git a/contrib/gcclibs/libiberty/pex-unix.c b/libiberty/pex-unix.c similarity index 100% rename from contrib/gcclibs/libiberty/pex-unix.c rename to libiberty/pex-unix.c diff --git a/contrib/gcclibs/libiberty/pex-win32.c b/libiberty/pex-win32.c similarity index 100% rename from contrib/gcclibs/libiberty/pex-win32.c rename to libiberty/pex-win32.c diff --git a/contrib/gcclibs/libiberty/pexecute.c b/libiberty/pexecute.c similarity index 100% rename from contrib/gcclibs/libiberty/pexecute.c rename to libiberty/pexecute.c diff --git a/contrib/gcclibs/libiberty/pexecute.txh b/libiberty/pexecute.txh similarity index 100% rename from contrib/gcclibs/libiberty/pexecute.txh rename to libiberty/pexecute.txh diff --git a/contrib/gcclibs/libiberty/physmem.c b/libiberty/physmem.c similarity index 100% rename from contrib/gcclibs/libiberty/physmem.c rename to libiberty/physmem.c diff --git a/contrib/gcclibs/libiberty/putenv.c b/libiberty/putenv.c similarity index 100% rename from contrib/gcclibs/libiberty/putenv.c rename to libiberty/putenv.c diff --git a/contrib/gcclibs/libiberty/random.c b/libiberty/random.c similarity index 100% rename from contrib/gcclibs/libiberty/random.c rename to libiberty/random.c diff --git a/contrib/gcclibs/libiberty/regex.c b/libiberty/regex.c similarity index 100% rename from contrib/gcclibs/libiberty/regex.c rename to libiberty/regex.c diff --git a/contrib/gcclibs/libiberty/rename.c b/libiberty/rename.c similarity index 100% rename from contrib/gcclibs/libiberty/rename.c rename to libiberty/rename.c diff --git a/contrib/gcclibs/libiberty/rindex.c b/libiberty/rindex.c similarity index 100% rename from contrib/gcclibs/libiberty/rindex.c rename to libiberty/rindex.c diff --git a/contrib/gcclibs/libiberty/safe-ctype.c b/libiberty/safe-ctype.c similarity index 100% rename from contrib/gcclibs/libiberty/safe-ctype.c rename to libiberty/safe-ctype.c diff --git a/contrib/gcclibs/libiberty/setenv.c b/libiberty/setenv.c similarity index 100% rename from contrib/gcclibs/libiberty/setenv.c rename to libiberty/setenv.c diff --git a/contrib/gcclibs/libiberty/sigsetmask.c b/libiberty/sigsetmask.c similarity index 100% rename from contrib/gcclibs/libiberty/sigsetmask.c rename to libiberty/sigsetmask.c diff --git a/contrib/gcclibs/libiberty/snprintf.c b/libiberty/snprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/snprintf.c rename to libiberty/snprintf.c diff --git a/contrib/gcclibs/libiberty/sort.c b/libiberty/sort.c similarity index 100% rename from contrib/gcclibs/libiberty/sort.c rename to libiberty/sort.c diff --git a/contrib/gcclibs/libiberty/spaces.c b/libiberty/spaces.c similarity index 100% rename from contrib/gcclibs/libiberty/spaces.c rename to libiberty/spaces.c diff --git a/contrib/gcclibs/libiberty/splay-tree.c b/libiberty/splay-tree.c similarity index 100% rename from contrib/gcclibs/libiberty/splay-tree.c rename to libiberty/splay-tree.c diff --git a/contrib/gcclibs/libiberty/stpcpy.c b/libiberty/stpcpy.c similarity index 100% rename from contrib/gcclibs/libiberty/stpcpy.c rename to libiberty/stpcpy.c diff --git a/contrib/gcclibs/libiberty/stpncpy.c b/libiberty/stpncpy.c similarity index 100% rename from contrib/gcclibs/libiberty/stpncpy.c rename to libiberty/stpncpy.c diff --git a/contrib/gcclibs/libiberty/strcasecmp.c b/libiberty/strcasecmp.c similarity index 100% rename from contrib/gcclibs/libiberty/strcasecmp.c rename to libiberty/strcasecmp.c diff --git a/contrib/gcclibs/libiberty/strchr.c b/libiberty/strchr.c similarity index 100% rename from contrib/gcclibs/libiberty/strchr.c rename to libiberty/strchr.c diff --git a/contrib/gcclibs/libiberty/strdup.c b/libiberty/strdup.c similarity index 100% rename from contrib/gcclibs/libiberty/strdup.c rename to libiberty/strdup.c diff --git a/contrib/gcclibs/libiberty/strerror.c b/libiberty/strerror.c similarity index 100% rename from contrib/gcclibs/libiberty/strerror.c rename to libiberty/strerror.c diff --git a/contrib/gcclibs/libiberty/strncasecmp.c b/libiberty/strncasecmp.c similarity index 100% rename from contrib/gcclibs/libiberty/strncasecmp.c rename to libiberty/strncasecmp.c diff --git a/contrib/gcclibs/libiberty/strncmp.c b/libiberty/strncmp.c similarity index 100% rename from contrib/gcclibs/libiberty/strncmp.c rename to libiberty/strncmp.c diff --git a/contrib/gcclibs/libiberty/strndup.c b/libiberty/strndup.c similarity index 100% rename from contrib/gcclibs/libiberty/strndup.c rename to libiberty/strndup.c diff --git a/contrib/gcclibs/libiberty/strrchr.c b/libiberty/strrchr.c similarity index 100% rename from contrib/gcclibs/libiberty/strrchr.c rename to libiberty/strrchr.c diff --git a/contrib/gcclibs/libiberty/strsignal.c b/libiberty/strsignal.c similarity index 100% rename from contrib/gcclibs/libiberty/strsignal.c rename to libiberty/strsignal.c diff --git a/contrib/gcclibs/libiberty/strstr.c b/libiberty/strstr.c similarity index 100% rename from contrib/gcclibs/libiberty/strstr.c rename to libiberty/strstr.c diff --git a/contrib/gcclibs/libiberty/strtod.c b/libiberty/strtod.c similarity index 100% rename from contrib/gcclibs/libiberty/strtod.c rename to libiberty/strtod.c diff --git a/contrib/gcclibs/libiberty/strtol.c b/libiberty/strtol.c similarity index 100% rename from contrib/gcclibs/libiberty/strtol.c rename to libiberty/strtol.c diff --git a/contrib/gcclibs/libiberty/strtoul.c b/libiberty/strtoul.c similarity index 100% rename from contrib/gcclibs/libiberty/strtoul.c rename to libiberty/strtoul.c diff --git a/contrib/gcclibs/libiberty/strverscmp.c b/libiberty/strverscmp.c similarity index 100% rename from contrib/gcclibs/libiberty/strverscmp.c rename to libiberty/strverscmp.c diff --git a/contrib/gcclibs/libiberty/ternary.c b/libiberty/ternary.c similarity index 100% rename from contrib/gcclibs/libiberty/ternary.c rename to libiberty/ternary.c diff --git a/contrib/gcclibs/libiberty/testsuite/Makefile.in b/libiberty/testsuite/Makefile.in similarity index 100% rename from contrib/gcclibs/libiberty/testsuite/Makefile.in rename to libiberty/testsuite/Makefile.in diff --git a/contrib/gcclibs/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected similarity index 100% rename from contrib/gcclibs/libiberty/testsuite/demangle-expected rename to libiberty/testsuite/demangle-expected diff --git a/contrib/gcclibs/libiberty/testsuite/test-demangle.c b/libiberty/testsuite/test-demangle.c similarity index 100% rename from contrib/gcclibs/libiberty/testsuite/test-demangle.c rename to libiberty/testsuite/test-demangle.c diff --git a/contrib/gcclibs/libiberty/testsuite/test-expandargv.c b/libiberty/testsuite/test-expandargv.c similarity index 100% rename from contrib/gcclibs/libiberty/testsuite/test-expandargv.c rename to libiberty/testsuite/test-expandargv.c diff --git a/contrib/gcclibs/libiberty/testsuite/test-pexecute.c b/libiberty/testsuite/test-pexecute.c similarity index 100% rename from contrib/gcclibs/libiberty/testsuite/test-pexecute.c rename to libiberty/testsuite/test-pexecute.c diff --git a/contrib/gcclibs/libiberty/tmpnam.c b/libiberty/tmpnam.c similarity index 100% rename from contrib/gcclibs/libiberty/tmpnam.c rename to libiberty/tmpnam.c diff --git a/contrib/gcclibs/libiberty/unlink-if-ordinary.c b/libiberty/unlink-if-ordinary.c similarity index 100% rename from contrib/gcclibs/libiberty/unlink-if-ordinary.c rename to libiberty/unlink-if-ordinary.c diff --git a/contrib/gcclibs/libiberty/vasprintf.c b/libiberty/vasprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/vasprintf.c rename to libiberty/vasprintf.c diff --git a/contrib/gcclibs/libiberty/vfork.c b/libiberty/vfork.c similarity index 100% rename from contrib/gcclibs/libiberty/vfork.c rename to libiberty/vfork.c diff --git a/contrib/gcclibs/libiberty/vfprintf.c b/libiberty/vfprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/vfprintf.c rename to libiberty/vfprintf.c diff --git a/contrib/gcclibs/libiberty/vmsbuild.com b/libiberty/vmsbuild.com similarity index 100% rename from contrib/gcclibs/libiberty/vmsbuild.com rename to libiberty/vmsbuild.com diff --git a/contrib/gcclibs/libiberty/vprintf.c b/libiberty/vprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/vprintf.c rename to libiberty/vprintf.c diff --git a/contrib/gcclibs/libiberty/vsnprintf.c b/libiberty/vsnprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/vsnprintf.c rename to libiberty/vsnprintf.c diff --git a/contrib/gcclibs/libiberty/vsprintf.c b/libiberty/vsprintf.c similarity index 100% rename from contrib/gcclibs/libiberty/vsprintf.c rename to libiberty/vsprintf.c diff --git a/contrib/gcclibs/libiberty/waitpid.c b/libiberty/waitpid.c similarity index 100% rename from contrib/gcclibs/libiberty/waitpid.c rename to libiberty/waitpid.c diff --git a/contrib/gcclibs/libiberty/xatexit.c b/libiberty/xatexit.c similarity index 100% rename from contrib/gcclibs/libiberty/xatexit.c rename to libiberty/xatexit.c diff --git a/contrib/gcclibs/libiberty/xexit.c b/libiberty/xexit.c similarity index 100% rename from contrib/gcclibs/libiberty/xexit.c rename to libiberty/xexit.c diff --git a/contrib/gcclibs/libiberty/xmalloc.c b/libiberty/xmalloc.c similarity index 100% rename from contrib/gcclibs/libiberty/xmalloc.c rename to libiberty/xmalloc.c diff --git a/contrib/gcclibs/libiberty/xmemdup.c b/libiberty/xmemdup.c similarity index 100% rename from contrib/gcclibs/libiberty/xmemdup.c rename to libiberty/xmemdup.c diff --git a/contrib/gcclibs/libiberty/xstrdup.c b/libiberty/xstrdup.c similarity index 100% rename from contrib/gcclibs/libiberty/xstrdup.c rename to libiberty/xstrdup.c diff --git a/contrib/gcclibs/libiberty/xstrerror.c b/libiberty/xstrerror.c similarity index 100% rename from contrib/gcclibs/libiberty/xstrerror.c rename to libiberty/xstrerror.c diff --git a/contrib/gcclibs/libiberty/xstrndup.c b/libiberty/xstrndup.c similarity index 100% rename from contrib/gcclibs/libiberty/xstrndup.c rename to libiberty/xstrndup.c diff --git a/contrib/libio/ChangeLog b/libio/ChangeLog similarity index 100% rename from contrib/libio/ChangeLog rename to libio/ChangeLog diff --git a/contrib/libio/Makefile.in b/libio/Makefile.in similarity index 100% rename from contrib/libio/Makefile.in rename to libio/Makefile.in diff --git a/contrib/libio/NEWS b/libio/NEWS similarity index 100% rename from contrib/libio/NEWS rename to libio/NEWS diff --git a/contrib/libio/PlotFile.cc b/libio/PlotFile.cc similarity index 100% rename from contrib/libio/PlotFile.cc rename to libio/PlotFile.cc diff --git a/contrib/libio/PlotFile.h b/libio/PlotFile.h similarity index 100% rename from contrib/libio/PlotFile.h rename to libio/PlotFile.h diff --git a/contrib/libio/README b/libio/README similarity index 100% rename from contrib/libio/README rename to libio/README diff --git a/contrib/libio/SFile.cc b/libio/SFile.cc similarity index 100% rename from contrib/libio/SFile.cc rename to libio/SFile.cc diff --git a/contrib/libio/SFile.h b/libio/SFile.h similarity index 100% rename from contrib/libio/SFile.h rename to libio/SFile.h diff --git a/contrib/libio/builtinbuf.cc b/libio/builtinbuf.cc similarity index 100% rename from contrib/libio/builtinbuf.cc rename to libio/builtinbuf.cc diff --git a/contrib/libio/builtinbuf.h b/libio/builtinbuf.h similarity index 100% rename from contrib/libio/builtinbuf.h rename to libio/builtinbuf.h diff --git a/contrib/libio/cleanup.c b/libio/cleanup.c similarity index 100% rename from contrib/libio/cleanup.c rename to libio/cleanup.c diff --git a/contrib/libio/config.shared b/libio/config.shared similarity index 100% rename from contrib/libio/config.shared rename to libio/config.shared diff --git a/contrib/libio/config/hpux.mt b/libio/config/hpux.mt similarity index 100% rename from contrib/libio/config/hpux.mt rename to libio/config/hpux.mt diff --git a/contrib/libio/config/isc.mt b/libio/config/isc.mt similarity index 100% rename from contrib/libio/config/isc.mt rename to libio/config/isc.mt diff --git a/contrib/libio/config/linux.mt b/libio/config/linux.mt similarity index 100% rename from contrib/libio/config/linux.mt rename to libio/config/linux.mt diff --git a/contrib/libio/config/linuxaxp1-libc-lock.h b/libio/config/linuxaxp1-libc-lock.h similarity index 100% rename from contrib/libio/config/linuxaxp1-libc-lock.h rename to libio/config/linuxaxp1-libc-lock.h diff --git a/contrib/libio/config/linuxaxp1-stdio-lock.h b/libio/config/linuxaxp1-stdio-lock.h similarity index 100% rename from contrib/libio/config/linuxaxp1-stdio-lock.h rename to libio/config/linuxaxp1-stdio-lock.h diff --git a/contrib/libio/config/linuxaxp1.mt b/libio/config/linuxaxp1.mt similarity index 100% rename from contrib/libio/config/linuxaxp1.mt rename to libio/config/linuxaxp1.mt diff --git a/contrib/libio/config/linuxlibc1.mt b/libio/config/linuxlibc1.mt similarity index 100% rename from contrib/libio/config/linuxlibc1.mt rename to libio/config/linuxlibc1.mt diff --git a/contrib/libio/config/mn10200.mt b/libio/config/mn10200.mt similarity index 100% rename from contrib/libio/config/mn10200.mt rename to libio/config/mn10200.mt diff --git a/contrib/libio/config/mtsafe.mt b/libio/config/mtsafe.mt similarity index 100% rename from contrib/libio/config/mtsafe.mt rename to libio/config/mtsafe.mt diff --git a/contrib/libio/config/netware.mt b/libio/config/netware.mt similarity index 100% rename from contrib/libio/config/netware.mt rename to libio/config/netware.mt diff --git a/contrib/libio/configure.in b/libio/configure.in similarity index 100% rename from contrib/libio/configure.in rename to libio/configure.in diff --git a/contrib/libio/dbz/Makefile.in b/libio/dbz/Makefile.in similarity index 100% rename from contrib/libio/dbz/Makefile.in rename to libio/dbz/Makefile.in diff --git a/contrib/libio/dbz/README b/libio/dbz/README similarity index 100% rename from contrib/libio/dbz/README rename to libio/dbz/README diff --git a/contrib/libio/dbz/altbytes b/libio/dbz/altbytes similarity index 100% rename from contrib/libio/dbz/altbytes rename to libio/dbz/altbytes diff --git a/contrib/libio/dbz/byteflip.c b/libio/dbz/byteflip.c similarity index 100% rename from contrib/libio/dbz/byteflip.c rename to libio/dbz/byteflip.c diff --git a/contrib/libio/dbz/case.c b/libio/dbz/case.c similarity index 100% rename from contrib/libio/dbz/case.c rename to libio/dbz/case.c diff --git a/contrib/libio/dbz/case.h b/libio/dbz/case.h similarity index 100% rename from contrib/libio/dbz/case.h rename to libio/dbz/case.h diff --git a/contrib/libio/dbz/configure.in b/libio/dbz/configure.in similarity index 100% rename from contrib/libio/dbz/configure.in rename to libio/dbz/configure.in diff --git a/contrib/libio/dbz/dbz.1 b/libio/dbz/dbz.1 similarity index 100% rename from contrib/libio/dbz/dbz.1 rename to libio/dbz/dbz.1 diff --git a/contrib/libio/dbz/dbz.3z b/libio/dbz/dbz.3z similarity index 100% rename from contrib/libio/dbz/dbz.3z rename to libio/dbz/dbz.3z diff --git a/contrib/libio/dbz/dbz.c b/libio/dbz/dbz.c similarity index 100% rename from contrib/libio/dbz/dbz.c rename to libio/dbz/dbz.c diff --git a/contrib/libio/dbz/dbz.h b/libio/dbz/dbz.h similarity index 100% rename from contrib/libio/dbz/dbz.h rename to libio/dbz/dbz.h diff --git a/contrib/libio/dbz/dbzmain.c b/libio/dbz/dbzmain.c similarity index 100% rename from contrib/libio/dbz/dbzmain.c rename to libio/dbz/dbzmain.c diff --git a/contrib/libio/dbz/fake.c b/libio/dbz/fake.c similarity index 100% rename from contrib/libio/dbz/fake.c rename to libio/dbz/fake.c diff --git a/contrib/libio/dbz/firstlast25 b/libio/dbz/firstlast25 similarity index 100% rename from contrib/libio/dbz/firstlast25 rename to libio/dbz/firstlast25 diff --git a/contrib/libio/dbz/getmap b/libio/dbz/getmap similarity index 100% rename from contrib/libio/dbz/getmap rename to libio/dbz/getmap diff --git a/contrib/libio/dbz/random.c b/libio/dbz/random.c similarity index 100% rename from contrib/libio/dbz/random.c rename to libio/dbz/random.c diff --git a/contrib/libio/dbz/revbytes b/libio/dbz/revbytes similarity index 100% rename from contrib/libio/dbz/revbytes rename to libio/dbz/revbytes diff --git a/contrib/libio/dbz/stdio.h b/libio/dbz/stdio.h similarity index 100% rename from contrib/libio/dbz/stdio.h rename to libio/dbz/stdio.h diff --git a/contrib/libio/depend b/libio/depend similarity index 100% rename from contrib/libio/depend rename to libio/depend diff --git a/contrib/libio/editbuf.cc b/libio/editbuf.cc similarity index 100% rename from contrib/libio/editbuf.cc rename to libio/editbuf.cc diff --git a/contrib/libio/editbuf.h b/libio/editbuf.h similarity index 100% rename from contrib/libio/editbuf.h rename to libio/editbuf.h diff --git a/contrib/libio/filebuf.cc b/libio/filebuf.cc similarity index 100% rename from contrib/libio/filebuf.cc rename to libio/filebuf.cc diff --git a/contrib/libio/filedoalloc.c b/libio/filedoalloc.c similarity index 100% rename from contrib/libio/filedoalloc.c rename to libio/filedoalloc.c diff --git a/contrib/libio/fileops.c b/libio/fileops.c similarity index 100% rename from contrib/libio/fileops.c rename to libio/fileops.c diff --git a/contrib/libio/floatconv.c b/libio/floatconv.c similarity index 100% rename from contrib/libio/floatconv.c rename to libio/floatconv.c diff --git a/contrib/libio/floatio.h b/libio/floatio.h similarity index 100% rename from contrib/libio/floatio.h rename to libio/floatio.h diff --git a/contrib/libio/fstream.cc b/libio/fstream.cc similarity index 100% rename from contrib/libio/fstream.cc rename to libio/fstream.cc diff --git a/contrib/libio/fstream.h b/libio/fstream.h similarity index 100% rename from contrib/libio/fstream.h rename to libio/fstream.h diff --git a/contrib/libio/gen-params b/libio/gen-params similarity index 100% rename from contrib/libio/gen-params rename to libio/gen-params diff --git a/contrib/libio/genops.c b/libio/genops.c similarity index 100% rename from contrib/libio/genops.c rename to libio/genops.c diff --git a/contrib/libio/include/empty.h b/libio/include/empty.h similarity index 100% rename from contrib/libio/include/empty.h rename to libio/include/empty.h diff --git a/contrib/libio/indstream.cc b/libio/indstream.cc similarity index 100% rename from contrib/libio/indstream.cc rename to libio/indstream.cc diff --git a/contrib/libio/indstream.h b/libio/indstream.h similarity index 100% rename from contrib/libio/indstream.h rename to libio/indstream.h diff --git a/contrib/libio/ioassign.cc b/libio/ioassign.cc similarity index 100% rename from contrib/libio/ioassign.cc rename to libio/ioassign.cc diff --git a/contrib/libio/ioextend.cc b/libio/ioextend.cc similarity index 100% rename from contrib/libio/ioextend.cc rename to libio/ioextend.cc diff --git a/contrib/libio/iofclose.c b/libio/iofclose.c similarity index 100% rename from contrib/libio/iofclose.c rename to libio/iofclose.c diff --git a/contrib/libio/iofdopen.c b/libio/iofdopen.c similarity index 100% rename from contrib/libio/iofdopen.c rename to libio/iofdopen.c diff --git a/contrib/libio/iofeof.c b/libio/iofeof.c similarity index 100% rename from contrib/libio/iofeof.c rename to libio/iofeof.c diff --git a/contrib/libio/ioferror.c b/libio/ioferror.c similarity index 100% rename from contrib/libio/ioferror.c rename to libio/ioferror.c diff --git a/contrib/libio/iofflush.c b/libio/iofflush.c similarity index 100% rename from contrib/libio/iofflush.c rename to libio/iofflush.c diff --git a/contrib/libio/iofflush_u.c b/libio/iofflush_u.c similarity index 100% rename from contrib/libio/iofflush_u.c rename to libio/iofflush_u.c diff --git a/contrib/libio/iofgetpos.c b/libio/iofgetpos.c similarity index 100% rename from contrib/libio/iofgetpos.c rename to libio/iofgetpos.c diff --git a/contrib/libio/iofgets.c b/libio/iofgets.c similarity index 100% rename from contrib/libio/iofgets.c rename to libio/iofgets.c diff --git a/contrib/libio/iofopen.c b/libio/iofopen.c similarity index 100% rename from contrib/libio/iofopen.c rename to libio/iofopen.c diff --git a/contrib/libio/iofprintf.c b/libio/iofprintf.c similarity index 100% rename from contrib/libio/iofprintf.c rename to libio/iofprintf.c diff --git a/contrib/libio/iofputs.c b/libio/iofputs.c similarity index 100% rename from contrib/libio/iofputs.c rename to libio/iofputs.c diff --git a/contrib/libio/iofread.c b/libio/iofread.c similarity index 100% rename from contrib/libio/iofread.c rename to libio/iofread.c diff --git a/contrib/libio/iofscanf.c b/libio/iofscanf.c similarity index 100% rename from contrib/libio/iofscanf.c rename to libio/iofscanf.c diff --git a/contrib/libio/iofsetpos.c b/libio/iofsetpos.c similarity index 100% rename from contrib/libio/iofsetpos.c rename to libio/iofsetpos.c diff --git a/contrib/libio/ioftell.c b/libio/ioftell.c similarity index 100% rename from contrib/libio/ioftell.c rename to libio/ioftell.c diff --git a/contrib/libio/iofwrite.c b/libio/iofwrite.c similarity index 100% rename from contrib/libio/iofwrite.c rename to libio/iofwrite.c diff --git a/contrib/libio/iogetc.c b/libio/iogetc.c similarity index 100% rename from contrib/libio/iogetc.c rename to libio/iogetc.c diff --git a/contrib/libio/iogetdelim.c b/libio/iogetdelim.c similarity index 100% rename from contrib/libio/iogetdelim.c rename to libio/iogetdelim.c diff --git a/contrib/libio/iogetline.c b/libio/iogetline.c similarity index 100% rename from contrib/libio/iogetline.c rename to libio/iogetline.c diff --git a/contrib/libio/iogets.c b/libio/iogets.c similarity index 100% rename from contrib/libio/iogets.c rename to libio/iogets.c diff --git a/contrib/libio/ioignore.c b/libio/ioignore.c similarity index 100% rename from contrib/libio/ioignore.c rename to libio/ioignore.c diff --git a/contrib/libio/iolibio.h b/libio/iolibio.h similarity index 100% rename from contrib/libio/iolibio.h rename to libio/iolibio.h diff --git a/contrib/libio/iomanip.cc b/libio/iomanip.cc similarity index 100% rename from contrib/libio/iomanip.cc rename to libio/iomanip.cc diff --git a/contrib/libio/iomanip.h b/libio/iomanip.h similarity index 100% rename from contrib/libio/iomanip.h rename to libio/iomanip.h diff --git a/contrib/libio/iopadn.c b/libio/iopadn.c similarity index 100% rename from contrib/libio/iopadn.c rename to libio/iopadn.c diff --git a/contrib/libio/ioperror.c b/libio/ioperror.c similarity index 100% rename from contrib/libio/ioperror.c rename to libio/ioperror.c diff --git a/contrib/libio/iopopen.c b/libio/iopopen.c similarity index 100% rename from contrib/libio/iopopen.c rename to libio/iopopen.c diff --git a/contrib/libio/ioprims.c b/libio/ioprims.c similarity index 100% rename from contrib/libio/ioprims.c rename to libio/ioprims.c diff --git a/contrib/libio/ioprintf.c b/libio/ioprintf.c similarity index 100% rename from contrib/libio/ioprintf.c rename to libio/ioprintf.c diff --git a/contrib/libio/ioputc.c b/libio/ioputc.c similarity index 100% rename from contrib/libio/ioputc.c rename to libio/ioputc.c diff --git a/contrib/libio/ioputs.c b/libio/ioputs.c similarity index 100% rename from contrib/libio/ioputs.c rename to libio/ioputs.c diff --git a/contrib/libio/ioscanf.c b/libio/ioscanf.c similarity index 100% rename from contrib/libio/ioscanf.c rename to libio/ioscanf.c diff --git a/contrib/libio/ioseekoff.c b/libio/ioseekoff.c similarity index 100% rename from contrib/libio/ioseekoff.c rename to libio/ioseekoff.c diff --git a/contrib/libio/ioseekpos.c b/libio/ioseekpos.c similarity index 100% rename from contrib/libio/ioseekpos.c rename to libio/ioseekpos.c diff --git a/contrib/libio/iosetbuffer.c b/libio/iosetbuffer.c similarity index 100% rename from contrib/libio/iosetbuffer.c rename to libio/iosetbuffer.c diff --git a/contrib/libio/iosetvbuf.c b/libio/iosetvbuf.c similarity index 100% rename from contrib/libio/iosetvbuf.c rename to libio/iosetvbuf.c diff --git a/contrib/libio/iosprintf.c b/libio/iosprintf.c similarity index 100% rename from contrib/libio/iosprintf.c rename to libio/iosprintf.c diff --git a/contrib/libio/iosscanf.c b/libio/iosscanf.c similarity index 100% rename from contrib/libio/iosscanf.c rename to libio/iosscanf.c diff --git a/contrib/libio/iostdio.h b/libio/iostdio.h similarity index 100% rename from contrib/libio/iostdio.h rename to libio/iostdio.h diff --git a/contrib/libio/iostream.cc b/libio/iostream.cc similarity index 100% rename from contrib/libio/iostream.cc rename to libio/iostream.cc diff --git a/contrib/libio/iostream.h b/libio/iostream.h similarity index 100% rename from contrib/libio/iostream.h rename to libio/iostream.h diff --git a/contrib/libio/iostream.texi b/libio/iostream.texi similarity index 100% rename from contrib/libio/iostream.texi rename to libio/iostream.texi diff --git a/contrib/libio/iostreamP.h b/libio/iostreamP.h similarity index 100% rename from contrib/libio/iostreamP.h rename to libio/iostreamP.h diff --git a/contrib/libio/iostrerror.c b/libio/iostrerror.c similarity index 100% rename from contrib/libio/iostrerror.c rename to libio/iostrerror.c diff --git a/contrib/libio/ioungetc.c b/libio/ioungetc.c similarity index 100% rename from contrib/libio/ioungetc.c rename to libio/ioungetc.c diff --git a/contrib/libio/iovfprintf.c b/libio/iovfprintf.c similarity index 100% rename from contrib/libio/iovfprintf.c rename to libio/iovfprintf.c diff --git a/contrib/libio/iovfscanf.c b/libio/iovfscanf.c similarity index 100% rename from contrib/libio/iovfscanf.c rename to libio/iovfscanf.c diff --git a/contrib/libio/iovsprintf.c b/libio/iovsprintf.c similarity index 100% rename from contrib/libio/iovsprintf.c rename to libio/iovsprintf.c diff --git a/contrib/libio/iovsscanf.c b/libio/iovsscanf.c similarity index 100% rename from contrib/libio/iovsscanf.c rename to libio/iovsscanf.c diff --git a/contrib/libio/isgetline.cc b/libio/isgetline.cc similarity index 100% rename from contrib/libio/isgetline.cc rename to libio/isgetline.cc diff --git a/contrib/libio/isgetsb.cc b/libio/isgetsb.cc similarity index 100% rename from contrib/libio/isgetsb.cc rename to libio/isgetsb.cc diff --git a/contrib/libio/isscan.cc b/libio/isscan.cc similarity index 100% rename from contrib/libio/isscan.cc rename to libio/isscan.cc diff --git a/contrib/libio/istream.h b/libio/istream.h similarity index 100% rename from contrib/libio/istream.h rename to libio/istream.h diff --git a/contrib/libio/libio.h b/libio/libio.h similarity index 100% rename from contrib/libio/libio.h rename to libio/libio.h diff --git a/contrib/libio/libioP.h b/libio/libioP.h similarity index 100% rename from contrib/libio/libioP.h rename to libio/libioP.h diff --git a/contrib/libio/osform.cc b/libio/osform.cc similarity index 100% rename from contrib/libio/osform.cc rename to libio/osform.cc diff --git a/contrib/libio/ostream.h b/libio/ostream.h similarity index 100% rename from contrib/libio/ostream.h rename to libio/ostream.h diff --git a/contrib/libio/outfloat.c b/libio/outfloat.c similarity index 100% rename from contrib/libio/outfloat.c rename to libio/outfloat.c diff --git a/contrib/libio/parsestream.cc b/libio/parsestream.cc similarity index 100% rename from contrib/libio/parsestream.cc rename to libio/parsestream.cc diff --git a/contrib/libio/parsestream.h b/libio/parsestream.h similarity index 100% rename from contrib/libio/parsestream.h rename to libio/parsestream.h diff --git a/contrib/libio/peekc.c b/libio/peekc.c similarity index 100% rename from contrib/libio/peekc.c rename to libio/peekc.c diff --git a/contrib/libio/pfstream.cc b/libio/pfstream.cc similarity index 100% rename from contrib/libio/pfstream.cc rename to libio/pfstream.cc diff --git a/contrib/libio/pfstream.h b/libio/pfstream.h similarity index 100% rename from contrib/libio/pfstream.h rename to libio/pfstream.h diff --git a/contrib/libio/procbuf.cc b/libio/procbuf.cc similarity index 100% rename from contrib/libio/procbuf.cc rename to libio/procbuf.cc diff --git a/contrib/libio/procbuf.h b/libio/procbuf.h similarity index 100% rename from contrib/libio/procbuf.h rename to libio/procbuf.h diff --git a/contrib/libio/sbform.cc b/libio/sbform.cc similarity index 100% rename from contrib/libio/sbform.cc rename to libio/sbform.cc diff --git a/contrib/libio/sbgetline.cc b/libio/sbgetline.cc similarity index 100% rename from contrib/libio/sbgetline.cc rename to libio/sbgetline.cc diff --git a/contrib/libio/sbscan.cc b/libio/sbscan.cc similarity index 100% rename from contrib/libio/sbscan.cc rename to libio/sbscan.cc diff --git a/contrib/libio/stdfiles.c b/libio/stdfiles.c similarity index 100% rename from contrib/libio/stdfiles.c rename to libio/stdfiles.c diff --git a/contrib/libio/stdio/ChangeLog b/libio/stdio/ChangeLog similarity index 100% rename from contrib/libio/stdio/ChangeLog rename to libio/stdio/ChangeLog diff --git a/contrib/libio/stdio/Makefile.in b/libio/stdio/Makefile.in similarity index 100% rename from contrib/libio/stdio/Makefile.in rename to libio/stdio/Makefile.in diff --git a/contrib/libio/stdio/clearerr.c b/libio/stdio/clearerr.c similarity index 100% rename from contrib/libio/stdio/clearerr.c rename to libio/stdio/clearerr.c diff --git a/contrib/libio/stdio/clearerr_u.c b/libio/stdio/clearerr_u.c similarity index 100% rename from contrib/libio/stdio/clearerr_u.c rename to libio/stdio/clearerr_u.c diff --git a/contrib/libio/stdio/configure.in b/libio/stdio/configure.in similarity index 100% rename from contrib/libio/stdio/configure.in rename to libio/stdio/configure.in diff --git a/contrib/libio/stdio/fdopen.c b/libio/stdio/fdopen.c similarity index 100% rename from contrib/libio/stdio/fdopen.c rename to libio/stdio/fdopen.c diff --git a/contrib/libio/stdio/feof.c b/libio/stdio/feof.c similarity index 100% rename from contrib/libio/stdio/feof.c rename to libio/stdio/feof.c diff --git a/contrib/libio/stdio/feof_u.c b/libio/stdio/feof_u.c similarity index 100% rename from contrib/libio/stdio/feof_u.c rename to libio/stdio/feof_u.c diff --git a/contrib/libio/stdio/ferror.c b/libio/stdio/ferror.c similarity index 100% rename from contrib/libio/stdio/ferror.c rename to libio/stdio/ferror.c diff --git a/contrib/libio/stdio/ferror_u.c b/libio/stdio/ferror_u.c similarity index 100% rename from contrib/libio/stdio/ferror_u.c rename to libio/stdio/ferror_u.c diff --git a/contrib/libio/stdio/fgetc.c b/libio/stdio/fgetc.c similarity index 100% rename from contrib/libio/stdio/fgetc.c rename to libio/stdio/fgetc.c diff --git a/contrib/libio/stdio/fileno.c b/libio/stdio/fileno.c similarity index 100% rename from contrib/libio/stdio/fileno.c rename to libio/stdio/fileno.c diff --git a/contrib/libio/stdio/fputc.c b/libio/stdio/fputc.c similarity index 100% rename from contrib/libio/stdio/fputc.c rename to libio/stdio/fputc.c diff --git a/contrib/libio/stdio/fputc_u.c b/libio/stdio/fputc_u.c similarity index 100% rename from contrib/libio/stdio/fputc_u.c rename to libio/stdio/fputc_u.c diff --git a/contrib/libio/stdio/freopen.c b/libio/stdio/freopen.c similarity index 100% rename from contrib/libio/stdio/freopen.c rename to libio/stdio/freopen.c diff --git a/contrib/libio/stdio/fseek.c b/libio/stdio/fseek.c similarity index 100% rename from contrib/libio/stdio/fseek.c rename to libio/stdio/fseek.c diff --git a/contrib/libio/stdio/getc.c b/libio/stdio/getc.c similarity index 100% rename from contrib/libio/stdio/getc.c rename to libio/stdio/getc.c diff --git a/contrib/libio/stdio/getc_u.c b/libio/stdio/getc_u.c similarity index 100% rename from contrib/libio/stdio/getc_u.c rename to libio/stdio/getc_u.c diff --git a/contrib/libio/stdio/getchar.c b/libio/stdio/getchar.c similarity index 100% rename from contrib/libio/stdio/getchar.c rename to libio/stdio/getchar.c diff --git a/contrib/libio/stdio/getchar_u.c b/libio/stdio/getchar_u.c similarity index 100% rename from contrib/libio/stdio/getchar_u.c rename to libio/stdio/getchar_u.c diff --git a/contrib/libio/stdio/getline.c b/libio/stdio/getline.c similarity index 100% rename from contrib/libio/stdio/getline.c rename to libio/stdio/getline.c diff --git a/contrib/libio/stdio/getw.c b/libio/stdio/getw.c similarity index 100% rename from contrib/libio/stdio/getw.c rename to libio/stdio/getw.c diff --git a/contrib/libio/stdio/obprintf.c b/libio/stdio/obprintf.c similarity index 100% rename from contrib/libio/stdio/obprintf.c rename to libio/stdio/obprintf.c diff --git a/contrib/libio/stdio/popen.c b/libio/stdio/popen.c similarity index 100% rename from contrib/libio/stdio/popen.c rename to libio/stdio/popen.c diff --git a/contrib/libio/stdio/putc.c b/libio/stdio/putc.c similarity index 100% rename from contrib/libio/stdio/putc.c rename to libio/stdio/putc.c diff --git a/contrib/libio/stdio/putc_u.c b/libio/stdio/putc_u.c similarity index 100% rename from contrib/libio/stdio/putc_u.c rename to libio/stdio/putc_u.c diff --git a/contrib/libio/stdio/putchar.c b/libio/stdio/putchar.c similarity index 100% rename from contrib/libio/stdio/putchar.c rename to libio/stdio/putchar.c diff --git a/contrib/libio/stdio/putchar_u.c b/libio/stdio/putchar_u.c similarity index 100% rename from contrib/libio/stdio/putchar_u.c rename to libio/stdio/putchar_u.c diff --git a/contrib/libio/stdio/putw.c b/libio/stdio/putw.c similarity index 100% rename from contrib/libio/stdio/putw.c rename to libio/stdio/putw.c diff --git a/contrib/libio/stdio/rewind.c b/libio/stdio/rewind.c similarity index 100% rename from contrib/libio/stdio/rewind.c rename to libio/stdio/rewind.c diff --git a/contrib/libio/stdio/setbuf.c b/libio/stdio/setbuf.c similarity index 100% rename from contrib/libio/stdio/setbuf.c rename to libio/stdio/setbuf.c diff --git a/contrib/libio/stdio/setfileno.c b/libio/stdio/setfileno.c similarity index 100% rename from contrib/libio/stdio/setfileno.c rename to libio/stdio/setfileno.c diff --git a/contrib/libio/stdio/setlinebuf.c b/libio/stdio/setlinebuf.c similarity index 100% rename from contrib/libio/stdio/setlinebuf.c rename to libio/stdio/setlinebuf.c diff --git a/contrib/libio/stdio/snprintf.c b/libio/stdio/snprintf.c similarity index 100% rename from contrib/libio/stdio/snprintf.c rename to libio/stdio/snprintf.c diff --git a/contrib/libio/stdio/stdio.h b/libio/stdio/stdio.h similarity index 100% rename from contrib/libio/stdio/stdio.h rename to libio/stdio/stdio.h diff --git a/contrib/libio/stdio/vasprintf.c b/libio/stdio/vasprintf.c similarity index 100% rename from contrib/libio/stdio/vasprintf.c rename to libio/stdio/vasprintf.c diff --git a/contrib/libio/stdio/vfprintf.c b/libio/stdio/vfprintf.c similarity index 100% rename from contrib/libio/stdio/vfprintf.c rename to libio/stdio/vfprintf.c diff --git a/contrib/libio/stdio/vfscanf.c b/libio/stdio/vfscanf.c similarity index 100% rename from contrib/libio/stdio/vfscanf.c rename to libio/stdio/vfscanf.c diff --git a/contrib/libio/stdio/vprintf.c b/libio/stdio/vprintf.c similarity index 100% rename from contrib/libio/stdio/vprintf.c rename to libio/stdio/vprintf.c diff --git a/contrib/libio/stdio/vscanf.c b/libio/stdio/vscanf.c similarity index 100% rename from contrib/libio/stdio/vscanf.c rename to libio/stdio/vscanf.c diff --git a/contrib/libio/stdio/vsnprintf.c b/libio/stdio/vsnprintf.c similarity index 100% rename from contrib/libio/stdio/vsnprintf.c rename to libio/stdio/vsnprintf.c diff --git a/contrib/libio/stdiostream.cc b/libio/stdiostream.cc similarity index 100% rename from contrib/libio/stdiostream.cc rename to libio/stdiostream.cc diff --git a/contrib/libio/stdiostream.h b/libio/stdiostream.h similarity index 100% rename from contrib/libio/stdiostream.h rename to libio/stdiostream.h diff --git a/contrib/libio/stdstrbufs.cc b/libio/stdstrbufs.cc similarity index 100% rename from contrib/libio/stdstrbufs.cc rename to libio/stdstrbufs.cc diff --git a/contrib/libio/stdstreams.cc b/libio/stdstreams.cc similarity index 100% rename from contrib/libio/stdstreams.cc rename to libio/stdstreams.cc diff --git a/contrib/libio/stream.cc b/libio/stream.cc similarity index 100% rename from contrib/libio/stream.cc rename to libio/stream.cc diff --git a/contrib/libio/stream.h b/libio/stream.h similarity index 100% rename from contrib/libio/stream.h rename to libio/stream.h diff --git a/contrib/libio/streambuf.cc b/libio/streambuf.cc similarity index 100% rename from contrib/libio/streambuf.cc rename to libio/streambuf.cc diff --git a/contrib/libio/streambuf.h b/libio/streambuf.h similarity index 100% rename from contrib/libio/streambuf.h rename to libio/streambuf.h diff --git a/contrib/libio/strfile.h b/libio/strfile.h similarity index 100% rename from contrib/libio/strfile.h rename to libio/strfile.h diff --git a/contrib/libio/strops.c b/libio/strops.c similarity index 100% rename from contrib/libio/strops.c rename to libio/strops.c diff --git a/contrib/libio/strstream.cc b/libio/strstream.cc similarity index 100% rename from contrib/libio/strstream.cc rename to libio/strstream.cc diff --git a/contrib/libio/strstream.h b/libio/strstream.h similarity index 100% rename from contrib/libio/strstream.h rename to libio/strstream.h diff --git a/contrib/libio/tests/ChangeLog b/libio/tests/ChangeLog similarity index 100% rename from contrib/libio/tests/ChangeLog rename to libio/tests/ChangeLog diff --git a/contrib/libio/tests/Makefile.in b/libio/tests/Makefile.in similarity index 100% rename from contrib/libio/tests/Makefile.in rename to libio/tests/Makefile.in diff --git a/contrib/libio/tests/configure.in b/libio/tests/configure.in similarity index 100% rename from contrib/libio/tests/configure.in rename to libio/tests/configure.in diff --git a/contrib/libio/tests/hounddog.cc b/libio/tests/hounddog.cc similarity index 100% rename from contrib/libio/tests/hounddog.cc rename to libio/tests/hounddog.cc diff --git a/contrib/libio/tests/hounddog.exp b/libio/tests/hounddog.exp similarity index 100% rename from contrib/libio/tests/hounddog.exp rename to libio/tests/hounddog.exp diff --git a/contrib/libio/tests/hounddog.inp b/libio/tests/hounddog.inp similarity index 100% rename from contrib/libio/tests/hounddog.inp rename to libio/tests/hounddog.inp diff --git a/contrib/libio/tests/putbackdog.cc b/libio/tests/putbackdog.cc similarity index 100% rename from contrib/libio/tests/putbackdog.cc rename to libio/tests/putbackdog.cc diff --git a/contrib/libio/tests/tFile.cc b/libio/tests/tFile.cc similarity index 100% rename from contrib/libio/tests/tFile.cc rename to libio/tests/tFile.cc diff --git a/contrib/libio/tests/tFile.exp b/libio/tests/tFile.exp similarity index 100% rename from contrib/libio/tests/tFile.exp rename to libio/tests/tFile.exp diff --git a/contrib/libio/tests/tFile.inp b/libio/tests/tFile.inp similarity index 100% rename from contrib/libio/tests/tFile.inp rename to libio/tests/tFile.inp diff --git a/contrib/libio/tests/tfformat.c b/libio/tests/tfformat.c similarity index 100% rename from contrib/libio/tests/tfformat.c rename to libio/tests/tfformat.c diff --git a/contrib/libio/tests/tiformat.c b/libio/tests/tiformat.c similarity index 100% rename from contrib/libio/tests/tiformat.c rename to libio/tests/tiformat.c diff --git a/contrib/libio/tests/tiomanip.cc b/libio/tests/tiomanip.cc similarity index 100% rename from contrib/libio/tests/tiomanip.cc rename to libio/tests/tiomanip.cc diff --git a/contrib/libio/tests/tiomanip.exp b/libio/tests/tiomanip.exp similarity index 100% rename from contrib/libio/tests/tiomanip.exp rename to libio/tests/tiomanip.exp diff --git a/contrib/libio/tests/tiomisc.cc b/libio/tests/tiomisc.cc similarity index 100% rename from contrib/libio/tests/tiomisc.cc rename to libio/tests/tiomisc.cc diff --git a/contrib/libio/tests/tiomisc.exp b/libio/tests/tiomisc.exp similarity index 100% rename from contrib/libio/tests/tiomisc.exp rename to libio/tests/tiomisc.exp diff --git a/contrib/libio/tests/tstdiomisc.c b/libio/tests/tstdiomisc.c similarity index 100% rename from contrib/libio/tests/tstdiomisc.c rename to libio/tests/tstdiomisc.c diff --git a/contrib/libio/tests/tstdiomisc.exp b/libio/tests/tstdiomisc.exp similarity index 100% rename from contrib/libio/tests/tstdiomisc.exp rename to libio/tests/tstdiomisc.exp diff --git a/contrib/libio/testsuite/ChangeLog b/libio/testsuite/ChangeLog similarity index 100% rename from contrib/libio/testsuite/ChangeLog rename to libio/testsuite/ChangeLog diff --git a/contrib/libio/testsuite/Makefile.in b/libio/testsuite/Makefile.in similarity index 100% rename from contrib/libio/testsuite/Makefile.in rename to libio/testsuite/Makefile.in diff --git a/contrib/libio/testsuite/config/default.exp b/libio/testsuite/config/default.exp similarity index 100% rename from contrib/libio/testsuite/config/default.exp rename to libio/testsuite/config/default.exp diff --git a/contrib/libio/testsuite/configure.in b/libio/testsuite/configure.in similarity index 100% rename from contrib/libio/testsuite/configure.in rename to libio/testsuite/configure.in diff --git a/contrib/libio/testsuite/lib/libio.exp b/libio/testsuite/lib/libio.exp similarity index 100% rename from contrib/libio/testsuite/lib/libio.exp rename to libio/testsuite/lib/libio.exp diff --git a/contrib/libio/testsuite/libio.tests/hounddog.exp b/libio/testsuite/libio.tests/hounddog.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/hounddog.exp rename to libio/testsuite/libio.tests/hounddog.exp diff --git a/contrib/libio/testsuite/libio.tests/putbackdog.exp b/libio/testsuite/libio.tests/putbackdog.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/putbackdog.exp rename to libio/testsuite/libio.tests/putbackdog.exp diff --git a/contrib/libio/testsuite/libio.tests/tFile.exp b/libio/testsuite/libio.tests/tFile.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/tFile.exp rename to libio/testsuite/libio.tests/tFile.exp diff --git a/contrib/libio/testsuite/libio.tests/tfformat.exp b/libio/testsuite/libio.tests/tfformat.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/tfformat.exp rename to libio/testsuite/libio.tests/tfformat.exp diff --git a/contrib/libio/testsuite/libio.tests/tiformat.exp b/libio/testsuite/libio.tests/tiformat.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/tiformat.exp rename to libio/testsuite/libio.tests/tiformat.exp diff --git a/contrib/libio/testsuite/libio.tests/tiomanip.exp b/libio/testsuite/libio.tests/tiomanip.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/tiomanip.exp rename to libio/testsuite/libio.tests/tiomanip.exp diff --git a/contrib/libio/testsuite/libio.tests/tiomisc.exp b/libio/testsuite/libio.tests/tiomisc.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/tiomisc.exp rename to libio/testsuite/libio.tests/tiomisc.exp diff --git a/contrib/libio/testsuite/libio.tests/tstdiomisc.exp b/libio/testsuite/libio.tests/tstdiomisc.exp similarity index 100% rename from contrib/libio/testsuite/libio.tests/tstdiomisc.exp rename to libio/testsuite/libio.tests/tstdiomisc.exp diff --git a/contrib/gcclibs/libmudflap/ChangeLog b/libmudflap/ChangeLog similarity index 100% rename from contrib/gcclibs/libmudflap/ChangeLog rename to libmudflap/ChangeLog diff --git a/contrib/gcclibs/libmudflap/Makefile.am b/libmudflap/Makefile.am similarity index 100% rename from contrib/gcclibs/libmudflap/Makefile.am rename to libmudflap/Makefile.am diff --git a/contrib/gcclibs/libmudflap/Makefile.in b/libmudflap/Makefile.in similarity index 100% rename from contrib/gcclibs/libmudflap/Makefile.in rename to libmudflap/Makefile.in diff --git a/contrib/gcclibs/libmudflap/acinclude.m4 b/libmudflap/acinclude.m4 similarity index 100% rename from contrib/gcclibs/libmudflap/acinclude.m4 rename to libmudflap/acinclude.m4 diff --git a/contrib/gcclibs/libmudflap/aclocal.m4 b/libmudflap/aclocal.m4 similarity index 100% rename from contrib/gcclibs/libmudflap/aclocal.m4 rename to libmudflap/aclocal.m4 diff --git a/contrib/gcclibs/libmudflap/config.h.in b/libmudflap/config.h.in similarity index 100% rename from contrib/gcclibs/libmudflap/config.h.in rename to libmudflap/config.h.in diff --git a/contrib/gcclibs/libmudflap/configure b/libmudflap/configure similarity index 100% rename from contrib/gcclibs/libmudflap/configure rename to libmudflap/configure diff --git a/contrib/gcclibs/libmudflap/configure.ac b/libmudflap/configure.ac similarity index 100% rename from contrib/gcclibs/libmudflap/configure.ac rename to libmudflap/configure.ac diff --git a/contrib/gcclibs/libmudflap/libtool-version b/libmudflap/libtool-version similarity index 100% rename from contrib/gcclibs/libmudflap/libtool-version rename to libmudflap/libtool-version diff --git a/contrib/gcclibs/libmudflap/mf-heuristics.c b/libmudflap/mf-heuristics.c similarity index 100% rename from contrib/gcclibs/libmudflap/mf-heuristics.c rename to libmudflap/mf-heuristics.c diff --git a/contrib/gcclibs/libmudflap/mf-hooks1.c b/libmudflap/mf-hooks1.c similarity index 100% rename from contrib/gcclibs/libmudflap/mf-hooks1.c rename to libmudflap/mf-hooks1.c diff --git a/contrib/gcclibs/libmudflap/mf-hooks2.c b/libmudflap/mf-hooks2.c similarity index 100% rename from contrib/gcclibs/libmudflap/mf-hooks2.c rename to libmudflap/mf-hooks2.c diff --git a/contrib/gcclibs/libmudflap/mf-hooks3.c b/libmudflap/mf-hooks3.c similarity index 100% rename from contrib/gcclibs/libmudflap/mf-hooks3.c rename to libmudflap/mf-hooks3.c diff --git a/contrib/gcclibs/libmudflap/mf-impl.h b/libmudflap/mf-impl.h similarity index 100% rename from contrib/gcclibs/libmudflap/mf-impl.h rename to libmudflap/mf-impl.h diff --git a/contrib/gcclibs/libmudflap/mf-runtime.c b/libmudflap/mf-runtime.c similarity index 100% rename from contrib/gcclibs/libmudflap/mf-runtime.c rename to libmudflap/mf-runtime.c diff --git a/contrib/gcclibs/libmudflap/mf-runtime.h b/libmudflap/mf-runtime.h similarity index 100% rename from contrib/gcclibs/libmudflap/mf-runtime.h rename to libmudflap/mf-runtime.h diff --git a/contrib/libobjc/ChangeLog b/libobjc/ChangeLog similarity index 100% rename from contrib/libobjc/ChangeLog rename to libobjc/ChangeLog diff --git a/contrib/libobjc/Makefile.in b/libobjc/Makefile.in similarity index 100% rename from contrib/libobjc/Makefile.in rename to libobjc/Makefile.in diff --git a/contrib/libobjc/NXConstStr.m b/libobjc/NXConstStr.m similarity index 100% rename from contrib/libobjc/NXConstStr.m rename to libobjc/NXConstStr.m diff --git a/contrib/libobjc/Object.m b/libobjc/Object.m similarity index 100% rename from contrib/libobjc/Object.m rename to libobjc/Object.m diff --git a/contrib/libobjc/Protocol.m b/libobjc/Protocol.m similarity index 100% rename from contrib/libobjc/Protocol.m rename to libobjc/Protocol.m diff --git a/contrib/libobjc/README b/libobjc/README similarity index 100% rename from contrib/libobjc/README rename to libobjc/README diff --git a/contrib/libobjc/README.threads b/libobjc/README.threads similarity index 100% rename from contrib/libobjc/README.threads rename to libobjc/README.threads diff --git a/contrib/libobjc/THREADS b/libobjc/THREADS similarity index 100% rename from contrib/libobjc/THREADS rename to libobjc/THREADS diff --git a/contrib/libobjc/THREADS.MACH b/libobjc/THREADS.MACH similarity index 100% rename from contrib/libobjc/THREADS.MACH rename to libobjc/THREADS.MACH diff --git a/contrib/libobjc/acinclude.m4 b/libobjc/acinclude.m4 similarity index 100% rename from contrib/libobjc/acinclude.m4 rename to libobjc/acinclude.m4 diff --git a/contrib/libobjc/aclocal.m4 b/libobjc/aclocal.m4 similarity index 100% rename from contrib/libobjc/aclocal.m4 rename to libobjc/aclocal.m4 diff --git a/contrib/libobjc/archive.c b/libobjc/archive.c similarity index 100% rename from contrib/libobjc/archive.c rename to libobjc/archive.c diff --git a/contrib/libobjc/class.c b/libobjc/class.c similarity index 100% rename from contrib/libobjc/class.c rename to libobjc/class.c diff --git a/contrib/libobjc/config.h.in b/libobjc/config.h.in similarity index 100% rename from contrib/libobjc/config.h.in rename to libobjc/config.h.in diff --git a/contrib/libobjc/configure b/libobjc/configure similarity index 100% rename from contrib/libobjc/configure rename to libobjc/configure diff --git a/contrib/libobjc/configure.ac b/libobjc/configure.ac similarity index 100% rename from contrib/libobjc/configure.ac rename to libobjc/configure.ac diff --git a/contrib/libobjc/encoding.c b/libobjc/encoding.c similarity index 100% rename from contrib/libobjc/encoding.c rename to libobjc/encoding.c diff --git a/contrib/libobjc/exception.c b/libobjc/exception.c similarity index 100% rename from contrib/libobjc/exception.c rename to libobjc/exception.c diff --git a/contrib/libobjc/gc.c b/libobjc/gc.c similarity index 100% rename from contrib/libobjc/gc.c rename to libobjc/gc.c diff --git a/contrib/libobjc/hash.c b/libobjc/hash.c similarity index 100% rename from contrib/libobjc/hash.c rename to libobjc/hash.c diff --git a/contrib/libobjc/init.c b/libobjc/init.c similarity index 100% rename from contrib/libobjc/init.c rename to libobjc/init.c diff --git a/contrib/libobjc/libobjc.def b/libobjc/libobjc.def similarity index 100% rename from contrib/libobjc/libobjc.def rename to libobjc/libobjc.def diff --git a/contrib/libobjc/libobjc_entry.c b/libobjc/libobjc_entry.c similarity index 100% rename from contrib/libobjc/libobjc_entry.c rename to libobjc/libobjc_entry.c diff --git a/contrib/libobjc/linking.m b/libobjc/linking.m similarity index 100% rename from contrib/libobjc/linking.m rename to libobjc/linking.m diff --git a/contrib/libobjc/makefile.dos b/libobjc/makefile.dos similarity index 100% rename from contrib/libobjc/makefile.dos rename to libobjc/makefile.dos diff --git a/contrib/libobjc/misc.c b/libobjc/misc.c similarity index 100% rename from contrib/libobjc/misc.c rename to libobjc/misc.c diff --git a/contrib/libobjc/nil_method.c b/libobjc/nil_method.c similarity index 100% rename from contrib/libobjc/nil_method.c rename to libobjc/nil_method.c diff --git a/contrib/libobjc/objc/NXConstStr.h b/libobjc/objc/NXConstStr.h similarity index 100% rename from contrib/libobjc/objc/NXConstStr.h rename to libobjc/objc/NXConstStr.h diff --git a/contrib/libobjc/objc/Object.h b/libobjc/objc/Object.h similarity index 100% rename from contrib/libobjc/objc/Object.h rename to libobjc/objc/Object.h diff --git a/contrib/libobjc/objc/Protocol.h b/libobjc/objc/Protocol.h similarity index 100% rename from contrib/libobjc/objc/Protocol.h rename to libobjc/objc/Protocol.h diff --git a/contrib/libobjc/objc/encoding.h b/libobjc/objc/encoding.h similarity index 100% rename from contrib/libobjc/objc/encoding.h rename to libobjc/objc/encoding.h diff --git a/contrib/libobjc/objc/hash.h b/libobjc/objc/hash.h similarity index 100% rename from contrib/libobjc/objc/hash.h rename to libobjc/objc/hash.h diff --git a/contrib/libobjc/objc/objc-api.h b/libobjc/objc/objc-api.h similarity index 100% rename from contrib/libobjc/objc/objc-api.h rename to libobjc/objc/objc-api.h diff --git a/contrib/libobjc/objc/objc-decls.h b/libobjc/objc/objc-decls.h similarity index 100% rename from contrib/libobjc/objc/objc-decls.h rename to libobjc/objc/objc-decls.h diff --git a/contrib/libobjc/objc/objc-list.h b/libobjc/objc/objc-list.h similarity index 100% rename from contrib/libobjc/objc/objc-list.h rename to libobjc/objc/objc-list.h diff --git a/contrib/libobjc/objc/objc.h b/libobjc/objc/objc.h similarity index 100% rename from contrib/libobjc/objc/objc.h rename to libobjc/objc/objc.h diff --git a/contrib/libobjc/objc/runtime.h b/libobjc/objc/runtime.h similarity index 100% rename from contrib/libobjc/objc/runtime.h rename to libobjc/objc/runtime.h diff --git a/contrib/libobjc/objc/sarray.h b/libobjc/objc/sarray.h similarity index 100% rename from contrib/libobjc/objc/sarray.h rename to libobjc/objc/sarray.h diff --git a/contrib/libobjc/objc/thr.h b/libobjc/objc/thr.h similarity index 100% rename from contrib/libobjc/objc/thr.h rename to libobjc/objc/thr.h diff --git a/contrib/libobjc/objc/typedstream.h b/libobjc/objc/typedstream.h similarity index 100% rename from contrib/libobjc/objc/typedstream.h rename to libobjc/objc/typedstream.h diff --git a/contrib/libobjc/objects.c b/libobjc/objects.c similarity index 100% rename from contrib/libobjc/objects.c rename to libobjc/objects.c diff --git a/contrib/libobjc/sarray.c b/libobjc/sarray.c similarity index 100% rename from contrib/libobjc/sarray.c rename to libobjc/sarray.c diff --git a/contrib/libobjc/selector.c b/libobjc/selector.c similarity index 100% rename from contrib/libobjc/selector.c rename to libobjc/selector.c diff --git a/contrib/libobjc/sendmsg.c b/libobjc/sendmsg.c similarity index 100% rename from contrib/libobjc/sendmsg.c rename to libobjc/sendmsg.c diff --git a/contrib/libobjc/thr-dce.c b/libobjc/thr-dce.c similarity index 100% rename from contrib/libobjc/thr-dce.c rename to libobjc/thr-dce.c diff --git a/contrib/libobjc/thr-decosf1.c b/libobjc/thr-decosf1.c similarity index 100% rename from contrib/libobjc/thr-decosf1.c rename to libobjc/thr-decosf1.c diff --git a/contrib/libobjc/thr-irix.c b/libobjc/thr-irix.c similarity index 100% rename from contrib/libobjc/thr-irix.c rename to libobjc/thr-irix.c diff --git a/contrib/libobjc/thr-mach.c b/libobjc/thr-mach.c similarity index 100% rename from contrib/libobjc/thr-mach.c rename to libobjc/thr-mach.c diff --git a/contrib/libobjc/thr-objc.c b/libobjc/thr-objc.c similarity index 100% rename from contrib/libobjc/thr-objc.c rename to libobjc/thr-objc.c diff --git a/contrib/libobjc/thr-os2.c b/libobjc/thr-os2.c similarity index 100% rename from contrib/libobjc/thr-os2.c rename to libobjc/thr-os2.c diff --git a/contrib/libobjc/thr-posix.c b/libobjc/thr-posix.c similarity index 100% rename from contrib/libobjc/thr-posix.c rename to libobjc/thr-posix.c diff --git a/contrib/libobjc/thr-pthreads.c b/libobjc/thr-pthreads.c similarity index 100% rename from contrib/libobjc/thr-pthreads.c rename to libobjc/thr-pthreads.c diff --git a/contrib/libobjc/thr-rtems.c b/libobjc/thr-rtems.c similarity index 100% rename from contrib/libobjc/thr-rtems.c rename to libobjc/thr-rtems.c diff --git a/contrib/libobjc/thr-single.c b/libobjc/thr-single.c similarity index 100% rename from contrib/libobjc/thr-single.c rename to libobjc/thr-single.c diff --git a/contrib/libobjc/thr-solaris.c b/libobjc/thr-solaris.c similarity index 100% rename from contrib/libobjc/thr-solaris.c rename to libobjc/thr-solaris.c diff --git a/contrib/libobjc/thr-vxworks.c b/libobjc/thr-vxworks.c similarity index 100% rename from contrib/libobjc/thr-vxworks.c rename to libobjc/thr-vxworks.c diff --git a/contrib/libobjc/thr-win32.c b/libobjc/thr-win32.c similarity index 100% rename from contrib/libobjc/thr-win32.c rename to libobjc/thr-win32.c diff --git a/contrib/libobjc/thr.c b/libobjc/thr.c similarity index 100% rename from contrib/libobjc/thr.c rename to libobjc/thr.c diff --git a/contrib/gcclibs/libssp/ChangeLog b/libssp/ChangeLog similarity index 100% rename from contrib/gcclibs/libssp/ChangeLog rename to libssp/ChangeLog diff --git a/contrib/gcclibs/libssp/Makefile.am b/libssp/Makefile.am similarity index 100% rename from contrib/gcclibs/libssp/Makefile.am rename to libssp/Makefile.am diff --git a/contrib/gcclibs/libssp/Makefile.in b/libssp/Makefile.in similarity index 100% rename from contrib/gcclibs/libssp/Makefile.in rename to libssp/Makefile.in diff --git a/contrib/gcclibs/libssp/aclocal.m4 b/libssp/aclocal.m4 similarity index 100% rename from contrib/gcclibs/libssp/aclocal.m4 rename to libssp/aclocal.m4 diff --git a/contrib/gcclibs/libssp/config.h.in b/libssp/config.h.in similarity index 100% rename from contrib/gcclibs/libssp/config.h.in rename to libssp/config.h.in diff --git a/contrib/gcclibs/libssp/configure b/libssp/configure similarity index 100% rename from contrib/gcclibs/libssp/configure rename to libssp/configure diff --git a/contrib/gcclibs/libssp/configure.ac b/libssp/configure.ac similarity index 100% rename from contrib/gcclibs/libssp/configure.ac rename to libssp/configure.ac diff --git a/contrib/gcclibs/libssp/gets-chk.c b/libssp/gets-chk.c similarity index 100% rename from contrib/gcclibs/libssp/gets-chk.c rename to libssp/gets-chk.c diff --git a/contrib/gcclibs/libssp/libtool-version b/libssp/libtool-version similarity index 100% rename from contrib/gcclibs/libssp/libtool-version rename to libssp/libtool-version diff --git a/contrib/gcclibs/libssp/memcpy-chk.c b/libssp/memcpy-chk.c similarity index 100% rename from contrib/gcclibs/libssp/memcpy-chk.c rename to libssp/memcpy-chk.c diff --git a/contrib/gcclibs/libssp/memmove-chk.c b/libssp/memmove-chk.c similarity index 100% rename from contrib/gcclibs/libssp/memmove-chk.c rename to libssp/memmove-chk.c diff --git a/contrib/gcclibs/libssp/mempcpy-chk.c b/libssp/mempcpy-chk.c similarity index 100% rename from contrib/gcclibs/libssp/mempcpy-chk.c rename to libssp/mempcpy-chk.c diff --git a/contrib/gcclibs/libssp/memset-chk.c b/libssp/memset-chk.c similarity index 100% rename from contrib/gcclibs/libssp/memset-chk.c rename to libssp/memset-chk.c diff --git a/contrib/gcclibs/libssp/snprintf-chk.c b/libssp/snprintf-chk.c similarity index 100% rename from contrib/gcclibs/libssp/snprintf-chk.c rename to libssp/snprintf-chk.c diff --git a/contrib/gcclibs/libssp/sprintf-chk.c b/libssp/sprintf-chk.c similarity index 100% rename from contrib/gcclibs/libssp/sprintf-chk.c rename to libssp/sprintf-chk.c diff --git a/contrib/gcclibs/libssp/ssp-local.c b/libssp/ssp-local.c similarity index 100% rename from contrib/gcclibs/libssp/ssp-local.c rename to libssp/ssp-local.c diff --git a/contrib/gcclibs/libssp/ssp.c b/libssp/ssp.c similarity index 100% rename from contrib/gcclibs/libssp/ssp.c rename to libssp/ssp.c diff --git a/contrib/gcclibs/libssp/ssp.map b/libssp/ssp.map similarity index 100% rename from contrib/gcclibs/libssp/ssp.map rename to libssp/ssp.map diff --git a/contrib/gcclibs/libssp/ssp/ssp.h.in b/libssp/ssp/ssp.h.in similarity index 100% rename from contrib/gcclibs/libssp/ssp/ssp.h.in rename to libssp/ssp/ssp.h.in diff --git a/contrib/gcclibs/libssp/ssp/stdio.h b/libssp/ssp/stdio.h similarity index 100% rename from contrib/gcclibs/libssp/ssp/stdio.h rename to libssp/ssp/stdio.h diff --git a/contrib/gcclibs/libssp/ssp/string.h b/libssp/ssp/string.h similarity index 100% rename from contrib/gcclibs/libssp/ssp/string.h rename to libssp/ssp/string.h diff --git a/contrib/gcclibs/libssp/ssp/unistd.h b/libssp/ssp/unistd.h similarity index 100% rename from contrib/gcclibs/libssp/ssp/unistd.h rename to libssp/ssp/unistd.h diff --git a/contrib/gcclibs/libssp/stpcpy-chk.c b/libssp/stpcpy-chk.c similarity index 100% rename from contrib/gcclibs/libssp/stpcpy-chk.c rename to libssp/stpcpy-chk.c diff --git a/contrib/gcclibs/libssp/strcat-chk.c b/libssp/strcat-chk.c similarity index 100% rename from contrib/gcclibs/libssp/strcat-chk.c rename to libssp/strcat-chk.c diff --git a/contrib/gcclibs/libssp/strcpy-chk.c b/libssp/strcpy-chk.c similarity index 100% rename from contrib/gcclibs/libssp/strcpy-chk.c rename to libssp/strcpy-chk.c diff --git a/contrib/gcclibs/libssp/strncat-chk.c b/libssp/strncat-chk.c similarity index 100% rename from contrib/gcclibs/libssp/strncat-chk.c rename to libssp/strncat-chk.c diff --git a/contrib/gcclibs/libssp/strncpy-chk.c b/libssp/strncpy-chk.c similarity index 100% rename from contrib/gcclibs/libssp/strncpy-chk.c rename to libssp/strncpy-chk.c diff --git a/contrib/gcclibs/libssp/vsnprintf-chk.c b/libssp/vsnprintf-chk.c similarity index 100% rename from contrib/gcclibs/libssp/vsnprintf-chk.c rename to libssp/vsnprintf-chk.c diff --git a/contrib/gcclibs/libssp/vsprintf-chk.c b/libssp/vsprintf-chk.c similarity index 100% rename from contrib/gcclibs/libssp/vsprintf-chk.c rename to libssp/vsprintf-chk.c diff --git a/contrib/libstdc++/ChangeLog b/libstdc++/ChangeLog similarity index 100% rename from contrib/libstdc++/ChangeLog rename to libstdc++/ChangeLog diff --git a/contrib/libstdc++/ChangeLog-1998 b/libstdc++/ChangeLog-1998 similarity index 100% rename from contrib/libstdc++/ChangeLog-1998 rename to libstdc++/ChangeLog-1998 diff --git a/contrib/libstdc++/ChangeLog-1999 b/libstdc++/ChangeLog-1999 similarity index 100% rename from contrib/libstdc++/ChangeLog-1999 rename to libstdc++/ChangeLog-1999 diff --git a/contrib/libstdc++/ChangeLog-2000 b/libstdc++/ChangeLog-2000 similarity index 100% rename from contrib/libstdc++/ChangeLog-2000 rename to libstdc++/ChangeLog-2000 diff --git a/contrib/libstdc++/ChangeLog-2001 b/libstdc++/ChangeLog-2001 similarity index 100% rename from contrib/libstdc++/ChangeLog-2001 rename to libstdc++/ChangeLog-2001 diff --git a/contrib/libstdc++/ChangeLog-2002 b/libstdc++/ChangeLog-2002 similarity index 100% rename from contrib/libstdc++/ChangeLog-2002 rename to libstdc++/ChangeLog-2002 diff --git a/contrib/libstdc++/ChangeLog-2003 b/libstdc++/ChangeLog-2003 similarity index 100% rename from contrib/libstdc++/ChangeLog-2003 rename to libstdc++/ChangeLog-2003 diff --git a/contrib/libstdc++/ChangeLog-2004 b/libstdc++/ChangeLog-2004 similarity index 100% rename from contrib/libstdc++/ChangeLog-2004 rename to libstdc++/ChangeLog-2004 diff --git a/contrib/libstdc++/ChangeLog-2005 b/libstdc++/ChangeLog-2005 similarity index 100% rename from contrib/libstdc++/ChangeLog-2005 rename to libstdc++/ChangeLog-2005 diff --git a/contrib/libstdc++/ChangeLog-2006 b/libstdc++/ChangeLog-2006 similarity index 100% rename from contrib/libstdc++/ChangeLog-2006 rename to libstdc++/ChangeLog-2006 diff --git a/contrib/libstdc++/FREEBSD-upgrade b/libstdc++/FREEBSD-upgrade similarity index 100% rename from contrib/libstdc++/FREEBSD-upgrade rename to libstdc++/FREEBSD-upgrade diff --git a/contrib/libstdc++/Makefile.am b/libstdc++/Makefile.am similarity index 100% rename from contrib/libstdc++/Makefile.am rename to libstdc++/Makefile.am diff --git a/contrib/libstdc++/Makefile.in b/libstdc++/Makefile.in similarity index 100% rename from contrib/libstdc++/Makefile.in rename to libstdc++/Makefile.in diff --git a/contrib/libstdc++/README b/libstdc++/README similarity index 100% rename from contrib/libstdc++/README rename to libstdc++/README diff --git a/contrib/libstdc++/acinclude.m4 b/libstdc++/acinclude.m4 similarity index 100% rename from contrib/libstdc++/acinclude.m4 rename to libstdc++/acinclude.m4 diff --git a/contrib/libstdc++/aclocal.m4 b/libstdc++/aclocal.m4 similarity index 100% rename from contrib/libstdc++/aclocal.m4 rename to libstdc++/aclocal.m4 diff --git a/contrib/libstdc++/config.h.in b/libstdc++/config.h.in similarity index 100% rename from contrib/libstdc++/config.h.in rename to libstdc++/config.h.in diff --git a/contrib/libstdc++/config/abi/compatibility.h b/libstdc++/config/abi/compatibility.h similarity index 100% rename from contrib/libstdc++/config/abi/compatibility.h rename to libstdc++/config/abi/compatibility.h diff --git a/contrib/libstdc++/config/abi/post/alpha-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/alpha-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/alpha-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/alpha-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/hppa-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/hppa-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/hppa-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/hppa-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/i386-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/i386-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/i386-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/i386-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/i486-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/i486-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/i486-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/i486-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/ia64-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/ia64-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/ia64-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/ia64-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/mips-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/mips-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/mips-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/mips-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt b/libstdc++/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt rename to libstdc++/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/s390-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/s390-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/s390-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/s390-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/s390x-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/s390x-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/s390x-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/s390x-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/sparc-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/sparc-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/sparc-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/sparc-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt b/libstdc++/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt rename to libstdc++/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt b/libstdc++/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt similarity index 100% rename from contrib/libstdc++/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt rename to libstdc++/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt diff --git a/contrib/libstdc++/config/abi/pre/gnu-versioned-namespace.ver b/libstdc++/config/abi/pre/gnu-versioned-namespace.ver similarity index 100% rename from contrib/libstdc++/config/abi/pre/gnu-versioned-namespace.ver rename to libstdc++/config/abi/pre/gnu-versioned-namespace.ver diff --git a/contrib/libstdc++/config/abi/pre/gnu.ver b/libstdc++/config/abi/pre/gnu.ver similarity index 100% rename from contrib/libstdc++/config/abi/pre/gnu.ver rename to libstdc++/config/abi/pre/gnu.ver diff --git a/contrib/libstdc++/config/abi/pre/none.ver b/libstdc++/config/abi/pre/none.ver similarity index 100% rename from contrib/libstdc++/config/abi/pre/none.ver rename to libstdc++/config/abi/pre/none.ver diff --git a/contrib/libstdc++/config/allocator/bitmap_allocator_base.h b/libstdc++/config/allocator/bitmap_allocator_base.h similarity index 100% rename from contrib/libstdc++/config/allocator/bitmap_allocator_base.h rename to libstdc++/config/allocator/bitmap_allocator_base.h diff --git a/contrib/libstdc++/config/allocator/malloc_allocator_base.h b/libstdc++/config/allocator/malloc_allocator_base.h similarity index 100% rename from contrib/libstdc++/config/allocator/malloc_allocator_base.h rename to libstdc++/config/allocator/malloc_allocator_base.h diff --git a/contrib/libstdc++/config/allocator/mt_allocator_base.h b/libstdc++/config/allocator/mt_allocator_base.h similarity index 100% rename from contrib/libstdc++/config/allocator/mt_allocator_base.h rename to libstdc++/config/allocator/mt_allocator_base.h diff --git a/contrib/libstdc++/config/allocator/new_allocator_base.h b/libstdc++/config/allocator/new_allocator_base.h similarity index 100% rename from contrib/libstdc++/config/allocator/new_allocator_base.h rename to libstdc++/config/allocator/new_allocator_base.h diff --git a/contrib/libstdc++/config/allocator/pool_allocator_base.h b/libstdc++/config/allocator/pool_allocator_base.h similarity index 100% rename from contrib/libstdc++/config/allocator/pool_allocator_base.h rename to libstdc++/config/allocator/pool_allocator_base.h diff --git a/contrib/libstdc++/config/cpu/alpha/atomic_word.h b/libstdc++/config/cpu/alpha/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/cpu/alpha/atomic_word.h rename to libstdc++/config/cpu/alpha/atomic_word.h diff --git a/contrib/libstdc++/config/cpu/arm/cxxabi_tweaks.h b/libstdc++/config/cpu/arm/cxxabi_tweaks.h similarity index 100% rename from contrib/libstdc++/config/cpu/arm/cxxabi_tweaks.h rename to libstdc++/config/cpu/arm/cxxabi_tweaks.h diff --git a/contrib/libstdc++/config/cpu/cris/atomic_word.h b/libstdc++/config/cpu/cris/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/cpu/cris/atomic_word.h rename to libstdc++/config/cpu/cris/atomic_word.h diff --git a/contrib/libstdc++/config/cpu/cris/atomicity.h b/libstdc++/config/cpu/cris/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/cris/atomicity.h rename to libstdc++/config/cpu/cris/atomicity.h diff --git a/contrib/libstdc++/config/cpu/generic/atomic_word.h b/libstdc++/config/cpu/generic/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/cpu/generic/atomic_word.h rename to libstdc++/config/cpu/generic/atomic_word.h diff --git a/contrib/libstdc++/config/cpu/generic/atomicity_builtins/atomicity.h b/libstdc++/config/cpu/generic/atomicity_builtins/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/generic/atomicity_builtins/atomicity.h rename to libstdc++/config/cpu/generic/atomicity_builtins/atomicity.h diff --git a/contrib/libstdc++/config/cpu/generic/atomicity_mutex/atomicity.h b/libstdc++/config/cpu/generic/atomicity_mutex/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/generic/atomicity_mutex/atomicity.h rename to libstdc++/config/cpu/generic/atomicity_mutex/atomicity.h diff --git a/contrib/libstdc++/config/cpu/generic/cpu_defines.h b/libstdc++/config/cpu/generic/cpu_defines.h similarity index 100% rename from contrib/libstdc++/config/cpu/generic/cpu_defines.h rename to libstdc++/config/cpu/generic/cpu_defines.h diff --git a/contrib/libstdc++/config/cpu/generic/cxxabi_tweaks.h b/libstdc++/config/cpu/generic/cxxabi_tweaks.h similarity index 100% rename from contrib/libstdc++/config/cpu/generic/cxxabi_tweaks.h rename to libstdc++/config/cpu/generic/cxxabi_tweaks.h diff --git a/contrib/libstdc++/config/cpu/hppa/atomicity.h b/libstdc++/config/cpu/hppa/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/hppa/atomicity.h rename to libstdc++/config/cpu/hppa/atomicity.h diff --git a/contrib/libstdc++/config/cpu/i386/atomicity.h b/libstdc++/config/cpu/i386/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/i386/atomicity.h rename to libstdc++/config/cpu/i386/atomicity.h diff --git a/contrib/libstdc++/config/cpu/i486/atomicity.h b/libstdc++/config/cpu/i486/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/i486/atomicity.h rename to libstdc++/config/cpu/i486/atomicity.h diff --git a/contrib/libstdc++/config/cpu/ia64/atomic_word.h b/libstdc++/config/cpu/ia64/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/cpu/ia64/atomic_word.h rename to libstdc++/config/cpu/ia64/atomic_word.h diff --git a/contrib/libstdc++/config/cpu/m68k/atomicity.h b/libstdc++/config/cpu/m68k/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/m68k/atomicity.h rename to libstdc++/config/cpu/m68k/atomicity.h diff --git a/contrib/libstdc++/config/cpu/mips/atomicity.h b/libstdc++/config/cpu/mips/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/mips/atomicity.h rename to libstdc++/config/cpu/mips/atomicity.h diff --git a/contrib/libstdc++/config/cpu/powerpc/atomic_word.h b/libstdc++/config/cpu/powerpc/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/cpu/powerpc/atomic_word.h rename to libstdc++/config/cpu/powerpc/atomic_word.h diff --git a/contrib/libstdc++/config/cpu/powerpc/cpu_defines.h b/libstdc++/config/cpu/powerpc/cpu_defines.h similarity index 100% rename from contrib/libstdc++/config/cpu/powerpc/cpu_defines.h rename to libstdc++/config/cpu/powerpc/cpu_defines.h diff --git a/contrib/libstdc++/config/cpu/sh/atomicity.h b/libstdc++/config/cpu/sh/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/sh/atomicity.h rename to libstdc++/config/cpu/sh/atomicity.h diff --git a/contrib/libstdc++/config/cpu/sparc/atomic_word.h b/libstdc++/config/cpu/sparc/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/cpu/sparc/atomic_word.h rename to libstdc++/config/cpu/sparc/atomic_word.h diff --git a/contrib/libstdc++/config/cpu/sparc/atomicity.h b/libstdc++/config/cpu/sparc/atomicity.h similarity index 100% rename from contrib/libstdc++/config/cpu/sparc/atomicity.h rename to libstdc++/config/cpu/sparc/atomicity.h diff --git a/contrib/libstdc++/config/io/basic_file_stdio.cc b/libstdc++/config/io/basic_file_stdio.cc similarity index 100% rename from contrib/libstdc++/config/io/basic_file_stdio.cc rename to libstdc++/config/io/basic_file_stdio.cc diff --git a/contrib/libstdc++/config/io/basic_file_stdio.h b/libstdc++/config/io/basic_file_stdio.h similarity index 100% rename from contrib/libstdc++/config/io/basic_file_stdio.h rename to libstdc++/config/io/basic_file_stdio.h diff --git a/contrib/libstdc++/config/io/c_io_stdio.h b/libstdc++/config/io/c_io_stdio.h similarity index 100% rename from contrib/libstdc++/config/io/c_io_stdio.h rename to libstdc++/config/io/c_io_stdio.h diff --git a/contrib/libstdc++/config/locale/darwin/ctype_members.cc b/libstdc++/config/locale/darwin/ctype_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/darwin/ctype_members.cc rename to libstdc++/config/locale/darwin/ctype_members.cc diff --git a/contrib/libstdc++/config/locale/generic/c++locale_internal.h b/libstdc++/config/locale/generic/c++locale_internal.h similarity index 100% rename from contrib/libstdc++/config/locale/generic/c++locale_internal.h rename to libstdc++/config/locale/generic/c++locale_internal.h diff --git a/contrib/libstdc++/config/locale/generic/c_locale.cc b/libstdc++/config/locale/generic/c_locale.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/c_locale.cc rename to libstdc++/config/locale/generic/c_locale.cc diff --git a/contrib/libstdc++/config/locale/generic/c_locale.h b/libstdc++/config/locale/generic/c_locale.h similarity index 100% rename from contrib/libstdc++/config/locale/generic/c_locale.h rename to libstdc++/config/locale/generic/c_locale.h diff --git a/contrib/libstdc++/config/locale/generic/codecvt_members.cc b/libstdc++/config/locale/generic/codecvt_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/codecvt_members.cc rename to libstdc++/config/locale/generic/codecvt_members.cc diff --git a/contrib/libstdc++/config/locale/generic/collate_members.cc b/libstdc++/config/locale/generic/collate_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/collate_members.cc rename to libstdc++/config/locale/generic/collate_members.cc diff --git a/contrib/libstdc++/config/locale/generic/ctype_members.cc b/libstdc++/config/locale/generic/ctype_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/ctype_members.cc rename to libstdc++/config/locale/generic/ctype_members.cc diff --git a/contrib/libstdc++/config/locale/generic/messages_members.cc b/libstdc++/config/locale/generic/messages_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/messages_members.cc rename to libstdc++/config/locale/generic/messages_members.cc diff --git a/contrib/libstdc++/config/locale/generic/messages_members.h b/libstdc++/config/locale/generic/messages_members.h similarity index 100% rename from contrib/libstdc++/config/locale/generic/messages_members.h rename to libstdc++/config/locale/generic/messages_members.h diff --git a/contrib/libstdc++/config/locale/generic/monetary_members.cc b/libstdc++/config/locale/generic/monetary_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/monetary_members.cc rename to libstdc++/config/locale/generic/monetary_members.cc diff --git a/contrib/libstdc++/config/locale/generic/numeric_members.cc b/libstdc++/config/locale/generic/numeric_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/numeric_members.cc rename to libstdc++/config/locale/generic/numeric_members.cc diff --git a/contrib/libstdc++/config/locale/generic/time_members.cc b/libstdc++/config/locale/generic/time_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/generic/time_members.cc rename to libstdc++/config/locale/generic/time_members.cc diff --git a/contrib/libstdc++/config/locale/generic/time_members.h b/libstdc++/config/locale/generic/time_members.h similarity index 100% rename from contrib/libstdc++/config/locale/generic/time_members.h rename to libstdc++/config/locale/generic/time_members.h diff --git a/contrib/libstdc++/config/locale/gnu/c++locale_internal.h b/libstdc++/config/locale/gnu/c++locale_internal.h similarity index 100% rename from contrib/libstdc++/config/locale/gnu/c++locale_internal.h rename to libstdc++/config/locale/gnu/c++locale_internal.h diff --git a/contrib/libstdc++/config/locale/gnu/c_locale.cc b/libstdc++/config/locale/gnu/c_locale.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/c_locale.cc rename to libstdc++/config/locale/gnu/c_locale.cc diff --git a/contrib/libstdc++/config/locale/gnu/c_locale.h b/libstdc++/config/locale/gnu/c_locale.h similarity index 100% rename from contrib/libstdc++/config/locale/gnu/c_locale.h rename to libstdc++/config/locale/gnu/c_locale.h diff --git a/contrib/libstdc++/config/locale/gnu/codecvt_members.cc b/libstdc++/config/locale/gnu/codecvt_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/codecvt_members.cc rename to libstdc++/config/locale/gnu/codecvt_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/collate_members.cc b/libstdc++/config/locale/gnu/collate_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/collate_members.cc rename to libstdc++/config/locale/gnu/collate_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/ctype_members.cc b/libstdc++/config/locale/gnu/ctype_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/ctype_members.cc rename to libstdc++/config/locale/gnu/ctype_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/messages_members.cc b/libstdc++/config/locale/gnu/messages_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/messages_members.cc rename to libstdc++/config/locale/gnu/messages_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/messages_members.h b/libstdc++/config/locale/gnu/messages_members.h similarity index 100% rename from contrib/libstdc++/config/locale/gnu/messages_members.h rename to libstdc++/config/locale/gnu/messages_members.h diff --git a/contrib/libstdc++/config/locale/gnu/monetary_members.cc b/libstdc++/config/locale/gnu/monetary_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/monetary_members.cc rename to libstdc++/config/locale/gnu/monetary_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/numeric_members.cc b/libstdc++/config/locale/gnu/numeric_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/numeric_members.cc rename to libstdc++/config/locale/gnu/numeric_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/time_members.cc b/libstdc++/config/locale/gnu/time_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/gnu/time_members.cc rename to libstdc++/config/locale/gnu/time_members.cc diff --git a/contrib/libstdc++/config/locale/gnu/time_members.h b/libstdc++/config/locale/gnu/time_members.h similarity index 100% rename from contrib/libstdc++/config/locale/gnu/time_members.h rename to libstdc++/config/locale/gnu/time_members.h diff --git a/contrib/libstdc++/config/locale/ieee_1003.1-2001/c_locale.cc b/libstdc++/config/locale/ieee_1003.1-2001/c_locale.cc similarity index 100% rename from contrib/libstdc++/config/locale/ieee_1003.1-2001/c_locale.cc rename to libstdc++/config/locale/ieee_1003.1-2001/c_locale.cc diff --git a/contrib/libstdc++/config/locale/ieee_1003.1-2001/c_locale.h b/libstdc++/config/locale/ieee_1003.1-2001/c_locale.h similarity index 100% rename from contrib/libstdc++/config/locale/ieee_1003.1-2001/c_locale.h rename to libstdc++/config/locale/ieee_1003.1-2001/c_locale.h diff --git a/contrib/libstdc++/config/locale/ieee_1003.1-2001/messages_members.cc b/libstdc++/config/locale/ieee_1003.1-2001/messages_members.cc similarity index 100% rename from contrib/libstdc++/config/locale/ieee_1003.1-2001/messages_members.cc rename to libstdc++/config/locale/ieee_1003.1-2001/messages_members.cc diff --git a/contrib/libstdc++/config/locale/ieee_1003.1-2001/messages_members.h b/libstdc++/config/locale/ieee_1003.1-2001/messages_members.h similarity index 100% rename from contrib/libstdc++/config/locale/ieee_1003.1-2001/messages_members.h rename to libstdc++/config/locale/ieee_1003.1-2001/messages_members.h diff --git a/contrib/libstdc++/config/os/aix/atomic_word.h b/libstdc++/config/os/aix/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/os/aix/atomic_word.h rename to libstdc++/config/os/aix/atomic_word.h diff --git a/contrib/libstdc++/config/os/aix/atomicity.h b/libstdc++/config/os/aix/atomicity.h similarity index 100% rename from contrib/libstdc++/config/os/aix/atomicity.h rename to libstdc++/config/os/aix/atomicity.h diff --git a/contrib/libstdc++/config/os/aix/ctype_base.h b/libstdc++/config/os/aix/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/aix/ctype_base.h rename to libstdc++/config/os/aix/ctype_base.h diff --git a/contrib/libstdc++/config/os/aix/ctype_inline.h b/libstdc++/config/os/aix/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/aix/ctype_inline.h rename to libstdc++/config/os/aix/ctype_inline.h diff --git a/contrib/libstdc++/config/os/aix/ctype_noninline.h b/libstdc++/config/os/aix/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/aix/ctype_noninline.h rename to libstdc++/config/os/aix/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/aix/os_defines.h b/libstdc++/config/os/aix/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/aix/os_defines.h rename to libstdc++/config/os/aix/os_defines.h diff --git a/contrib/libstdc++/config/os/bsd/darwin/ctype_base.h b/libstdc++/config/os/bsd/darwin/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/darwin/ctype_base.h rename to libstdc++/config/os/bsd/darwin/ctype_base.h diff --git a/contrib/libstdc++/config/os/bsd/darwin/ctype_inline.h b/libstdc++/config/os/bsd/darwin/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/darwin/ctype_inline.h rename to libstdc++/config/os/bsd/darwin/ctype_inline.h diff --git a/contrib/libstdc++/config/os/bsd/darwin/ctype_noninline.h b/libstdc++/config/os/bsd/darwin/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/darwin/ctype_noninline.h rename to libstdc++/config/os/bsd/darwin/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/bsd/darwin/os_defines.h b/libstdc++/config/os/bsd/darwin/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/darwin/os_defines.h rename to libstdc++/config/os/bsd/darwin/os_defines.h diff --git a/contrib/libstdc++/config/os/bsd/darwin/ppc-extra.ver b/libstdc++/config/os/bsd/darwin/ppc-extra.ver similarity index 100% rename from contrib/libstdc++/config/os/bsd/darwin/ppc-extra.ver rename to libstdc++/config/os/bsd/darwin/ppc-extra.ver diff --git a/contrib/libstdc++/config/os/bsd/freebsd/ctype_base.h b/libstdc++/config/os/bsd/freebsd/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/freebsd/ctype_base.h rename to libstdc++/config/os/bsd/freebsd/ctype_base.h diff --git a/contrib/libstdc++/config/os/bsd/freebsd/ctype_inline.h b/libstdc++/config/os/bsd/freebsd/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/freebsd/ctype_inline.h rename to libstdc++/config/os/bsd/freebsd/ctype_inline.h diff --git a/contrib/libstdc++/config/os/bsd/freebsd/ctype_noninline.h b/libstdc++/config/os/bsd/freebsd/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/freebsd/ctype_noninline.h rename to libstdc++/config/os/bsd/freebsd/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/bsd/freebsd/os_defines.h b/libstdc++/config/os/bsd/freebsd/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/freebsd/os_defines.h rename to libstdc++/config/os/bsd/freebsd/os_defines.h diff --git a/contrib/libstdc++/config/os/bsd/netbsd/ctype_base.h b/libstdc++/config/os/bsd/netbsd/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/netbsd/ctype_base.h rename to libstdc++/config/os/bsd/netbsd/ctype_base.h diff --git a/contrib/libstdc++/config/os/bsd/netbsd/ctype_inline.h b/libstdc++/config/os/bsd/netbsd/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/netbsd/ctype_inline.h rename to libstdc++/config/os/bsd/netbsd/ctype_inline.h diff --git a/contrib/libstdc++/config/os/bsd/netbsd/ctype_noninline.h b/libstdc++/config/os/bsd/netbsd/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/netbsd/ctype_noninline.h rename to libstdc++/config/os/bsd/netbsd/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/bsd/netbsd/os_defines.h b/libstdc++/config/os/bsd/netbsd/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/bsd/netbsd/os_defines.h rename to libstdc++/config/os/bsd/netbsd/os_defines.h diff --git a/contrib/libstdc++/config/os/djgpp/ctype_base.h b/libstdc++/config/os/djgpp/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/djgpp/ctype_base.h rename to libstdc++/config/os/djgpp/ctype_base.h diff --git a/contrib/libstdc++/config/os/djgpp/ctype_inline.h b/libstdc++/config/os/djgpp/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/djgpp/ctype_inline.h rename to libstdc++/config/os/djgpp/ctype_inline.h diff --git a/contrib/libstdc++/config/os/djgpp/ctype_noninline.h b/libstdc++/config/os/djgpp/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/djgpp/ctype_noninline.h rename to libstdc++/config/os/djgpp/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/djgpp/os_defines.h b/libstdc++/config/os/djgpp/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/djgpp/os_defines.h rename to libstdc++/config/os/djgpp/os_defines.h diff --git a/contrib/libstdc++/config/os/generic/ctype_base.h b/libstdc++/config/os/generic/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/generic/ctype_base.h rename to libstdc++/config/os/generic/ctype_base.h diff --git a/contrib/libstdc++/config/os/generic/ctype_inline.h b/libstdc++/config/os/generic/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/generic/ctype_inline.h rename to libstdc++/config/os/generic/ctype_inline.h diff --git a/contrib/libstdc++/config/os/generic/ctype_noninline.h b/libstdc++/config/os/generic/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/generic/ctype_noninline.h rename to libstdc++/config/os/generic/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/generic/os_defines.h b/libstdc++/config/os/generic/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/generic/os_defines.h rename to libstdc++/config/os/generic/os_defines.h diff --git a/contrib/libstdc++/config/os/gnu-linux/ctype_base.h b/libstdc++/config/os/gnu-linux/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/gnu-linux/ctype_base.h rename to libstdc++/config/os/gnu-linux/ctype_base.h diff --git a/contrib/libstdc++/config/os/gnu-linux/ctype_inline.h b/libstdc++/config/os/gnu-linux/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/gnu-linux/ctype_inline.h rename to libstdc++/config/os/gnu-linux/ctype_inline.h diff --git a/contrib/libstdc++/config/os/gnu-linux/ctype_noninline.h b/libstdc++/config/os/gnu-linux/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/gnu-linux/ctype_noninline.h rename to libstdc++/config/os/gnu-linux/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/gnu-linux/ldbl-extra.ver b/libstdc++/config/os/gnu-linux/ldbl-extra.ver similarity index 100% rename from contrib/libstdc++/config/os/gnu-linux/ldbl-extra.ver rename to libstdc++/config/os/gnu-linux/ldbl-extra.ver diff --git a/contrib/libstdc++/config/os/gnu-linux/os_defines.h b/libstdc++/config/os/gnu-linux/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/gnu-linux/os_defines.h rename to libstdc++/config/os/gnu-linux/os_defines.h diff --git a/contrib/libstdc++/config/os/hpux/ctype_base.h b/libstdc++/config/os/hpux/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/hpux/ctype_base.h rename to libstdc++/config/os/hpux/ctype_base.h diff --git a/contrib/libstdc++/config/os/hpux/ctype_inline.h b/libstdc++/config/os/hpux/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/hpux/ctype_inline.h rename to libstdc++/config/os/hpux/ctype_inline.h diff --git a/contrib/libstdc++/config/os/hpux/ctype_noninline.h b/libstdc++/config/os/hpux/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/hpux/ctype_noninline.h rename to libstdc++/config/os/hpux/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/hpux/os_defines.h b/libstdc++/config/os/hpux/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/hpux/os_defines.h rename to libstdc++/config/os/hpux/os_defines.h diff --git a/contrib/libstdc++/config/os/irix/atomic_word.h b/libstdc++/config/os/irix/atomic_word.h similarity index 100% rename from contrib/libstdc++/config/os/irix/atomic_word.h rename to libstdc++/config/os/irix/atomic_word.h diff --git a/contrib/libstdc++/config/os/irix/atomicity.h b/libstdc++/config/os/irix/atomicity.h similarity index 100% rename from contrib/libstdc++/config/os/irix/atomicity.h rename to libstdc++/config/os/irix/atomicity.h diff --git a/contrib/libstdc++/config/os/irix/irix5.2/ctype_base.h b/libstdc++/config/os/irix/irix5.2/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix5.2/ctype_base.h rename to libstdc++/config/os/irix/irix5.2/ctype_base.h diff --git a/contrib/libstdc++/config/os/irix/irix5.2/ctype_inline.h b/libstdc++/config/os/irix/irix5.2/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix5.2/ctype_inline.h rename to libstdc++/config/os/irix/irix5.2/ctype_inline.h diff --git a/contrib/libstdc++/config/os/irix/irix5.2/ctype_noninline.h b/libstdc++/config/os/irix/irix5.2/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix5.2/ctype_noninline.h rename to libstdc++/config/os/irix/irix5.2/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/irix/irix5.2/os_defines.h b/libstdc++/config/os/irix/irix5.2/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix5.2/os_defines.h rename to libstdc++/config/os/irix/irix5.2/os_defines.h diff --git a/contrib/libstdc++/config/os/irix/irix6.5/ctype_base.h b/libstdc++/config/os/irix/irix6.5/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix6.5/ctype_base.h rename to libstdc++/config/os/irix/irix6.5/ctype_base.h diff --git a/contrib/libstdc++/config/os/irix/irix6.5/ctype_inline.h b/libstdc++/config/os/irix/irix6.5/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix6.5/ctype_inline.h rename to libstdc++/config/os/irix/irix6.5/ctype_inline.h diff --git a/contrib/libstdc++/config/os/irix/irix6.5/ctype_noninline.h b/libstdc++/config/os/irix/irix6.5/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix6.5/ctype_noninline.h rename to libstdc++/config/os/irix/irix6.5/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/irix/irix6.5/os_defines.h b/libstdc++/config/os/irix/irix6.5/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/irix/irix6.5/os_defines.h rename to libstdc++/config/os/irix/irix6.5/os_defines.h diff --git a/contrib/libstdc++/config/os/mingw32/ctype_base.h b/libstdc++/config/os/mingw32/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/mingw32/ctype_base.h rename to libstdc++/config/os/mingw32/ctype_base.h diff --git a/contrib/libstdc++/config/os/mingw32/ctype_inline.h b/libstdc++/config/os/mingw32/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/mingw32/ctype_inline.h rename to libstdc++/config/os/mingw32/ctype_inline.h diff --git a/contrib/libstdc++/config/os/mingw32/ctype_noninline.h b/libstdc++/config/os/mingw32/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/mingw32/ctype_noninline.h rename to libstdc++/config/os/mingw32/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/mingw32/os_defines.h b/libstdc++/config/os/mingw32/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/mingw32/os_defines.h rename to libstdc++/config/os/mingw32/os_defines.h diff --git a/contrib/libstdc++/config/os/newlib/ctype_base.h b/libstdc++/config/os/newlib/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/newlib/ctype_base.h rename to libstdc++/config/os/newlib/ctype_base.h diff --git a/contrib/libstdc++/config/os/newlib/ctype_inline.h b/libstdc++/config/os/newlib/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/newlib/ctype_inline.h rename to libstdc++/config/os/newlib/ctype_inline.h diff --git a/contrib/libstdc++/config/os/newlib/ctype_noninline.h b/libstdc++/config/os/newlib/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/newlib/ctype_noninline.h rename to libstdc++/config/os/newlib/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/newlib/os_defines.h b/libstdc++/config/os/newlib/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/newlib/os_defines.h rename to libstdc++/config/os/newlib/os_defines.h diff --git a/contrib/libstdc++/config/os/qnx/qnx6.1/ctype_base.h b/libstdc++/config/os/qnx/qnx6.1/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/qnx/qnx6.1/ctype_base.h rename to libstdc++/config/os/qnx/qnx6.1/ctype_base.h diff --git a/contrib/libstdc++/config/os/qnx/qnx6.1/ctype_inline.h b/libstdc++/config/os/qnx/qnx6.1/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/qnx/qnx6.1/ctype_inline.h rename to libstdc++/config/os/qnx/qnx6.1/ctype_inline.h diff --git a/contrib/libstdc++/config/os/qnx/qnx6.1/ctype_noninline.h b/libstdc++/config/os/qnx/qnx6.1/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/qnx/qnx6.1/ctype_noninline.h rename to libstdc++/config/os/qnx/qnx6.1/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/qnx/qnx6.1/os_defines.h b/libstdc++/config/os/qnx/qnx6.1/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/qnx/qnx6.1/os_defines.h rename to libstdc++/config/os/qnx/qnx6.1/os_defines.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.5/ctype_base.h b/libstdc++/config/os/solaris/solaris2.5/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.5/ctype_base.h rename to libstdc++/config/os/solaris/solaris2.5/ctype_base.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.5/ctype_inline.h b/libstdc++/config/os/solaris/solaris2.5/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.5/ctype_inline.h rename to libstdc++/config/os/solaris/solaris2.5/ctype_inline.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.5/ctype_noninline.h b/libstdc++/config/os/solaris/solaris2.5/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.5/ctype_noninline.h rename to libstdc++/config/os/solaris/solaris2.5/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.5/os_defines.h b/libstdc++/config/os/solaris/solaris2.5/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.5/os_defines.h rename to libstdc++/config/os/solaris/solaris2.5/os_defines.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.6/ctype_base.h b/libstdc++/config/os/solaris/solaris2.6/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.6/ctype_base.h rename to libstdc++/config/os/solaris/solaris2.6/ctype_base.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.6/ctype_inline.h b/libstdc++/config/os/solaris/solaris2.6/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.6/ctype_inline.h rename to libstdc++/config/os/solaris/solaris2.6/ctype_inline.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.6/ctype_noninline.h b/libstdc++/config/os/solaris/solaris2.6/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.6/ctype_noninline.h rename to libstdc++/config/os/solaris/solaris2.6/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.6/os_defines.h b/libstdc++/config/os/solaris/solaris2.6/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.6/os_defines.h rename to libstdc++/config/os/solaris/solaris2.6/os_defines.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.7/ctype_base.h b/libstdc++/config/os/solaris/solaris2.7/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.7/ctype_base.h rename to libstdc++/config/os/solaris/solaris2.7/ctype_base.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.7/ctype_inline.h b/libstdc++/config/os/solaris/solaris2.7/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.7/ctype_inline.h rename to libstdc++/config/os/solaris/solaris2.7/ctype_inline.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.7/ctype_noninline.h b/libstdc++/config/os/solaris/solaris2.7/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.7/ctype_noninline.h rename to libstdc++/config/os/solaris/solaris2.7/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/solaris/solaris2.7/os_defines.h b/libstdc++/config/os/solaris/solaris2.7/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/solaris/solaris2.7/os_defines.h rename to libstdc++/config/os/solaris/solaris2.7/os_defines.h diff --git a/contrib/libstdc++/config/os/tpf/ctype_base.h b/libstdc++/config/os/tpf/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/tpf/ctype_base.h rename to libstdc++/config/os/tpf/ctype_base.h diff --git a/contrib/libstdc++/config/os/tpf/ctype_inline.h b/libstdc++/config/os/tpf/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/tpf/ctype_inline.h rename to libstdc++/config/os/tpf/ctype_inline.h diff --git a/contrib/libstdc++/config/os/tpf/ctype_noninline.h b/libstdc++/config/os/tpf/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/tpf/ctype_noninline.h rename to libstdc++/config/os/tpf/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/tpf/os_defines.h b/libstdc++/config/os/tpf/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/tpf/os_defines.h rename to libstdc++/config/os/tpf/os_defines.h diff --git a/contrib/libstdc++/config/os/uclibc/ctype_base.h b/libstdc++/config/os/uclibc/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/uclibc/ctype_base.h rename to libstdc++/config/os/uclibc/ctype_base.h diff --git a/contrib/libstdc++/config/os/uclibc/ctype_inline.h b/libstdc++/config/os/uclibc/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/uclibc/ctype_inline.h rename to libstdc++/config/os/uclibc/ctype_inline.h diff --git a/contrib/libstdc++/config/os/uclibc/ctype_noninline.h b/libstdc++/config/os/uclibc/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/uclibc/ctype_noninline.h rename to libstdc++/config/os/uclibc/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/uclibc/os_defines.h b/libstdc++/config/os/uclibc/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/uclibc/os_defines.h rename to libstdc++/config/os/uclibc/os_defines.h diff --git a/contrib/libstdc++/config/os/vxworks/ctype_base.h b/libstdc++/config/os/vxworks/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/vxworks/ctype_base.h rename to libstdc++/config/os/vxworks/ctype_base.h diff --git a/contrib/libstdc++/config/os/vxworks/ctype_inline.h b/libstdc++/config/os/vxworks/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/vxworks/ctype_inline.h rename to libstdc++/config/os/vxworks/ctype_inline.h diff --git a/contrib/libstdc++/config/os/vxworks/ctype_noninline.h b/libstdc++/config/os/vxworks/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/vxworks/ctype_noninline.h rename to libstdc++/config/os/vxworks/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/vxworks/os_defines.h b/libstdc++/config/os/vxworks/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/vxworks/os_defines.h rename to libstdc++/config/os/vxworks/os_defines.h diff --git a/contrib/libstdc++/config/os/windiss/ctype_base.h b/libstdc++/config/os/windiss/ctype_base.h similarity index 100% rename from contrib/libstdc++/config/os/windiss/ctype_base.h rename to libstdc++/config/os/windiss/ctype_base.h diff --git a/contrib/libstdc++/config/os/windiss/ctype_inline.h b/libstdc++/config/os/windiss/ctype_inline.h similarity index 100% rename from contrib/libstdc++/config/os/windiss/ctype_inline.h rename to libstdc++/config/os/windiss/ctype_inline.h diff --git a/contrib/libstdc++/config/os/windiss/ctype_noninline.h b/libstdc++/config/os/windiss/ctype_noninline.h similarity index 100% rename from contrib/libstdc++/config/os/windiss/ctype_noninline.h rename to libstdc++/config/os/windiss/ctype_noninline.h diff --git a/contrib/libstdc++/config/os/windiss/os_defines.h b/libstdc++/config/os/windiss/os_defines.h similarity index 100% rename from contrib/libstdc++/config/os/windiss/os_defines.h rename to libstdc++/config/os/windiss/os_defines.h diff --git a/contrib/libstdc++/configure b/libstdc++/configure similarity index 100% rename from contrib/libstdc++/configure rename to libstdc++/configure diff --git a/contrib/libstdc++/configure.ac b/libstdc++/configure.ac similarity index 100% rename from contrib/libstdc++/configure.ac rename to libstdc++/configure.ac diff --git a/contrib/libstdc++/configure.host b/libstdc++/configure.host similarity index 100% rename from contrib/libstdc++/configure.host rename to libstdc++/configure.host diff --git a/contrib/libstdc++/crossconfig.m4 b/libstdc++/crossconfig.m4 similarity index 100% rename from contrib/libstdc++/crossconfig.m4 rename to libstdc++/crossconfig.m4 diff --git a/contrib/libstdc++/fragment.am b/libstdc++/fragment.am similarity index 100% rename from contrib/libstdc++/fragment.am rename to libstdc++/fragment.am diff --git a/contrib/libstdc++/include/Makefile.am b/libstdc++/include/Makefile.am similarity index 100% rename from contrib/libstdc++/include/Makefile.am rename to libstdc++/include/Makefile.am diff --git a/contrib/libstdc++/include/Makefile.in b/libstdc++/include/Makefile.in similarity index 100% rename from contrib/libstdc++/include/Makefile.in rename to libstdc++/include/Makefile.in diff --git a/contrib/libstdc++/include/backward/algo.h b/libstdc++/include/backward/algo.h similarity index 100% rename from contrib/libstdc++/include/backward/algo.h rename to libstdc++/include/backward/algo.h diff --git a/contrib/libstdc++/include/backward/algobase.h b/libstdc++/include/backward/algobase.h similarity index 100% rename from contrib/libstdc++/include/backward/algobase.h rename to libstdc++/include/backward/algobase.h diff --git a/contrib/libstdc++/include/backward/alloc.h b/libstdc++/include/backward/alloc.h similarity index 100% rename from contrib/libstdc++/include/backward/alloc.h rename to libstdc++/include/backward/alloc.h diff --git a/contrib/libstdc++/include/backward/backward_warning.h b/libstdc++/include/backward/backward_warning.h similarity index 100% rename from contrib/libstdc++/include/backward/backward_warning.h rename to libstdc++/include/backward/backward_warning.h diff --git a/contrib/libstdc++/include/backward/bvector.h b/libstdc++/include/backward/bvector.h similarity index 100% rename from contrib/libstdc++/include/backward/bvector.h rename to libstdc++/include/backward/bvector.h diff --git a/contrib/libstdc++/include/backward/complex.h b/libstdc++/include/backward/complex.h similarity index 100% rename from contrib/libstdc++/include/backward/complex.h rename to libstdc++/include/backward/complex.h diff --git a/contrib/libstdc++/include/backward/defalloc.h b/libstdc++/include/backward/defalloc.h similarity index 100% rename from contrib/libstdc++/include/backward/defalloc.h rename to libstdc++/include/backward/defalloc.h diff --git a/contrib/libstdc++/include/backward/deque.h b/libstdc++/include/backward/deque.h similarity index 100% rename from contrib/libstdc++/include/backward/deque.h rename to libstdc++/include/backward/deque.h diff --git a/contrib/libstdc++/include/backward/fstream.h b/libstdc++/include/backward/fstream.h similarity index 100% rename from contrib/libstdc++/include/backward/fstream.h rename to libstdc++/include/backward/fstream.h diff --git a/contrib/libstdc++/include/backward/function.h b/libstdc++/include/backward/function.h similarity index 100% rename from contrib/libstdc++/include/backward/function.h rename to libstdc++/include/backward/function.h diff --git a/contrib/libstdc++/include/backward/hash_map.h b/libstdc++/include/backward/hash_map.h similarity index 100% rename from contrib/libstdc++/include/backward/hash_map.h rename to libstdc++/include/backward/hash_map.h diff --git a/contrib/libstdc++/include/backward/hash_set.h b/libstdc++/include/backward/hash_set.h similarity index 100% rename from contrib/libstdc++/include/backward/hash_set.h rename to libstdc++/include/backward/hash_set.h diff --git a/contrib/libstdc++/include/backward/hashtable.h b/libstdc++/include/backward/hashtable.h similarity index 100% rename from contrib/libstdc++/include/backward/hashtable.h rename to libstdc++/include/backward/hashtable.h diff --git a/contrib/libstdc++/include/backward/heap.h b/libstdc++/include/backward/heap.h similarity index 100% rename from contrib/libstdc++/include/backward/heap.h rename to libstdc++/include/backward/heap.h diff --git a/contrib/libstdc++/include/backward/iomanip.h b/libstdc++/include/backward/iomanip.h similarity index 100% rename from contrib/libstdc++/include/backward/iomanip.h rename to libstdc++/include/backward/iomanip.h diff --git a/contrib/libstdc++/include/backward/iostream.h b/libstdc++/include/backward/iostream.h similarity index 100% rename from contrib/libstdc++/include/backward/iostream.h rename to libstdc++/include/backward/iostream.h diff --git a/contrib/libstdc++/include/backward/istream.h b/libstdc++/include/backward/istream.h similarity index 100% rename from contrib/libstdc++/include/backward/istream.h rename to libstdc++/include/backward/istream.h diff --git a/contrib/libstdc++/include/backward/iterator.h b/libstdc++/include/backward/iterator.h similarity index 100% rename from contrib/libstdc++/include/backward/iterator.h rename to libstdc++/include/backward/iterator.h diff --git a/contrib/libstdc++/include/backward/list.h b/libstdc++/include/backward/list.h similarity index 100% rename from contrib/libstdc++/include/backward/list.h rename to libstdc++/include/backward/list.h diff --git a/contrib/libstdc++/include/backward/map.h b/libstdc++/include/backward/map.h similarity index 100% rename from contrib/libstdc++/include/backward/map.h rename to libstdc++/include/backward/map.h diff --git a/contrib/libstdc++/include/backward/multimap.h b/libstdc++/include/backward/multimap.h similarity index 100% rename from contrib/libstdc++/include/backward/multimap.h rename to libstdc++/include/backward/multimap.h diff --git a/contrib/libstdc++/include/backward/multiset.h b/libstdc++/include/backward/multiset.h similarity index 100% rename from contrib/libstdc++/include/backward/multiset.h rename to libstdc++/include/backward/multiset.h diff --git a/contrib/libstdc++/include/backward/new.h b/libstdc++/include/backward/new.h similarity index 100% rename from contrib/libstdc++/include/backward/new.h rename to libstdc++/include/backward/new.h diff --git a/contrib/libstdc++/include/backward/ostream.h b/libstdc++/include/backward/ostream.h similarity index 100% rename from contrib/libstdc++/include/backward/ostream.h rename to libstdc++/include/backward/ostream.h diff --git a/contrib/libstdc++/include/backward/pair.h b/libstdc++/include/backward/pair.h similarity index 100% rename from contrib/libstdc++/include/backward/pair.h rename to libstdc++/include/backward/pair.h diff --git a/contrib/libstdc++/include/backward/queue.h b/libstdc++/include/backward/queue.h similarity index 100% rename from contrib/libstdc++/include/backward/queue.h rename to libstdc++/include/backward/queue.h diff --git a/contrib/libstdc++/include/backward/rope.h b/libstdc++/include/backward/rope.h similarity index 100% rename from contrib/libstdc++/include/backward/rope.h rename to libstdc++/include/backward/rope.h diff --git a/contrib/libstdc++/include/backward/set.h b/libstdc++/include/backward/set.h similarity index 100% rename from contrib/libstdc++/include/backward/set.h rename to libstdc++/include/backward/set.h diff --git a/contrib/libstdc++/include/backward/slist.h b/libstdc++/include/backward/slist.h similarity index 100% rename from contrib/libstdc++/include/backward/slist.h rename to libstdc++/include/backward/slist.h diff --git a/contrib/libstdc++/include/backward/stack.h b/libstdc++/include/backward/stack.h similarity index 100% rename from contrib/libstdc++/include/backward/stack.h rename to libstdc++/include/backward/stack.h diff --git a/contrib/libstdc++/include/backward/stream.h b/libstdc++/include/backward/stream.h similarity index 100% rename from contrib/libstdc++/include/backward/stream.h rename to libstdc++/include/backward/stream.h diff --git a/contrib/libstdc++/include/backward/streambuf.h b/libstdc++/include/backward/streambuf.h similarity index 100% rename from contrib/libstdc++/include/backward/streambuf.h rename to libstdc++/include/backward/streambuf.h diff --git a/contrib/libstdc++/include/backward/strstream b/libstdc++/include/backward/strstream similarity index 100% rename from contrib/libstdc++/include/backward/strstream rename to libstdc++/include/backward/strstream diff --git a/contrib/libstdc++/include/backward/tempbuf.h b/libstdc++/include/backward/tempbuf.h similarity index 100% rename from contrib/libstdc++/include/backward/tempbuf.h rename to libstdc++/include/backward/tempbuf.h diff --git a/contrib/libstdc++/include/backward/tree.h b/libstdc++/include/backward/tree.h similarity index 100% rename from contrib/libstdc++/include/backward/tree.h rename to libstdc++/include/backward/tree.h diff --git a/contrib/libstdc++/include/backward/vector.h b/libstdc++/include/backward/vector.h similarity index 100% rename from contrib/libstdc++/include/backward/vector.h rename to libstdc++/include/backward/vector.h diff --git a/contrib/libstdc++/include/bits/allocator.h b/libstdc++/include/bits/allocator.h similarity index 100% rename from contrib/libstdc++/include/bits/allocator.h rename to libstdc++/include/bits/allocator.h diff --git a/contrib/libstdc++/include/bits/basic_ios.h b/libstdc++/include/bits/basic_ios.h similarity index 100% rename from contrib/libstdc++/include/bits/basic_ios.h rename to libstdc++/include/bits/basic_ios.h diff --git a/contrib/libstdc++/include/bits/basic_ios.tcc b/libstdc++/include/bits/basic_ios.tcc similarity index 100% rename from contrib/libstdc++/include/bits/basic_ios.tcc rename to libstdc++/include/bits/basic_ios.tcc diff --git a/contrib/libstdc++/include/bits/basic_string.h b/libstdc++/include/bits/basic_string.h similarity index 100% rename from contrib/libstdc++/include/bits/basic_string.h rename to libstdc++/include/bits/basic_string.h diff --git a/contrib/libstdc++/include/bits/basic_string.tcc b/libstdc++/include/bits/basic_string.tcc similarity index 100% rename from contrib/libstdc++/include/bits/basic_string.tcc rename to libstdc++/include/bits/basic_string.tcc diff --git a/contrib/libstdc++/include/bits/boost_concept_check.h b/libstdc++/include/bits/boost_concept_check.h similarity index 100% rename from contrib/libstdc++/include/bits/boost_concept_check.h rename to libstdc++/include/bits/boost_concept_check.h diff --git a/contrib/libstdc++/include/bits/c++config b/libstdc++/include/bits/c++config similarity index 100% rename from contrib/libstdc++/include/bits/c++config rename to libstdc++/include/bits/c++config diff --git a/contrib/libstdc++/include/bits/char_traits.h b/libstdc++/include/bits/char_traits.h similarity index 100% rename from contrib/libstdc++/include/bits/char_traits.h rename to libstdc++/include/bits/char_traits.h diff --git a/contrib/libstdc++/include/bits/codecvt.h b/libstdc++/include/bits/codecvt.h similarity index 100% rename from contrib/libstdc++/include/bits/codecvt.h rename to libstdc++/include/bits/codecvt.h diff --git a/contrib/libstdc++/include/bits/concept_check.h b/libstdc++/include/bits/concept_check.h similarity index 100% rename from contrib/libstdc++/include/bits/concept_check.h rename to libstdc++/include/bits/concept_check.h diff --git a/contrib/libstdc++/include/bits/cpp_type_traits.h b/libstdc++/include/bits/cpp_type_traits.h similarity index 100% rename from contrib/libstdc++/include/bits/cpp_type_traits.h rename to libstdc++/include/bits/cpp_type_traits.h diff --git a/contrib/libstdc++/include/bits/deque.tcc b/libstdc++/include/bits/deque.tcc similarity index 100% rename from contrib/libstdc++/include/bits/deque.tcc rename to libstdc++/include/bits/deque.tcc diff --git a/contrib/libstdc++/include/bits/fstream.tcc b/libstdc++/include/bits/fstream.tcc similarity index 100% rename from contrib/libstdc++/include/bits/fstream.tcc rename to libstdc++/include/bits/fstream.tcc diff --git a/contrib/libstdc++/include/bits/functexcept.h b/libstdc++/include/bits/functexcept.h similarity index 100% rename from contrib/libstdc++/include/bits/functexcept.h rename to libstdc++/include/bits/functexcept.h diff --git a/contrib/libstdc++/include/bits/gslice.h b/libstdc++/include/bits/gslice.h similarity index 100% rename from contrib/libstdc++/include/bits/gslice.h rename to libstdc++/include/bits/gslice.h diff --git a/contrib/libstdc++/include/bits/gslice_array.h b/libstdc++/include/bits/gslice_array.h similarity index 100% rename from contrib/libstdc++/include/bits/gslice_array.h rename to libstdc++/include/bits/gslice_array.h diff --git a/contrib/libstdc++/include/bits/indirect_array.h b/libstdc++/include/bits/indirect_array.h similarity index 100% rename from contrib/libstdc++/include/bits/indirect_array.h rename to libstdc++/include/bits/indirect_array.h diff --git a/contrib/libstdc++/include/bits/ios_base.h b/libstdc++/include/bits/ios_base.h similarity index 100% rename from contrib/libstdc++/include/bits/ios_base.h rename to libstdc++/include/bits/ios_base.h diff --git a/contrib/libstdc++/include/bits/istream.tcc b/libstdc++/include/bits/istream.tcc similarity index 100% rename from contrib/libstdc++/include/bits/istream.tcc rename to libstdc++/include/bits/istream.tcc diff --git a/contrib/libstdc++/include/bits/list.tcc b/libstdc++/include/bits/list.tcc similarity index 100% rename from contrib/libstdc++/include/bits/list.tcc rename to libstdc++/include/bits/list.tcc diff --git a/contrib/libstdc++/include/bits/locale_classes.h b/libstdc++/include/bits/locale_classes.h similarity index 100% rename from contrib/libstdc++/include/bits/locale_classes.h rename to libstdc++/include/bits/locale_classes.h diff --git a/contrib/libstdc++/include/bits/locale_facets.h b/libstdc++/include/bits/locale_facets.h similarity index 100% rename from contrib/libstdc++/include/bits/locale_facets.h rename to libstdc++/include/bits/locale_facets.h diff --git a/contrib/libstdc++/include/bits/locale_facets.tcc b/libstdc++/include/bits/locale_facets.tcc similarity index 100% rename from contrib/libstdc++/include/bits/locale_facets.tcc rename to libstdc++/include/bits/locale_facets.tcc diff --git a/contrib/libstdc++/include/bits/localefwd.h b/libstdc++/include/bits/localefwd.h similarity index 100% rename from contrib/libstdc++/include/bits/localefwd.h rename to libstdc++/include/bits/localefwd.h diff --git a/contrib/libstdc++/include/bits/mask_array.h b/libstdc++/include/bits/mask_array.h similarity index 100% rename from contrib/libstdc++/include/bits/mask_array.h rename to libstdc++/include/bits/mask_array.h diff --git a/contrib/libstdc++/include/bits/ostream.tcc b/libstdc++/include/bits/ostream.tcc similarity index 100% rename from contrib/libstdc++/include/bits/ostream.tcc rename to libstdc++/include/bits/ostream.tcc diff --git a/contrib/libstdc++/include/bits/ostream_insert.h b/libstdc++/include/bits/ostream_insert.h similarity index 100% rename from contrib/libstdc++/include/bits/ostream_insert.h rename to libstdc++/include/bits/ostream_insert.h diff --git a/contrib/libstdc++/include/bits/postypes.h b/libstdc++/include/bits/postypes.h similarity index 100% rename from contrib/libstdc++/include/bits/postypes.h rename to libstdc++/include/bits/postypes.h diff --git a/contrib/libstdc++/include/bits/slice_array.h b/libstdc++/include/bits/slice_array.h similarity index 100% rename from contrib/libstdc++/include/bits/slice_array.h rename to libstdc++/include/bits/slice_array.h diff --git a/contrib/libstdc++/include/bits/sstream.tcc b/libstdc++/include/bits/sstream.tcc similarity index 100% rename from contrib/libstdc++/include/bits/sstream.tcc rename to libstdc++/include/bits/sstream.tcc diff --git a/contrib/libstdc++/include/bits/stl_algo.h b/libstdc++/include/bits/stl_algo.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_algo.h rename to libstdc++/include/bits/stl_algo.h diff --git a/contrib/libstdc++/include/bits/stl_algobase.h b/libstdc++/include/bits/stl_algobase.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_algobase.h rename to libstdc++/include/bits/stl_algobase.h diff --git a/contrib/libstdc++/include/bits/stl_bvector.h b/libstdc++/include/bits/stl_bvector.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_bvector.h rename to libstdc++/include/bits/stl_bvector.h diff --git a/contrib/libstdc++/include/bits/stl_construct.h b/libstdc++/include/bits/stl_construct.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_construct.h rename to libstdc++/include/bits/stl_construct.h diff --git a/contrib/libstdc++/include/bits/stl_deque.h b/libstdc++/include/bits/stl_deque.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_deque.h rename to libstdc++/include/bits/stl_deque.h diff --git a/contrib/libstdc++/include/bits/stl_function.h b/libstdc++/include/bits/stl_function.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_function.h rename to libstdc++/include/bits/stl_function.h diff --git a/contrib/libstdc++/include/bits/stl_heap.h b/libstdc++/include/bits/stl_heap.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_heap.h rename to libstdc++/include/bits/stl_heap.h diff --git a/contrib/libstdc++/include/bits/stl_iterator.h b/libstdc++/include/bits/stl_iterator.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_iterator.h rename to libstdc++/include/bits/stl_iterator.h diff --git a/contrib/libstdc++/include/bits/stl_iterator_base_funcs.h b/libstdc++/include/bits/stl_iterator_base_funcs.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_iterator_base_funcs.h rename to libstdc++/include/bits/stl_iterator_base_funcs.h diff --git a/contrib/libstdc++/include/bits/stl_iterator_base_types.h b/libstdc++/include/bits/stl_iterator_base_types.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_iterator_base_types.h rename to libstdc++/include/bits/stl_iterator_base_types.h diff --git a/contrib/libstdc++/include/bits/stl_list.h b/libstdc++/include/bits/stl_list.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_list.h rename to libstdc++/include/bits/stl_list.h diff --git a/contrib/libstdc++/include/bits/stl_map.h b/libstdc++/include/bits/stl_map.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_map.h rename to libstdc++/include/bits/stl_map.h diff --git a/contrib/libstdc++/include/bits/stl_multimap.h b/libstdc++/include/bits/stl_multimap.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_multimap.h rename to libstdc++/include/bits/stl_multimap.h diff --git a/contrib/libstdc++/include/bits/stl_multiset.h b/libstdc++/include/bits/stl_multiset.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_multiset.h rename to libstdc++/include/bits/stl_multiset.h diff --git a/contrib/libstdc++/include/bits/stl_numeric.h b/libstdc++/include/bits/stl_numeric.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_numeric.h rename to libstdc++/include/bits/stl_numeric.h diff --git a/contrib/libstdc++/include/bits/stl_pair.h b/libstdc++/include/bits/stl_pair.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_pair.h rename to libstdc++/include/bits/stl_pair.h diff --git a/contrib/libstdc++/include/bits/stl_queue.h b/libstdc++/include/bits/stl_queue.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_queue.h rename to libstdc++/include/bits/stl_queue.h diff --git a/contrib/libstdc++/include/bits/stl_raw_storage_iter.h b/libstdc++/include/bits/stl_raw_storage_iter.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_raw_storage_iter.h rename to libstdc++/include/bits/stl_raw_storage_iter.h diff --git a/contrib/libstdc++/include/bits/stl_relops.h b/libstdc++/include/bits/stl_relops.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_relops.h rename to libstdc++/include/bits/stl_relops.h diff --git a/contrib/libstdc++/include/bits/stl_set.h b/libstdc++/include/bits/stl_set.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_set.h rename to libstdc++/include/bits/stl_set.h diff --git a/contrib/libstdc++/include/bits/stl_stack.h b/libstdc++/include/bits/stl_stack.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_stack.h rename to libstdc++/include/bits/stl_stack.h diff --git a/contrib/libstdc++/include/bits/stl_tempbuf.h b/libstdc++/include/bits/stl_tempbuf.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_tempbuf.h rename to libstdc++/include/bits/stl_tempbuf.h diff --git a/contrib/libstdc++/include/bits/stl_tree.h b/libstdc++/include/bits/stl_tree.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_tree.h rename to libstdc++/include/bits/stl_tree.h diff --git a/contrib/libstdc++/include/bits/stl_uninitialized.h b/libstdc++/include/bits/stl_uninitialized.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_uninitialized.h rename to libstdc++/include/bits/stl_uninitialized.h diff --git a/contrib/libstdc++/include/bits/stl_vector.h b/libstdc++/include/bits/stl_vector.h similarity index 100% rename from contrib/libstdc++/include/bits/stl_vector.h rename to libstdc++/include/bits/stl_vector.h diff --git a/contrib/libstdc++/include/bits/stream_iterator.h b/libstdc++/include/bits/stream_iterator.h similarity index 100% rename from contrib/libstdc++/include/bits/stream_iterator.h rename to libstdc++/include/bits/stream_iterator.h diff --git a/contrib/libstdc++/include/bits/streambuf.tcc b/libstdc++/include/bits/streambuf.tcc similarity index 100% rename from contrib/libstdc++/include/bits/streambuf.tcc rename to libstdc++/include/bits/streambuf.tcc diff --git a/contrib/libstdc++/include/bits/streambuf_iterator.h b/libstdc++/include/bits/streambuf_iterator.h similarity index 100% rename from contrib/libstdc++/include/bits/streambuf_iterator.h rename to libstdc++/include/bits/streambuf_iterator.h diff --git a/contrib/libstdc++/include/bits/stringfwd.h b/libstdc++/include/bits/stringfwd.h similarity index 100% rename from contrib/libstdc++/include/bits/stringfwd.h rename to libstdc++/include/bits/stringfwd.h diff --git a/contrib/libstdc++/include/bits/valarray_after.h b/libstdc++/include/bits/valarray_after.h similarity index 100% rename from contrib/libstdc++/include/bits/valarray_after.h rename to libstdc++/include/bits/valarray_after.h diff --git a/contrib/libstdc++/include/bits/valarray_array.h b/libstdc++/include/bits/valarray_array.h similarity index 100% rename from contrib/libstdc++/include/bits/valarray_array.h rename to libstdc++/include/bits/valarray_array.h diff --git a/contrib/libstdc++/include/bits/valarray_array.tcc b/libstdc++/include/bits/valarray_array.tcc similarity index 100% rename from contrib/libstdc++/include/bits/valarray_array.tcc rename to libstdc++/include/bits/valarray_array.tcc diff --git a/contrib/libstdc++/include/bits/valarray_before.h b/libstdc++/include/bits/valarray_before.h similarity index 100% rename from contrib/libstdc++/include/bits/valarray_before.h rename to libstdc++/include/bits/valarray_before.h diff --git a/contrib/libstdc++/include/bits/vector.tcc b/libstdc++/include/bits/vector.tcc similarity index 100% rename from contrib/libstdc++/include/bits/vector.tcc rename to libstdc++/include/bits/vector.tcc diff --git a/contrib/libstdc++/include/c/std_cassert.h b/libstdc++/include/c/std_cassert.h similarity index 100% rename from contrib/libstdc++/include/c/std_cassert.h rename to libstdc++/include/c/std_cassert.h diff --git a/contrib/libstdc++/include/c/std_cctype.h b/libstdc++/include/c/std_cctype.h similarity index 100% rename from contrib/libstdc++/include/c/std_cctype.h rename to libstdc++/include/c/std_cctype.h diff --git a/contrib/libstdc++/include/c/std_cerrno.h b/libstdc++/include/c/std_cerrno.h similarity index 100% rename from contrib/libstdc++/include/c/std_cerrno.h rename to libstdc++/include/c/std_cerrno.h diff --git a/contrib/libstdc++/include/c/std_cfloat.h b/libstdc++/include/c/std_cfloat.h similarity index 100% rename from contrib/libstdc++/include/c/std_cfloat.h rename to libstdc++/include/c/std_cfloat.h diff --git a/contrib/libstdc++/include/c/std_ciso646.h b/libstdc++/include/c/std_ciso646.h similarity index 100% rename from contrib/libstdc++/include/c/std_ciso646.h rename to libstdc++/include/c/std_ciso646.h diff --git a/contrib/libstdc++/include/c/std_climits.h b/libstdc++/include/c/std_climits.h similarity index 100% rename from contrib/libstdc++/include/c/std_climits.h rename to libstdc++/include/c/std_climits.h diff --git a/contrib/libstdc++/include/c/std_clocale.h b/libstdc++/include/c/std_clocale.h similarity index 100% rename from contrib/libstdc++/include/c/std_clocale.h rename to libstdc++/include/c/std_clocale.h diff --git a/contrib/libstdc++/include/c/std_cmath.h b/libstdc++/include/c/std_cmath.h similarity index 100% rename from contrib/libstdc++/include/c/std_cmath.h rename to libstdc++/include/c/std_cmath.h diff --git a/contrib/libstdc++/include/c/std_csetjmp.h b/libstdc++/include/c/std_csetjmp.h similarity index 100% rename from contrib/libstdc++/include/c/std_csetjmp.h rename to libstdc++/include/c/std_csetjmp.h diff --git a/contrib/libstdc++/include/c/std_csignal.h b/libstdc++/include/c/std_csignal.h similarity index 100% rename from contrib/libstdc++/include/c/std_csignal.h rename to libstdc++/include/c/std_csignal.h diff --git a/contrib/libstdc++/include/c/std_cstdarg.h b/libstdc++/include/c/std_cstdarg.h similarity index 100% rename from contrib/libstdc++/include/c/std_cstdarg.h rename to libstdc++/include/c/std_cstdarg.h diff --git a/contrib/libstdc++/include/c/std_cstddef.h b/libstdc++/include/c/std_cstddef.h similarity index 100% rename from contrib/libstdc++/include/c/std_cstddef.h rename to libstdc++/include/c/std_cstddef.h diff --git a/contrib/libstdc++/include/c/std_cstdio.h b/libstdc++/include/c/std_cstdio.h similarity index 100% rename from contrib/libstdc++/include/c/std_cstdio.h rename to libstdc++/include/c/std_cstdio.h diff --git a/contrib/libstdc++/include/c/std_cstdlib.h b/libstdc++/include/c/std_cstdlib.h similarity index 100% rename from contrib/libstdc++/include/c/std_cstdlib.h rename to libstdc++/include/c/std_cstdlib.h diff --git a/contrib/libstdc++/include/c/std_cstring.h b/libstdc++/include/c/std_cstring.h similarity index 100% rename from contrib/libstdc++/include/c/std_cstring.h rename to libstdc++/include/c/std_cstring.h diff --git a/contrib/libstdc++/include/c/std_ctime.h b/libstdc++/include/c/std_ctime.h similarity index 100% rename from contrib/libstdc++/include/c/std_ctime.h rename to libstdc++/include/c/std_ctime.h diff --git a/contrib/libstdc++/include/c/std_cwchar.h b/libstdc++/include/c/std_cwchar.h similarity index 100% rename from contrib/libstdc++/include/c/std_cwchar.h rename to libstdc++/include/c/std_cwchar.h diff --git a/contrib/libstdc++/include/c/std_cwctype.h b/libstdc++/include/c/std_cwctype.h similarity index 100% rename from contrib/libstdc++/include/c/std_cwctype.h rename to libstdc++/include/c/std_cwctype.h diff --git a/contrib/libstdc++/include/c_compatibility/assert.h b/libstdc++/include/c_compatibility/assert.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/assert.h rename to libstdc++/include/c_compatibility/assert.h diff --git a/contrib/libstdc++/include/c_compatibility/ctype.h b/libstdc++/include/c_compatibility/ctype.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/ctype.h rename to libstdc++/include/c_compatibility/ctype.h diff --git a/contrib/libstdc++/include/c_compatibility/errno.h b/libstdc++/include/c_compatibility/errno.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/errno.h rename to libstdc++/include/c_compatibility/errno.h diff --git a/contrib/libstdc++/include/c_compatibility/float.h b/libstdc++/include/c_compatibility/float.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/float.h rename to libstdc++/include/c_compatibility/float.h diff --git a/contrib/libstdc++/include/c_compatibility/iso646.h b/libstdc++/include/c_compatibility/iso646.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/iso646.h rename to libstdc++/include/c_compatibility/iso646.h diff --git a/contrib/libstdc++/include/c_compatibility/limits.h b/libstdc++/include/c_compatibility/limits.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/limits.h rename to libstdc++/include/c_compatibility/limits.h diff --git a/contrib/libstdc++/include/c_compatibility/locale.h b/libstdc++/include/c_compatibility/locale.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/locale.h rename to libstdc++/include/c_compatibility/locale.h diff --git a/contrib/libstdc++/include/c_compatibility/math.h b/libstdc++/include/c_compatibility/math.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/math.h rename to libstdc++/include/c_compatibility/math.h diff --git a/contrib/libstdc++/include/c_compatibility/setjmp.h b/libstdc++/include/c_compatibility/setjmp.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/setjmp.h rename to libstdc++/include/c_compatibility/setjmp.h diff --git a/contrib/libstdc++/include/c_compatibility/signal.h b/libstdc++/include/c_compatibility/signal.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/signal.h rename to libstdc++/include/c_compatibility/signal.h diff --git a/contrib/libstdc++/include/c_compatibility/stdarg.h b/libstdc++/include/c_compatibility/stdarg.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/stdarg.h rename to libstdc++/include/c_compatibility/stdarg.h diff --git a/contrib/libstdc++/include/c_compatibility/stddef.h b/libstdc++/include/c_compatibility/stddef.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/stddef.h rename to libstdc++/include/c_compatibility/stddef.h diff --git a/contrib/libstdc++/include/c_compatibility/stdio.h b/libstdc++/include/c_compatibility/stdio.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/stdio.h rename to libstdc++/include/c_compatibility/stdio.h diff --git a/contrib/libstdc++/include/c_compatibility/stdlib.h b/libstdc++/include/c_compatibility/stdlib.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/stdlib.h rename to libstdc++/include/c_compatibility/stdlib.h diff --git a/contrib/libstdc++/include/c_compatibility/string.h b/libstdc++/include/c_compatibility/string.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/string.h rename to libstdc++/include/c_compatibility/string.h diff --git a/contrib/libstdc++/include/c_compatibility/time.h b/libstdc++/include/c_compatibility/time.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/time.h rename to libstdc++/include/c_compatibility/time.h diff --git a/contrib/libstdc++/include/c_compatibility/wchar.h b/libstdc++/include/c_compatibility/wchar.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/wchar.h rename to libstdc++/include/c_compatibility/wchar.h diff --git a/contrib/libstdc++/include/c_compatibility/wctype.h b/libstdc++/include/c_compatibility/wctype.h similarity index 100% rename from contrib/libstdc++/include/c_compatibility/wctype.h rename to libstdc++/include/c_compatibility/wctype.h diff --git a/contrib/libstdc++/include/c_std/cmath.tcc b/libstdc++/include/c_std/cmath.tcc similarity index 100% rename from contrib/libstdc++/include/c_std/cmath.tcc rename to libstdc++/include/c_std/cmath.tcc diff --git a/contrib/libstdc++/include/c_std/std_cassert.h b/libstdc++/include/c_std/std_cassert.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cassert.h rename to libstdc++/include/c_std/std_cassert.h diff --git a/contrib/libstdc++/include/c_std/std_cctype.h b/libstdc++/include/c_std/std_cctype.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cctype.h rename to libstdc++/include/c_std/std_cctype.h diff --git a/contrib/libstdc++/include/c_std/std_cerrno.h b/libstdc++/include/c_std/std_cerrno.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cerrno.h rename to libstdc++/include/c_std/std_cerrno.h diff --git a/contrib/libstdc++/include/c_std/std_cfloat.h b/libstdc++/include/c_std/std_cfloat.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cfloat.h rename to libstdc++/include/c_std/std_cfloat.h diff --git a/contrib/libstdc++/include/c_std/std_ciso646.h b/libstdc++/include/c_std/std_ciso646.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_ciso646.h rename to libstdc++/include/c_std/std_ciso646.h diff --git a/contrib/libstdc++/include/c_std/std_climits.h b/libstdc++/include/c_std/std_climits.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_climits.h rename to libstdc++/include/c_std/std_climits.h diff --git a/contrib/libstdc++/include/c_std/std_clocale.h b/libstdc++/include/c_std/std_clocale.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_clocale.h rename to libstdc++/include/c_std/std_clocale.h diff --git a/contrib/libstdc++/include/c_std/std_cmath.h b/libstdc++/include/c_std/std_cmath.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cmath.h rename to libstdc++/include/c_std/std_cmath.h diff --git a/contrib/libstdc++/include/c_std/std_csetjmp.h b/libstdc++/include/c_std/std_csetjmp.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_csetjmp.h rename to libstdc++/include/c_std/std_csetjmp.h diff --git a/contrib/libstdc++/include/c_std/std_csignal.h b/libstdc++/include/c_std/std_csignal.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_csignal.h rename to libstdc++/include/c_std/std_csignal.h diff --git a/contrib/libstdc++/include/c_std/std_cstdarg.h b/libstdc++/include/c_std/std_cstdarg.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cstdarg.h rename to libstdc++/include/c_std/std_cstdarg.h diff --git a/contrib/libstdc++/include/c_std/std_cstddef.h b/libstdc++/include/c_std/std_cstddef.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cstddef.h rename to libstdc++/include/c_std/std_cstddef.h diff --git a/contrib/libstdc++/include/c_std/std_cstdio.h b/libstdc++/include/c_std/std_cstdio.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cstdio.h rename to libstdc++/include/c_std/std_cstdio.h diff --git a/contrib/libstdc++/include/c_std/std_cstdlib.h b/libstdc++/include/c_std/std_cstdlib.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cstdlib.h rename to libstdc++/include/c_std/std_cstdlib.h diff --git a/contrib/libstdc++/include/c_std/std_cstring.h b/libstdc++/include/c_std/std_cstring.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cstring.h rename to libstdc++/include/c_std/std_cstring.h diff --git a/contrib/libstdc++/include/c_std/std_ctime.h b/libstdc++/include/c_std/std_ctime.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_ctime.h rename to libstdc++/include/c_std/std_ctime.h diff --git a/contrib/libstdc++/include/c_std/std_cwchar.h b/libstdc++/include/c_std/std_cwchar.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cwchar.h rename to libstdc++/include/c_std/std_cwchar.h diff --git a/contrib/libstdc++/include/c_std/std_cwctype.h b/libstdc++/include/c_std/std_cwctype.h similarity index 100% rename from contrib/libstdc++/include/c_std/std_cwctype.h rename to libstdc++/include/c_std/std_cwctype.h diff --git a/contrib/libstdc++/include/debug/bitset b/libstdc++/include/debug/bitset similarity index 100% rename from contrib/libstdc++/include/debug/bitset rename to libstdc++/include/debug/bitset diff --git a/contrib/libstdc++/include/debug/debug.h b/libstdc++/include/debug/debug.h similarity index 100% rename from contrib/libstdc++/include/debug/debug.h rename to libstdc++/include/debug/debug.h diff --git a/contrib/libstdc++/include/debug/deque b/libstdc++/include/debug/deque similarity index 100% rename from contrib/libstdc++/include/debug/deque rename to libstdc++/include/debug/deque diff --git a/contrib/libstdc++/include/debug/formatter.h b/libstdc++/include/debug/formatter.h similarity index 100% rename from contrib/libstdc++/include/debug/formatter.h rename to libstdc++/include/debug/formatter.h diff --git a/contrib/libstdc++/include/debug/functions.h b/libstdc++/include/debug/functions.h similarity index 100% rename from contrib/libstdc++/include/debug/functions.h rename to libstdc++/include/debug/functions.h diff --git a/contrib/libstdc++/include/debug/hash_map b/libstdc++/include/debug/hash_map similarity index 100% rename from contrib/libstdc++/include/debug/hash_map rename to libstdc++/include/debug/hash_map diff --git a/contrib/libstdc++/include/debug/hash_map.h b/libstdc++/include/debug/hash_map.h similarity index 100% rename from contrib/libstdc++/include/debug/hash_map.h rename to libstdc++/include/debug/hash_map.h diff --git a/contrib/libstdc++/include/debug/hash_multimap.h b/libstdc++/include/debug/hash_multimap.h similarity index 100% rename from contrib/libstdc++/include/debug/hash_multimap.h rename to libstdc++/include/debug/hash_multimap.h diff --git a/contrib/libstdc++/include/debug/hash_multiset.h b/libstdc++/include/debug/hash_multiset.h similarity index 100% rename from contrib/libstdc++/include/debug/hash_multiset.h rename to libstdc++/include/debug/hash_multiset.h diff --git a/contrib/libstdc++/include/debug/hash_set b/libstdc++/include/debug/hash_set similarity index 100% rename from contrib/libstdc++/include/debug/hash_set rename to libstdc++/include/debug/hash_set diff --git a/contrib/libstdc++/include/debug/hash_set.h b/libstdc++/include/debug/hash_set.h similarity index 100% rename from contrib/libstdc++/include/debug/hash_set.h rename to libstdc++/include/debug/hash_set.h diff --git a/contrib/libstdc++/include/debug/list b/libstdc++/include/debug/list similarity index 100% rename from contrib/libstdc++/include/debug/list rename to libstdc++/include/debug/list diff --git a/contrib/libstdc++/include/debug/macros.h b/libstdc++/include/debug/macros.h similarity index 100% rename from contrib/libstdc++/include/debug/macros.h rename to libstdc++/include/debug/macros.h diff --git a/contrib/libstdc++/include/debug/map b/libstdc++/include/debug/map similarity index 100% rename from contrib/libstdc++/include/debug/map rename to libstdc++/include/debug/map diff --git a/contrib/libstdc++/include/debug/map.h b/libstdc++/include/debug/map.h similarity index 100% rename from contrib/libstdc++/include/debug/map.h rename to libstdc++/include/debug/map.h diff --git a/contrib/libstdc++/include/debug/multimap.h b/libstdc++/include/debug/multimap.h similarity index 100% rename from contrib/libstdc++/include/debug/multimap.h rename to libstdc++/include/debug/multimap.h diff --git a/contrib/libstdc++/include/debug/multiset.h b/libstdc++/include/debug/multiset.h similarity index 100% rename from contrib/libstdc++/include/debug/multiset.h rename to libstdc++/include/debug/multiset.h diff --git a/contrib/libstdc++/include/debug/safe_base.h b/libstdc++/include/debug/safe_base.h similarity index 100% rename from contrib/libstdc++/include/debug/safe_base.h rename to libstdc++/include/debug/safe_base.h diff --git a/contrib/libstdc++/include/debug/safe_iterator.h b/libstdc++/include/debug/safe_iterator.h similarity index 100% rename from contrib/libstdc++/include/debug/safe_iterator.h rename to libstdc++/include/debug/safe_iterator.h diff --git a/contrib/libstdc++/include/debug/safe_iterator.tcc b/libstdc++/include/debug/safe_iterator.tcc similarity index 100% rename from contrib/libstdc++/include/debug/safe_iterator.tcc rename to libstdc++/include/debug/safe_iterator.tcc diff --git a/contrib/libstdc++/include/debug/safe_sequence.h b/libstdc++/include/debug/safe_sequence.h similarity index 100% rename from contrib/libstdc++/include/debug/safe_sequence.h rename to libstdc++/include/debug/safe_sequence.h diff --git a/contrib/libstdc++/include/debug/set b/libstdc++/include/debug/set similarity index 100% rename from contrib/libstdc++/include/debug/set rename to libstdc++/include/debug/set diff --git a/contrib/libstdc++/include/debug/set.h b/libstdc++/include/debug/set.h similarity index 100% rename from contrib/libstdc++/include/debug/set.h rename to libstdc++/include/debug/set.h diff --git a/contrib/libstdc++/include/debug/string b/libstdc++/include/debug/string similarity index 100% rename from contrib/libstdc++/include/debug/string rename to libstdc++/include/debug/string diff --git a/contrib/libstdc++/include/debug/vector b/libstdc++/include/debug/vector similarity index 100% rename from contrib/libstdc++/include/debug/vector rename to libstdc++/include/debug/vector diff --git a/contrib/libstdc++/include/ext/algorithm b/libstdc++/include/ext/algorithm similarity index 100% rename from contrib/libstdc++/include/ext/algorithm rename to libstdc++/include/ext/algorithm diff --git a/contrib/libstdc++/include/ext/array_allocator.h b/libstdc++/include/ext/array_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/array_allocator.h rename to libstdc++/include/ext/array_allocator.h diff --git a/contrib/libstdc++/include/ext/atomicity.h b/libstdc++/include/ext/atomicity.h similarity index 100% rename from contrib/libstdc++/include/ext/atomicity.h rename to libstdc++/include/ext/atomicity.h diff --git a/contrib/libstdc++/include/ext/bitmap_allocator.h b/libstdc++/include/ext/bitmap_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/bitmap_allocator.h rename to libstdc++/include/ext/bitmap_allocator.h diff --git a/contrib/libstdc++/include/ext/codecvt_specializations.h b/libstdc++/include/ext/codecvt_specializations.h similarity index 100% rename from contrib/libstdc++/include/ext/codecvt_specializations.h rename to libstdc++/include/ext/codecvt_specializations.h diff --git a/contrib/libstdc++/include/ext/concurrence.h b/libstdc++/include/ext/concurrence.h similarity index 100% rename from contrib/libstdc++/include/ext/concurrence.h rename to libstdc++/include/ext/concurrence.h diff --git a/contrib/libstdc++/include/ext/debug_allocator.h b/libstdc++/include/ext/debug_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/debug_allocator.h rename to libstdc++/include/ext/debug_allocator.h diff --git a/contrib/libstdc++/include/ext/functional b/libstdc++/include/ext/functional similarity index 100% rename from contrib/libstdc++/include/ext/functional rename to libstdc++/include/ext/functional diff --git a/contrib/libstdc++/include/ext/hash_fun.h b/libstdc++/include/ext/hash_fun.h similarity index 100% rename from contrib/libstdc++/include/ext/hash_fun.h rename to libstdc++/include/ext/hash_fun.h diff --git a/contrib/libstdc++/include/ext/hash_map b/libstdc++/include/ext/hash_map similarity index 100% rename from contrib/libstdc++/include/ext/hash_map rename to libstdc++/include/ext/hash_map diff --git a/contrib/libstdc++/include/ext/hash_set b/libstdc++/include/ext/hash_set similarity index 100% rename from contrib/libstdc++/include/ext/hash_set rename to libstdc++/include/ext/hash_set diff --git a/contrib/libstdc++/include/ext/hashtable.h b/libstdc++/include/ext/hashtable.h similarity index 100% rename from contrib/libstdc++/include/ext/hashtable.h rename to libstdc++/include/ext/hashtable.h diff --git a/contrib/libstdc++/include/ext/iterator b/libstdc++/include/ext/iterator similarity index 100% rename from contrib/libstdc++/include/ext/iterator rename to libstdc++/include/ext/iterator diff --git a/contrib/libstdc++/include/ext/malloc_allocator.h b/libstdc++/include/ext/malloc_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/malloc_allocator.h rename to libstdc++/include/ext/malloc_allocator.h diff --git a/contrib/libstdc++/include/ext/memory b/libstdc++/include/ext/memory similarity index 100% rename from contrib/libstdc++/include/ext/memory rename to libstdc++/include/ext/memory diff --git a/contrib/libstdc++/include/ext/mt_allocator.h b/libstdc++/include/ext/mt_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/mt_allocator.h rename to libstdc++/include/ext/mt_allocator.h diff --git a/contrib/libstdc++/include/ext/new_allocator.h b/libstdc++/include/ext/new_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/new_allocator.h rename to libstdc++/include/ext/new_allocator.h diff --git a/contrib/libstdc++/include/ext/numeric b/libstdc++/include/ext/numeric similarity index 100% rename from contrib/libstdc++/include/ext/numeric rename to libstdc++/include/ext/numeric diff --git a/contrib/libstdc++/include/ext/numeric_traits.h b/libstdc++/include/ext/numeric_traits.h similarity index 100% rename from contrib/libstdc++/include/ext/numeric_traits.h rename to libstdc++/include/ext/numeric_traits.h diff --git a/contrib/libstdc++/include/ext/pb_ds/assoc_container.hpp b/libstdc++/include/ext/pb_ds/assoc_container.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/assoc_container.hpp rename to libstdc++/include/ext/pb_ds/assoc_container.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp b/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp rename to libstdc++/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp b/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp rename to libstdc++/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp b/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp rename to libstdc++/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/basic_types.hpp b/libstdc++/include/ext/pb_ds/detail/basic_types.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/basic_types.hpp rename to libstdc++/include/ext/pb_ds/detail/basic_types.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp b/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp rename to libstdc++/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/cond_dealtor.hpp b/libstdc++/include/ext/pb_ds/detail/cond_dealtor.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/cond_dealtor.hpp rename to libstdc++/include/ext/pb_ds/detail/cond_dealtor.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/container_base_dispatch.hpp b/libstdc++/include/ext/pb_ds/detail/container_base_dispatch.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/container_base_dispatch.hpp rename to libstdc++/include/ext/pb_ds/detail/container_base_dispatch.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp b/libstdc++/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp rename to libstdc++/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp b/libstdc++/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp rename to libstdc++/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp b/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp rename to libstdc++/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp b/libstdc++/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp rename to libstdc++/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/map_debug_base.hpp b/libstdc++/include/ext/pb_ds/detail/map_debug_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/map_debug_base.hpp rename to libstdc++/include/ext/pb_ds/detail/map_debug_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp b/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp rename to libstdc++/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/head.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/head.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/head.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/head.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/leaf.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/leaf.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/leaf.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/leaf.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_base.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_base.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/node_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/traits.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/traits.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp b/libstdc++/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp rename to libstdc++/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/node.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/node.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/node.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/node.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp b/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp rename to libstdc++/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp b/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp rename to libstdc++/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/node.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/node.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/node.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/node.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/traits.hpp b/libstdc++/include/ext/pb_ds/detail/splay_tree_/traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/splay_tree_/traits.hpp rename to libstdc++/include/ext/pb_ds/detail/splay_tree_/traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/standard_policies.hpp b/libstdc++/include/ext/pb_ds/detail/standard_policies.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/standard_policies.hpp rename to libstdc++/include/ext/pb_ds/detail/standard_policies.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp b/libstdc++/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp rename to libstdc++/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp b/libstdc++/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp rename to libstdc++/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp b/libstdc++/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/libstdc++/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp b/libstdc++/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp rename to libstdc++/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/tree_trace_base.hpp b/libstdc++/include/ext/pb_ds/detail/tree_trace_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/tree_trace_base.hpp rename to libstdc++/include/ext/pb_ds/detail/tree_trace_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp b/libstdc++/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp rename to libstdc++/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/type_utils.hpp b/libstdc++/include/ext/pb_ds/detail/type_utils.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/type_utils.hpp rename to libstdc++/include/ext/pb_ds/detail/type_utils.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/types_traits.hpp b/libstdc++/include/ext/pb_ds/detail/types_traits.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/types_traits.hpp rename to libstdc++/include/ext/pb_ds/detail/types_traits.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp b/libstdc++/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp b/libstdc++/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp rename to libstdc++/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/exception.hpp b/libstdc++/include/ext/pb_ds/exception.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/exception.hpp rename to libstdc++/include/ext/pb_ds/exception.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/hash_policy.hpp b/libstdc++/include/ext/pb_ds/hash_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/hash_policy.hpp rename to libstdc++/include/ext/pb_ds/hash_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/list_update_policy.hpp b/libstdc++/include/ext/pb_ds/list_update_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/list_update_policy.hpp rename to libstdc++/include/ext/pb_ds/list_update_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/priority_queue.hpp b/libstdc++/include/ext/pb_ds/priority_queue.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/priority_queue.hpp rename to libstdc++/include/ext/pb_ds/priority_queue.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/tag_and_trait.hpp b/libstdc++/include/ext/pb_ds/tag_and_trait.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/tag_and_trait.hpp rename to libstdc++/include/ext/pb_ds/tag_and_trait.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/tree_policy.hpp b/libstdc++/include/ext/pb_ds/tree_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/tree_policy.hpp rename to libstdc++/include/ext/pb_ds/tree_policy.hpp diff --git a/contrib/libstdc++/include/ext/pb_ds/trie_policy.hpp b/libstdc++/include/ext/pb_ds/trie_policy.hpp similarity index 100% rename from contrib/libstdc++/include/ext/pb_ds/trie_policy.hpp rename to libstdc++/include/ext/pb_ds/trie_policy.hpp diff --git a/contrib/libstdc++/include/ext/pod_char_traits.h b/libstdc++/include/ext/pod_char_traits.h similarity index 100% rename from contrib/libstdc++/include/ext/pod_char_traits.h rename to libstdc++/include/ext/pod_char_traits.h diff --git a/contrib/libstdc++/include/ext/pool_allocator.h b/libstdc++/include/ext/pool_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/pool_allocator.h rename to libstdc++/include/ext/pool_allocator.h diff --git a/contrib/libstdc++/include/ext/rb_tree b/libstdc++/include/ext/rb_tree similarity index 100% rename from contrib/libstdc++/include/ext/rb_tree rename to libstdc++/include/ext/rb_tree diff --git a/contrib/libstdc++/include/ext/rc_string_base.h b/libstdc++/include/ext/rc_string_base.h similarity index 100% rename from contrib/libstdc++/include/ext/rc_string_base.h rename to libstdc++/include/ext/rc_string_base.h diff --git a/contrib/libstdc++/include/ext/rope b/libstdc++/include/ext/rope similarity index 100% rename from contrib/libstdc++/include/ext/rope rename to libstdc++/include/ext/rope diff --git a/contrib/libstdc++/include/ext/ropeimpl.h b/libstdc++/include/ext/ropeimpl.h similarity index 100% rename from contrib/libstdc++/include/ext/ropeimpl.h rename to libstdc++/include/ext/ropeimpl.h diff --git a/contrib/libstdc++/include/ext/slist b/libstdc++/include/ext/slist similarity index 100% rename from contrib/libstdc++/include/ext/slist rename to libstdc++/include/ext/slist diff --git a/contrib/libstdc++/include/ext/sso_string_base.h b/libstdc++/include/ext/sso_string_base.h similarity index 100% rename from contrib/libstdc++/include/ext/sso_string_base.h rename to libstdc++/include/ext/sso_string_base.h diff --git a/contrib/libstdc++/include/ext/stdio_filebuf.h b/libstdc++/include/ext/stdio_filebuf.h similarity index 100% rename from contrib/libstdc++/include/ext/stdio_filebuf.h rename to libstdc++/include/ext/stdio_filebuf.h diff --git a/contrib/libstdc++/include/ext/stdio_sync_filebuf.h b/libstdc++/include/ext/stdio_sync_filebuf.h similarity index 100% rename from contrib/libstdc++/include/ext/stdio_sync_filebuf.h rename to libstdc++/include/ext/stdio_sync_filebuf.h diff --git a/contrib/libstdc++/include/ext/throw_allocator.h b/libstdc++/include/ext/throw_allocator.h similarity index 100% rename from contrib/libstdc++/include/ext/throw_allocator.h rename to libstdc++/include/ext/throw_allocator.h diff --git a/contrib/libstdc++/include/ext/type_traits.h b/libstdc++/include/ext/type_traits.h similarity index 100% rename from contrib/libstdc++/include/ext/type_traits.h rename to libstdc++/include/ext/type_traits.h diff --git a/contrib/libstdc++/include/ext/typelist.h b/libstdc++/include/ext/typelist.h similarity index 100% rename from contrib/libstdc++/include/ext/typelist.h rename to libstdc++/include/ext/typelist.h diff --git a/contrib/libstdc++/include/ext/vstring.h b/libstdc++/include/ext/vstring.h similarity index 100% rename from contrib/libstdc++/include/ext/vstring.h rename to libstdc++/include/ext/vstring.h diff --git a/contrib/libstdc++/include/ext/vstring.tcc b/libstdc++/include/ext/vstring.tcc similarity index 100% rename from contrib/libstdc++/include/ext/vstring.tcc rename to libstdc++/include/ext/vstring.tcc diff --git a/contrib/libstdc++/include/ext/vstring_fwd.h b/libstdc++/include/ext/vstring_fwd.h similarity index 100% rename from contrib/libstdc++/include/ext/vstring_fwd.h rename to libstdc++/include/ext/vstring_fwd.h diff --git a/contrib/libstdc++/include/ext/vstring_util.h b/libstdc++/include/ext/vstring_util.h similarity index 100% rename from contrib/libstdc++/include/ext/vstring_util.h rename to libstdc++/include/ext/vstring_util.h diff --git a/contrib/libstdc++/include/precompiled/extc++.h b/libstdc++/include/precompiled/extc++.h similarity index 100% rename from contrib/libstdc++/include/precompiled/extc++.h rename to libstdc++/include/precompiled/extc++.h diff --git a/contrib/libstdc++/include/precompiled/stdc++.h b/libstdc++/include/precompiled/stdc++.h similarity index 100% rename from contrib/libstdc++/include/precompiled/stdc++.h rename to libstdc++/include/precompiled/stdc++.h diff --git a/contrib/libstdc++/include/precompiled/stdtr1c++.h b/libstdc++/include/precompiled/stdtr1c++.h similarity index 100% rename from contrib/libstdc++/include/precompiled/stdtr1c++.h rename to libstdc++/include/precompiled/stdtr1c++.h diff --git a/contrib/libstdc++/include/std/std_algorithm.h b/libstdc++/include/std/std_algorithm.h similarity index 100% rename from contrib/libstdc++/include/std/std_algorithm.h rename to libstdc++/include/std/std_algorithm.h diff --git a/contrib/libstdc++/include/std/std_bitset.h b/libstdc++/include/std/std_bitset.h similarity index 100% rename from contrib/libstdc++/include/std/std_bitset.h rename to libstdc++/include/std/std_bitset.h diff --git a/contrib/libstdc++/include/std/std_complex.h b/libstdc++/include/std/std_complex.h similarity index 100% rename from contrib/libstdc++/include/std/std_complex.h rename to libstdc++/include/std/std_complex.h diff --git a/contrib/libstdc++/include/std/std_deque.h b/libstdc++/include/std/std_deque.h similarity index 100% rename from contrib/libstdc++/include/std/std_deque.h rename to libstdc++/include/std/std_deque.h diff --git a/contrib/libstdc++/include/std/std_fstream.h b/libstdc++/include/std/std_fstream.h similarity index 100% rename from contrib/libstdc++/include/std/std_fstream.h rename to libstdc++/include/std/std_fstream.h diff --git a/contrib/libstdc++/include/std/std_functional.h b/libstdc++/include/std/std_functional.h similarity index 100% rename from contrib/libstdc++/include/std/std_functional.h rename to libstdc++/include/std/std_functional.h diff --git a/contrib/libstdc++/include/std/std_iomanip.h b/libstdc++/include/std/std_iomanip.h similarity index 100% rename from contrib/libstdc++/include/std/std_iomanip.h rename to libstdc++/include/std/std_iomanip.h diff --git a/contrib/libstdc++/include/std/std_ios.h b/libstdc++/include/std/std_ios.h similarity index 100% rename from contrib/libstdc++/include/std/std_ios.h rename to libstdc++/include/std/std_ios.h diff --git a/contrib/libstdc++/include/std/std_iosfwd.h b/libstdc++/include/std/std_iosfwd.h similarity index 100% rename from contrib/libstdc++/include/std/std_iosfwd.h rename to libstdc++/include/std/std_iosfwd.h diff --git a/contrib/libstdc++/include/std/std_iostream.h b/libstdc++/include/std/std_iostream.h similarity index 100% rename from contrib/libstdc++/include/std/std_iostream.h rename to libstdc++/include/std/std_iostream.h diff --git a/contrib/libstdc++/include/std/std_istream.h b/libstdc++/include/std/std_istream.h similarity index 100% rename from contrib/libstdc++/include/std/std_istream.h rename to libstdc++/include/std/std_istream.h diff --git a/contrib/libstdc++/include/std/std_iterator.h b/libstdc++/include/std/std_iterator.h similarity index 100% rename from contrib/libstdc++/include/std/std_iterator.h rename to libstdc++/include/std/std_iterator.h diff --git a/contrib/libstdc++/include/std/std_limits.h b/libstdc++/include/std/std_limits.h similarity index 100% rename from contrib/libstdc++/include/std/std_limits.h rename to libstdc++/include/std/std_limits.h diff --git a/contrib/libstdc++/include/std/std_list.h b/libstdc++/include/std/std_list.h similarity index 100% rename from contrib/libstdc++/include/std/std_list.h rename to libstdc++/include/std/std_list.h diff --git a/contrib/libstdc++/include/std/std_locale.h b/libstdc++/include/std/std_locale.h similarity index 100% rename from contrib/libstdc++/include/std/std_locale.h rename to libstdc++/include/std/std_locale.h diff --git a/contrib/libstdc++/include/std/std_map.h b/libstdc++/include/std/std_map.h similarity index 100% rename from contrib/libstdc++/include/std/std_map.h rename to libstdc++/include/std/std_map.h diff --git a/contrib/libstdc++/include/std/std_memory.h b/libstdc++/include/std/std_memory.h similarity index 100% rename from contrib/libstdc++/include/std/std_memory.h rename to libstdc++/include/std/std_memory.h diff --git a/contrib/libstdc++/include/std/std_numeric.h b/libstdc++/include/std/std_numeric.h similarity index 100% rename from contrib/libstdc++/include/std/std_numeric.h rename to libstdc++/include/std/std_numeric.h diff --git a/contrib/libstdc++/include/std/std_ostream.h b/libstdc++/include/std/std_ostream.h similarity index 100% rename from contrib/libstdc++/include/std/std_ostream.h rename to libstdc++/include/std/std_ostream.h diff --git a/contrib/libstdc++/include/std/std_queue.h b/libstdc++/include/std/std_queue.h similarity index 100% rename from contrib/libstdc++/include/std/std_queue.h rename to libstdc++/include/std/std_queue.h diff --git a/contrib/libstdc++/include/std/std_set.h b/libstdc++/include/std/std_set.h similarity index 100% rename from contrib/libstdc++/include/std/std_set.h rename to libstdc++/include/std/std_set.h diff --git a/contrib/libstdc++/include/std/std_sstream.h b/libstdc++/include/std/std_sstream.h similarity index 100% rename from contrib/libstdc++/include/std/std_sstream.h rename to libstdc++/include/std/std_sstream.h diff --git a/contrib/libstdc++/include/std/std_stack.h b/libstdc++/include/std/std_stack.h similarity index 100% rename from contrib/libstdc++/include/std/std_stack.h rename to libstdc++/include/std/std_stack.h diff --git a/contrib/libstdc++/include/std/std_stdexcept.h b/libstdc++/include/std/std_stdexcept.h similarity index 100% rename from contrib/libstdc++/include/std/std_stdexcept.h rename to libstdc++/include/std/std_stdexcept.h diff --git a/contrib/libstdc++/include/std/std_streambuf.h b/libstdc++/include/std/std_streambuf.h similarity index 100% rename from contrib/libstdc++/include/std/std_streambuf.h rename to libstdc++/include/std/std_streambuf.h diff --git a/contrib/libstdc++/include/std/std_string.h b/libstdc++/include/std/std_string.h similarity index 100% rename from contrib/libstdc++/include/std/std_string.h rename to libstdc++/include/std/std_string.h diff --git a/contrib/libstdc++/include/std/std_utility.h b/libstdc++/include/std/std_utility.h similarity index 100% rename from contrib/libstdc++/include/std/std_utility.h rename to libstdc++/include/std/std_utility.h diff --git a/contrib/libstdc++/include/std/std_valarray.h b/libstdc++/include/std/std_valarray.h similarity index 100% rename from contrib/libstdc++/include/std/std_valarray.h rename to libstdc++/include/std/std_valarray.h diff --git a/contrib/libstdc++/include/std/std_vector.h b/libstdc++/include/std/std_vector.h similarity index 100% rename from contrib/libstdc++/include/std/std_vector.h rename to libstdc++/include/std/std_vector.h diff --git a/contrib/libstdc++/include/tr1/array b/libstdc++/include/tr1/array similarity index 100% rename from contrib/libstdc++/include/tr1/array rename to libstdc++/include/tr1/array diff --git a/contrib/libstdc++/include/tr1/bind_iterate.h b/libstdc++/include/tr1/bind_iterate.h similarity index 100% rename from contrib/libstdc++/include/tr1/bind_iterate.h rename to libstdc++/include/tr1/bind_iterate.h diff --git a/contrib/libstdc++/include/tr1/bind_repeat.h b/libstdc++/include/tr1/bind_repeat.h similarity index 100% rename from contrib/libstdc++/include/tr1/bind_repeat.h rename to libstdc++/include/tr1/bind_repeat.h diff --git a/contrib/libstdc++/include/tr1/boost_shared_ptr.h b/libstdc++/include/tr1/boost_shared_ptr.h similarity index 100% rename from contrib/libstdc++/include/tr1/boost_shared_ptr.h rename to libstdc++/include/tr1/boost_shared_ptr.h diff --git a/contrib/libstdc++/include/tr1/cctype b/libstdc++/include/tr1/cctype similarity index 100% rename from contrib/libstdc++/include/tr1/cctype rename to libstdc++/include/tr1/cctype diff --git a/contrib/libstdc++/include/tr1/cfenv b/libstdc++/include/tr1/cfenv similarity index 100% rename from contrib/libstdc++/include/tr1/cfenv rename to libstdc++/include/tr1/cfenv diff --git a/contrib/libstdc++/include/tr1/cfloat b/libstdc++/include/tr1/cfloat similarity index 100% rename from contrib/libstdc++/include/tr1/cfloat rename to libstdc++/include/tr1/cfloat diff --git a/contrib/libstdc++/include/tr1/cinttypes b/libstdc++/include/tr1/cinttypes similarity index 100% rename from contrib/libstdc++/include/tr1/cinttypes rename to libstdc++/include/tr1/cinttypes diff --git a/contrib/libstdc++/include/tr1/climits b/libstdc++/include/tr1/climits similarity index 100% rename from contrib/libstdc++/include/tr1/climits rename to libstdc++/include/tr1/climits diff --git a/contrib/libstdc++/include/tr1/cmath b/libstdc++/include/tr1/cmath similarity index 100% rename from contrib/libstdc++/include/tr1/cmath rename to libstdc++/include/tr1/cmath diff --git a/contrib/libstdc++/include/tr1/common.h b/libstdc++/include/tr1/common.h similarity index 100% rename from contrib/libstdc++/include/tr1/common.h rename to libstdc++/include/tr1/common.h diff --git a/contrib/libstdc++/include/tr1/complex b/libstdc++/include/tr1/complex similarity index 100% rename from contrib/libstdc++/include/tr1/complex rename to libstdc++/include/tr1/complex diff --git a/contrib/libstdc++/include/tr1/cstdarg b/libstdc++/include/tr1/cstdarg similarity index 100% rename from contrib/libstdc++/include/tr1/cstdarg rename to libstdc++/include/tr1/cstdarg diff --git a/contrib/libstdc++/include/tr1/cstdbool b/libstdc++/include/tr1/cstdbool similarity index 100% rename from contrib/libstdc++/include/tr1/cstdbool rename to libstdc++/include/tr1/cstdbool diff --git a/contrib/libstdc++/include/tr1/cstdint b/libstdc++/include/tr1/cstdint similarity index 100% rename from contrib/libstdc++/include/tr1/cstdint rename to libstdc++/include/tr1/cstdint diff --git a/contrib/libstdc++/include/tr1/cstdio b/libstdc++/include/tr1/cstdio similarity index 100% rename from contrib/libstdc++/include/tr1/cstdio rename to libstdc++/include/tr1/cstdio diff --git a/contrib/libstdc++/include/tr1/cstdlib b/libstdc++/include/tr1/cstdlib similarity index 100% rename from contrib/libstdc++/include/tr1/cstdlib rename to libstdc++/include/tr1/cstdlib diff --git a/contrib/libstdc++/include/tr1/ctgmath b/libstdc++/include/tr1/ctgmath similarity index 100% rename from contrib/libstdc++/include/tr1/ctgmath rename to libstdc++/include/tr1/ctgmath diff --git a/contrib/libstdc++/include/tr1/ctime b/libstdc++/include/tr1/ctime similarity index 100% rename from contrib/libstdc++/include/tr1/ctime rename to libstdc++/include/tr1/ctime diff --git a/contrib/libstdc++/include/tr1/ctype.h b/libstdc++/include/tr1/ctype.h similarity index 100% rename from contrib/libstdc++/include/tr1/ctype.h rename to libstdc++/include/tr1/ctype.h diff --git a/contrib/libstdc++/include/tr1/cwchar b/libstdc++/include/tr1/cwchar similarity index 100% rename from contrib/libstdc++/include/tr1/cwchar rename to libstdc++/include/tr1/cwchar diff --git a/contrib/libstdc++/include/tr1/cwctype b/libstdc++/include/tr1/cwctype similarity index 100% rename from contrib/libstdc++/include/tr1/cwctype rename to libstdc++/include/tr1/cwctype diff --git a/contrib/libstdc++/include/tr1/fenv.h b/libstdc++/include/tr1/fenv.h similarity index 100% rename from contrib/libstdc++/include/tr1/fenv.h rename to libstdc++/include/tr1/fenv.h diff --git a/contrib/libstdc++/include/tr1/float.h b/libstdc++/include/tr1/float.h similarity index 100% rename from contrib/libstdc++/include/tr1/float.h rename to libstdc++/include/tr1/float.h diff --git a/contrib/libstdc++/include/tr1/functional b/libstdc++/include/tr1/functional similarity index 100% rename from contrib/libstdc++/include/tr1/functional rename to libstdc++/include/tr1/functional diff --git a/contrib/libstdc++/include/tr1/functional_hash.h b/libstdc++/include/tr1/functional_hash.h similarity index 100% rename from contrib/libstdc++/include/tr1/functional_hash.h rename to libstdc++/include/tr1/functional_hash.h diff --git a/contrib/libstdc++/include/tr1/functional_iterate.h b/libstdc++/include/tr1/functional_iterate.h similarity index 100% rename from contrib/libstdc++/include/tr1/functional_iterate.h rename to libstdc++/include/tr1/functional_iterate.h diff --git a/contrib/libstdc++/include/tr1/hashtable b/libstdc++/include/tr1/hashtable similarity index 100% rename from contrib/libstdc++/include/tr1/hashtable rename to libstdc++/include/tr1/hashtable diff --git a/contrib/libstdc++/include/tr1/hashtable_policy.h b/libstdc++/include/tr1/hashtable_policy.h similarity index 100% rename from contrib/libstdc++/include/tr1/hashtable_policy.h rename to libstdc++/include/tr1/hashtable_policy.h diff --git a/contrib/libstdc++/include/tr1/inttypes.h b/libstdc++/include/tr1/inttypes.h similarity index 100% rename from contrib/libstdc++/include/tr1/inttypes.h rename to libstdc++/include/tr1/inttypes.h diff --git a/contrib/libstdc++/include/tr1/limits.h b/libstdc++/include/tr1/limits.h similarity index 100% rename from contrib/libstdc++/include/tr1/limits.h rename to libstdc++/include/tr1/limits.h diff --git a/contrib/libstdc++/include/tr1/math.h b/libstdc++/include/tr1/math.h similarity index 100% rename from contrib/libstdc++/include/tr1/math.h rename to libstdc++/include/tr1/math.h diff --git a/contrib/libstdc++/include/tr1/memory b/libstdc++/include/tr1/memory similarity index 100% rename from contrib/libstdc++/include/tr1/memory rename to libstdc++/include/tr1/memory diff --git a/contrib/libstdc++/include/tr1/mu_iterate.h b/libstdc++/include/tr1/mu_iterate.h similarity index 100% rename from contrib/libstdc++/include/tr1/mu_iterate.h rename to libstdc++/include/tr1/mu_iterate.h diff --git a/contrib/libstdc++/include/tr1/random b/libstdc++/include/tr1/random similarity index 100% rename from contrib/libstdc++/include/tr1/random rename to libstdc++/include/tr1/random diff --git a/contrib/libstdc++/include/tr1/random.tcc b/libstdc++/include/tr1/random.tcc similarity index 100% rename from contrib/libstdc++/include/tr1/random.tcc rename to libstdc++/include/tr1/random.tcc diff --git a/contrib/libstdc++/include/tr1/ref_fwd.h b/libstdc++/include/tr1/ref_fwd.h similarity index 100% rename from contrib/libstdc++/include/tr1/ref_fwd.h rename to libstdc++/include/tr1/ref_fwd.h diff --git a/contrib/libstdc++/include/tr1/ref_wrap_iterate.h b/libstdc++/include/tr1/ref_wrap_iterate.h similarity index 100% rename from contrib/libstdc++/include/tr1/ref_wrap_iterate.h rename to libstdc++/include/tr1/ref_wrap_iterate.h diff --git a/contrib/libstdc++/include/tr1/repeat.h b/libstdc++/include/tr1/repeat.h similarity index 100% rename from contrib/libstdc++/include/tr1/repeat.h rename to libstdc++/include/tr1/repeat.h diff --git a/contrib/libstdc++/include/tr1/stdarg.h b/libstdc++/include/tr1/stdarg.h similarity index 100% rename from contrib/libstdc++/include/tr1/stdarg.h rename to libstdc++/include/tr1/stdarg.h diff --git a/contrib/libstdc++/include/tr1/stdbool.h b/libstdc++/include/tr1/stdbool.h similarity index 100% rename from contrib/libstdc++/include/tr1/stdbool.h rename to libstdc++/include/tr1/stdbool.h diff --git a/contrib/libstdc++/include/tr1/stdint.h b/libstdc++/include/tr1/stdint.h similarity index 100% rename from contrib/libstdc++/include/tr1/stdint.h rename to libstdc++/include/tr1/stdint.h diff --git a/contrib/libstdc++/include/tr1/stdio.h b/libstdc++/include/tr1/stdio.h similarity index 100% rename from contrib/libstdc++/include/tr1/stdio.h rename to libstdc++/include/tr1/stdio.h diff --git a/contrib/libstdc++/include/tr1/stdlib.h b/libstdc++/include/tr1/stdlib.h similarity index 100% rename from contrib/libstdc++/include/tr1/stdlib.h rename to libstdc++/include/tr1/stdlib.h diff --git a/contrib/libstdc++/include/tr1/tgmath.h b/libstdc++/include/tr1/tgmath.h similarity index 100% rename from contrib/libstdc++/include/tr1/tgmath.h rename to libstdc++/include/tr1/tgmath.h diff --git a/contrib/libstdc++/include/tr1/tuple b/libstdc++/include/tr1/tuple similarity index 100% rename from contrib/libstdc++/include/tr1/tuple rename to libstdc++/include/tr1/tuple diff --git a/contrib/libstdc++/include/tr1/tuple_defs.h b/libstdc++/include/tr1/tuple_defs.h similarity index 100% rename from contrib/libstdc++/include/tr1/tuple_defs.h rename to libstdc++/include/tr1/tuple_defs.h diff --git a/contrib/libstdc++/include/tr1/tuple_iterate.h b/libstdc++/include/tr1/tuple_iterate.h similarity index 100% rename from contrib/libstdc++/include/tr1/tuple_iterate.h rename to libstdc++/include/tr1/tuple_iterate.h diff --git a/contrib/libstdc++/include/tr1/type_traits b/libstdc++/include/tr1/type_traits similarity index 100% rename from contrib/libstdc++/include/tr1/type_traits rename to libstdc++/include/tr1/type_traits diff --git a/contrib/libstdc++/include/tr1/type_traits_fwd.h b/libstdc++/include/tr1/type_traits_fwd.h similarity index 100% rename from contrib/libstdc++/include/tr1/type_traits_fwd.h rename to libstdc++/include/tr1/type_traits_fwd.h diff --git a/contrib/libstdc++/include/tr1/unordered_map b/libstdc++/include/tr1/unordered_map similarity index 100% rename from contrib/libstdc++/include/tr1/unordered_map rename to libstdc++/include/tr1/unordered_map diff --git a/contrib/libstdc++/include/tr1/unordered_set b/libstdc++/include/tr1/unordered_set similarity index 100% rename from contrib/libstdc++/include/tr1/unordered_set rename to libstdc++/include/tr1/unordered_set diff --git a/contrib/libstdc++/include/tr1/utility b/libstdc++/include/tr1/utility similarity index 100% rename from contrib/libstdc++/include/tr1/utility rename to libstdc++/include/tr1/utility diff --git a/contrib/libstdc++/include/tr1/wchar.h b/libstdc++/include/tr1/wchar.h similarity index 100% rename from contrib/libstdc++/include/tr1/wchar.h rename to libstdc++/include/tr1/wchar.h diff --git a/contrib/libstdc++/include/tr1/wctype.h b/libstdc++/include/tr1/wctype.h similarity index 100% rename from contrib/libstdc++/include/tr1/wctype.h rename to libstdc++/include/tr1/wctype.h diff --git a/contrib/libstdc++/libmath/Makefile.am b/libstdc++/libmath/Makefile.am similarity index 100% rename from contrib/libstdc++/libmath/Makefile.am rename to libstdc++/libmath/Makefile.am diff --git a/contrib/libstdc++/libmath/Makefile.in b/libstdc++/libmath/Makefile.in similarity index 100% rename from contrib/libstdc++/libmath/Makefile.in rename to libstdc++/libmath/Makefile.in diff --git a/contrib/libstdc++/libmath/copysignf.c b/libstdc++/libmath/copysignf.c similarity index 100% rename from contrib/libstdc++/libmath/copysignf.c rename to libstdc++/libmath/copysignf.c diff --git a/contrib/libstdc++/libmath/mathconf.h b/libstdc++/libmath/mathconf.h similarity index 100% rename from contrib/libstdc++/libmath/mathconf.h rename to libstdc++/libmath/mathconf.h diff --git a/contrib/libstdc++/libmath/signbit.c b/libstdc++/libmath/signbit.c similarity index 100% rename from contrib/libstdc++/libmath/signbit.c rename to libstdc++/libmath/signbit.c diff --git a/contrib/libstdc++/libmath/signbitf.c b/libstdc++/libmath/signbitf.c similarity index 100% rename from contrib/libstdc++/libmath/signbitf.c rename to libstdc++/libmath/signbitf.c diff --git a/contrib/libstdc++/libmath/signbitl.c b/libstdc++/libmath/signbitl.c similarity index 100% rename from contrib/libstdc++/libmath/signbitl.c rename to libstdc++/libmath/signbitl.c diff --git a/contrib/libstdc++/libmath/stubs.c b/libstdc++/libmath/stubs.c similarity index 100% rename from contrib/libstdc++/libmath/stubs.c rename to libstdc++/libmath/stubs.c diff --git a/contrib/libstdc++/libsupc++/Makefile.am b/libstdc++/libsupc++/Makefile.am similarity index 100% rename from contrib/libstdc++/libsupc++/Makefile.am rename to libstdc++/libsupc++/Makefile.am diff --git a/contrib/libstdc++/libsupc++/Makefile.in b/libstdc++/libsupc++/Makefile.in similarity index 100% rename from contrib/libstdc++/libsupc++/Makefile.in rename to libstdc++/libsupc++/Makefile.in diff --git a/contrib/libstdc++/libsupc++/cxxabi.h b/libstdc++/libsupc++/cxxabi.h similarity index 100% rename from contrib/libstdc++/libsupc++/cxxabi.h rename to libstdc++/libsupc++/cxxabi.h diff --git a/contrib/libstdc++/libsupc++/del_op.cc b/libstdc++/libsupc++/del_op.cc similarity index 100% rename from contrib/libstdc++/libsupc++/del_op.cc rename to libstdc++/libsupc++/del_op.cc diff --git a/contrib/libstdc++/libsupc++/del_opnt.cc b/libstdc++/libsupc++/del_opnt.cc similarity index 100% rename from contrib/libstdc++/libsupc++/del_opnt.cc rename to libstdc++/libsupc++/del_opnt.cc diff --git a/contrib/libstdc++/libsupc++/del_opv.cc b/libstdc++/libsupc++/del_opv.cc similarity index 100% rename from contrib/libstdc++/libsupc++/del_opv.cc rename to libstdc++/libsupc++/del_opv.cc diff --git a/contrib/libstdc++/libsupc++/del_opvnt.cc b/libstdc++/libsupc++/del_opvnt.cc similarity index 100% rename from contrib/libstdc++/libsupc++/del_opvnt.cc rename to libstdc++/libsupc++/del_opvnt.cc diff --git a/contrib/libstdc++/libsupc++/eh_alloc.cc b/libstdc++/libsupc++/eh_alloc.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_alloc.cc rename to libstdc++/libsupc++/eh_alloc.cc diff --git a/contrib/libstdc++/libsupc++/eh_arm.cc b/libstdc++/libsupc++/eh_arm.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_arm.cc rename to libstdc++/libsupc++/eh_arm.cc diff --git a/contrib/libstdc++/libsupc++/eh_aux_runtime.cc b/libstdc++/libsupc++/eh_aux_runtime.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_aux_runtime.cc rename to libstdc++/libsupc++/eh_aux_runtime.cc diff --git a/contrib/libstdc++/libsupc++/eh_call.cc b/libstdc++/libsupc++/eh_call.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_call.cc rename to libstdc++/libsupc++/eh_call.cc diff --git a/contrib/libstdc++/libsupc++/eh_catch.cc b/libstdc++/libsupc++/eh_catch.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_catch.cc rename to libstdc++/libsupc++/eh_catch.cc diff --git a/contrib/libstdc++/libsupc++/eh_exception.cc b/libstdc++/libsupc++/eh_exception.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_exception.cc rename to libstdc++/libsupc++/eh_exception.cc diff --git a/contrib/libstdc++/libsupc++/eh_globals.cc b/libstdc++/libsupc++/eh_globals.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_globals.cc rename to libstdc++/libsupc++/eh_globals.cc diff --git a/contrib/libstdc++/libsupc++/eh_personality.cc b/libstdc++/libsupc++/eh_personality.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_personality.cc rename to libstdc++/libsupc++/eh_personality.cc diff --git a/contrib/libstdc++/libsupc++/eh_term_handler.cc b/libstdc++/libsupc++/eh_term_handler.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_term_handler.cc rename to libstdc++/libsupc++/eh_term_handler.cc diff --git a/contrib/libstdc++/libsupc++/eh_terminate.cc b/libstdc++/libsupc++/eh_terminate.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_terminate.cc rename to libstdc++/libsupc++/eh_terminate.cc diff --git a/contrib/libstdc++/libsupc++/eh_throw.cc b/libstdc++/libsupc++/eh_throw.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_throw.cc rename to libstdc++/libsupc++/eh_throw.cc diff --git a/contrib/libstdc++/libsupc++/eh_type.cc b/libstdc++/libsupc++/eh_type.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_type.cc rename to libstdc++/libsupc++/eh_type.cc diff --git a/contrib/libstdc++/libsupc++/eh_unex_handler.cc b/libstdc++/libsupc++/eh_unex_handler.cc similarity index 100% rename from contrib/libstdc++/libsupc++/eh_unex_handler.cc rename to libstdc++/libsupc++/eh_unex_handler.cc diff --git a/contrib/libstdc++/libsupc++/exception b/libstdc++/libsupc++/exception similarity index 100% rename from contrib/libstdc++/libsupc++/exception rename to libstdc++/libsupc++/exception diff --git a/contrib/libstdc++/libsupc++/exception_defines.h b/libstdc++/libsupc++/exception_defines.h similarity index 100% rename from contrib/libstdc++/libsupc++/exception_defines.h rename to libstdc++/libsupc++/exception_defines.h diff --git a/contrib/libstdc++/libsupc++/guard.cc b/libstdc++/libsupc++/guard.cc similarity index 100% rename from contrib/libstdc++/libsupc++/guard.cc rename to libstdc++/libsupc++/guard.cc diff --git a/contrib/libstdc++/libsupc++/new b/libstdc++/libsupc++/new similarity index 100% rename from contrib/libstdc++/libsupc++/new rename to libstdc++/libsupc++/new diff --git a/contrib/libstdc++/libsupc++/new_handler.cc b/libstdc++/libsupc++/new_handler.cc similarity index 100% rename from contrib/libstdc++/libsupc++/new_handler.cc rename to libstdc++/libsupc++/new_handler.cc diff --git a/contrib/libstdc++/libsupc++/new_op.cc b/libstdc++/libsupc++/new_op.cc similarity index 100% rename from contrib/libstdc++/libsupc++/new_op.cc rename to libstdc++/libsupc++/new_op.cc diff --git a/contrib/libstdc++/libsupc++/new_opnt.cc b/libstdc++/libsupc++/new_opnt.cc similarity index 100% rename from contrib/libstdc++/libsupc++/new_opnt.cc rename to libstdc++/libsupc++/new_opnt.cc diff --git a/contrib/libstdc++/libsupc++/new_opv.cc b/libstdc++/libsupc++/new_opv.cc similarity index 100% rename from contrib/libstdc++/libsupc++/new_opv.cc rename to libstdc++/libsupc++/new_opv.cc diff --git a/contrib/libstdc++/libsupc++/new_opvnt.cc b/libstdc++/libsupc++/new_opvnt.cc similarity index 100% rename from contrib/libstdc++/libsupc++/new_opvnt.cc rename to libstdc++/libsupc++/new_opvnt.cc diff --git a/contrib/libstdc++/libsupc++/pure.cc b/libstdc++/libsupc++/pure.cc similarity index 100% rename from contrib/libstdc++/libsupc++/pure.cc rename to libstdc++/libsupc++/pure.cc diff --git a/contrib/libstdc++/libsupc++/tinfo.cc b/libstdc++/libsupc++/tinfo.cc similarity index 100% rename from contrib/libstdc++/libsupc++/tinfo.cc rename to libstdc++/libsupc++/tinfo.cc diff --git a/contrib/libstdc++/libsupc++/tinfo.h b/libstdc++/libsupc++/tinfo.h similarity index 100% rename from contrib/libstdc++/libsupc++/tinfo.h rename to libstdc++/libsupc++/tinfo.h diff --git a/contrib/libstdc++/libsupc++/tinfo2.cc b/libstdc++/libsupc++/tinfo2.cc similarity index 100% rename from contrib/libstdc++/libsupc++/tinfo2.cc rename to libstdc++/libsupc++/tinfo2.cc diff --git a/contrib/libstdc++/libsupc++/typeinfo b/libstdc++/libsupc++/typeinfo similarity index 100% rename from contrib/libstdc++/libsupc++/typeinfo rename to libstdc++/libsupc++/typeinfo diff --git a/contrib/libstdc++/libsupc++/unwind-cxx.h b/libstdc++/libsupc++/unwind-cxx.h similarity index 100% rename from contrib/libstdc++/libsupc++/unwind-cxx.h rename to libstdc++/libsupc++/unwind-cxx.h diff --git a/contrib/libstdc++/libsupc++/vec.cc b/libstdc++/libsupc++/vec.cc similarity index 100% rename from contrib/libstdc++/libsupc++/vec.cc rename to libstdc++/libsupc++/vec.cc diff --git a/contrib/libstdc++/libsupc++/vterminate.cc b/libstdc++/libsupc++/vterminate.cc similarity index 100% rename from contrib/libstdc++/libsupc++/vterminate.cc rename to libstdc++/libsupc++/vterminate.cc diff --git a/contrib/libstdc++/linkage.m4 b/libstdc++/linkage.m4 similarity index 100% rename from contrib/libstdc++/linkage.m4 rename to libstdc++/linkage.m4 diff --git a/contrib/libstdc++/scripts/check_performance b/libstdc++/scripts/check_performance similarity index 100% rename from contrib/libstdc++/scripts/check_performance rename to libstdc++/scripts/check_performance diff --git a/contrib/libstdc++/scripts/create_testsuite_files b/libstdc++/scripts/create_testsuite_files similarity index 100% rename from contrib/libstdc++/scripts/create_testsuite_files rename to libstdc++/scripts/create_testsuite_files diff --git a/contrib/libstdc++/scripts/extract_symvers b/libstdc++/scripts/extract_symvers similarity index 100% rename from contrib/libstdc++/scripts/extract_symvers rename to libstdc++/scripts/extract_symvers diff --git a/contrib/libstdc++/scripts/gen_bind_includers.pl b/libstdc++/scripts/gen_bind_includers.pl similarity index 100% rename from contrib/libstdc++/scripts/gen_bind_includers.pl rename to libstdc++/scripts/gen_bind_includers.pl diff --git a/contrib/libstdc++/scripts/gen_includers.pl b/libstdc++/scripts/gen_includers.pl similarity index 100% rename from contrib/libstdc++/scripts/gen_includers.pl rename to libstdc++/scripts/gen_includers.pl diff --git a/contrib/libstdc++/scripts/gen_includers2.pl b/libstdc++/scripts/gen_includers2.pl similarity index 100% rename from contrib/libstdc++/scripts/gen_includers2.pl rename to libstdc++/scripts/gen_includers2.pl diff --git a/contrib/libstdc++/scripts/make_exports.pl b/libstdc++/scripts/make_exports.pl similarity index 100% rename from contrib/libstdc++/scripts/make_exports.pl rename to libstdc++/scripts/make_exports.pl diff --git a/contrib/libstdc++/scripts/make_graph.py b/libstdc++/scripts/make_graph.py similarity index 100% rename from contrib/libstdc++/scripts/make_graph.py rename to libstdc++/scripts/make_graph.py diff --git a/contrib/libstdc++/scripts/make_graphs.py b/libstdc++/scripts/make_graphs.py similarity index 100% rename from contrib/libstdc++/scripts/make_graphs.py rename to libstdc++/scripts/make_graphs.py diff --git a/contrib/libstdc++/scripts/testsuite_flags.in b/libstdc++/scripts/testsuite_flags.in similarity index 100% rename from contrib/libstdc++/scripts/testsuite_flags.in rename to libstdc++/scripts/testsuite_flags.in diff --git a/contrib/libstdc++/src/Makefile.am b/libstdc++/src/Makefile.am similarity index 100% rename from contrib/libstdc++/src/Makefile.am rename to libstdc++/src/Makefile.am diff --git a/contrib/libstdc++/src/Makefile.in b/libstdc++/src/Makefile.in similarity index 100% rename from contrib/libstdc++/src/Makefile.in rename to libstdc++/src/Makefile.in diff --git a/contrib/libstdc++/src/allocator-inst.cc b/libstdc++/src/allocator-inst.cc similarity index 100% rename from contrib/libstdc++/src/allocator-inst.cc rename to libstdc++/src/allocator-inst.cc diff --git a/contrib/libstdc++/src/bitmap_allocator.cc b/libstdc++/src/bitmap_allocator.cc similarity index 100% rename from contrib/libstdc++/src/bitmap_allocator.cc rename to libstdc++/src/bitmap_allocator.cc diff --git a/contrib/libstdc++/src/codecvt.cc b/libstdc++/src/codecvt.cc similarity index 100% rename from contrib/libstdc++/src/codecvt.cc rename to libstdc++/src/codecvt.cc diff --git a/contrib/libstdc++/src/compatibility-ldbl.cc b/libstdc++/src/compatibility-ldbl.cc similarity index 100% rename from contrib/libstdc++/src/compatibility-ldbl.cc rename to libstdc++/src/compatibility-ldbl.cc diff --git a/contrib/libstdc++/src/compatibility.cc b/libstdc++/src/compatibility.cc similarity index 100% rename from contrib/libstdc++/src/compatibility.cc rename to libstdc++/src/compatibility.cc diff --git a/contrib/libstdc++/src/complex_io.cc b/libstdc++/src/complex_io.cc similarity index 100% rename from contrib/libstdc++/src/complex_io.cc rename to libstdc++/src/complex_io.cc diff --git a/contrib/libstdc++/src/concept-inst.cc b/libstdc++/src/concept-inst.cc similarity index 100% rename from contrib/libstdc++/src/concept-inst.cc rename to libstdc++/src/concept-inst.cc diff --git a/contrib/libstdc++/src/ctype.cc b/libstdc++/src/ctype.cc similarity index 100% rename from contrib/libstdc++/src/ctype.cc rename to libstdc++/src/ctype.cc diff --git a/contrib/libstdc++/src/debug.cc b/libstdc++/src/debug.cc similarity index 100% rename from contrib/libstdc++/src/debug.cc rename to libstdc++/src/debug.cc diff --git a/contrib/libstdc++/src/debug_list.cc b/libstdc++/src/debug_list.cc similarity index 100% rename from contrib/libstdc++/src/debug_list.cc rename to libstdc++/src/debug_list.cc diff --git a/contrib/libstdc++/src/ext-inst.cc b/libstdc++/src/ext-inst.cc similarity index 100% rename from contrib/libstdc++/src/ext-inst.cc rename to libstdc++/src/ext-inst.cc diff --git a/contrib/libstdc++/src/fstream-inst.cc b/libstdc++/src/fstream-inst.cc similarity index 100% rename from contrib/libstdc++/src/fstream-inst.cc rename to libstdc++/src/fstream-inst.cc diff --git a/contrib/libstdc++/src/functexcept.cc b/libstdc++/src/functexcept.cc similarity index 100% rename from contrib/libstdc++/src/functexcept.cc rename to libstdc++/src/functexcept.cc diff --git a/contrib/libstdc++/src/globals_io.cc b/libstdc++/src/globals_io.cc similarity index 100% rename from contrib/libstdc++/src/globals_io.cc rename to libstdc++/src/globals_io.cc diff --git a/contrib/libstdc++/src/ios-inst.cc b/libstdc++/src/ios-inst.cc similarity index 100% rename from contrib/libstdc++/src/ios-inst.cc rename to libstdc++/src/ios-inst.cc diff --git a/contrib/libstdc++/src/ios.cc b/libstdc++/src/ios.cc similarity index 100% rename from contrib/libstdc++/src/ios.cc rename to libstdc++/src/ios.cc diff --git a/contrib/libstdc++/src/ios_failure.cc b/libstdc++/src/ios_failure.cc similarity index 100% rename from contrib/libstdc++/src/ios_failure.cc rename to libstdc++/src/ios_failure.cc diff --git a/contrib/libstdc++/src/ios_init.cc b/libstdc++/src/ios_init.cc similarity index 100% rename from contrib/libstdc++/src/ios_init.cc rename to libstdc++/src/ios_init.cc diff --git a/contrib/libstdc++/src/ios_locale.cc b/libstdc++/src/ios_locale.cc similarity index 100% rename from contrib/libstdc++/src/ios_locale.cc rename to libstdc++/src/ios_locale.cc diff --git a/contrib/libstdc++/src/iostream-inst.cc b/libstdc++/src/iostream-inst.cc similarity index 100% rename from contrib/libstdc++/src/iostream-inst.cc rename to libstdc++/src/iostream-inst.cc diff --git a/contrib/libstdc++/src/istream-inst.cc b/libstdc++/src/istream-inst.cc similarity index 100% rename from contrib/libstdc++/src/istream-inst.cc rename to libstdc++/src/istream-inst.cc diff --git a/contrib/libstdc++/src/istream.cc b/libstdc++/src/istream.cc similarity index 100% rename from contrib/libstdc++/src/istream.cc rename to libstdc++/src/istream.cc diff --git a/contrib/libstdc++/src/limits.cc b/libstdc++/src/limits.cc similarity index 100% rename from contrib/libstdc++/src/limits.cc rename to libstdc++/src/limits.cc diff --git a/contrib/libstdc++/src/list.cc b/libstdc++/src/list.cc similarity index 100% rename from contrib/libstdc++/src/list.cc rename to libstdc++/src/list.cc diff --git a/contrib/libstdc++/src/locale-inst.cc b/libstdc++/src/locale-inst.cc similarity index 100% rename from contrib/libstdc++/src/locale-inst.cc rename to libstdc++/src/locale-inst.cc diff --git a/contrib/libstdc++/src/locale.cc b/libstdc++/src/locale.cc similarity index 100% rename from contrib/libstdc++/src/locale.cc rename to libstdc++/src/locale.cc diff --git a/contrib/libstdc++/src/locale_facets.cc b/libstdc++/src/locale_facets.cc similarity index 100% rename from contrib/libstdc++/src/locale_facets.cc rename to libstdc++/src/locale_facets.cc diff --git a/contrib/libstdc++/src/locale_init.cc b/libstdc++/src/locale_init.cc similarity index 100% rename from contrib/libstdc++/src/locale_init.cc rename to libstdc++/src/locale_init.cc diff --git a/contrib/libstdc++/src/localename.cc b/libstdc++/src/localename.cc similarity index 100% rename from contrib/libstdc++/src/localename.cc rename to libstdc++/src/localename.cc diff --git a/contrib/libstdc++/src/misc-inst.cc b/libstdc++/src/misc-inst.cc similarity index 100% rename from contrib/libstdc++/src/misc-inst.cc rename to libstdc++/src/misc-inst.cc diff --git a/contrib/libstdc++/src/mt_allocator.cc b/libstdc++/src/mt_allocator.cc similarity index 100% rename from contrib/libstdc++/src/mt_allocator.cc rename to libstdc++/src/mt_allocator.cc diff --git a/contrib/libstdc++/src/ostream-inst.cc b/libstdc++/src/ostream-inst.cc similarity index 100% rename from contrib/libstdc++/src/ostream-inst.cc rename to libstdc++/src/ostream-inst.cc diff --git a/contrib/libstdc++/src/pool_allocator.cc b/libstdc++/src/pool_allocator.cc similarity index 100% rename from contrib/libstdc++/src/pool_allocator.cc rename to libstdc++/src/pool_allocator.cc diff --git a/contrib/libstdc++/src/sstream-inst.cc b/libstdc++/src/sstream-inst.cc similarity index 100% rename from contrib/libstdc++/src/sstream-inst.cc rename to libstdc++/src/sstream-inst.cc diff --git a/contrib/libstdc++/src/stdexcept.cc b/libstdc++/src/stdexcept.cc similarity index 100% rename from contrib/libstdc++/src/stdexcept.cc rename to libstdc++/src/stdexcept.cc diff --git a/contrib/libstdc++/src/streambuf-inst.cc b/libstdc++/src/streambuf-inst.cc similarity index 100% rename from contrib/libstdc++/src/streambuf-inst.cc rename to libstdc++/src/streambuf-inst.cc diff --git a/contrib/libstdc++/src/streambuf.cc b/libstdc++/src/streambuf.cc similarity index 100% rename from contrib/libstdc++/src/streambuf.cc rename to libstdc++/src/streambuf.cc diff --git a/contrib/libstdc++/src/string-inst.cc b/libstdc++/src/string-inst.cc similarity index 100% rename from contrib/libstdc++/src/string-inst.cc rename to libstdc++/src/string-inst.cc diff --git a/contrib/libstdc++/src/strstream.cc b/libstdc++/src/strstream.cc similarity index 100% rename from contrib/libstdc++/src/strstream.cc rename to libstdc++/src/strstream.cc diff --git a/contrib/libstdc++/src/tree.cc b/libstdc++/src/tree.cc similarity index 100% rename from contrib/libstdc++/src/tree.cc rename to libstdc++/src/tree.cc diff --git a/contrib/libstdc++/src/valarray-inst.cc b/libstdc++/src/valarray-inst.cc similarity index 100% rename from contrib/libstdc++/src/valarray-inst.cc rename to libstdc++/src/valarray-inst.cc diff --git a/contrib/libstdc++/src/wlocale-inst.cc b/libstdc++/src/wlocale-inst.cc similarity index 100% rename from contrib/libstdc++/src/wlocale-inst.cc rename to libstdc++/src/wlocale-inst.cc diff --git a/contrib/libstdc++/src/wstring-inst.cc b/libstdc++/src/wstring-inst.cc similarity index 100% rename from contrib/libstdc++/src/wstring-inst.cc rename to libstdc++/src/wstring-inst.cc From 35b98556fe5bf5e37b0d9fc53f277ad5c8ba0886 Mon Sep 17 00:00:00 2001 From: mm Date: Thu, 10 Mar 2011 13:59:17 +0000 Subject: [PATCH 2/5] Vendor upgrade of gcc 4.2 to last GPLv2 revision. PR: gnu/153298 Obtained from: gcc (gcc-4_2-branch, rev. 127959) --- gcc/BASE-VER | 2 +- gcc/ChangeLog | 118 +++++++++++++++++++++++++++ gcc/DATESTAMP | 2 +- gcc/DEV-PHASE | 1 + gcc/config/mips/predicates.md | 4 +- gcc/config/rs6000/rs6000.c | 35 ++++++++ gcc/config/s390/s390.md | 4 +- gcc/cp/ChangeLog | 63 ++++++++++++++ gcc/cp/call.c | 22 ++++- gcc/cp/cp-tree.h | 2 + gcc/cp/cxx-pretty-print.c | 4 + gcc/cp/decl.c | 2 +- gcc/cp/decl2.c | 10 ++- gcc/cp/error.c | 16 +++- gcc/cp/lex.c | 15 ++++ gcc/cp/name-lookup.c | 47 ++++++++++- gcc/cp/pt.c | 13 ++- gcc/cp/semantics.c | 9 +- gcc/cp/typeck.c | 1 + gcc/doc/contrib.texi | 4 + gcc/dwarf2out.c | 40 ++++++++- gcc/expr.c | 73 ++++++++++++++--- gcc/fold-const.c | 4 + gcc/gimplify.c | 18 ++-- gcc/reload1.c | 9 +- gcc/simplify-rtx.c | 3 +- gcc/target-def.h | 5 +- gcc/target.h | 4 + gcc/targhooks.c | 16 ++++ gcc/targhooks.h | 2 + gcc/tree-if-conv.c | 10 ++- gcc/tree-ssa-structalias.c | 92 ++++++++++++++++++++- gcc/tree-vect-analyze.c | 59 +++++++++++++- gcc/tree-vect-patterns.c | 5 +- gcc/tree.c | 3 +- gcc/tree.h | 6 ++ libstdc++/ChangeLog | 15 ++++ libstdc++/include/std/std_valarray.h | 2 +- libstdc++/include/tr1/random | 6 +- 39 files changed, 688 insertions(+), 58 deletions(-) diff --git a/gcc/BASE-VER b/gcc/BASE-VER index fae6e3d04b2c..af8c8ec7c134 100644 --- a/gcc/BASE-VER +++ b/gcc/BASE-VER @@ -1 +1 @@ -4.2.1 +4.2.2 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 136b464191e0..d0dec77ba171 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,121 @@ +2007-08-31 Jakub Jelinek + + PR rtl-optimization/33148 + * simplify-rtx.c (simplify_unary_operation_1): Only optimize + (neg (lt X 0)) if X has scalar int mode. + + PR debug/32914 + * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR + initializer, use build_vector_from_ctor if possible to create + VECTOR_CST out of it. If vector initializer is not VECTOR_CST + even after this, return NULL. + +2007-08-27 Jason Merrill + + PR c++/31337 + * gimplify.c (gimplify_modify_expr): Discard the assignment of + zero-sized types after calling gimplify_modify_expr_rhs. + +2007-08-24 Jakub Jelinek + + PR debug/32610 + * dwarf2out.c (gen_decl_die): Don't call + gen_tagged_type_instantiation_die if decl doesn't have tagged type. + +2007-08-24 Richard Guenther + + * expr.c (get_inner_reference): Remove unused variable. + +2007-08-24 Richard Guenther + + * expr.c (get_inner_reference): Do computation of bitoffset + from offset in a way we can detect overflow reliably. + +2007-08-22 Richard Guenther + + PR middle-end/32563 + * tree.c (host_integerp): Treat sizetype as signed as it is + sign-extended. + +2007-08-20 Adam Nemet + + * config/mips/predicates.md (const_call_insn_operand): Invoke + SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs. + +2007-08-17 Chen liqin + + * config/score/score.md : Update pattern tablejump. + * config/score/score.c : Update score_initialize_trampoline + function. + * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro. + (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro. + * doc/contrib.texi: Add my entry. + +2007-08-02 Andreas Krebbel + + * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg. + +2007-08-01 Andreas Krebbel + + * config/s390/s390.md (TF in GPR splitter): Change operand_subword + parameter to TFmode. + +2007-07-30 Mark Mitchell + + * BASE-VER: Bump. + * DEV-PHASE: Mark as prerelease. + +2007-07-25 Steve Ellcey + + PR target/32218 + * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type. + +2007-07-25 Dorit Nuzman + Devang Patel + + PR tree-optimization/25413 + * targhooks.c (default_builtin_vector_alignment_reachable): New. + * targhooks.h (default_builtin_vector_alignment_reachable): New. + * tree.h (contains_packed_reference): New. + * expr.c (contains_packed_reference): New. + * tree-vect-analyze.c (vector_alignment_reachable_p): New. + (vect_enhance_data_refs_alignment): Call + vector_alignment_reachable_p. + * target.h (vector_alignment_reachable): New builtin. + * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New. + * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New. + (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define. + +2007-07-24 Richard Guenther + + Backport from mainline: + 2007-07-16 Richard Guenther + Uros Bizjak + + * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond" + before forcing it to gimple operand. + +2007-07-24 Richard Guenther + + PR tree-optimization/32723 + Backport from mainline: + 2007-03-09 Daniel Berlin + + * tree-ssa-structalias.c (shared_bitmap_info_t): New structure. + (shared_bitmap_table): New variable. + (shared_bitmap_hash): New function. + (shared_bitmap_eq): Ditto + (shared_bitmap_lookup): Ditto. + (shared_bitmap_add): Ditto. + (find_what_p_points_to): Rewrite to use shared bitmap hashtable. + (init_alias_vars): Init shared bitmap hashtable. + (delete_points_to_sets): Delete shared bitmap hashtable. + +2007-07-23 Bernd Schmidt + + * reload1.c (choose_reload_regs): Set reload_spill_index for regs + chosen during find_reloads. + 2007-07-19 Release Manager * GCC 4.2.1 released. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 38e56c588fe2..a3fd8a5d04e7 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20070719 +20070831 diff --git a/gcc/DEV-PHASE b/gcc/DEV-PHASE index e69de29bb2d1..373fbc60bb98 100644 --- a/gcc/DEV-PHASE +++ b/gcc/DEV-PHASE @@ -0,0 +1 @@ +prerelease diff --git a/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md index 9a6756c20a2f..bbc8e3cf813e 100644 --- a/gcc/config/mips/predicates.md +++ b/gcc/config/mips/predicates.md @@ -116,7 +116,9 @@ /* If -mlong-calls, force all calls to use register addressing. Also, if this function has the long_call attribute, we must use register addressing. */ - return !TARGET_LONG_CALLS && !SYMBOL_REF_LONG_CALL_P (op); + return (!TARGET_LONG_CALLS + && !(GET_CODE (op) == SYMBOL_REF + && SYMBOL_REF_LONG_CALL_P (op))); case SYMBOL_GOT_GLOBAL: /* Without explicit relocs, there is no special syntax for diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6670a2034f20..5e705d00774d 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -664,6 +664,7 @@ static int rs6000_use_sched_lookahead (void); static tree rs6000_builtin_mask_for_load (void); static void def_builtin (int, const char *, tree, int); +static bool rs6000_vector_alignment_reachable (tree, bool); static void rs6000_init_builtins (void); static rtx rs6000_expand_unop_builtin (enum insn_code, tree, rtx); static rtx rs6000_expand_binop_builtin (enum insn_code, tree, rtx); @@ -915,6 +916,9 @@ static const char alt_reg_names[][8] = #undef TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD #define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD rs6000_builtin_mask_for_load +#undef TARGET_VECTOR_ALIGNMENT_REACHABLE +#define TARGET_VECTOR_ALIGNMENT_REACHABLE rs6000_vector_alignment_reachable + #undef TARGET_INIT_BUILTINS #define TARGET_INIT_BUILTINS rs6000_init_builtins @@ -1584,6 +1588,37 @@ rs6000_builtin_mask_for_load (void) return 0; } + +/* Return true iff, data reference of TYPE can reach vector alignment (16) + after applying N number of iterations. This routine does not determine + how may iterations are required to reach desired alignment. */ + +static bool +rs6000_vector_alignment_reachable (tree type ATTRIBUTE_UNUSED, bool is_packed) +{ + if (is_packed) + return false; + + if (TARGET_32BIT) + { + if (rs6000_alignment_flags == MASK_ALIGN_NATURAL) + return true; + + if (rs6000_alignment_flags == MASK_ALIGN_POWER) + return true; + + return false; + } + else + { + if (TARGET_MACHO) + return false; + + /* Assuming that all other types are naturally aligned. CHECKME! */ + return true; + } +} + /* Handle generic options of the form -mfoo=yes/no. NAME is the option name. VALUE is the option value. diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 23484098f790..e8eb20684688 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -1500,7 +1500,7 @@ && !s_operand (operands[1], VOIDmode)" [(set (match_dup 0) (match_dup 1))] { - rtx addr = operand_subword (operands[0], 1, 0, DFmode); + rtx addr = operand_subword (operands[0], 1, 0, TFmode); s390_load_address (addr, XEXP (operands[1], 0)); operands[1] = replace_equiv_address (operands[1], addr); }) @@ -5624,7 +5624,7 @@ "s390_match_ccmode(insn, CCTmode) && TARGET_64BIT" "@ xgr\t%0,%2 - xr\t%0,%2" + xg\t%0,%2" [(set_attr "op_type" "RRE,RXY")]) (define_insn "*xordi3_extimm" diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 34c036f01c17..39875472b86c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,66 @@ +2007-08-24 Jakub Jelinek + + PR c++/31941 + * error.c (resolve_virtual_fun_from_obj_type_ref): Handle + TARGET_VTABLE_USES_DESCRIPTORS targets properly. + + PR c++/32898 + * name-lookup.c (set_decl_namespace): lookup_qualified_name failure + is error_mark_node rather than NULL_TREE. + * pt.c (check_explicit_specialization): Likewise. + +2007-08-22 Jason Merrill + + PR c++/29365 + * pt.c (outermost_tinst_level): New function. + * lex.c (in_main_input_context): New function. + * cp-tree.h: Declare it. + * decl2.c (constrain_class_visibility): Use it to avoid warning + about uses of the anonymous namespace in the main input file. + +2007-08-20 Jakub Jelinek + + PR c++/32992 + * typeck.c (check_return_expr): Don't NRV optimize vars in + anonymous unions. + * decl.c (finish_function): Comment fix. + +2007-08-18 Paolo Carlini + + PR c++/32112 + * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE. + * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. + +2007-08-10 Paolo Carlini + + PR c++/17763 + * error.c (dump_expr): Consistently use the *_cxx_* + variants of the pretty-print functions. + +2007-07-30 Paolo Carlini + + PR c++/32108 + * semantics.c (finish_label_stmt): Reject the __label__ + extension outside function scopes. + +2007-07-28 Simon Martin + Mark Mitchell + + PR c++/30917 + * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be + hidden due to friend declarations in local classes. + +2007-07-27 Mark Mitchell + + PR c++/32346 + * call.c (convert_for_arg_passing): Only widen bitfields to their + declared types if necessary. + +2007-07-24 Paolo Carlini + + PR c++/30535 + * pt.c (unify): Never pass error_mark_node to template_decl_level. + 2007-07-19 Release Manager * GCC 4.2.1 released. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 862c3d0ecca1..848f3c894c8e 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4674,7 +4674,27 @@ type_passed_as (tree type) tree convert_for_arg_passing (tree type, tree val) { - val = convert_bitfield_to_declared_type (val); + tree bitfield_type; + + /* If VAL is a bitfield, then -- since it has already been converted + to TYPE -- it cannot have a precision greater than TYPE. + + If it has a smaller precision, we must widen it here. For + example, passing "int f:3;" to a function expecting an "int" will + not result in any conversion before this point. + + If the precision is the same we must not risk widening. For + example, the COMPONENT_REF for a 32-bit "long long" bitfield will + often have type "int", even though the C++ type for the field is + "long long". If the value is being passed to a function + expecting an "int", then no conversions will be required. But, + if we call convert_bitfield_to_declared_type, the bitfield will + be converted to "long long". */ + bitfield_type = is_bitfield_expr_with_lowered_type (val); + if (bitfield_type + && TYPE_PRECISION (TREE_TYPE (val)) < TYPE_PRECISION (type)) + val = convert_to_integer (TYPE_MAIN_VARIANT (bitfield_type), val); + if (val == error_mark_node) ; /* Pass classes with copy ctors by invisible reference. */ diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 9e0342a3903a..deea897c465b 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -4079,6 +4079,7 @@ extern void yyerror (const char *); extern void yyhook (int); extern bool cxx_init (void); extern void cxx_finish (void); +extern bool in_main_input_context (void); /* in method.c */ extern void init_method (void); @@ -4161,6 +4162,7 @@ extern tree build_non_dependent_args (tree); extern bool reregister_specialization (tree, tree, tree); extern tree fold_non_dependent_expr (tree); extern bool explicit_class_specialization_p (tree); +extern tree outermost_tinst_level (void); /* in repo.c */ extern void init_repo (void); diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index 5ceca61a4cb3..5f6150aab76a 100644 --- a/gcc/cp/cxx-pretty-print.c +++ b/gcc/cp/cxx-pretty-print.c @@ -204,6 +204,10 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t) pp_cxx_unqualified_id (pp, TEMPLATE_PARM_DECL (t)); break; + case UNBOUND_CLASS_TEMPLATE: + pp_cxx_unqualified_id (pp, TYPE_NAME (t)); + break; + default: pp_unsupported_tree (pp, t); break; diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 28e653b0751e..b837b1451538 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -11273,7 +11273,7 @@ finish_function (int flags) gcc_assert (stmts_are_full_exprs_p ()); /* Set up the named return value optimization, if we can. Candidate - variables are selected in check_return_value. */ + variables are selected in check_return_expr. */ if (current_function_return_value) { tree r = current_function_return_value; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 00bcc16b7a5a..310dc83159dd 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1860,9 +1860,12 @@ constrain_class_visibility (tree type) int subvis = type_visibility (ftype); if (subvis == VISIBILITY_ANON) - warning (0, "\ + { + if (!in_main_input_context ()) + warning (0, "\ %qT has a field %qD whose type uses the anonymous namespace", type, t); + } else if (IS_AGGR_TYPE (ftype) && vis < VISIBILITY_HIDDEN && subvis >= VISIBILITY_HIDDEN) @@ -1877,9 +1880,12 @@ constrain_class_visibility (tree type) int subvis = type_visibility (TREE_TYPE (t)); if (subvis == VISIBILITY_ANON) - warning (0, "\ + { + if (!in_main_input_context()) + warning (0, "\ %qT has a base %qT whose type uses the anonymous namespace", type, TREE_TYPE (t)); + } else if (vis < VISIBILITY_HIDDEN && subvis >= VISIBILITY_HIDDEN) warning (OPT_Wattributes, "\ diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 2962fe655f64..c169cabedb64 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -901,6 +901,10 @@ dump_decl (tree t, int flags) pp_type_id (cxx_pp, t); break; + case UNBOUND_CLASS_TEMPLATE: + dump_type (t, flags); + break; + default: pp_unsupported_tree (cxx_pp, t); /* Fall through to error. */ @@ -1301,10 +1305,14 @@ static tree resolve_virtual_fun_from_obj_type_ref (tree ref) { tree obj_type = TREE_TYPE (OBJ_TYPE_REF_OBJECT (ref)); - int index = tree_low_cst (OBJ_TYPE_REF_TOKEN (ref), 1); + HOST_WIDE_INT index = tree_low_cst (OBJ_TYPE_REF_TOKEN (ref), 1); tree fun = BINFO_VIRTUALS (TYPE_BINFO (TREE_TYPE (obj_type))); - while (index--) + while (index) + { fun = TREE_CHAIN (fun); + index -= (TARGET_VTABLE_USES_DESCRIPTORS + ? TARGET_VTABLE_USES_DESCRIPTORS : 1); + } return BV_FN (fun); } @@ -1420,13 +1428,13 @@ dump_expr (tree t, int flags) if (TREE_CODE (ob) == ADDR_EXPR) { dump_expr (TREE_OPERAND (ob, 0), flags | TFF_EXPR_IN_PARENS); - pp_dot (cxx_pp); + pp_cxx_dot (cxx_pp); } else if (TREE_CODE (ob) != PARM_DECL || strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this")) { dump_expr (ob, flags | TFF_EXPR_IN_PARENS); - pp_arrow (cxx_pp); + pp_cxx_arrow (cxx_pp); } args = TREE_CHAIN (args); } diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index d14a1baa926e..65dcd7d6023d 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -827,3 +827,18 @@ make_aggr_type (enum tree_code code) return t; } + +/* Returns true if we are currently in the main source file, or in a + template instantiation started from the main source file. */ + +bool +in_main_input_context (void) +{ + tree tl = outermost_tinst_level(); + + if (tl) + return strcmp (main_input_filename, + LOCATION_FILE (TINST_LOCATION (tl))) == 0; + else + return strcmp (main_input_filename, input_filename) == 0; +} diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 3016bb0ad560..744dd5c489ec 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -2924,7 +2924,7 @@ set_decl_namespace (tree decl, tree scope, bool friendp) /* See whether this has been declared in the namespace. */ old = lookup_qualified_name (scope, DECL_NAME (decl), false, true); - if (!old) + if (old == error_mark_node) /* No old declaration at all. */ goto complain; if (!is_overloaded_fn (decl)) @@ -3996,8 +3996,49 @@ lookup_name_real (tree name, int prefer_type, int nonclass, bool block_p, if (binding) { - /* Only namespace-scope bindings can be hidden. */ - gcc_assert (!hidden_name_p (binding)); + if (hidden_name_p (binding)) + { + /* A non namespace-scope binding can only be hidden if + we are in a local class, due to friend declarations. + In particular, consider: + + void f() { + struct A { + friend struct B; + void g() { B* b; } // error: B is hidden + } + struct B {}; + } + + The standard says that "B" is a local class in "f" + (but not nested within "A") -- but that name lookup + for "B" does not find this declaration until it is + declared directly with "f". + + In particular: + + [class.friend] + + If a friend declaration appears in a local class and + the name specified is an unqualified name, a prior + declaration is looked up without considering scopes + that are outside the innermost enclosing non-class + scope. For a friend class declaration, if there is no + prior declaration, the class that is specified + belongs to the innermost enclosing non-class scope, + but if it is subsequently referenced, its name is not + found by name lookup until a matching declaration is + provided in the innermost enclosing nonclass scope. + */ + gcc_assert (current_class_type && + LOCAL_CLASS_P (current_class_type)); + + /* This binding comes from a friend declaration in the local + class. The standard (11.4.8) states that the lookup can + only succeed if there is a non-hidden declaration in the + current scope, which is not the case here. */ + POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE); + } val = binding; break; } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 477265d49d0d..ac28afa4136f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1971,7 +1971,7 @@ check_explicit_specialization (tree declarator, context. */ fns = lookup_qualified_name (CP_DECL_CONTEXT (decl), dname, false, true); - if (!fns || !is_overloaded_fn (fns)) + if (fns == error_mark_node || !is_overloaded_fn (fns)) { error ("%qD is not a template function", dname); fns = error_mark_node; @@ -5288,6 +5288,15 @@ reopen_tinst_level (tree level) pop_tinst_level (); } +/* Returns the TINST_LEVEL which gives the original instantiation + context. */ + +tree +outermost_tinst_level (void) +{ + return tree_last (current_tinst_level); +} + /* DECL is a friend FUNCTION_DECL or TEMPLATE_DECL. ARGS is the vector of template arguments, as for tsubst. @@ -10453,6 +10462,8 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict) case TEMPLATE_TEMPLATE_PARM: case BOUND_TEMPLATE_TEMPLATE_PARM: tparm = TREE_VALUE (TREE_VEC_ELT (tparms, 0)); + if (tparm == error_mark_node) + return 1; if (TEMPLATE_TYPE_LEVEL (parm) != template_decl_level (tparm)) diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 8ad197858d0f..9c37b36cea34 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1320,8 +1320,13 @@ finish_label_stmt (tree name) void finish_label_decl (tree name) { - tree decl = declare_local_label (name); - add_decl_expr (decl); + if (!at_function_scope_p ()) + { + error ("__label__ declarations are only allowed in function scopes"); + return; + } + + add_decl_expr (declare_local_label (name)); } /* When DECL goes out of scope, make sure that CLEANUP is executed. */ diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 4ae2f073abde..6f0777274cef 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -6604,6 +6604,7 @@ check_return_expr (tree retval, bool *no_warning) && TREE_CODE (retval) == VAR_DECL && DECL_CONTEXT (retval) == current_function_decl && ! TREE_STATIC (retval) + && ! DECL_ANON_UNION_VAR_P (retval) && (DECL_ALIGN (retval) >= DECL_ALIGN (DECL_RESULT (current_function_decl))) && same_type_p ((TYPE_MAIN_VARIANT diff --git a/gcc/doc/contrib.texi b/gcc/doc/contrib.texi index 16c8af58de4b..7e3d4b11e170 100644 --- a/gcc/doc/contrib.texi +++ b/gcc/doc/contrib.texi @@ -513,6 +513,10 @@ patches. @item Robert Lipe for OpenServer support, new testsuites, testing, etc. +@item +Chen Liqin for various S+core related fixes/improvement, and for +maintaining the S+core port. + @item Weiwen Liu for testing and various bug fixes. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 30bb90f1b5b9..4416fd645b18 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -10065,6 +10065,43 @@ rtl_for_decl_init (tree init, tree type) else if (initializer_constant_valid_p (init, type) && ! walk_tree (&init, reference_to_unused, NULL, NULL)) { + /* Convert vector CONSTRUCTOR initializers to VECTOR_CST if + possible. */ + if (TREE_CODE (type) == VECTOR_TYPE) + switch (TREE_CODE (init)) + { + case VECTOR_CST: + break; + case CONSTRUCTOR: + if (TREE_CONSTANT (init)) + { + VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS (init); + bool constant_p = true; + tree value; + unsigned HOST_WIDE_INT ix; + + /* Even when ctor is constant, it might contain non-*_CST + elements (e.g. { 1.0/0.0 - 1.0/0.0, 0.0 }) and those don't + belong into VECTOR_CST nodes. */ + FOR_EACH_CONSTRUCTOR_VALUE (elts, ix, value) + if (!CONSTANT_CLASS_P (value)) + { + constant_p = false; + break; + } + + if (constant_p) + { + init = build_vector_from_ctor (type, elts); + break; + } + } + /* FALLTHRU */ + + default: + return NULL; + } + rtl = expand_expr (init, NULL_RTX, VOIDmode, EXPAND_INITIALIZER); /* If expand_expr returns a MEM, it wasn't immediate. */ @@ -13197,7 +13234,8 @@ gen_decl_die (tree decl, dw_die_ref context_die) was generated within the original definition of an inline function) we have to generate a special (abbreviated) DW_TAG_structure_type, DW_TAG_union_type, or DW_TAG_enumeration_type DIE here. */ - if (TYPE_DECL_IS_STUB (decl) && decl_ultimate_origin (decl) != NULL_TREE) + if (TYPE_DECL_IS_STUB (decl) && decl_ultimate_origin (decl) != NULL_TREE + && is_tagged_type (TREE_TYPE (decl))) { gen_tagged_type_instantiation_die (TREE_TYPE (decl), context_die); break; diff --git a/gcc/expr.c b/gcc/expr.c index c6bc4263b86d..1773fa179a8f 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -5654,7 +5654,6 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize, enum machine_mode mode = VOIDmode; tree offset = size_zero_node; tree bit_offset = bitsize_zero_node; - tree tem; /* First get the mode, signedness, and size. We do this from just the outermost expression. */ @@ -5690,6 +5689,8 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize, *pbitsize = tree_low_cst (size_tree, 1); } + *pmode = mode; + /* Compute cumulative bit-offset for nested component-refs and array-refs, and find the ultimate containing object. */ while (1) @@ -5774,21 +5775,69 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize, done: /* If OFFSET is constant, see if we can return the whole thing as a - constant bit position. Otherwise, split it up. */ - if (host_integerp (offset, 0) - && 0 != (tem = size_binop (MULT_EXPR, - fold_convert (bitsizetype, offset), - bitsize_unit_node)) - && 0 != (tem = size_binop (PLUS_EXPR, tem, bit_offset)) - && host_integerp (tem, 0)) - *pbitpos = tree_low_cst (tem, 0), *poffset = 0; - else - *pbitpos = tree_low_cst (bit_offset, 0), *poffset = offset; + constant bit position. Make sure to handle overflow during + this conversion. */ + if (host_integerp (offset, 0)) + { + double_int tem = double_int_mul (tree_to_double_int (offset), + uhwi_to_double_int (BITS_PER_UNIT)); + tem = double_int_add (tem, tree_to_double_int (bit_offset)); + if (double_int_fits_in_shwi_p (tem)) + { + *pbitpos = double_int_to_shwi (tem); + *poffset = NULL_TREE; + return exp; + } + } + + /* Otherwise, split it up. */ + *pbitpos = tree_low_cst (bit_offset, 0); + *poffset = offset; - *pmode = mode; return exp; } +/* Given an expression EXP that may be a COMPONENT_REF or an ARRAY_REF, + look for whether EXP or any nested component-refs within EXP is marked + as PACKED. */ + +bool +contains_packed_reference (tree exp) +{ + bool packed_p = false; + + while (1) + { + switch (TREE_CODE (exp)) + { + case COMPONENT_REF: + { + tree field = TREE_OPERAND (exp, 1); + packed_p = DECL_PACKED (field) + || TYPE_PACKED (TREE_TYPE (field)) + || TYPE_PACKED (TREE_TYPE (exp)); + if (packed_p) + goto done; + } + break; + + case BIT_FIELD_REF: + case ARRAY_REF: + case ARRAY_RANGE_REF: + case REALPART_EXPR: + case IMAGPART_EXPR: + case VIEW_CONVERT_EXPR: + break; + + default: + goto done; + } + exp = TREE_OPERAND (exp, 0); + } + done: + return packed_p; +} + /* Return a tree of sizetype representing the size, in bytes, of the element of EXP, an ARRAY_REF. */ diff --git a/gcc/fold-const.c b/gcc/fold-const.c index ea16eae741b7..0753caa15368 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -9387,6 +9387,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) /* ~X | X is -1. */ if (TREE_CODE (arg0) == BIT_NOT_EXPR + && INTEGRAL_TYPE_P (TREE_TYPE (arg1)) && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0)) { t1 = build_int_cst (type, -1); @@ -9396,6 +9397,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) /* X | ~X is -1. */ if (TREE_CODE (arg1) == BIT_NOT_EXPR + && INTEGRAL_TYPE_P (TREE_TYPE (arg0)) && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0)) { t1 = build_int_cst (type, -1); @@ -9503,6 +9505,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) /* ~X ^ X is -1. */ if (TREE_CODE (arg0) == BIT_NOT_EXPR + && INTEGRAL_TYPE_P (TREE_TYPE (arg1)) && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0)) { t1 = build_int_cst (type, -1); @@ -9512,6 +9515,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) /* X ^ ~X is -1. */ if (TREE_CODE (arg1) == BIT_NOT_EXPR + && INTEGRAL_TYPE_P (TREE_TYPE (arg0)) && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0)) { t1 = build_int_cst (type, -1); diff --git a/gcc/gimplify.c b/gcc/gimplify.c index e6c0d1f241db..80dcd1ac5f2a 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -3532,8 +3532,16 @@ gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value) gcc_assert (TREE_CODE (*expr_p) == MODIFY_EXPR || TREE_CODE (*expr_p) == INIT_EXPR); - /* For zero sized types only gimplify the left hand side and right hand side - as statements and throw away the assignment. */ + /* See if any simplifications can be done based on what the RHS is. */ + ret = gimplify_modify_expr_rhs (expr_p, from_p, to_p, pre_p, post_p, + want_value); + if (ret != GS_UNHANDLED) + return ret; + + /* For zero sized types only gimplify the left hand side and right hand + side as statements and throw away the assignment. Do this after + gimplify_modify_expr_rhs so we handle TARGET_EXPRs of addressable + types properly. */ if (zero_sized_type (TREE_TYPE (*from_p))) { gimplify_stmt (from_p); @@ -3544,12 +3552,6 @@ gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value) return GS_ALL_DONE; } - /* See if any simplifications can be done based on what the RHS is. */ - ret = gimplify_modify_expr_rhs (expr_p, from_p, to_p, pre_p, post_p, - want_value); - if (ret != GS_UNHANDLED) - return ret; - /* If the value being copied is of variable width, compute the length of the copy into a WITH_SIZE_EXPR. Note that we need to do this before gimplifying any of the operands so that we can resolve any diff --git a/gcc/reload1.c b/gcc/reload1.c index a2449da0969c..20da1b67b419 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -5451,7 +5451,14 @@ choose_reload_regs (struct insn_chain *chain) for (j = 0; j < n_reloads; j++) { reload_order[j] = j; - reload_spill_index[j] = -1; + if (rld[j].reg_rtx != NULL_RTX) + { + gcc_assert (REG_P (rld[j].reg_rtx) + && HARD_REGISTER_P (rld[j].reg_rtx)); + reload_spill_index[j] = REGNO (rld[j].reg_rtx); + } + else + reload_spill_index[j] = -1; if (rld[j].nregs > 1) { diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 10be1e18d767..b088d9208784 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -589,7 +589,8 @@ simplify_unary_operation_1 (enum rtx_code code, enum machine_mode mode, rtx op) /* (neg (lt x 0)) is (ashiftrt X C) if STORE_FLAG_VALUE is 1. */ /* (neg (lt x 0)) is (lshiftrt X C) if STORE_FLAG_VALUE is -1. */ if (GET_CODE (op) == LT - && XEXP (op, 1) == const0_rtx) + && XEXP (op, 1) == const0_rtx + && SCALAR_INT_MODE_P (GET_MODE (XEXP (op, 0)))) { enum machine_mode inner = GET_MODE (XEXP (op, 0)); int isize = GET_MODE_BITSIZE (inner); diff --git a/gcc/target-def.h b/gcc/target-def.h index 0361a788e8ae..653d6fd9b0ba 100644 --- a/gcc/target-def.h +++ b/gcc/target-def.h @@ -337,9 +337,12 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. TARGET_SCHED_SET_SCHED_FLAGS} #define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD 0 +#define TARGET_VECTOR_ALIGNMENT_REACHABLE \ + default_builtin_vector_alignment_reachable #define TARGET_VECTORIZE \ - {TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD} + {TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD, \ + TARGET_VECTOR_ALIGNMENT_REACHABLE} #define TARGET_DEFAULT_TARGET_FLAGS 0 diff --git a/gcc/target.h b/gcc/target.h index d0a38f2a59b1..f407bb7573df 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -375,6 +375,10 @@ struct gcc_target by the vectorizer, and return the decl of the target builtin function. */ tree (* builtin_mask_for_load) (void); + + /* Return true if vector alignment is reachable (by peeling N + interations) for the given type. */ + bool (* vector_alignment_reachable) (tree, bool); } vectorize; /* The initial value of target_flags. */ diff --git a/gcc/targhooks.c b/gcc/targhooks.c index b164c842b974..796bd2d6f3dc 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -604,4 +604,20 @@ default_reloc_rw_mask (void) return flag_pic ? 3 : 0; } +bool +default_builtin_vector_alignment_reachable (tree type, bool is_packed) +{ + if (is_packed) + return false; + + /* Assuming that types whose size is > pointer-size are not guaranteed to be + naturally aligned. */ + if (tree_int_cst_compare (TYPE_SIZE (type), bitsize_int (POINTER_SIZE)) > 0) + return false; + + /* Assuming that types whose size is <= pointer-size + are naturally aligned. */ + return true; +} + #include "gt-targhooks.h" diff --git a/gcc/targhooks.h b/gcc/targhooks.h index 7884f159ee44..7f990e9a138d 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -57,6 +57,8 @@ extern const char * default_invalid_within_doloop (rtx); extern bool default_narrow_bitfield (void); +extern bool default_builtin_vector_alignment_reachable (tree, bool); + /* These are here, and not in hooks.[ch], because not all users of hooks.h include tm.h, and thus we don't have CUMULATIVE_ARGS. */ diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 5b4a9a33c0be..722721ade929 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -743,7 +743,7 @@ find_phi_replacement_condition (struct loop *loop, if (TREE_CODE (*cond) == TRUTH_NOT_EXPR) /* We can be smart here and choose inverted condition without switching bbs. */ - *cond = invert_truthvalue (*cond); + *cond = invert_truthvalue (*cond); else /* Select non loop header bb. */ first_edge = second_edge; @@ -762,9 +762,11 @@ find_phi_replacement_condition (struct loop *loop, /* Create temp. for the condition. Vectorizer prefers to have gimple value as condition. Various targets use different means to communicate - condition in vector compare operation. Using gimple value allows compiler - to emit vector compare and select RTL without exposing compare's result. */ - *cond = force_gimple_operand (*cond, &new_stmts, false, NULL_TREE); + condition in vector compare operation. Using gimple value allows + compiler to emit vector compare and select RTL without exposing + compare's result. */ + *cond = force_gimple_operand (unshare_expr (*cond), &new_stmts, + false, NULL_TREE); if (new_stmts) bsi_insert_before (bsi, new_stmts, BSI_SAME_STMT); if (!is_gimple_reg (*cond) && !is_gimple_condexpr (*cond)) diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index d2bc09ba3b06..29811ca0ade7 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -4350,6 +4350,75 @@ intra_create_variable_infos (void) process_constraint (new_constraint (lhs, rhs)); } +/* Structure used to put solution bitmaps in a hashtable so they can + be shared among variables with the same points-to set. */ + +typedef struct shared_bitmap_info +{ + bitmap pt_vars; + hashval_t hashcode; +} *shared_bitmap_info_t; + +static htab_t shared_bitmap_table; + +/* Hash function for a shared_bitmap_info_t */ + +static hashval_t +shared_bitmap_hash (const void *p) +{ + const shared_bitmap_info_t bi = (shared_bitmap_info_t) p; + return bi->hashcode; +} + +/* Equality function for two shared_bitmap_info_t's. */ + +static int +shared_bitmap_eq (const void *p1, const void *p2) +{ + const shared_bitmap_info_t sbi1 = (shared_bitmap_info_t) p1; + const shared_bitmap_info_t sbi2 = (shared_bitmap_info_t) p2; + return bitmap_equal_p (sbi1->pt_vars, sbi2->pt_vars); +} + +/* Lookup a bitmap in the shared bitmap hashtable, and return an already + existing instance if there is one, NULL otherwise. */ + +static bitmap +shared_bitmap_lookup (bitmap pt_vars) +{ + void **slot; + struct shared_bitmap_info sbi; + + sbi.pt_vars = pt_vars; + sbi.hashcode = bitmap_hash (pt_vars); + + slot = htab_find_slot_with_hash (shared_bitmap_table, &sbi, + sbi.hashcode, NO_INSERT); + if (!slot) + return NULL; + else + return ((shared_bitmap_info_t) *slot)->pt_vars; +} + + +/* Add a bitmap to the shared bitmap hashtable. */ + +static void +shared_bitmap_add (bitmap pt_vars) +{ + void **slot; + shared_bitmap_info_t sbi = XNEW (struct shared_bitmap_info); + + sbi->pt_vars = pt_vars; + sbi->hashcode = bitmap_hash (pt_vars); + + slot = htab_find_slot_with_hash (shared_bitmap_table, sbi, + sbi->hashcode, INSERT); + gcc_assert (!*slot); + *slot = (void *) sbi; +} + + /* Set bits in INTO corresponding to the variable uids in solution set FROM, which came from variable PTR. For variables that are actually dereferenced, we also use type @@ -4460,7 +4529,9 @@ find_what_p_points_to (tree p) struct ptr_info_def *pi = get_ptr_info (p); unsigned int i; bitmap_iterator bi; - + bitmap finished_solution; + bitmap result; + /* This variable may have been collapsed, let's get the real variable. */ vi = get_varinfo (find (vi->id)); @@ -4492,10 +4563,20 @@ find_what_p_points_to (tree p) if (pi->pt_anything) return false; - if (!pi->pt_vars) - pi->pt_vars = BITMAP_GGC_ALLOC (); + finished_solution = BITMAP_GGC_ALLOC (); + set_uids_in_ptset (vi->decl, finished_solution, vi->solution); + result = shared_bitmap_lookup (finished_solution); - set_uids_in_ptset (vi->decl, pi->pt_vars, vi->solution); + if (!result) + { + shared_bitmap_add (finished_solution); + pi->pt_vars = finished_solution; + } + else + { + pi->pt_vars = result; + bitmap_clear (finished_solution); + } if (bitmap_empty_p (pi->pt_vars)) pi->pt_vars = NULL; @@ -4691,6 +4772,8 @@ init_alias_vars (void) vi_for_tree = pointer_map_create (); memset (&stats, 0, sizeof (stats)); + shared_bitmap_table = htab_create (511, shared_bitmap_hash, + shared_bitmap_eq, free); init_base_vars (); } @@ -4923,6 +5006,7 @@ delete_points_to_sets (void) varinfo_t v; int i; + htab_delete (shared_bitmap_table); if (dump_file && (dump_flags & TDF_STATS)) fprintf (dump_file, "Points to sets created:%d\n", stats.points_to_sets_created); diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c index f247cd9ab31f..17cb9de1e5fc 100644 --- a/gcc/tree-vect-analyze.c +++ b/gcc/tree-vect-analyze.c @@ -25,6 +25,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tm.h" #include "ggc.h" #include "tree.h" +#include "target.h" #include "basic-block.h" #include "diagnostic.h" #include "tree-flow.h" @@ -911,6 +912,57 @@ vect_verify_datarefs_alignment (loop_vec_info loop_vinfo) } +/* Function vector_alignment_reachable_p + + Return true if vector alignment for DR is reachable by peeling + a few loop iterations. Return false otherwise. */ + +static bool +vector_alignment_reachable_p (struct data_reference *dr) +{ + tree stmt = DR_STMT (dr); + stmt_vec_info stmt_info = vinfo_for_stmt (stmt); + tree vectype = STMT_VINFO_VECTYPE (stmt_info); + + /* If misalignment is known at the compile time then allow peeling + only if natural alignment is reachable through peeling. */ + if (known_alignment_for_access_p (dr) && !aligned_access_p (dr)) + { + HOST_WIDE_INT elmsize = + int_cst_value (TYPE_SIZE_UNIT (TREE_TYPE (vectype))); + if (vect_print_dump_info (REPORT_DETAILS)) + { + fprintf (vect_dump, "data size =" HOST_WIDE_INT_PRINT_DEC, elmsize); + fprintf (vect_dump, ". misalignment = %d. ", DR_MISALIGNMENT (dr)); + } + if (DR_MISALIGNMENT (dr) % elmsize) + { + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "data size does not divide the misalignment.\n"); + return false; + } + } + + if (!known_alignment_for_access_p (dr)) + { + tree type = (TREE_TYPE (DR_REF (dr))); + tree ba = DR_BASE_OBJECT (dr); + bool is_packed = false; + + if (ba) + is_packed = contains_packed_reference (ba); + + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "Unknown misalignment, is_packed = %d",is_packed); + if (targetm.vectorize.vector_alignment_reachable (type, is_packed)) + return true; + else + return false; + } + + return true; +} + /* Function vect_enhance_data_refs_alignment This pass will use loop versioning and loop peeling in order to enhance @@ -1056,8 +1108,11 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) for (i = 0; VEC_iterate (data_reference_p, datarefs, i, dr); i++) if (!DR_IS_READ (dr) && !aligned_access_p (dr)) { - dr0 = dr; - do_peeling = true; + do_peeling = vector_alignment_reachable_p (dr); + if (do_peeling) + dr0 = dr; + if (!do_peeling && vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "vector alignment may not be reachable"); break; } diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 9ac11b07bd35..1c57c59ebb9b 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -499,8 +499,9 @@ vect_pattern_recog_1 ( || (icode = optab->handlers[(int) vec_mode].insn_code) == CODE_FOR_nothing || (type_out - && (insn_data[icode].operand[0].mode != - TYPE_MODE (get_vectype_for_scalar_type (type_out))))) + && (!get_vectype_for_scalar_type (type_out) + || (insn_data[icode].operand[0].mode != + TYPE_MODE (get_vectype_for_scalar_type (type_out)))))) return; } diff --git a/gcc/tree.c b/gcc/tree.c index 90b860ce1afb..a4f0616323bc 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4540,7 +4540,8 @@ host_integerp (tree t, int pos) && (HOST_WIDE_INT) TREE_INT_CST_LOW (t) >= 0) || (! pos && TREE_INT_CST_HIGH (t) == -1 && (HOST_WIDE_INT) TREE_INT_CST_LOW (t) < 0 - && !TYPE_UNSIGNED (TREE_TYPE (t))) + && (!TYPE_UNSIGNED (TREE_TYPE (t)) + || TYPE_IS_SIZETYPE (TREE_TYPE (t)))) || (pos && TREE_INT_CST_HIGH (t) == 0))); } diff --git a/gcc/tree.h b/gcc/tree.h index 760a4507c228..7861514dc26b 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -4112,6 +4112,12 @@ extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *, tree *, enum machine_mode *, int *, int *, bool); +/* Given an expression EXP that may be a COMPONENT_REF or an ARRAY_REF, + look for whether EXP or any nested component-refs within EXP is marked + as PACKED. */ + +extern bool contains_packed_reference (tree exp); + /* Return 1 if T is an expression that get_inner_reference handles. */ extern int handled_component_p (tree); diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog index 7aa047877ffc..d915bcf66fbe 100644 --- a/libstdc++/ChangeLog +++ b/libstdc++/ChangeLog @@ -1,3 +1,18 @@ +2007-08-28 Paolo Carlini + + PR libstdc++/33128 + * include/tr1/random (uniform_int<>::_M_call): Deal with + __urng() returning negative values. + * testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc: + New. + +2007-08-17 Johannes Willkomm + + PR libstdc++/33084 + * include/std/valarray (operator _Op(const _Tp&, + const valarray<>&)): Fix typo. + * testsuite/26_numerics/numeric_arrays/valarray/33084.cc: New. + 2007-07-19 Release Manager * GCC 4.2.1 released. diff --git a/libstdc++/include/std/std_valarray.h b/libstdc++/include/std/std_valarray.h index 87f30ec4e028..6ef21500fc67 100644 --- a/libstdc++/include/std/std_valarray.h +++ b/libstdc++/include/std/std_valarray.h @@ -1010,7 +1010,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, __shift_right) { \ typedef _BinClos<_Name, _Constant, _ValArray, _Tp, _Tp> _Closure; \ typedef typename __fun<_Name, _Tp>::result_type _Rt; \ - return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \ + return _Expr<_Closure, _Rt>(_Closure(__t, __v)); \ } _DEFINE_BINARY_OPERATOR(+, __plus) diff --git a/libstdc++/include/tr1/random b/libstdc++/include/tr1/random index 56ea508575d3..c97f16d2a2d7 100644 --- a/libstdc++/include/tr1/random +++ b/libstdc++/include/tr1/random @@ -1618,7 +1618,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) result_type _M_call(_UniformRandomNumberGenerator& __urng, result_type __min, result_type __max, true_type) - { return result_type(__urng() % (__max - __min + 1)) + __min; } + { + typedef typename __gnu_cxx::__add_unsigned::__type __utype; + return result_type(__utype(__urng()) % (__max - __min + 1)) + __min; + } template result_type From c9b786fcbf803f8ebc30140cfec779f70d048516 Mon Sep 17 00:00:00 2001 From: obrien Date: Tue, 22 May 2012 16:46:54 +0000 Subject: [PATCH 3/5] Catch up with r220755 so it can be re-merged into HEAD. --- gcc/doc/objc.texi | 478 -- gcc/objc/ChangeLog | 957 ---- gcc/objc/Make-lang.in | 142 - gcc/objc/README | 97 - gcc/objc/config-lang.in | 40 - gcc/objc/lang-specs.h | 54 - gcc/objc/objc-act.c | 9518 ------------------------------------ gcc/objc/objc-act.h | 457 -- gcc/objc/objc-lang.c | 133 - gcc/objc/objc-tree.def | 47 - libobjc/ChangeLog | 1272 ----- libobjc/Makefile.in | 376 -- libobjc/NXConstStr.m | 42 - libobjc/Object.m | 386 -- libobjc/Protocol.m | 182 - libobjc/README | 104 - libobjc/README.threads | 50 - libobjc/THREADS | 377 -- libobjc/THREADS.MACH | 23 - libobjc/acinclude.m4 | 24 - libobjc/aclocal.m4 | 158 - libobjc/archive.c | 1668 ------- libobjc/class.c | 703 --- libobjc/config.h.in | 58 - libobjc/configure | 6595 ------------------------- libobjc/configure.ac | 296 -- libobjc/encoding.c | 1083 ---- libobjc/exception.c | 376 -- libobjc/gc.c | 454 -- libobjc/hash.c | 283 -- libobjc/init.c | 894 ---- libobjc/libobjc.def | 170 - libobjc/libobjc_entry.c | 55 - libobjc/linking.m | 40 - libobjc/makefile.dos | 56 - libobjc/misc.c | 185 - libobjc/nil_method.c | 55 - libobjc/objc/NXConstStr.h | 52 - libobjc/objc/Object.h | 132 - libobjc/objc/Protocol.h | 63 - libobjc/objc/encoding.h | 107 - libobjc/objc/hash.h | 216 - libobjc/objc/objc-api.h | 626 --- libobjc/objc/objc-decls.h | 47 - libobjc/objc/objc-list.h | 156 - libobjc/objc/objc.h | 165 - libobjc/objc/runtime.h | 96 - libobjc/objc/sarray.h | 244 - libobjc/objc/thr.h | 153 - libobjc/objc/typedstream.h | 141 - libobjc/objects.c | 103 - libobjc/sarray.c | 518 -- libobjc/selector.c | 490 -- libobjc/sendmsg.c | 701 --- libobjc/thr-dce.c | 281 -- libobjc/thr-decosf1.c | 281 -- libobjc/thr-irix.c | 235 - libobjc/thr-mach.c | 313 -- libobjc/thr-objc.c | 192 - libobjc/thr-os2.c | 267 - libobjc/thr-posix.c | 318 -- libobjc/thr-pthreads.c | 218 - libobjc/thr-rtems.c | 194 - libobjc/thr-single.c | 192 - libobjc/thr-solaris.c | 259 - libobjc/thr-vxworks.c | 192 - libobjc/thr-win32.c | 272 -- libobjc/thr.c | 563 --- 68 files changed, 35675 deletions(-) delete mode 100644 gcc/doc/objc.texi delete mode 100644 gcc/objc/ChangeLog delete mode 100644 gcc/objc/Make-lang.in delete mode 100644 gcc/objc/README delete mode 100644 gcc/objc/config-lang.in delete mode 100644 gcc/objc/lang-specs.h delete mode 100644 gcc/objc/objc-act.c delete mode 100644 gcc/objc/objc-act.h delete mode 100644 gcc/objc/objc-lang.c delete mode 100644 gcc/objc/objc-tree.def delete mode 100644 libobjc/ChangeLog delete mode 100644 libobjc/Makefile.in delete mode 100644 libobjc/NXConstStr.m delete mode 100644 libobjc/Object.m delete mode 100644 libobjc/Protocol.m delete mode 100644 libobjc/README delete mode 100644 libobjc/README.threads delete mode 100644 libobjc/THREADS delete mode 100644 libobjc/THREADS.MACH delete mode 100644 libobjc/acinclude.m4 delete mode 100644 libobjc/aclocal.m4 delete mode 100644 libobjc/archive.c delete mode 100644 libobjc/class.c delete mode 100644 libobjc/config.h.in delete mode 100755 libobjc/configure delete mode 100644 libobjc/configure.ac delete mode 100644 libobjc/encoding.c delete mode 100644 libobjc/exception.c delete mode 100644 libobjc/gc.c delete mode 100644 libobjc/hash.c delete mode 100644 libobjc/init.c delete mode 100644 libobjc/libobjc.def delete mode 100644 libobjc/libobjc_entry.c delete mode 100644 libobjc/linking.m delete mode 100644 libobjc/makefile.dos delete mode 100644 libobjc/misc.c delete mode 100644 libobjc/nil_method.c delete mode 100644 libobjc/objc/NXConstStr.h delete mode 100644 libobjc/objc/Object.h delete mode 100644 libobjc/objc/Protocol.h delete mode 100644 libobjc/objc/encoding.h delete mode 100644 libobjc/objc/hash.h delete mode 100644 libobjc/objc/objc-api.h delete mode 100644 libobjc/objc/objc-decls.h delete mode 100644 libobjc/objc/objc-list.h delete mode 100644 libobjc/objc/objc.h delete mode 100644 libobjc/objc/runtime.h delete mode 100644 libobjc/objc/sarray.h delete mode 100644 libobjc/objc/thr.h delete mode 100644 libobjc/objc/typedstream.h delete mode 100644 libobjc/objects.c delete mode 100644 libobjc/sarray.c delete mode 100644 libobjc/selector.c delete mode 100644 libobjc/sendmsg.c delete mode 100644 libobjc/thr-dce.c delete mode 100644 libobjc/thr-decosf1.c delete mode 100644 libobjc/thr-irix.c delete mode 100644 libobjc/thr-mach.c delete mode 100644 libobjc/thr-objc.c delete mode 100644 libobjc/thr-os2.c delete mode 100644 libobjc/thr-posix.c delete mode 100644 libobjc/thr-pthreads.c delete mode 100644 libobjc/thr-rtems.c delete mode 100644 libobjc/thr-single.c delete mode 100644 libobjc/thr-solaris.c delete mode 100644 libobjc/thr-vxworks.c delete mode 100644 libobjc/thr-win32.c delete mode 100644 libobjc/thr.c diff --git a/gcc/doc/objc.texi b/gcc/doc/objc.texi deleted file mode 100644 index c15c1acf8484..000000000000 --- a/gcc/doc/objc.texi +++ /dev/null @@ -1,478 +0,0 @@ -@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -@c 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -@c This is part of the GCC manual. -@c For copying conditions, see the file gcc.texi. - -@node Objective-C -@comment node-name, next, previous, up - -@chapter GNU Objective-C runtime features - -This document is meant to describe some of the GNU Objective-C runtime -features. It is not intended to teach you Objective-C, there are several -resources on the Internet that present the language. Questions and -comments about this document to Ovidiu Predescu -@email{ovidiu@@cup.hp.com}. - -@menu -* Executing code before main:: -* Type encoding:: -* Garbage Collection:: -* Constant string objects:: -* compatibility_alias:: -@end menu - -@node Executing code before main, Type encoding, Objective-C, Objective-C -@section @code{+load}: Executing code before main - -The GNU Objective-C runtime provides a way that allows you to execute -code before the execution of the program enters the @code{main} -function. The code is executed on a per-class and a per-category basis, -through a special class method @code{+load}. - -This facility is very useful if you want to initialize global variables -which can be accessed by the program directly, without sending a message -to the class first. The usual way to initialize global variables, in the -@code{+initialize} method, might not be useful because -@code{+initialize} is only called when the first message is sent to a -class object, which in some cases could be too late. - -Suppose for example you have a @code{FileStream} class that declares -@code{Stdin}, @code{Stdout} and @code{Stderr} as global variables, like -below: - -@smallexample - -FileStream *Stdin = nil; -FileStream *Stdout = nil; -FileStream *Stderr = nil; - -@@implementation FileStream - -+ (void)initialize -@{ - Stdin = [[FileStream new] initWithFd:0]; - Stdout = [[FileStream new] initWithFd:1]; - Stderr = [[FileStream new] initWithFd:2]; -@} - -/* @r{Other methods here} */ -@@end - -@end smallexample - -In this example, the initialization of @code{Stdin}, @code{Stdout} and -@code{Stderr} in @code{+initialize} occurs too late. The programmer can -send a message to one of these objects before the variables are actually -initialized, thus sending messages to the @code{nil} object. The -@code{+initialize} method which actually initializes the global -variables is not invoked until the first message is sent to the class -object. The solution would require these variables to be initialized -just before entering @code{main}. - -The correct solution of the above problem is to use the @code{+load} -method instead of @code{+initialize}: - -@smallexample - -@@implementation FileStream - -+ (void)load -@{ - Stdin = [[FileStream new] initWithFd:0]; - Stdout = [[FileStream new] initWithFd:1]; - Stderr = [[FileStream new] initWithFd:2]; -@} - -/* @r{Other methods here} */ -@@end - -@end smallexample - -The @code{+load} is a method that is not overridden by categories. If a -class and a category of it both implement @code{+load}, both methods are -invoked. This allows some additional initializations to be performed in -a category. - -This mechanism is not intended to be a replacement for @code{+initialize}. -You should be aware of its limitations when you decide to use it -instead of @code{+initialize}. - -@menu -* What you can and what you cannot do in +load:: -@end menu - - -@node What you can and what you cannot do in +load, , Executing code before main, Executing code before main -@subsection What you can and what you cannot do in @code{+load} - -The @code{+load} implementation in the GNU runtime guarantees you the following -things: - -@itemize @bullet - -@item -you can write whatever C code you like; - -@item -you can send messages to Objective-C constant strings (@code{@@"this is a -constant string"}); - -@item -you can allocate and send messages to objects whose class is implemented -in the same file; - -@item -the @code{+load} implementation of all super classes of a class are executed before the @code{+load} of that class is executed; - -@item -the @code{+load} implementation of a class is executed before the -@code{+load} implementation of any category. - -@end itemize - -In particular, the following things, even if they can work in a -particular case, are not guaranteed: - -@itemize @bullet - -@item -allocation of or sending messages to arbitrary objects; - -@item -allocation of or sending messages to objects whose classes have a -category implemented in the same file; - -@end itemize - -You should make no assumptions about receiving @code{+load} in sibling -classes when you write @code{+load} of a class. The order in which -sibling classes receive @code{+load} is not guaranteed. - -The order in which @code{+load} and @code{+initialize} are called could -be problematic if this matters. If you don't allocate objects inside -@code{+load}, it is guaranteed that @code{+load} is called before -@code{+initialize}. If you create an object inside @code{+load} the -@code{+initialize} method of object's class is invoked even if -@code{+load} was not invoked. Note if you explicitly call @code{+load} -on a class, @code{+initialize} will be called first. To avoid possible -problems try to implement only one of these methods. - -The @code{+load} method is also invoked when a bundle is dynamically -loaded into your running program. This happens automatically without any -intervening operation from you. When you write bundles and you need to -write @code{+load} you can safely create and send messages to objects whose -classes already exist in the running program. The same restrictions as -above apply to classes defined in bundle. - - - -@node Type encoding, Garbage Collection, Executing code before main, Objective-C -@section Type encoding - -The Objective-C compiler generates type encodings for all the -types. These type encodings are used at runtime to find out information -about selectors and methods and about objects and classes. - -The types are encoded in the following way: - -@c @sp 1 - -@multitable @columnfractions .25 .75 -@item @code{_Bool} -@tab @code{B} -@item @code{char} -@tab @code{c} -@item @code{unsigned char} -@tab @code{C} -@item @code{short} -@tab @code{s} -@item @code{unsigned short} -@tab @code{S} -@item @code{int} -@tab @code{i} -@item @code{unsigned int} -@tab @code{I} -@item @code{long} -@tab @code{l} -@item @code{unsigned long} -@tab @code{L} -@item @code{long long} -@tab @code{q} -@item @code{unsigned long long} -@tab @code{Q} -@item @code{float} -@tab @code{f} -@item @code{double} -@tab @code{d} -@item @code{void} -@tab @code{v} -@item @code{id} -@tab @code{@@} -@item @code{Class} -@tab @code{#} -@item @code{SEL} -@tab @code{:} -@item @code{char*} -@tab @code{*} -@item unknown type -@tab @code{?} -@item Complex types -@tab @code{j} followed by the inner type. For example @code{_Complex double} is encoded as "jd". -@item bit-fields -@tab @code{b} followed by the starting position of the bit-field, the type of the bit-field and the size of the bit-field (the bit-fields encoding was changed from the NeXT's compiler encoding, see below) -@end multitable - -@c @sp 1 - -The encoding of bit-fields has changed to allow bit-fields to be properly -handled by the runtime functions that compute sizes and alignments of -types that contain bit-fields. The previous encoding contained only the -size of the bit-field. Using only this information it is not possible to -reliably compute the size occupied by the bit-field. This is very -important in the presence of the Boehm's garbage collector because the -objects are allocated using the typed memory facility available in this -collector. The typed memory allocation requires information about where -the pointers are located inside the object. - -The position in the bit-field is the position, counting in bits, of the -bit closest to the beginning of the structure. - -The non-atomic types are encoded as follows: - -@c @sp 1 - -@multitable @columnfractions .2 .8 -@item pointers -@tab @samp{^} followed by the pointed type. -@item arrays -@tab @samp{[} followed by the number of elements in the array followed by the type of the elements followed by @samp{]} -@item structures -@tab @samp{@{} followed by the name of the structure (or @samp{?} if the structure is unnamed), the @samp{=} sign, the type of the members and by @samp{@}} -@item unions -@tab @samp{(} followed by the name of the structure (or @samp{?} if the union is unnamed), the @samp{=} sign, the type of the members followed by @samp{)} -@end multitable - -Here are some types and their encodings, as they are generated by the -compiler on an i386 machine: - -@sp 1 - -@multitable @columnfractions .25 .75 -@item Objective-C type -@tab Compiler encoding -@item -@smallexample -int a[10]; -@end smallexample -@tab @code{[10i]} -@item -@smallexample -struct @{ - int i; - float f[3]; - int a:3; - int b:2; - char c; -@} -@end smallexample -@tab @code{@{?=i[3f]b128i3b131i2c@}} -@end multitable - -@sp 1 - -In addition to the types the compiler also encodes the type -specifiers. The table below describes the encoding of the current -Objective-C type specifiers: - -@sp 1 - -@multitable @columnfractions .25 .75 -@item Specifier -@tab Encoding -@item @code{const} -@tab @code{r} -@item @code{in} -@tab @code{n} -@item @code{inout} -@tab @code{N} -@item @code{out} -@tab @code{o} -@item @code{bycopy} -@tab @code{O} -@item @code{oneway} -@tab @code{V} -@end multitable - -@sp 1 - -The type specifiers are encoded just before the type. Unlike types -however, the type specifiers are only encoded when they appear in method -argument types. - - -@node Garbage Collection, Constant string objects, Type encoding, Objective-C -@section Garbage Collection - -Support for a new memory management policy has been added by using a -powerful conservative garbage collector, known as the -Boehm-Demers-Weiser conservative garbage collector. It is available from -@w{@uref{http://www.hpl.hp.com/personal/Hans_Boehm/gc/}}. - -To enable the support for it you have to configure the compiler using an -additional argument, @w{@option{--enable-objc-gc}}. You need to have -garbage collector installed before building the compiler. This will -build an additional runtime library which has several enhancements to -support the garbage collector. The new library has a new name, -@file{libobjc_gc.a} to not conflict with the non-garbage-collected -library. - -When the garbage collector is used, the objects are allocated using the -so-called typed memory allocation mechanism available in the -Boehm-Demers-Weiser collector. This mode requires precise information on -where pointers are located inside objects. This information is computed -once per class, immediately after the class has been initialized. - -There is a new runtime function @code{class_ivar_set_gcinvisible()} -which can be used to declare a so-called @dfn{weak pointer} -reference. Such a pointer is basically hidden for the garbage collector; -this can be useful in certain situations, especially when you want to -keep track of the allocated objects, yet allow them to be -collected. This kind of pointers can only be members of objects, you -cannot declare a global pointer as a weak reference. Every type which is -a pointer type can be declared a weak pointer, including @code{id}, -@code{Class} and @code{SEL}. - -Here is an example of how to use this feature. Suppose you want to -implement a class whose instances hold a weak pointer reference; the -following class does this: - -@smallexample - -@@interface WeakPointer : Object -@{ - const void* weakPointer; -@} - -- initWithPointer:(const void*)p; -- (const void*)weakPointer; -@@end - - -@@implementation WeakPointer - -+ (void)initialize -@{ - class_ivar_set_gcinvisible (self, "weakPointer", YES); -@} - -- initWithPointer:(const void*)p -@{ - weakPointer = p; - return self; -@} - -- (const void*)weakPointer -@{ - return weakPointer; -@} - -@@end - -@end smallexample - -Weak pointers are supported through a new type character specifier -represented by the @samp{!} character. The -@code{class_ivar_set_gcinvisible()} function adds or removes this -specifier to the string type description of the instance variable named -as argument. - -@c ========================================================================= -@node Constant string objects -@section Constant string objects - -GNU Objective-C provides constant string objects that are generated -directly by the compiler. You declare a constant string object by -prefixing a C constant string with the character @samp{@@}: - -@smallexample - id myString = @@"this is a constant string object"; -@end smallexample - -The constant string objects are by default instances of the -@code{NXConstantString} class which is provided by the GNU Objective-C -runtime. To get the definition of this class you must include the -@file{objc/NXConstStr.h} header file. - -User defined libraries may want to implement their own constant string -class. To be able to support them, the GNU Objective-C compiler provides -a new command line options @option{-fconstant-string-class=@var{class-name}}. -The provided class should adhere to a strict structure, the same -as @code{NXConstantString}'s structure: - -@smallexample - -@@interface MyConstantStringClass -@{ - Class isa; - char *c_string; - unsigned int len; -@} -@@end - -@end smallexample - -@code{NXConstantString} inherits from @code{Object}; user class -libraries may choose to inherit the customized constant string class -from a different class than @code{Object}. There is no requirement in -the methods the constant string class has to implement, but the final -ivar layout of the class must be the compatible with the given -structure. - -When the compiler creates the statically allocated constant string -object, the @code{c_string} field will be filled by the compiler with -the string; the @code{length} field will be filled by the compiler with -the string length; the @code{isa} pointer will be filled with -@code{NULL} by the compiler, and it will later be fixed up automatically -at runtime by the GNU Objective-C runtime library to point to the class -which was set by the @option{-fconstant-string-class} option when the -object file is loaded (if you wonder how it works behind the scenes, the -name of the class to use, and the list of static objects to fixup, are -stored by the compiler in the object file in a place where the GNU -runtime library will find them at runtime). - -As a result, when a file is compiled with the -@option{-fconstant-string-class} option, all the constant string objects -will be instances of the class specified as argument to this option. It -is possible to have multiple compilation units referring to different -constant string classes, neither the compiler nor the linker impose any -restrictions in doing this. - -@c ========================================================================= -@node compatibility_alias -@section compatibility_alias - -This is a feature of the Objective-C compiler rather than of the -runtime, anyway since it is documented nowhere and its existence was -forgotten, we are documenting it here. - -The keyword @code{@@compatibility_alias} allows you to define a class name -as equivalent to another class name. For example: - -@smallexample -@@compatibility_alias WOApplication GSWApplication; -@end smallexample - -tells the compiler that each time it encounters @code{WOApplication} as -a class name, it should replace it with @code{GSWApplication} (that is, -@code{WOApplication} is just an alias for @code{GSWApplication}). - -There are some constraints on how this can be used--- - -@itemize @bullet - -@item @code{WOApplication} (the alias) must not be an existing class; - -@item @code{GSWApplication} (the real class) must be an existing class. - -@end itemize diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog deleted file mode 100644 index 7ce174f135a5..000000000000 --- a/gcc/objc/ChangeLog +++ /dev/null @@ -1,957 +0,0 @@ -2007-07-19 Release Manager - - * GCC 4.2.1 released. - -2007-05-13 Release Manager - - * GCC 4.2.0 released. - -2007-01-23 Andrew Pinski - - PR objc/27438 - * objc-act.c (objc_add_static_instance): Mark the decl as - TREE_USED. - -2007-01-20 Andrew Pinski - - PR objc/30479 - * objc-act.c (hash_interface): Use IDENTIFIER_HASH_VALUE instead - of htab_hash_pointer. - (lookup_interface): Likewise. - (add_class): Likewise. - -2006-10-10 Brooks Moses - - * Make-lang.in: Added empty "objc.pdf" target. - -2006-09-26 Andrew Pinski - - PR objc/29195 - * objc-act.c (objc_push_parm): If we change the type of the - decl, relayout the decl. - -2006-09-19 Eric Christopher - - * objc-act.c (JBLEN): Rename to OBJC_JBLEN, - default to something innocuous. - (build_next_objc_exception_stuff): Rename JBLEN. - -2006-07-28 Volker Reichelt - - * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies. - -2006-07-19 Volker Reichelt - - PR obj-c++/28434 - * objc-act.c (lookup_and_install_protocols): Skip error_mark_nodes. - -2006-06-06 Mike Stump - - * objc-act.c: Remove prototype for objc_build_volatilized_type. - -2006-05-24 Mike Stump - - * objc-act.c (build_next_objc_exception_stuff): Use JBLEN instead of _JBLEN. - -2006-05-05 Volker Reichelt - - PR objc/27240 - * objc-act.c (objc_is_public): Return early on invalid type. - -2006-03-02 Fariborz Jahanian - - * objc-act.c (init_module_descriptor): Remove file name from - module descriptor. - (gen_type_name_0): Fix ICE when issuing warning. - -2006-02-20 Rafael Ávila de Espíndola - * Make-lang.in (OBJC): Remove - (OBJECTIVE-C): Remove - (objective-c): Remove - (.PHONY): Remove objective-c and ObjC - -2005-12-14 Andrew Pinski - - PR objc/25360 - * objc/objc-act.c (encode_type): Encode Complex types as 'j' followed - by the inner type. - -2005-12-12 Andrew Pinski - - PR objc/25348 - * objc-act.c (encode_array): Handle arrays to zero sized types. - -2005-12-07 Rafael Ávila de Espíndola - - * Make-lang.in (objc.all.build, objc.install-normal): Remove. - -2005-12-07 Rafael Ávila de Espíndola - - * Make-lang.in: Remove all dependencies on s-gtype. - -2005-12-02 Richard Guenther - - * objc-act.c (objc_build_exc_ptr, next_sjlj_build_enter_and_setjmp - next_sjlj_build_exc_extract, next_sjlj_build_catch_list, - next_sjlj_build_try_catch_finally, objc_begin_catch_clause, - build_objc_method_call, objc_rewrite_function_call): Use buildN - instead of build. - -2005-10-20 Geoffrey Keating - - * objc-act.c (synth_module_prologue): Clear TREE_NOTHROW - on objc_msgSend and like builtin functions. - -2005-10-17 Andreas Krebbel - - * objc-act.c (objc_build_component_ref): Adjust call to - finish_class_member_access_expr due to a changed prototype. - -2005-08-31 Andrew Pinski - - PR objc/23306 - * objc-act.c (generate_strings): Remove and move code to - finish decl to ... - (add_objc_string): here when creating a new string decl. - (finish_objc): Don't call generate_strings. - -2005-08-31 Andrew Pinski - - PR objc/23381 - * objc-act.c (next_sjlj_build_try_catch_finally): Set - TREE_SIDE_EFFECTS on catch_seq after building it. - -2005-08-09 Andrew Pinski - - part of PR objc/21992 - * objc-act.c (handle_class_ref): The ref decl is always referenced. - -2005-07-20 Giovanni Bajo - - Make CONSTRUCTOR use VEC to store initializers. - * objc-act.c (objc_build_constructor): Use build_constructor_from_list - instead of build_constructor. - -2005-07-08 Daniel Berlin - - * objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is - removed. - * objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common. - (KEYWORD_KEY_NAME): Use decl_minimal. - (METHOD_SEL_NAME): Ditto.. - (METHOD_SEL_ARGS): Use decl_non_common. - (METHOD_ADD_ARGS): Ditto. - (METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common. - (METHOD_DEFINITION): Ditto. - (METHOD_ENCODING): Ditto. - * objc-lang.c: (objc_init_ts): New function. - -2005-07-07 Ziemowit Laski - - * objc-act.c (objc_build_struct): Pass in an actual @interface - instead of its name, and annotate the struct created (and all - existing variants thereof) with the @interface. - (objc_compare_types): Treat forward-declared ObjC classes - as stand-alone (root) classes for purposes of type comparisons. - (build_private_template): Move some code to objc_build_struct(). - -2005-07-07 Ziemowit Laski - - PR objc/22274 - * objc-act.c (objc_build_string_object): For GNU-style constants, - use the @interface type rather than the built-in type. - -2005-07-03 Kazu Hirata - - * Make-lang.in (cc1plus-checksum.c): Use - build/genchecksum$(build_exeext), not build/genchecksum$(exeext). - -2005-07-02 Joseph S. Myers - - * objc-act.c: Use %q to quote in diagnostics. - -2005-07-02 Joseph S. Myers - - * objc-act.c: Use '+' flag instead of %J. Use 'q' flag for - quoting. - -2005-06-30 Ziemowit Laski - - * objc-act.c (objc_build_volatilized_type): New function. - (objc_volatilize_decl): Call objc_build_volatilized_type() - instead of build_qualified_type(). - -2005-06-29 Ziemowit Laski - - * objc-act.c (objc_build_internal_const_str_type): New function. - (check_string_class_template): Use objc_get_class_ivars() instead - of TYPE_FIELDS() to retrieve ivar list. - (AT_LEAST_AS_LARGE_AS): Check the size of each field's type rather - than the field itself. - (objc_build_string_object): Synthesize a "__builtin_ObjCString" - type and use it to lay out compile-time string objects. - * objc-act.h (OCTI_INTERNAL_CNST_STR_TYPE, internal_const_str_type): - New. - -2005-06-28 Paul Brook - - * objc-act.c (objc_init_exceptions): Call - default_init_unwind_resume_libfunc. - -2005-06-27 Ziemowit Laski - - * objc-act.c (objc_build_struct): Save the TYPE_OBJC_INFO - portion of TYPE_LANG_SPECIFIC info for all variants of - a class before calling finish_struct(), and restore - same TYPE_OBJC_INFO afterwards. - -2005-06-25 Kelley Cook - - * all files: Update FSF address in copyright headers. - -2005-06-15 Joseph S. Myers - - * objc-act.c (my_build_string_pointer): New. - (objc_get_class_reference, get_super_receiver): Call - my_build_string_pointer instead of my_build_string when building - function arguments. - -2005-05-25 Mike Stump - - * objc-act.c (volatilized_hash): Avoid warnings on 64-bit - machines. - -2005-05-24 Ziemowit Laski - - * objc-act.c (objc_build_struct): New function. - (objc_derived_from_p): Likewise. - (objc_build_component_ref): Likewise. - (objc_copy_binfo): Likewise. - (objc_xref_basetypes): Likewise. - (objc_lookup_protocol): Likewise. - (objc_compare_protocols): Likewise. - (objc_volatilize_decl): Likewise. - (encode_aggregate_fields): Likewise. - (volatilized_hash): Likewise. - (volatilized_eq): Likewise. - (objc_compare_types): Likewise. - (objc_type_quals_match): Likewise. - (DERIVED_FROM_P): New ObjC macro, corresponding to C++ macro - of same name. - (get_class_ivars): Add second parameter indicating if entire - hierarchy is desired. - (struct volatilized_type): New type. - (volatilized_htab): New hash table. - (objc_types_compatible_p, objc_comptypes): Remove functions. - (synth_module_prologue): Do not initialize 'unused_list'. - (objc_get_class_reference): Fix ObjC++ impedance mismatches. - (objc_declare_alias): Implement as a typedef. - (objc_substitute_decl, objc_gimplify_expr): Reformat. - (objc_get_class_ivars): Adjust call to get_class_ivars(). - (next_sjlj_build_enter_and_setjmp, synth_forward_declarations, - build_ivar_reference, get_super_receiver): Call - objc_build_component_ref() instead of build_component_ref(). - (objc_begin_catch_clause): Use DERIVED_FROM_P() instead of - objc_comptypes(). - (build_private_template): Call objc_build_struct() instead of - start_struct() and finish_struct(). - (hash_init): Initialize volatilized_htab. - (objc_is_public): Adjust calls to objc_get_ivars(); adjust - ObjC++ impedance mismatches. - (encode_aggregate_within): Streamline by calling - encode_aggregate_fields(). - * objc-act.h (objc_types_compatible_p): Remove prototype. - (OCTI_UNUSED_LIST, unused_list): Remove slot. - * objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove. - -2005-05-18 Geoffrey Keating - - * Make-lang.in (cc1obj-dummy): New. - (cc1obj-checksum.c): New. - (cc1obj-checksum.o): New. - (cc1obj): Add cc1obj-checksum.o. - -2005-05-18 Mike Stump - - PR objc/21641 - * objc-act.c (struct interface_tuple): Mark it up for GC. - (interface_htab): It is really a struct interface_tuple. - -2005-05-17 Ziemowit Laski - Mike Stump - - Yet more Objective-C++... - - * objc-act.c (objc_finish_try_stmt): Add return value. - (objc_build_synchronized): Likewise. - - * objc-act.c (objc_is_gcable_type): Add. - (objc_substitute_decl): Add. - (objc_build_ivar_assignment): Add. - (objc_build_global_assignment): Add. - (objc_build_strong_cast_assignment): Add. - (objc_is_ivar_reference_p): Add. - (objc_is_global_reference_p): Add. - (objc_generate_write_barrier): Add. - (objc_rewrite_function_call): Add. - (objc_gimplify_expr): Add Objective-C++ support. - * objc-act.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Likewise. - (SIZEOF_OBJC_TYPE_LANG_SPECIFIC): Add. - (INIT_TYPE_OBJC_INFO): Add Objective-C++ support. - (DUP_TYPE_OBJC_INFO): Likewise. - (struct imp_entry): Add field has_cxx_cdtors. - (struct imp_entry *imp_list): Add OCTI_UMSG_FAST_DECL, - OCTI_METH_LIST_TEMPL, OCTI_METH_PROTO_LIST_TEMPL, - OCTI_IVAR_LIST_TEMPL, OCTI_ASSIGN_IVAR_DECL, - OCTI_ASSIGN_IVAR_FAST_DECL, OCTI_ASSIGN_GLOBAL_DECL, - OCTI_ASSIGN_STRONGCAST_DECL. - (umsg_fast_decl): Add. - (objc_assign_ivar_decl): Add. - (objc_assign_ivar_fast_decl): Add. - (objc_assign_global_decl): Add. - (objc_assign_strong_cast_decl): Add. - (objc_method_list_ptr): Add. - (objc_method_proto_list_ptr): Add. - (objc_ivar_list_ptr): Add. - - * objc-act.c (should_call_super_dealloc): Add. - (OBJC_VERSION): Bump to 6. - (objc_is_gcable_type): Add. - (objc_substitute_decl): Add. - (objc_build_ivar_assignment): Add. - (objc_build_global_assignment): Add. - (objc_build_strong_cast_assignment): Add. - (objc_is_gcable_p): Add. - (objc_is_ivar_reference_p): Add. - (objc_is_global_reference_p): Add. - (generate_shared_structures): Add flags parameter. - (objc_generate_cxx_ctor_or_dtor): Add. - (objc_generate_cxx_cdtors): Add. - (add_class): Add name parameter. - (objc_types_share_size_and_alignment): Add. - (comp_proto_with_proto): Add strict parameter. - (CLS_HAS_CXX_STRUCTORS): Add. - (TAG_ASSIGNIVAR): Add. - (TAG_ASSIGNGLOBAL): Add. - (TAG_ASSIGNSTRONGCAST): Add. - (TAG_MSGSEND_FAST): Add. - (TAG_ASSIGNIVAR_FAST): Add. - (TAG_CXX_CONSTRUCT): Add. - (TAG_CXX_DESTRUCT): Add. - (OBJC_LOOKUP_CLASS): Add. - (OBJC_LOOKUP_NO_SUPER): Add. - (objc_finish_file): Add pch support. - (objc_finish_implementation): Add Objective-C++ support. - (synth_module_prologue): Likewise. - (synth_module_prologue): Add fast dispatching. - (objc_get_class_reference): Add Objective-C++ support. - (objc_generate_write_barrier): Likewise. - (next_sjlj_build_enter_and_setjmp): Likewise. - (objc_begin_try_stmt): Likewise. - (build_next_objc_exception_stuff): Add fast ivar support. - (build_private_template): Mark the record as used so debug - information is generated. - (build_protocol_template): Add Objective-C++ support. - (objc_method_parm_type) Likewise. - (objc_generate_cxx_ctor_or_dtor): Likewise. - (objc_generate_cxx_cdtors): Likewise. - (build_protocol_initializer): Likewise. - (build_category_template): Likewise. - (build_class_template): Likewise. - (build_method_list_template): Likewise. - (build_category_initializer): Likewise. - (build_shared_structure_initializer): Likewise. - (objc_finish_message_expr): Likewise. - (build_objc_method_call): Add fast dispatch support. - (lookup_method_static): Add support to end search at superclasses. - (add_method_to_hash_list): Add strict parameter to - comp_proto_with_proto. - (objc_add_method): Likewise. - (objc_add_method): Also set the interface_value. - (add_instance_variable): Add Objective-C++ support. - (objc_is_public): Likewise. - (start_class): Likewise. - (continue_class): Likewise. - (encode_aggregate_within): Likewise. - (start_method_def): Likewise. - (objc_start_function): Clear current_function_returns_value - and current_function_returns_null. - (really_start_method): Add Objective-C++ support. - (objc_finish_method_definition): Add warning for missing - [super dealloc]. - (finish_objc): Add Objective-C++ support. - (generate_objc_image_info): Likewise. - (objc_lookup_ivar): Likewise. - * objc-act.h (TYPE_HAS_OBJC_INFO): Likewise. - (INIT_TYPE_OBJC_INFO): Likewise. - (DUP_TYPE_OBJC_INFO): Likewise. - -2005-04-23 DJ Delorie - - * objc-act.c: Adjust warning() callers. - -2005-04-21 Roger Sayle - - * objc-act.h (METHOD_ADD_ARGS_ELLIPSIS_P): New macro for accessing - this field of an objc method decl. - * objc-act.c (build_method_decl): Take an additional "ellipsis" - argument, and set METHOD_ADD_ARGS_ELLIPSIS_P as appropriate. - (objc_build_method_signature): Accept additional "ellipsis" - argument and pass it to build_method_decl. - (get_arg_type_list, start_method_def, gen_method_decl): Use - the new METHOD_ADD_ARGS_ELLIPSIS_P instead of examining the - TREE_OVERFLOW field of a TREE_LIST node. - -2005-04-20 Joseph S. Myers - - PR c/12913 - * objc-act.c (objc_start_function): Create stack level for context - of identifiers with variably modified type. - -2005-03-30 Joseph S. Myers - - PR c/772 - PR c/17913 - * objc-act.c (objc_start_function): Push context on - label_context_stack. - -2005-03-23 Joseph S. Myers - - * objc-act.c (next_sjlj_build_enter_and_setjmp, - next_sjlj_build_catch_list, next_sjlj_build_try_catch_finally): - Call c_common_truthvalue_conversion. - -2005-02-25 Joseph S. Myers - - * Make-lang.in (objc/objc-parse.o-warn, objc/objc-parse.o, - objc/objc-parse.c, objc/objc-parse.y): Remove - (OBJC_OBJS, objc.srcextra, objc.tags, objc.mostlyclean, - objc.distclean, objc.maintainer-clean): Update for new parser. - * config-lang.in (gtfiles): Update for new parser. - -2005-01-29 Kazu Hirata - - * lang-specs.h, objc-act.c, objc-act.h, objc-lang.c: Update - copyright. - -2005-01-27 Matt Austern - - * objc-act.c (objc_finish_file): In ObjC++ mode, set at_eof before - calling instantiate_pending_templates. - -2005-01-26 Alexander Malmberg - - PR objc/18862 - * objc-act.c (build_selector_translation_table): Use - input_location in the diagnostic for the GNU runtime or if - TREE_PURPOSE (chain) is NULL. - -2005-01-25 Alexander Malmberg - - PR objc/18408 - * objc-act.c (objc_types_compatible_p): New function. - * objc-act.h (objc_types_compatible_p): Declare. - * objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Define. - -2005-01-16 Ziemowit Laski - - * objc-act.c (objc_push_parm): Call c_type_promotes_to() - via a lang-hook. - -2005-01-15 Ziemowit Laski - - PR objc/19321 - * objc-act.c (get_arg_type_list): Decay function arguments into - pointers. - (objc_push_parm): Likewise; bring PARM_DECL construction closer - in line with what the C front-end does. - (objc_get_parm_info): Call pushdecl() and finish_decl() on - each PARM_DECL, like the C front-end does. - (start_method_def): Remove redundant ARRAY_TYPE decay. - (objc_start_function): Bring closer in line with what the - C front-end does for functions. - -2005-01-14 Mike Stump - - * lang-specs.h ("@objective-c"): Use cc1obj when -E is used so - that -fobjc-exceptions is accepted. - -2004-12-30 Ziemowit Laski - - PR objc/18971 - * objc-act.c (get_arg_type_list, start_method_def): Decay - array arguments into pointers. - (gen_type_name_0): Learn to pretty-print array types. - -2004-12-15 Ziemowit Laski - - * objc-act.c (build_private_template): Change to return 'void'; do - not set ivar_context, uprivate_record or objc_instance_type. - (objc_comptypes, gen_type_name_0): For types 'id' and 'Class', - retrieve protocol list from the pointee rather than the pointer itself; - check TYPE_HAS_OBJC_INFO(...) precondition before accessing - TYPE_OBJC_PROTOCOL_LIST. - (objc_get_protocol_qualified_type): For types 'id' and 'Class', - construct a variant of the pointee as well as the pointer, and - store protocol information in the former. When creating variants - of RECORD_TYPEs, clone their TYPE_LANG_SPECIFIC fields and propagate - TYPE_OBJC_INTERFACE information. - (objc_declare_class): If a TYPE_DECL is looked up, retrieve the - underlying RECORD_TYPE to check for presence of TYPE_OBJC_INTERFACE; - for newly-created RECORD_TYPEs, create a tentative TYPE_OBJC_INTERFACE - holding an IDENTIFIER_NODE. - (objc_finish_message_expr): Check TYPE_HAS_OBJC_INFO(...) before - accessing TYPE_OBJC_PROTOCOL_LIST; Use TYPE_OBJC_INTERFACE instead - of calling lookup_interface(); allow for TYPE_OBJC_INTERFACE holding - an IDENTIFIER_NODE (meaning a @class forward-declaration only). - (objc_is_public): Check TYPE_OBJC_INTERFACE instead of calling - lookup_interface(). - (continue_class): For @implementations, set ivar_context, - uprivate_record and objc_instance_type, for @interfaces, call - build_private_template(). - (encode_pointer): Check TYPE_HAS_OBJC_INFO(...) before accessing - TYPE_OBJC_INTERFACE. - (objc_types_are_equivalent): Check TYPE_HAS_OBJC_INFO(...) before - accessing TYPE_OBJC_PROTOCOL_LIST. - * objc-act.h (OBJC_INFO_SLOT_ELTS, TYPE_OBJC_INFO, INIT_TYPE_OBJC_INFO, - DUP_TYPE_OBJC_INFO, ALLOC_OBJC_TYPE_LANG_SPECIFIC, - SIZEOF_OBJC_TYPE_LANG_SPECIFIC): New macros. - (TYPE_OBJC_INTERFACE): Replaces TREE_STATIC_INSTANCE and now points - to an actual @interface; stored in TYPE_LANG_SPECIFIC(...). - (TYPE_OBJC_PROTOCOL_LIST): Replaces TYPE_PROTOCOL_LIST; stored in - TYPE_LANG_SPECIFIC(...). - (TREE_STATIC_INSTANCE, TYPE_PROTOCOL_LIST): Delete. - (IS_ID, IS_CLASS, IS_PROTOCOL_QUALIFIED_UNTYPED, IS_SUPER, - TYPED_OBJECT): Check for POINTER_TYPE rather than POINTER_TYPE_P; - adjust for use of TYPE_OBJC_INTERFACE and TYPE_OBJC_PROTOCOL_LIST - instead of TREE_STATIC_INSTANCE and TYPE_PROTOCOL_LIST. - -2004-11-29 Joseph Myers - - PR c/7544 - * Make-lang.in (objc/objc-act.o): Update dependencies. - * objc-act.c (objc_finish_file): Call - maybe_apply_pending_pragma_weaks if not OBJCPLUS. - -2004-11-09 Andrew Pinski - - PR objc/18406 - * obj-act.c (encode_type): 96bits doubles are encoded the - same way as 64bit and 128bit doubles are. - -2004-11-09 Joseph S. Myers - - * objc-act.c: Use %q, %< and %> for quoting in diagnostics. - -2004-11-08 Andrew Pinski - - PR objc/16546 - * objc-act.c (generate_method_descriptors): Remove setting - the new decls' type to variable_length_type. - (generate_ivar_lists): Likewise. - (generate_dispatch_tables): Likewise. - -2004-10-30 Ziemowit Laski - - * objc-act.c (objc_lookup_ivar): The new OTHER parameter - contains the result of the ID lookup by the C or C++ - front-end; in class methods, use OTHER if it exists; - in instance methods, use OTHER only if it is locally - declared. - -2004-10-26 Ziemowit Laski - - * objc-act.c (finish_class): Do not synthesize bogus - 'extern objc_object *_Foo;' declarations for @interface Foo. - -2004-10-25 Ziemowit Laski - David Ayers - - * objc-act.c (objc_comptypes): Use IS_PROTOCOL_QUALIFIED_UNTYPED - instead of IS_PROTOCOL_QUALIFIED_ID; add comparisons for: - 'Class != id '; 'Class != *'; - 'Class == id' and 'Class == Class'. - (objc_is_id): Add test for 'super'. - (objc_finish_message_expr): Allow for messaging of 'Class ' - receivers; if class methods are not found in protocol lists, search - for instance methods therein and warn if one is found. Look in - global hash tables for suitable method as a last resort when messaging - 'id ', 'Class ' and invalid receiver types. - (objc_add_method): Insert instance methods listed in protocols into - the global class method hash table. - * objc-act.h (IS_PROTOCOL_QUALIFIED_ID): Rename to - IS_PROTOCOL_QUALIFIED_UNTYPED and allow for 'Class ' in - addition to 'id '. - -2004-10-21 Andrew Pinski - - PR objc/17923 - * objc-act.c (objc_build_string_object): Create a CONST_DECL - for the NeXT runtime case. - -2004-10-02 Kazu Hirata - - * objc-act.c: Fix comment typos. - -2004-09-24 Ziemowit Laski - - * objc-act.c (init_objc_symtab, init_module_descriptor, - build_shared_structure_initializer): When initializing 'long' - fields, ensure that the initializer value is also 'long'. - -2004-09-24 Zack Weinberg - - * objc-act.c: Change annotate_with_locus to SET_EXPR_LOCATION - throughout. - (objc_init): Only set input_line to 0 #ifndef USE_MAPPED_LOCATION. - (build_selector_translation_table): Use %J in diagnostic - instead of diddling input_line. Fix spelling. - -2004-09-21 Ziemowit Laski - - * objc-act.c (objc_fold_objc_type_ref): New function. - * objc-act.h (objc_fold_objc_type_ref): New prototype. - -2004-09-09 Joseph S. Myers - - * objc-act.c (objc_start_function, really_start_method, - objc_get_parm_info, start_method_def): Update to new arg_info - structures. - -2004-09-07 Ziemowit Laski - - * Make-lang.in (objc/objc-parse.o): Depend on $(C_COMMON_H) instead of - objc/objc-act.h. - (objc/objc-act.o): Depend on $(HASHTAB_H). - * objc-act.c: Include hashtab.h; in ObjC++ mode, include cp-tree.h and - objcp-decl.h instead of c-tree.h. - (build_module_descriptor, get_class_ivars, synth_id_with_class_suffix, - error_with_ivar, gen_method_decl, gen_declaration, setup_string_decl, - build_protocol_template): Adjust prototypes. - (build_module_initializer_routine, start_class, continue_class, - finish_class, start_method_def, objc_start_function, start_protocol, - build_method_decl, objc_add_method, add_instance_variable, - build_ivar_reference, is_ivar, is_private, get_super_receiver, - build_selector_table_decl, objc_push_parm, objc_get_parm_info, - gen_type_name, gen_type_name_0, start_var_decl, finish_var_decl, - create_field_decl): New prototypes. - (objc_expand_function_end, comp_method_with_proto, objc_expr_last, - gen_declaration_1, gen_declarator, is_complex_decl, adorn_decl, - define_decl, create_builtin_decl, gen_declspecs): Remove prototypes. - (TYPE_ID): Rename to OBJECT_TYPEDEF_NAME. - (CLASS_TYPEDEF_NAME): New. - (TAG_EXECCLASS): Change from a global variable to a #define. - (TAG_RETURN_STRUCT): Delete. - (TAG_GNUINIT): New, holds '__objc_gnu_init' name. - (objc_inherit_code, objc_public_flag): New, moved from c-parse.in. - (string_descriptor): New struct. - (string_htab): New hash table. - (string_hash, string_eq): New prototypes. - (generate_struct_by_value_array): Call create_field_decl() instead of - create_builtin_decl(). - (objc_init): Do not initialize objc_ellipsis_node or TAG_EXECCLASS; - In ObjC++ mode, call cxx_init() instead of c_objc_common_init(). - (objc_finish_file): In ObjC++, call instantiate_pending_templates() - and cp_finish_file(). - (define_decl, get_static_reference, get_protocol_reference, - create_builtin_decl): Remove functions. - (objc_start_class_interface, objc_start_category_interface, - objc_start_protocol, objc_continue_interface, objc_finish_interface, - objc_start_class_implementation, objc_start_category_implementation, - objc_continue_implementation, objc_finish_implementation, - objc_set_visibility, objc_set_method_type, - objc_build_method_signature, objc_add_method_declaration, - objc_start_method_definition, objc_add_instance_variable, - objc_get_protocol_qualified_type, create_field_decl, - start_var_decl, finish_var_decl): New functions. - (setup_string_decl): Simplify since it is only called once. - (synth_module_prologue): Call build_class_template(); predefine 'id' - and 'Class' as typedefs; rename 'temp_type' to 'type'; disable debug - hooks for duration of function; fix GNU runtime messenger signatures - to correspond to reality; forward-declare '__objc_exec_class' for the - GNU runtime; call build_selector_table_decl(); in ObjC++ mode, generate - 'extern "C" { ... }' wrappers around synthesized declarations; call - build_protocol_template() and build_category_template(). - (string_hash, string_eq): New functions. - (objc_build_string_object): Check metaclass correctness only once; - store string literals in hash table. - (objc_build_constructor): Do not convert initializer elements; - adjust for ObjC++ impedance mismatch. - (build_objc_symtab_template): Call create_field_decl() instead of - create_builtin_decl(). - (init_objc_symtab): Add missing conversion to initializer element. - (build_metadata_decl): Call start_var_decl() instead of define_decl(). - (generate_objc_symtab_decl): Do not call build_category_template(); - call start_var_decl() and finish_var_decl() instead of start_decl() - and finish_decl(). - (build_module_descriptor): Call create_field_decl() instead of - grokfield(); call start_var_decl() and finish_var_decl() instead of - start_decl() and finish_decl(); always mark module descriptor as - used; move GNU runtime-specific functionality to - build_module_initializer_routine(). - (build_module_initializer_routine): New function, broken off of - build_module_descriptor(). - (objc_static_init_needed_p, objc_generate_static_init_call): New - functions. - (generate_static_references, generate_strings, - build_selector_translation_table, generate_descriptor_table, - generate_ivars_list, generate_dispatch_table, generate_category): Call - start_var_decl() and finish_var_decl() instead of start_decl() and - finish_decl(); build a type directly instead of via groktypename(). - (build_selector_reference_decl, build_selector_table_decl, - build_class_reference_decl, build_protocol_reference, - generate_objc_image_info): Call start_var_decl() instead of - build_decl(). - (build_selector_reference): For GNU runtime, do not call - build_selector_reference_decl(). - (build_selector, build_typed_selector_reference): Always convert - result to the selector type. - (add_objc_string): Cast return value to 'char *'. - (build_method_prototype_template, build_selector_template, - build_method_template): Use actual selector type for fields - pointing to selectors. - (finish_objc): For GNU runtime, call - build_module_initializer_routine() after build_module_descriptor(). - (generate_protocol_list, generate_shared_structures): Call - start_var_decl() and finish_var_decl() instead of start_decl() and - finish_decl(); build a type directly instead of via - groktypename(). - (synth_id_with_class_suffix): Return a string. - (get_arg_type_list): For instance methods, use the instance type for - 'self'; do not call groktypename_in_parm_context(). - (build_objc_string_decl): Squash redeclaration errors in ObjC++. - (objc_is_class_name): Use OBJC_TYPE_NAME instead of TYPE_NAME; - handle RECORD_TYPEs in ObjC as well as ObjC++. - (objc_is_id): New function. - (objc_is_object_ptr): Return the canonical type node. - (objc_get_class_ivars): Simplify using get_class_ivars(). - (get_class_ivars): Remove second parameter; create a fresh copy - of the ivar list for each call; do not check for existence of - super class. - (objc_eh_runtime_type): Mark #ifndef OBJCPLUS. - (objc_init_exceptions): When using SJLJ-style exceptions, require - the use of '-fobjc-exceptions' flag; do not require it for DWARF-style - exceptions. - (objc_build_exc_ptr, next_sjlj_build_try_catch_finally): Use - objc_object_type instead of objc_id_type. - (objc_begin_catch_clause): Convert the incoming PARM_DECL into - a VAR_DECL before placing it in the appropriate scope; do not - call define_decl(); adjust call to c_begin_compound_stmt(); - use objc_object_type instead of objc_id_type. - (build_next_objc_exception_stuff): Call create_field_decl() instead - of create_builtin_decl(); construct type directly instead of calling - groktypename(); use OBJC_VOID_AT_END to mark end of function parameters. - (build_private_template): Adjust call to get_class_ivars(); build - a type directly instead of via groktypename(). - (build_protocol_template, build_method_prototype_list_template, - build_method_prototype_template, build_category_template, - build_selector_template, build_class_template, build_super_template, - build_ivar_template, build_ivar_list_template, - build_method_list_template, build_method_template): - Call create_field_decl() instead of grokfield(). - (objc_method_parm_type): Do not call groktypename(). - (generate_descriptor_table): Call start_var_decl() and - finish_var_decl() instead of start_decl() and finish_decl(). - (generate_method_descriptors, build_protocol_initializer, - generate_dispatch_tables, build_category_initializer, - build_shared_structure_initializer): Do not call groktypename(). - (generate_protocols): Call start_var_decl() and finish_var_decl() - instead of start_decl() and finish_decl(); do not call groktypename(). - (error_with_ivar): Remove last parameter. - (check_ivars): Do not iterate ovar CLASS_RAW_IVARS lists in addition - to CLASS_IVARS lists; adjust calls to error_with_ivar(). - (generate_ivar_lists): Convert one of the initializer elements; do - not call groktypename(). - (get_arg_type_list, start_method_def, gen_method_def): Account for - new representation of variable arguments and '...' in Objective-C - methods; add Objective-C++ impedance matching code. - (is_objc_type_qualifier): Remove function. - (adjust_type_for_id_default): Simplify; there is no longer a need to - wade through declspecs. - (lookup_interface, start_class, continue_class, - finish_class, start_method_def, start_protocol, build_method_decl, - objc_add_method, add_instance_variable, build_ivar_reference, - is_ivar, is_private, get_super_receiver, objc_build_finally_epilogue): - Make into static functions. - (receiver_is_class_object): Use new IS_CLASS() macro. - (objc_build_message_expr): Tweak ObjC++ message argument handling; - call objc_finish_message_expr() instead of finish_message_expr(). - (finish_message_expr): Rename to objc_finish_message_expr(); use - OBJC_TYPE_NAME and OBJC_SET_TYPE_NAME macros instead of TYPE_NAME. - call gen_type_name() instead of gen_declaration(); call objc_is_id() - instead of using IS_ID and IS_CLASS; Use objc_class_name instead of - calling get_identifier("Class"); handle CONVERT_EXPRs in receiver. - (build_objc_method_call, warn_with_method): Do not call groktypename(). - (build_ivar_reference): Call convert() instead of clobbering in a - type. - (hash_init): Initialize string_htab hash table. - (add_instance_variable): Simplify parameter list; do not call grokfield(); - do not populate CLASS_IVARS list. - (start_class): Check for the existence of super class, if one was specified. - (continue_class): Use CLASS_RAW_IVARS rather than CLASS_IVARS; do not - call build_class_template(); adjust call to get_class_ivars(); call - build_decl(), pushdecl() and finish_decl() instead of define_decl(). - (finish_class): Call build_decl(), pushdecl() and finish_decl() instead - of define_decl(). - (add_protocols): Use PROTOCOL_BINFO_ELTS for the tree vector size. - (start_protocol): Do not call build_protocol_template(); use - PROTOCOL_BINFO_ELTS for the tree vector size. - (encode_type_qualifiers): Do not handle the 'const' qualifier here. - (encode_pointer): Encode 'const char *' as 'r*', for backwards - compatibility. - (encode_array): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld". - (encode_type): Handle the 'const' qualifier here. - (objc_parmlist): New global variable, sued by objc_push_parm and - objc_get_parm_info(). - (objc_push_parm, objc_get_parm_info): New functions. - (objc_expr_last): Remove function. - (synth_self_and_ucmd_args): For instance methods, use the instance - type for 'self'; call objc_push_parm() instead of push_parm_decl(). - (start_method_def): Do not call push_scope(), declare_parm_level(), - pop_scope(), push_parm_decl(), store_parm_decls() or objc_expr_last(); - just use objc_push_parm() and objc_get_parm_info(). - (comp_method_with_proto): Remove function. - (objc_types_are_equivalent): Strip away indirections before comparing - underlying types. - (comp_proto_with_proto): Do not call groktypename(); types are no - longer in raw declspec format. - (objc_start_function): New function. - (really_start_method): Call comp_proto_with_proto() instead of - comp_method_with_proto(); call objc_start_function() instead of - hand-crafting a function declarator. - (continue_method_def, objc_expand_function_end): Remove functions. - (get_super_receiver): Call objc_get_current_scope() instead of - get_current_scope(); reference 'super_class' field (instead of - 'class'). - (finish_method_def): Rename to objc_finish_method_definition() and - add a function decl parameter; move method encoding call from - objc_expand_function_end(). - (is_complex_decl, adorn_decl, gen_declarator, gen_declspecs, - gen_declaration_1): Remove functions. - (tmpbuf, RAW_DECLSPEC): Remove. - (gen_declaration): Remove second parameter; simplify to deal - with TYPE_P nodes instead of raw declspecs. - (gen_type_name, gen_type_name_0): New functions. - (gen_method_decl): Remove second parameter; call gen_type_name() - instead of gen_declaration_1(). - (dump_interface): Adjust calls to gen_declaration() and - gen_method_decl(); do not allocate a separate string buffer. - (init_objc): Allocate a larger string buffer to accommodate - dump_interface(); adjust call to build_module_descriptor(); - add call to build_module_initializer_routine() for the GNU - runtime. - (generate_classref_translation_entry): Do not call start_decl(); call - finish_var_decl() instead of finish_decl(); call convert() instead of - build_c_cast(). - * objc-act.h (CLASS_OWN_IVARS): Remove accessor. - (CLASS_BINFO_ELTS): Reduce from 6 to 5, now that CLASS_OWN_IVARS is - gone. - (OCTI_GNU_INIT_DECL, GNU_INIT_decl): New. - (OCTI_ELLIPSIS_NODE, objc_ellipsis_node): Remove. - (OCTI_ID_ID, id_type, objc_id_id): Rename to OCTI_ID_NAME, - objc_object_type and objc_object_name, respectively. - (OCTI_CLS_REF, OCTI_CLASS_NAME, objc_class_reference, - objc_class_name): New. - (IS_CLASS): New macro. - (IS_ID, IS_SUPER): Robustify. - (OCTI_EXECCLASS_DECL, execclass_decl): New. - (finish_file, start_class, continue_class, finish_class, - start_method_def, continue_method_def, finish_method_def, - start_protocol, finish_protocol, objc_build_throw_stmt, - objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue, - objc_build_synchronized_epilogue, objc_build_try_prologue, - objc_build_try_epilogue, objc_build_catch_stmt, objc_build_catch_epilogue, - objc_build_finally_prologue, objc_build_finally_epilogue, - is_ivar, is_private, is_public, add_instance_variable, objc_add_method, - get_super_receiver, objc_clear_super_receiver, get_class_ivars_from_name, - get_class_reference, get_static_reference, get_object_reference, - build_message_expr, finish_message_expr, build_selector_expr, - build_ivar_reference, build_keyword_decl, build_method_decl, - build_protocol_expr, build_objc_string_object, objc_declare_alias, - objc_declare_class, objc_declare_protocols, objc_comptypes, - objc_check_decl, build_encode_expr): Remove prototypes. - (imp_count, cat_count): Make GGC-aware. - (OBJC_SET_TYPE_NAME): New macro. - -2004-09-03 Ziemowit Laski - - * config-lang.in: Update copyright notice. - (lang_requires): Indicate that ObjC requires C to be built first. - -2004-09-01 Ziemowit Laski - - * objc-act.c (objc_check_decl): Use OBJC_TYPE_NAME macro instead of - TYPE_NAME. - (build_objc_string_object): Rename to objc_build_string_object(). - (get_class_reference): Rename to objc_get_class_reference(). - (get_class_ivars_from_name): Rename to objc_get_class_ivars(). - (next_sjlj_build_catch_list, get_super_receiver): Call - objc_get_class_reference() instead of get_class_reference(). - (build_keyword_decl): Rename to objc_build_keyword_decl(). - (build_message_expr): Rename to objc_build_message_expr(). - (build_protocol_expr): Rename to objc_build_protocol_expr(). - (build_selector_expr): Rename to objc_build_selector_expr(). - (build_encode_expr): Rename to objc_build_encode_expr(). - * objc-act.h (get_class_ivars_from_name): Rename prototype to - objc_get_class_ivars(). - (get_class_reference): Rename prototype to objc_get_class_reference(). - (build_message_expr): Rename prototype to objc_build_message_expr(). - (build_selector_expr): Rename prototype to objc_build_selector_expr(). - (build_keyword_decl): Rename prototype to objc_build_keyword_decl(). - (build_protocol_expr): Rename prototype to objc_build_prototype_expr(). - (build_objc_string_object): Rename prototype to - objc_build_string_object(). - -2004-09-01 Ziemowit Laski - - * objc-act.c (lookup_interface): Make function 'static' and add a - local prototype. - (objc_check_decl, get_class_reference, objc_declare_alias, - objc_declare_class, objc_is_object_ptr): Call objc_is_class_name() - instead of is_class_name(). - (get_super_receiver, objc_clear_super_receiver): Call - objc_get_current_scope() instead of get_current_scope(). - (is_class_name): Rename to objc_is_class_name. - (lookup_objc_ivar): Rename to objc_lookup_ivar. - -2004-08-28 Ziemowit Laski - - * objc-act.c (objc_is_reserved_word): New function. - -2004-08-15 Ziemowit Laski - - * Make-lang.in (objc/objc-lang.o): Depend on $(C_PRETTY_PRINT_H), - $(DIAGNOSTIC_H), c-objc-common.h and gtype-objc.h, but not on toplev.h. - (objc/objc-parse.o): Do not depend on gtype-objc.h. - * objc-act.c: Do not include gtype-objc.h. - (finish_file): Rename to objc_finish_file(). - * objc-act.h (finish_file): Update copyright notice; remove prototype. - * objc-lang.c: Update copyright notice; include diagnostic.h, - c-objc-common.h, c-pretty-print.h and gtype-objc.h; do not include - toplev.h. - (finish_file): New hook routine. - (LANG_HOOKS_FINISH, LANG_HOOKS_INIT_OPTIONS, - LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION, - LANG_HOOKS_MISSING_ARGUMENT, LANG_HOOKS_POST_OPTIONS, - LANG_HOOKS_GET_ALIAS_SET, LANG_HOOKS_SAFE_FROM_P, - LANG_HOOKS_EXPAND_EXPR, LANG_HOOKS_MARK_ADDRESSABLE, - LANG_HOOKS_PARSE_FILE, LANG_HOOKS_TRUTHVALUE_CONVERSION, - LANG_HOOKS_FINISH_INCOMPLETE_DECL, LANG_HOOKS_UNSAFE_FOR_REEVAL, - LANG_HOOKS_STATICP, LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, - LANG_HOOKS_NO_BODY_BLOCKS, LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, - LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_FUNCTION_ENTER_NESTED, - LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, - LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT, - LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, - LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, - LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, - LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P, - LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING, - LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS, - LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN, - LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_TYPE_FOR_MODE, - LANG_HOOKS_TYPE_FOR_SIZE, LANG_HOOKS_SIGNED_TYPE, - LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, - LANG_HOOKS_INCOMPLETE_TYPE_ERROR, LANG_HOOKS_TYPE_PROMOTES_TO, - LANG_HOOKS_REGISTER_BUILTIN_TYPE, LANG_HOOKS_WRITE_GLOBALS): - Move to c-objc-common.h. diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in deleted file mode 100644 index 41463f2bcdd8..000000000000 --- a/gcc/objc/Make-lang.in +++ /dev/null @@ -1,142 +0,0 @@ -# Top level -*- makefile -*- fragment for GNU Objective-C -# Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005 -# 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 2, 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 COPYING. If not, write to -#the Free Software Foundation, 51 Franklin Street, Fifth Floor, -#Boston, MA 02110-1301, USA. - -# This file provides the language dependent support in the main Makefile. -# Each language makefile fragment must provide the following targets: -# -# foo.all.cross, foo.start.encap, foo.rest.encap, -# foo.install-common, foo.install-man, foo.install-info, foo.dvi, foo.pdf -# foo.uninstall, -# foo.mostlyclean, foo.clean, foo.distclean, -# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4 -# -# where `foo' is the name of the language. -# -# It should also provide rules for: -# -# - making any compiler driver (eg: g++) -# - the compiler proper (eg: cc1plus) -# - define the names for selecting the language in LANGUAGES. - -# -# Define the names for selecting Objective-C in LANGUAGES. -objc: cc1obj$(exeext) - -# Tell GNU make to ignore these if they exist. -.PHONY: objc - -# Use maximal warnings for this front end. -objc-warn = $(STRICT_WARN) - -# Language-specific object files for Objective C. -OBJC_OBJS = objc/objc-lang.o objc/objc-act.o - -cc1obj-dummy$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ - $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o \ - $(BACKEND) $(LIBS) - -cc1obj-checksum.c : cc1obj-dummy$(exeext) build/genchecksum$(build_exeext) - build/genchecksum$(build_exeext) cc1obj-dummy$(exeext) > $@ - -cc1obj-checksum.o : cc1obj-checksum.c - -cc1obj$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) cc1obj-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ - $(OBJC_OBJS) $(C_AND_OBJC_OBJS) cc1obj-checksum.o \ - $(BACKEND) $(LIBS) - -# Objective C language specific files. - -objc/objc-lang.o : objc/objc-lang.c \ - $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(C_TREE_H) $(DIAGNOSTIC_H) \ - $(GGC_H) langhooks.h $(LANGHOOKS_DEF_H) $(C_COMMON_H) gtype-objc.h \ - c-objc-common.h objc/objc-act.h $(TREE_GIMPLE_H) - -objc/objc-act.o : objc/objc-act.c \ - $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(TM_P_H) \ - $(EXPR_H) $(TARGET_H) $(C_TREE_H) $(DIAGNOSTIC_H) toplev.h $(FLAGS_H) \ - objc/objc-act.h input.h $(FUNCTION_H) output.h debug.h langhooks.h \ - $(LANGHOOKS_DEF_H) $(HASHTAB_H) $(C_PRAGMA_H) gt-objc-objc-act.h \ - $(TREE_GIMPLE_H) - -objc.srcextra: - -# -# Build hooks: - -objc.all.cross: -objc.start.encap: -objc.rest.encap: -objc.info: -objc.install-info: -objc.dvi: -objc.pdf: -objc.html: -objc.man: -objc.srcinfo: -objc.srcman: - -objc.tags: force - cd $(srcdir)/objc; etags -o TAGS.sub *.c *.h; \ - etags --include TAGS.sub --include ../TAGS.sub - -lang_checks += check-objc - -# -# Install hooks: -# cc1obj is installed elsewhere as part of $(COMPILERS). - -objc.install-common: - -objc.install-man: - -objc.uninstall: -# -# Clean hooks: -# A lot of the ancillary files are deleted by the main makefile. -# We just have to delete files specific to us. -objc.mostlyclean: - -rm -f objc/*$(objext) objc/xforward objc/fflags - -rm -f objc/*$(coverageexts) -objc.clean: objc.mostlyclean - -rm -rf objc-headers -objc.distclean: - -rm -f objc/Makefile objc/Make-host objc/Make-target - -rm -f objc/config.status objc/config.cache -objc.maintainer-clean: - -# -# Stage hooks: - -objc.stage1: stage1-start - -mv objc/*$(objext) stage1/objc -objc.stage2: stage2-start - -mv objc/*$(objext) stage2/objc -objc.stage3: stage3-start - -mv objc/*$(objext) stage3/objc -objc.stage4: stage4-start - -mv objc/*$(objext) stage4/objc -objc.stageprofile: stageprofile-start - -mv objc/*$(objext) stageprofile/objc -objc.stagefeedback: stagefeedback-start - -mv objc/*$(objext) stagefeedback/objc diff --git a/gcc/objc/README b/gcc/objc/README deleted file mode 100644 index f478d67dec8f..000000000000 --- a/gcc/objc/README +++ /dev/null @@ -1,97 +0,0 @@ - -GNU Objective C notes -********************* - -This document is to explain what has been done, and a little about how -specific features differ from other implementations. The runtime has -been completely rewritten in gcc 2.4. The earlier runtime had several -severe bugs and was rather incomplete. The compiler has had several -new features added as well. - -This is not documentation for Objective C, it is usable to someone -who knows Objective C from somewhere else. - - -Runtime API functions -===================== - -The runtime is modeled after the NeXT Objective C runtime. That is, -most functions have semantics as it is known from the NeXT. The -names, however, have changed. All runtime API functions have names -of lowercase letters and underscores as opposed to the -`traditional' mixed case names. - The runtime api functions are not documented as of now. -Someone offered to write it, and did it, but we were not allowed to -use it by his university (Very sad story). We have started writing -the documentation over again. This will be announced in appropriate -places when it becomes available. - - -Protocols -========= - -Protocols are now fully supported. The semantics is exactly as on the -NeXT. There is a flag to specify how protocols should be typechecked -when adopted to classes. The normal typechecker requires that all -methods in a given protocol must be implemented in the class that -adopts it -- it is not enough to inherit them. The flag -`-Wno-protocol' causes it to allow inherited methods, while -`-Wprotocols' is the default which requires them defined. - - -+initialize -=========== - -This method, if defined, is called before any other instance or class -methods of that particular class. This method is not inherited, and -is thus not called as initializer for a subclass that doesn't define -it itself. Thus, each +initialize method is called exactly once (or -never if no methods of that particular class is never called). -Besides this, it is allowed to have several +initialize methods, one -for each category. The order in which these (multiple methods) are -called is not well defined. I am not completely certain what the -semantics of this method is for other implementations, but this is -how it works for GNU Objective C. - - -Passivation/Activation/Typedstreams -=================================== - -This is supported in the style of NeXT TypedStream's. Consult the -headerfile Typedstreams.h for api functions. I (Kresten) have -rewritten it in Objective C, but this implementation is not part of -2.4, it is available from the GNU Objective C prerelease archive. - There is one difference worth noting concerning objects stored with -objc_write_object_reference (aka NXWriteObjectReference). When these -are read back in, their object is not guaranteed to be available until -the `-awake' method is called in the object that requests that object. -To objc_read_object you must pass a pointer to an id, which is valid -after exit from the function calling it (like e.g. an instance -variable). In general, you should not use objects read in until the --awake method is called. - - -Acknowledgements -================ - -The GNU Objective C team: Geoffrey Knauth (manager), -Tom Wood (compiler) and Kresten Krab Thorup - (runtime) would like to thank a some people for -participating in the development of the present GNU Objective C. - -Paul Burchard and Andrew McCallum - has been very helpful debugging the -runtime. Eric Herring has been very helpful -cleaning up after the documentation-copyright disaster and is now -helping with the new documentation. - -Steve Naroff and Richard Stallman - has been very helpful with implementation details -in the compiler. - - -Bug Reports -=========== - -Please read the section `Submitting Bugreports' of the gcc manual -before you submit any bugs. diff --git a/gcc/objc/config-lang.in b/gcc/objc/config-lang.in deleted file mode 100644 index f5224bf89ff0..000000000000 --- a/gcc/objc/config-lang.in +++ /dev/null @@ -1,40 +0,0 @@ -# Top level configure fragment for GNU Objective-C -# Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005 -# 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 2, 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 COPYING. If not, write to -#the Free Software Foundation, 51 Franklin Street, Fifth Floor, -#Boston, MA 02110-1301, USA. - -# Configure looks for the existence of this file to auto-config each language. -# We define several parameters used by configure: -# -# language - name of language as it would appear in $(LANGUAGES) -# compilers - value to add to $(COMPILERS) -# stagestuff - files to add to $(STAGESTUFF) - -language="objc" - -compilers="cc1obj\$(exeext)" - -stagestuff="cc1obj\$(exeext)" - -target_libs=target-libobjc - -# Most of the object files for cc1obj actually come from C. -lang_requires="c" - -gtfiles="\$(srcdir)/objc/objc-act.h \$(srcdir)/c-parser.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-common.c \$(srcdir)/c-common.h \$(srcdir)/c-pragma.c \$(srcdir)/objc/objc-act.c" diff --git a/gcc/objc/lang-specs.h b/gcc/objc/lang-specs.h deleted file mode 100644 index 446fd5336bec..000000000000 --- a/gcc/objc/lang-specs.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Definitions for specs for Objective-C. - Copyright (C) 1998, 1999, 2002, 2002, 2003, 2005 - 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* This is the contribution to the `default_compilers' array in gcc.c for - objc. */ - - {".m", "@objective-c", 0, 0, 0}, - {"@objective-c", - "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\ - %(cpp_options) %(cpp_debug_options)}\ - %{!E:%{!M:%{!MM:\ - %{traditional|ftraditional|traditional-cpp:\ -%eGNU Objective C no longer supports traditional compilation}\ - %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ - cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\ - %{!save-temps:%{!no-integrated-cpp:\ - cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ - %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, - {".mi", "@objc-cpp-output", 0, 0, 0}, - {"@objc-cpp-output", - "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ - %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, - {"@objective-c-header", - "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\ - %(cpp_options) %(cpp_debug_options)}\ - %{!E:%{!M:%{!MM:\ - %{traditional|ftraditional|traditional-cpp:\ -%eGNU Objective C no longer supports traditional compilation}\ - %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ - cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ - -o %g.s %{!o*:--output-pch=%i.gch}\ - %W{o*:--output-pch=%*}%V}\ - %{!save-temps:%{!no-integrated-cpp:\ - cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ - -o %g.s %{!o*:--output-pch=%i.gch}\ - %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c deleted file mode 100644 index 8658185c8ac0..000000000000 --- a/gcc/objc/objc-act.c +++ /dev/null @@ -1,9518 +0,0 @@ -/* Implement classes and message passing for Objective C. - Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - Contributed by Steve Naroff. - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* Purpose: This module implements the Objective-C 4.0 language. - - compatibility issues (with the Stepstone translator): - - - does not recognize the following 3.3 constructs. - @requires, @classes, @messages, = (...) - - methods with variable arguments must conform to ANSI standard. - - tagged structure definitions that appear in BOTH the interface - and implementation are not allowed. - - public/private: all instance variables are public within the - context of the implementation...I consider this to be a bug in - the translator. - - statically allocated objects are not supported. the user will - receive an error if this service is requested. - - code generation `options': - - */ - -#include "config.h" -#include "system.h" -#include "coretypes.h" -#include "tm.h" -#include "tree.h" -#include "rtl.h" -#include "tm_p.h" -#include "expr.h" - -#ifdef OBJCPLUS -#include "cp-tree.h" -#else -#include "c-tree.h" -#endif - -#include "c-common.h" -#include "c-pragma.h" -#include "flags.h" -#include "langhooks.h" -#include "objc-act.h" -#include "input.h" -#include "except.h" -#include "function.h" -#include "output.h" -#include "toplev.h" -#include "ggc.h" -#include "varray.h" -#include "debug.h" -#include "target.h" -#include "diagnostic.h" -#include "cgraph.h" -#include "tree-iterator.h" -#include "libfuncs.h" -#include "hashtab.h" -#include "langhooks-def.h" - -#define OBJC_VOID_AT_END void_list_node - -static unsigned int should_call_super_dealloc = 0; - -/* When building Objective-C++, we are not linking against the C front-end - and so need to replicate the C tree-construction functions in some way. */ -#ifdef OBJCPLUS -#define OBJCP_REMAP_FUNCTIONS -#include "objcp-decl.h" -#endif /* OBJCPLUS */ - -/* This is the default way of generating a method name. */ -/* I am not sure it is really correct. - Perhaps there's a danger that it will make name conflicts - if method names contain underscores. -- rms. */ -#ifndef OBJC_GEN_METHOD_LABEL -#define OBJC_GEN_METHOD_LABEL(BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME, NUM) \ - do { \ - char *temp; \ - sprintf ((BUF), "_%s_%s_%s_%s", \ - ((IS_INST) ? "i" : "c"), \ - (CLASS_NAME), \ - ((CAT_NAME)? (CAT_NAME) : ""), \ - (SEL_NAME)); \ - for (temp = (BUF); *temp; temp++) \ - if (*temp == ':') *temp = '_'; \ - } while (0) -#endif - -/* These need specifying. */ -#ifndef OBJC_FORWARDING_STACK_OFFSET -#define OBJC_FORWARDING_STACK_OFFSET 0 -#endif - -#ifndef OBJC_FORWARDING_MIN_OFFSET -#define OBJC_FORWARDING_MIN_OFFSET 0 -#endif - -/* Set up for use of obstacks. */ - -#include "obstack.h" - -/* This obstack is used to accumulate the encoding of a data type. */ -static struct obstack util_obstack; - -/* This points to the beginning of obstack contents, so we can free - the whole contents. */ -char *util_firstobj; - -/* The version identifies which language generation and runtime - the module (file) was compiled for, and is recorded in the - module descriptor. */ - -#define OBJC_VERSION (flag_next_runtime ? 6 : 8) -#define PROTOCOL_VERSION 2 - -/* (Decide if these can ever be validly changed.) */ -#define OBJC_ENCODE_INLINE_DEFS 0 -#define OBJC_ENCODE_DONT_INLINE_DEFS 1 - -/*** Private Interface (procedures) ***/ - -/* Used by compile_file. */ - -static void init_objc (void); -static void finish_objc (void); - -/* Code generation. */ - -static tree objc_build_constructor (tree, tree); -static tree build_objc_method_call (int, tree, tree, tree, tree); -static tree get_proto_encoding (tree); -static tree lookup_interface (tree); -static tree objc_add_static_instance (tree, tree); - -static tree start_class (enum tree_code, tree, tree, tree); -static tree continue_class (tree); -static void finish_class (tree); -static void start_method_def (tree); -#ifdef OBJCPLUS -static void objc_start_function (tree, tree, tree, tree); -#else -static void objc_start_function (tree, tree, tree, struct c_arg_info *); -#endif -static tree start_protocol (enum tree_code, tree, tree); -static tree build_method_decl (enum tree_code, tree, tree, tree, bool); -static tree objc_add_method (tree, tree, int); -static tree add_instance_variable (tree, int, tree); -static tree build_ivar_reference (tree); -static tree is_ivar (tree, tree); - -static void build_objc_exception_stuff (void); -static void build_next_objc_exception_stuff (void); - -/* We only need the following for ObjC; ObjC++ will use C++'s definition - of DERIVED_FROM_P. */ -#ifndef OBJCPLUS -static bool objc_derived_from_p (tree, tree); -#define DERIVED_FROM_P(PARENT, CHILD) objc_derived_from_p (PARENT, CHILD) -#endif -static void objc_xref_basetypes (tree, tree); - -static void build_class_template (void); -static void build_selector_template (void); -static void build_category_template (void); -static void build_super_template (void); -static tree build_protocol_initializer (tree, tree, tree, tree, tree); -static tree get_class_ivars (tree, bool); -static tree generate_protocol_list (tree); -static void build_protocol_reference (tree); - -#ifdef OBJCPLUS -static void objc_generate_cxx_cdtors (void); -#endif - -static const char *synth_id_with_class_suffix (const char *, tree); - -/* Hash tables to manage the global pool of method prototypes. */ - -hash *nst_method_hash_list = 0; -hash *cls_method_hash_list = 0; - -static hash hash_lookup (hash *, tree); -static tree lookup_method (tree, tree); -static tree lookup_method_static (tree, tree, int); - -enum string_section -{ - class_names, /* class, category, protocol, module names */ - meth_var_names, /* method and variable names */ - meth_var_types /* method and variable type descriptors */ -}; - -static tree add_objc_string (tree, enum string_section); -static tree build_objc_string_decl (enum string_section); -static void build_selector_table_decl (void); - -/* Protocol additions. */ - -static tree lookup_protocol (tree); -static tree lookup_and_install_protocols (tree); - -/* Type encoding. */ - -static void encode_type_qualifiers (tree); -static void encode_type (tree, int, int); -static void encode_field_decl (tree, int, int); - -#ifdef OBJCPLUS -static void really_start_method (tree, tree); -#else -static void really_start_method (tree, struct c_arg_info *); -#endif -static int comp_proto_with_proto (tree, tree, int); -static void objc_push_parm (tree); -#ifdef OBJCPLUS -static tree objc_get_parm_info (int); -#else -static struct c_arg_info *objc_get_parm_info (int); -#endif - -/* Utilities for debugging and error diagnostics. */ - -static void warn_with_method (const char *, int, tree); -static char *gen_type_name (tree); -static char *gen_type_name_0 (tree); -static char *gen_method_decl (tree); -static char *gen_declaration (tree); - -/* Everything else. */ - -static tree create_field_decl (tree, const char *); -static void add_class_reference (tree); -static void build_protocol_template (void); -static tree encode_method_prototype (tree); -static void generate_classref_translation_entry (tree); -static void handle_class_ref (tree); -static void generate_struct_by_value_array (void) - ATTRIBUTE_NORETURN; -static void mark_referenced_methods (void); -static void generate_objc_image_info (void); - -/*** Private Interface (data) ***/ - -/* Reserved tag definitions. */ - -#define OBJECT_TYPEDEF_NAME "id" -#define CLASS_TYPEDEF_NAME "Class" - -#define TAG_OBJECT "objc_object" -#define TAG_CLASS "objc_class" -#define TAG_SUPER "objc_super" -#define TAG_SELECTOR "objc_selector" - -#define UTAG_CLASS "_objc_class" -#define UTAG_IVAR "_objc_ivar" -#define UTAG_IVAR_LIST "_objc_ivar_list" -#define UTAG_METHOD "_objc_method" -#define UTAG_METHOD_LIST "_objc_method_list" -#define UTAG_CATEGORY "_objc_category" -#define UTAG_MODULE "_objc_module" -#define UTAG_SYMTAB "_objc_symtab" -#define UTAG_SUPER "_objc_super" -#define UTAG_SELECTOR "_objc_selector" - -#define UTAG_PROTOCOL "_objc_protocol" -#define UTAG_METHOD_PROTOTYPE "_objc_method_prototype" -#define UTAG_METHOD_PROTOTYPE_LIST "_objc__method_prototype_list" - -/* Note that the string object global name is only needed for the - NeXT runtime. */ -#define STRING_OBJECT_GLOBAL_FORMAT "_%sClassReference" - -#define PROTOCOL_OBJECT_CLASS_NAME "Protocol" - -static const char *TAG_GETCLASS; -static const char *TAG_GETMETACLASS; -static const char *TAG_MSGSEND; -static const char *TAG_MSGSENDSUPER; -/* The NeXT Objective-C messenger may have two extra entry points, for use - when returning a structure. */ -static const char *TAG_MSGSEND_STRET; -static const char *TAG_MSGSENDSUPER_STRET; -static const char *default_constant_string_class_name; - -/* Runtime metadata flags. */ -#define CLS_FACTORY 0x0001L -#define CLS_META 0x0002L -#define CLS_HAS_CXX_STRUCTORS 0x2000L - -#define OBJC_MODIFIER_STATIC 0x00000001 -#define OBJC_MODIFIER_FINAL 0x00000002 -#define OBJC_MODIFIER_PUBLIC 0x00000004 -#define OBJC_MODIFIER_PRIVATE 0x00000008 -#define OBJC_MODIFIER_PROTECTED 0x00000010 -#define OBJC_MODIFIER_NATIVE 0x00000020 -#define OBJC_MODIFIER_SYNCHRONIZED 0x00000040 -#define OBJC_MODIFIER_ABSTRACT 0x00000080 -#define OBJC_MODIFIER_VOLATILE 0x00000100 -#define OBJC_MODIFIER_TRANSIENT 0x00000200 -#define OBJC_MODIFIER_NONE_SPECIFIED 0x80000000 - -/* NeXT-specific tags. */ - -#define TAG_MSGSEND_NONNIL "objc_msgSendNonNil" -#define TAG_MSGSEND_NONNIL_STRET "objc_msgSendNonNil_stret" -#define TAG_EXCEPTIONEXTRACT "objc_exception_extract" -#define TAG_EXCEPTIONTRYENTER "objc_exception_try_enter" -#define TAG_EXCEPTIONTRYEXIT "objc_exception_try_exit" -#define TAG_EXCEPTIONMATCH "objc_exception_match" -#define TAG_EXCEPTIONTHROW "objc_exception_throw" -#define TAG_SYNCENTER "objc_sync_enter" -#define TAG_SYNCEXIT "objc_sync_exit" -#define TAG_SETJMP "_setjmp" -#define UTAG_EXCDATA "_objc_exception_data" - -#define TAG_ASSIGNIVAR "objc_assign_ivar" -#define TAG_ASSIGNGLOBAL "objc_assign_global" -#define TAG_ASSIGNSTRONGCAST "objc_assign_strongCast" - -/* Branch entry points. All that matters here are the addresses; - functions with these names do not really exist in libobjc. */ - -#define TAG_MSGSEND_FAST "objc_msgSend_Fast" -#define TAG_ASSIGNIVAR_FAST "objc_assign_ivar_Fast" - -#define TAG_CXX_CONSTRUCT ".cxx_construct" -#define TAG_CXX_DESTRUCT ".cxx_destruct" - -/* GNU-specific tags. */ - -#define TAG_EXECCLASS "__objc_exec_class" -#define TAG_GNUINIT "__objc_gnu_init" - -/* Flags for lookup_method_static(). */ -#define OBJC_LOOKUP_CLASS 1 /* Look for class methods. */ -#define OBJC_LOOKUP_NO_SUPER 2 /* Do not examine superclasses. */ - -/* The OCTI_... enumeration itself is in objc/objc-act.h. */ -tree objc_global_trees[OCTI_MAX]; - -static void handle_impent (struct imp_entry *); - -struct imp_entry *imp_list = 0; -int imp_count = 0; /* `@implementation' */ -int cat_count = 0; /* `@category' */ - -enum tree_code objc_inherit_code; -int objc_public_flag; - -/* Use to generate method labels. */ -static int method_slot = 0; - -#define BUFSIZE 1024 - -static char *errbuf; /* Buffer for error diagnostics */ - -/* Data imported from tree.c. */ - -extern enum debug_info_type write_symbols; - -/* Data imported from toplev.c. */ - -extern const char *dump_base_name; - -static int flag_typed_selectors; - -/* Store all constructed constant strings in a hash table so that - they get uniqued properly. */ - -struct string_descriptor GTY(()) -{ - /* The literal argument . */ - tree literal; - - /* The resulting constant string. */ - tree constructor; -}; - -static GTY((param_is (struct string_descriptor))) htab_t string_htab; - -/* Store the EH-volatilized types in a hash table, for easy retrieval. */ -struct volatilized_type GTY(()) -{ - tree type; -}; - -static GTY((param_is (struct volatilized_type))) htab_t volatilized_htab; - -FILE *gen_declaration_file; - -/* Tells "encode_pointer/encode_aggregate" whether we are generating - type descriptors for instance variables (as opposed to methods). - Type descriptors for instance variables contain more information - than methods (for static typing and embedded structures). */ - -static int generating_instance_variables = 0; - -/* Some platforms pass small structures through registers versus - through an invisible pointer. Determine at what size structure is - the transition point between the two possibilities. */ - -static void -generate_struct_by_value_array (void) -{ - tree type; - tree field_decl, field_decl_chain; - int i, j; - int aggregate_in_mem[32]; - int found = 0; - - /* Presumably no platform passes 32 byte structures in a register. */ - for (i = 1; i < 32; i++) - { - char buffer[5]; - - /* Create an unnamed struct that has `i' character components */ - type = start_struct (RECORD_TYPE, NULL_TREE); - - strcpy (buffer, "c1"); - field_decl = create_field_decl (char_type_node, - buffer); - field_decl_chain = field_decl; - - for (j = 1; j < i; j++) - { - sprintf (buffer, "c%d", j + 1); - field_decl = create_field_decl (char_type_node, - buffer); - chainon (field_decl_chain, field_decl); - } - finish_struct (type, field_decl_chain, NULL_TREE); - - aggregate_in_mem[i] = aggregate_value_p (type, 0); - if (!aggregate_in_mem[i]) - found = 1; - } - - /* We found some structures that are returned in registers instead of memory - so output the necessary data. */ - if (found) - { - for (i = 31; i >= 0; i--) - if (!aggregate_in_mem[i]) - break; - printf ("#define OBJC_MAX_STRUCT_BY_VALUE %d\n\n", i); - - /* The first member of the structure is always 0 because we don't handle - structures with 0 members */ - printf ("static int struct_forward_array[] = {\n 0"); - - for (j = 1; j <= i; j++) - printf (", %d", aggregate_in_mem[j]); - printf ("\n};\n"); - } - - exit (0); -} - -bool -objc_init (void) -{ -#ifdef OBJCPLUS - if (cxx_init () == false) -#else - if (c_objc_common_init () == false) -#endif - return false; - -#ifndef USE_MAPPED_LOCATION - /* Force the line number back to 0; check_newline will have - raised it to 1, which will make the builtin functions appear - not to be built in. */ - input_line = 0; -#endif - - /* If gen_declaration desired, open the output file. */ - if (flag_gen_declaration) - { - register char * const dumpname = concat (dump_base_name, ".decl", NULL); - gen_declaration_file = fopen (dumpname, "w"); - if (gen_declaration_file == 0) - fatal_error ("can't open %s: %m", dumpname); - free (dumpname); - } - - if (flag_next_runtime) - { - TAG_GETCLASS = "objc_getClass"; - TAG_GETMETACLASS = "objc_getMetaClass"; - TAG_MSGSEND = "objc_msgSend"; - TAG_MSGSENDSUPER = "objc_msgSendSuper"; - TAG_MSGSEND_STRET = "objc_msgSend_stret"; - TAG_MSGSENDSUPER_STRET = "objc_msgSendSuper_stret"; - default_constant_string_class_name = "NSConstantString"; - } - else - { - TAG_GETCLASS = "objc_get_class"; - TAG_GETMETACLASS = "objc_get_meta_class"; - TAG_MSGSEND = "objc_msg_lookup"; - TAG_MSGSENDSUPER = "objc_msg_lookup_super"; - /* GNU runtime does not provide special functions to support - structure-returning methods. */ - default_constant_string_class_name = "NXConstantString"; - flag_typed_selectors = 1; - } - - init_objc (); - - if (print_struct_values) - generate_struct_by_value_array (); - - return true; -} - -void -objc_finish_file (void) -{ - mark_referenced_methods (); - -#ifdef OBJCPLUS - /* We need to instantiate templates _before_ we emit ObjC metadata; - if we do not, some metadata (such as selectors) may go missing. */ - at_eof = 1; - instantiate_pending_templates (0); -#endif - - /* Finalize Objective-C runtime data. No need to generate tables - and code if only checking syntax, or if generating a PCH file. */ - if (!flag_syntax_only && !pch_file) - finish_objc (); - - if (gen_declaration_file) - fclose (gen_declaration_file); - -#ifdef OBJCPLUS - cp_finish_file (); -#endif -} - -/* Return the first occurrence of a method declaration corresponding - to sel_name in rproto_list. Search rproto_list recursively. - If is_class is 0, search for instance methods, otherwise for class - methods. */ -static tree -lookup_method_in_protocol_list (tree rproto_list, tree sel_name, - int is_class) -{ - tree rproto, p; - tree fnd = 0; - - for (rproto = rproto_list; rproto; rproto = TREE_CHAIN (rproto)) - { - p = TREE_VALUE (rproto); - - if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE) - { - if ((fnd = lookup_method (is_class - ? PROTOCOL_CLS_METHODS (p) - : PROTOCOL_NST_METHODS (p), sel_name))) - ; - else if (PROTOCOL_LIST (p)) - fnd = lookup_method_in_protocol_list (PROTOCOL_LIST (p), - sel_name, is_class); - } - else - { - ; /* An identifier...if we could not find a protocol. */ - } - - if (fnd) - return fnd; - } - - return 0; -} - -static tree -lookup_protocol_in_reflist (tree rproto_list, tree lproto) -{ - tree rproto, p; - - /* Make sure the protocol is supported by the object on the rhs. */ - if (TREE_CODE (lproto) == PROTOCOL_INTERFACE_TYPE) - { - tree fnd = 0; - for (rproto = rproto_list; rproto; rproto = TREE_CHAIN (rproto)) - { - p = TREE_VALUE (rproto); - - if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE) - { - if (lproto == p) - fnd = lproto; - - else if (PROTOCOL_LIST (p)) - fnd = lookup_protocol_in_reflist (PROTOCOL_LIST (p), lproto); - } - - if (fnd) - return fnd; - } - } - else - { - ; /* An identifier...if we could not find a protocol. */ - } - - return 0; -} - -void -objc_start_class_interface (tree class, tree super_class, tree protos) -{ - objc_interface_context - = objc_ivar_context - = start_class (CLASS_INTERFACE_TYPE, class, super_class, protos); - objc_public_flag = 0; -} - -void -objc_start_category_interface (tree class, tree categ, tree protos) -{ - objc_interface_context - = start_class (CATEGORY_INTERFACE_TYPE, class, categ, protos); - objc_ivar_chain - = continue_class (objc_interface_context); -} - -void -objc_start_protocol (tree name, tree protos) -{ - objc_interface_context - = start_protocol (PROTOCOL_INTERFACE_TYPE, name, protos); -} - -void -objc_continue_interface (void) -{ - objc_ivar_chain - = continue_class (objc_interface_context); -} - -void -objc_finish_interface (void) -{ - finish_class (objc_interface_context); - objc_interface_context = NULL_TREE; -} - -void -objc_start_class_implementation (tree class, tree super_class) -{ - objc_implementation_context - = objc_ivar_context - = start_class (CLASS_IMPLEMENTATION_TYPE, class, super_class, NULL_TREE); - objc_public_flag = 0; -} - -void -objc_start_category_implementation (tree class, tree categ) -{ - objc_implementation_context - = start_class (CATEGORY_IMPLEMENTATION_TYPE, class, categ, NULL_TREE); - objc_ivar_chain - = continue_class (objc_implementation_context); -} - -void -objc_continue_implementation (void) -{ - objc_ivar_chain - = continue_class (objc_implementation_context); -} - -void -objc_finish_implementation (void) -{ -#ifdef OBJCPLUS - if (flag_objc_call_cxx_cdtors) - objc_generate_cxx_cdtors (); -#endif - - if (objc_implementation_context) - { - finish_class (objc_implementation_context); - objc_ivar_chain = NULL_TREE; - objc_implementation_context = NULL_TREE; - } - else - warning (0, "%<@end%> must appear in an @implementation context"); -} - -void -objc_set_visibility (int visibility) -{ - objc_public_flag = visibility; -} - -void -objc_set_method_type (enum tree_code type) -{ - objc_inherit_code = (type == PLUS_EXPR - ? CLASS_METHOD_DECL - : INSTANCE_METHOD_DECL); -} - -tree -objc_build_method_signature (tree rettype, tree selector, - tree optparms, bool ellipsis) -{ - return build_method_decl (objc_inherit_code, rettype, selector, - optparms, ellipsis); -} - -void -objc_add_method_declaration (tree decl) -{ - if (!objc_interface_context) - fatal_error ("method declaration not in @interface context"); - - objc_add_method (objc_interface_context, - decl, - objc_inherit_code == CLASS_METHOD_DECL); -} - -void -objc_start_method_definition (tree decl) -{ - if (!objc_implementation_context) - fatal_error ("method definition not in @implementation context"); - - objc_add_method (objc_implementation_context, - decl, - objc_inherit_code == CLASS_METHOD_DECL); - start_method_def (decl); -} - -void -objc_add_instance_variable (tree decl) -{ - (void) add_instance_variable (objc_ivar_context, - objc_public_flag, - decl); -} - -/* Return 1 if IDENT is an ObjC/ObjC++ reserved keyword in the context of - an '@'. */ - -int -objc_is_reserved_word (tree ident) -{ - unsigned char code = C_RID_CODE (ident); - - return (OBJC_IS_AT_KEYWORD (code) -#ifdef OBJCPLUS - || code == RID_CLASS || code == RID_PUBLIC - || code == RID_PROTECTED || code == RID_PRIVATE - || code == RID_TRY || code == RID_THROW || code == RID_CATCH -#endif - ); -} - -/* Return true if TYPE is 'id'. */ - -static bool -objc_is_object_id (tree type) -{ - return OBJC_TYPE_NAME (type) == objc_object_id; -} - -static bool -objc_is_class_id (tree type) -{ - return OBJC_TYPE_NAME (type) == objc_class_id; -} - -/* Construct a C struct with same name as CLASS, a base struct with tag - SUPER_NAME (if any), and FIELDS indicated. */ - -static tree -objc_build_struct (tree class, tree fields, tree super_name) -{ - tree name = CLASS_NAME (class); - tree s = start_struct (RECORD_TYPE, name); - tree super = (super_name ? xref_tag (RECORD_TYPE, super_name) : NULL_TREE); - tree t, objc_info = NULL_TREE; - - if (super) - { - /* Prepend a packed variant of the base class into the layout. This - is necessary to preserve ObjC ABI compatibility. */ - tree base = build_decl (FIELD_DECL, NULL_TREE, super); - tree field = TYPE_FIELDS (super); - - while (field && TREE_CHAIN (field) - && TREE_CODE (TREE_CHAIN (field)) == FIELD_DECL) - field = TREE_CHAIN (field); - - /* For ObjC ABI purposes, the "packed" size of a base class is the - the sum of the offset and the size (in bits) of the last field - in the class. */ - DECL_SIZE (base) - = (field && TREE_CODE (field) == FIELD_DECL - ? size_binop (PLUS_EXPR, - size_binop (PLUS_EXPR, - size_binop - (MULT_EXPR, - convert (bitsizetype, - DECL_FIELD_OFFSET (field)), - bitsize_int (BITS_PER_UNIT)), - DECL_FIELD_BIT_OFFSET (field)), - DECL_SIZE (field)) - : bitsize_zero_node); - DECL_SIZE_UNIT (base) - = size_binop (FLOOR_DIV_EXPR, convert (sizetype, DECL_SIZE (base)), - size_int (BITS_PER_UNIT)); - DECL_ARTIFICIAL (base) = 1; - DECL_ALIGN (base) = 1; - DECL_FIELD_CONTEXT (base) = s; -#ifdef OBJCPLUS - DECL_FIELD_IS_BASE (base) = 1; - - if (fields) - TREE_NO_WARNING (fields) = 1; /* Suppress C++ ABI warnings -- we */ -#endif /* are following the ObjC ABI here. */ - TREE_CHAIN (base) = fields; - fields = base; - } - - /* NB: Calling finish_struct() may cause type TYPE_LANG_SPECIFIC fields - in all variants of this RECORD_TYPE to be clobbered, but it is therein - that we store protocol conformance info (e.g., 'NSObject '). - Hence, we must squirrel away the ObjC-specific information before calling - finish_struct(), and then reinstate it afterwards. */ - - for (t = TYPE_NEXT_VARIANT (s); t; t = TYPE_NEXT_VARIANT (t)) - objc_info - = chainon (objc_info, - build_tree_list (NULL_TREE, TYPE_OBJC_INFO (t))); - - /* Point the struct at its related Objective-C class. */ - INIT_TYPE_OBJC_INFO (s); - TYPE_OBJC_INTERFACE (s) = class; - - s = finish_struct (s, fields, NULL_TREE); - - for (t = TYPE_NEXT_VARIANT (s); t; - t = TYPE_NEXT_VARIANT (t), objc_info = TREE_CHAIN (objc_info)) - { - TYPE_OBJC_INFO (t) = TREE_VALUE (objc_info); - /* Replace the IDENTIFIER_NODE with an actual @interface. */ - TYPE_OBJC_INTERFACE (t) = class; - } - - /* Use TYPE_BINFO structures to point at the super class, if any. */ - objc_xref_basetypes (s, super); - - /* Mark this struct as a class template. */ - CLASS_STATIC_TEMPLATE (class) = s; - - return s; -} - -/* Build a type differing from TYPE only in that TYPE_VOLATILE is set. - Unlike tree.c:build_qualified_type(), preserve TYPE_LANG_SPECIFIC in the - process. */ -static tree -objc_build_volatilized_type (tree type) -{ - tree t; - - /* Check if we have not constructed the desired variant already. */ - for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) - { - /* The type qualifiers must (obviously) match up. */ - if (!TYPE_VOLATILE (t) - || (TYPE_READONLY (t) != TYPE_READONLY (type)) - || (TYPE_RESTRICT (t) != TYPE_RESTRICT (type))) - continue; - - /* For pointer types, the pointees (and hence their TYPE_LANG_SPECIFIC - info, if any) must match up. */ - if (POINTER_TYPE_P (t) - && (TREE_TYPE (t) != TREE_TYPE (type))) - continue; - - /* Everything matches up! */ - return t; - } - - /* Ok, we could not re-use any of the pre-existing variants. Create - a new one. */ - t = build_variant_type_copy (type); - TYPE_VOLATILE (t) = 1; - - return t; -} - -/* Mark DECL as being 'volatile' for purposes of Darwin - _setjmp()/_longjmp() exception handling. Called from - objc_mark_locals_volatile(). */ -void -objc_volatilize_decl (tree decl) -{ - /* Do not mess with variables that are 'static' or (already) - 'volatile'. */ - if (!TREE_THIS_VOLATILE (decl) && !TREE_STATIC (decl) - && (TREE_CODE (decl) == VAR_DECL - || TREE_CODE (decl) == PARM_DECL)) - { - tree t = TREE_TYPE (decl); - struct volatilized_type key; - void **loc; - - t = objc_build_volatilized_type (t); - key.type = t; - loc = htab_find_slot (volatilized_htab, &key, INSERT); - - if (!*loc) - { - *loc = ggc_alloc (sizeof (key)); - ((struct volatilized_type *) *loc)->type = t; - } - - TREE_TYPE (decl) = t; - TREE_THIS_VOLATILE (decl) = 1; - TREE_SIDE_EFFECTS (decl) = 1; - DECL_REGISTER (decl) = 0; -#ifndef OBJCPLUS - C_DECL_REGISTER (decl) = 0; -#endif - } -} - -/* Check if protocol PROTO is adopted (directly or indirectly) by class CLS - (including its categoreis and superclasses) or by object type TYP. - Issue a warning if PROTO is not adopted anywhere and WARN is set. */ - -static bool -objc_lookup_protocol (tree proto, tree cls, tree typ, bool warn) -{ - bool class_type = (cls != NULL_TREE); - - while (cls) - { - tree c; - - /* Check protocols adopted by the class and its categories. */ - for (c = cls; c; c = CLASS_CATEGORY_LIST (c)) - { - if (lookup_protocol_in_reflist (CLASS_PROTOCOL_LIST (c), proto)) - return true; - } - - /* Repeat for superclasses. */ - cls = lookup_interface (CLASS_SUPER_NAME (cls)); - } - - /* Check for any protocols attached directly to the object type. */ - if (TYPE_HAS_OBJC_INFO (typ)) - { - if (lookup_protocol_in_reflist (TYPE_OBJC_PROTOCOL_LIST (typ), proto)) - return true; - } - - if (warn) - { - strcpy (errbuf, class_type ? "class \'" : "type \'"); - gen_type_name_0 (class_type ? typ : TYPE_POINTER_TO (typ)); - strcat (errbuf, "\' does not "); - /* NB: Types 'id' and 'Class' cannot reasonably be described as - "implementing" a given protocol, since they do not have an - implementation. */ - strcat (errbuf, class_type ? "implement" : "conform to"); - strcat (errbuf, " the \'"); - strcat (errbuf, IDENTIFIER_POINTER (PROTOCOL_NAME (proto))); - strcat (errbuf, "\' protocol"); - warning (0, errbuf); - } - - return false; -} - -/* Check if class RCLS and instance struct type RTYP conform to at least the - same protocols that LCLS and LTYP conform to. */ - -static bool -objc_compare_protocols (tree lcls, tree ltyp, tree rcls, tree rtyp, bool warn) -{ - tree p; - bool have_lproto = false; - - while (lcls) - { - /* NB: We do _not_ look at categories defined for LCLS; these may or - may not get loaded in, and therefore it is unreasonable to require - that RCLS/RTYP must implement any of their protocols. */ - for (p = CLASS_PROTOCOL_LIST (lcls); p; p = TREE_CHAIN (p)) - { - have_lproto = true; - - if (!objc_lookup_protocol (TREE_VALUE (p), rcls, rtyp, warn)) - return warn; - } - - /* Repeat for superclasses. */ - lcls = lookup_interface (CLASS_SUPER_NAME (lcls)); - } - - /* Check for any protocols attached directly to the object type. */ - if (TYPE_HAS_OBJC_INFO (ltyp)) - { - for (p = TYPE_OBJC_PROTOCOL_LIST (ltyp); p; p = TREE_CHAIN (p)) - { - have_lproto = true; - - if (!objc_lookup_protocol (TREE_VALUE (p), rcls, rtyp, warn)) - return warn; - } - } - - /* NB: If LTYP and LCLS have no protocols to search for, return 'true' - vacuously, _unless_ RTYP is a protocol-qualified 'id'. We can get - away with simply checking for 'id' or 'Class' (!RCLS), since this - routine will not get called in other cases. */ - return have_lproto || (rcls != NULL_TREE); -} - -/* Determine if it is permissible to assign (if ARGNO is greater than -3) - an instance of RTYP to an instance of LTYP or to compare the two - (if ARGNO is equal to -3), per ObjC type system rules. Before - returning 'true', this routine may issue warnings related to, e.g., - protocol conformance. When returning 'false', the routine must - produce absolutely no warnings; the C or C++ front-end will do so - instead, if needed. If either LTYP or RTYP is not an Objective-C type, - the routine must return 'false'. - - The ARGNO parameter is encoded as follows: - >= 1 Parameter number (CALLEE contains function being called); - 0 Return value; - -1 Assignment; - -2 Initialization; - -3 Comparison (LTYP and RTYP may match in either direction). */ - -bool -objc_compare_types (tree ltyp, tree rtyp, int argno, tree callee) -{ - tree lcls, rcls, lproto, rproto; - bool pointers_compatible; - - /* We must be dealing with pointer types */ - if (!POINTER_TYPE_P (ltyp) || !POINTER_TYPE_P (rtyp)) - return false; - - do - { - ltyp = TREE_TYPE (ltyp); /* Remove indirections. */ - rtyp = TREE_TYPE (rtyp); - } - while (POINTER_TYPE_P (ltyp) && POINTER_TYPE_P (rtyp)); - - /* Past this point, we are only interested in ObjC class instances, - or 'id' or 'Class'. */ - if (TREE_CODE (ltyp) != RECORD_TYPE || TREE_CODE (rtyp) != RECORD_TYPE) - return false; - - if (!objc_is_object_id (ltyp) && !objc_is_class_id (ltyp) - && !TYPE_HAS_OBJC_INFO (ltyp)) - return false; - - if (!objc_is_object_id (rtyp) && !objc_is_class_id (rtyp) - && !TYPE_HAS_OBJC_INFO (rtyp)) - return false; - - /* Past this point, we are committed to returning 'true' to the caller. - However, we can still warn about type and/or protocol mismatches. */ - - if (TYPE_HAS_OBJC_INFO (ltyp)) - { - lcls = TYPE_OBJC_INTERFACE (ltyp); - lproto = TYPE_OBJC_PROTOCOL_LIST (ltyp); - } - else - lcls = lproto = NULL_TREE; - - if (TYPE_HAS_OBJC_INFO (rtyp)) - { - rcls = TYPE_OBJC_INTERFACE (rtyp); - rproto = TYPE_OBJC_PROTOCOL_LIST (rtyp); - } - else - rcls = rproto = NULL_TREE; - - /* If we could not find an @interface declaration, we must have - only seen a @class declaration; for purposes of type comparison, - treat it as a stand-alone (root) class. */ - - if (lcls && TREE_CODE (lcls) == IDENTIFIER_NODE) - lcls = NULL_TREE; - - if (rcls && TREE_CODE (rcls) == IDENTIFIER_NODE) - rcls = NULL_TREE; - - /* If either type is an unqualified 'id', we're done. */ - if ((!lproto && objc_is_object_id (ltyp)) - || (!rproto && objc_is_object_id (rtyp))) - return true; - - pointers_compatible = (TYPE_MAIN_VARIANT (ltyp) == TYPE_MAIN_VARIANT (rtyp)); - - /* If the underlying types are the same, and at most one of them has - a protocol list, we do not need to issue any diagnostics. */ - if (pointers_compatible && (!lproto || !rproto)) - return true; - - /* If exactly one of the types is 'Class', issue a diagnostic; any - exceptions of this rule have already been handled. */ - if (objc_is_class_id (ltyp) ^ objc_is_class_id (rtyp)) - pointers_compatible = false; - /* Otherwise, check for inheritance relations. */ - else - { - if (!pointers_compatible) - pointers_compatible - = (objc_is_object_id (ltyp) || objc_is_object_id (rtyp)); - - if (!pointers_compatible) - pointers_compatible = DERIVED_FROM_P (ltyp, rtyp); - - if (!pointers_compatible && argno == -3) - pointers_compatible = DERIVED_FROM_P (rtyp, ltyp); - } - - /* If the pointers match modulo protocols, check for protocol conformance - mismatches. */ - if (pointers_compatible) - { - pointers_compatible = objc_compare_protocols (lcls, ltyp, rcls, rtyp, - argno != -3); - - if (!pointers_compatible && argno == -3) - pointers_compatible = objc_compare_protocols (rcls, rtyp, lcls, ltyp, - argno != -3); - } - - if (!pointers_compatible) - { - /* NB: For the time being, we shall make our warnings look like their - C counterparts. In the future, we may wish to make them more - ObjC-specific. */ - switch (argno) - { - case -3: - warning (0, "comparison of distinct Objective-C types lacks a cast"); - break; - - case -2: - warning (0, "initialization from distinct Objective-C type"); - break; - - case -1: - warning (0, "assignment from distinct Objective-C type"); - break; - - case 0: - warning (0, "distinct Objective-C type in return"); - break; - - default: - warning (0, "passing argument %d of %qE from distinct " - "Objective-C type", argno, callee); - break; - } - } - - return true; -} - -/* Check if LTYP and RTYP have the same type qualifiers. If either type - lives in the volatilized hash table, ignore the 'volatile' bit when - making the comparison. */ - -bool -objc_type_quals_match (tree ltyp, tree rtyp) -{ - int lquals = TYPE_QUALS (ltyp), rquals = TYPE_QUALS (rtyp); - struct volatilized_type key; - - key.type = ltyp; - - if (htab_find_slot (volatilized_htab, &key, NO_INSERT)) - lquals &= ~TYPE_QUAL_VOLATILE; - - key.type = rtyp; - - if (htab_find_slot (volatilized_htab, &key, NO_INSERT)) - rquals &= ~TYPE_QUAL_VOLATILE; - - return (lquals == rquals); -} - -#ifndef OBJCPLUS -/* Determine if CHILD is derived from PARENT. The routine assumes that - both parameters are RECORD_TYPEs, and is non-reflexive. */ - -static bool -objc_derived_from_p (tree parent, tree child) -{ - parent = TYPE_MAIN_VARIANT (parent); - - for (child = TYPE_MAIN_VARIANT (child); - TYPE_BINFO (child) && BINFO_N_BASE_BINFOS (TYPE_BINFO (child));) - { - child = TYPE_MAIN_VARIANT (BINFO_TYPE (BINFO_BASE_BINFO - (TYPE_BINFO (child), - 0))); - - if (child == parent) - return true; - } - - return false; -} -#endif - -static tree -objc_build_component_ref (tree datum, tree component) -{ - /* If COMPONENT is NULL, the caller is referring to the anonymous - base class field. */ - if (!component) - { - tree base = TYPE_FIELDS (TREE_TYPE (datum)); - - return build3 (COMPONENT_REF, TREE_TYPE (base), datum, base, NULL_TREE); - } - - /* The 'build_component_ref' routine has been removed from the C++ - front-end, but 'finish_class_member_access_expr' seems to be - a worthy substitute. */ -#ifdef OBJCPLUS - return finish_class_member_access_expr (datum, component, false); -#else - return build_component_ref (datum, component); -#endif -} - -/* Recursively copy inheritance information rooted at BINFO. To do this, - we emulate the song and dance performed by cp/tree.c:copy_binfo(). */ - -static tree -objc_copy_binfo (tree binfo) -{ - tree btype = BINFO_TYPE (binfo); - tree binfo2 = make_tree_binfo (BINFO_N_BASE_BINFOS (binfo)); - tree base_binfo; - int ix; - - BINFO_TYPE (binfo2) = btype; - BINFO_OFFSET (binfo2) = BINFO_OFFSET (binfo); - BINFO_BASE_ACCESSES (binfo2) = BINFO_BASE_ACCESSES (binfo); - - /* Recursively copy base binfos of BINFO. */ - for (ix = 0; BINFO_BASE_ITERATE (binfo, ix, base_binfo); ix++) - { - tree base_binfo2 = objc_copy_binfo (base_binfo); - - BINFO_INHERITANCE_CHAIN (base_binfo2) = binfo2; - BINFO_BASE_APPEND (binfo2, base_binfo2); - } - - return binfo2; -} - -/* Record superclass information provided in BASETYPE for ObjC class REF. - This is loosely based on cp/decl.c:xref_basetypes(). */ - -static void -objc_xref_basetypes (tree ref, tree basetype) -{ - tree binfo = make_tree_binfo (basetype ? 1 : 0); - - TYPE_BINFO (ref) = binfo; - BINFO_OFFSET (binfo) = size_zero_node; - BINFO_TYPE (binfo) = ref; - - if (basetype) - { - tree base_binfo = objc_copy_binfo (TYPE_BINFO (basetype)); - - BINFO_INHERITANCE_CHAIN (base_binfo) = binfo; - BINFO_BASE_ACCESSES (binfo) = VEC_alloc (tree, gc, 1); - BINFO_BASE_APPEND (binfo, base_binfo); - BINFO_BASE_ACCESS_APPEND (binfo, access_public_node); - } -} - -static hashval_t -volatilized_hash (const void *ptr) -{ - tree typ = ((struct volatilized_type *)ptr)->type; - - return htab_hash_pointer(typ); -} - -static int -volatilized_eq (const void *ptr1, const void *ptr2) -{ - tree typ1 = ((struct volatilized_type *)ptr1)->type; - tree typ2 = ((struct volatilized_type *)ptr2)->type; - - return typ1 == typ2; -} - -/* Called from finish_decl. */ - -void -objc_check_decl (tree decl) -{ - tree type = TREE_TYPE (decl); - - if (TREE_CODE (type) != RECORD_TYPE) - return; - if (OBJC_TYPE_NAME (type) && (type = objc_is_class_name (OBJC_TYPE_NAME (type)))) - error ("statically allocated instance of Objective-C class %qs", - IDENTIFIER_POINTER (type)); -} - -/* Construct a PROTOCOLS-qualified variant of INTERFACE, where INTERFACE may - either name an Objective-C class, or refer to the special 'id' or 'Class' - types. If INTERFACE is not a valid ObjC type, just return it unchanged. */ - -tree -objc_get_protocol_qualified_type (tree interface, tree protocols) -{ - /* If INTERFACE is not provided, default to 'id'. */ - tree type = (interface ? objc_is_id (interface) : objc_object_type); - bool is_ptr = (type != NULL_TREE); - - if (!is_ptr) - { - type = objc_is_class_name (interface); - - if (type) - type = xref_tag (RECORD_TYPE, type); - else - return interface; - } - - if (protocols) - { - type = build_variant_type_copy (type); - - /* For pointers (i.e., 'id' or 'Class'), attach the protocol(s) - to the pointee. */ - if (is_ptr) - { - TREE_TYPE (type) = build_variant_type_copy (TREE_TYPE (type)); - TYPE_POINTER_TO (TREE_TYPE (type)) = type; - type = TREE_TYPE (type); - } - - /* Look up protocols and install in lang specific list. */ - DUP_TYPE_OBJC_INFO (type, TYPE_MAIN_VARIANT (type)); - TYPE_OBJC_PROTOCOL_LIST (type) = lookup_and_install_protocols (protocols); - - /* For RECORD_TYPEs, point to the @interface; for 'id' and 'Class', - return the pointer to the new pointee variant. */ - if (is_ptr) - type = TYPE_POINTER_TO (type); - else - TYPE_OBJC_INTERFACE (type) - = TYPE_OBJC_INTERFACE (TYPE_MAIN_VARIANT (type)); - } - - return type; -} - -/* Check for circular dependencies in protocols. The arguments are - PROTO, the protocol to check, and LIST, a list of protocol it - conforms to. */ - -static void -check_protocol_recursively (tree proto, tree list) -{ - tree p; - - for (p = list; p; p = TREE_CHAIN (p)) - { - tree pp = TREE_VALUE (p); - - if (TREE_CODE (pp) == IDENTIFIER_NODE) - pp = lookup_protocol (pp); - - if (pp == proto) - fatal_error ("protocol %qs has circular dependency", - IDENTIFIER_POINTER (PROTOCOL_NAME (pp))); - if (pp) - check_protocol_recursively (proto, PROTOCOL_LIST (pp)); - } -} - -/* Look up PROTOCOLS, and return a list of those that are found. - If none are found, return NULL. */ - -static tree -lookup_and_install_protocols (tree protocols) -{ - tree proto; - tree return_value = NULL_TREE; - - for (proto = protocols; proto; proto = TREE_CHAIN (proto)) - { - tree ident = TREE_VALUE (proto); - tree p = lookup_protocol (ident); - - if (p) - return_value = chainon (return_value, - build_tree_list (NULL_TREE, p)); - else if (ident != error_mark_node) - error ("cannot find protocol declaration for %qs", - IDENTIFIER_POINTER (ident)); - } - - return return_value; -} - -/* Create a declaration for field NAME of a given TYPE. */ - -static tree -create_field_decl (tree type, const char *name) -{ - return build_decl (FIELD_DECL, get_identifier (name), type); -} - -/* Create a global, static declaration for variable NAME of a given TYPE. The - finish_var_decl() routine will need to be called on it afterwards. */ - -static tree -start_var_decl (tree type, const char *name) -{ - tree var = build_decl (VAR_DECL, get_identifier (name), type); - - TREE_STATIC (var) = 1; - DECL_INITIAL (var) = error_mark_node; /* A real initializer is coming... */ - DECL_IGNORED_P (var) = 1; - DECL_ARTIFICIAL (var) = 1; - DECL_CONTEXT (var) = NULL_TREE; -#ifdef OBJCPLUS - DECL_THIS_STATIC (var) = 1; /* squash redeclaration errors */ -#endif - - return var; -} - -/* Finish off the variable declaration created by start_var_decl(). */ - -static void -finish_var_decl (tree var, tree initializer) -{ - finish_decl (var, initializer, NULL_TREE); - /* Ensure that the variable actually gets output. */ - mark_decl_referenced (var); - /* Mark the decl to avoid "defined but not used" warning. */ - TREE_USED (var) = 1; -} - -/* Find the decl for the constant string class reference. This is only - used for the NeXT runtime. */ - -static tree -setup_string_decl (void) -{ - char *name; - size_t length; - - /* %s in format will provide room for terminating null */ - length = strlen (STRING_OBJECT_GLOBAL_FORMAT) - + strlen (constant_string_class_name); - name = xmalloc (length); - sprintf (name, STRING_OBJECT_GLOBAL_FORMAT, - constant_string_class_name); - constant_string_global_id = get_identifier (name); - string_class_decl = lookup_name (constant_string_global_id); - - return string_class_decl; -} - -/* Purpose: "play" parser, creating/installing representations - of the declarations that are required by Objective-C. - - Model: - - type_spec--------->sc_spec - (tree_list) (tree_list) - | | - | | - identifier_node identifier_node */ - -static void -synth_module_prologue (void) -{ - tree type; - enum debug_info_type save_write_symbols = write_symbols; - const struct gcc_debug_hooks *const save_hooks = debug_hooks; - - /* Suppress outputting debug symbols, because - dbxout_init hasn'r been called yet. */ - write_symbols = NO_DEBUG; - debug_hooks = &do_nothing_debug_hooks; - -#ifdef OBJCPLUS - push_lang_context (lang_name_c); /* extern "C" */ -#endif - - /* The following are also defined in and friends. */ - - objc_object_id = get_identifier (TAG_OBJECT); - objc_class_id = get_identifier (TAG_CLASS); - - objc_object_reference = xref_tag (RECORD_TYPE, objc_object_id); - objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id); - - objc_object_type = build_pointer_type (objc_object_reference); - objc_class_type = build_pointer_type (objc_class_reference); - - objc_object_name = get_identifier (OBJECT_TYPEDEF_NAME); - objc_class_name = get_identifier (CLASS_TYPEDEF_NAME); - - /* Declare the 'id' and 'Class' typedefs. */ - - type = lang_hooks.decls.pushdecl (build_decl (TYPE_DECL, - objc_object_name, - objc_object_type)); - DECL_IN_SYSTEM_HEADER (type) = 1; - type = lang_hooks.decls.pushdecl (build_decl (TYPE_DECL, - objc_class_name, - objc_class_type)); - DECL_IN_SYSTEM_HEADER (type) = 1; - - /* Forward-declare '@interface Protocol'. */ - - type = get_identifier (PROTOCOL_OBJECT_CLASS_NAME); - objc_declare_class (tree_cons (NULL_TREE, type, NULL_TREE)); - objc_protocol_type = build_pointer_type (xref_tag (RECORD_TYPE, - type)); - - /* Declare type of selector-objects that represent an operation name. */ - - if (flag_next_runtime) - /* `struct objc_selector *' */ - objc_selector_type - = build_pointer_type (xref_tag (RECORD_TYPE, - get_identifier (TAG_SELECTOR))); - else - /* `const struct objc_selector *' */ - objc_selector_type - = build_pointer_type - (build_qualified_type (xref_tag (RECORD_TYPE, - get_identifier (TAG_SELECTOR)), - TYPE_QUAL_CONST)); - - /* Declare receiver type used for dispatching messages to 'super'. */ - - /* `struct objc_super *' */ - objc_super_type = build_pointer_type (xref_tag (RECORD_TYPE, - get_identifier (TAG_SUPER))); - - /* Declare pointers to method and ivar lists. */ - objc_method_list_ptr = build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier (UTAG_METHOD_LIST))); - objc_method_proto_list_ptr - = build_pointer_type (xref_tag (RECORD_TYPE, - get_identifier (UTAG_METHOD_PROTOTYPE_LIST))); - objc_ivar_list_ptr = build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier (UTAG_IVAR_LIST))); - - /* TREE_NOTHROW is cleared for the message-sending functions, - because the function that gets called can throw in Obj-C++, or - could itself call something that can throw even in Obj-C. */ - - if (flag_next_runtime) - { - /* NB: In order to call one of the ..._stret (struct-returning) - functions, the function *MUST* first be cast to a signature that - corresponds to the actual ObjC method being invoked. This is - what is done by the build_objc_method_call() routine below. */ - - /* id objc_msgSend (id, SEL, ...); */ - /* id objc_msgSendNonNil (id, SEL, ...); */ - /* id objc_msgSend_stret (id, SEL, ...); */ - /* id objc_msgSendNonNil_stret (id, SEL, ...); */ - type - = build_function_type (objc_object_type, - tree_cons (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, objc_selector_type, - NULL_TREE))); - umsg_decl = builtin_function (TAG_MSGSEND, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - umsg_nonnil_decl = builtin_function (TAG_MSGSEND_NONNIL, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - umsg_stret_decl = builtin_function (TAG_MSGSEND_STRET, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - umsg_nonnil_stret_decl = builtin_function (TAG_MSGSEND_NONNIL_STRET, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - - /* These can throw, because the function that gets called can throw - in Obj-C++, or could itself call something that can throw even - in Obj-C. */ - TREE_NOTHROW (umsg_decl) = 0; - TREE_NOTHROW (umsg_nonnil_decl) = 0; - TREE_NOTHROW (umsg_stret_decl) = 0; - TREE_NOTHROW (umsg_nonnil_stret_decl) = 0; - - /* id objc_msgSend_Fast (id, SEL, ...) - __attribute__ ((hard_coded_address (OFFS_MSGSEND_FAST))); */ -#ifdef OFFS_MSGSEND_FAST - umsg_fast_decl = builtin_function (TAG_MSGSEND_FAST, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - TREE_NOTHROW (umsg_fast_decl) = 0; - DECL_ATTRIBUTES (umsg_fast_decl) - = tree_cons (get_identifier ("hard_coded_address"), - build_int_cst (NULL_TREE, OFFS_MSGSEND_FAST), - NULL_TREE); -#else - /* No direct dispatch availible. */ - umsg_fast_decl = umsg_decl; -#endif - - /* id objc_msgSendSuper (struct objc_super *, SEL, ...); */ - /* id objc_msgSendSuper_stret (struct objc_super *, SEL, ...); */ - type - = build_function_type (objc_object_type, - tree_cons (NULL_TREE, objc_super_type, - tree_cons (NULL_TREE, objc_selector_type, - NULL_TREE))); - umsg_super_decl = builtin_function (TAG_MSGSENDSUPER, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - umsg_super_stret_decl = builtin_function (TAG_MSGSENDSUPER_STRET, - type, 0, NOT_BUILT_IN, 0, - NULL_TREE); - TREE_NOTHROW (umsg_super_decl) = 0; - TREE_NOTHROW (umsg_super_stret_decl) = 0; - } - else - { - /* GNU runtime messenger entry points. */ - - /* typedef id (*IMP)(id, SEL, ...); */ - tree IMP_type - = build_pointer_type - (build_function_type (objc_object_type, - tree_cons (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, objc_selector_type, - NULL_TREE)))); - - /* IMP objc_msg_lookup (id, SEL); */ - type - = build_function_type (IMP_type, - tree_cons (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, objc_selector_type, - OBJC_VOID_AT_END))); - umsg_decl = builtin_function (TAG_MSGSEND, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - TREE_NOTHROW (umsg_decl) = 0; - - /* IMP objc_msg_lookup_super (struct objc_super *, SEL); */ - type - = build_function_type (IMP_type, - tree_cons (NULL_TREE, objc_super_type, - tree_cons (NULL_TREE, objc_selector_type, - OBJC_VOID_AT_END))); - umsg_super_decl = builtin_function (TAG_MSGSENDSUPER, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - TREE_NOTHROW (umsg_super_decl) = 0; - - /* The following GNU runtime entry point is called to initialize - each module: - - __objc_exec_class (void *); */ - type - = build_function_type (void_type_node, - tree_cons (NULL_TREE, ptr_type_node, - OBJC_VOID_AT_END)); - execclass_decl = builtin_function (TAG_EXECCLASS, - type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - } - - /* id objc_getClass (const char *); */ - - type = build_function_type (objc_object_type, - tree_cons (NULL_TREE, - const_string_type_node, - OBJC_VOID_AT_END)); - - objc_get_class_decl - = builtin_function (TAG_GETCLASS, type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); - - /* id objc_getMetaClass (const char *); */ - - objc_get_meta_class_decl - = builtin_function (TAG_GETMETACLASS, type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - - build_class_template (); - build_super_template (); - build_protocol_template (); - build_category_template (); - build_objc_exception_stuff (); - - if (flag_next_runtime) - build_next_objc_exception_stuff (); - - /* static SEL _OBJC_SELECTOR_TABLE[]; */ - - if (! flag_next_runtime) - build_selector_table_decl (); - - /* Forward declare constant_string_id and constant_string_type. */ - if (!constant_string_class_name) - constant_string_class_name = default_constant_string_class_name; - - constant_string_id = get_identifier (constant_string_class_name); - objc_declare_class (tree_cons (NULL_TREE, constant_string_id, NULL_TREE)); - - /* Pre-build the following entities - for speed/convenience. */ - self_id = get_identifier ("self"); - ucmd_id = get_identifier ("_cmd"); - -#ifdef OBJCPLUS - pop_lang_context (); -#endif - - write_symbols = save_write_symbols; - debug_hooks = save_hooks; -} - -/* Ensure that the ivar list for NSConstantString/NXConstantString - (or whatever was specified via `-fconstant-string-class') - contains fields at least as large as the following three, so that - the runtime can stomp on them with confidence: - - struct STRING_OBJECT_CLASS_NAME - { - Object isa; - char *cString; - unsigned int length; - }; */ - -static int -check_string_class_template (void) -{ - tree field_decl = objc_get_class_ivars (constant_string_id); - -#define AT_LEAST_AS_LARGE_AS(F, T) \ - (F && TREE_CODE (F) == FIELD_DECL \ - && (TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (F))) \ - >= TREE_INT_CST_LOW (TYPE_SIZE (T)))) - - if (!AT_LEAST_AS_LARGE_AS (field_decl, ptr_type_node)) - return 0; - - field_decl = TREE_CHAIN (field_decl); - if (!AT_LEAST_AS_LARGE_AS (field_decl, ptr_type_node)) - return 0; - - field_decl = TREE_CHAIN (field_decl); - return AT_LEAST_AS_LARGE_AS (field_decl, unsigned_type_node); - -#undef AT_LEAST_AS_LARGE_AS -} - -/* Avoid calling `check_string_class_template ()' more than once. */ -static GTY(()) int string_layout_checked; - -/* Construct an internal string layout to be used as a template for - creating NSConstantString/NXConstantString instances. */ - -static tree -objc_build_internal_const_str_type (void) -{ - tree type = (*lang_hooks.types.make_type) (RECORD_TYPE); - tree fields = build_decl (FIELD_DECL, NULL_TREE, ptr_type_node); - tree field = build_decl (FIELD_DECL, NULL_TREE, ptr_type_node); - - TREE_CHAIN (field) = fields; fields = field; - field = build_decl (FIELD_DECL, NULL_TREE, unsigned_type_node); - TREE_CHAIN (field) = fields; fields = field; - /* NB: The finish_builtin_struct() routine expects FIELD_DECLs in - reverse order! */ - finish_builtin_struct (type, "__builtin_ObjCString", - fields, NULL_TREE); - - return type; -} - -/* Custom build_string which sets TREE_TYPE! */ - -static tree -my_build_string (int len, const char *str) -{ - return fix_string_type (build_string (len, str)); -} - -/* Build a string with contents STR and length LEN and convert it to a - pointer. */ - -static tree -my_build_string_pointer (int len, const char *str) -{ - tree string = my_build_string (len, str); - tree ptrtype = build_pointer_type (TREE_TYPE (TREE_TYPE (string))); - return build1 (ADDR_EXPR, ptrtype, string); -} - -static hashval_t -string_hash (const void *ptr) -{ - tree str = ((struct string_descriptor *)ptr)->literal; - const unsigned char *p = (const unsigned char *) TREE_STRING_POINTER (str); - int i, len = TREE_STRING_LENGTH (str); - hashval_t h = len; - - for (i = 0; i < len; i++) - h = ((h * 613) + p[i]); - - return h; -} - -static int -string_eq (const void *ptr1, const void *ptr2) -{ - tree str1 = ((struct string_descriptor *)ptr1)->literal; - tree str2 = ((struct string_descriptor *)ptr2)->literal; - int len1 = TREE_STRING_LENGTH (str1); - - return (len1 == TREE_STRING_LENGTH (str2) - && !memcmp (TREE_STRING_POINTER (str1), TREE_STRING_POINTER (str2), - len1)); -} - -/* Given a chain of STRING_CST's, build a static instance of - NXConstantString which points at the concatenation of those - strings. We place the string object in the __string_objects - section of the __OBJC segment. The Objective-C runtime will - initialize the isa pointers of the string objects to point at the - NXConstantString class object. */ - -tree -objc_build_string_object (tree string) -{ - tree initlist, constructor, constant_string_class; - int length; - tree fields, addr; - struct string_descriptor *desc, key; - void **loc; - - /* Prep the string argument. */ - string = fix_string_type (string); - TREE_SET_CODE (string, STRING_CST); - length = TREE_STRING_LENGTH (string) - 1; - - /* Check whether the string class being used actually exists and has the - correct ivar layout. */ - if (!string_layout_checked) - { - string_layout_checked = -1; - constant_string_class = lookup_interface (constant_string_id); - internal_const_str_type = objc_build_internal_const_str_type (); - - if (!constant_string_class - || !(constant_string_type - = CLASS_STATIC_TEMPLATE (constant_string_class))) - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (constant_string_id)); - /* The NSConstantString/NXConstantString ivar layout is now known. */ - else if (!check_string_class_template ()) - error ("interface %qs does not have valid constant string layout", - IDENTIFIER_POINTER (constant_string_id)); - /* For the NeXT runtime, we can generate a literal reference - to the string class, don't need to run a constructor. */ - else if (flag_next_runtime && !setup_string_decl ()) - error ("cannot find reference tag for class %qs", - IDENTIFIER_POINTER (constant_string_id)); - else - { - string_layout_checked = 1; /* Success! */ - add_class_reference (constant_string_id); - } - } - - if (string_layout_checked == -1) - return error_mark_node; - - /* Perhaps we already constructed a constant string just like this one? */ - key.literal = string; - loc = htab_find_slot (string_htab, &key, INSERT); - desc = *loc; - - if (!desc) - { - tree var; - *loc = desc = ggc_alloc (sizeof (*desc)); - desc->literal = string; - - /* GNU: (NXConstantString *) & ((__builtin_ObjCString) { NULL, string, length }) */ - /* NeXT: (NSConstantString *) & ((__builtin_ObjCString) { isa, string, length }) */ - fields = TYPE_FIELDS (internal_const_str_type); - initlist - = build_tree_list (fields, - flag_next_runtime - ? build_unary_op (ADDR_EXPR, string_class_decl, 0) - : build_int_cst (NULL_TREE, 0)); - fields = TREE_CHAIN (fields); - initlist = tree_cons (fields, build_unary_op (ADDR_EXPR, string, 1), - initlist); - fields = TREE_CHAIN (fields); - initlist = tree_cons (fields, build_int_cst (NULL_TREE, length), - initlist); - constructor = objc_build_constructor (internal_const_str_type, - nreverse (initlist)); - TREE_INVARIANT (constructor) = true; - - if (!flag_next_runtime) - constructor - = objc_add_static_instance (constructor, constant_string_type); - else - { - var = build_decl (CONST_DECL, NULL, TREE_TYPE (constructor)); - DECL_INITIAL (var) = constructor; - TREE_STATIC (var) = 1; - pushdecl_top_level (var); - constructor = var; - } - desc->constructor = constructor; - } - - addr = convert (build_pointer_type (constant_string_type), - build_unary_op (ADDR_EXPR, desc->constructor, 1)); - - return addr; -} - -/* Declare a static instance of CLASS_DECL initialized by CONSTRUCTOR. */ - -static GTY(()) int num_static_inst; - -static tree -objc_add_static_instance (tree constructor, tree class_decl) -{ - tree *chain, decl; - char buf[256]; - - /* Find the list of static instances for the CLASS_DECL. Create one if - not found. */ - for (chain = &objc_static_instances; - *chain && TREE_VALUE (*chain) != class_decl; - chain = &TREE_CHAIN (*chain)); - if (!*chain) - { - *chain = tree_cons (NULL_TREE, class_decl, NULL_TREE); - add_objc_string (OBJC_TYPE_NAME (class_decl), class_names); - } - - sprintf (buf, "_OBJC_INSTANCE_%d", num_static_inst++); - decl = build_decl (VAR_DECL, get_identifier (buf), class_decl); - DECL_COMMON (decl) = 1; - TREE_STATIC (decl) = 1; - DECL_ARTIFICIAL (decl) = 1; - TREE_USED (decl) = 1; - DECL_INITIAL (decl) = constructor; - - /* We may be writing something else just now. - Postpone till end of input. */ - DECL_DEFER_OUTPUT (decl) = 1; - pushdecl_top_level (decl); - rest_of_decl_compilation (decl, 1, 0); - - /* Add the DECL to the head of this CLASS' list. */ - TREE_PURPOSE (*chain) = tree_cons (NULL_TREE, decl, TREE_PURPOSE (*chain)); - - return decl; -} - -/* Build a static constant CONSTRUCTOR - with type TYPE and elements ELTS. */ - -static tree -objc_build_constructor (tree type, tree elts) -{ - tree constructor = build_constructor_from_list (type, elts); - - TREE_CONSTANT (constructor) = 1; - TREE_STATIC (constructor) = 1; - TREE_READONLY (constructor) = 1; - -#ifdef OBJCPLUS - /* Adjust for impedance mismatch. We should figure out how to build - CONSTRUCTORs that consistently please both the C and C++ gods. */ - if (!TREE_PURPOSE (elts)) - TREE_TYPE (constructor) = NULL_TREE; - TREE_HAS_CONSTRUCTOR (constructor) = 1; -#endif - - return constructor; -} - -/* Take care of defining and initializing _OBJC_SYMBOLS. */ - -/* Predefine the following data type: - - struct _objc_symtab - { - long sel_ref_cnt; - SEL *refs; - short cls_def_cnt; - short cat_def_cnt; - void *defs[cls_def_cnt + cat_def_cnt]; - }; */ - -static void -build_objc_symtab_template (void) -{ - tree field_decl, field_decl_chain; - - objc_symtab_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_SYMTAB)); - - /* long sel_ref_cnt; */ - field_decl = create_field_decl (long_integer_type_node, "sel_ref_cnt"); - field_decl_chain = field_decl; - - /* SEL *refs; */ - field_decl = create_field_decl (build_pointer_type (objc_selector_type), - "refs"); - chainon (field_decl_chain, field_decl); - - /* short cls_def_cnt; */ - field_decl = create_field_decl (short_integer_type_node, "cls_def_cnt"); - chainon (field_decl_chain, field_decl); - - /* short cat_def_cnt; */ - field_decl = create_field_decl (short_integer_type_node, - "cat_def_cnt"); - chainon (field_decl_chain, field_decl); - - if (imp_count || cat_count || !flag_next_runtime) - { - /* void *defs[imp_count + cat_count (+ 1)]; */ - /* NB: The index is one less than the size of the array. */ - int index = imp_count + cat_count - + (flag_next_runtime? -1: 0); - field_decl = create_field_decl - (build_array_type - (ptr_type_node, - build_index_type (build_int_cst (NULL_TREE, index))), - "defs"); - chainon (field_decl_chain, field_decl); - } - - finish_struct (objc_symtab_template, field_decl_chain, NULL_TREE); -} - -/* Create the initial value for the `defs' field of _objc_symtab. - This is a CONSTRUCTOR. */ - -static tree -init_def_list (tree type) -{ - tree expr, initlist = NULL_TREE; - struct imp_entry *impent; - - if (imp_count) - for (impent = imp_list; impent; impent = impent->next) - { - if (TREE_CODE (impent->imp_context) == CLASS_IMPLEMENTATION_TYPE) - { - expr = build_unary_op (ADDR_EXPR, impent->class_decl, 0); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - } - - if (cat_count) - for (impent = imp_list; impent; impent = impent->next) - { - if (TREE_CODE (impent->imp_context) == CATEGORY_IMPLEMENTATION_TYPE) - { - expr = build_unary_op (ADDR_EXPR, impent->class_decl, 0); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - } - - if (!flag_next_runtime) - { - /* statics = { ..., _OBJC_STATIC_INSTANCES, ... } */ - tree expr; - - if (static_instances_decl) - expr = build_unary_op (ADDR_EXPR, static_instances_decl, 0); - else - expr = build_int_cst (NULL_TREE, 0); - - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - return objc_build_constructor (type, nreverse (initlist)); -} - -/* Construct the initial value for all of _objc_symtab. */ - -static tree -init_objc_symtab (tree type) -{ - tree initlist; - - /* sel_ref_cnt = { ..., 5, ... } */ - - initlist = build_tree_list (NULL_TREE, - build_int_cst (long_integer_type_node, 0)); - - /* refs = { ..., _OBJC_SELECTOR_TABLE, ... } */ - - if (flag_next_runtime || ! sel_ref_chain) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - initlist - = tree_cons (NULL_TREE, - convert (build_pointer_type (objc_selector_type), - build_unary_op (ADDR_EXPR, - UOBJC_SELECTOR_TABLE_decl, 1)), - initlist); - - /* cls_def_cnt = { ..., 5, ... } */ - - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, imp_count), initlist); - - /* cat_def_cnt = { ..., 5, ... } */ - - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, cat_count), initlist); - - /* cls_def = { ..., { &Foo, &Bar, ...}, ... } */ - - if (imp_count || cat_count || !flag_next_runtime) - { - - tree field = TYPE_FIELDS (type); - field = TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (field)))); - - initlist = tree_cons (NULL_TREE, init_def_list (TREE_TYPE (field)), - initlist); - } - - return objc_build_constructor (type, nreverse (initlist)); -} - -/* Generate forward declarations for metadata such as - 'OBJC_CLASS_...'. */ - -static tree -build_metadata_decl (const char *name, tree type) -{ - tree decl; - - /* struct TYPE NAME_; */ - decl = start_var_decl (type, synth_id_with_class_suffix - (name, - objc_implementation_context)); - - return decl; -} - -/* Push forward-declarations of all the categories so that - init_def_list can use them in a CONSTRUCTOR. */ - -static void -forward_declare_categories (void) -{ - struct imp_entry *impent; - tree sav = objc_implementation_context; - - for (impent = imp_list; impent; impent = impent->next) - { - if (TREE_CODE (impent->imp_context) == CATEGORY_IMPLEMENTATION_TYPE) - { - /* Set an invisible arg to synth_id_with_class_suffix. */ - objc_implementation_context = impent->imp_context; - /* extern struct objc_category _OBJC_CATEGORY_; */ - impent->class_decl = build_metadata_decl ("_OBJC_CATEGORY", - objc_category_template); - } - } - objc_implementation_context = sav; -} - -/* Create the declaration of _OBJC_SYMBOLS, with type `struct _objc_symtab' - and initialized appropriately. */ - -static void -generate_objc_symtab_decl (void) -{ - /* forward declare categories */ - if (cat_count) - forward_declare_categories (); - - build_objc_symtab_template (); - UOBJC_SYMBOLS_decl = start_var_decl (objc_symtab_template, "_OBJC_SYMBOLS"); - finish_var_decl (UOBJC_SYMBOLS_decl, - init_objc_symtab (TREE_TYPE (UOBJC_SYMBOLS_decl))); -} - -static tree -init_module_descriptor (tree type) -{ - tree initlist, expr; - - /* version = { 1, ... } */ - - expr = build_int_cst (long_integer_type_node, OBJC_VERSION); - initlist = build_tree_list (NULL_TREE, expr); - - /* size = { ..., sizeof (struct _objc_module), ... } */ - - expr = convert (long_integer_type_node, - size_in_bytes (objc_module_template)); - initlist = tree_cons (NULL_TREE, expr, initlist); - - /* Don't provide any file name for security reasons. */ - /* name = { ..., "", ... } */ - - expr = add_objc_string (get_identifier (""), class_names); - initlist = tree_cons (NULL_TREE, expr, initlist); - - /* symtab = { ..., _OBJC_SYMBOLS, ... } */ - - if (UOBJC_SYMBOLS_decl) - expr = build_unary_op (ADDR_EXPR, UOBJC_SYMBOLS_decl, 0); - else - expr = build_int_cst (NULL_TREE, 0); - initlist = tree_cons (NULL_TREE, expr, initlist); - - return objc_build_constructor (type, nreverse (initlist)); -} - -/* Write out the data structures to describe Objective C classes defined. - - struct _objc_module { ... } _OBJC_MODULE = { ... }; */ - -static void -build_module_descriptor (void) -{ - tree field_decl, field_decl_chain; - -#ifdef OBJCPLUS - push_lang_context (lang_name_c); /* extern "C" */ -#endif - - objc_module_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_MODULE)); - - /* long version; */ - field_decl = create_field_decl (long_integer_type_node, "version"); - field_decl_chain = field_decl; - - /* long size; */ - field_decl = create_field_decl (long_integer_type_node, "size"); - chainon (field_decl_chain, field_decl); - - /* char *name; */ - field_decl = create_field_decl (string_type_node, "name"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_symtab *symtab; */ - field_decl - = create_field_decl (build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier (UTAG_SYMTAB))), - "symtab"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_module_template, field_decl_chain, NULL_TREE); - - /* Create an instance of "_objc_module". */ - UOBJC_MODULES_decl = start_var_decl (objc_module_template, "_OBJC_MODULES"); - finish_var_decl (UOBJC_MODULES_decl, - init_module_descriptor (TREE_TYPE (UOBJC_MODULES_decl))); - -#ifdef OBJCPLUS - pop_lang_context (); -#endif -} - -/* The GNU runtime requires us to provide a static initializer function - for each module: - - static void __objc_gnu_init (void) { - __objc_exec_class (&L_OBJC_MODULES); - } */ - -static void -build_module_initializer_routine (void) -{ - tree body; - -#ifdef OBJCPLUS - push_lang_context (lang_name_c); /* extern "C" */ -#endif - - objc_push_parm (build_decl (PARM_DECL, NULL_TREE, void_type_node)); - objc_start_function (get_identifier (TAG_GNUINIT), - build_function_type (void_type_node, - OBJC_VOID_AT_END), - NULL_TREE, objc_get_parm_info (0)); - - body = c_begin_compound_stmt (true); - add_stmt (build_function_call - (execclass_decl, - build_tree_list - (NULL_TREE, - build_unary_op (ADDR_EXPR, - UOBJC_MODULES_decl, 0)))); - add_stmt (c_end_compound_stmt (body, true)); - - TREE_PUBLIC (current_function_decl) = 0; - -#ifndef OBJCPLUS - /* For Objective-C++, we will need to call __objc_gnu_init - from objc_generate_static_init_call() below. */ - DECL_STATIC_CONSTRUCTOR (current_function_decl) = 1; -#endif - - GNU_INIT_decl = current_function_decl; - finish_function (); - -#ifdef OBJCPLUS - pop_lang_context (); -#endif -} - -#ifdef OBJCPLUS -/* Return 1 if the __objc_gnu_init function has been synthesized and needs - to be called by the module initializer routine. */ - -int -objc_static_init_needed_p (void) -{ - return (GNU_INIT_decl != NULL_TREE); -} - -/* Generate a call to the __objc_gnu_init initializer function. */ - -tree -objc_generate_static_init_call (tree ctors ATTRIBUTE_UNUSED) -{ - add_stmt (build_stmt (EXPR_STMT, - build_function_call (GNU_INIT_decl, NULL_TREE))); - - return ctors; -} -#endif /* OBJCPLUS */ - -/* Return the DECL of the string IDENT in the SECTION. */ - -static tree -get_objc_string_decl (tree ident, enum string_section section) -{ - tree chain; - - if (section == class_names) - chain = class_names_chain; - else if (section == meth_var_names) - chain = meth_var_names_chain; - else if (section == meth_var_types) - chain = meth_var_types_chain; - else - abort (); - - for (; chain != 0; chain = TREE_CHAIN (chain)) - if (TREE_VALUE (chain) == ident) - return (TREE_PURPOSE (chain)); - - abort (); - return NULL_TREE; -} - -/* Output references to all statically allocated objects. Return the DECL - for the array built. */ - -static void -generate_static_references (void) -{ - tree decls = NULL_TREE, expr = NULL_TREE; - tree class_name, class, decl, initlist; - tree cl_chain, in_chain, type - = build_array_type (build_pointer_type (void_type_node), NULL_TREE); - int num_inst, num_class; - char buf[256]; - - if (flag_next_runtime) - abort (); - - for (cl_chain = objc_static_instances, num_class = 0; - cl_chain; cl_chain = TREE_CHAIN (cl_chain), num_class++) - { - for (num_inst = 0, in_chain = TREE_PURPOSE (cl_chain); - in_chain; num_inst++, in_chain = TREE_CHAIN (in_chain)); - - sprintf (buf, "_OBJC_STATIC_INSTANCES_%d", num_class); - decl = start_var_decl (type, buf); - - /* Output {class_name, ...}. */ - class = TREE_VALUE (cl_chain); - class_name = get_objc_string_decl (OBJC_TYPE_NAME (class), class_names); - initlist = build_tree_list (NULL_TREE, - build_unary_op (ADDR_EXPR, class_name, 1)); - - /* Output {..., instance, ...}. */ - for (in_chain = TREE_PURPOSE (cl_chain); - in_chain; in_chain = TREE_CHAIN (in_chain)) - { - expr = build_unary_op (ADDR_EXPR, TREE_VALUE (in_chain), 1); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - /* Output {..., NULL}. */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - - expr = objc_build_constructor (TREE_TYPE (decl), nreverse (initlist)); - finish_var_decl (decl, expr); - decls - = tree_cons (NULL_TREE, build_unary_op (ADDR_EXPR, decl, 1), decls); - } - - decls = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), decls); - expr = objc_build_constructor (type, nreverse (decls)); - static_instances_decl = start_var_decl (type, "_OBJC_STATIC_INSTANCES"); - finish_var_decl (static_instances_decl, expr); -} - -static GTY(()) int selector_reference_idx; - -static tree -build_selector_reference_decl (void) -{ - tree decl; - char buf[256]; - - sprintf (buf, "_OBJC_SELECTOR_REFERENCES_%d", selector_reference_idx++); - decl = start_var_decl (objc_selector_type, buf); - - return decl; -} - -static void -build_selector_table_decl (void) -{ - tree temp; - - if (flag_typed_selectors) - { - build_selector_template (); - temp = build_array_type (objc_selector_template, NULL_TREE); - } - else - temp = build_array_type (objc_selector_type, NULL_TREE); - - UOBJC_SELECTOR_TABLE_decl = start_var_decl (temp, "_OBJC_SELECTOR_TABLE"); -} - -/* Just a handy wrapper for add_objc_string. */ - -static tree -build_selector (tree ident) -{ - return convert (objc_selector_type, - add_objc_string (ident, meth_var_names)); -} - -static void -build_selector_translation_table (void) -{ - tree chain, initlist = NULL_TREE; - int offset = 0; - tree decl = NULL_TREE; - - for (chain = sel_ref_chain; chain; chain = TREE_CHAIN (chain)) - { - tree expr; - - if (warn_selector && objc_implementation_context) - { - tree method_chain; - bool found = false; - for (method_chain = meth_var_names_chain; - method_chain; - method_chain = TREE_CHAIN (method_chain)) - { - if (TREE_VALUE (method_chain) == TREE_VALUE (chain)) - { - found = true; - break; - } - } - if (!found) - { - location_t *loc; - if (flag_next_runtime && TREE_PURPOSE (chain)) - loc = &DECL_SOURCE_LOCATION (TREE_PURPOSE (chain)); - else - loc = &input_location; - warning (0, "%Hcreating selector for nonexistent method %qE", - loc, TREE_VALUE (chain)); - } - } - - expr = build_selector (TREE_VALUE (chain)); - /* add one for the '\0' character */ - offset += IDENTIFIER_LENGTH (TREE_VALUE (chain)) + 1; - - if (flag_next_runtime) - { - decl = TREE_PURPOSE (chain); - finish_var_decl (decl, expr); - } - else - { - if (flag_typed_selectors) - { - tree eltlist = NULL_TREE; - tree encoding = get_proto_encoding (TREE_PURPOSE (chain)); - eltlist = tree_cons (NULL_TREE, expr, NULL_TREE); - eltlist = tree_cons (NULL_TREE, encoding, eltlist); - expr = objc_build_constructor (objc_selector_template, - nreverse (eltlist)); - } - - initlist = tree_cons (NULL_TREE, expr, initlist); - } - } - - if (! flag_next_runtime) - { - /* Cause the selector table (previously forward-declared) - to be actually output. */ - initlist = tree_cons (NULL_TREE, - flag_typed_selectors - ? objc_build_constructor - (objc_selector_template, - tree_cons (NULL_TREE, - build_int_cst (NULL_TREE, 0), - tree_cons (NULL_TREE, - build_int_cst (NULL_TREE, 0), - NULL_TREE))) - : build_int_cst (NULL_TREE, 0), initlist); - initlist = objc_build_constructor (TREE_TYPE (UOBJC_SELECTOR_TABLE_decl), - nreverse (initlist)); - finish_var_decl (UOBJC_SELECTOR_TABLE_decl, initlist); - } -} - -static tree -get_proto_encoding (tree proto) -{ - tree encoding; - if (proto) - { - if (! METHOD_ENCODING (proto)) - { - encoding = encode_method_prototype (proto); - METHOD_ENCODING (proto) = encoding; - } - else - encoding = METHOD_ENCODING (proto); - - return add_objc_string (encoding, meth_var_types); - } - else - return build_int_cst (NULL_TREE, 0); -} - -/* sel_ref_chain is a list whose "value" fields will be instances of - identifier_node that represent the selector. */ - -static tree -build_typed_selector_reference (tree ident, tree prototype) -{ - tree *chain = &sel_ref_chain; - tree expr; - int index = 0; - - while (*chain) - { - if (TREE_PURPOSE (*chain) == prototype && TREE_VALUE (*chain) == ident) - goto return_at_index; - - index++; - chain = &TREE_CHAIN (*chain); - } - - *chain = tree_cons (prototype, ident, NULL_TREE); - - return_at_index: - expr = build_unary_op (ADDR_EXPR, - build_array_ref (UOBJC_SELECTOR_TABLE_decl, - build_int_cst (NULL_TREE, index)), - 1); - return convert (objc_selector_type, expr); -} - -static tree -build_selector_reference (tree ident) -{ - tree *chain = &sel_ref_chain; - tree expr; - int index = 0; - - while (*chain) - { - if (TREE_VALUE (*chain) == ident) - return (flag_next_runtime - ? TREE_PURPOSE (*chain) - : build_array_ref (UOBJC_SELECTOR_TABLE_decl, - build_int_cst (NULL_TREE, index))); - - index++; - chain = &TREE_CHAIN (*chain); - } - - expr = (flag_next_runtime ? build_selector_reference_decl (): NULL_TREE); - - *chain = tree_cons (expr, ident, NULL_TREE); - - return (flag_next_runtime - ? expr - : build_array_ref (UOBJC_SELECTOR_TABLE_decl, - build_int_cst (NULL_TREE, index))); -} - -static GTY(()) int class_reference_idx; - -static tree -build_class_reference_decl (void) -{ - tree decl; - char buf[256]; - - sprintf (buf, "_OBJC_CLASS_REFERENCES_%d", class_reference_idx++); - decl = start_var_decl (objc_class_type, buf); - - return decl; -} - -/* Create a class reference, but don't create a variable to reference - it. */ - -static void -add_class_reference (tree ident) -{ - tree chain; - - if ((chain = cls_ref_chain)) - { - tree tail; - do - { - if (ident == TREE_VALUE (chain)) - return; - - tail = chain; - chain = TREE_CHAIN (chain); - } - while (chain); - - /* Append to the end of the list */ - TREE_CHAIN (tail) = tree_cons (NULL_TREE, ident, NULL_TREE); - } - else - cls_ref_chain = tree_cons (NULL_TREE, ident, NULL_TREE); -} - -/* Get a class reference, creating it if necessary. Also create the - reference variable. */ - -tree -objc_get_class_reference (tree ident) -{ - tree orig_ident = (DECL_P (ident) - ? DECL_NAME (ident) - : TYPE_P (ident) - ? OBJC_TYPE_NAME (ident) - : ident); - bool local_scope = false; - -#ifdef OBJCPLUS - if (processing_template_decl) - /* Must wait until template instantiation time. */ - return build_min_nt (CLASS_REFERENCE_EXPR, ident); -#endif - - if (TREE_CODE (ident) == TYPE_DECL) - ident = (DECL_ORIGINAL_TYPE (ident) - ? DECL_ORIGINAL_TYPE (ident) - : TREE_TYPE (ident)); - -#ifdef OBJCPLUS - if (TYPE_P (ident) && TYPE_CONTEXT (ident) - && TYPE_CONTEXT (ident) != global_namespace) - local_scope = true; -#endif - - if (local_scope || !(ident = objc_is_class_name (ident))) - { - error ("%qs is not an Objective-C class name or alias", - IDENTIFIER_POINTER (orig_ident)); - return error_mark_node; - } - - if (flag_next_runtime && !flag_zero_link) - { - tree *chain; - tree decl; - - for (chain = &cls_ref_chain; *chain; chain = &TREE_CHAIN (*chain)) - if (TREE_VALUE (*chain) == ident) - { - if (! TREE_PURPOSE (*chain)) - TREE_PURPOSE (*chain) = build_class_reference_decl (); - - return TREE_PURPOSE (*chain); - } - - decl = build_class_reference_decl (); - *chain = tree_cons (decl, ident, NULL_TREE); - return decl; - } - else - { - tree params; - - add_class_reference (ident); - - params = build_tree_list (NULL_TREE, - my_build_string_pointer - (IDENTIFIER_LENGTH (ident) + 1, - IDENTIFIER_POINTER (ident))); - - assemble_external (objc_get_class_decl); - return build_function_call (objc_get_class_decl, params); - } -} - -/* For each string section we have a chain which maps identifier nodes - to decls for the strings. */ - -static tree -add_objc_string (tree ident, enum string_section section) -{ - tree *chain, decl, type, string_expr; - - if (section == class_names) - chain = &class_names_chain; - else if (section == meth_var_names) - chain = &meth_var_names_chain; - else if (section == meth_var_types) - chain = &meth_var_types_chain; - else - abort (); - - while (*chain) - { - if (TREE_VALUE (*chain) == ident) - return convert (string_type_node, - build_unary_op (ADDR_EXPR, TREE_PURPOSE (*chain), 1)); - - chain = &TREE_CHAIN (*chain); - } - - decl = build_objc_string_decl (section); - - type = build_array_type - (char_type_node, - build_index_type - (build_int_cst (NULL_TREE, - IDENTIFIER_LENGTH (ident)))); - decl = start_var_decl (type, IDENTIFIER_POINTER (DECL_NAME (decl))); - string_expr = my_build_string (IDENTIFIER_LENGTH (ident) + 1, - IDENTIFIER_POINTER (ident)); - finish_var_decl (decl, string_expr); - - *chain = tree_cons (decl, ident, NULL_TREE); - - return convert (string_type_node, build_unary_op (ADDR_EXPR, decl, 1)); -} - -static GTY(()) int class_names_idx; -static GTY(()) int meth_var_names_idx; -static GTY(()) int meth_var_types_idx; - -static tree -build_objc_string_decl (enum string_section section) -{ - tree decl, ident; - char buf[256]; - - if (section == class_names) - sprintf (buf, "_OBJC_CLASS_NAME_%d", class_names_idx++); - else if (section == meth_var_names) - sprintf (buf, "_OBJC_METH_VAR_NAME_%d", meth_var_names_idx++); - else if (section == meth_var_types) - sprintf (buf, "_OBJC_METH_VAR_TYPE_%d", meth_var_types_idx++); - - ident = get_identifier (buf); - - decl = build_decl (VAR_DECL, ident, build_array_type (char_type_node, 0)); - DECL_EXTERNAL (decl) = 1; - TREE_PUBLIC (decl) = 0; - TREE_USED (decl) = 1; - TREE_CONSTANT (decl) = 1; - DECL_CONTEXT (decl) = 0; - DECL_ARTIFICIAL (decl) = 1; -#ifdef OBJCPLUS - DECL_THIS_STATIC (decl) = 1; /* squash redeclaration errors */ -#endif - - make_decl_rtl (decl); - pushdecl_top_level (decl); - - return decl; -} - - -void -objc_declare_alias (tree alias_ident, tree class_ident) -{ - tree underlying_class; - -#ifdef OBJCPLUS - if (current_namespace != global_namespace) { - error ("Objective-C declarations may only appear in global scope"); - } -#endif /* OBJCPLUS */ - - if (!(underlying_class = objc_is_class_name (class_ident))) - warning (0, "cannot find class %qs", IDENTIFIER_POINTER (class_ident)); - else if (objc_is_class_name (alias_ident)) - warning (0, "class %qs already exists", IDENTIFIER_POINTER (alias_ident)); - else - { - /* Implement @compatibility_alias as a typedef. */ -#ifdef OBJCPLUS - push_lang_context (lang_name_c); /* extern "C" */ -#endif - lang_hooks.decls.pushdecl (build_decl - (TYPE_DECL, - alias_ident, - xref_tag (RECORD_TYPE, underlying_class))); -#ifdef OBJCPLUS - pop_lang_context (); -#endif - alias_chain = tree_cons (underlying_class, alias_ident, alias_chain); - } -} - -void -objc_declare_class (tree ident_list) -{ - tree list; -#ifdef OBJCPLUS - if (current_namespace != global_namespace) { - error ("Objective-C declarations may only appear in global scope"); - } -#endif /* OBJCPLUS */ - - for (list = ident_list; list; list = TREE_CHAIN (list)) - { - tree ident = TREE_VALUE (list); - - if (! objc_is_class_name (ident)) - { - tree record = lookup_name (ident), type = record; - - if (record) - { - if (TREE_CODE (record) == TYPE_DECL) - type = DECL_ORIGINAL_TYPE (record); - - if (!TYPE_HAS_OBJC_INFO (type) - || !TYPE_OBJC_INTERFACE (type)) - { - error ("%qs redeclared as different kind of symbol", - IDENTIFIER_POINTER (ident)); - error ("previous declaration of %q+D", - record); - } - } - - record = xref_tag (RECORD_TYPE, ident); - INIT_TYPE_OBJC_INFO (record); - TYPE_OBJC_INTERFACE (record) = ident; - class_chain = tree_cons (NULL_TREE, ident, class_chain); - } - } -} - -tree -objc_is_class_name (tree ident) -{ - tree chain; - - if (ident && TREE_CODE (ident) == IDENTIFIER_NODE - && identifier_global_value (ident)) - ident = identifier_global_value (ident); - while (ident && TREE_CODE (ident) == TYPE_DECL && DECL_ORIGINAL_TYPE (ident)) - ident = OBJC_TYPE_NAME (DECL_ORIGINAL_TYPE (ident)); - - if (ident && TREE_CODE (ident) == RECORD_TYPE) - ident = OBJC_TYPE_NAME (ident); -#ifdef OBJCPLUS - if (ident && TREE_CODE (ident) == TYPE_DECL) - ident = DECL_NAME (ident); -#endif - if (!ident || TREE_CODE (ident) != IDENTIFIER_NODE) - return NULL_TREE; - - if (lookup_interface (ident)) - return ident; - - for (chain = class_chain; chain; chain = TREE_CHAIN (chain)) - { - if (ident == TREE_VALUE (chain)) - return ident; - } - - for (chain = alias_chain; chain; chain = TREE_CHAIN (chain)) - { - if (ident == TREE_VALUE (chain)) - return TREE_PURPOSE (chain); - } - - return 0; -} - -/* Check whether TYPE is either 'id' or 'Class'. */ - -tree -objc_is_id (tree type) -{ - if (type && TREE_CODE (type) == IDENTIFIER_NODE - && identifier_global_value (type)) - type = identifier_global_value (type); - - if (type && TREE_CODE (type) == TYPE_DECL) - type = TREE_TYPE (type); - - /* NB: This function may be called before the ObjC front-end has - been initialized, in which case OBJC_OBJECT_TYPE will (still) be NULL. */ - return (objc_object_type && type - && (IS_ID (type) || IS_CLASS (type) || IS_SUPER (type)) - ? type - : NULL_TREE); -} - -/* Check whether TYPE is either 'id', 'Class', or a pointer to an ObjC - class instance. This is needed by other parts of the compiler to - handle ObjC types gracefully. */ - -tree -objc_is_object_ptr (tree type) -{ - tree ret; - - type = TYPE_MAIN_VARIANT (type); - if (!POINTER_TYPE_P (type)) - return 0; - - ret = objc_is_id (type); - if (!ret) - ret = objc_is_class_name (TREE_TYPE (type)); - - return ret; -} - -static int -objc_is_gcable_type (tree type, int or_strong_p) -{ - tree name; - - if (!TYPE_P (type)) - return 0; - if (objc_is_id (TYPE_MAIN_VARIANT (type))) - return 1; - if (or_strong_p && lookup_attribute ("objc_gc", TYPE_ATTRIBUTES (type))) - return 1; - if (TREE_CODE (type) != POINTER_TYPE && TREE_CODE (type) != INDIRECT_REF) - return 0; - type = TREE_TYPE (type); - if (TREE_CODE (type) != RECORD_TYPE) - return 0; - name = TYPE_NAME (type); - return (objc_is_class_name (name) != NULL_TREE); -} - -static tree -objc_substitute_decl (tree expr, tree oldexpr, tree newexpr) -{ - if (expr == oldexpr) - return newexpr; - - switch (TREE_CODE (expr)) - { - case COMPONENT_REF: - return objc_build_component_ref - (objc_substitute_decl (TREE_OPERAND (expr, 0), - oldexpr, - newexpr), - DECL_NAME (TREE_OPERAND (expr, 1))); - case ARRAY_REF: - return build_array_ref (objc_substitute_decl (TREE_OPERAND (expr, 0), - oldexpr, - newexpr), - TREE_OPERAND (expr, 1)); - case INDIRECT_REF: - return build_indirect_ref (objc_substitute_decl (TREE_OPERAND (expr, 0), - oldexpr, - newexpr), "->"); - default: - return expr; - } -} - -static tree -objc_build_ivar_assignment (tree outervar, tree lhs, tree rhs) -{ - tree func_params; - /* The LHS parameter contains the expression 'outervar->memberspec'; - we need to transform it into '&((typeof(outervar) *) 0)->memberspec', - where memberspec may be arbitrarily complex (e.g., 'g->f.d[2].g[3]'). - */ - tree offs - = objc_substitute_decl - (lhs, outervar, convert (TREE_TYPE (outervar), integer_zero_node)); - tree func - = (flag_objc_direct_dispatch - ? objc_assign_ivar_fast_decl - : objc_assign_ivar_decl); - - offs = convert (integer_type_node, build_unary_op (ADDR_EXPR, offs, 0)); - offs = fold (offs); - func_params = tree_cons (NULL_TREE, - convert (objc_object_type, rhs), - tree_cons (NULL_TREE, convert (objc_object_type, outervar), - tree_cons (NULL_TREE, offs, - NULL_TREE))); - - assemble_external (func); - return build_function_call (func, func_params); -} - -static tree -objc_build_global_assignment (tree lhs, tree rhs) -{ - tree func_params = tree_cons (NULL_TREE, - convert (objc_object_type, rhs), - tree_cons (NULL_TREE, convert (build_pointer_type (objc_object_type), - build_unary_op (ADDR_EXPR, lhs, 0)), - NULL_TREE)); - - assemble_external (objc_assign_global_decl); - return build_function_call (objc_assign_global_decl, func_params); -} - -static tree -objc_build_strong_cast_assignment (tree lhs, tree rhs) -{ - tree func_params = tree_cons (NULL_TREE, - convert (objc_object_type, rhs), - tree_cons (NULL_TREE, convert (build_pointer_type (objc_object_type), - build_unary_op (ADDR_EXPR, lhs, 0)), - NULL_TREE)); - - assemble_external (objc_assign_strong_cast_decl); - return build_function_call (objc_assign_strong_cast_decl, func_params); -} - -static int -objc_is_gcable_p (tree expr) -{ - return (TREE_CODE (expr) == COMPONENT_REF - ? objc_is_gcable_p (TREE_OPERAND (expr, 1)) - : TREE_CODE (expr) == ARRAY_REF - ? (objc_is_gcable_p (TREE_TYPE (expr)) - || objc_is_gcable_p (TREE_OPERAND (expr, 0))) - : TREE_CODE (expr) == ARRAY_TYPE - ? objc_is_gcable_p (TREE_TYPE (expr)) - : TYPE_P (expr) - ? objc_is_gcable_type (expr, 1) - : (objc_is_gcable_p (TREE_TYPE (expr)) - || (DECL_P (expr) - && lookup_attribute ("objc_gc", DECL_ATTRIBUTES (expr))))); -} - -static int -objc_is_ivar_reference_p (tree expr) -{ - return (TREE_CODE (expr) == ARRAY_REF - ? objc_is_ivar_reference_p (TREE_OPERAND (expr, 0)) - : TREE_CODE (expr) == COMPONENT_REF - ? TREE_CODE (TREE_OPERAND (expr, 1)) == FIELD_DECL - : 0); -} - -static int -objc_is_global_reference_p (tree expr) -{ - return (TREE_CODE (expr) == INDIRECT_REF || TREE_CODE (expr) == PLUS_EXPR - ? objc_is_global_reference_p (TREE_OPERAND (expr, 0)) - : DECL_P (expr) - ? (!DECL_CONTEXT (expr) || TREE_STATIC (expr)) - : 0); -} - -tree -objc_generate_write_barrier (tree lhs, enum tree_code modifycode, tree rhs) -{ - tree result = NULL_TREE, outer; - int strong_cast_p = 0, outer_gc_p = 0, indirect_p = 0; - - /* See if we have any lhs casts, and strip them out. NB: The lvalue casts - will have been transformed to the form '*(type *)&expr'. */ - if (TREE_CODE (lhs) == INDIRECT_REF) - { - outer = TREE_OPERAND (lhs, 0); - - while (!strong_cast_p - && (TREE_CODE (outer) == CONVERT_EXPR - || TREE_CODE (outer) == NOP_EXPR - || TREE_CODE (outer) == NON_LVALUE_EXPR)) - { - tree lhstype = TREE_TYPE (outer); - - /* Descend down the cast chain, and record the first objc_gc - attribute found. */ - if (POINTER_TYPE_P (lhstype)) - { - tree attr - = lookup_attribute ("objc_gc", - TYPE_ATTRIBUTES (TREE_TYPE (lhstype))); - - if (attr) - strong_cast_p = 1; - } - - outer = TREE_OPERAND (outer, 0); - } - } - - /* If we have a __strong cast, it trumps all else. */ - if (strong_cast_p) - { - if (modifycode != NOP_EXPR) - goto invalid_pointer_arithmetic; - - if (warn_assign_intercept) - warning (0, "strong-cast assignment has been intercepted"); - - result = objc_build_strong_cast_assignment (lhs, rhs); - - goto exit_point; - } - - /* the lhs must be of a suitable type, regardless of its underlying - structure. */ - if (!objc_is_gcable_p (lhs)) - goto exit_point; - - outer = lhs; - - while (outer - && (TREE_CODE (outer) == COMPONENT_REF - || TREE_CODE (outer) == ARRAY_REF)) - outer = TREE_OPERAND (outer, 0); - - if (TREE_CODE (outer) == INDIRECT_REF) - { - outer = TREE_OPERAND (outer, 0); - indirect_p = 1; - } - - outer_gc_p = objc_is_gcable_p (outer); - - /* Handle ivar assignments. */ - if (objc_is_ivar_reference_p (lhs)) - { - /* if the struct to the left of the ivar is not an Objective-C object (__strong - doesn't cut it here), the best we can do here is suggest a cast. */ - if (!objc_is_gcable_type (TREE_TYPE (outer), 0)) - { - /* We may still be able to use the global write barrier... */ - if (!indirect_p && objc_is_global_reference_p (outer)) - goto global_reference; - - suggest_cast: - if (modifycode == NOP_EXPR) - { - if (warn_assign_intercept) - warning (0, "strong-cast may possibly be needed"); - } - - goto exit_point; - } - - if (modifycode != NOP_EXPR) - goto invalid_pointer_arithmetic; - - if (warn_assign_intercept) - warning (0, "instance variable assignment has been intercepted"); - - result = objc_build_ivar_assignment (outer, lhs, rhs); - - goto exit_point; - } - - /* Likewise, intercept assignment to global/static variables if their type is - GC-marked. */ - if (objc_is_global_reference_p (outer)) - { - if (indirect_p) - goto suggest_cast; - - global_reference: - if (modifycode != NOP_EXPR) - { - invalid_pointer_arithmetic: - if (outer_gc_p) - warning (0, "pointer arithmetic for garbage-collected objects not allowed"); - - goto exit_point; - } - - if (warn_assign_intercept) - warning (0, "global/static variable assignment has been intercepted"); - - result = objc_build_global_assignment (lhs, rhs); - } - - /* In all other cases, fall back to the normal mechanism. */ - exit_point: - return result; -} - -struct interface_tuple GTY(()) -{ - tree id; - tree class_name; -}; - -static GTY ((param_is (struct interface_tuple))) htab_t interface_htab; - -static hashval_t -hash_interface (const void *p) -{ - const struct interface_tuple *d = p; - return IDENTIFIER_HASH_VALUE (d->id); -} - -static int -eq_interface (const void *p1, const void *p2) -{ - const struct interface_tuple *d = p1; - return d->id == p2; -} - -static tree -lookup_interface (tree ident) -{ -#ifdef OBJCPLUS - if (ident && TREE_CODE (ident) == TYPE_DECL) - ident = DECL_NAME (ident); -#endif - - if (ident == NULL_TREE || TREE_CODE (ident) != IDENTIFIER_NODE) - return NULL_TREE; - - { - struct interface_tuple **slot; - tree i = NULL_TREE; - - if (interface_htab) - { - slot = (struct interface_tuple **) - htab_find_slot_with_hash (interface_htab, ident, - IDENTIFIER_HASH_VALUE (ident), - NO_INSERT); - if (slot && *slot) - i = (*slot)->class_name; - } - return i; - } -} - -/* Implement @defs () within struct bodies. */ - -tree -objc_get_class_ivars (tree class_name) -{ - tree interface = lookup_interface (class_name); - - if (interface) - return get_class_ivars (interface, true); - - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); - - return error_mark_node; -} - -/* Used by: build_private_template, continue_class, - and for @defs constructs. */ - -static tree -get_class_ivars (tree interface, bool inherited) -{ - tree ivar_chain = copy_list (CLASS_RAW_IVARS (interface)); - - /* Both CLASS_RAW_IVARS and CLASS_IVARS contain a list of ivars declared - by the current class (i.e., they do not include super-class ivars). - However, the CLASS_IVARS list will be side-effected by a call to - finish_struct(), which will fill in field offsets. */ - if (!CLASS_IVARS (interface)) - CLASS_IVARS (interface) = ivar_chain; - - if (!inherited) - return ivar_chain; - - while (CLASS_SUPER_NAME (interface)) - { - /* Prepend super-class ivars. */ - interface = lookup_interface (CLASS_SUPER_NAME (interface)); - ivar_chain = chainon (copy_list (CLASS_RAW_IVARS (interface)), - ivar_chain); - } - - return ivar_chain; -} - -static tree -objc_create_temporary_var (tree type) -{ - tree decl; - - decl = build_decl (VAR_DECL, NULL_TREE, type); - TREE_USED (decl) = 1; - DECL_ARTIFICIAL (decl) = 1; - DECL_IGNORED_P (decl) = 1; - DECL_CONTEXT (decl) = current_function_decl; - - return decl; -} - -/* Exception handling constructs. We begin by having the parser do most - of the work and passing us blocks. What we do next depends on whether - we're doing "native" exception handling or legacy Darwin setjmp exceptions. - We abstract all of this in a handful of appropriately named routines. */ - -/* Stack of open try blocks. */ - -struct objc_try_context -{ - struct objc_try_context *outer; - - /* Statements (or statement lists) as processed by the parser. */ - tree try_body; - tree finally_body; - - /* Some file position locations. */ - location_t try_locus; - location_t end_try_locus; - location_t end_catch_locus; - location_t finally_locus; - location_t end_finally_locus; - - /* A STATEMENT_LIST of CATCH_EXPRs, appropriate for sticking into op1 - of a TRY_CATCH_EXPR. Even when doing Darwin setjmp. */ - tree catch_list; - - /* The CATCH_EXPR of an open @catch clause. */ - tree current_catch; - - /* The VAR_DECL holding the Darwin equivalent of EXC_PTR_EXPR. */ - tree caught_decl; - tree stack_decl; - tree rethrow_decl; -}; - -static struct objc_try_context *cur_try_context; - -/* This hook, called via lang_eh_runtime_type, generates a runtime object - that represents TYPE. For Objective-C, this is just the class name. */ -/* ??? Isn't there a class object or some such? Is it easy to get? */ - -#ifndef OBJCPLUS -static tree -objc_eh_runtime_type (tree type) -{ - return add_objc_string (OBJC_TYPE_NAME (TREE_TYPE (type)), class_names); -} -#endif - -/* Initialize exception handling. */ - -static void -objc_init_exceptions (void) -{ - static bool done = false; - if (done) - return; - done = true; - - if (flag_objc_sjlj_exceptions) - { - /* On Darwin, ObjC exceptions require a sufficiently recent - version of the runtime, so the user must ask for them explicitly. */ - if (!flag_objc_exceptions) - warning (0, "use %<-fobjc-exceptions%> to enable Objective-C " - "exception syntax"); - } -#ifndef OBJCPLUS - else - { - c_eh_initialized_p = true; - eh_personality_libfunc - = init_one_libfunc (USING_SJLJ_EXCEPTIONS - ? "__gnu_objc_personality_sj0" - : "__gnu_objc_personality_v0"); - default_init_unwind_resume_libfunc (); - using_eh_for_cleanups (); - lang_eh_runtime_type = objc_eh_runtime_type; - } -#endif -} - -/* Build an EXC_PTR_EXPR, or the moral equivalent. In the case of Darwin, - we'll arrange for it to be initialized (and associated with a binding) - later. */ - -static tree -objc_build_exc_ptr (void) -{ - if (flag_objc_sjlj_exceptions) - { - tree var = cur_try_context->caught_decl; - if (!var) - { - var = objc_create_temporary_var (objc_object_type); - cur_try_context->caught_decl = var; - } - return var; - } - else - return build0 (EXC_PTR_EXPR, objc_object_type); -} - -/* Build "objc_exception_try_exit(&_stack)". */ - -static tree -next_sjlj_build_try_exit (void) -{ - tree t; - t = build_fold_addr_expr (cur_try_context->stack_decl); - t = tree_cons (NULL, t, NULL); - t = build_function_call (objc_exception_try_exit_decl, t); - return t; -} - -/* Build - objc_exception_try_enter (&_stack); - if (_setjmp(&_stack.buf)) - ; - else - ; - Return the COND_EXPR. Note that the THEN and ELSE fields are left - empty, ready for the caller to fill them in. */ - -static tree -next_sjlj_build_enter_and_setjmp (void) -{ - tree t, enter, sj, cond; - - t = build_fold_addr_expr (cur_try_context->stack_decl); - t = tree_cons (NULL, t, NULL); - enter = build_function_call (objc_exception_try_enter_decl, t); - - t = objc_build_component_ref (cur_try_context->stack_decl, - get_identifier ("buf")); - t = build_fold_addr_expr (t); -#ifdef OBJCPLUS - /* Convert _setjmp argument to type that is expected. */ - if (TYPE_ARG_TYPES (TREE_TYPE (objc_setjmp_decl))) - t = convert (TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (objc_setjmp_decl))), t); - else - t = convert (ptr_type_node, t); -#else - t = convert (ptr_type_node, t); -#endif - t = tree_cons (NULL, t, NULL); - sj = build_function_call (objc_setjmp_decl, t); - - cond = build2 (COMPOUND_EXPR, TREE_TYPE (sj), enter, sj); - cond = c_common_truthvalue_conversion (cond); - - return build3 (COND_EXPR, void_type_node, cond, NULL, NULL); -} - -/* Build: - - DECL = objc_exception_extract(&_stack); */ - -static tree -next_sjlj_build_exc_extract (tree decl) -{ - tree t; - - t = build_fold_addr_expr (cur_try_context->stack_decl); - t = tree_cons (NULL, t, NULL); - t = build_function_call (objc_exception_extract_decl, t); - t = convert (TREE_TYPE (decl), t); - t = build2 (MODIFY_EXPR, void_type_node, decl, t); - - return t; -} - -/* Build - if (objc_exception_match(obj_get_class(TYPE), _caught) - BODY - else if (...) - ... - else - { - _rethrow = _caught; - objc_exception_try_exit(&_stack); - } - from the sequence of CATCH_EXPRs in the current try context. */ - -static tree -next_sjlj_build_catch_list (void) -{ - tree_stmt_iterator i = tsi_start (cur_try_context->catch_list); - tree catch_seq, t; - tree *last = &catch_seq; - bool saw_id = false; - - for (; !tsi_end_p (i); tsi_next (&i)) - { - tree stmt = tsi_stmt (i); - tree type = CATCH_TYPES (stmt); - tree body = CATCH_BODY (stmt); - - if (type == NULL) - { - *last = body; - saw_id = true; - break; - } - else - { - tree args, cond; - - if (type == error_mark_node) - cond = error_mark_node; - else - { - args = tree_cons (NULL, cur_try_context->caught_decl, NULL); - t = objc_get_class_reference (OBJC_TYPE_NAME (TREE_TYPE (type))); - args = tree_cons (NULL, t, args); - t = build_function_call (objc_exception_match_decl, args); - cond = c_common_truthvalue_conversion (t); - } - t = build3 (COND_EXPR, void_type_node, cond, body, NULL); - SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt)); - - *last = t; - last = &COND_EXPR_ELSE (t); - } - } - - if (!saw_id) - { - t = build2 (MODIFY_EXPR, void_type_node, cur_try_context->rethrow_decl, - cur_try_context->caught_decl); - SET_EXPR_LOCATION (t, cur_try_context->end_catch_locus); - append_to_statement_list (t, last); - - t = next_sjlj_build_try_exit (); - SET_EXPR_LOCATION (t, cur_try_context->end_catch_locus); - append_to_statement_list (t, last); - } - - return catch_seq; -} - -/* Build a complete @try-@catch-@finally block for legacy Darwin setjmp - exception handling. We aim to build: - - { - struct _objc_exception_data _stack; - id _rethrow = 0; - try - { - objc_exception_try_enter (&_stack); - if (_setjmp(&_stack.buf)) - { - id _caught = objc_exception_extract(&_stack); - objc_exception_try_enter (&_stack); - if (_setjmp(&_stack.buf)) - _rethrow = objc_exception_extract(&_stack); - else - CATCH-LIST - } - else - TRY-BLOCK - } - finally - { - if (!_rethrow) - objc_exception_try_exit(&_stack); - FINALLY-BLOCK - if (_rethrow) - objc_exception_throw(_rethrow); - } - } - - If CATCH-LIST is empty, we can omit all of the block containing - "_caught" except for the setting of _rethrow. Note the use of - a real TRY_FINALLY_EXPR here, which is not involved in EH per-se, - but handles goto and other exits from the block. */ - -static tree -next_sjlj_build_try_catch_finally (void) -{ - tree rethrow_decl, stack_decl, t; - tree catch_seq, try_fin, bind; - - /* Create the declarations involved. */ - t = xref_tag (RECORD_TYPE, get_identifier (UTAG_EXCDATA)); - stack_decl = objc_create_temporary_var (t); - cur_try_context->stack_decl = stack_decl; - - rethrow_decl = objc_create_temporary_var (objc_object_type); - cur_try_context->rethrow_decl = rethrow_decl; - TREE_CHAIN (rethrow_decl) = stack_decl; - - /* Build the outermost variable binding level. */ - bind = build3 (BIND_EXPR, void_type_node, rethrow_decl, NULL, NULL); - SET_EXPR_LOCATION (bind, cur_try_context->try_locus); - TREE_SIDE_EFFECTS (bind) = 1; - - /* Initialize rethrow_decl. */ - t = build2 (MODIFY_EXPR, void_type_node, rethrow_decl, - convert (objc_object_type, null_pointer_node)); - SET_EXPR_LOCATION (t, cur_try_context->try_locus); - append_to_statement_list (t, &BIND_EXPR_BODY (bind)); - - /* Build the outermost TRY_FINALLY_EXPR. */ - try_fin = build2 (TRY_FINALLY_EXPR, void_type_node, NULL, NULL); - SET_EXPR_LOCATION (try_fin, cur_try_context->try_locus); - TREE_SIDE_EFFECTS (try_fin) = 1; - append_to_statement_list (try_fin, &BIND_EXPR_BODY (bind)); - - /* Create the complete catch sequence. */ - if (cur_try_context->catch_list) - { - tree caught_decl = objc_build_exc_ptr (); - catch_seq = build_stmt (BIND_EXPR, caught_decl, NULL, NULL); - TREE_SIDE_EFFECTS (catch_seq) = 1; - - t = next_sjlj_build_exc_extract (caught_decl); - append_to_statement_list (t, &BIND_EXPR_BODY (catch_seq)); - - t = next_sjlj_build_enter_and_setjmp (); - COND_EXPR_THEN (t) = next_sjlj_build_exc_extract (rethrow_decl); - COND_EXPR_ELSE (t) = next_sjlj_build_catch_list (); - append_to_statement_list (t, &BIND_EXPR_BODY (catch_seq)); - } - else - catch_seq = next_sjlj_build_exc_extract (rethrow_decl); - SET_EXPR_LOCATION (catch_seq, cur_try_context->end_try_locus); - - /* Build the main register-and-try if statement. */ - t = next_sjlj_build_enter_and_setjmp (); - SET_EXPR_LOCATION (t, cur_try_context->try_locus); - COND_EXPR_THEN (t) = catch_seq; - COND_EXPR_ELSE (t) = cur_try_context->try_body; - TREE_OPERAND (try_fin, 0) = t; - - /* Build the complete FINALLY statement list. */ - t = next_sjlj_build_try_exit (); - t = build_stmt (COND_EXPR, - c_common_truthvalue_conversion (rethrow_decl), - NULL, t); - SET_EXPR_LOCATION (t, cur_try_context->finally_locus); - append_to_statement_list (t, &TREE_OPERAND (try_fin, 1)); - - append_to_statement_list (cur_try_context->finally_body, - &TREE_OPERAND (try_fin, 1)); - - t = tree_cons (NULL, rethrow_decl, NULL); - t = build_function_call (objc_exception_throw_decl, t); - t = build_stmt (COND_EXPR, - c_common_truthvalue_conversion (rethrow_decl), - t, NULL); - SET_EXPR_LOCATION (t, cur_try_context->end_finally_locus); - append_to_statement_list (t, &TREE_OPERAND (try_fin, 1)); - - return bind; -} - -/* Called just after parsing the @try and its associated BODY. We now - must prepare for the tricky bits -- handling the catches and finally. */ - -void -objc_begin_try_stmt (location_t try_locus, tree body) -{ - struct objc_try_context *c = xcalloc (1, sizeof (*c)); - c->outer = cur_try_context; - c->try_body = body; - c->try_locus = try_locus; - c->end_try_locus = input_location; - cur_try_context = c; - - objc_init_exceptions (); - - if (flag_objc_sjlj_exceptions) - objc_mark_locals_volatile (NULL); -} - -/* Called just after parsing "@catch (parm)". Open a binding level, - enter DECL into the binding level, and initialize it. Leave the - binding level open while the body of the compound statement is parsed. */ - -void -objc_begin_catch_clause (tree decl) -{ - tree compound, type, t; - - /* Begin a new scope that the entire catch clause will live in. */ - compound = c_begin_compound_stmt (true); - - /* The parser passed in a PARM_DECL, but what we really want is a VAR_DECL. */ - decl = build_decl (VAR_DECL, DECL_NAME (decl), TREE_TYPE (decl)); - lang_hooks.decls.pushdecl (decl); - - /* Since a decl is required here by syntax, don't warn if its unused. */ - /* ??? As opposed to __attribute__((unused))? Anyway, this appears to - be what the previous objc implementation did. */ - TREE_USED (decl) = 1; - - /* Verify that the type of the catch is valid. It must be a pointer - to an Objective-C class, or "id" (which is catch-all). */ - type = TREE_TYPE (decl); - - if (POINTER_TYPE_P (type) && objc_is_object_id (TREE_TYPE (type))) - type = NULL; - else if (!POINTER_TYPE_P (type) || !TYPED_OBJECT (TREE_TYPE (type))) - { - error ("@catch parameter is not a known Objective-C class type"); - type = error_mark_node; - } - else if (cur_try_context->catch_list) - { - /* Examine previous @catch clauses and see if we've already - caught the type in question. */ - tree_stmt_iterator i = tsi_start (cur_try_context->catch_list); - for (; !tsi_end_p (i); tsi_next (&i)) - { - tree stmt = tsi_stmt (i); - t = CATCH_TYPES (stmt); - if (t == error_mark_node) - continue; - if (!t || DERIVED_FROM_P (TREE_TYPE (t), TREE_TYPE (type))) - { - warning (0, "exception of type %<%T%> will be caught", - TREE_TYPE (type)); - warning (0, "%H by earlier handler for %<%T%>", - EXPR_LOCUS (stmt), TREE_TYPE (t ? t : objc_object_type)); - break; - } - } - } - - /* Record the data for the catch in the try context so that we can - finalize it later. */ - t = build_stmt (CATCH_EXPR, type, compound); - cur_try_context->current_catch = t; - - /* Initialize the decl from the EXC_PTR_EXPR we get from the runtime. */ - t = objc_build_exc_ptr (); - t = convert (TREE_TYPE (decl), t); - t = build2 (MODIFY_EXPR, void_type_node, decl, t); - add_stmt (t); -} - -/* Called just after parsing the closing brace of a @catch clause. Close - the open binding level, and record a CATCH_EXPR for it. */ - -void -objc_finish_catch_clause (void) -{ - tree c = cur_try_context->current_catch; - cur_try_context->current_catch = NULL; - cur_try_context->end_catch_locus = input_location; - - CATCH_BODY (c) = c_end_compound_stmt (CATCH_BODY (c), 1); - append_to_statement_list (c, &cur_try_context->catch_list); -} - -/* Called after parsing a @finally clause and its associated BODY. - Record the body for later placement. */ - -void -objc_build_finally_clause (location_t finally_locus, tree body) -{ - cur_try_context->finally_body = body; - cur_try_context->finally_locus = finally_locus; - cur_try_context->end_finally_locus = input_location; -} - -/* Called to finalize a @try construct. */ - -tree -objc_finish_try_stmt (void) -{ - struct objc_try_context *c = cur_try_context; - tree stmt; - - if (c->catch_list == NULL && c->finally_body == NULL) - error ("%<@try%> without %<@catch%> or %<@finally%>"); - - /* If we're doing Darwin setjmp exceptions, build the big nasty. */ - if (flag_objc_sjlj_exceptions) - { - if (!cur_try_context->finally_body) - { - cur_try_context->finally_locus = input_location; - cur_try_context->end_finally_locus = input_location; - } - stmt = next_sjlj_build_try_catch_finally (); - } - else - { - /* Otherwise, nest the CATCH inside a FINALLY. */ - stmt = c->try_body; - if (c->catch_list) - { - stmt = build_stmt (TRY_CATCH_EXPR, stmt, c->catch_list); - SET_EXPR_LOCATION (stmt, cur_try_context->try_locus); - } - if (c->finally_body) - { - stmt = build_stmt (TRY_FINALLY_EXPR, stmt, c->finally_body); - SET_EXPR_LOCATION (stmt, cur_try_context->try_locus); - } - } - add_stmt (stmt); - - cur_try_context = c->outer; - free (c); - return stmt; -} - -tree -objc_build_throw_stmt (tree throw_expr) -{ - tree args; - - objc_init_exceptions (); - - if (throw_expr == NULL) - { - /* If we're not inside a @catch block, there is no "current - exception" to be rethrown. */ - if (cur_try_context == NULL - || cur_try_context->current_catch == NULL) - { - error ("%<@throw%> (rethrow) used outside of a @catch block"); - return NULL_TREE; - } - - /* Otherwise the object is still sitting in the EXC_PTR_EXPR - value that we get from the runtime. */ - throw_expr = objc_build_exc_ptr (); - } - - /* A throw is just a call to the runtime throw function with the - object as a parameter. */ - args = tree_cons (NULL, throw_expr, NULL); - return add_stmt (build_function_call (objc_exception_throw_decl, args)); -} - -tree -objc_build_synchronized (location_t start_locus, tree mutex, tree body) -{ - tree args, call; - - /* First lock the mutex. */ - mutex = save_expr (mutex); - args = tree_cons (NULL, mutex, NULL); - call = build_function_call (objc_sync_enter_decl, args); - SET_EXPR_LOCATION (call, start_locus); - add_stmt (call); - - /* Build the mutex unlock. */ - args = tree_cons (NULL, mutex, NULL); - call = build_function_call (objc_sync_exit_decl, args); - SET_EXPR_LOCATION (call, input_location); - - /* Put the that and the body in a TRY_FINALLY. */ - objc_begin_try_stmt (start_locus, body); - objc_build_finally_clause (input_location, call); - return objc_finish_try_stmt (); -} - - -/* Predefine the following data type: - - struct _objc_exception_data - { - int buf[OBJC_JBLEN]; - void *pointers[4]; - }; */ - -/* The following yuckiness should prevent users from having to #include - in their code... */ - -/* Define to a harmless positive value so the below code doesn't die. */ -#ifndef OBJC_JBLEN -#define OBJC_JBLEN 18 -#endif - -static void -build_next_objc_exception_stuff (void) -{ - tree field_decl, field_decl_chain, index, temp_type; - - objc_exception_data_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_EXCDATA)); - - /* int buf[OBJC_JBLEN]; */ - - index = build_index_type (build_int_cst (NULL_TREE, OBJC_JBLEN - 1)); - field_decl = create_field_decl (build_array_type (integer_type_node, index), - "buf"); - field_decl_chain = field_decl; - - /* void *pointers[4]; */ - - index = build_index_type (build_int_cst (NULL_TREE, 4 - 1)); - field_decl = create_field_decl (build_array_type (ptr_type_node, index), - "pointers"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_exception_data_template, field_decl_chain, NULL_TREE); - - /* int _setjmp(...); */ - /* If the user includes , this shall be superseded by - 'int _setjmp(jmp_buf);' */ - temp_type = build_function_type (integer_type_node, NULL_TREE); - objc_setjmp_decl - = builtin_function (TAG_SETJMP, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - - /* id objc_exception_extract(struct _objc_exception_data *); */ - temp_type - = build_function_type (objc_object_type, - tree_cons (NULL_TREE, - build_pointer_type (objc_exception_data_template), - OBJC_VOID_AT_END)); - objc_exception_extract_decl - = builtin_function (TAG_EXCEPTIONEXTRACT, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - /* void objc_exception_try_enter(struct _objc_exception_data *); */ - /* void objc_exception_try_exit(struct _objc_exception_data *); */ - temp_type - = build_function_type (void_type_node, - tree_cons (NULL_TREE, - build_pointer_type (objc_exception_data_template), - OBJC_VOID_AT_END)); - objc_exception_try_enter_decl - = builtin_function (TAG_EXCEPTIONTRYENTER, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - objc_exception_try_exit_decl - = builtin_function (TAG_EXCEPTIONTRYEXIT, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - - /* int objc_exception_match(id, id); */ - temp_type - = build_function_type (integer_type_node, - tree_cons (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, objc_object_type, - OBJC_VOID_AT_END))); - objc_exception_match_decl - = builtin_function (TAG_EXCEPTIONMATCH, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - - /* id objc_assign_ivar (id, id, unsigned int); */ - /* id objc_assign_ivar_Fast (id, id, unsigned int) - __attribute__ ((hard_coded_address (OFFS_ASSIGNIVAR_FAST))); */ - temp_type - = build_function_type (objc_object_type, - tree_cons - (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, - unsigned_type_node, - OBJC_VOID_AT_END)))); - objc_assign_ivar_decl - = builtin_function (TAG_ASSIGNIVAR, temp_type, 0, NOT_BUILT_IN, - NULL, NULL_TREE); -#ifdef OFFS_ASSIGNIVAR_FAST - objc_assign_ivar_fast_decl - = builtin_function (TAG_ASSIGNIVAR_FAST, temp_type, 0, - NOT_BUILT_IN, NULL, NULL_TREE); - DECL_ATTRIBUTES (objc_assign_ivar_fast_decl) - = tree_cons (get_identifier ("hard_coded_address"), - build_int_cst (NULL_TREE, OFFS_ASSIGNIVAR_FAST), - NULL_TREE); -#else - /* Default to slower ivar method. */ - objc_assign_ivar_fast_decl = objc_assign_ivar_decl; -#endif - - /* id objc_assign_global (id, id *); */ - /* id objc_assign_strongCast (id, id *); */ - temp_type = build_function_type (objc_object_type, - tree_cons (NULL_TREE, objc_object_type, - tree_cons (NULL_TREE, build_pointer_type (objc_object_type), - OBJC_VOID_AT_END))); - objc_assign_global_decl - = builtin_function (TAG_ASSIGNGLOBAL, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); - objc_assign_strong_cast_decl - = builtin_function (TAG_ASSIGNSTRONGCAST, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE); -} - -static void -build_objc_exception_stuff (void) -{ - tree noreturn_list, nothrow_list, temp_type; - - noreturn_list = tree_cons (get_identifier ("noreturn"), NULL, NULL); - nothrow_list = tree_cons (get_identifier ("nothrow"), NULL, NULL); - - /* void objc_exception_throw(id) __attribute__((noreturn)); */ - /* void objc_sync_enter(id); */ - /* void objc_sync_exit(id); */ - temp_type = build_function_type (void_type_node, - tree_cons (NULL_TREE, objc_object_type, - OBJC_VOID_AT_END)); - objc_exception_throw_decl - = builtin_function (TAG_EXCEPTIONTHROW, temp_type, 0, NOT_BUILT_IN, NULL, - noreturn_list); - objc_sync_enter_decl - = builtin_function (TAG_SYNCENTER, temp_type, 0, NOT_BUILT_IN, - NULL, nothrow_list); - objc_sync_exit_decl - = builtin_function (TAG_SYNCEXIT, temp_type, 0, NOT_BUILT_IN, - NULL, nothrow_list); -} - -/* Construct a C struct corresponding to ObjC class CLASS, with the same - name as the class: - - struct { - struct _objc_class *isa; - ... - }; */ - -static void -build_private_template (tree class) -{ - if (!CLASS_STATIC_TEMPLATE (class)) - { - tree record = objc_build_struct (class, - get_class_ivars (class, false), - CLASS_SUPER_NAME (class)); - - /* Set the TREE_USED bit for this struct, so that stab generator - can emit stabs for this struct type. */ - if (flag_debug_only_used_symbols && TYPE_STUB_DECL (record)) - TREE_USED (TYPE_STUB_DECL (record)) = 1; - } -} - -/* Begin code generation for protocols... */ - -/* struct _objc_protocol { - struct _objc_class *isa; - char *protocol_name; - struct _objc_protocol **protocol_list; - struct _objc__method_prototype_list *instance_methods; - struct _objc__method_prototype_list *class_methods; - }; */ - -static void -build_protocol_template (void) -{ - tree field_decl, field_decl_chain; - - objc_protocol_template = start_struct (RECORD_TYPE, - get_identifier (UTAG_PROTOCOL)); - - /* struct _objc_class *isa; */ - field_decl = create_field_decl (build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier (UTAG_CLASS))), - "isa"); - field_decl_chain = field_decl; - - /* char *protocol_name; */ - field_decl = create_field_decl (string_type_node, "protocol_name"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_protocol **protocol_list; */ - field_decl = create_field_decl (build_pointer_type - (build_pointer_type - (objc_protocol_template)), - "protocol_list"); - chainon (field_decl_chain, field_decl); - - /* struct _objc__method_prototype_list *instance_methods; */ - field_decl = create_field_decl (objc_method_proto_list_ptr, - "instance_methods"); - chainon (field_decl_chain, field_decl); - - /* struct _objc__method_prototype_list *class_methods; */ - field_decl = create_field_decl (objc_method_proto_list_ptr, - "class_methods"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_protocol_template, field_decl_chain, NULL_TREE); -} - -static tree -build_descriptor_table_initializer (tree type, tree entries) -{ - tree initlist = NULL_TREE; - - do - { - tree eltlist = NULL_TREE; - - eltlist - = tree_cons (NULL_TREE, - build_selector (METHOD_SEL_NAME (entries)), NULL_TREE); - eltlist - = tree_cons (NULL_TREE, - add_objc_string (METHOD_ENCODING (entries), - meth_var_types), - eltlist); - - initlist - = tree_cons (NULL_TREE, - objc_build_constructor (type, nreverse (eltlist)), - initlist); - - entries = TREE_CHAIN (entries); - } - while (entries); - - return objc_build_constructor (build_array_type (type, 0), - nreverse (initlist)); -} - -/* struct objc_method_prototype_list { - int count; - struct objc_method_prototype { - SEL name; - char *types; - } list[1]; - }; */ - -static tree -build_method_prototype_list_template (tree list_type, int size) -{ - tree objc_ivar_list_record; - tree field_decl, field_decl_chain; - - /* Generate an unnamed struct definition. */ - - objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE); - - /* int method_count; */ - field_decl = create_field_decl (integer_type_node, "method_count"); - field_decl_chain = field_decl; - - /* struct objc_method method_list[]; */ - field_decl = create_field_decl (build_array_type - (list_type, - build_index_type - (build_int_cst (NULL_TREE, size - 1))), - "method_list"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE); - - return objc_ivar_list_record; -} - -static tree -build_method_prototype_template (void) -{ - tree proto_record; - tree field_decl, field_decl_chain; - - proto_record - = start_struct (RECORD_TYPE, get_identifier (UTAG_METHOD_PROTOTYPE)); - - /* SEL _cmd; */ - field_decl = create_field_decl (objc_selector_type, "_cmd"); - field_decl_chain = field_decl; - - /* char *method_types; */ - field_decl = create_field_decl (string_type_node, "method_types"); - chainon (field_decl_chain, field_decl); - - finish_struct (proto_record, field_decl_chain, NULL_TREE); - - return proto_record; -} - -static tree -objc_method_parm_type (tree type) -{ - type = TREE_VALUE (TREE_TYPE (type)); - if (TREE_CODE (type) == TYPE_DECL) - type = TREE_TYPE (type); - return type; -} - -static int -objc_encoded_type_size (tree type) -{ - int sz = int_size_in_bytes (type); - - /* Make all integer and enum types at least as large - as an int. */ - if (sz > 0 && INTEGRAL_TYPE_P (type)) - sz = MAX (sz, int_size_in_bytes (integer_type_node)); - /* Treat arrays as pointers, since that's how they're - passed in. */ - else if (TREE_CODE (type) == ARRAY_TYPE) - sz = int_size_in_bytes (ptr_type_node); - return sz; -} - -static tree -encode_method_prototype (tree method_decl) -{ - tree parms; - int parm_offset, i; - char buf[40]; - tree result; - - /* ONEWAY and BYCOPY, for remote object are the only method qualifiers. */ - encode_type_qualifiers (TREE_PURPOSE (TREE_TYPE (method_decl))); - - /* Encode return type. */ - encode_type (objc_method_parm_type (method_decl), - obstack_object_size (&util_obstack), - OBJC_ENCODE_INLINE_DEFS); - - /* Stack size. */ - /* The first two arguments (self and _cmd) are pointers; account for - their size. */ - i = int_size_in_bytes (ptr_type_node); - parm_offset = 2 * i; - for (parms = METHOD_SEL_ARGS (method_decl); parms; - parms = TREE_CHAIN (parms)) - { - tree type = objc_method_parm_type (parms); - int sz = objc_encoded_type_size (type); - - /* If a type size is not known, bail out. */ - if (sz < 0) - { - error ("type %q+D does not have a known size", - type); - /* Pretend that the encoding succeeded; the compilation will - fail nevertheless. */ - goto finish_encoding; - } - parm_offset += sz; - } - - sprintf (buf, "%d@0:%d", parm_offset, i); - obstack_grow (&util_obstack, buf, strlen (buf)); - - /* Argument types. */ - parm_offset = 2 * i; - for (parms = METHOD_SEL_ARGS (method_decl); parms; - parms = TREE_CHAIN (parms)) - { - tree type = objc_method_parm_type (parms); - - /* Process argument qualifiers for user supplied arguments. */ - encode_type_qualifiers (TREE_PURPOSE (TREE_TYPE (parms))); - - /* Type. */ - encode_type (type, obstack_object_size (&util_obstack), - OBJC_ENCODE_INLINE_DEFS); - - /* Compute offset. */ - sprintf (buf, "%d", parm_offset); - parm_offset += objc_encoded_type_size (type); - - obstack_grow (&util_obstack, buf, strlen (buf)); - } - - finish_encoding: - obstack_1grow (&util_obstack, '\0'); - result = get_identifier (obstack_finish (&util_obstack)); - obstack_free (&util_obstack, util_firstobj); - return result; -} - -static tree -generate_descriptor_table (tree type, const char *name, int size, tree list, - tree proto) -{ - tree decl, initlist; - - decl = start_var_decl (type, synth_id_with_class_suffix (name, proto)); - - initlist = build_tree_list (NULL_TREE, build_int_cst (NULL_TREE, size)); - initlist = tree_cons (NULL_TREE, list, initlist); - - finish_var_decl (decl, objc_build_constructor (type, nreverse (initlist))); - - return decl; -} - -static void -generate_method_descriptors (tree protocol) -{ - tree initlist, chain, method_list_template; - int size; - - if (!objc_method_prototype_template) - objc_method_prototype_template = build_method_prototype_template (); - - chain = PROTOCOL_CLS_METHODS (protocol); - if (chain) - { - size = list_length (chain); - - method_list_template - = build_method_prototype_list_template (objc_method_prototype_template, - size); - - initlist - = build_descriptor_table_initializer (objc_method_prototype_template, - chain); - - UOBJC_CLASS_METHODS_decl - = generate_descriptor_table (method_list_template, - "_OBJC_PROTOCOL_CLASS_METHODS", - size, initlist, protocol); - } - else - UOBJC_CLASS_METHODS_decl = 0; - - chain = PROTOCOL_NST_METHODS (protocol); - if (chain) - { - size = list_length (chain); - - method_list_template - = build_method_prototype_list_template (objc_method_prototype_template, - size); - initlist - = build_descriptor_table_initializer (objc_method_prototype_template, - chain); - - UOBJC_INSTANCE_METHODS_decl - = generate_descriptor_table (method_list_template, - "_OBJC_PROTOCOL_INSTANCE_METHODS", - size, initlist, protocol); - } - else - UOBJC_INSTANCE_METHODS_decl = 0; -} - -static void -generate_protocol_references (tree plist) -{ - tree lproto; - - /* Forward declare protocols referenced. */ - for (lproto = plist; lproto; lproto = TREE_CHAIN (lproto)) - { - tree proto = TREE_VALUE (lproto); - - if (TREE_CODE (proto) == PROTOCOL_INTERFACE_TYPE - && PROTOCOL_NAME (proto)) - { - if (! PROTOCOL_FORWARD_DECL (proto)) - build_protocol_reference (proto); - - if (PROTOCOL_LIST (proto)) - generate_protocol_references (PROTOCOL_LIST (proto)); - } - } -} - -/* Generate either '- .cxx_construct' or '- .cxx_destruct' for the - current class. */ -#ifdef OBJCPLUS -static void -objc_generate_cxx_ctor_or_dtor (bool dtor) -{ - tree fn, body, compound_stmt, ivar; - - /* - (id) .cxx_construct { ... return self; } */ - /* - (void) .cxx_construct { ... } */ - - objc_set_method_type (MINUS_EXPR); - objc_start_method_definition - (objc_build_method_signature (build_tree_list (NULL_TREE, - dtor - ? void_type_node - : objc_object_type), - get_identifier (dtor - ? TAG_CXX_DESTRUCT - : TAG_CXX_CONSTRUCT), - make_node (TREE_LIST), - false)); - body = begin_function_body (); - compound_stmt = begin_compound_stmt (0); - - ivar = CLASS_IVARS (implementation_template); - /* Destroy ivars in reverse order. */ - if (dtor) - ivar = nreverse (copy_list (ivar)); - - for (; ivar; ivar = TREE_CHAIN (ivar)) - { - if (TREE_CODE (ivar) == FIELD_DECL) - { - tree type = TREE_TYPE (ivar); - - /* Call the ivar's default constructor or destructor. Do not - call the destructor unless a corresponding constructor call - has also been made (or is not needed). */ - if (IS_AGGR_TYPE (type) - && (dtor - ? (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) - && (!TYPE_NEEDS_CONSTRUCTING (type) - || TYPE_HAS_DEFAULT_CONSTRUCTOR (type))) - : (TYPE_NEEDS_CONSTRUCTING (type) - && TYPE_HAS_DEFAULT_CONSTRUCTOR (type)))) - finish_expr_stmt - (build_special_member_call - (build_ivar_reference (DECL_NAME (ivar)), - dtor ? complete_dtor_identifier : complete_ctor_identifier, - NULL_TREE, type, LOOKUP_NORMAL)); - } - } - - /* The constructor returns 'self'. */ - if (!dtor) - finish_return_stmt (self_decl); - - finish_compound_stmt (compound_stmt); - finish_function_body (body); - fn = current_function_decl; - finish_function (); - objc_finish_method_definition (fn); -} - -/* The following routine will examine the current @interface for any - non-POD C++ ivars requiring non-trivial construction and/or - destruction, and then synthesize special '- .cxx_construct' and/or - '- .cxx_destruct' methods which will run the appropriate - construction or destruction code. Note that ivars inherited from - super-classes are _not_ considered. */ -static void -objc_generate_cxx_cdtors (void) -{ - bool need_ctor = false, need_dtor = false; - tree ivar; - - /* We do not want to do this for categories, since they do not have - their own ivars. */ - - if (TREE_CODE (objc_implementation_context) != CLASS_IMPLEMENTATION_TYPE) - return; - - /* First, determine if we even need a constructor and/or destructor. */ - - for (ivar = CLASS_IVARS (implementation_template); ivar; - ivar = TREE_CHAIN (ivar)) - { - if (TREE_CODE (ivar) == FIELD_DECL) - { - tree type = TREE_TYPE (ivar); - - if (IS_AGGR_TYPE (type)) - { - if (TYPE_NEEDS_CONSTRUCTING (type) - && TYPE_HAS_DEFAULT_CONSTRUCTOR (type)) - /* NB: If a default constructor is not available, we will not - be able to initialize this ivar; the add_instance_variable() - routine will already have warned about this. */ - need_ctor = true; - - if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) - && (!TYPE_NEEDS_CONSTRUCTING (type) - || TYPE_HAS_DEFAULT_CONSTRUCTOR (type))) - /* NB: If a default constructor is not available, we will not - call the destructor either, for symmetry. */ - need_dtor = true; - } - } - } - - /* Generate '- .cxx_construct' if needed. */ - - if (need_ctor) - objc_generate_cxx_ctor_or_dtor (false); - - /* Generate '- .cxx_destruct' if needed. */ - - if (need_dtor) - objc_generate_cxx_ctor_or_dtor (true); - - /* The 'imp_list' variable points at an imp_entry record for the current - @implementation. Record the existence of '- .cxx_construct' and/or - '- .cxx_destruct' methods therein; it will be included in the - metadata for the class. */ - if (flag_next_runtime) - imp_list->has_cxx_cdtors = (need_ctor || need_dtor); -} -#endif - -/* For each protocol which was referenced either from a @protocol() - expression, or because a class/category implements it (then a - pointer to the protocol is stored in the struct describing the - class/category), we create a statically allocated instance of the - Protocol class. The code is written in such a way as to generate - as few Protocol objects as possible; we generate a unique Protocol - instance for each protocol, and we don't generate a Protocol - instance if the protocol is never referenced (either from a - @protocol() or from a class/category implementation). These - statically allocated objects can be referred to via the static - (that is, private to this module) symbols _OBJC_PROTOCOL_n. - - The statically allocated Protocol objects that we generate here - need to be fixed up at runtime in order to be used: the 'isa' - pointer of the objects need to be set up to point to the 'Protocol' - class, as known at runtime. - - The NeXT runtime fixes up all protocols at program startup time, - before main() is entered. It uses a low-level trick to look up all - those symbols, then loops on them and fixes them up. - - The GNU runtime as well fixes up all protocols before user code - from the module is executed; it requires pointers to those symbols - to be put in the objc_symtab (which is then passed as argument to - the function __objc_exec_class() which the compiler sets up to be - executed automatically when the module is loaded); setup of those - Protocol objects happen in two ways in the GNU runtime: all - Protocol objects referred to by a class or category implementation - are fixed up when the class/category is loaded; all Protocol - objects referred to by a @protocol() expression are added by the - compiler to the list of statically allocated instances to fixup - (the same list holding the statically allocated constant string - objects). Because, as explained above, the compiler generates as - few Protocol objects as possible, some Protocol object might end up - being referenced multiple times when compiled with the GNU runtime, - and end up being fixed up multiple times at runtime initialization. - But that doesn't hurt, it's just a little inefficient. */ - -static void -generate_protocols (void) -{ - tree p, encoding; - tree decl; - tree initlist, protocol_name_expr, refs_decl, refs_expr; - - /* If a protocol was directly referenced, pull in indirect references. */ - for (p = protocol_chain; p; p = TREE_CHAIN (p)) - if (PROTOCOL_FORWARD_DECL (p) && PROTOCOL_LIST (p)) - generate_protocol_references (PROTOCOL_LIST (p)); - - for (p = protocol_chain; p; p = TREE_CHAIN (p)) - { - tree nst_methods = PROTOCOL_NST_METHODS (p); - tree cls_methods = PROTOCOL_CLS_METHODS (p); - - /* If protocol wasn't referenced, don't generate any code. */ - decl = PROTOCOL_FORWARD_DECL (p); - - if (!decl) - continue; - - /* Make sure we link in the Protocol class. */ - add_class_reference (get_identifier (PROTOCOL_OBJECT_CLASS_NAME)); - - while (nst_methods) - { - if (! METHOD_ENCODING (nst_methods)) - { - encoding = encode_method_prototype (nst_methods); - METHOD_ENCODING (nst_methods) = encoding; - } - nst_methods = TREE_CHAIN (nst_methods); - } - - while (cls_methods) - { - if (! METHOD_ENCODING (cls_methods)) - { - encoding = encode_method_prototype (cls_methods); - METHOD_ENCODING (cls_methods) = encoding; - } - - cls_methods = TREE_CHAIN (cls_methods); - } - generate_method_descriptors (p); - - if (PROTOCOL_LIST (p)) - refs_decl = generate_protocol_list (p); - else - refs_decl = 0; - - /* static struct objc_protocol _OBJC_PROTOCOL_; */ - protocol_name_expr = add_objc_string (PROTOCOL_NAME (p), class_names); - - if (refs_decl) - refs_expr = convert (build_pointer_type (build_pointer_type - (objc_protocol_template)), - build_unary_op (ADDR_EXPR, refs_decl, 0)); - else - refs_expr = build_int_cst (NULL_TREE, 0); - - /* UOBJC_INSTANCE_METHODS_decl/UOBJC_CLASS_METHODS_decl are set - by generate_method_descriptors, which is called above. */ - initlist = build_protocol_initializer (TREE_TYPE (decl), - protocol_name_expr, refs_expr, - UOBJC_INSTANCE_METHODS_decl, - UOBJC_CLASS_METHODS_decl); - finish_var_decl (decl, initlist); - } -} - -static tree -build_protocol_initializer (tree type, tree protocol_name, - tree protocol_list, tree instance_methods, - tree class_methods) -{ - tree initlist = NULL_TREE, expr; - tree cast_type = build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier (UTAG_CLASS))); - - /* Filling the "isa" in with one allows the runtime system to - detect that the version change...should remove before final release. */ - - expr = build_int_cst (cast_type, PROTOCOL_VERSION); - initlist = tree_cons (NULL_TREE, expr, initlist); - initlist = tree_cons (NULL_TREE, protocol_name, initlist); - initlist = tree_cons (NULL_TREE, protocol_list, initlist); - - if (!instance_methods) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (objc_method_proto_list_ptr, - build_unary_op (ADDR_EXPR, instance_methods, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - if (!class_methods) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (objc_method_proto_list_ptr, - build_unary_op (ADDR_EXPR, class_methods, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - return objc_build_constructor (type, nreverse (initlist)); -} - -/* struct _objc_category { - char *category_name; - char *class_name; - struct _objc_method_list *instance_methods; - struct _objc_method_list *class_methods; - struct _objc_protocol_list *protocols; - }; */ - -static void -build_category_template (void) -{ - tree field_decl, field_decl_chain; - - objc_category_template = start_struct (RECORD_TYPE, - get_identifier (UTAG_CATEGORY)); - - /* char *category_name; */ - field_decl = create_field_decl (string_type_node, "category_name"); - field_decl_chain = field_decl; - - /* char *class_name; */ - field_decl = create_field_decl (string_type_node, "class_name"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_method_list *instance_methods; */ - field_decl = create_field_decl (objc_method_list_ptr, - "instance_methods"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_method_list *class_methods; */ - field_decl = create_field_decl (objc_method_list_ptr, - "class_methods"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_protocol **protocol_list; */ - field_decl = create_field_decl (build_pointer_type - (build_pointer_type - (objc_protocol_template)), - "protocol_list"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_category_template, field_decl_chain, NULL_TREE); -} - -/* struct _objc_selector { - SEL sel_id; - char *sel_type; - }; */ - -static void -build_selector_template (void) -{ - - tree field_decl, field_decl_chain; - - objc_selector_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_SELECTOR)); - - /* SEL sel_id; */ - field_decl = create_field_decl (objc_selector_type, "sel_id"); - field_decl_chain = field_decl; - - /* char *sel_type; */ - field_decl = create_field_decl (string_type_node, "sel_type"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_selector_template, field_decl_chain, NULL_TREE); -} - -/* struct _objc_class { - struct _objc_class *isa; - struct _objc_class *super_class; - char *name; - long version; - long info; - long instance_size; - struct _objc_ivar_list *ivars; - struct _objc_method_list *methods; - #ifdef __NEXT_RUNTIME__ - struct objc_cache *cache; - #else - struct sarray *dtable; - struct _objc_class *subclass_list; - struct _objc_class *sibling_class; - #endif - struct _objc_protocol_list *protocols; - #ifdef __NEXT_RUNTIME__ - void *sel_id; - #endif - void *gc_object_type; - }; */ - -/* NB: The 'sel_id' and 'gc_object_type' fields are not being used by - the NeXT/Apple runtime; still, the compiler must generate them to - maintain backward binary compatibility (and to allow for future - expansion). */ - -static void -build_class_template (void) -{ - tree field_decl, field_decl_chain; - - objc_class_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_CLASS)); - - /* struct _objc_class *isa; */ - field_decl = create_field_decl (build_pointer_type (objc_class_template), - "isa"); - field_decl_chain = field_decl; - - /* struct _objc_class *super_class; */ - field_decl = create_field_decl (build_pointer_type (objc_class_template), - "super_class"); - chainon (field_decl_chain, field_decl); - - /* char *name; */ - field_decl = create_field_decl (string_type_node, "name"); - chainon (field_decl_chain, field_decl); - - /* long version; */ - field_decl = create_field_decl (long_integer_type_node, "version"); - chainon (field_decl_chain, field_decl); - - /* long info; */ - field_decl = create_field_decl (long_integer_type_node, "info"); - chainon (field_decl_chain, field_decl); - - /* long instance_size; */ - field_decl = create_field_decl (long_integer_type_node, "instance_size"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_ivar_list *ivars; */ - field_decl = create_field_decl (objc_ivar_list_ptr, - "ivars"); - chainon (field_decl_chain, field_decl); - - /* struct _objc_method_list *methods; */ - field_decl = create_field_decl (objc_method_list_ptr, - "methods"); - chainon (field_decl_chain, field_decl); - - if (flag_next_runtime) - { - /* struct objc_cache *cache; */ - field_decl = create_field_decl (build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier - ("objc_cache"))), - "cache"); - chainon (field_decl_chain, field_decl); - } - else - { - /* struct sarray *dtable; */ - field_decl = create_field_decl (build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier - ("sarray"))), - "dtable"); - chainon (field_decl_chain, field_decl); - - /* struct objc_class *subclass_list; */ - field_decl = create_field_decl (build_pointer_type - (objc_class_template), - "subclass_list"); - chainon (field_decl_chain, field_decl); - - /* struct objc_class *sibling_class; */ - field_decl = create_field_decl (build_pointer_type - (objc_class_template), - "sibling_class"); - chainon (field_decl_chain, field_decl); - } - - /* struct _objc_protocol **protocol_list; */ - field_decl = create_field_decl (build_pointer_type - (build_pointer_type - (xref_tag (RECORD_TYPE, - get_identifier - (UTAG_PROTOCOL)))), - "protocol_list"); - chainon (field_decl_chain, field_decl); - - if (flag_next_runtime) - { - /* void *sel_id; */ - field_decl = create_field_decl (build_pointer_type (void_type_node), - "sel_id"); - chainon (field_decl_chain, field_decl); - } - - /* void *gc_object_type; */ - field_decl = create_field_decl (build_pointer_type (void_type_node), - "gc_object_type"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_class_template, field_decl_chain, NULL_TREE); -} - -/* Generate appropriate forward declarations for an implementation. */ - -static void -synth_forward_declarations (void) -{ - tree an_id; - - /* static struct objc_class _OBJC_CLASS_; */ - UOBJC_CLASS_decl = build_metadata_decl ("_OBJC_CLASS", - objc_class_template); - - /* static struct objc_class _OBJC_METACLASS_; */ - UOBJC_METACLASS_decl = build_metadata_decl ("_OBJC_METACLASS", - objc_class_template); - - /* Pre-build the following entities - for speed/convenience. */ - - an_id = get_identifier ("super_class"); - ucls_super_ref = objc_build_component_ref (UOBJC_CLASS_decl, an_id); - uucls_super_ref = objc_build_component_ref (UOBJC_METACLASS_decl, an_id); -} - -static void -error_with_ivar (const char *message, tree decl) -{ - error ("%J%s %qs", decl, - message, gen_declaration (decl)); - -} - -static void -check_ivars (tree inter, tree imp) -{ - tree intdecls = CLASS_RAW_IVARS (inter); - tree impdecls = CLASS_RAW_IVARS (imp); - - while (1) - { - tree t1, t2; - -#ifdef OBJCPLUS - if (intdecls && TREE_CODE (intdecls) == TYPE_DECL) - intdecls = TREE_CHAIN (intdecls); -#endif - if (intdecls == 0 && impdecls == 0) - break; - if (intdecls == 0 || impdecls == 0) - { - error ("inconsistent instance variable specification"); - break; - } - - t1 = TREE_TYPE (intdecls); t2 = TREE_TYPE (impdecls); - - if (!comptypes (t1, t2) - || !tree_int_cst_equal (DECL_INITIAL (intdecls), - DECL_INITIAL (impdecls))) - { - if (DECL_NAME (intdecls) == DECL_NAME (impdecls)) - { - error_with_ivar ("conflicting instance variable type", - impdecls); - error_with_ivar ("previous declaration of", - intdecls); - } - else /* both the type and the name don't match */ - { - error ("inconsistent instance variable specification"); - break; - } - } - - else if (DECL_NAME (intdecls) != DECL_NAME (impdecls)) - { - error_with_ivar ("conflicting instance variable name", - impdecls); - error_with_ivar ("previous declaration of", - intdecls); - } - - intdecls = TREE_CHAIN (intdecls); - impdecls = TREE_CHAIN (impdecls); - } -} - -/* Set 'objc_super_template' to the data type node for 'struct _objc_super'. - This needs to be done just once per compilation. */ - -/* struct _objc_super { - struct _objc_object *self; - struct _objc_class *super_class; - }; */ - -static void -build_super_template (void) -{ - tree field_decl, field_decl_chain; - - objc_super_template = start_struct (RECORD_TYPE, get_identifier (UTAG_SUPER)); - - /* struct _objc_object *self; */ - field_decl = create_field_decl (objc_object_type, "self"); - field_decl_chain = field_decl; - - /* struct _objc_class *super_class; */ - field_decl = create_field_decl (build_pointer_type (objc_class_template), - "super_class"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_super_template, field_decl_chain, NULL_TREE); -} - -/* struct _objc_ivar { - char *ivar_name; - char *ivar_type; - int ivar_offset; - }; */ - -static tree -build_ivar_template (void) -{ - tree objc_ivar_id, objc_ivar_record; - tree field_decl, field_decl_chain; - - objc_ivar_id = get_identifier (UTAG_IVAR); - objc_ivar_record = start_struct (RECORD_TYPE, objc_ivar_id); - - /* char *ivar_name; */ - field_decl = create_field_decl (string_type_node, "ivar_name"); - field_decl_chain = field_decl; - - /* char *ivar_type; */ - field_decl = create_field_decl (string_type_node, "ivar_type"); - chainon (field_decl_chain, field_decl); - - /* int ivar_offset; */ - field_decl = create_field_decl (integer_type_node, "ivar_offset"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_ivar_record, field_decl_chain, NULL_TREE); - - return objc_ivar_record; -} - -/* struct { - int ivar_count; - struct objc_ivar ivar_list[ivar_count]; - }; */ - -static tree -build_ivar_list_template (tree list_type, int size) -{ - tree objc_ivar_list_record; - tree field_decl, field_decl_chain; - - objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE); - - /* int ivar_count; */ - field_decl = create_field_decl (integer_type_node, "ivar_count"); - field_decl_chain = field_decl; - - /* struct objc_ivar ivar_list[]; */ - field_decl = create_field_decl (build_array_type - (list_type, - build_index_type - (build_int_cst (NULL_TREE, size - 1))), - "ivar_list"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE); - - return objc_ivar_list_record; -} - -/* struct { - struct _objc__method_prototype_list *method_next; - int method_count; - struct objc_method method_list[method_count]; - }; */ - -static tree -build_method_list_template (tree list_type, int size) -{ - tree objc_ivar_list_record; - tree field_decl, field_decl_chain; - - objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE); - - /* struct _objc__method_prototype_list *method_next; */ - field_decl = create_field_decl (objc_method_proto_list_ptr, - "method_next"); - field_decl_chain = field_decl; - - /* int method_count; */ - field_decl = create_field_decl (integer_type_node, "method_count"); - chainon (field_decl_chain, field_decl); - - /* struct objc_method method_list[]; */ - field_decl = create_field_decl (build_array_type - (list_type, - build_index_type - (build_int_cst (NULL_TREE, size - 1))), - "method_list"); - chainon (field_decl_chain, field_decl); - - finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE); - - return objc_ivar_list_record; -} - -static tree -build_ivar_list_initializer (tree type, tree field_decl) -{ - tree initlist = NULL_TREE; - - do - { - tree ivar = NULL_TREE; - - /* Set name. */ - if (DECL_NAME (field_decl)) - ivar = tree_cons (NULL_TREE, - add_objc_string (DECL_NAME (field_decl), - meth_var_names), - ivar); - else - /* Unnamed bit-field ivar (yuck). */ - ivar = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), ivar); - - /* Set type. */ - encode_field_decl (field_decl, - obstack_object_size (&util_obstack), - OBJC_ENCODE_DONT_INLINE_DEFS); - - /* Null terminate string. */ - obstack_1grow (&util_obstack, 0); - ivar - = tree_cons - (NULL_TREE, - add_objc_string (get_identifier (obstack_finish (&util_obstack)), - meth_var_types), - ivar); - obstack_free (&util_obstack, util_firstobj); - - /* Set offset. */ - ivar = tree_cons (NULL_TREE, byte_position (field_decl), ivar); - initlist = tree_cons (NULL_TREE, - objc_build_constructor (type, nreverse (ivar)), - initlist); - do - field_decl = TREE_CHAIN (field_decl); - while (field_decl && TREE_CODE (field_decl) != FIELD_DECL); - } - while (field_decl); - - return objc_build_constructor (build_array_type (type, 0), - nreverse (initlist)); -} - -static tree -generate_ivars_list (tree type, const char *name, int size, tree list) -{ - tree decl, initlist; - - decl = start_var_decl (type, synth_id_with_class_suffix - (name, objc_implementation_context)); - - initlist = build_tree_list (NULL_TREE, build_int_cst (NULL_TREE, size)); - initlist = tree_cons (NULL_TREE, list, initlist); - - finish_var_decl (decl, - objc_build_constructor (TREE_TYPE (decl), - nreverse (initlist))); - - return decl; -} - -/* Count only the fields occurring in T. */ - -static int -ivar_list_length (tree t) -{ - int count = 0; - - for (; t; t = TREE_CHAIN (t)) - if (TREE_CODE (t) == FIELD_DECL) - ++count; - - return count; -} - -static void -generate_ivar_lists (void) -{ - tree initlist, ivar_list_template, chain; - int size; - - generating_instance_variables = 1; - - if (!objc_ivar_template) - objc_ivar_template = build_ivar_template (); - - /* Only generate class variables for the root of the inheritance - hierarchy since these will be the same for every class. */ - - if (CLASS_SUPER_NAME (implementation_template) == NULL_TREE - && (chain = TYPE_FIELDS (objc_class_template))) - { - size = ivar_list_length (chain); - - ivar_list_template = build_ivar_list_template (objc_ivar_template, size); - initlist = build_ivar_list_initializer (objc_ivar_template, chain); - - UOBJC_CLASS_VARIABLES_decl - = generate_ivars_list (ivar_list_template, "_OBJC_CLASS_VARIABLES", - size, initlist); - } - else - UOBJC_CLASS_VARIABLES_decl = 0; - - chain = CLASS_IVARS (implementation_template); - if (chain) - { - size = ivar_list_length (chain); - ivar_list_template = build_ivar_list_template (objc_ivar_template, size); - initlist = build_ivar_list_initializer (objc_ivar_template, chain); - - UOBJC_INSTANCE_VARIABLES_decl - = generate_ivars_list (ivar_list_template, "_OBJC_INSTANCE_VARIABLES", - size, initlist); - } - else - UOBJC_INSTANCE_VARIABLES_decl = 0; - - generating_instance_variables = 0; -} - -static tree -build_dispatch_table_initializer (tree type, tree entries) -{ - tree initlist = NULL_TREE; - - do - { - tree elemlist = NULL_TREE; - - elemlist = tree_cons (NULL_TREE, - build_selector (METHOD_SEL_NAME (entries)), - NULL_TREE); - - /* Generate the method encoding if we don't have one already. */ - if (! METHOD_ENCODING (entries)) - METHOD_ENCODING (entries) = - encode_method_prototype (entries); - - elemlist = tree_cons (NULL_TREE, - add_objc_string (METHOD_ENCODING (entries), - meth_var_types), - elemlist); - - elemlist - = tree_cons (NULL_TREE, - convert (ptr_type_node, - build_unary_op (ADDR_EXPR, - METHOD_DEFINITION (entries), 1)), - elemlist); - - initlist = tree_cons (NULL_TREE, - objc_build_constructor (type, nreverse (elemlist)), - initlist); - - entries = TREE_CHAIN (entries); - } - while (entries); - - return objc_build_constructor (build_array_type (type, 0), - nreverse (initlist)); -} - -/* To accomplish method prototyping without generating all kinds of - inane warnings, the definition of the dispatch table entries were - changed from: - - struct objc_method { SEL _cmd; ...; id (*_imp)(); }; - to: - struct objc_method { SEL _cmd; ...; void *_imp; }; */ - -static tree -build_method_template (void) -{ - tree _SLT_record; - tree field_decl, field_decl_chain; - - _SLT_record = start_struct (RECORD_TYPE, get_identifier (UTAG_METHOD)); - - /* SEL _cmd; */ - field_decl = create_field_decl (objc_selector_type, "_cmd"); - field_decl_chain = field_decl; - - /* char *method_types; */ - field_decl = create_field_decl (string_type_node, "method_types"); - chainon (field_decl_chain, field_decl); - - /* void *_imp; */ - field_decl = create_field_decl (build_pointer_type (void_type_node), - "_imp"); - chainon (field_decl_chain, field_decl); - - finish_struct (_SLT_record, field_decl_chain, NULL_TREE); - - return _SLT_record; -} - - -static tree -generate_dispatch_table (tree type, const char *name, int size, tree list) -{ - tree decl, initlist; - - decl = start_var_decl (type, synth_id_with_class_suffix - (name, objc_implementation_context)); - - initlist = build_tree_list (NULL_TREE, build_int_cst (NULL_TREE, 0)); - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, size), initlist); - initlist = tree_cons (NULL_TREE, list, initlist); - - finish_var_decl (decl, - objc_build_constructor (TREE_TYPE (decl), - nreverse (initlist))); - - return decl; -} - -static void -mark_referenced_methods (void) -{ - struct imp_entry *impent; - tree chain; - - for (impent = imp_list; impent; impent = impent->next) - { - chain = CLASS_CLS_METHODS (impent->imp_context); - while (chain) - { - cgraph_mark_needed_node (cgraph_node (METHOD_DEFINITION (chain))); - chain = TREE_CHAIN (chain); - } - - chain = CLASS_NST_METHODS (impent->imp_context); - while (chain) - { - cgraph_mark_needed_node (cgraph_node (METHOD_DEFINITION (chain))); - chain = TREE_CHAIN (chain); - } - } -} - -static void -generate_dispatch_tables (void) -{ - tree initlist, chain, method_list_template; - int size; - - if (!objc_method_template) - objc_method_template = build_method_template (); - - chain = CLASS_CLS_METHODS (objc_implementation_context); - if (chain) - { - size = list_length (chain); - - method_list_template - = build_method_list_template (objc_method_template, size); - initlist - = build_dispatch_table_initializer (objc_method_template, chain); - - UOBJC_CLASS_METHODS_decl - = generate_dispatch_table (method_list_template, - ((TREE_CODE (objc_implementation_context) - == CLASS_IMPLEMENTATION_TYPE) - ? "_OBJC_CLASS_METHODS" - : "_OBJC_CATEGORY_CLASS_METHODS"), - size, initlist); - } - else - UOBJC_CLASS_METHODS_decl = 0; - - chain = CLASS_NST_METHODS (objc_implementation_context); - if (chain) - { - size = list_length (chain); - - method_list_template - = build_method_list_template (objc_method_template, size); - initlist - = build_dispatch_table_initializer (objc_method_template, chain); - - if (TREE_CODE (objc_implementation_context) == CLASS_IMPLEMENTATION_TYPE) - UOBJC_INSTANCE_METHODS_decl - = generate_dispatch_table (method_list_template, - "_OBJC_INSTANCE_METHODS", - size, initlist); - else - /* We have a category. */ - UOBJC_INSTANCE_METHODS_decl - = generate_dispatch_table (method_list_template, - "_OBJC_CATEGORY_INSTANCE_METHODS", - size, initlist); - } - else - UOBJC_INSTANCE_METHODS_decl = 0; -} - -static tree -generate_protocol_list (tree i_or_p) -{ - tree initlist; - tree refs_decl, lproto, e, plist; - int size = 0; - const char *ref_name; - - if (TREE_CODE (i_or_p) == CLASS_INTERFACE_TYPE - || TREE_CODE (i_or_p) == CATEGORY_INTERFACE_TYPE) - plist = CLASS_PROTOCOL_LIST (i_or_p); - else if (TREE_CODE (i_or_p) == PROTOCOL_INTERFACE_TYPE) - plist = PROTOCOL_LIST (i_or_p); - else - abort (); - - /* Compute size. */ - for (lproto = plist; lproto; lproto = TREE_CHAIN (lproto)) - if (TREE_CODE (TREE_VALUE (lproto)) == PROTOCOL_INTERFACE_TYPE - && PROTOCOL_FORWARD_DECL (TREE_VALUE (lproto))) - size++; - - /* Build initializer. */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), NULL_TREE); - e = build_int_cst (build_pointer_type (objc_protocol_template), size); - initlist = tree_cons (NULL_TREE, e, initlist); - - for (lproto = plist; lproto; lproto = TREE_CHAIN (lproto)) - { - tree pval = TREE_VALUE (lproto); - - if (TREE_CODE (pval) == PROTOCOL_INTERFACE_TYPE - && PROTOCOL_FORWARD_DECL (pval)) - { - e = build_unary_op (ADDR_EXPR, PROTOCOL_FORWARD_DECL (pval), 0); - initlist = tree_cons (NULL_TREE, e, initlist); - } - } - - /* static struct objc_protocol *refs[n]; */ - - if (TREE_CODE (i_or_p) == PROTOCOL_INTERFACE_TYPE) - ref_name = synth_id_with_class_suffix ("_OBJC_PROTOCOL_REFS", i_or_p); - else if (TREE_CODE (i_or_p) == CLASS_INTERFACE_TYPE) - ref_name = synth_id_with_class_suffix ("_OBJC_CLASS_PROTOCOLS", i_or_p); - else if (TREE_CODE (i_or_p) == CATEGORY_INTERFACE_TYPE) - ref_name = synth_id_with_class_suffix ("_OBJC_CATEGORY_PROTOCOLS", i_or_p); - else - abort (); - - refs_decl = start_var_decl - (build_array_type - (build_pointer_type (objc_protocol_template), - build_index_type (build_int_cst (NULL_TREE, size + 2))), - ref_name); - - finish_var_decl (refs_decl, objc_build_constructor (TREE_TYPE (refs_decl), - nreverse (initlist))); - - return refs_decl; -} - -static tree -build_category_initializer (tree type, tree cat_name, tree class_name, - tree instance_methods, tree class_methods, - tree protocol_list) -{ - tree initlist = NULL_TREE, expr; - - initlist = tree_cons (NULL_TREE, cat_name, initlist); - initlist = tree_cons (NULL_TREE, class_name, initlist); - - if (!instance_methods) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (objc_method_list_ptr, - build_unary_op (ADDR_EXPR, instance_methods, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - if (!class_methods) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (objc_method_list_ptr, - build_unary_op (ADDR_EXPR, class_methods, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - /* protocol_list = */ - if (!protocol_list) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (build_pointer_type - (build_pointer_type - (objc_protocol_template)), - build_unary_op (ADDR_EXPR, protocol_list, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - return objc_build_constructor (type, nreverse (initlist)); -} - -/* struct _objc_class { - struct objc_class *isa; - struct objc_class *super_class; - char *name; - long version; - long info; - long instance_size; - struct objc_ivar_list *ivars; - struct objc_method_list *methods; - if (flag_next_runtime) - struct objc_cache *cache; - else { - struct sarray *dtable; - struct objc_class *subclass_list; - struct objc_class *sibling_class; - } - struct objc_protocol_list *protocols; - if (flag_next_runtime) - void *sel_id; - void *gc_object_type; - }; */ - -static tree -build_shared_structure_initializer (tree type, tree isa, tree super, - tree name, tree size, int status, - tree dispatch_table, tree ivar_list, - tree protocol_list) -{ - tree initlist = NULL_TREE, expr; - - /* isa = */ - initlist = tree_cons (NULL_TREE, isa, initlist); - - /* super_class = */ - initlist = tree_cons (NULL_TREE, super, initlist); - - /* name = */ - initlist = tree_cons (NULL_TREE, default_conversion (name), initlist); - - /* version = */ - initlist = tree_cons (NULL_TREE, build_int_cst (long_integer_type_node, 0), - initlist); - - /* info = */ - initlist = tree_cons (NULL_TREE, - build_int_cst (long_integer_type_node, status), - initlist); - - /* instance_size = */ - initlist = tree_cons (NULL_TREE, convert (long_integer_type_node, size), - initlist); - - /* objc_ivar_list = */ - if (!ivar_list) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (objc_ivar_list_ptr, - build_unary_op (ADDR_EXPR, ivar_list, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - /* objc_method_list = */ - if (!dispatch_table) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (objc_method_list_ptr, - build_unary_op (ADDR_EXPR, dispatch_table, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - if (flag_next_runtime) - /* method_cache = */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - /* dtable = */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - - /* subclass_list = */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - - /* sibling_class = */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - } - - /* protocol_list = */ - if (! protocol_list) - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - else - { - expr = convert (build_pointer_type - (build_pointer_type - (objc_protocol_template)), - build_unary_op (ADDR_EXPR, protocol_list, 0)); - initlist = tree_cons (NULL_TREE, expr, initlist); - } - - if (flag_next_runtime) - /* sel_id = NULL */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - - /* gc_object_type = NULL */ - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), initlist); - - return objc_build_constructor (type, nreverse (initlist)); -} - -/* Retrieve category interface CAT_NAME (if any) associated with CLASS. */ - -static inline tree -lookup_category (tree class, tree cat_name) -{ - tree category = CLASS_CATEGORY_LIST (class); - - while (category && CLASS_SUPER_NAME (category) != cat_name) - category = CLASS_CATEGORY_LIST (category); - return category; -} - -/* static struct objc_category _OBJC_CATEGORY_ = { ... }; */ - -static void -generate_category (tree cat) -{ - tree decl; - tree initlist, cat_name_expr, class_name_expr; - tree protocol_decl, category; - - add_class_reference (CLASS_NAME (cat)); - cat_name_expr = add_objc_string (CLASS_SUPER_NAME (cat), class_names); - - class_name_expr = add_objc_string (CLASS_NAME (cat), class_names); - - category = lookup_category (implementation_template, - CLASS_SUPER_NAME (cat)); - - if (category && CLASS_PROTOCOL_LIST (category)) - { - generate_protocol_references (CLASS_PROTOCOL_LIST (category)); - protocol_decl = generate_protocol_list (category); - } - else - protocol_decl = 0; - - decl = start_var_decl (objc_category_template, - synth_id_with_class_suffix - ("_OBJC_CATEGORY", objc_implementation_context)); - - initlist = build_category_initializer (TREE_TYPE (decl), - cat_name_expr, class_name_expr, - UOBJC_INSTANCE_METHODS_decl, - UOBJC_CLASS_METHODS_decl, - protocol_decl); - - finish_var_decl (decl, initlist); -} - -/* static struct objc_class _OBJC_METACLASS_Foo={ ... }; - static struct objc_class _OBJC_CLASS_Foo={ ... }; */ - -static void -generate_shared_structures (int cls_flags) -{ - tree sc_spec, decl_specs, decl; - tree name_expr, super_expr, root_expr; - tree my_root_id = NULL_TREE, my_super_id = NULL_TREE; - tree cast_type, initlist, protocol_decl; - - my_super_id = CLASS_SUPER_NAME (implementation_template); - if (my_super_id) - { - add_class_reference (my_super_id); - - /* Compute "my_root_id" - this is required for code generation. - the "isa" for all meta class structures points to the root of - the inheritance hierarchy (e.g. "__Object")... */ - my_root_id = my_super_id; - do - { - tree my_root_int = lookup_interface (my_root_id); - - if (my_root_int && CLASS_SUPER_NAME (my_root_int)) - my_root_id = CLASS_SUPER_NAME (my_root_int); - else - break; - } - while (1); - } - else - /* No super class. */ - my_root_id = CLASS_NAME (implementation_template); - - cast_type = build_pointer_type (objc_class_template); - name_expr = add_objc_string (CLASS_NAME (implementation_template), - class_names); - - /* Install class `isa' and `super' pointers at runtime. */ - if (my_super_id) - { - super_expr = add_objc_string (my_super_id, class_names); - super_expr = build_c_cast (cast_type, super_expr); /* cast! */ - } - else - super_expr = build_int_cst (NULL_TREE, 0); - - root_expr = add_objc_string (my_root_id, class_names); - root_expr = build_c_cast (cast_type, root_expr); /* cast! */ - - if (CLASS_PROTOCOL_LIST (implementation_template)) - { - generate_protocol_references - (CLASS_PROTOCOL_LIST (implementation_template)); - protocol_decl = generate_protocol_list (implementation_template); - } - else - protocol_decl = 0; - - /* static struct objc_class _OBJC_METACLASS_Foo = { ... }; */ - - sc_spec = build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC]); - decl_specs = tree_cons (NULL_TREE, objc_class_template, sc_spec); - - decl = start_var_decl (objc_class_template, - IDENTIFIER_POINTER - (DECL_NAME (UOBJC_METACLASS_decl))); - - initlist - = build_shared_structure_initializer - (TREE_TYPE (decl), - root_expr, super_expr, name_expr, - convert (integer_type_node, TYPE_SIZE_UNIT (objc_class_template)), - 2 /*CLS_META*/, - UOBJC_CLASS_METHODS_decl, - UOBJC_CLASS_VARIABLES_decl, - protocol_decl); - - finish_var_decl (decl, initlist); - - /* static struct objc_class _OBJC_CLASS_Foo={ ... }; */ - - decl = start_var_decl (objc_class_template, - IDENTIFIER_POINTER - (DECL_NAME (UOBJC_CLASS_decl))); - - initlist - = build_shared_structure_initializer - (TREE_TYPE (decl), - build_unary_op (ADDR_EXPR, UOBJC_METACLASS_decl, 0), - super_expr, name_expr, - convert (integer_type_node, - TYPE_SIZE_UNIT (CLASS_STATIC_TEMPLATE - (implementation_template))), - 1 /*CLS_FACTORY*/ | cls_flags, - UOBJC_INSTANCE_METHODS_decl, - UOBJC_INSTANCE_VARIABLES_decl, - protocol_decl); - - finish_var_decl (decl, initlist); -} - - -static const char * -synth_id_with_class_suffix (const char *preamble, tree ctxt) -{ - static char string[BUFSIZE]; - - if (TREE_CODE (ctxt) == CLASS_IMPLEMENTATION_TYPE - || TREE_CODE (ctxt) == CLASS_INTERFACE_TYPE) - { - sprintf (string, "%s_%s", preamble, - IDENTIFIER_POINTER (CLASS_NAME (ctxt))); - } - else if (TREE_CODE (ctxt) == CATEGORY_IMPLEMENTATION_TYPE - || TREE_CODE (ctxt) == CATEGORY_INTERFACE_TYPE) - { - /* We have a category. */ - const char *const class_name - = IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context)); - const char *const class_super_name - = IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context)); - sprintf (string, "%s_%s_%s", preamble, class_name, class_super_name); - } - else if (TREE_CODE (ctxt) == PROTOCOL_INTERFACE_TYPE) - { - const char *protocol_name = IDENTIFIER_POINTER (PROTOCOL_NAME (ctxt)); - sprintf (string, "%s_%s", preamble, protocol_name); - } - else - abort (); - - return string; -} - -/* If type is empty or only type qualifiers are present, add default - type of id (otherwise grokdeclarator will default to int). */ - -static tree -adjust_type_for_id_default (tree type) -{ - if (!type) - type = make_node (TREE_LIST); - - if (!TREE_VALUE (type)) - TREE_VALUE (type) = objc_object_type; - else if (TREE_CODE (TREE_VALUE (type)) == RECORD_TYPE - && TYPED_OBJECT (TREE_VALUE (type))) - error ("can not use an object as parameter to a method"); - - return type; -} - -/* Usage: - keyworddecl: - selector ':' '(' typename ')' identifier - - Purpose: - Transform an Objective-C keyword argument into - the C equivalent parameter declarator. - - In: key_name, an "identifier_node" (optional). - arg_type, a "tree_list" (optional). - arg_name, an "identifier_node". - - Note: It would be really nice to strongly type the preceding - arguments in the function prototype; however, then I - could not use the "accessor" macros defined in "tree.h". - - Out: an instance of "keyword_decl". */ - -tree -objc_build_keyword_decl (tree key_name, tree arg_type, tree arg_name) -{ - tree keyword_decl; - - /* If no type is specified, default to "id". */ - arg_type = adjust_type_for_id_default (arg_type); - - keyword_decl = make_node (KEYWORD_DECL); - - TREE_TYPE (keyword_decl) = arg_type; - KEYWORD_ARG_NAME (keyword_decl) = arg_name; - KEYWORD_KEY_NAME (keyword_decl) = key_name; - - return keyword_decl; -} - -/* Given a chain of keyword_decl's, synthesize the full keyword selector. */ - -static tree -build_keyword_selector (tree selector) -{ - int len = 0; - tree key_chain, key_name; - char *buf; - - /* Scan the selector to see how much space we'll need. */ - for (key_chain = selector; key_chain; key_chain = TREE_CHAIN (key_chain)) - { - if (TREE_CODE (selector) == KEYWORD_DECL) - key_name = KEYWORD_KEY_NAME (key_chain); - else if (TREE_CODE (selector) == TREE_LIST) - key_name = TREE_PURPOSE (key_chain); - else - abort (); - - if (key_name) - len += IDENTIFIER_LENGTH (key_name) + 1; - else - /* Just a ':' arg. */ - len++; - } - - buf = (char *) alloca (len + 1); - /* Start the buffer out as an empty string. */ - buf[0] = '\0'; - - for (key_chain = selector; key_chain; key_chain = TREE_CHAIN (key_chain)) - { - if (TREE_CODE (selector) == KEYWORD_DECL) - key_name = KEYWORD_KEY_NAME (key_chain); - else if (TREE_CODE (selector) == TREE_LIST) - { - key_name = TREE_PURPOSE (key_chain); - /* The keyword decl chain will later be used as a function argument - chain. Unhook the selector itself so as to not confuse other - parts of the compiler. */ - TREE_PURPOSE (key_chain) = NULL_TREE; - } - else - abort (); - - if (key_name) - strcat (buf, IDENTIFIER_POINTER (key_name)); - strcat (buf, ":"); - } - - return get_identifier (buf); -} - -/* Used for declarations and definitions. */ - -static tree -build_method_decl (enum tree_code code, tree ret_type, tree selector, - tree add_args, bool ellipsis) -{ - tree method_decl; - - /* If no type is specified, default to "id". */ - ret_type = adjust_type_for_id_default (ret_type); - - method_decl = make_node (code); - TREE_TYPE (method_decl) = ret_type; - - /* If we have a keyword selector, create an identifier_node that - represents the full selector name (`:' included)... */ - if (TREE_CODE (selector) == KEYWORD_DECL) - { - METHOD_SEL_NAME (method_decl) = build_keyword_selector (selector); - METHOD_SEL_ARGS (method_decl) = selector; - METHOD_ADD_ARGS (method_decl) = add_args; - METHOD_ADD_ARGS_ELLIPSIS_P (method_decl) = ellipsis; - } - else - { - METHOD_SEL_NAME (method_decl) = selector; - METHOD_SEL_ARGS (method_decl) = NULL_TREE; - METHOD_ADD_ARGS (method_decl) = NULL_TREE; - } - - return method_decl; -} - -#define METHOD_DEF 0 -#define METHOD_REF 1 - -/* Used by `build_objc_method_call' and `comp_proto_with_proto'. Return - an argument list for method METH. CONTEXT is either METHOD_DEF or - METHOD_REF, saying whether we are trying to define a method or call - one. SUPERFLAG says this is for a send to super; this makes a - difference for the NeXT calling sequence in which the lookup and - the method call are done together. If METH is null, user-defined - arguments (i.e., beyond self and _cmd) shall be represented by `...'. */ - -static tree -get_arg_type_list (tree meth, int context, int superflag) -{ - tree arglist, akey; - - /* Receiver type. */ - if (flag_next_runtime && superflag) - arglist = build_tree_list (NULL_TREE, objc_super_type); - else if (context == METHOD_DEF && TREE_CODE (meth) == INSTANCE_METHOD_DECL) - arglist = build_tree_list (NULL_TREE, objc_instance_type); - else - arglist = build_tree_list (NULL_TREE, objc_object_type); - - /* Selector type - will eventually change to `int'. */ - chainon (arglist, build_tree_list (NULL_TREE, objc_selector_type)); - - /* No actual method prototype given -- assume that remaining arguments - are `...'. */ - if (!meth) - return arglist; - - /* Build a list of argument types. */ - for (akey = METHOD_SEL_ARGS (meth); akey; akey = TREE_CHAIN (akey)) - { - tree arg_type = TREE_VALUE (TREE_TYPE (akey)); - - /* Decay arrays and functions into pointers. */ - if (TREE_CODE (arg_type) == ARRAY_TYPE) - arg_type = build_pointer_type (TREE_TYPE (arg_type)); - else if (TREE_CODE (arg_type) == FUNCTION_TYPE) - arg_type = build_pointer_type (arg_type); - - chainon (arglist, build_tree_list (NULL_TREE, arg_type)); - } - - if (METHOD_ADD_ARGS (meth)) - { - for (akey = TREE_CHAIN (METHOD_ADD_ARGS (meth)); - akey; akey = TREE_CHAIN (akey)) - { - tree arg_type = TREE_TYPE (TREE_VALUE (akey)); - - chainon (arglist, build_tree_list (NULL_TREE, arg_type)); - } - - if (!METHOD_ADD_ARGS_ELLIPSIS_P (meth)) - goto lack_of_ellipsis; - } - else - { - lack_of_ellipsis: - chainon (arglist, OBJC_VOID_AT_END); - } - - return arglist; -} - -static tree -check_duplicates (hash hsh, int methods, int is_class) -{ - tree meth = NULL_TREE; - - if (hsh) - { - meth = hsh->key; - - if (hsh->list) - { - /* We have two or more methods with the same name but - different types. */ - attr loop; - - /* But just how different are those types? If - -Wno-strict-selector-match is specified, we shall not - complain if the differences are solely among types with - identical size and alignment. */ - if (!warn_strict_selector_match) - { - for (loop = hsh->list; loop; loop = loop->next) - if (!comp_proto_with_proto (meth, loop->value, 0)) - goto issue_warning; - - return meth; - } - - issue_warning: - warning (0, "multiple %s named %<%c%s%> found", - methods ? "methods" : "selectors", - (is_class ? '+' : '-'), - IDENTIFIER_POINTER (METHOD_SEL_NAME (meth))); - - warn_with_method (methods ? "using" : "found", - ((TREE_CODE (meth) == INSTANCE_METHOD_DECL) - ? '-' - : '+'), - meth); - for (loop = hsh->list; loop; loop = loop->next) - warn_with_method ("also found", - ((TREE_CODE (loop->value) == INSTANCE_METHOD_DECL) - ? '-' - : '+'), - loop->value); - } - } - return meth; -} - -/* If RECEIVER is a class reference, return the identifier node for - the referenced class. RECEIVER is created by objc_get_class_reference, - so we check the exact form created depending on which runtimes are - used. */ - -static tree -receiver_is_class_object (tree receiver, int self, int super) -{ - tree chain, exp, arg; - - /* The receiver is 'self' or 'super' in the context of a class method. */ - if (objc_method_context - && TREE_CODE (objc_method_context) == CLASS_METHOD_DECL - && (self || super)) - return (super - ? CLASS_SUPER_NAME (implementation_template) - : CLASS_NAME (implementation_template)); - - if (flag_next_runtime) - { - /* The receiver is a variable created by - build_class_reference_decl. */ - if (TREE_CODE (receiver) == VAR_DECL && IS_CLASS (TREE_TYPE (receiver))) - /* Look up the identifier. */ - for (chain = cls_ref_chain; chain; chain = TREE_CHAIN (chain)) - if (TREE_PURPOSE (chain) == receiver) - return TREE_VALUE (chain); - } - - /* The receiver is a function call that returns an id. Check if - it is a call to objc_getClass, if so, pick up the class name. */ - if (TREE_CODE (receiver) == CALL_EXPR - && (exp = TREE_OPERAND (receiver, 0)) - && TREE_CODE (exp) == ADDR_EXPR - && (exp = TREE_OPERAND (exp, 0)) - && TREE_CODE (exp) == FUNCTION_DECL - /* For some reason, we sometimes wind up with multiple FUNCTION_DECL - prototypes for objc_get_class(). Thankfully, they seem to share the - same function type. */ - && TREE_TYPE (exp) == TREE_TYPE (objc_get_class_decl) - && !strcmp (IDENTIFIER_POINTER (DECL_NAME (exp)), TAG_GETCLASS) - /* We have a call to objc_get_class/objc_getClass! */ - && (arg = TREE_OPERAND (receiver, 1)) - && TREE_CODE (arg) == TREE_LIST - && (arg = TREE_VALUE (arg))) - { - STRIP_NOPS (arg); - if (TREE_CODE (arg) == ADDR_EXPR - && (arg = TREE_OPERAND (arg, 0)) - && TREE_CODE (arg) == STRING_CST) - /* Finally, we have the class name. */ - return get_identifier (TREE_STRING_POINTER (arg)); - } - return 0; -} - -/* If we are currently building a message expr, this holds - the identifier of the selector of the message. This is - used when printing warnings about argument mismatches. */ - -static tree current_objc_message_selector = 0; - -tree -objc_message_selector (void) -{ - return current_objc_message_selector; -} - -/* Construct an expression for sending a message. - MESS has the object to send to in TREE_PURPOSE - and the argument list (including selector) in TREE_VALUE. - - (*((*)())_msg)(receiver, selTransTbl[n], ...); - (*((*)())_msgSuper)(receiver, selTransTbl[n], ...); */ - -tree -objc_build_message_expr (tree mess) -{ - tree receiver = TREE_PURPOSE (mess); - tree sel_name; -#ifdef OBJCPLUS - tree args = TREE_PURPOSE (TREE_VALUE (mess)); -#else - tree args = TREE_VALUE (mess); -#endif - tree method_params = NULL_TREE; - - if (TREE_CODE (receiver) == ERROR_MARK) - return error_mark_node; - - /* Obtain the full selector name. */ - if (TREE_CODE (args) == IDENTIFIER_NODE) - /* A unary selector. */ - sel_name = args; - else if (TREE_CODE (args) == TREE_LIST) - sel_name = build_keyword_selector (args); - else - abort (); - - /* Build the parameter list to give to the method. */ - if (TREE_CODE (args) == TREE_LIST) -#ifdef OBJCPLUS - method_params = chainon (args, TREE_VALUE (TREE_VALUE (mess))); -#else - { - tree chain = args, prev = NULL_TREE; - - /* We have a keyword selector--check for comma expressions. */ - while (chain) - { - tree element = TREE_VALUE (chain); - - /* We have a comma expression, must collapse... */ - if (TREE_CODE (element) == TREE_LIST) - { - if (prev) - TREE_CHAIN (prev) = element; - else - args = element; - } - prev = chain; - chain = TREE_CHAIN (chain); - } - method_params = args; - } -#endif - -#ifdef OBJCPLUS - if (processing_template_decl) - /* Must wait until template instantiation time. */ - return build_min_nt (MESSAGE_SEND_EXPR, receiver, sel_name, - method_params); -#endif - - return objc_finish_message_expr (receiver, sel_name, method_params); -} - -/* Look up method SEL_NAME that would be suitable for receiver - of type 'id' (if IS_CLASS is zero) or 'Class' (if IS_CLASS is - nonzero), and report on any duplicates. */ - -static tree -lookup_method_in_hash_lists (tree sel_name, int is_class) -{ - hash method_prototype = NULL; - - if (!is_class) - method_prototype = hash_lookup (nst_method_hash_list, - sel_name); - - if (!method_prototype) - { - method_prototype = hash_lookup (cls_method_hash_list, - sel_name); - is_class = 1; - } - - return check_duplicates (method_prototype, 1, is_class); -} - -/* The 'objc_finish_message_expr' routine is called from within - 'objc_build_message_expr' for non-template functions. In the case of - C++ template functions, it is called from 'build_expr_from_tree' - (in decl2.c) after RECEIVER and METHOD_PARAMS have been expanded. */ - -tree -objc_finish_message_expr (tree receiver, tree sel_name, tree method_params) -{ - tree method_prototype = NULL_TREE, rprotos = NULL_TREE, rtype; - tree selector, retval, class_tree; - int self, super, have_cast; - - /* Extract the receiver of the message, as well as its type - (where the latter may take the form of a cast or be inferred - from the implementation context). */ - rtype = receiver; - while (TREE_CODE (rtype) == COMPOUND_EXPR - || TREE_CODE (rtype) == MODIFY_EXPR - || TREE_CODE (rtype) == NOP_EXPR - || TREE_CODE (rtype) == CONVERT_EXPR - || TREE_CODE (rtype) == COMPONENT_REF) - rtype = TREE_OPERAND (rtype, 0); - self = (rtype == self_decl); - super = (rtype == UOBJC_SUPER_decl); - rtype = TREE_TYPE (receiver); - have_cast = (TREE_CODE (receiver) == NOP_EXPR - || (TREE_CODE (receiver) == COMPOUND_EXPR - && !IS_SUPER (rtype))); - - /* If we are calling [super dealloc], reset our warning flag. */ - if (super && !strcmp ("dealloc", IDENTIFIER_POINTER (sel_name))) - should_call_super_dealloc = 0; - - /* If the receiver is a class object, retrieve the corresponding - @interface, if one exists. */ - class_tree = receiver_is_class_object (receiver, self, super); - - /* Now determine the receiver type (if an explicit cast has not been - provided). */ - if (!have_cast) - { - if (class_tree) - rtype = lookup_interface (class_tree); - /* Handle `self' and `super'. */ - else if (super) - { - if (!CLASS_SUPER_NAME (implementation_template)) - { - error ("no super class declared in @interface for %qs", - IDENTIFIER_POINTER (CLASS_NAME (implementation_template))); - return error_mark_node; - } - rtype = lookup_interface (CLASS_SUPER_NAME (implementation_template)); - } - else if (self) - rtype = lookup_interface (CLASS_NAME (implementation_template)); - } - - /* If receiver is of type `id' or `Class' (or if the @interface for a - class is not visible), we shall be satisfied with the existence of - any instance or class method. */ - if (objc_is_id (rtype)) - { - class_tree = (IS_CLASS (rtype) ? objc_class_name : NULL_TREE); - rprotos = (TYPE_HAS_OBJC_INFO (TREE_TYPE (rtype)) - ? TYPE_OBJC_PROTOCOL_LIST (TREE_TYPE (rtype)) - : NULL_TREE); - rtype = NULL_TREE; - - if (rprotos) - { - /* If messaging 'id ' or 'Class ', first search - in protocols themselves for the method prototype. */ - method_prototype - = lookup_method_in_protocol_list (rprotos, sel_name, - class_tree != NULL_TREE); - - /* If messaging 'Class ' but did not find a class method - prototype, search for an instance method instead, and warn - about having done so. */ - if (!method_prototype && !rtype && class_tree != NULL_TREE) - { - method_prototype - = lookup_method_in_protocol_list (rprotos, sel_name, 0); - - if (method_prototype) - warning (0, "found %<-%s%> instead of %<+%s%> in protocol(s)", - IDENTIFIER_POINTER (sel_name), - IDENTIFIER_POINTER (sel_name)); - } - } - } - else if (rtype) - { - tree orig_rtype = rtype, saved_rtype; - - if (TREE_CODE (rtype) == POINTER_TYPE) - rtype = TREE_TYPE (rtype); - /* Traverse typedef aliases */ - while (TREE_CODE (rtype) == RECORD_TYPE && OBJC_TYPE_NAME (rtype) - && TREE_CODE (OBJC_TYPE_NAME (rtype)) == TYPE_DECL - && DECL_ORIGINAL_TYPE (OBJC_TYPE_NAME (rtype))) - rtype = DECL_ORIGINAL_TYPE (OBJC_TYPE_NAME (rtype)); - saved_rtype = rtype; - if (TYPED_OBJECT (rtype)) - { - rprotos = TYPE_OBJC_PROTOCOL_LIST (rtype); - rtype = TYPE_OBJC_INTERFACE (rtype); - } - /* If we could not find an @interface declaration, we must have - only seen a @class declaration; so, we cannot say anything - more intelligent about which methods the receiver will - understand. */ - if (!rtype || TREE_CODE (rtype) == IDENTIFIER_NODE) - rtype = NULL_TREE; - else if (TREE_CODE (rtype) == CLASS_INTERFACE_TYPE - || TREE_CODE (rtype) == CLASS_IMPLEMENTATION_TYPE) - { - /* We have a valid ObjC class name. Look up the method name - in the published @interface for the class (and its - superclasses). */ - method_prototype - = lookup_method_static (rtype, sel_name, class_tree != NULL_TREE); - - /* If the method was not found in the @interface, it may still - exist locally as part of the @implementation. */ - if (!method_prototype && objc_implementation_context - && CLASS_NAME (objc_implementation_context) - == OBJC_TYPE_NAME (rtype)) - method_prototype - = lookup_method - ((class_tree - ? CLASS_CLS_METHODS (objc_implementation_context) - : CLASS_NST_METHODS (objc_implementation_context)), - sel_name); - - /* If we haven't found a candidate method by now, try looking for - it in the protocol list. */ - if (!method_prototype && rprotos) - method_prototype - = lookup_method_in_protocol_list (rprotos, sel_name, - class_tree != NULL_TREE); - } - else - { - warning (0, "invalid receiver type %qs", - gen_type_name (orig_rtype)); - /* After issuing the "invalid receiver" warning, perform method - lookup as if we were messaging 'id'. */ - rtype = rprotos = NULL_TREE; - } - } - - - /* For 'id' or 'Class' receivers, search in the global hash table - as a last resort. For all receivers, warn if protocol searches - have failed. */ - if (!method_prototype) - { - if (rprotos) - warning (0, "%<%c%s%> not found in protocol(s)", - (class_tree ? '+' : '-'), - IDENTIFIER_POINTER (sel_name)); - - if (!rtype) - method_prototype - = lookup_method_in_hash_lists (sel_name, class_tree != NULL_TREE); - } - - if (!method_prototype) - { - static bool warn_missing_methods = false; - - if (rtype) - warning (0, "%qs may not respond to %<%c%s%>", - IDENTIFIER_POINTER (OBJC_TYPE_NAME (rtype)), - (class_tree ? '+' : '-'), - IDENTIFIER_POINTER (sel_name)); - /* If we are messaging an 'id' or 'Class' object and made it here, - then we have failed to find _any_ instance or class method, - respectively. */ - else - warning (0, "no %<%c%s%> method found", - (class_tree ? '+' : '-'), - IDENTIFIER_POINTER (sel_name)); - - if (!warn_missing_methods) - { - warning (0, "(Messages without a matching method signature"); - warning (0, "will be assumed to return % and accept"); - warning (0, "%<...%> as arguments.)"); - warn_missing_methods = true; - } - } - - /* Save the selector name for printing error messages. */ - current_objc_message_selector = sel_name; - - /* Build the parameters list for looking up the method. - These are the object itself and the selector. */ - - if (flag_typed_selectors) - selector = build_typed_selector_reference (sel_name, method_prototype); - else - selector = build_selector_reference (sel_name); - - retval = build_objc_method_call (super, method_prototype, - receiver, - selector, method_params); - - current_objc_message_selector = 0; - - return retval; -} - -/* Build a tree expression to send OBJECT the operation SELECTOR, - looking up the method on object LOOKUP_OBJECT (often same as OBJECT), - assuming the method has prototype METHOD_PROTOTYPE. - (That is an INSTANCE_METHOD_DECL or CLASS_METHOD_DECL.) - Use METHOD_PARAMS as list of args to pass to the method. - If SUPER_FLAG is nonzero, we look up the superclass's method. */ - -static tree -build_objc_method_call (int super_flag, tree method_prototype, - tree lookup_object, tree selector, - tree method_params) -{ - tree sender = (super_flag ? umsg_super_decl : - (!flag_next_runtime || flag_nil_receivers - ? (flag_objc_direct_dispatch - ? umsg_fast_decl - : umsg_decl) - : umsg_nonnil_decl)); - tree rcv_p = (super_flag ? objc_super_type : objc_object_type); - - /* If a prototype for the method to be called exists, then cast - the sender's return type and arguments to match that of the method. - Otherwise, leave sender as is. */ - tree ret_type - = (method_prototype - ? TREE_VALUE (TREE_TYPE (method_prototype)) - : objc_object_type); - tree sender_cast - = build_pointer_type - (build_function_type - (ret_type, - get_arg_type_list - (method_prototype, METHOD_REF, super_flag))); - tree method, t; - - lookup_object = build_c_cast (rcv_p, lookup_object); - - /* Use SAVE_EXPR to avoid evaluating the receiver twice. */ - lookup_object = save_expr (lookup_object); - - if (flag_next_runtime) - { - /* If we are returning a struct in memory, and the address - of that memory location is passed as a hidden first - argument, then change which messenger entry point this - expr will call. NB: Note that sender_cast remains - unchanged (it already has a struct return type). */ - if (!targetm.calls.struct_value_rtx (0, 0) - && (TREE_CODE (ret_type) == RECORD_TYPE - || TREE_CODE (ret_type) == UNION_TYPE) - && targetm.calls.return_in_memory (ret_type, 0)) - sender = (super_flag ? umsg_super_stret_decl : - flag_nil_receivers ? umsg_stret_decl : umsg_nonnil_stret_decl); - - method_params = tree_cons (NULL_TREE, lookup_object, - tree_cons (NULL_TREE, selector, - method_params)); - method = build_fold_addr_expr (sender); - } - else - { - /* This is the portable (GNU) way. */ - tree object; - - /* First, call the lookup function to get a pointer to the method, - then cast the pointer, then call it with the method arguments. */ - - object = (super_flag ? self_decl : lookup_object); - - t = tree_cons (NULL_TREE, selector, NULL_TREE); - t = tree_cons (NULL_TREE, lookup_object, t); - method = build_function_call (sender, t); - - /* Pass the object to the method. */ - method_params = tree_cons (NULL_TREE, object, - tree_cons (NULL_TREE, selector, - method_params)); - } - - /* ??? Selector is not at this point something we can use inside - the compiler itself. Set it to garbage for the nonce. */ - t = build3 (OBJ_TYPE_REF, sender_cast, method, lookup_object, size_zero_node); - return build_function_call (t, method_params); -} - -static void -build_protocol_reference (tree p) -{ - tree decl; - const char *proto_name; - - /* static struct _objc_protocol _OBJC_PROTOCOL_; */ - - proto_name = synth_id_with_class_suffix ("_OBJC_PROTOCOL", p); - decl = start_var_decl (objc_protocol_template, proto_name); - - PROTOCOL_FORWARD_DECL (p) = decl; -} - -/* This function is called by the parser when (and only when) a - @protocol() expression is found, in order to compile it. */ -tree -objc_build_protocol_expr (tree protoname) -{ - tree expr; - tree p = lookup_protocol (protoname); - - if (!p) - { - error ("cannot find protocol declaration for %qs", - IDENTIFIER_POINTER (protoname)); - return error_mark_node; - } - - if (!PROTOCOL_FORWARD_DECL (p)) - build_protocol_reference (p); - - expr = build_unary_op (ADDR_EXPR, PROTOCOL_FORWARD_DECL (p), 0); - - /* ??? Ideally we'd build the reference with objc_protocol_type directly, - if we have it, rather than converting it here. */ - expr = convert (objc_protocol_type, expr); - - /* The @protocol() expression is being compiled into a pointer to a - statically allocated instance of the Protocol class. To become - usable at runtime, the 'isa' pointer of the instance need to be - fixed up at runtime by the runtime library, to point to the - actual 'Protocol' class. */ - - /* For the GNU runtime, put the static Protocol instance in the list - of statically allocated instances, so that we make sure that its - 'isa' pointer is fixed up at runtime by the GNU runtime library - to point to the Protocol class (at runtime, when loading the - module, the GNU runtime library loops on the statically allocated - instances (as found in the defs field in objc_symtab) and fixups - all the 'isa' pointers of those objects). */ - if (! flag_next_runtime) - { - /* This type is a struct containing the fields of a Protocol - object. (Cfr. objc_protocol_type instead is the type of a pointer - to such a struct). */ - tree protocol_struct_type = xref_tag - (RECORD_TYPE, get_identifier (PROTOCOL_OBJECT_CLASS_NAME)); - tree *chain; - - /* Look for the list of Protocol statically allocated instances - to fixup at runtime. Create a new list to hold Protocol - statically allocated instances, if the list is not found. At - present there is only another list, holding NSConstantString - static instances to be fixed up at runtime. */ - for (chain = &objc_static_instances; - *chain && TREE_VALUE (*chain) != protocol_struct_type; - chain = &TREE_CHAIN (*chain)); - if (!*chain) - { - *chain = tree_cons (NULL_TREE, protocol_struct_type, NULL_TREE); - add_objc_string (OBJC_TYPE_NAME (protocol_struct_type), - class_names); - } - - /* Add this statically allocated instance to the Protocol list. */ - TREE_PURPOSE (*chain) = tree_cons (NULL_TREE, - PROTOCOL_FORWARD_DECL (p), - TREE_PURPOSE (*chain)); - } - - - return expr; -} - -/* This function is called by the parser when a @selector() expression - is found, in order to compile it. It is only called by the parser - and only to compile a @selector(). */ -tree -objc_build_selector_expr (tree selnamelist) -{ - tree selname; - - /* Obtain the full selector name. */ - if (TREE_CODE (selnamelist) == IDENTIFIER_NODE) - /* A unary selector. */ - selname = selnamelist; - else if (TREE_CODE (selnamelist) == TREE_LIST) - selname = build_keyword_selector (selnamelist); - else - abort (); - - /* If we are required to check @selector() expressions as they - are found, check that the selector has been declared. */ - if (warn_undeclared_selector) - { - /* Look the selector up in the list of all known class and - instance methods (up to this line) to check that the selector - exists. */ - hash hsh; - - /* First try with instance methods. */ - hsh = hash_lookup (nst_method_hash_list, selname); - - /* If not found, try with class methods. */ - if (!hsh) - { - hsh = hash_lookup (cls_method_hash_list, selname); - } - - /* If still not found, print out a warning. */ - if (!hsh) - { - warning (0, "undeclared selector %qs", IDENTIFIER_POINTER (selname)); - } - } - - - if (flag_typed_selectors) - return build_typed_selector_reference (selname, 0); - else - return build_selector_reference (selname); -} - -tree -objc_build_encode_expr (tree type) -{ - tree result; - const char *string; - - encode_type (type, obstack_object_size (&util_obstack), - OBJC_ENCODE_INLINE_DEFS); - obstack_1grow (&util_obstack, 0); /* null terminate string */ - string = obstack_finish (&util_obstack); - - /* Synthesize a string that represents the encoded struct/union. */ - result = my_build_string (strlen (string) + 1, string); - obstack_free (&util_obstack, util_firstobj); - return result; -} - -static tree -build_ivar_reference (tree id) -{ - if (TREE_CODE (objc_method_context) == CLASS_METHOD_DECL) - { - /* Historically, a class method that produced objects (factory - method) would assign `self' to the instance that it - allocated. This would effectively turn the class method into - an instance method. Following this assignment, the instance - variables could be accessed. That practice, while safe, - violates the simple rule that a class method should not refer - to an instance variable. It's better to catch the cases - where this is done unknowingly than to support the above - paradigm. */ - warning (0, "instance variable %qs accessed in class method", - IDENTIFIER_POINTER (id)); - self_decl = convert (objc_instance_type, self_decl); /* cast */ - } - - return objc_build_component_ref (build_indirect_ref (self_decl, "->"), id); -} - -/* Compute a hash value for a given method SEL_NAME. */ - -static size_t -hash_func (tree sel_name) -{ - const unsigned char *s - = (const unsigned char *)IDENTIFIER_POINTER (sel_name); - size_t h = 0; - - while (*s) - h = h * 67 + *s++ - 113; - return h; -} - -static void -hash_init (void) -{ - nst_method_hash_list - = (hash *) ggc_alloc_cleared (SIZEHASHTABLE * sizeof (hash)); - cls_method_hash_list - = (hash *) ggc_alloc_cleared (SIZEHASHTABLE * sizeof (hash)); - - /* Initialize the hash table used to hold the constant string objects. */ - string_htab = htab_create_ggc (31, string_hash, - string_eq, NULL); - - /* Initialize the hash table used to hold EH-volatilized types. */ - volatilized_htab = htab_create_ggc (31, volatilized_hash, - volatilized_eq, NULL); -} - -/* WARNING!!!! hash_enter is called with a method, and will peek - inside to find its selector! But hash_lookup is given a selector - directly, and looks for the selector that's inside the found - entry's key (method) for comparison. */ - -static void -hash_enter (hash *hashlist, tree method) -{ - hash obj; - int slot = hash_func (METHOD_SEL_NAME (method)) % SIZEHASHTABLE; - - obj = (hash) ggc_alloc (sizeof (struct hashed_entry)); - obj->list = 0; - obj->next = hashlist[slot]; - obj->key = method; - - hashlist[slot] = obj; /* append to front */ -} - -static hash -hash_lookup (hash *hashlist, tree sel_name) -{ - hash target; - - target = hashlist[hash_func (sel_name) % SIZEHASHTABLE]; - - while (target) - { - if (sel_name == METHOD_SEL_NAME (target->key)) - return target; - - target = target->next; - } - return 0; -} - -static void -hash_add_attr (hash entry, tree value) -{ - attr obj; - - obj = (attr) ggc_alloc (sizeof (struct hashed_attribute)); - obj->next = entry->list; - obj->value = value; - - entry->list = obj; /* append to front */ -} - -static tree -lookup_method (tree mchain, tree method) -{ - tree key; - - if (TREE_CODE (method) == IDENTIFIER_NODE) - key = method; - else - key = METHOD_SEL_NAME (method); - - while (mchain) - { - if (METHOD_SEL_NAME (mchain) == key) - return mchain; - - mchain = TREE_CHAIN (mchain); - } - return NULL_TREE; -} - -/* Look up a class (if OBJC_LOOKUP_CLASS is set in FLAGS) or instance method - in INTERFACE, along with any categories and protocols attached thereto. - If method is not found, and the OBJC_LOOKUP_NO_SUPER is _not_ set in FLAGS, - recursively examine the INTERFACE's superclass. If OBJC_LOOKUP_CLASS is - set, OBJC_LOOKUP_NO_SUPER is cleared, and no suitable class method could - be found in INTERFACE or any of its superclasses, look for an _instance_ - method of the same name in the root class as a last resort. - - If a suitable method cannot be found, return NULL_TREE. */ - -static tree -lookup_method_static (tree interface, tree ident, int flags) -{ - tree meth = NULL_TREE, root_inter = NULL_TREE; - tree inter = interface; - int is_class = (flags & OBJC_LOOKUP_CLASS); - int no_superclasses = (flags & OBJC_LOOKUP_NO_SUPER); - - while (inter) - { - tree chain = is_class ? CLASS_CLS_METHODS (inter) : CLASS_NST_METHODS (inter); - tree category = inter; - - /* First, look up the method in the class itself. */ - if ((meth = lookup_method (chain, ident))) - return meth; - - /* Failing that, look for the method in each category of the class. */ - while ((category = CLASS_CATEGORY_LIST (category))) - { - chain = is_class ? CLASS_CLS_METHODS (category) : CLASS_NST_METHODS (category); - - /* Check directly in each category. */ - if ((meth = lookup_method (chain, ident))) - return meth; - - /* Failing that, check in each category's protocols. */ - if (CLASS_PROTOCOL_LIST (category)) - { - if ((meth = (lookup_method_in_protocol_list - (CLASS_PROTOCOL_LIST (category), ident, is_class)))) - return meth; - } - } - - /* If not found in categories, check in protocols of the main class. */ - if (CLASS_PROTOCOL_LIST (inter)) - { - if ((meth = (lookup_method_in_protocol_list - (CLASS_PROTOCOL_LIST (inter), ident, is_class)))) - return meth; - } - - /* If we were instructed not to look in superclasses, don't. */ - if (no_superclasses) - return NULL_TREE; - - /* Failing that, climb up the inheritance hierarchy. */ - root_inter = inter; - inter = lookup_interface (CLASS_SUPER_NAME (inter)); - } - while (inter); - - /* If no class (factory) method was found, check if an _instance_ - method of the same name exists in the root class. This is what - the Objective-C runtime will do. If an instance method was not - found, return 0. */ - return is_class ? lookup_method_static (root_inter, ident, 0): NULL_TREE; -} - -/* Add the method to the hash list if it doesn't contain an identical - method already. */ - -static void -add_method_to_hash_list (hash *hash_list, tree method) -{ - hash hsh; - - if (!(hsh = hash_lookup (hash_list, METHOD_SEL_NAME (method)))) - { - /* Install on a global chain. */ - hash_enter (hash_list, method); - } - else - { - /* Check types against those; if different, add to a list. */ - attr loop; - int already_there = comp_proto_with_proto (method, hsh->key, 1); - for (loop = hsh->list; !already_there && loop; loop = loop->next) - already_there |= comp_proto_with_proto (method, loop->value, 1); - if (!already_there) - hash_add_attr (hsh, method); - } -} - -static tree -objc_add_method (tree class, tree method, int is_class) -{ - tree mth; - - if (!(mth = lookup_method (is_class - ? CLASS_CLS_METHODS (class) - : CLASS_NST_METHODS (class), method))) - { - /* put method on list in reverse order */ - if (is_class) - { - TREE_CHAIN (method) = CLASS_CLS_METHODS (class); - CLASS_CLS_METHODS (class) = method; - } - else - { - TREE_CHAIN (method) = CLASS_NST_METHODS (class); - CLASS_NST_METHODS (class) = method; - } - } - else - { - /* When processing an @interface for a class or category, give hard - errors on methods with identical selectors but differing argument - and/or return types. We do not do this for @implementations, because - C/C++ will do it for us (i.e., there will be duplicate function - definition errors). */ - if ((TREE_CODE (class) == CLASS_INTERFACE_TYPE - || TREE_CODE (class) == CATEGORY_INTERFACE_TYPE) - && !comp_proto_with_proto (method, mth, 1)) - error ("duplicate declaration of method %<%c%s%>", - is_class ? '+' : '-', - IDENTIFIER_POINTER (METHOD_SEL_NAME (mth))); - } - - if (is_class) - add_method_to_hash_list (cls_method_hash_list, method); - else - { - add_method_to_hash_list (nst_method_hash_list, method); - - /* Instance methods in root classes (and categories thereof) - may act as class methods as a last resort. We also add - instance methods listed in @protocol declarations to - the class hash table, on the assumption that @protocols - may be adopted by root classes or categories. */ - if (TREE_CODE (class) == CATEGORY_INTERFACE_TYPE - || TREE_CODE (class) == CATEGORY_IMPLEMENTATION_TYPE) - class = lookup_interface (CLASS_NAME (class)); - - if (TREE_CODE (class) == PROTOCOL_INTERFACE_TYPE - || !CLASS_SUPER_NAME (class)) - add_method_to_hash_list (cls_method_hash_list, method); - } - - return method; -} - -static tree -add_class (tree class_name, tree name) -{ - struct interface_tuple **slot; - - /* Put interfaces on list in reverse order. */ - TREE_CHAIN (class_name) = interface_chain; - interface_chain = class_name; - - if (interface_htab == NULL) - interface_htab = htab_create_ggc (31, hash_interface, eq_interface, NULL); - slot = (struct interface_tuple **) - htab_find_slot_with_hash (interface_htab, name, - IDENTIFIER_HASH_VALUE (name), - INSERT); - if (!*slot) - { - *slot = (struct interface_tuple *) ggc_alloc_cleared (sizeof (struct interface_tuple)); - (*slot)->id = name; - } - (*slot)->class_name = class_name; - - return interface_chain; -} - -static void -add_category (tree class, tree category) -{ - /* Put categories on list in reverse order. */ - tree cat = lookup_category (class, CLASS_SUPER_NAME (category)); - - if (cat) - { - warning (0, "duplicate interface declaration for category %<%s(%s)%>", - IDENTIFIER_POINTER (CLASS_NAME (class)), - IDENTIFIER_POINTER (CLASS_SUPER_NAME (category))); - } - else - { - CLASS_CATEGORY_LIST (category) = CLASS_CATEGORY_LIST (class); - CLASS_CATEGORY_LIST (class) = category; - } -} - -/* Called after parsing each instance variable declaration. Necessary to - preserve typedefs and implement public/private... - - PUBLIC is 1 for public, 0 for protected, and 2 for private. */ - -static tree -add_instance_variable (tree class, int public, tree field_decl) -{ - tree field_type = TREE_TYPE (field_decl); - const char *ivar_name = DECL_NAME (field_decl) - ? IDENTIFIER_POINTER (DECL_NAME (field_decl)) - : ""; - -#ifdef OBJCPLUS - if (TREE_CODE (field_type) == REFERENCE_TYPE) - { - error ("illegal reference type specified for instance variable %qs", - ivar_name); - /* Return class as is without adding this ivar. */ - return class; - } -#endif - - if (field_type == error_mark_node || !TYPE_SIZE (field_type) - || TYPE_SIZE (field_type) == error_mark_node) - /* 'type[0]' is allowed, but 'type[]' is not! */ - { - error ("instance variable %qs has unknown size", ivar_name); - /* Return class as is without adding this ivar. */ - return class; - } - -#ifdef OBJCPLUS - /* Check if the ivar being added has a non-POD C++ type. If so, we will - need to either (1) warn the user about it or (2) generate suitable - constructor/destructor call from '- .cxx_construct' or '- .cxx_destruct' - methods (if '-fobjc-call-cxx-cdtors' was specified). */ - if (IS_AGGR_TYPE (field_type) - && (TYPE_NEEDS_CONSTRUCTING (field_type) - || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type) - || TYPE_POLYMORPHIC_P (field_type))) - { - const char *type_name = IDENTIFIER_POINTER (OBJC_TYPE_NAME (field_type)); - - if (flag_objc_call_cxx_cdtors) - { - /* Since the ObjC runtime will be calling the constructors and - destructors for us, the only thing we can't handle is the lack - of a default constructor. */ - if (TYPE_NEEDS_CONSTRUCTING (field_type) - && !TYPE_HAS_DEFAULT_CONSTRUCTOR (field_type)) - { - warning (0, "type %qs has no default constructor to call", - type_name); - - /* If we cannot call a constructor, we should also avoid - calling the destructor, for symmetry. */ - if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type)) - warning (0, "destructor for %qs shall not be run either", - type_name); - } - } - else - { - static bool warn_cxx_ivars = false; - - if (TYPE_POLYMORPHIC_P (field_type)) - { - /* Vtable pointers are Real Bad(tm), since Obj-C cannot - initialize them. */ - error ("type %qs has virtual member functions", type_name); - error ("illegal aggregate type %qs specified " - "for instance variable %qs", - type_name, ivar_name); - /* Return class as is without adding this ivar. */ - return class; - } - - /* User-defined constructors and destructors are not known to Obj-C - and hence will not be called. This may or may not be a problem. */ - if (TYPE_NEEDS_CONSTRUCTING (field_type)) - warning (0, "type %qs has a user-defined constructor", type_name); - if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type)) - warning (0, "type %qs has a user-defined destructor", type_name); - - if (!warn_cxx_ivars) - { - warning (0, "C++ constructors and destructors will not " - "be invoked for Objective-C fields"); - warn_cxx_ivars = true; - } - } - } -#endif - - /* Overload the public attribute, it is not used for FIELD_DECLs. */ - switch (public) - { - case 0: - TREE_PUBLIC (field_decl) = 0; - TREE_PRIVATE (field_decl) = 0; - TREE_PROTECTED (field_decl) = 1; - break; - - case 1: - TREE_PUBLIC (field_decl) = 1; - TREE_PRIVATE (field_decl) = 0; - TREE_PROTECTED (field_decl) = 0; - break; - - case 2: - TREE_PUBLIC (field_decl) = 0; - TREE_PRIVATE (field_decl) = 1; - TREE_PROTECTED (field_decl) = 0; - break; - - } - - CLASS_RAW_IVARS (class) = chainon (CLASS_RAW_IVARS (class), field_decl); - - return class; -} - -static tree -is_ivar (tree decl_chain, tree ident) -{ - for ( ; decl_chain; decl_chain = TREE_CHAIN (decl_chain)) - if (DECL_NAME (decl_chain) == ident) - return decl_chain; - return NULL_TREE; -} - -/* True if the ivar is private and we are not in its implementation. */ - -static int -is_private (tree decl) -{ - return (TREE_PRIVATE (decl) - && ! is_ivar (CLASS_IVARS (implementation_template), - DECL_NAME (decl))); -} - -/* We have an instance variable reference;, check to see if it is public. */ - -int -objc_is_public (tree expr, tree identifier) -{ - tree basetype, decl; - -#ifdef OBJCPLUS - if (processing_template_decl) - return 1; -#endif - - if (TREE_TYPE (expr) == error_mark_node) - return 1; - - basetype = TYPE_MAIN_VARIANT (TREE_TYPE (expr)); - - if (basetype && TREE_CODE (basetype) == RECORD_TYPE) - { - if (TYPE_HAS_OBJC_INFO (basetype) && TYPE_OBJC_INTERFACE (basetype)) - { - tree class = lookup_interface (OBJC_TYPE_NAME (basetype)); - - if (!class) - { - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (OBJC_TYPE_NAME (basetype))); - return 0; - } - - if ((decl = is_ivar (get_class_ivars (class, true), identifier))) - { - if (TREE_PUBLIC (decl)) - return 1; - - /* Important difference between the Stepstone translator: - all instance variables should be public within the context - of the implementation. */ - if (objc_implementation_context - && ((TREE_CODE (objc_implementation_context) - == CLASS_IMPLEMENTATION_TYPE) - || (TREE_CODE (objc_implementation_context) - == CATEGORY_IMPLEMENTATION_TYPE))) - { - tree curtype = TYPE_MAIN_VARIANT - (CLASS_STATIC_TEMPLATE - (implementation_template)); - - if (basetype == curtype - || DERIVED_FROM_P (basetype, curtype)) - { - int private = is_private (decl); - - if (private) - error ("instance variable %qs is declared private", - IDENTIFIER_POINTER (DECL_NAME (decl))); - - return !private; - } - } - - /* The 2.95.2 compiler sometimes allowed C functions to access - non-@public ivars. We will let this slide for now... */ - if (!objc_method_context) - { - warning (0, "instance variable %qs is %s; " - "this will be a hard error in the future", - IDENTIFIER_POINTER (identifier), - TREE_PRIVATE (decl) ? "@private" : "@protected"); - return 1; - } - - error ("instance variable %qs is declared %s", - IDENTIFIER_POINTER (identifier), - TREE_PRIVATE (decl) ? "private" : "protected"); - return 0; - } - } - } - - return 1; -} - -/* Make sure all entries in CHAIN are also in LIST. */ - -static int -check_methods (tree chain, tree list, int mtype) -{ - int first = 1; - - while (chain) - { - if (!lookup_method (list, chain)) - { - if (first) - { - if (TREE_CODE (objc_implementation_context) - == CLASS_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of class %qs", - IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context))); - else if (TREE_CODE (objc_implementation_context) - == CATEGORY_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of category %qs", - IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context))); - first = 0; - } - - warning (0, "method definition for %<%c%s%> not found", - mtype, IDENTIFIER_POINTER (METHOD_SEL_NAME (chain))); - } - - chain = TREE_CHAIN (chain); - } - - return first; -} - -/* Check if CLASS, or its superclasses, explicitly conforms to PROTOCOL. */ - -static int -conforms_to_protocol (tree class, tree protocol) -{ - if (TREE_CODE (protocol) == PROTOCOL_INTERFACE_TYPE) - { - tree p = CLASS_PROTOCOL_LIST (class); - while (p && TREE_VALUE (p) != protocol) - p = TREE_CHAIN (p); - - if (!p) - { - tree super = (CLASS_SUPER_NAME (class) - ? lookup_interface (CLASS_SUPER_NAME (class)) - : NULL_TREE); - int tmp = super ? conforms_to_protocol (super, protocol) : 0; - if (!tmp) - return 0; - } - } - - return 1; -} - -/* Make sure all methods in CHAIN are accessible as MTYPE methods in - CONTEXT. This is one of two mechanisms to check protocol integrity. */ - -static int -check_methods_accessible (tree chain, tree context, int mtype) -{ - int first = 1; - tree list; - tree base_context = context; - - while (chain) - { - context = base_context; - while (context) - { - if (mtype == '+') - list = CLASS_CLS_METHODS (context); - else - list = CLASS_NST_METHODS (context); - - if (lookup_method (list, chain)) - break; - - else if (TREE_CODE (context) == CLASS_IMPLEMENTATION_TYPE - || TREE_CODE (context) == CLASS_INTERFACE_TYPE) - context = (CLASS_SUPER_NAME (context) - ? lookup_interface (CLASS_SUPER_NAME (context)) - : NULL_TREE); - - else if (TREE_CODE (context) == CATEGORY_IMPLEMENTATION_TYPE - || TREE_CODE (context) == CATEGORY_INTERFACE_TYPE) - context = (CLASS_NAME (context) - ? lookup_interface (CLASS_NAME (context)) - : NULL_TREE); - else - abort (); - } - - if (context == NULL_TREE) - { - if (first) - { - if (TREE_CODE (objc_implementation_context) - == CLASS_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of class %qs", - IDENTIFIER_POINTER - (CLASS_NAME (objc_implementation_context))); - else if (TREE_CODE (objc_implementation_context) - == CATEGORY_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of category %qs", - IDENTIFIER_POINTER - (CLASS_SUPER_NAME (objc_implementation_context))); - first = 0; - } - warning (0, "method definition for %<%c%s%> not found", - mtype, IDENTIFIER_POINTER (METHOD_SEL_NAME (chain))); - } - - chain = TREE_CHAIN (chain); /* next method... */ - } - return first; -} - -/* Check whether the current interface (accessible via - 'objc_implementation_context') actually implements protocol P, along - with any protocols that P inherits. */ - -static void -check_protocol (tree p, const char *type, const char *name) -{ - if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE) - { - int f1, f2; - - /* Ensure that all protocols have bodies! */ - if (warn_protocol) - { - f1 = check_methods (PROTOCOL_CLS_METHODS (p), - CLASS_CLS_METHODS (objc_implementation_context), - '+'); - f2 = check_methods (PROTOCOL_NST_METHODS (p), - CLASS_NST_METHODS (objc_implementation_context), - '-'); - } - else - { - f1 = check_methods_accessible (PROTOCOL_CLS_METHODS (p), - objc_implementation_context, - '+'); - f2 = check_methods_accessible (PROTOCOL_NST_METHODS (p), - objc_implementation_context, - '-'); - } - - if (!f1 || !f2) - warning (0, "%s %qs does not fully implement the %qs protocol", - type, name, IDENTIFIER_POINTER (PROTOCOL_NAME (p))); - } - - /* Check protocols recursively. */ - if (PROTOCOL_LIST (p)) - { - tree subs = PROTOCOL_LIST (p); - tree super_class = - lookup_interface (CLASS_SUPER_NAME (implementation_template)); - - while (subs) - { - tree sub = TREE_VALUE (subs); - - /* If the superclass does not conform to the protocols - inherited by P, then we must! */ - if (!super_class || !conforms_to_protocol (super_class, sub)) - check_protocol (sub, type, name); - subs = TREE_CHAIN (subs); - } - } -} - -/* Check whether the current interface (accessible via - 'objc_implementation_context') actually implements the protocols listed - in PROTO_LIST. */ - -static void -check_protocols (tree proto_list, const char *type, const char *name) -{ - for ( ; proto_list; proto_list = TREE_CHAIN (proto_list)) - { - tree p = TREE_VALUE (proto_list); - - check_protocol (p, type, name); - } -} - -/* Make sure that the class CLASS_NAME is defined - CODE says which kind of thing CLASS_NAME ought to be. - It can be CLASS_INTERFACE_TYPE, CLASS_IMPLEMENTATION_TYPE, - CATEGORY_INTERFACE_TYPE, or CATEGORY_IMPLEMENTATION_TYPE. */ - -static tree -start_class (enum tree_code code, tree class_name, tree super_name, - tree protocol_list) -{ - tree class, decl; - -#ifdef OBJCPLUS - if (current_namespace != global_namespace) { - error ("Objective-C declarations may only appear in global scope"); - } -#endif /* OBJCPLUS */ - - if (objc_implementation_context) - { - warning (0, "%<@end%> missing in implementation context"); - finish_class (objc_implementation_context); - objc_ivar_chain = NULL_TREE; - objc_implementation_context = NULL_TREE; - } - - class = make_node (code); - TYPE_LANG_SLOT_1 (class) = make_tree_vec (CLASS_LANG_SLOT_ELTS); - - /* Check for existence of the super class, if one was specified. Note - that we must have seen an @interface, not just a @class. If we - are looking at a @compatibility_alias, traverse it first. */ - if ((code == CLASS_INTERFACE_TYPE || code == CLASS_IMPLEMENTATION_TYPE) - && super_name) - { - tree super = objc_is_class_name (super_name); - - if (!super || !lookup_interface (super)) - { - error ("cannot find interface declaration for %qs, superclass of %qs", - IDENTIFIER_POINTER (super ? super : super_name), - IDENTIFIER_POINTER (class_name)); - super_name = NULL_TREE; - } - else - super_name = super; - } - - CLASS_NAME (class) = class_name; - CLASS_SUPER_NAME (class) = super_name; - CLASS_CLS_METHODS (class) = NULL_TREE; - - if (! objc_is_class_name (class_name) - && (decl = lookup_name (class_name))) - { - error ("%qs redeclared as different kind of symbol", - IDENTIFIER_POINTER (class_name)); - error ("previous declaration of %q+D", - decl); - } - - if (code == CLASS_IMPLEMENTATION_TYPE) - { - { - tree chain; - - for (chain = implemented_classes; chain; chain = TREE_CHAIN (chain)) - if (TREE_VALUE (chain) == class_name) - { - error ("reimplementation of class %qs", - IDENTIFIER_POINTER (class_name)); - return error_mark_node; - } - implemented_classes = tree_cons (NULL_TREE, class_name, - implemented_classes); - } - - /* Reset for multiple classes per file. */ - method_slot = 0; - - objc_implementation_context = class; - - /* Lookup the interface for this implementation. */ - - if (!(implementation_template = lookup_interface (class_name))) - { - warning (0, "cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); - add_class (implementation_template = objc_implementation_context, - class_name); - } - - /* If a super class has been specified in the implementation, - insure it conforms to the one specified in the interface. */ - - if (super_name - && (super_name != CLASS_SUPER_NAME (implementation_template))) - { - tree previous_name = CLASS_SUPER_NAME (implementation_template); - const char *const name = - previous_name ? IDENTIFIER_POINTER (previous_name) : ""; - error ("conflicting super class name %qs", - IDENTIFIER_POINTER (super_name)); - error ("previous declaration of %qs", name); - } - - else if (! super_name) - { - CLASS_SUPER_NAME (objc_implementation_context) - = CLASS_SUPER_NAME (implementation_template); - } - } - - else if (code == CLASS_INTERFACE_TYPE) - { - if (lookup_interface (class_name)) -#ifdef OBJCPLUS - error ("duplicate interface declaration for class %qs", -#else - warning (0, "duplicate interface declaration for class %qs", -#endif - IDENTIFIER_POINTER (class_name)); - else - add_class (class, class_name); - - if (protocol_list) - CLASS_PROTOCOL_LIST (class) - = lookup_and_install_protocols (protocol_list); - } - - else if (code == CATEGORY_INTERFACE_TYPE) - { - tree class_category_is_assoc_with; - - /* For a category, class_name is really the name of the class that - the following set of methods will be associated with. We must - find the interface so that can derive the objects template. */ - - if (!(class_category_is_assoc_with = lookup_interface (class_name))) - { - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); - exit (FATAL_EXIT_CODE); - } - else - add_category (class_category_is_assoc_with, class); - - if (protocol_list) - CLASS_PROTOCOL_LIST (class) - = lookup_and_install_protocols (protocol_list); - } - - else if (code == CATEGORY_IMPLEMENTATION_TYPE) - { - /* Reset for multiple classes per file. */ - method_slot = 0; - - objc_implementation_context = class; - - /* For a category, class_name is really the name of the class that - the following set of methods will be associated with. We must - find the interface so that can derive the objects template. */ - - if (!(implementation_template = lookup_interface (class_name))) - { - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); - exit (FATAL_EXIT_CODE); - } - } - return class; -} - -static tree -continue_class (tree class) -{ - if (TREE_CODE (class) == CLASS_IMPLEMENTATION_TYPE - || TREE_CODE (class) == CATEGORY_IMPLEMENTATION_TYPE) - { - struct imp_entry *imp_entry; - - /* Check consistency of the instance variables. */ - - if (CLASS_RAW_IVARS (class)) - check_ivars (implementation_template, class); - - /* code generation */ - -#ifdef OBJCPLUS - push_lang_context (lang_name_c); -#endif - - build_private_template (implementation_template); - uprivate_record = CLASS_STATIC_TEMPLATE (implementation_template); - objc_instance_type = build_pointer_type (uprivate_record); - - imp_entry = (struct imp_entry *) ggc_alloc (sizeof (struct imp_entry)); - - imp_entry->next = imp_list; - imp_entry->imp_context = class; - imp_entry->imp_template = implementation_template; - - synth_forward_declarations (); - imp_entry->class_decl = UOBJC_CLASS_decl; - imp_entry->meta_decl = UOBJC_METACLASS_decl; - imp_entry->has_cxx_cdtors = 0; - - /* Append to front and increment count. */ - imp_list = imp_entry; - if (TREE_CODE (class) == CLASS_IMPLEMENTATION_TYPE) - imp_count++; - else - cat_count++; - -#ifdef OBJCPLUS - pop_lang_context (); -#endif /* OBJCPLUS */ - - return get_class_ivars (implementation_template, true); - } - - else if (TREE_CODE (class) == CLASS_INTERFACE_TYPE) - { -#ifdef OBJCPLUS - push_lang_context (lang_name_c); -#endif /* OBJCPLUS */ - - build_private_template (class); - -#ifdef OBJCPLUS - pop_lang_context (); -#endif /* OBJCPLUS */ - - return NULL_TREE; - } - - else - return error_mark_node; -} - -/* This is called once we see the "@end" in an interface/implementation. */ - -static void -finish_class (tree class) -{ - if (TREE_CODE (class) == CLASS_IMPLEMENTATION_TYPE) - { - /* All code generation is done in finish_objc. */ - - if (implementation_template != objc_implementation_context) - { - /* Ensure that all method listed in the interface contain bodies. */ - check_methods (CLASS_CLS_METHODS (implementation_template), - CLASS_CLS_METHODS (objc_implementation_context), '+'); - check_methods (CLASS_NST_METHODS (implementation_template), - CLASS_NST_METHODS (objc_implementation_context), '-'); - - if (CLASS_PROTOCOL_LIST (implementation_template)) - check_protocols (CLASS_PROTOCOL_LIST (implementation_template), - "class", - IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context))); - } - } - - else if (TREE_CODE (class) == CATEGORY_IMPLEMENTATION_TYPE) - { - tree category = lookup_category (implementation_template, CLASS_SUPER_NAME (class)); - - if (category) - { - /* Ensure all method listed in the interface contain bodies. */ - check_methods (CLASS_CLS_METHODS (category), - CLASS_CLS_METHODS (objc_implementation_context), '+'); - check_methods (CLASS_NST_METHODS (category), - CLASS_NST_METHODS (objc_implementation_context), '-'); - - if (CLASS_PROTOCOL_LIST (category)) - check_protocols (CLASS_PROTOCOL_LIST (category), - "category", - IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context))); - } - } -} - -static tree -add_protocol (tree protocol) -{ - /* Put protocol on list in reverse order. */ - TREE_CHAIN (protocol) = protocol_chain; - protocol_chain = protocol; - return protocol_chain; -} - -static tree -lookup_protocol (tree ident) -{ - tree chain; - - for (chain = protocol_chain; chain; chain = TREE_CHAIN (chain)) - if (ident == PROTOCOL_NAME (chain)) - return chain; - - return NULL_TREE; -} - -/* This function forward declares the protocols named by NAMES. If - they are already declared or defined, the function has no effect. */ - -void -objc_declare_protocols (tree names) -{ - tree list; - -#ifdef OBJCPLUS - if (current_namespace != global_namespace) { - error ("Objective-C declarations may only appear in global scope"); - } -#endif /* OBJCPLUS */ - - for (list = names; list; list = TREE_CHAIN (list)) - { - tree name = TREE_VALUE (list); - - if (lookup_protocol (name) == NULL_TREE) - { - tree protocol = make_node (PROTOCOL_INTERFACE_TYPE); - - TYPE_LANG_SLOT_1 (protocol) - = make_tree_vec (PROTOCOL_LANG_SLOT_ELTS); - PROTOCOL_NAME (protocol) = name; - PROTOCOL_LIST (protocol) = NULL_TREE; - add_protocol (protocol); - PROTOCOL_DEFINED (protocol) = 0; - PROTOCOL_FORWARD_DECL (protocol) = NULL_TREE; - } - } -} - -static tree -start_protocol (enum tree_code code, tree name, tree list) -{ - tree protocol; - -#ifdef OBJCPLUS - if (current_namespace != global_namespace) { - error ("Objective-C declarations may only appear in global scope"); - } -#endif /* OBJCPLUS */ - - protocol = lookup_protocol (name); - - if (!protocol) - { - protocol = make_node (code); - TYPE_LANG_SLOT_1 (protocol) = make_tree_vec (PROTOCOL_LANG_SLOT_ELTS); - - PROTOCOL_NAME (protocol) = name; - PROTOCOL_LIST (protocol) = lookup_and_install_protocols (list); - add_protocol (protocol); - PROTOCOL_DEFINED (protocol) = 1; - PROTOCOL_FORWARD_DECL (protocol) = NULL_TREE; - - check_protocol_recursively (protocol, list); - } - else if (! PROTOCOL_DEFINED (protocol)) - { - PROTOCOL_DEFINED (protocol) = 1; - PROTOCOL_LIST (protocol) = lookup_and_install_protocols (list); - - check_protocol_recursively (protocol, list); - } - else - { - warning (0, "duplicate declaration for protocol %qs", - IDENTIFIER_POINTER (name)); - } - return protocol; -} - - -/* "Encode" a data type into a string, which grows in util_obstack. - ??? What is the FORMAT? Someone please document this! */ - -static void -encode_type_qualifiers (tree declspecs) -{ - tree spec; - - for (spec = declspecs; spec; spec = TREE_CHAIN (spec)) - { - if (ridpointers[(int) RID_IN] == TREE_VALUE (spec)) - obstack_1grow (&util_obstack, 'n'); - else if (ridpointers[(int) RID_INOUT] == TREE_VALUE (spec)) - obstack_1grow (&util_obstack, 'N'); - else if (ridpointers[(int) RID_OUT] == TREE_VALUE (spec)) - obstack_1grow (&util_obstack, 'o'); - else if (ridpointers[(int) RID_BYCOPY] == TREE_VALUE (spec)) - obstack_1grow (&util_obstack, 'O'); - else if (ridpointers[(int) RID_BYREF] == TREE_VALUE (spec)) - obstack_1grow (&util_obstack, 'R'); - else if (ridpointers[(int) RID_ONEWAY] == TREE_VALUE (spec)) - obstack_1grow (&util_obstack, 'V'); - } -} - -/* Encode a pointer type. */ - -static void -encode_pointer (tree type, int curtype, int format) -{ - tree pointer_to = TREE_TYPE (type); - - if (TREE_CODE (pointer_to) == RECORD_TYPE) - { - if (OBJC_TYPE_NAME (pointer_to) - && TREE_CODE (OBJC_TYPE_NAME (pointer_to)) == IDENTIFIER_NODE) - { - const char *name = IDENTIFIER_POINTER (OBJC_TYPE_NAME (pointer_to)); - - if (strcmp (name, TAG_OBJECT) == 0) /* '@' */ - { - obstack_1grow (&util_obstack, '@'); - return; - } - else if (TYPE_HAS_OBJC_INFO (pointer_to) - && TYPE_OBJC_INTERFACE (pointer_to)) - { - if (generating_instance_variables) - { - obstack_1grow (&util_obstack, '@'); - obstack_1grow (&util_obstack, '"'); - obstack_grow (&util_obstack, name, strlen (name)); - obstack_1grow (&util_obstack, '"'); - return; - } - else - { - obstack_1grow (&util_obstack, '@'); - return; - } - } - else if (strcmp (name, TAG_CLASS) == 0) /* '#' */ - { - obstack_1grow (&util_obstack, '#'); - return; - } - else if (strcmp (name, TAG_SELECTOR) == 0) /* ':' */ - { - obstack_1grow (&util_obstack, ':'); - return; - } - } - } - else if (TREE_CODE (pointer_to) == INTEGER_TYPE - && TYPE_MODE (pointer_to) == QImode) - { - tree pname = TREE_CODE (OBJC_TYPE_NAME (pointer_to)) == IDENTIFIER_NODE - ? OBJC_TYPE_NAME (pointer_to) - : DECL_NAME (OBJC_TYPE_NAME (pointer_to)); - - if (!flag_next_runtime || strcmp (IDENTIFIER_POINTER (pname), "BOOL")) - { - /* It appears that "r*" means "const char *" rather than - "char *const". */ - if (TYPE_READONLY (pointer_to)) - obstack_1grow (&util_obstack, 'r'); - - obstack_1grow (&util_obstack, '*'); - return; - } - } - - /* We have a type that does not get special treatment. */ - - /* NeXT extension */ - obstack_1grow (&util_obstack, '^'); - encode_type (pointer_to, curtype, format); -} - -static void -encode_array (tree type, int curtype, int format) -{ - tree an_int_cst = TYPE_SIZE (type); - tree array_of = TREE_TYPE (type); - char buffer[40]; - - /* An incomplete array is treated like a pointer. */ - if (an_int_cst == NULL) - { - encode_pointer (type, curtype, format); - return; - } - - if (TREE_INT_CST_LOW (TYPE_SIZE (array_of)) == 0) - sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT)0); - else - sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC, - TREE_INT_CST_LOW (an_int_cst) - / TREE_INT_CST_LOW (TYPE_SIZE (array_of))); - - obstack_grow (&util_obstack, buffer, strlen (buffer)); - encode_type (array_of, curtype, format); - obstack_1grow (&util_obstack, ']'); - return; -} - -static void -encode_aggregate_fields (tree type, int pointed_to, int curtype, int format) -{ - tree field = TYPE_FIELDS (type); - - for (; field; field = TREE_CHAIN (field)) - { -#ifdef OBJCPLUS - /* C++ static members, and things that are not field at all, - should not appear in the encoding. */ - if (TREE_CODE (field) != FIELD_DECL || TREE_STATIC (field)) - continue; -#endif - - /* Recursively encode fields of embedded base classes. */ - if (DECL_ARTIFICIAL (field) && !DECL_NAME (field) - && TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE) - { - encode_aggregate_fields (TREE_TYPE (field), - pointed_to, curtype, format); - continue; - } - - if (generating_instance_variables && !pointed_to) - { - tree fname = DECL_NAME (field); - - obstack_1grow (&util_obstack, '"'); - - if (fname && TREE_CODE (fname) == IDENTIFIER_NODE) - obstack_grow (&util_obstack, - IDENTIFIER_POINTER (fname), - strlen (IDENTIFIER_POINTER (fname))); - - obstack_1grow (&util_obstack, '"'); - } - - encode_field_decl (field, curtype, format); - } -} - -static void -encode_aggregate_within (tree type, int curtype, int format, int left, - int right) -{ - tree name; - /* NB: aggregates that are pointed to have slightly different encoding - rules in that you never encode the names of instance variables. */ - int ob_size = obstack_object_size (&util_obstack); - char c1 = ob_size > 1 ? *(obstack_next_free (&util_obstack) - 2) : 0; - char c0 = ob_size > 0 ? *(obstack_next_free (&util_obstack) - 1) : 0; - int pointed_to = (c0 == '^' || (c1 == '^' && c0 == 'r')); - int inline_contents - = ((format == OBJC_ENCODE_INLINE_DEFS || generating_instance_variables) - && (!pointed_to || ob_size - curtype == (c1 == 'r' ? 2 : 1))); - - /* Traverse struct aliases; it is important to get the - original struct and its tag name (if any). */ - type = TYPE_MAIN_VARIANT (type); - name = OBJC_TYPE_NAME (type); - /* Open parenth/bracket. */ - obstack_1grow (&util_obstack, left); - - /* Encode the struct/union tag name, or '?' if a tag was - not provided. Typedef aliases do not qualify. */ - if (name && TREE_CODE (name) == IDENTIFIER_NODE -#ifdef OBJCPLUS - /* Did this struct have a tag? */ - && !TYPE_WAS_ANONYMOUS (type) -#endif - ) - obstack_grow (&util_obstack, - IDENTIFIER_POINTER (name), - strlen (IDENTIFIER_POINTER (name))); - else - obstack_1grow (&util_obstack, '?'); - - /* Encode the types (and possibly names) of the inner fields, - if required. */ - if (inline_contents) - { - obstack_1grow (&util_obstack, '='); - encode_aggregate_fields (type, pointed_to, curtype, format); - } - /* Close parenth/bracket. */ - obstack_1grow (&util_obstack, right); -} - -static void -encode_aggregate (tree type, int curtype, int format) -{ - enum tree_code code = TREE_CODE (type); - - switch (code) - { - case RECORD_TYPE: - { - encode_aggregate_within (type, curtype, format, '{', '}'); - break; - } - case UNION_TYPE: - { - encode_aggregate_within (type, curtype, format, '(', ')'); - break; - } - - case ENUMERAL_TYPE: - obstack_1grow (&util_obstack, 'i'); - break; - - default: - break; - } -} - -/* Encode a bitfield NeXT-style (i.e., without a bit offset or the underlying - field type. */ - -static void -encode_next_bitfield (int width) -{ - char buffer[40]; - sprintf (buffer, "b%d", width); - obstack_grow (&util_obstack, buffer, strlen (buffer)); -} - -/* FORMAT will be OBJC_ENCODE_INLINE_DEFS or OBJC_ENCODE_DONT_INLINE_DEFS. */ -static void -encode_type (tree type, int curtype, int format) -{ - enum tree_code code = TREE_CODE (type); - char c; - - if (TYPE_READONLY (type)) - obstack_1grow (&util_obstack, 'r'); - - if (code == INTEGER_TYPE) - { - switch (GET_MODE_BITSIZE (TYPE_MODE (type))) - { - case 8: c = TYPE_UNSIGNED (type) ? 'C' : 'c'; break; - case 16: c = TYPE_UNSIGNED (type) ? 'S' : 's'; break; - case 32: - if (type == long_unsigned_type_node - || type == long_integer_type_node) - c = TYPE_UNSIGNED (type) ? 'L' : 'l'; - else - c = TYPE_UNSIGNED (type) ? 'I' : 'i'; - break; - case 64: c = TYPE_UNSIGNED (type) ? 'Q' : 'q'; break; - default: abort (); - } - obstack_1grow (&util_obstack, c); - } - - else if (code == REAL_TYPE) - { - /* Floating point types. */ - switch (GET_MODE_BITSIZE (TYPE_MODE (type))) - { - case 32: c = 'f'; break; - case 64: - case 96: - case 128: c = 'd'; break; - default: abort (); - } - obstack_1grow (&util_obstack, c); - } - - else if (code == VOID_TYPE) - obstack_1grow (&util_obstack, 'v'); - - else if (code == BOOLEAN_TYPE) - obstack_1grow (&util_obstack, 'B'); - - else if (code == ARRAY_TYPE) - encode_array (type, curtype, format); - - else if (code == POINTER_TYPE) - encode_pointer (type, curtype, format); - - else if (code == RECORD_TYPE || code == UNION_TYPE || code == ENUMERAL_TYPE) - encode_aggregate (type, curtype, format); - - else if (code == FUNCTION_TYPE) /* '?' */ - obstack_1grow (&util_obstack, '?'); - - else if (code == COMPLEX_TYPE) - { - obstack_1grow (&util_obstack, 'j'); - encode_type (TREE_TYPE (type), curtype, format); - } -} - -static void -encode_gnu_bitfield (int position, tree type, int size) -{ - enum tree_code code = TREE_CODE (type); - char buffer[40]; - char charType = '?'; - - if (code == INTEGER_TYPE) - { - if (integer_zerop (TYPE_MIN_VALUE (type))) - { - /* Unsigned integer types. */ - - if (TYPE_MODE (type) == QImode) - charType = 'C'; - else if (TYPE_MODE (type) == HImode) - charType = 'S'; - else if (TYPE_MODE (type) == SImode) - { - if (type == long_unsigned_type_node) - charType = 'L'; - else - charType = 'I'; - } - else if (TYPE_MODE (type) == DImode) - charType = 'Q'; - } - - else - /* Signed integer types. */ - { - if (TYPE_MODE (type) == QImode) - charType = 'c'; - else if (TYPE_MODE (type) == HImode) - charType = 's'; - else if (TYPE_MODE (type) == SImode) - { - if (type == long_integer_type_node) - charType = 'l'; - else - charType = 'i'; - } - - else if (TYPE_MODE (type) == DImode) - charType = 'q'; - } - } - else if (code == ENUMERAL_TYPE) - charType = 'i'; - else - abort (); - - sprintf (buffer, "b%d%c%d", position, charType, size); - obstack_grow (&util_obstack, buffer, strlen (buffer)); -} - -static void -encode_field_decl (tree field_decl, int curtype, int format) -{ - tree type; - -#ifdef OBJCPLUS - /* C++ static members, and things that are not fields at all, - should not appear in the encoding. */ - if (TREE_CODE (field_decl) != FIELD_DECL || TREE_STATIC (field_decl)) - return; -#endif - - type = TREE_TYPE (field_decl); - - /* Generate the bitfield typing information, if needed. Note the difference - between GNU and NeXT runtimes. */ - if (DECL_BIT_FIELD_TYPE (field_decl)) - { - int size = tree_low_cst (DECL_SIZE (field_decl), 1); - - if (flag_next_runtime) - encode_next_bitfield (size); - else - encode_gnu_bitfield (int_bit_position (field_decl), - DECL_BIT_FIELD_TYPE (field_decl), size); - } - else - encode_type (TREE_TYPE (field_decl), curtype, format); -} - -static GTY(()) tree objc_parmlist = NULL_TREE; - -/* Append PARM to a list of formal parameters of a method, making a necessary - array-to-pointer adjustment along the way. */ - -static void -objc_push_parm (tree parm) -{ - bool relayout_needed = false; - /* Decay arrays and functions into pointers. */ - if (TREE_CODE (TREE_TYPE (parm)) == ARRAY_TYPE) - { - TREE_TYPE (parm) = build_pointer_type (TREE_TYPE (TREE_TYPE (parm))); - relayout_needed = true; - } - else if (TREE_CODE (TREE_TYPE (parm)) == FUNCTION_TYPE) - { - TREE_TYPE (parm) = build_pointer_type (TREE_TYPE (parm)); - relayout_needed = true; - } - - if (relayout_needed) - relayout_decl (parm); - - - DECL_ARG_TYPE (parm) - = lang_hooks.types.type_promotes_to (TREE_TYPE (parm)); - - /* Record constancy and volatility. */ - c_apply_type_quals_to_decl - ((TYPE_READONLY (TREE_TYPE (parm)) ? TYPE_QUAL_CONST : 0) - | (TYPE_RESTRICT (TREE_TYPE (parm)) ? TYPE_QUAL_RESTRICT : 0) - | (TYPE_VOLATILE (TREE_TYPE (parm)) ? TYPE_QUAL_VOLATILE : 0), parm); - - objc_parmlist = chainon (objc_parmlist, parm); -} - -/* Retrieve the formal parameter list constructed via preceding calls to - objc_push_parm(). */ - -#ifdef OBJCPLUS -static tree -objc_get_parm_info (int have_ellipsis ATTRIBUTE_UNUSED) -#else -static struct c_arg_info * -objc_get_parm_info (int have_ellipsis) -#endif -{ -#ifdef OBJCPLUS - tree parm_info = objc_parmlist; - objc_parmlist = NULL_TREE; - - return parm_info; -#else - tree parm_info = objc_parmlist; - struct c_arg_info *arg_info; - /* The C front-end requires an elaborate song and dance at - this point. */ - push_scope (); - declare_parm_level (); - while (parm_info) - { - tree next = TREE_CHAIN (parm_info); - - TREE_CHAIN (parm_info) = NULL_TREE; - parm_info = pushdecl (parm_info); - finish_decl (parm_info, NULL_TREE, NULL_TREE); - parm_info = next; - } - arg_info = get_parm_info (have_ellipsis); - pop_scope (); - objc_parmlist = NULL_TREE; - return arg_info; -#endif -} - -/* Synthesize the formal parameters 'id self' and 'SEL _cmd' needed for ObjC - method definitions. In the case of instance methods, we can be more - specific as to the type of 'self'. */ - -static void -synth_self_and_ucmd_args (void) -{ - tree self_type; - - if (objc_method_context - && TREE_CODE (objc_method_context) == INSTANCE_METHOD_DECL) - self_type = objc_instance_type; - else - /* Really a `struct objc_class *'. However, we allow people to - assign to self, which changes its type midstream. */ - self_type = objc_object_type; - - /* id self; */ - objc_push_parm (build_decl (PARM_DECL, self_id, self_type)); - - /* SEL _cmd; */ - objc_push_parm (build_decl (PARM_DECL, ucmd_id, objc_selector_type)); -} - -/* Transform an Objective-C method definition into a static C function - definition, synthesizing the first two arguments, "self" and "_cmd", - in the process. */ - -static void -start_method_def (tree method) -{ - tree parmlist; -#ifdef OBJCPLUS - tree parm_info; -#else - struct c_arg_info *parm_info; -#endif - int have_ellipsis = 0; - - /* If we are defining a "dealloc" method in a non-root class, we - will need to check if a [super dealloc] is missing, and warn if - it is. */ - if(CLASS_SUPER_NAME (objc_implementation_context) - && !strcmp ("dealloc", IDENTIFIER_POINTER (METHOD_SEL_NAME (method)))) - should_call_super_dealloc = 1; - else - should_call_super_dealloc = 0; - - /* Required to implement _msgSuper. */ - objc_method_context = method; - UOBJC_SUPER_decl = NULL_TREE; - - /* Generate prototype declarations for arguments..."new-style". */ - synth_self_and_ucmd_args (); - - /* Generate argument declarations if a keyword_decl. */ - parmlist = METHOD_SEL_ARGS (method); - while (parmlist) - { - tree type = TREE_VALUE (TREE_TYPE (parmlist)), parm; - - parm = build_decl (PARM_DECL, KEYWORD_ARG_NAME (parmlist), type); - objc_push_parm (parm); - parmlist = TREE_CHAIN (parmlist); - } - - if (METHOD_ADD_ARGS (method)) - { - tree akey; - - for (akey = TREE_CHAIN (METHOD_ADD_ARGS (method)); - akey; akey = TREE_CHAIN (akey)) - { - objc_push_parm (TREE_VALUE (akey)); - } - - if (METHOD_ADD_ARGS_ELLIPSIS_P (method)) - have_ellipsis = 1; - } - - parm_info = objc_get_parm_info (have_ellipsis); - - really_start_method (objc_method_context, parm_info); -} - -static void -warn_with_method (const char *message, int mtype, tree method) -{ - /* Add a readable method name to the warning. */ - warning (0, "%J%s %<%c%s%>", method, - message, mtype, gen_method_decl (method)); -} - -/* Return 1 if TYPE1 is equivalent to TYPE2 - for purposes of method overloading. */ - -static int -objc_types_are_equivalent (tree type1, tree type2) -{ - if (type1 == type2) - return 1; - - /* Strip away indirections. */ - while ((TREE_CODE (type1) == ARRAY_TYPE || TREE_CODE (type1) == POINTER_TYPE) - && (TREE_CODE (type1) == TREE_CODE (type2))) - type1 = TREE_TYPE (type1), type2 = TREE_TYPE (type2); - if (TYPE_MAIN_VARIANT (type1) != TYPE_MAIN_VARIANT (type2)) - return 0; - - type1 = (TYPE_HAS_OBJC_INFO (type1) - ? TYPE_OBJC_PROTOCOL_LIST (type1) - : NULL_TREE); - type2 = (TYPE_HAS_OBJC_INFO (type2) - ? TYPE_OBJC_PROTOCOL_LIST (type2) - : NULL_TREE); - - if (list_length (type1) == list_length (type2)) - { - for (; type2; type2 = TREE_CHAIN (type2)) - if (!lookup_protocol_in_reflist (type1, TREE_VALUE (type2))) - return 0; - return 1; - } - return 0; -} - -/* Return 1 if TYPE1 has the same size and alignment as TYPE2. */ - -static int -objc_types_share_size_and_alignment (tree type1, tree type2) -{ - return (simple_cst_equal (TYPE_SIZE (type1), TYPE_SIZE (type2)) - && TYPE_ALIGN (type1) == TYPE_ALIGN (type2)); -} - -/* Return 1 if PROTO1 is equivalent to PROTO2 - for purposes of method overloading. Ordinarily, the type signatures - should match up exactly, unless STRICT is zero, in which case we - shall allow differences in which the size and alignment of a type - is the same. */ - -static int -comp_proto_with_proto (tree proto1, tree proto2, int strict) -{ - tree type1, type2; - - /* The following test is needed in case there are hashing - collisions. */ - if (METHOD_SEL_NAME (proto1) != METHOD_SEL_NAME (proto2)) - return 0; - - /* Compare return types. */ - type1 = TREE_VALUE (TREE_TYPE (proto1)); - type2 = TREE_VALUE (TREE_TYPE (proto2)); - - if (!objc_types_are_equivalent (type1, type2) - && (strict || !objc_types_share_size_and_alignment (type1, type2))) - return 0; - - /* Compare argument types. */ - for (type1 = get_arg_type_list (proto1, METHOD_REF, 0), - type2 = get_arg_type_list (proto2, METHOD_REF, 0); - type1 && type2; - type1 = TREE_CHAIN (type1), type2 = TREE_CHAIN (type2)) - { - if (!objc_types_are_equivalent (TREE_VALUE (type1), TREE_VALUE (type2)) - && (strict - || !objc_types_share_size_and_alignment (TREE_VALUE (type1), - TREE_VALUE (type2)))) - return 0; - } - - return (!type1 && !type2); -} - -/* Fold an OBJ_TYPE_REF expression for ObjC method dispatches, where - this occurs. ObjC method dispatches are _not_ like C++ virtual - member function dispatches, and we account for the difference here. */ -tree -#ifdef OBJCPLUS -objc_fold_obj_type_ref (tree ref, tree known_type) -#else -objc_fold_obj_type_ref (tree ref ATTRIBUTE_UNUSED, - tree known_type ATTRIBUTE_UNUSED) -#endif -{ -#ifdef OBJCPLUS - tree v = BINFO_VIRTUALS (TYPE_BINFO (known_type)); - - /* If the receiver does not have virtual member functions, there - is nothing we can (or need to) do here. */ - if (!v) - return NULL_TREE; - - /* Let C++ handle C++ virtual functions. */ - return cp_fold_obj_type_ref (ref, known_type); -#else - /* For plain ObjC, we currently do not need to do anything. */ - return NULL_TREE; -#endif -} - -static void -objc_start_function (tree name, tree type, tree attrs, -#ifdef OBJCPLUS - tree params -#else - struct c_arg_info *params -#endif - ) -{ - tree fndecl = build_decl (FUNCTION_DECL, name, type); - -#ifdef OBJCPLUS - DECL_ARGUMENTS (fndecl) = params; - DECL_INITIAL (fndecl) = error_mark_node; - DECL_EXTERNAL (fndecl) = 0; - TREE_STATIC (fndecl) = 1; - retrofit_lang_decl (fndecl); - cplus_decl_attributes (&fndecl, attrs, 0); - start_preparsed_function (fndecl, attrs, /*flags=*/SF_DEFAULT); -#else - struct c_label_context_se *nstack_se; - struct c_label_context_vm *nstack_vm; - nstack_se = XOBNEW (&parser_obstack, struct c_label_context_se); - nstack_se->labels_def = NULL; - nstack_se->labels_used = NULL; - nstack_se->next = label_context_stack_se; - label_context_stack_se = nstack_se; - nstack_vm = XOBNEW (&parser_obstack, struct c_label_context_vm); - nstack_vm->labels_def = NULL; - nstack_vm->labels_used = NULL; - nstack_vm->scope = 0; - nstack_vm->next = label_context_stack_vm; - label_context_stack_vm = nstack_vm; - current_function_returns_value = 0; /* Assume, until we see it does. */ - current_function_returns_null = 0; - - decl_attributes (&fndecl, attrs, 0); - announce_function (fndecl); - DECL_INITIAL (fndecl) = error_mark_node; - DECL_EXTERNAL (fndecl) = 0; - TREE_STATIC (fndecl) = 1; - current_function_decl = pushdecl (fndecl); - push_scope (); - declare_parm_level (); - DECL_RESULT (current_function_decl) - = build_decl (RESULT_DECL, NULL_TREE, - TREE_TYPE (TREE_TYPE (current_function_decl))); - DECL_ARTIFICIAL (DECL_RESULT (current_function_decl)) = 1; - DECL_IGNORED_P (DECL_RESULT (current_function_decl)) = 1; - start_fname_decls (); - store_parm_decls_from (params); -#endif - - TREE_USED (current_function_decl) = 1; -} - -/* - Generate an identifier for the function. the format is "_n_cls", - where 1 <= n <= nMethods, and cls is the name the implementation we - are processing. - - Install the return type from the method declaration. - - If we have a prototype, check for type consistency. */ - -static void -really_start_method (tree method, -#ifdef OBJCPLUS - tree parmlist -#else - struct c_arg_info *parmlist -#endif - ) -{ - tree ret_type, meth_type; - tree method_id; - const char *sel_name, *class_name, *cat_name; - char *buf; - - /* Synth the storage class & assemble the return type. */ - ret_type = TREE_VALUE (TREE_TYPE (method)); - - sel_name = IDENTIFIER_POINTER (METHOD_SEL_NAME (method)); - class_name = IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context)); - cat_name = ((TREE_CODE (objc_implementation_context) - == CLASS_IMPLEMENTATION_TYPE) - ? NULL - : IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context))); - method_slot++; - - /* Make sure this is big enough for any plausible method label. */ - buf = (char *) alloca (50 + strlen (sel_name) + strlen (class_name) - + (cat_name ? strlen (cat_name) : 0)); - - OBJC_GEN_METHOD_LABEL (buf, TREE_CODE (method) == INSTANCE_METHOD_DECL, - class_name, cat_name, sel_name, method_slot); - - method_id = get_identifier (buf); - -#ifdef OBJCPLUS - /* Objective-C methods cannot be overloaded, so we don't need - the type encoding appended. It looks bad anyway... */ - push_lang_context (lang_name_c); -#endif - - meth_type - = build_function_type (ret_type, - get_arg_type_list (method, METHOD_DEF, 0)); - objc_start_function (method_id, meth_type, NULL_TREE, parmlist); - - /* Set self_decl from the first argument. */ - self_decl = DECL_ARGUMENTS (current_function_decl); - - /* Suppress unused warnings. */ - TREE_USED (self_decl) = 1; - TREE_USED (TREE_CHAIN (self_decl)) = 1; -#ifdef OBJCPLUS - pop_lang_context (); -#endif - - METHOD_DEFINITION (method) = current_function_decl; - - /* Check consistency...start_function, pushdecl, duplicate_decls. */ - - if (implementation_template != objc_implementation_context) - { - tree proto - = lookup_method_static (implementation_template, - METHOD_SEL_NAME (method), - ((TREE_CODE (method) == CLASS_METHOD_DECL) - | OBJC_LOOKUP_NO_SUPER)); - - if (proto) - { - if (!comp_proto_with_proto (method, proto, 1)) - { - char type = (TREE_CODE (method) == INSTANCE_METHOD_DECL ? '-' : '+'); - - warn_with_method ("conflicting types for", type, method); - warn_with_method ("previous declaration of", type, proto); - } - } - else - { - /* We have a method @implementation even though we did not - see a corresponding @interface declaration (which is allowed - by Objective-C rules). Go ahead and place the method in - the @interface anyway, so that message dispatch lookups - will see it. */ - tree interface = implementation_template; - - if (TREE_CODE (objc_implementation_context) - == CATEGORY_IMPLEMENTATION_TYPE) - interface = lookup_category - (interface, - CLASS_SUPER_NAME (objc_implementation_context)); - - if (interface) - objc_add_method (interface, copy_node (method), - TREE_CODE (method) == CLASS_METHOD_DECL); - } - } -} - -static void *UOBJC_SUPER_scope = 0; - -/* _n_Method (id self, SEL sel, ...) - { - struct objc_super _S; - _msgSuper ((_S.self = self, _S.class = _cls, &_S), ...); - } */ - -static tree -get_super_receiver (void) -{ - if (objc_method_context) - { - tree super_expr, super_expr_list; - - if (!UOBJC_SUPER_decl) - { - UOBJC_SUPER_decl = build_decl (VAR_DECL, get_identifier (TAG_SUPER), - objc_super_template); - /* This prevents `unused variable' warnings when compiling with -Wall. */ - TREE_USED (UOBJC_SUPER_decl) = 1; - lang_hooks.decls.pushdecl (UOBJC_SUPER_decl); - finish_decl (UOBJC_SUPER_decl, NULL_TREE, NULL_TREE); - UOBJC_SUPER_scope = objc_get_current_scope (); - } - - /* Set receiver to self. */ - super_expr = objc_build_component_ref (UOBJC_SUPER_decl, self_id); - super_expr = build_modify_expr (super_expr, NOP_EXPR, self_decl); - super_expr_list = super_expr; - - /* Set class to begin searching. */ - super_expr = objc_build_component_ref (UOBJC_SUPER_decl, - get_identifier ("super_class")); - - if (TREE_CODE (objc_implementation_context) == CLASS_IMPLEMENTATION_TYPE) - { - /* [_cls, __cls]Super are "pre-built" in - synth_forward_declarations. */ - - super_expr = build_modify_expr (super_expr, NOP_EXPR, - ((TREE_CODE (objc_method_context) - == INSTANCE_METHOD_DECL) - ? ucls_super_ref - : uucls_super_ref)); - } - - else - /* We have a category. */ - { - tree super_name = CLASS_SUPER_NAME (implementation_template); - tree super_class; - - /* Barf if super used in a category of Object. */ - if (!super_name) - { - error ("no super class declared in interface for %qs", - IDENTIFIER_POINTER (CLASS_NAME (implementation_template))); - return error_mark_node; - } - - if (flag_next_runtime && !flag_zero_link) - { - super_class = objc_get_class_reference (super_name); - if (TREE_CODE (objc_method_context) == CLASS_METHOD_DECL) - /* If we are in a class method, we must retrieve the - _metaclass_ for the current class, pointed at by - the class's "isa" pointer. The following assumes that - "isa" is the first ivar in a class (which it must be). */ - super_class - = build_indirect_ref - (build_c_cast (build_pointer_type (objc_class_type), - super_class), "unary *"); - } - else - { - add_class_reference (super_name); - super_class = (TREE_CODE (objc_method_context) == INSTANCE_METHOD_DECL - ? objc_get_class_decl : objc_get_meta_class_decl); - assemble_external (super_class); - super_class - = build_function_call - (super_class, - build_tree_list - (NULL_TREE, - my_build_string_pointer - (IDENTIFIER_LENGTH (super_name) + 1, - IDENTIFIER_POINTER (super_name)))); - } - - super_expr - = build_modify_expr (super_expr, NOP_EXPR, - build_c_cast (TREE_TYPE (super_expr), - super_class)); - } - - super_expr_list = build_compound_expr (super_expr_list, super_expr); - - super_expr = build_unary_op (ADDR_EXPR, UOBJC_SUPER_decl, 0); - super_expr_list = build_compound_expr (super_expr_list, super_expr); - - return super_expr_list; - } - else - { - error ("[super ...] must appear in a method context"); - return error_mark_node; - } -} - -/* When exiting a scope, sever links to a 'super' declaration (if any) - therein contained. */ - -void -objc_clear_super_receiver (void) -{ - if (objc_method_context - && UOBJC_SUPER_scope == objc_get_current_scope ()) { - UOBJC_SUPER_decl = 0; - UOBJC_SUPER_scope = 0; - } -} - -void -objc_finish_method_definition (tree fndecl) -{ - /* We cannot validly inline ObjC methods, at least not without a language - extension to declare that a method need not be dynamically - dispatched, so suppress all thoughts of doing so. */ - DECL_INLINE (fndecl) = 0; - DECL_UNINLINABLE (fndecl) = 1; - -#ifndef OBJCPLUS - /* The C++ front-end will have called finish_function() for us. */ - finish_function (); -#endif - - METHOD_ENCODING (objc_method_context) - = encode_method_prototype (objc_method_context); - - /* Required to implement _msgSuper. This must be done AFTER finish_function, - since the optimizer may find "may be used before set" errors. */ - objc_method_context = NULL_TREE; - - if (should_call_super_dealloc) - warning (0, "method possibly missing a [super dealloc] call"); -} - -#if 0 -int -lang_report_error_function (tree decl) -{ - if (objc_method_context) - { - fprintf (stderr, "In method %qs\n", - IDENTIFIER_POINTER (METHOD_SEL_NAME (objc_method_context))); - return 1; - } - - else - return 0; -} -#endif - -/* Given a tree DECL node, produce a printable description of it in the given - buffer, overwriting the buffer. */ - -static char * -gen_declaration (tree decl) -{ - errbuf[0] = '\0'; - - if (DECL_P (decl)) - { - gen_type_name_0 (TREE_TYPE (decl)); - - if (DECL_NAME (decl)) - { - if (!POINTER_TYPE_P (TREE_TYPE (decl))) - strcat (errbuf, " "); - - strcat (errbuf, IDENTIFIER_POINTER (DECL_NAME (decl))); - } - - if (DECL_INITIAL (decl) - && TREE_CODE (DECL_INITIAL (decl)) == INTEGER_CST) - sprintf (errbuf + strlen (errbuf), ": " HOST_WIDE_INT_PRINT_DEC, - TREE_INT_CST_LOW (DECL_INITIAL (decl))); - } - - return errbuf; -} - -/* Given a tree TYPE node, produce a printable description of it in the given - buffer, overwriting the buffer. */ - -static char * -gen_type_name_0 (tree type) -{ - tree orig = type, proto; - - if (TYPE_P (type) && TYPE_NAME (type)) - type = TYPE_NAME (type); - else if (POINTER_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE) - { - tree inner = TREE_TYPE (type); - - while (TREE_CODE (inner) == ARRAY_TYPE) - inner = TREE_TYPE (inner); - - gen_type_name_0 (inner); - - if (!POINTER_TYPE_P (inner)) - strcat (errbuf, " "); - - if (POINTER_TYPE_P (type)) - strcat (errbuf, "*"); - else - while (type != inner) - { - strcat (errbuf, "["); - - if (TYPE_DOMAIN (type)) - { - char sz[20]; - - sprintf (sz, HOST_WIDE_INT_PRINT_DEC, - (TREE_INT_CST_LOW - (TYPE_MAX_VALUE (TYPE_DOMAIN (type))) + 1)); - strcat (errbuf, sz); - } - - strcat (errbuf, "]"); - type = TREE_TYPE (type); - } - - goto exit_function; - } - - if (TREE_CODE (type) == TYPE_DECL && DECL_NAME (type)) - type = DECL_NAME (type); - - strcat (errbuf, TREE_CODE (type) == IDENTIFIER_NODE - ? IDENTIFIER_POINTER (type) - : ""); - - /* For 'id' and 'Class', adopted protocols are stored in the pointee. */ - if (objc_is_id (orig)) - orig = TREE_TYPE (orig); - - proto = TYPE_HAS_OBJC_INFO (orig) ? TYPE_OBJC_PROTOCOL_LIST (orig) : NULL_TREE; - - if (proto) - { - strcat (errbuf, " <"); - - while (proto) { - strcat (errbuf, - IDENTIFIER_POINTER (PROTOCOL_NAME (TREE_VALUE (proto)))); - proto = TREE_CHAIN (proto); - strcat (errbuf, proto ? ", " : ">"); - } - } - - exit_function: - return errbuf; -} - -static char * -gen_type_name (tree type) -{ - errbuf[0] = '\0'; - - return gen_type_name_0 (type); -} - -/* Given a method tree, put a printable description into the given - buffer (overwriting) and return a pointer to the buffer. */ - -static char * -gen_method_decl (tree method) -{ - tree chain; - - strcpy (errbuf, "("); /* NB: Do _not_ call strcat() here. */ - gen_type_name_0 (TREE_VALUE (TREE_TYPE (method))); - strcat (errbuf, ")"); - chain = METHOD_SEL_ARGS (method); - - if (chain) - { - /* We have a chain of keyword_decls. */ - do - { - if (KEYWORD_KEY_NAME (chain)) - strcat (errbuf, IDENTIFIER_POINTER (KEYWORD_KEY_NAME (chain))); - - strcat (errbuf, ":("); - gen_type_name_0 (TREE_VALUE (TREE_TYPE (chain))); - strcat (errbuf, ")"); - - strcat (errbuf, IDENTIFIER_POINTER (KEYWORD_ARG_NAME (chain))); - if ((chain = TREE_CHAIN (chain))) - strcat (errbuf, " "); - } - while (chain); - - if (METHOD_ADD_ARGS (method)) - { - chain = TREE_CHAIN (METHOD_ADD_ARGS (method)); - - /* Know we have a chain of parm_decls. */ - while (chain) - { - strcat (errbuf, ", "); - gen_type_name_0 (TREE_TYPE (TREE_VALUE (chain))); - chain = TREE_CHAIN (chain); - } - - if (METHOD_ADD_ARGS_ELLIPSIS_P (method)) - strcat (errbuf, ", ..."); - } - } - - else - /* We have a unary selector. */ - strcat (errbuf, IDENTIFIER_POINTER (METHOD_SEL_NAME (method))); - - return errbuf; -} - -/* Debug info. */ - - -/* Dump an @interface declaration of the supplied class CHAIN to the - supplied file FP. Used to implement the -gen-decls option (which - prints out an @interface declaration of all classes compiled in - this run); potentially useful for debugging the compiler too. */ -static void -dump_interface (FILE *fp, tree chain) -{ - /* FIXME: A heap overflow here whenever a method (or ivar) - declaration is so long that it doesn't fit in the buffer. The - code and all the related functions should be rewritten to avoid - using fixed size buffers. */ - const char *my_name = IDENTIFIER_POINTER (CLASS_NAME (chain)); - tree ivar_decls = CLASS_RAW_IVARS (chain); - tree nst_methods = CLASS_NST_METHODS (chain); - tree cls_methods = CLASS_CLS_METHODS (chain); - - fprintf (fp, "\n@interface %s", my_name); - - /* CLASS_SUPER_NAME is used to store the superclass name for - classes, and the category name for categories. */ - if (CLASS_SUPER_NAME (chain)) - { - const char *name = IDENTIFIER_POINTER (CLASS_SUPER_NAME (chain)); - - if (TREE_CODE (chain) == CATEGORY_IMPLEMENTATION_TYPE - || TREE_CODE (chain) == CATEGORY_INTERFACE_TYPE) - { - fprintf (fp, " (%s)\n", name); - } - else - { - fprintf (fp, " : %s\n", name); - } - } - else - fprintf (fp, "\n"); - - /* FIXME - the following doesn't seem to work at the moment. */ - if (ivar_decls) - { - fprintf (fp, "{\n"); - do - { - fprintf (fp, "\t%s;\n", gen_declaration (ivar_decls)); - ivar_decls = TREE_CHAIN (ivar_decls); - } - while (ivar_decls); - fprintf (fp, "}\n"); - } - - while (nst_methods) - { - fprintf (fp, "- %s;\n", gen_method_decl (nst_methods)); - nst_methods = TREE_CHAIN (nst_methods); - } - - while (cls_methods) - { - fprintf (fp, "+ %s;\n", gen_method_decl (cls_methods)); - cls_methods = TREE_CHAIN (cls_methods); - } - - fprintf (fp, "@end\n"); -} - -/* Demangle function for Objective-C */ -static const char * -objc_demangle (const char *mangled) -{ - char *demangled, *cp; - - if (mangled[0] == '_' && - (mangled[1] == 'i' || mangled[1] == 'c') && - mangled[2] == '_') - { - cp = demangled = XNEWVEC (char, strlen(mangled) + 2); - if (mangled[1] == 'i') - *cp++ = '-'; /* for instance method */ - else - *cp++ = '+'; /* for class method */ - *cp++ = '['; /* opening left brace */ - strcpy(cp, mangled+3); /* tack on the rest of the mangled name */ - while (*cp && *cp == '_') - cp++; /* skip any initial underbars in class name */ - cp = strchr(cp, '_'); /* find first non-initial underbar */ - if (cp == NULL) - { - free(demangled); /* not mangled name */ - return mangled; - } - if (cp[1] == '_') /* easy case: no category name */ - { - *cp++ = ' '; /* replace two '_' with one ' ' */ - strcpy(cp, mangled + (cp - demangled) + 2); - } - else - { - *cp++ = '('; /* less easy case: category name */ - cp = strchr(cp, '_'); - if (cp == 0) - { - free(demangled); /* not mangled name */ - return mangled; - } - *cp++ = ')'; - *cp++ = ' '; /* overwriting 1st char of method name... */ - strcpy(cp, mangled + (cp - demangled)); /* get it back */ - } - while (*cp && *cp == '_') - cp++; /* skip any initial underbars in method name */ - for (; *cp; cp++) - if (*cp == '_') - *cp = ':'; /* replace remaining '_' with ':' */ - *cp++ = ']'; /* closing right brace */ - *cp++ = 0; /* string terminator */ - return demangled; - } - else - return mangled; /* not an objc mangled name */ -} - -const char * -objc_printable_name (tree decl, int kind ATTRIBUTE_UNUSED) -{ - return objc_demangle (IDENTIFIER_POINTER (DECL_NAME (decl))); -} - -static void -init_objc (void) -{ - gcc_obstack_init (&util_obstack); - util_firstobj = (char *) obstack_finish (&util_obstack); - - errbuf = XNEWVEC (char, 1024 * 10); - hash_init (); - synth_module_prologue (); -} - -static void -finish_objc (void) -{ - struct imp_entry *impent; - tree chain; - /* The internally generated initializers appear to have missing braces. - Don't warn about this. */ - int save_warn_missing_braces = warn_missing_braces; - warn_missing_braces = 0; - - /* A missing @end may not be detected by the parser. */ - if (objc_implementation_context) - { - warning (0, "%<@end%> missing in implementation context"); - finish_class (objc_implementation_context); - objc_ivar_chain = NULL_TREE; - objc_implementation_context = NULL_TREE; - } - - /* Process the static instances here because initialization of objc_symtab - depends on them. */ - if (objc_static_instances) - generate_static_references (); - - if (imp_list || class_names_chain - || meth_var_names_chain || meth_var_types_chain || sel_ref_chain) - generate_objc_symtab_decl (); - - for (impent = imp_list; impent; impent = impent->next) - { - objc_implementation_context = impent->imp_context; - implementation_template = impent->imp_template; - - UOBJC_CLASS_decl = impent->class_decl; - UOBJC_METACLASS_decl = impent->meta_decl; - - /* Dump the @interface of each class as we compile it, if the - -gen-decls option is in use. TODO: Dump the classes in the - order they were found, rather than in reverse order as we - are doing now. */ - if (flag_gen_declaration) - { - dump_interface (gen_declaration_file, objc_implementation_context); - } - - if (TREE_CODE (objc_implementation_context) == CLASS_IMPLEMENTATION_TYPE) - { - /* all of the following reference the string pool... */ - generate_ivar_lists (); - generate_dispatch_tables (); - generate_shared_structures (impent->has_cxx_cdtors - ? CLS_HAS_CXX_STRUCTORS - : 0); - } - else - { - generate_dispatch_tables (); - generate_category (objc_implementation_context); - } - } - - /* If we are using an array of selectors, we must always - finish up the array decl even if no selectors were used. */ - if (! flag_next_runtime || sel_ref_chain) - build_selector_translation_table (); - - if (protocol_chain) - generate_protocols (); - - if ((flag_replace_objc_classes && imp_list) || flag_objc_gc) - generate_objc_image_info (); - - /* Arrange for ObjC data structures to be initialized at run time. */ - if (objc_implementation_context || class_names_chain || objc_static_instances - || meth_var_names_chain || meth_var_types_chain || sel_ref_chain) - { - build_module_descriptor (); - - if (!flag_next_runtime) - build_module_initializer_routine (); - } - - /* Dump the class references. This forces the appropriate classes - to be linked into the executable image, preserving unix archive - semantics. This can be removed when we move to a more dynamically - linked environment. */ - - for (chain = cls_ref_chain; chain; chain = TREE_CHAIN (chain)) - { - handle_class_ref (chain); - if (TREE_PURPOSE (chain)) - generate_classref_translation_entry (chain); - } - - for (impent = imp_list; impent; impent = impent->next) - handle_impent (impent); - - if (warn_selector) - { - int slot; - hash hsh; - - /* Run through the selector hash tables and print a warning for any - selector which has multiple methods. */ - - for (slot = 0; slot < SIZEHASHTABLE; slot++) - { - for (hsh = cls_method_hash_list[slot]; hsh; hsh = hsh->next) - check_duplicates (hsh, 0, 1); - for (hsh = nst_method_hash_list[slot]; hsh; hsh = hsh->next) - check_duplicates (hsh, 0, 1); - } - } - - warn_missing_braces = save_warn_missing_braces; -} - -/* Subroutines of finish_objc. */ - -static void -generate_classref_translation_entry (tree chain) -{ - tree expr, decl, type; - - decl = TREE_PURPOSE (chain); - type = TREE_TYPE (decl); - - expr = add_objc_string (TREE_VALUE (chain), class_names); - expr = convert (type, expr); /* cast! */ - - /* The decl that is the one that we - forward declared in build_class_reference. */ - finish_var_decl (decl, expr); - return; -} - -static void -handle_class_ref (tree chain) -{ - const char *name = IDENTIFIER_POINTER (TREE_VALUE (chain)); - char *string = (char *) alloca (strlen (name) + 30); - tree decl; - tree exp; - - sprintf (string, "%sobjc_class_name_%s", - (flag_next_runtime ? "." : "__"), name); - -#ifdef ASM_DECLARE_UNRESOLVED_REFERENCE - if (flag_next_runtime) - { - ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); - return; - } -#endif - - /* Make a decl for this name, so we can use its address in a tree. */ - decl = build_decl (VAR_DECL, get_identifier (string), char_type_node); - DECL_EXTERNAL (decl) = 1; - TREE_PUBLIC (decl) = 1; - - pushdecl (decl); - rest_of_decl_compilation (decl, 0, 0); - - /* Make a decl for the address. */ - sprintf (string, "%sobjc_class_ref_%s", - (flag_next_runtime ? "." : "__"), name); - exp = build1 (ADDR_EXPR, string_type_node, decl); - decl = build_decl (VAR_DECL, get_identifier (string), string_type_node); - DECL_INITIAL (decl) = exp; - TREE_STATIC (decl) = 1; - TREE_USED (decl) = 1; - /* Force the output of the decl as this forces the reference of the class. */ - mark_decl_referenced (decl); - - pushdecl (decl); - rest_of_decl_compilation (decl, 0, 0); -} - -static void -handle_impent (struct imp_entry *impent) -{ - char *string; - - objc_implementation_context = impent->imp_context; - implementation_template = impent->imp_template; - - if (TREE_CODE (impent->imp_context) == CLASS_IMPLEMENTATION_TYPE) - { - const char *const class_name = - IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context)); - - string = (char *) alloca (strlen (class_name) + 30); - - sprintf (string, "%sobjc_class_name_%s", - (flag_next_runtime ? "." : "__"), class_name); - } - else if (TREE_CODE (impent->imp_context) == CATEGORY_IMPLEMENTATION_TYPE) - { - const char *const class_name = - IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context)); - const char *const class_super_name = - IDENTIFIER_POINTER (CLASS_SUPER_NAME (impent->imp_context)); - - string = (char *) alloca (strlen (class_name) - + strlen (class_super_name) + 30); - - /* Do the same for categories. Even though no references to - these symbols are generated automatically by the compiler, it - gives you a handle to pull them into an archive by hand. */ - sprintf (string, "*%sobjc_category_name_%s_%s", - (flag_next_runtime ? "." : "__"), class_name, class_super_name); - } - else - return; - -#ifdef ASM_DECLARE_CLASS_REFERENCE - if (flag_next_runtime) - { - ASM_DECLARE_CLASS_REFERENCE (asm_out_file, string); - return; - } - else -#endif - { - tree decl, init; - - init = build_int_cst (c_common_type_for_size (BITS_PER_WORD, 1), 0); - decl = build_decl (VAR_DECL, get_identifier (string), TREE_TYPE (init)); - TREE_PUBLIC (decl) = 1; - TREE_READONLY (decl) = 1; - TREE_USED (decl) = 1; - TREE_CONSTANT (decl) = 1; - DECL_CONTEXT (decl) = 0; - DECL_ARTIFICIAL (decl) = 1; - DECL_INITIAL (decl) = init; - assemble_variable (decl, 1, 0, 0); - } -} - -/* The Fix-and-Continue functionality available in Mac OS X 10.3 and - later requires that ObjC translation units participating in F&C be - specially marked. The following routine accomplishes this. */ - -/* static int _OBJC_IMAGE_INFO[2] = { 0, 1 }; */ - -static void -generate_objc_image_info (void) -{ - tree decl, initlist; - int flags - = ((flag_replace_objc_classes && imp_list ? 1 : 0) - | (flag_objc_gc ? 2 : 0)); - - decl = start_var_decl (build_array_type - (integer_type_node, - build_index_type (build_int_cst (NULL_TREE, 2 - 1))), - "_OBJC_IMAGE_INFO"); - - initlist = build_tree_list (NULL_TREE, build_int_cst (NULL_TREE, 0)); - initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, flags), initlist); - initlist = objc_build_constructor (TREE_TYPE (decl), nreverse (initlist)); - - finish_var_decl (decl, initlist); -} - -/* Look up ID as an instance variable. OTHER contains the result of - the C or C++ lookup, which we may want to use instead. */ - -tree -objc_lookup_ivar (tree other, tree id) -{ - tree ivar; - - /* If we are not inside of an ObjC method, ivar lookup makes no sense. */ - if (!objc_method_context) - return other; - - if (!strcmp (IDENTIFIER_POINTER (id), "super")) - /* We have a message to super. */ - return get_super_receiver (); - - /* In a class method, look up an instance variable only as a last - resort. */ - if (TREE_CODE (objc_method_context) == CLASS_METHOD_DECL - && other && other != error_mark_node) - return other; - - /* Look up the ivar, but do not use it if it is not accessible. */ - ivar = is_ivar (objc_ivar_chain, id); - - if (!ivar || is_private (ivar)) - return other; - - /* In an instance method, a local variable (or parameter) may hide the - instance variable. */ - if (TREE_CODE (objc_method_context) == INSTANCE_METHOD_DECL - && other && other != error_mark_node -#ifdef OBJCPLUS - && CP_DECL_CONTEXT (other) != global_namespace) -#else - && !DECL_FILE_SCOPE_P (other)) -#endif - { - warning (0, "local declaration of %qs hides instance variable", - IDENTIFIER_POINTER (id)); - - return other; - } - - /* At this point, we are either in an instance method with no obscuring - local definitions, or in a class method with no alternate definitions - at all. */ - return build_ivar_reference (id); -} - -/* Possibly rewrite a function CALL into an OBJ_TYPE_REF expression. This - needs to be done if we are calling a function through a cast. */ - -tree -objc_rewrite_function_call (tree function, tree params) -{ - if (TREE_CODE (function) == NOP_EXPR - && TREE_CODE (TREE_OPERAND (function, 0)) == ADDR_EXPR - && TREE_CODE (TREE_OPERAND (TREE_OPERAND (function, 0), 0)) - == FUNCTION_DECL) - { - function = build3 (OBJ_TYPE_REF, TREE_TYPE (function), - TREE_OPERAND (function, 0), - TREE_VALUE (params), size_zero_node); - } - - return function; -} - -/* Look for the special case of OBJC_TYPE_REF with the address of - a function in OBJ_TYPE_REF_EXPR (presumably objc_msgSend or one - of its cousins). */ - -enum gimplify_status -objc_gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p) -{ - enum gimplify_status r0, r1; - if (TREE_CODE (*expr_p) == OBJ_TYPE_REF - && TREE_CODE (OBJ_TYPE_REF_EXPR (*expr_p)) == ADDR_EXPR - && TREE_CODE (TREE_OPERAND (OBJ_TYPE_REF_EXPR (*expr_p), 0)) - == FUNCTION_DECL) - { - /* Postincrements in OBJ_TYPE_REF_OBJECT don't affect the - value of the OBJ_TYPE_REF, so force them to be emitted - during subexpression evaluation rather than after the - OBJ_TYPE_REF. This permits objc_msgSend calls in Objective - C to use direct rather than indirect calls when the - object expression has a postincrement. */ - r0 = gimplify_expr (&OBJ_TYPE_REF_OBJECT (*expr_p), pre_p, NULL, - is_gimple_val, fb_rvalue); - r1 = gimplify_expr (&OBJ_TYPE_REF_EXPR (*expr_p), pre_p, post_p, - is_gimple_val, fb_rvalue); - - return MIN (r0, r1); - } - -#ifdef OBJCPLUS - return cp_gimplify_expr (expr_p, pre_p, post_p); -#else - return c_gimplify_expr (expr_p, pre_p, post_p); -#endif -} - -/* Given a CALL expression, find the function being called. The ObjC - version looks for the OBJ_TYPE_REF_EXPR which is used for objc_msgSend. */ - -tree -objc_get_callee_fndecl (tree call_expr) -{ - tree addr = TREE_OPERAND (call_expr, 0); - if (TREE_CODE (addr) != OBJ_TYPE_REF) - return 0; - - addr = OBJ_TYPE_REF_EXPR (addr); - - /* If the address is just `&f' for some function `f', then we know - that `f' is being called. */ - if (TREE_CODE (addr) == ADDR_EXPR - && TREE_CODE (TREE_OPERAND (addr, 0)) == FUNCTION_DECL) - return TREE_OPERAND (addr, 0); - - return 0; -} - -#include "gt-objc-objc-act.h" diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h deleted file mode 100644 index d801865688bb..000000000000 --- a/gcc/objc/objc-act.h +++ /dev/null @@ -1,457 +0,0 @@ -/* Declarations for objc-act.c. - Copyright (C) 1990, 2000, 2001, 2002, 2003, 2004, 2005 - 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -#ifndef GCC_OBJC_ACT_H -#define GCC_OBJC_ACT_H - -/* For enum gimplify_status */ -#include "tree-gimple.h" - -/*** Language hooks ***/ - -bool objc_init (void); -const char *objc_printable_name (tree, int); -tree objc_get_callee_fndecl (tree); -void objc_finish_file (void); -tree objc_fold_obj_type_ref (tree, tree); -enum gimplify_status objc_gimplify_expr (tree *, tree *, tree *); - -/* NB: The remaining public functions are prototyped in c-common.h, for the - benefit of stub-objc.c and objc-act.c. */ - -/* Objective-C structures */ - -#define CLASS_LANG_SLOT_ELTS 5 -#define PROTOCOL_LANG_SLOT_ELTS 2 -#define OBJC_INFO_SLOT_ELTS 2 - -/* KEYWORD_DECL */ -#define KEYWORD_KEY_NAME(DECL) ((DECL)->decl_minimal.name) -#define KEYWORD_ARG_NAME(DECL) ((DECL)->decl_non_common.arguments) - -/* INSTANCE_METHOD_DECL, CLASS_METHOD_DECL */ -#define METHOD_SEL_NAME(DECL) ((DECL)->decl_minimal.name) -#define METHOD_SEL_ARGS(DECL) ((DECL)->decl_non_common.arguments) -#define METHOD_ADD_ARGS(DECL) ((DECL)->decl_non_common.result) -#define METHOD_ADD_ARGS_ELLIPSIS_P(DECL) ((DECL)->decl_common.lang_flag_0) -#define METHOD_DEFINITION(DECL) ((DECL)->decl_common.initial) -#define METHOD_ENCODING(DECL) ((DECL)->decl_minimal.context) - -/* CLASS_INTERFACE_TYPE, CLASS_IMPLEMENTATION_TYPE, - CATEGORY_INTERFACE_TYPE, CATEGORY_IMPLEMENTATION_TYPE, - PROTOCOL_INTERFACE_TYPE */ -#define CLASS_NAME(CLASS) ((CLASS)->type.name) -#define CLASS_SUPER_NAME(CLASS) (TYPE_CHECK (CLASS)->type.context) -#define CLASS_IVARS(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 0) -#define CLASS_RAW_IVARS(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 1) -#define CLASS_NST_METHODS(CLASS) ((CLASS)->type.minval) -#define CLASS_CLS_METHODS(CLASS) ((CLASS)->type.maxval) -#define CLASS_STATIC_TEMPLATE(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 2) -#define CLASS_CATEGORY_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 3) -#define CLASS_PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 4) -#define PROTOCOL_NAME(CLASS) ((CLASS)->type.name) -#define PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 0) -#define PROTOCOL_NST_METHODS(CLASS) ((CLASS)->type.minval) -#define PROTOCOL_CLS_METHODS(CLASS) ((CLASS)->type.maxval) -#define PROTOCOL_FORWARD_DECL(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 1) -#define PROTOCOL_DEFINED(CLASS) TREE_USED (CLASS) - -/* ObjC-specific information pertaining to RECORD_TYPEs are stored in - the LANG_SPECIFIC structures, which may itself need allocating first. */ - -/* The following three macros must be overridden (in objcp/objcp-decl.h) - for Objective-C++. */ -#define TYPE_OBJC_INFO(TYPE) TYPE_LANG_SPECIFIC (TYPE)->objc_info -#define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type) -#define ALLOC_OBJC_TYPE_LANG_SPECIFIC(NODE) \ - do { \ - TYPE_LANG_SPECIFIC (NODE) = GGC_CNEW (struct lang_type); \ - } while (0) - -#define TYPE_HAS_OBJC_INFO(TYPE) \ - (TYPE_LANG_SPECIFIC (TYPE) && TYPE_OBJC_INFO (TYPE)) -#define TYPE_OBJC_INTERFACE(TYPE) TREE_VEC_ELT (TYPE_OBJC_INFO (TYPE), 0) -#define TYPE_OBJC_PROTOCOL_LIST(TYPE) TREE_VEC_ELT (TYPE_OBJC_INFO (TYPE), 1) - - -#define INIT_TYPE_OBJC_INFO(TYPE) \ - do \ - { \ - if (!TYPE_LANG_SPECIFIC (TYPE)) \ - ALLOC_OBJC_TYPE_LANG_SPECIFIC(TYPE); \ - if (!TYPE_OBJC_INFO (TYPE)) \ - TYPE_OBJC_INFO (TYPE) \ - = make_tree_vec (OBJC_INFO_SLOT_ELTS); \ - } \ - while (0) -#define DUP_TYPE_OBJC_INFO(DST, SRC) \ - do \ - { \ - ALLOC_OBJC_TYPE_LANG_SPECIFIC(DST); \ - if (TYPE_LANG_SPECIFIC (SRC)) \ - memcpy (TYPE_LANG_SPECIFIC (DST), \ - TYPE_LANG_SPECIFIC (SRC), \ - SIZEOF_OBJC_TYPE_LANG_SPECIFIC); \ - TYPE_OBJC_INFO (DST) \ - = make_tree_vec (OBJC_INFO_SLOT_ELTS); \ - } \ - while (0) - -#define TYPED_OBJECT(TYPE) \ - (TREE_CODE (TYPE) == RECORD_TYPE \ - && TYPE_HAS_OBJC_INFO (TYPE) \ - && TYPE_OBJC_INTERFACE (TYPE)) -#define OBJC_TYPE_NAME(TYPE) TYPE_NAME(TYPE) -#define OBJC_SET_TYPE_NAME(TYPE, NAME) (TYPE_NAME (TYPE) = NAME) - -/* Define the Objective-C or Objective-C++ language-specific tree codes. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, -enum objc_tree_code { -#if defined (GCC_CP_TREE_H) - LAST_BASE_TREE_CODE = LAST_CPLUS_TREE_CODE, -#else -#if defined (GCC_C_TREE_H) - LAST_BASE_TREE_CODE = LAST_C_TREE_CODE, -#else - #error You must include or before -#endif -#endif -#include "objc-tree.def" - LAST_OBJC_TREE_CODE -}; -#undef DEFTREECODE - -/* Hash tables to manage the global pool of method prototypes. */ - -typedef struct hashed_entry *hash; -typedef struct hashed_attribute *attr; - -struct hashed_attribute GTY(()) -{ - attr next; - tree value; -}; -struct hashed_entry GTY(()) -{ - attr list; - hash next; - tree key; -}; - -extern GTY ((length ("SIZEHASHTABLE"))) hash *nst_method_hash_list; -extern GTY ((length ("SIZEHASHTABLE"))) hash *cls_method_hash_list; - -#define SIZEHASHTABLE 257 - -/* Objective-C/Objective-C++ @implementation list. */ - -struct imp_entry GTY(()) -{ - struct imp_entry *next; - tree imp_context; - tree imp_template; - tree class_decl; /* _OBJC_CLASS_; */ - tree meta_decl; /* _OBJC_METACLASS_; */ - BOOL_BITFIELD has_cxx_cdtors : 1; -}; - -extern GTY(()) struct imp_entry *imp_list; -extern GTY(()) int imp_count; /* `@implementation' */ -extern GTY(()) int cat_count; /* `@category' */ - -extern GTY(()) enum tree_code objc_inherit_code; -extern GTY(()) int objc_public_flag; - -/* Objective-C/Objective-C++ global tree enumeration. */ - -enum objc_tree_index -{ - OCTI_STATIC_NST, - OCTI_STATIC_NST_DECL, - OCTI_SELF_ID, - OCTI_UCMD_ID, - - OCTI_SELF_DECL, - OCTI_UMSG_DECL, - OCTI_UMSG_FAST_DECL, - OCTI_UMSG_SUPER_DECL, - OCTI_UMSG_STRET_DECL, - OCTI_UMSG_SUPER_STRET_DECL, - OCTI_GET_CLASS_DECL, - OCTI_GET_MCLASS_DECL, - OCTI_SUPER_TYPE, - OCTI_SEL_TYPE, - OCTI_ID_TYPE, - OCTI_CLS_TYPE, - OCTI_NST_TYPE, - OCTI_PROTO_TYPE, - - OCTI_CLS_CHAIN, - OCTI_ALIAS_CHAIN, - OCTI_INTF_CHAIN, - OCTI_PROTO_CHAIN, - OCTI_IMPL_CHAIN, - OCTI_CLS_REF_CHAIN, - OCTI_SEL_REF_CHAIN, - OCTI_IVAR_CHAIN, - OCTI_CLS_NAMES_CHAIN, - OCTI_METH_VAR_NAMES_CHAIN, - OCTI_METH_VAR_TYPES_CHAIN, - - OCTI_SYMBOLS_DECL, - OCTI_NST_VAR_DECL, - OCTI_CLS_VAR_DECL, - OCTI_NST_METH_DECL, - OCTI_CLS_METH_DECL, - OCTI_CLS_DECL, - OCTI_MCLS_DECL, - OCTI_SEL_TABLE_DECL, - OCTI_MODULES_DECL, - OCTI_GNU_INIT_DECL, - - OCTI_INTF_CTX, - OCTI_IMPL_CTX, - OCTI_METH_CTX, - OCTI_IVAR_CTX, - - OCTI_IMPL_TEMPL, - OCTI_CLS_TEMPL, - OCTI_CAT_TEMPL, - OCTI_UPRIV_REC, - OCTI_PROTO_TEMPL, - OCTI_SEL_TEMPL, - OCTI_UCLS_SUPER_REF, - OCTI_UUCLS_SUPER_REF, - OCTI_METH_TEMPL, - OCTI_IVAR_TEMPL, - OCTI_METH_LIST_TEMPL, - OCTI_METH_PROTO_LIST_TEMPL, - OCTI_IVAR_LIST_TEMPL, - OCTI_SYMTAB_TEMPL, - OCTI_MODULE_TEMPL, - OCTI_SUPER_TEMPL, - OCTI_OBJ_REF, - OCTI_CLS_REF, - OCTI_METH_PROTO_TEMPL, - OCTI_FUNCTION1_TEMPL, - OCTI_FUNCTION2_TEMPL, - - OCTI_OBJ_ID, - OCTI_CLS_ID, - OCTI_ID_NAME, - OCTI_CLASS_NAME, - OCTI_CNST_STR_ID, - OCTI_CNST_STR_TYPE, - OCTI_CNST_STR_GLOB_ID, - OCTI_STRING_CLASS_DECL, - OCTI_INTERNAL_CNST_STR_TYPE, - OCTI_SUPER_DECL, - OCTI_UMSG_NONNIL_DECL, - OCTI_UMSG_NONNIL_STRET_DECL, - OCTI_STORAGE_CLS, - OCTI_EXCEPTION_EXTRACT_DECL, - OCTI_EXCEPTION_TRY_ENTER_DECL, - OCTI_EXCEPTION_TRY_EXIT_DECL, - OCTI_EXCEPTION_MATCH_DECL, - OCTI_EXCEPTION_THROW_DECL, - OCTI_SYNC_ENTER_DECL, - OCTI_SYNC_EXIT_DECL, - OCTI_SETJMP_DECL, - OCTI_EXCDATA_TEMPL, - OCTI_STACK_EXCEPTION_DATA_DECL, - OCTI_LOCAL_EXCEPTION_DECL, - OCTI_RETHROW_EXCEPTION_DECL, - OCTI_EVAL_ONCE_DECL, - OCTI_CATCH_TYPE, - OCTI_EXECCLASS_DECL, - - OCTI_ASSIGN_IVAR_DECL, - OCTI_ASSIGN_IVAR_FAST_DECL, - OCTI_ASSIGN_GLOBAL_DECL, - OCTI_ASSIGN_STRONGCAST_DECL, - - OCTI_MAX -}; - -extern GTY(()) tree objc_global_trees[OCTI_MAX]; - -/* List of classes with list of their static instances. */ -#define objc_static_instances objc_global_trees[OCTI_STATIC_NST] - -/* The declaration of the array administrating the static instances. */ -#define static_instances_decl objc_global_trees[OCTI_STATIC_NST_DECL] - -/* Some commonly used instances of "identifier_node". */ - -#define self_id objc_global_trees[OCTI_SELF_ID] -#define ucmd_id objc_global_trees[OCTI_UCMD_ID] - -#define self_decl objc_global_trees[OCTI_SELF_DECL] -#define umsg_decl objc_global_trees[OCTI_UMSG_DECL] -#define umsg_fast_decl objc_global_trees[OCTI_UMSG_FAST_DECL] -#define umsg_super_decl objc_global_trees[OCTI_UMSG_SUPER_DECL] -#define umsg_stret_decl objc_global_trees[OCTI_UMSG_STRET_DECL] -#define umsg_super_stret_decl objc_global_trees[OCTI_UMSG_SUPER_STRET_DECL] -#define objc_get_class_decl objc_global_trees[OCTI_GET_CLASS_DECL] -#define objc_get_meta_class_decl \ - objc_global_trees[OCTI_GET_MCLASS_DECL] - -#define objc_super_type objc_global_trees[OCTI_SUPER_TYPE] -#define objc_selector_type objc_global_trees[OCTI_SEL_TYPE] -#define objc_object_type objc_global_trees[OCTI_ID_TYPE] -#define objc_class_type objc_global_trees[OCTI_CLS_TYPE] -#define objc_instance_type objc_global_trees[OCTI_NST_TYPE] -#define objc_protocol_type objc_global_trees[OCTI_PROTO_TYPE] - -/* Type checking macros. */ - -#define IS_ID(TYPE) \ - (TREE_CODE (TYPE) == POINTER_TYPE \ - && (TYPE_MAIN_VARIANT (TREE_TYPE (TYPE)) \ - == TREE_TYPE (objc_object_type))) -#define IS_CLASS(TYPE) \ - (TREE_CODE (TYPE) == POINTER_TYPE \ - && (TYPE_MAIN_VARIANT (TREE_TYPE (TYPE)) \ - == TREE_TYPE (objc_class_type))) -#define IS_PROTOCOL_QUALIFIED_UNTYPED(TYPE) \ - ((IS_ID (TYPE) || IS_CLASS (TYPE)) \ - && TYPE_HAS_OBJC_INFO (TREE_TYPE (TYPE)) \ - && TYPE_OBJC_PROTOCOL_LIST (TREE_TYPE (TYPE))) -#define IS_SUPER(TYPE) \ - (TREE_CODE (TYPE) == POINTER_TYPE \ - && TREE_TYPE (TYPE) == objc_super_template) - -#define class_chain objc_global_trees[OCTI_CLS_CHAIN] -#define alias_chain objc_global_trees[OCTI_ALIAS_CHAIN] -#define interface_chain objc_global_trees[OCTI_INTF_CHAIN] -#define protocol_chain objc_global_trees[OCTI_PROTO_CHAIN] -#define implemented_classes objc_global_trees[OCTI_IMPL_CHAIN] - -/* Chains to manage selectors that are referenced and defined in the - module. */ - -#define cls_ref_chain objc_global_trees[OCTI_CLS_REF_CHAIN] /* Classes referenced. */ -#define sel_ref_chain objc_global_trees[OCTI_SEL_REF_CHAIN] /* Selectors referenced. */ -#define objc_ivar_chain objc_global_trees[OCTI_IVAR_CHAIN] - -/* Chains to manage uniquing of strings. */ - -#define class_names_chain objc_global_trees[OCTI_CLS_NAMES_CHAIN] -#define meth_var_names_chain objc_global_trees[OCTI_METH_VAR_NAMES_CHAIN] -#define meth_var_types_chain objc_global_trees[OCTI_METH_VAR_TYPES_CHAIN] - - -/* Backend data declarations. */ - -#define UOBJC_SYMBOLS_decl objc_global_trees[OCTI_SYMBOLS_DECL] -#define UOBJC_INSTANCE_VARIABLES_decl objc_global_trees[OCTI_NST_VAR_DECL] -#define UOBJC_CLASS_VARIABLES_decl objc_global_trees[OCTI_CLS_VAR_DECL] -#define UOBJC_INSTANCE_METHODS_decl objc_global_trees[OCTI_NST_METH_DECL] -#define UOBJC_CLASS_METHODS_decl objc_global_trees[OCTI_CLS_METH_DECL] -#define UOBJC_CLASS_decl objc_global_trees[OCTI_CLS_DECL] -#define UOBJC_METACLASS_decl objc_global_trees[OCTI_MCLS_DECL] -#define UOBJC_SELECTOR_TABLE_decl objc_global_trees[OCTI_SEL_TABLE_DECL] -#define UOBJC_MODULES_decl objc_global_trees[OCTI_MODULES_DECL] -#define GNU_INIT_decl objc_global_trees[OCTI_GNU_INIT_DECL] - -/* The following are used when compiling a class implementation. - implementation_template will normally be an interface, however if - none exists this will be equal to objc_implementation_context...it is - set in start_class. */ - -#define objc_interface_context objc_global_trees[OCTI_INTF_CTX] -#define objc_implementation_context objc_global_trees[OCTI_IMPL_CTX] -#define objc_method_context objc_global_trees[OCTI_METH_CTX] -#define objc_ivar_context objc_global_trees[OCTI_IVAR_CTX] - -#define implementation_template objc_global_trees[OCTI_IMPL_TEMPL] -#define objc_class_template objc_global_trees[OCTI_CLS_TEMPL] -#define objc_category_template objc_global_trees[OCTI_CAT_TEMPL] -#define uprivate_record objc_global_trees[OCTI_UPRIV_REC] -#define objc_protocol_template objc_global_trees[OCTI_PROTO_TEMPL] -#define objc_selector_template objc_global_trees[OCTI_SEL_TEMPL] -#define ucls_super_ref objc_global_trees[OCTI_UCLS_SUPER_REF] -#define uucls_super_ref objc_global_trees[OCTI_UUCLS_SUPER_REF] - -#define umsg_nonnil_decl objc_global_trees[OCTI_UMSG_NONNIL_DECL] -#define umsg_nonnil_stret_decl objc_global_trees[OCTI_UMSG_NONNIL_STRET_DECL] -#define objc_storage_class objc_global_trees[OCTI_STORAGE_CLS] -#define objc_exception_extract_decl \ - objc_global_trees[OCTI_EXCEPTION_EXTRACT_DECL] -#define objc_exception_try_enter_decl \ - objc_global_trees[OCTI_EXCEPTION_TRY_ENTER_DECL] -#define objc_exception_try_exit_decl \ - objc_global_trees[OCTI_EXCEPTION_TRY_EXIT_DECL] -#define objc_exception_match_decl \ - objc_global_trees[OCTI_EXCEPTION_MATCH_DECL] -#define objc_exception_throw_decl \ - objc_global_trees[OCTI_EXCEPTION_THROW_DECL] -#define objc_sync_enter_decl objc_global_trees[OCTI_SYNC_ENTER_DECL] -#define objc_sync_exit_decl objc_global_trees[OCTI_SYNC_EXIT_DECL] -#define objc_exception_data_template \ - objc_global_trees[OCTI_EXCDATA_TEMPL] -#define objc_setjmp_decl objc_global_trees[OCTI_SETJMP_DECL] -#define objc_stack_exception_data \ - objc_global_trees[OCTI_STACK_EXCEPTION_DATA_DECL] -#define objc_caught_exception objc_global_trees[OCTI_LOCAL_EXCEPTION_DECL] -#define objc_rethrow_exception objc_global_trees[OCTI_RETHROW_EXCEPTION_DECL] -#define objc_eval_once objc_global_trees[OCTI_EVAL_ONCE_DECL] -#define objc_catch_type objc_global_trees[OCTI_CATCH_TYPE] - -#define execclass_decl objc_global_trees[OCTI_EXECCLASS_DECL] - -#define objc_assign_ivar_decl objc_global_trees[OCTI_ASSIGN_IVAR_DECL] -#define objc_assign_ivar_fast_decl \ - objc_global_trees[OCTI_ASSIGN_IVAR_FAST_DECL] -#define objc_assign_global_decl objc_global_trees[OCTI_ASSIGN_GLOBAL_DECL] -#define objc_assign_strong_cast_decl \ - objc_global_trees[OCTI_ASSIGN_STRONGCAST_DECL] - -#define objc_method_template objc_global_trees[OCTI_METH_TEMPL] -#define objc_ivar_template objc_global_trees[OCTI_IVAR_TEMPL] -#define objc_method_list_ptr objc_global_trees[OCTI_METH_LIST_TEMPL] -#define objc_method_proto_list_ptr \ - objc_global_trees[OCTI_METH_PROTO_LIST_TEMPL] -#define objc_ivar_list_ptr objc_global_trees[OCTI_IVAR_LIST_TEMPL] -#define objc_symtab_template objc_global_trees[OCTI_SYMTAB_TEMPL] -#define objc_module_template objc_global_trees[OCTI_MODULE_TEMPL] -#define objc_super_template objc_global_trees[OCTI_SUPER_TEMPL] -#define objc_object_reference objc_global_trees[OCTI_OBJ_REF] -#define objc_class_reference objc_global_trees[OCTI_CLS_REF] -#define objc_method_prototype_template \ - objc_global_trees[OCTI_METH_PROTO_TEMPL] -#define function1_template objc_global_trees[OCTI_FUNCTION1_TEMPL] -#define function2_template objc_global_trees[OCTI_FUNCTION2_TEMPL] - -#define objc_object_id objc_global_trees[OCTI_OBJ_ID] -#define objc_class_id objc_global_trees[OCTI_CLS_ID] -#define objc_object_name objc_global_trees[OCTI_ID_NAME] -#define objc_class_name objc_global_trees[OCTI_CLASS_NAME] -#define constant_string_id objc_global_trees[OCTI_CNST_STR_ID] -#define constant_string_type objc_global_trees[OCTI_CNST_STR_TYPE] -#define constant_string_global_id \ - objc_global_trees[OCTI_CNST_STR_GLOB_ID] -#define string_class_decl objc_global_trees[OCTI_STRING_CLASS_DECL] -#define internal_const_str_type objc_global_trees[OCTI_INTERNAL_CNST_STR_TYPE] -#define UOBJC_SUPER_decl objc_global_trees[OCTI_SUPER_DECL] - -#endif /* GCC_OBJC_ACT_H */ diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c deleted file mode 100644 index b94f037c5478..000000000000 --- a/gcc/objc/objc-lang.c +++ /dev/null @@ -1,133 +0,0 @@ -/* Language-dependent hooks for Objective-C. - Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - Contributed by Ziemowit Laski - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -#include "config.h" -#include "system.h" -#include "coretypes.h" -#include "tm.h" -#include "tree.h" -#include "c-tree.h" -#include "c-common.h" -#include "ggc.h" -#include "objc-act.h" -#include "langhooks.h" -#include "langhooks-def.h" -#include "diagnostic.h" -#include "c-objc-common.h" - -enum c_language_kind c_language = clk_objc; -static void objc_init_ts (void); - -/* Lang hooks common to C and ObjC are declared in c-objc-common.h; - consequently, there should be very few hooks below. */ - -#undef LANG_HOOKS_NAME -#define LANG_HOOKS_NAME "GNU Objective-C" -#undef LANG_HOOKS_INIT -#define LANG_HOOKS_INIT objc_init -#undef LANG_HOOKS_DECL_PRINTABLE_NAME -#define LANG_HOOKS_DECL_PRINTABLE_NAME objc_printable_name -#undef LANG_HOOKS_GIMPLIFY_EXPR -#define LANG_HOOKS_GIMPLIFY_EXPR objc_gimplify_expr -#undef LANG_HOOKS_GET_CALLEE_FNDECL -#define LANG_HOOKS_GET_CALLEE_FNDECL objc_get_callee_fndecl -#undef LANG_HOOKS_INIT_TS -#define LANG_HOOKS_INIT_TS objc_init_ts - -/* Each front end provides its own lang hook initializer. */ -const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; - -/* Table indexed by tree code giving a string containing a character - classifying the tree code. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "c-common.def" - tcc_exceptional, -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "c-common.def" - 0, -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char * const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "c-common.def" - "@@dummy", -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Lang hook routines common to C and ObjC appear in c-objc-common.c; - there should be very few (if any) routines below. */ - -static void -objc_init_ts (void) -{ - tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_NON_COMMON] = 1; - tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_NON_COMMON] = 1; - tree_contains_struct[KEYWORD_DECL][TS_DECL_NON_COMMON] = 1; - - tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_WITH_VIS] = 1; - tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_WITH_VIS] = 1; - tree_contains_struct[KEYWORD_DECL][TS_DECL_WITH_VIS] = 1; - - tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_WRTL] = 1; - tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_WRTL] = 1; - tree_contains_struct[KEYWORD_DECL][TS_DECL_WRTL] = 1; - - tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_MINIMAL] = 1; - tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_MINIMAL] = 1; - tree_contains_struct[KEYWORD_DECL][TS_DECL_MINIMAL] = 1; - - tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_COMMON] = 1; - tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_COMMON] = 1; - tree_contains_struct[KEYWORD_DECL][TS_DECL_COMMON] = 1; -} - -void -finish_file (void) -{ - objc_finish_file (); -} - -#include "gtype-objc.h" diff --git a/gcc/objc/objc-tree.def b/gcc/objc/objc-tree.def deleted file mode 100644 index bf847aa0a968..000000000000 --- a/gcc/objc/objc-tree.def +++ /dev/null @@ -1,47 +0,0 @@ -/* This file contains the definitions and documentation for the - additional tree codes used in the Objective C front end (see tree.def - for the standard codes). - Copyright (C) 1990, 1997, 1998, 1999, 2000, 2001, 2003, 2004 - 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - - -/* Objective-C types. */ -DEFTREECODE (CLASS_INTERFACE_TYPE, "class_interface_type", tcc_type, 0) -DEFTREECODE (CLASS_IMPLEMENTATION_TYPE, "class_implementation_type", - tcc_type, 0) -DEFTREECODE (CATEGORY_INTERFACE_TYPE, "category_interface_type", tcc_type, 0) -DEFTREECODE (CATEGORY_IMPLEMENTATION_TYPE,"category_implementation_type", - tcc_type, 0) -DEFTREECODE (PROTOCOL_INTERFACE_TYPE, "protocol_interface_type", tcc_type, 0) - -/* Objective-C decls. */ -DEFTREECODE (KEYWORD_DECL, "keyword_decl", tcc_declaration, 0) -DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", tcc_declaration, 0) -DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", tcc_declaration, 0) - -/* Objective-C expressions. */ -DEFTREECODE (MESSAGE_SEND_EXPR, "message_send_expr", tcc_expression, 3) -DEFTREECODE (CLASS_REFERENCE_EXPR, "class_reference_expr", tcc_expression, 1) - -/* -Local variables: -mode:c -End: -*/ diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog deleted file mode 100644 index 839aa4f95bdc..000000000000 --- a/libobjc/ChangeLog +++ /dev/null @@ -1,1272 +0,0 @@ -2007-07-19 Release Manager - - * GCC 4.2.1 released. - -2007-05-13 Release Manager - - * GCC 4.2.0 released. - -2006-10-14 Geoffrey Keating - - * Makefile.in: Use multi_basedir instead of toplevel_srcdir. - * configure.ac: Use multi.m4 from aclocal rather than custom - code. Use multi_basedir instead of toplevel_srcdir. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2006-10-10 Brooks Moses - - * Makefile.in: Added empty "pdf" target. - -2006-07-18 Paolo Bonzini - - * configure: Regenerate. - -2006-05-23 Carlos O'Donell - - * Makefile.in: Add install-html target. Add install-html to .PHONY - -2006-02-21 Rainer Orth - - PR libobjc/26309 - * thr-objc.c (_XOPEN_SOURCE): Don't define on Tru64 UNIX. - -2006-01-24 David Ayers - - PR libobjc/9751 - * gc.c (class_ivar_set_gcinvisible): Replace strncpy with memcpy - and insure the new strings are '\0' termintated. - -2006-01-24 David Ayers - - PR libobjc/13946 - * configure.ac: Add include directives for --enable-objc-gc. - * Makefile.in: Ditto. - * configure: Regenerate. - - * gc.c (__objc_class_structure_encoding): Increment the used bytes - instead of the local pointer to them. - -2005-12-14 Andrew Pinski - - PR objc/25360 - * objc/objc-api.c (_C_COMPLEX): New define. - * encoding.c (objc_sizeof_type): Handle _C_Complex. - (objc_alignof_type): Likewise. - (objc_skip_typespec): Likewise. - -2005-12-15 David Ayers - - PR libobjc/14382 - * README (+load,+initialize): Fix documentation to reflect - intended and implemented semantics for +load and +initialize. - -2005-12-12 Andrew Pinski - - * encoding.c (TYPE_FIELDS): Fix to skip over just _C_STRUCT_B and - the name. - (get_inner_array_type): Fix to skip over _C_ARY_B and size. - (rs6000_special_round_type_align): Update for the ABI fix. - (objc_layout_finish_structure): Correct the encoding which is passed to - ROUND_TYPE_ALIGN. - -2005-12-11 Andrew Pinski - - PR libobjc/25347 - * encoding.c (objc_sizeof_type): Don't handle _C_UNION_B special - but use the struct layout functions. - (objc_alignof_type): Likewise. - (objc_layout_structure): Handle _C_UNION_B also. - (objc_layout_structure_next_member): Likewise. - (objc_layout_finish_structure): Likewise. - -2005-12-11 Andrew Pinski - - PR libobjc/25346 - * objc/objc-api.h (_C_BOOL): New define. - * encoding.c (objc_sizeof_type): Handle _C_BOOL. - (objc_alignof_type): Likewise. - (objc_skip_typespec): Likewise. - -2005-11-20 David Ayers - - PR libobjc/19024 - * objc/hash.h: Remove deprecated hash API. - * hash_compat.c: Remove. - * Makefile.in: Remove reference to hash_compat.c. - - * configure.ac (VERSION): Bump library version to 2:0:0. - * configure: Regenerate. - -2005-11-09 Alexandre Oliva - - PR other/4372 - * thr-objc.c (_XOPEN_SOURCE): Define. - -2005-10-07 Ulrich Weigand - - PR libobjc/23612 - * objc/objc-api.h (struct objc_ivar): Move definition to - global scope. - -2005-09-04 Andrew Pinski - Rasmus Hahn - - PR libobjc/23108 - * archive.c (objc_write_type): Correct the element offset. - (objc_read_type): Likewise. - -2005-08-17 Kelley Cook - - * All files: Update FSF address. - -2005-08-13 Marcin Koziej - Andrew Pinski - - PR libobjc/22492 - * exception.c (PERSONALITY_FUNCTION): Fix the PC with finally. - -2005-08-13 Andrew Pinski - - * Makefile.in (extra_ldflags_libobjc): New. - (libobjc$(libext).la): Add extra_ldflags_libobjc to the link line. - (libobjc_gc$(libext).la): Likewise. - * configure.ac (extra_ldflags_libgfortran): Set for *-darwin* to - "-Wl,-single_module". - * configure: Regenerate. - * linking.m (_objcInit): Remove. - -2005-07-26 Andrew Pinski - - PR libobjc/22606 - * Makefile.in (ALL_CFLAGS): Add -fexceptions. - -2005-06-08 David Ayers - - * objc/NXConstStr.h, objc/Object.h, objc/Protocol.h, - objc/encoding.h, objc/hash.h, objc/objc-api.h, - objc/runtime.h, objc/sarray.h, objc/thr.h, - objc/typedstream.h: Do not include Objective-C headers as - system headers. - -2005-06-07 David Ayers - - * archive.c, init.c, selector.c: Include hash.h. - * archive.c, class.c, encoding.c, gc.c, hash.c, hash_compat.c, - init.c, misc.c, nil_method.c, objects.c, sarray.c, selector.c, - sendmsg.c, thr-dce.c, thr-decosf1.c, thr-irix.c, thr-mach.c, - thr-objc.c, thr-os2.c, thr-posix.c, thr-pthreads.c, thr-rtems.c, - thr-single.c, thr-solaris.c, thr-vxworks.c, thr-win32.c, thr.c: - Include Objective-C headers with quotes and objc/ directory - prefix. - -2005-05-19 Richard Henderson - - * exception.c: Revert last change. - -2005-05-19 David Ayers - - * exception.c: Include tsystem.h for unwind.h. - -2005-05-09 Mike Stump - - * configure: Regenerate. - -2005-04-12 Mike Stump - - * configure: Regenerate. - -2005-03-21 Zack Weinberg - - * Makefile.in: Set gcc_version here. - * configure.ac: Do not invoke TL_AC_GCC_VERSION. Adjust quoting - in definition of toolexeclibdir so that $(gcc_version) is expanded - by the Makefile. - * aclocal.m4, configure: Regenerate. - -2005-03-03 David Ayers - - * objc/hash.h (OBJC_IGNORE_DEPRECATED_API): Update deprecated - version reference. Correct typo. - -2005-03-02 David Ayers - - PR libobjc/19024 - * Makefile.in (OBJS): Add hash_compat.lo. - (OBJS_GC): Add hash_compat_gc.lo. - (hash_compat_gc.lo): New target and rule. - * objc/hash.h (hash_new, hash_delete, hash_add, hash_remove) - (hash_next, hash_value_for_key, hash_is_key_in_hash) - (hash_ptr, hash_string, compare_ptrs, compare_strings): Prefix - with objc_. Add deprecated non prefixed inlined versions. - (OBJC_IGNORE_DEPRECATED_API): New macro to hide deprecated - declarations. - * hash.c (hash_new, hash_delete, hash_add, hash_remove, hash_next) - (hash_value_for_key, hash_is_key_in_hash): Prefix with objc_ and - update callers. - * hash_compat.c: New file. - * archive.c: Update callers. - * init.c: Likewise. - * selector.c: Likewise. - * libobjc.def: Add objc_ versions of hash functions. - -2005-02-28 Andrew Pinski - - PR libobjc/20252 - * Makefile.in (GTHREAD_FLAGS): Remove. - (ALL_CFLAGS): Remove usage of GTHREAD_FLAGS. - * thr-objc.c: Include config.h. - * configure.ac: Instead of looking at GCC's makefile, figure out if - GTHREAD_FLAGS should be defined by looking at the `thread model' - of the current gcc. - * configure: Regenerate. - * config.h.in: Regenerate. - -2005-02-28 Paolo Bonzini - - PR bootstrap/17383 - * configure.ac: Call GCC_TOPLEV_SUBDIRS. - (Determine CFLAGS for gthread): Use $host_subdir. - * configure: Regenerate. - * Makefile.in (host_subdir): New. - (INCLUDES): Use it. - -2004-12-20 Andrew Pinski - - PR libobjc/12035 - * gc.c: Remove definition of LOGWL, modWORDSZ, and divWORDSZ since - they are not used. - Include limits.h and stdlib.h. - Define BITS_PER_WORD. - -2004-12-12 Alexander Malmberg - - * selector.c (__objc_init_selector_tables): Add missing void to - definition. - -2004-12-02 Richard Sandiford - - * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. - * configure, aclocal.m4: Regenerate. - -2004-11-29 Kelley Cook - - * configure: Regenerate for libtool change. - -2004-11-25 Kelley Cook - - * configure: Regenerate for libtool reversion. - -2004-11-24 Kelley Cook - - * configure: Regenerate for libtool change. - -2004-11-24 Kelley Cook - - * aclocal.m4, config.h.in: Regenerate. - -2004-10-08 Mike Stump - Andrew Pinski - - * aclocal.m4: Rename to ... - * acinclude.m4: here and also use m4_include instead of sinclude. - * aclocal.m4: Regenerate. - * configure: Regenerate. - * configure.ac: Add AM_MAINTAINER_MODE and AM_PROG_CC_C_O. - * Makefile.in (configure): Add @MAINT@ infront of configure.ac - -2004-10-08 Andrew Pinski - - * archive.c: Fix all the warnings about passing unsigned char* - to char* and the other way too. - -2004-09-16 Andrew Pinski - - PR libobjc/16448 - * exception.c: Include config.h - (objc_exception_throw): Change _GLIBCXX_SJLJ_EXCEPTIONS to - SJLJ_EXCEPTIONS. - * configure.ac: Find out what exception handling code we use. - * configure: Regenerate. - * config.h.in: New file, regenerate. - -2004-09-16 Andrew Pinski - - * encoding.c (ALTIVEC_VECTOR_MODE): Define a bogus macro. - -2004-08-28 Nathanael Nerode - - * configure.ac: Switch from _GCC_TOPLEV_NONCANONICAL_TARGET to - ACX_NONCANONICAL_TARGET. - * configure: Regenerate. - -2004-08-13 Ziemowit Laski - - * objc/sarray.h: Hoist include of assert.h near the top of file, - and mark the remainder of the file 'extern "C"'. - -2004-08-13 Andrew Pinski - - * objc/Object.h: Move includes out of extern "C" blocks. - * objc/encoding.h: Likewise. - * objc/hash.h: Likewise. - * objc/objc-api.h: Likewise. - * objc/runtime.h: Likewise. - * objc/sarray.h: Likewise. - * objc/typedstream.h: Likewise. - -2004-08-12 Ziemowit Laski - - * objc/NXConstStr.h: Update copyright date; bracket with - 'extern "C"' for C++ use; make include syntax consistent - by using <...> instead of "..."; hoist includes - above the 'extern "C"' block. - * objc/Object.h: Likewise. - * objc/Protocol.h: Likewise. - * objc/encoding.h: Likewise. - * objc/hash.h: Likewise. - * objc/runtime.h: Likewise. - * objc/sarray.h: Likewise. - * objc/thr.h: Likewise. - * objc/typedstream.h: Likewise. - * objc/objc-api.h: Add 'extern "C"' block for C++ use. - (objc_static_instances): For C++ case, do away with - zero-sized array. - (objc_method): Hoist definition to file scope. - (_objc_load_callback, _objc_object_alloc, class_get_class_method, - class_get_instance_method, class_create_instance, - class_get_class_name, class_get_instance_size, - class_get_meta_class, class_get_super_class, class_get_version, - class_is_class, class_is_meta_class, class_set_version, - class_get_gc_object_type, class_ivar_set_gcinvisible, - get_imp): Rename 'class' parameter to '_class'. - * objc/objc-list.h: Add 'extern "C"' block for C++ use. - * objc/objc.h: Update copyright date. - (arglist_t): Provide a union tag. - -2004-07-22 Andrew Pinski - - * thr.c (__objc_thread_detach_function): Do not mark as volatile - but instead use the attribute noreturn. - -2004-06-28 Zack Weinberg - - * encoding.c: Rename target_flags with a #define to avoid - conflict with a prior declaration. - -2004-06-24 Andrew Pinski - - * objc/encoding.h: Wrap the functions with extern "C" for C++ - mode. - * objc/hash.h: Likewise. - * objc/objc-api.h: Likewise. - * objc/objc-list.h: Likewise. - * objc/runtime.h: Likewise. - * objc/sarray.h: Likewise. - * objc/thr.h: Likewise. - * objc/typedstream.h: Likewise. - - -2004-06-21 Nick Clifton - - * encoding.c (BITS_PER_UNIT): Define if a definition is not - provided. - -2004-06-20 Alexander Malmberg - - * Makefile.in (exception.lo): Remove $(OBJC_GCFLAGS). - (exception_gc.lo): New. - (OBJS_GC): Add exception_gc.lo. - -2004-06-17 Richard Henderson - - * exception.c: New file. - * Makefile.in (exception.lo): New. - (OBJS): Add it. - -2004-06-14 Andrew Pinski - - * linking.m (_objcInit): New empty function - for Darwin only. - -2004-06-11 Andrew Pinski - - * configure.ac: Support --enable-shared=libobjc. - * configure: Regenerate. - - PR libobjc/15901 - * configure.ac: Do not disable shared by default. - * configure: Regenerate. - -2004-06-03 Nicola Pero - - * Protocol.m ([-isEqual:]): Small optimizations returning - immediately if the argument is equal to self, and accessing - the argument's name directly if it's a protocol. - -2004-06-03 David Ayers - - * Protocol.m ([-isEqual:]): Test the class of the argument. - -2004-05-25 Andrew Pinski - - * configure.ac (includedir): Rename to ... - (includedirname). - * Makefile.in: s/includedir/includedirname/. - - PR target/11572 - * configure.ac (includedir): Set to "include" - except for Darwin. - (libext) Set to empty except for Darwin. - * configure: Regenerate - * Makefile.in: s/libobjc.la/libobjc$(libext).la/g. - s/include/$(includedir)/g. - -2004-05-25 Daniel Jacobowitz - - * Makefile.in: Add .NOEXPORT. - -2004-05-25 Andrew Pinski - - Merge from the libobjc-branch - 2004-02-09 Andrew Pinski - - * Makefile.in (OBJC_H): Change objc-deps.h to objc-decls.h. - - 2004-02-03 Andrew Pinski - - * Makefile.in (OBJC_H): Add objc-deps.h. - - 2004-01-27 Nicola Pero - - * Protocol.m ([-conformsTo:]): If the argument is nil, return NO. - ([-hash], [-isEqual:]): New methods. - - 2004-01-27 Richard Frith-Macdonald - - * sarray.c (sarray_free): Add a better comment. - - 2004-01-27 Adam Fedor - - * hash.c (hash_add): Cast cachep to int. - * selector.c (__sel_register_typed_name): Cast - soffset_decode to int. - - 2004-01-27 Alexander Malmberg - - * selector.c: Rename register_selectors_from_list to - __objc_register_selectors_from_list. Update caller. - (__objc_register_selectors_from_list): Lock __objc_runtime_mutex - while registering selectors. Use __sel_register_typed_name instead - of sel_register_typed_name. Check for NULL method_name:s. - (pool_alloc_selector): New function. - (__sel_register_typed_name): Use pool_alloc_selector to allocate - selector structures. - * sendmsg.c (class_add_method_list): Use - __objc_register_selectors_from_list. - * objc/runtime.h: Add __objc_register_selectors_from_list. - - 2004-01-25 Adam Fedor - Nicola Pero - Andrew Pinski - - * objc/objc-decls.h: New file. - * objc/objc-api.h (_objc_lookup_class): Mark as export. - (_objc_load_callback): Likewise. - (_objc_object_alloc): Likewise. - (_objc_object_copy): Likewise. - (_objc_object_dispose): Likewise. - - 2004-01-25 Andrew Pinski - - * archive.c: s/__inline__/inline - * sendmsg.c: Likewise. - - * encoding.c: Remove FIXME about the warning - about unused variable. - * sendmsg.c: Add a FIXME comment saying that - this should be using libffi. - - * Makefile.in (LIBTOOL): Use @LIBTOOL@ now as it works. - - -2004-05-13 Andrew Pinski - - * archive.c (objc_read_class): Initialize class_name. - (objc_read_selector): Initialize selector_name. - -2004-05-09 Richard Sandiford - - * Makefile.in (toolexecdir): Remove trailing space. - -2004-04-15 Nathanael Nerode - - PR libobjc/14948 - * configure.ac: De-precious CC so multilibs work. - * configure: Regenerate. - -2004-04-14 Nathanael Nerode - - * configure.ac: Restore toolexecdir. - * Makefile.in: Restore toolexecdir. - * configure: Regenerate. - -2004-04-09 Nathanael Nerode - - * configure.ac: Remove (unused) glibcpp_prefixdir. - * configure: Regenerate. - - * configure.in: Rename to configure.ac. - * Makefile.in: Update to match. - - * Makefile.in: Remove toolexecdir, glibcpp_toolexecdir (unused). - Replace glibcpp_toolexeclibdir with toolexeclibdir. - * configure.in: Remove glibcpp_toolexecdir (unused). - Replace glibcpp_toolexeclibdir with toolexeclibdir. Don't generate - config.h or stamp-h (unused). Move one comment to the right place. - * configure: Regenerate. - * config.h.in: Remove (unused). - - * config.h.in: Regenerate with autoheader. - - * Makefile.in: Remove (unused) gcc_version_trigger. - * configure.in: Remove (unused) glibcpp_builddir. Don't AC_SUBST - gcc_version_trigger. - * configure: Regenerate. - - * configure.in: Switch to modern style for AC_INIT, AC_OUTPUT. - Sort file into sections. Remove dnl where appropriate. Fix - other style issues. - * configure: Regenerate. - - * configure.in: Replace old AC_PROG_CC hack with new one. - Define toplevel_srcdir in terms of srcdir, not top_srcdir (there - are no subdirectory output files, so this is fine). Change prereq - to autoconf 2.59. - * aclocal.m4: Include ../config/no-executables.m4. - * configure: Regenerate with autoconf 2.59. - - * configure.in: Improve comments on gthread_cflags. Improve m4 - quotation, and replace 'if test' with 'case', for --enable-objc-gc. - * configure: Regenerate. - - * configure.in: Move PACKAGE and VERSION settings up top. Remove - unused call to AC_PROG_LN_S. Default RANLIB to ':'. Remove - redundant checks for values of RANLIB, AR, INSTALL. - * configure: Regenerate. - - * configure.in: Clean up handling of - --enable-version-specific-runtime-libs and related variables; - replace 'if test' with 'case' where reasonable. Fix comments. - Remove useless libstdcxx_interface. - * configure: Regenerate. - - * configure.in: Use _GCC_TOPLEV_NONCANONICAL_TARGET. - Replace uses of target_alias with target_noncanonical. - * aclocal.m4: Include ../config/acx.m4. - * configure: Regenerate. - * Makefile.in: Replace uses of target_alias with target_noncanonical. - Fix copyright statement. - - * configure.in: Hand-inline bulky, confusing macros from - aclocal.m4. Replace references to "GNU Objective C" with "GCC". - Update copyright notice. Remove stuff for automake, which isn't - used in this directory. Remove emacs local variables. - * aclocal.m4: Remove hand-inlined macros. Update copyright notice. - * configure: Regenerate. - -2004-03-16 Manfred Hollstein - - * Makefile.in, configure.in, configure: Update copyright years. - -2004-03-15 Manfred Hollstein - - * Makefile.in (LIBOBJC_VERSION, LIBOBJC_GC_VERSION): Use - definition from configure.in. - * configure.in (PACKAGE): Add definition. - (VERSION): Add definition; substitute it in output files. - * configure: Re-generate. - -2004-03-05 Ziemowit Laski - - * objc/hash.h (hash_string, compare_strings): - Add type-casts to make Objective-C++ happy. - * objc/typedstream.h (objc_get_stream_class_version): - Rename parameter from 'class' to 'class_name' to make - Objective-C++ happy. - -2004-03-01 Michael Matz - - * Makefile.in (ALL_CFLAGS): Add -fno-strict-aliasing. - -2004-02-06 Ziemowit Laski - - * objc/objc-api.h (objc_super): The 'class' field shall - be named 'super_class' #ifdef __cplusplus. - -2004-01-17 Andrew Pinski - - PR target/10781 - * encoding.c (rs6000_special_round_type_align): Define. - -2004-01-14 Adam Fedor - - PR libobjc/12155 - * selector.c (__objc_register_instance_methods_to_class): Free - new_list if not used. - -2004-01-09 Andrew Ruder - - PR libobjc/11904 - * sarray.c (sarray_free): Free array->is_copy_of latter. - -2003-12-01 Zack Weinberg - - PR 11433 - * Protocol.m (descriptionForInstanceMethod): Don't dereference - instance_methods if it's NULL. - (descriptionForClassMethod): Likewise for class_methods. - -2003-10-24 Rainer Orth - - * Makefile.in (runtime-info.h): Remove -Wp. - -2003-10-21 Rainer Orth - - * Makefile.in (CC1OBJ): Remove. - (runtime-info.h): Invoke $(CC) so all MULTIFLAGS are handled - correctly. - Use .m extension for temporary file. - Remove assembler temp file. - -2003-10-20 Joseph S. Myers - - * objc/hash.h (hash_string): Don't use a cast as an lvalue. - -2003-10-17 Rainer Orth - - * Makefile.in (runtime-info.h): Use MULTIFLAGS. - -2003-09-09 Alan Modra - - * configure: Regenerate. - -2003-08-27 Alexander Malmberg - - * Makefile.in, aclocal.m4: Update to $(libdir)/gcc/ instead of - (libdir)/gcc-lib/ when installing. - * configure: Regenerate. - -Thu Jul 10 10:27:43 2003 Nicola Pero - - libobjc/9969 - * sendmsg.c (get_imp): Fixed rare threading problem. - (__objc_responds_to): Similar fixes. - (objc_msg_lookup): Similar fixes. - (__objc_init_install_dtable): Lock the runtime before checking if the - table is installed. - -2003-05-23 Nathanael Nerode - - * hash.c, init.c, libobjc.def, libobjc_entry.c, linking.m, - makefile.dos, misc.c, nil_method.c, objects.c, sarray.c, - selector.c, sendmsg.c, thr-dce.c, thr-decosf1.c, thr-irix.c, - thr-mach.c, thr-objc.c, thr-os2.c, thr-posix.c, thr-pthreads.c, - thr-rtems.c, thr-single.c, thr-solaris.c, thr-vxworks.c, - thr-win32.c, thr.c: Replace "GNU CC" with "GCC". - * Makefile.in, NXConstStr.m, Object.m, Protocol.m, archive.c, - class.c, encoding.c, gc.c, objc/NXConstStr.h, objc/Object.h, - objc/Protocol.h, objc/encoding.h, objc/hash.h, objc/objc-api.h, - objc/objc-list.h, objc/objc.h, ocjc/runtime.h, objc/sarray.h, - objc/thr.h, objc/typedstream.h: Replace "GNU CC" with "GCC". - -Tue May 13 14:56:03 2003 Richard Frith-Macdonald - Nicola Pero - - libobjc/10742 - * init.c (class_superclass_of_class): New function. - (create_tree_of_subclasses_inherited_from): Use it. - (__objc_tree_insert_class): Likewise. - (class_is_subclass_of_class): Likewise. - -2003-04-11 David Chad - Loren J. Rittle - - libobjc/8562 - * objc/hash.h (hash_string): Constify correctly. - (compare_ptrs): Use direct compare. - * objc/objc-list.h (list_nth): Rename index to indx to avoid shadow. - * objc/sarray.h: Global rename index to indx to avoid shadow. - -2003-03-12 Andreas Schwab - - * aclocal.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Avoid trailing /. in - glibcpp_toolexeclibdir. - * configure: Rebuilt. - -2003-02-20 Alexandre Oliva - - * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to - config.status. - * configure: Rebuilt. - -2003-01-27 Alexandre Oliva - - * aclocal.m4 (glibcpp_toolexeclibdir): Instead of - $(MULTISUBDIR), use `$CC -print-multi-os-directory`, unless - version_specific_libs is enabled. - * configure: Rebuilt. - -2003-01-09 Christian Cornelssen - - * Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR. - (install-libs, install-headers): Prepend $(DESTDIR) to - destination paths in all (un)installation commands. - -2002-12-02 Zack Weinberg - - * thr-objc.c: Include coretypes.h and tm.h. - -2002-12-01 Zack Weinberg - - * encoding.c, sendmsg.c: Include coretypes.h and tm.h. - -2002-11-26 Nathanael Nerode - - * configure.in: Remove skip-this-dir support. - * configure: Regenerate. - -2002-09-22 Kaveh R. Ghazi - - * Makefile.in (all): Fix multilib parallel build. - -Thu Sep 12 12:44:37 2002 Nicola Pero - - * sendmsg.c (nil_method): Declare not to take a variable number of - args. - (objc_msg_lookup): Cast nil_method to IMP before returning it. - (objc_msg_lookup_super): The same. - -2002-09-10 Jan Hubicka - - * nil_method.c (nil_method): No longer defined with variable - arguments. - -2002-07-02 Rodney Brown - - * objc/encoding.h: Fix formatting. - * objc/hash.h: Likewise. - * objc/objc-api.h: Likewise. - * objc/runtime.h: Likewise. - * objc/thr.h: Likewise. - * archive.c: Likewise. - * class.c: Likewise. - * encoding.c: Likewise. - * gc.c: Likewise. - * hash.c: Likewise. - * init.c: Likewise. - * misc.c: Likewise. - * nil_method.c: Likewise. - * objects.c: Likewise. - * sarray.c: Likewise. - * selector.c: Likewise. - * sendmsg.c: Likewise. - * thr-mach.c: Likewise. - * thr.c: Likewise. - -2002-06-25 DJ Delorie - - * aclocal.m4 (GLIBCPP_CONFIGURE): Split out - GLIBCPP_TOPREL_CONFIGURE. - * configure.in: Call it before AC_CANONICAL_SYSTEM. - * configure: Regenerate. - -2002-06-21 Kaveh R. Ghazi - - * Object.m (forward, read, write): Fix unused parameter warnings. - * encoding.c: Include . - (target_flags): Mark with attribute unused. - (atoi): Delete. - * runtime.h (__objc_selector_max_index): Change to unsigned int. - (__objc_generate_gc_type_description): Prototype. - * selector.c (__objc_selector_max_index): Change to unsigned int. - -Mon Jun 17 18:37:42 2002 Nicola Pero - - * sendmsg.c (__objc_get_forward_imp): Fix warning by making sure - we always have a return value: if __objc_msg_forward does not - supply a forwarding implementation, return the default - __builtin_apply based one. - -2002-06-15 Kaveh R. Ghazi - - * Object.m: Fix signed/unsigned warning. - * Protocol.m: Likewise. - * archive.c: Always include stdlib.h. - (objc_read_short, objc_read_unsigned_short, objc_read_int, - objc_read_long, __objc_read_nbyte_uint, __objc_read_nbyte_ulong): - Fix signed/unsigned warning. - (objc_write_type, objc_read_type, objc_write_types, - objc_read_types): Ensure ctype 8-bit safety. - (__objc_no_write, __objc_no_read): Mark unused parameters. - * class.c (class_table_setup): Specify void arg. - * encoding.c (atoi, objc_sizeof_type, objc_alignof_type, - objc_skip_typespec, objc_skip_offset, - objc_layout_structure_next_member): Ensure ctype 8-bit safety. - (objc_layout_structure_next_member): Ensure variables are - initialized. - * gc.c (__objc_generate_gc_type_description, - class_ivar_set_gcinvisible): Mark unused parameters. - * init.c (__objc_send_load, __objc_destroy_class_tree_node): Mark - unused parameters. - (__objc_init_protocols) Fix signed/unsigned warning. - * nil_method.c (nil_method): Mark unused parameters. - * thr.h (objc_thread_callback): Specify void arg. - * sarray.c (sarray_new, sarray_realloc, sarray_free): Fix - signed/unsigned warning. - (sarray_free): Fix formatting. - * selector.c (sel_types_match): Ensure ctype 8-bit safety. - * sendmsg.c (__objc_init_install_dtable) Mark unused parameters. - -2002-06-09 Andreas Jaeger - - * encoding.c (objc_layout_structure_next_member): Remove unused - variable. - -2002-05-20 Kaveh R. Ghazi - - * Makefile.in (SHELL): Set to @SHELL@. - (WARN_CFLAGS): New. - (ALL_CFLAGS): Add $(WARN_CFLAGS). - -2002-05-16 Rainer Orth - - * aclocal.m4: Allow for PWDCMD to override hardcoded pwd. - * configure: Regenerate. - -2002-05-08 Alexandre Oliva - - * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at - script entry, and set LD to it when configuring multilibs. - * configure: Rebuilt. - -2002-04-19 David O'Brien - - * encoding.c (MAX, MIN, ROUNDING): #undef before defining. - -2002-04-09 Hans-Peter Nilsson - - PR objc/6107 - * objc/objc-api.h (struct objc_protocol_list): Change type of - member count from int to size_t. - -2002-02-11 Franz Sirl - - PR libobjc/4039 - * aclocal.m4: Replace with version copied from libstdc++-v3. - * configure.in: Update for changes to aclocal and Makefile. - * configure: Regenerate. - * Makefile.in: Correct install of multilibs and shared libs, use - INSTALL_DATA for include files. - -Mon Dec 17 17:02:12 2001 Nicola Pero - - * init.c (__objc_exec_class): Fixed bug in the loop on unclaimed - categories - when an unclaimed category was found, the loop was - doing two steps forward instead of one, so that in certain cases - it was failing to properly load all the categories. (Reported - with fix by Alexander Malmberg ). - -2001-11-14 Aldy Hernandez - - * encoding.c: Add target_flags. - -2001-11-07 Aldy Hernandez - - * objc/objc-api.h (_C_VECTOR): New. - - * encoding.c (VECTOR_TYPE): New. - -Mon Oct 29 21:29:21 2001 Nicola Pero - - * class.c: Rewritten the class table to use optimized, lock-free - lookup. This more than doubles the speed of class method - invocations. (class_table_setup), (class_table_insert), - (class_table_replace), (class_table_get_safe), - (class_table_next), (class_table_print), - (class_table_print_histogram): New functions. - (__objc_init_class_tables): Use class_table_setup. - (__objc_add_class_to_hash): Use class_table_get_safe and - class_table_insert. (objc_lookup_class), (objc_get_class): Do not - assert the existence of the table; do not lock the runtime; use - class_table_get_safe. (objc_next_class): Use class_table_next. - (__objc_resolve_class_links): Use class_table_next. - (class_pose_as): Use class_table_replace. - -2001-09-10 Ovidiu Predescu - - * gc.c: Removed the DEBUG declaration. - -Wed Jul 18 12:48:56 2001 Nicola Pero - - * thr.c (objc_mutex_lock): Invoke __objc_thread_id directly, - rather than through objc_thread_id, to save a function call. - (objc_mutex_trylock, objc_mutex_unlock, objc_condition_wait): - Ditto. - -Mon Jul 16 12:15:00 2001 Nicola Pero - - * objc/objc-api.h (object_is_class): Fixed - buggy code was trying - to cast an id to a Class, which can not be done. Make the check - by using CLS_ISMETA on the class pointer instead. - (object_is_meta_class): Similar fix. - -2001-06-09 Alexandre Oliva , Stephen L Moshier - - * configure.in (AC_EXEEXT): Work around in case it expands to - nothing, as in autoconf 2.50. - * acinclude.m4: Likewise. - * configure: Rebuilt. - -2001-06-08 Nicola Pero - - * THREADS: Explain that when we compile libobjc inside GCC, we - always use thr-objc.c as a backend, which uses GCC's thread code. - -2001-06-06 Richard Frith-Macdonald - - * init.c (__objc_send_message_in_list): When setting a new entry - in __objc_load_methods use the method IMP as key, but check to see - if the method is in the hashtable by looking at the IMP also. - Also ... call the method after adding it to the hashtable rather - than before ... thus preventing an obscure possibility of infinite - recursion if a +load method itself loads a subclass. - -2001-05-25 Ovidiu Predescu - - * init.c (__objc_send_message_in_list): When setting a new entry - in __objc_load_methods use the method name as key, not the method - IMP (reported by Richard Frith-Macdonald ). - -2001-05-09 Joseph S. Myers - - * objc-features.texi: Move to ../gcc/objc.texi. - * fdl.texi: Remove. - * Makefile.in: Don't generate documentation from - objc-features.texi. - -2001-05-01 Mark Mitchell - - * fdl.texi: New file. - * objc-features.texi: Simplify. - * Makefile.in: Adjust accordingly. - -2001-04-30 Mark Mitchell - - * objc-features.texi: Use the GFDL. - -Wed Mar 21 04:44:58 EST 2001 John Wehle (john@feith.com) - - * encoding.c (REAL_TYPE): Define. - -2001-03-19 David Edelsohn - - * encoding.c (TYPE_MODE): Define. - -2001-03-14 Nicola Pero - - * thr.c (objc_thread_add): New function. - (objc_thread_remove): Ditto. - * objc/thr.h: Declare them. - * libobjc.def: Mention them. - -2001-02-28 Ovidiu Predescu - - * objc-features.texi: Document the @compatibility_alias compiler - directive (description from Nicola Pero ). - -Fri Feb 23 18:12:00 2001 Rainer Orth - - * sendmsg.c (__objc_forward): Delete strlen() declaration. - -2001-02-08 Geoffrey Keating - - * configure.in: Don't run AC_PROG_CC_WORKS or AC_EXEEXT, because - we're not interested in the result and they might fail. - * configure: Regenerated. - -2001-01-12 Joseph S. Myers - - * objc-features.texi: Use @email. - -2001-01-12 Joseph S. Myers - - * sendmsg.c (__objc_print_dtable_stats): Don't use #ifdef inside - printf. - -2000-01-11 Richard Earnshaw - - * encoding.c (STRUCTURE_SIZE_BOUNDARY): Redefine in a way that - determines the value dynamically. - -Wed Jan 3 00:49:10 2001 Ovidiu Predescu - - * sendmsg.c: Added __objc_msg_forward, a hook that allows external - libraries to provide a function that returns the real forwarding - function. This can alleviate problems __builtin_apply() and - friends have on various platforms. (Solution suggested by Helge - Hess.) - - * objc/objc-api.h: Define __objc_msg_forward. - - * sendmsg.c: Define gen_rtx_REG. - -2000-12-06 Ralf Corsepius - - * thr-rtems.c: New file. Stub to compile. - -2000-09-06 Alexandre Oliva - - * configure: Rebuilt with new libtool.m4. - -Tue Aug 15 00:38:56 2000 Ovidiu Predescu - - * configure.in: Create a config.h file. Check for . - * configure: Regenerate. - - * config.h.in: Check for . - -2000-08-14 Zack Weinberg - - * configure: Regenerate after change to ../libtool.m4. - -2000-08-14 Andreas Schwab - - * objc-features.texi (Top): Move @menu at end of node. - -2000-08-11 Manfred Hollstein - - * objc-features.texi: Move @node Top before @menu. - -Sun Aug 6 23:27:49 2000 Ovidiu Predescu - - * objc-features.texi: Documented the new -fconstant-string-class - option. - -Sun Aug 6 22:51:16 2000 Ovidiu Predescu - - * thr-posix.c: Integrated Chris Ball's changes to - improve the Posix thread support for Objective-C. - -2000-08-04 Zack Weinberg - - * aclocal.m4: Replace copy of ../libtool.m4 with - sinclude(../libtool.m4). - -Fri Jul 28 08:58:02 2000 Nicola Pero - - * configure.in: Added libtool support; build shared libraries - if --enable-shared was passed on command line. - * Makefile.in: Modified most compilation commands to use libtool. - * aclocal.m4: New symbolic link to the ../libtool.m4, from the - libtool distribution. - -Sat Jul 29 00:10:21 2000 Ovidiu Predescu - - * sarray.c, Object.m: Removed the explicit prototypes for strlen - and memcpy on 64-bit platforms (Suggested by Rodney Brown - ). - -2000-05-12 H.J. Lu (hjl@gnu.org) - - * Makefile.in (GTHREAD_FLAGS): New. - (ALL_CFLAGS): Add $(GTHREAD_FLAGS). - (OBJC_THREAD_FILE): Changed to thr-objc. - - * configure.in (GTHREAD_FLAGS): New, check and replace it for - Makefile. - (OBJC_THREAD_FILE): Removed. - - * thr-objc.c: New. - -2000-07-13 Kaveh R. Ghazi - - * objc/hash.h: Include string.h. - -2000-04-15 David Edelsohn - - * Object.m (strlen): 64-bit PowerPC is a 64bit platform as well. - -2000-04-12 Jakub Jelinek - - * Object.m (strlen): Provide prototype on all 64bit platforms, - not only alpha. - * sarray.c (memcpy): Likewise. - * encoding.c (objc_layout_finish_structure): Don't use - ROUND_TYPE_ALIGN on sparc. - - * encoding.c (objc_layout_structure_next_member): Do the whole - procedure even for the first member, so that we get correct - alignment. - -2000-03-29 Zack Weinberg - - * objc/Protocol.h, objc/objc-list.h: Change #endif labels to - comments. - -2000-02-23 Zack Weinberg - - * Makefile.in: Add -DIN_TARGET_LIBS to ALL_CFLAGS. - -Thu Sep 23 07:19:12 1999 Chris Ball - - * thr-posix.c (__objc_mutex_deallocate): made deallocate work. - -Tue Sep 21 07:47:10 1999 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (gc.o, gc_gc.o): Do not pass -fgnu-runtime to - the compiler when building C code. - -Fri Aug 6 23:32:29 1999 Daniel Jacobowitz - - * Makefile.in (FLAGS_TO_PASS): Include prefix, exec_prefix, - libdir, libsubdir and tooldir. - -Mon Jun 21 05:40:15 1999 John David Anglin - - * init.c (__objc_force_linking): Make global. - -Thu May 20 03:20:59 1999 Jeffrey A Law (law@cygnus.com) - - * configure.in (AC_EXEEXT): Remove call. - (compiler_name): Explicitly check with no extension and .exe - extension. - * configure: Regenerate. - -Sun Apr 25 01:15:34 1999 Mumit Khan - - * Makefile.in (CC1OBJ): Define in terms of CC. - (runtime-info.h): Use. - -Fri April 8 08:21:07 1999 Ovidiu Predescu - - * objc-features.texi: Updated the URL to Boehm's GC page. - -Fri Mar 26 23:41:07 1999 Ovidiu Predescu - - * archive.c (__objc_code_char, __objc_write_char): Explicitly specify - the char as being signed (patch from Daniel Jacobowitz - ). - -Wed Mar 24 22:41:28 1999 Mumit Khan - - * configure.in (AC_PREREQ): Update to 2.13. - (AC_EXEEXT): Call to find possible file extension. - (compiler_name): Use. - * configure: Regenerate. - -Wed Jan 27 02:31:01 1999 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (ALL_CFLAGS): Add -DIN_GCC. - -Tue Jan 5 01:38:53 1999 Jeffrey A Law (law@cygnus.com) - - * configure.in (thread_file): Correct and simplify code to find - the thread file. - * configure: Rebuilt. - -1998-11-26 Manfred Hollstein - - * configure.in (compiler_name): Add check to detect if this - language's compiler has been built. - * configure: Regenerate. - -Mon Nov 23 16:50:28 1998 Kaveh R. Ghazi - - * configure.in: Use AC_PREREQ(2.12.1). - -Thu Nov 19 20:33:37 1998 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (runtime-info.h): Avoid GNU make extensions. - -Sun Nov 8 17:46:14 1998 Kaveh R. Ghazi - - * Makefile.in (INCLUDES): Add -I$(srcdir)/$(MULTISRCTOP)../include. - -Thu Oct 22 14:34:06 1998 Kaveh R. Ghazi - - * configure.in: Use AC_CONFIG_AUX_DIR($topsrcdir). - -Sat Oct 17 05:21:31 1998 Ovidiu Predescu - - * objc-features.texi (Top): Changed the email address. - * objc-features.texi (Garbage Collection): Use @uref instead of @url. - -Mon Oct 11 21:25:27 1998 Ovidiu Predescu - - * encoding.c: Redefine get_inner_array_type to get the first entry - in the structure. - -Thu Oct 8 12:21:14 1998 Richard Frith-Macdonald - - * encoding.c (objc_skip_type_qualifiers): Handle _C_BYREF. - (objc_get_type_qualifiers): Similarly. - * objc/encoding.h (_C_BYREF): Define. - (_F_BYREF): Define. - -1998-10-07 David S. Miller - - * objc/sarray.h: Make boffset be an unsigned long when sparc so it - works out on 64-bit systems. - -Tue Oct 6 20:32:06 1998 Alexandre Oliva - - * Makefile.in (INCLUDES): Make it multilib-friendly. - -Fri Oct 2 07:12:14 1998 H.J. Lu (hjl@gnu.org) - - * Makefile.in (INCLUDES): Add -I$(srcdir)/../gcc. - -Thu Oct 1 22:33:03 1998 Robert Lipe - Jeffrey A Law (law@cygnus.com) - - * Makefile.in (INCLUDES): Reference gcc via $MULTIBUILDTOP. - (FLAGS_TO_PASS): Added. - (runtime-info.h): Reference cc1ibj via $MULTIBUILDTOP. - - * archive.c: Change config.h to tconfig.h. - - * configure.in: Find gcc's object directory even for multilibs. - -Wed Sep 30 18:17:17 1998 Robert Lipe - - * configure.in: Escape ^ in grep string. - * configure: Rebuilt. - -Wed Sep 30 09:14:52 1998 Jeffrey A Law (law@cygnus.com) - - * All .h files pushed down into the objc/ subdirectory. - * Makefile.in (copy_headers): Corresponding changes. - * configure.in (AC_INIT): Corresponding changes. - * configure: Rebuilt. - -1998-09-30 Ben Elliston - Jeff Law - - * Makefile.in: Rewrite. - - * configure.in: Likewise. - - * configure: Regenerate. - - * All .c files. Remove "objc" prefix when including objc header - files. Include tconfig.h, not ../tconfig.h. - -Mon Sep 21 23:27:10 1998 Ovidiu Predescu - - * encoding.c (TREE_TYPE, ARRAY_TYPE): Define. - (get_inner_array_type): Define. - -1998-09-21 Ben Elliston - - * New directory. Moved files from ../gcc/objc. diff --git a/libobjc/Makefile.in b/libobjc/Makefile.in deleted file mode 100644 index 203629f4f103..000000000000 --- a/libobjc/Makefile.in +++ /dev/null @@ -1,376 +0,0 @@ -# Makefile for GNU Objective C runtime library. -# Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, -# 2005, 2006 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 2, 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 COPYING. If not, write to -#the Free Software Foundation, 51 Franklin Street, Fifth Floor, -#Boston, MA 02110-1301, USA. */ - -#This was cribbed from the libchill, libiberty and libstdc++ -#Makefile.in files. Some of this stuff may be unnecessary and -#worthless. - -SHELL = @SHELL@ -MAKEOVERRIDES= - -#### Start of system configuration section. #### - -srcdir = @glibcpp_srcdir@ -VPATH = @glibcpp_srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -target_noncanonical = @target_noncanonical@ -gcc_version := $(shell cat $(srcdir)/../gcc/BASE-VER) -host_subdir = @host_subdir@ -top_srcdir = @top_srcdir@ -multi_basedir = @multi_basedir@ -toolexecdir = @toolexecdir@ -# Toolexecdir is used only by toolexeclibdir -toolexeclibdir = @toolexeclibdir@ - -includedirname = @includedirname@ -libext = @libext@ - -extra_ldflags_libobjc = @extra_ldflags_libobjc@ - -top_builddir = . - -libdir = $(exec_prefix)/lib -libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) - -# Multilib support variables. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -# Not configured per top-level version, since that doesn't get passed -# down at configure time, but overrridden by the top-level install -# target. -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -AR_FLAGS = rc - -RANLIB = @RANLIB@ - -CC = @CC@ -CFLAGS = @CFLAGS@ -WARN_CFLAGS = -W -Wall -Wwrite-strings -Wstrict-prototypes -ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(WARN_CFLAGS) \ - -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions - -# Libtool -# The following strings describe the version of the obj-C library -# begin compiled and compatibility issues. -# Please refer to Libtool documentation about how to manage these -# numbers. -LIBOBJC_VERSION = @VERSION@ -LIBOBJC_GC_VERSION = @VERSION@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_COMPILE = $(LIBTOOL) --mode=compile -LIBTOOL_LINK = $(LIBTOOL) --mode=link -LIBTOOL_INSTALL = $(LIBTOOL) --mode=install -LIBTOOL_CLEAN = $(LIBTOOL) --mode=clean -#LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall - -OBJC_GCFLAGS=-DOBJC_WITH_GC=1 -OBJC_THREAD_FILE=thr-objc -OBJC_BOEHM_GC=@OBJC_BOEHM_GC@ -OBJC_BOEHM_GC_INCLUDES=@OBJC_BOEHM_GC_INCLUDES@ - -INCLUDES = -I$(srcdir)/objc -I$(srcdir)/$(MULTISRCTOP)../gcc \ - -I$(srcdir)/$(MULTISRCTOP)../gcc/config \ - -I$(MULTIBUILDTOP)../../$(host_subdir)/gcc \ - -I$(srcdir)/$(MULTISRCTOP)../include \ - $(OBJC_BOEHM_GC_INCLUDES) - - -.SUFFIXES: -.SUFFIXES: .c .m .lo - -.c.lo: - $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< - -.m.lo: - $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< - -# Flags to pass to a recursive make. -FLAGS_TO_PASS = \ - "AR=$(AR)" \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "DESTDIR=$(DESTDIR)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "EXTRA_OFILES=$(EXTRA_OFILES)" \ - "HDEFINES=$(HDEFINES)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBTOOL=$(LIBTOOL)" \ - "LOADLIBES=$(LOADLIBES)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "SHELL=$(SHELL)" \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "libdir=$(libdir)" \ - "libsubdir=$(libsubdir)" \ - "tooldir=$(tooldir)" - -all: libobjc$(libext).la $(OBJC_BOEHM_GC) - : $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all - -# User-visible header files. - -OBJC_H = hash.h objc-list.h sarray.h objc.h objc-api.h \ - NXConstStr.h Object.h Protocol.h encoding.h typedstream.h \ - thr.h objc-decls.h - -# Modules that comprise the runtime library. - -OBJS = archive.lo class.lo encoding.lo gc.lo hash.lo init.lo linking.lo \ - misc.lo nil_method.lo NXConstStr.lo Object.lo objects.lo \ - Protocol.lo sarray.lo selector.lo sendmsg.lo thr.lo \ - $(OBJC_THREAD_FILE).lo exception.lo - -OBJS_GC = archive_gc.lo class_gc.lo encoding_gc.lo gc_gc.lo hash_gc.lo \ - init_gc.lo linking_gc.lo misc_gc.lo nil_method_gc.lo \ - NXConstStr_gc.lo Object_gc.lo objects_gc.lo Protocol_gc.lo \ - sarray_gc.lo selector_gc.lo sendmsg_gc.lo thr_gc.lo \ - $(OBJC_THREAD_FILE)_gc.lo exception_gc.lo - -runtime-info.h: - echo "" > tmp-runtime.m - echo "/* This file is automatically generated */" > $@ - $(CC) $(MULTIFLAGS) -print-objc-runtime-info -S tmp-runtime.m >> $@ - rm -f tmp-runtime.m tmp-runtime.s - -archive_gc.lo: archive.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -class_gc.lo: class.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -encoding_gc.lo: encoding.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -gc.lo: gc.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< - -gc_gc.lo: gc.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -hash_gc.lo: hash.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -init_gc.lo: init.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -linking.lo: linking.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(INCLUDES) $< - -linking_gc.lo: linking.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(OBJC_GCFLAGS) $(INCLUDES) $< - -misc_gc.lo: misc.c - $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -nil_method_gc.lo: nil_method.c - $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -NXConstStr.lo: NXConstStr.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(INCLUDES) $< - -NXConstStr_gc.lo: NXConstStr.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(OBJC_GCFLAGS) $(INCLUDES) $< - -Object.lo: Object.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(INCLUDES) $< - -Object_gc.lo: Object.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(OBJC_GCFLAGS) $(INCLUDES) $< - -objects_gc.lo: objects.c - $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -Protocol.lo: Protocol.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(INCLUDES) $< - -Protocol_gc.lo: Protocol.m - $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ - $(OBJC_GCFLAGS) $(INCLUDES) $< - -sarray_gc.lo: sarray.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -selector_gc.lo: selector.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -sendmsg.lo: sendmsg.c runtime-info.h - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< - -sendmsg_gc.lo: sendmsg.c runtime-info.h - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -thr_gc.lo: thr.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -$(OBJC_THREAD_FILE)_gc.lo: $(OBJC_THREAD_FILE).c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - $(INCLUDES) $< - -exception.lo: exception.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) \ - -fexceptions $(INCLUDES) $< - -exception_gc.lo: exception.c - $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ - -fexceptions $(INCLUDES) $< - -doc: info dvi pdf html - -# No install-html support -.PHONY: install-html -install-html: - -libobjc$(libext).la: $(OBJS) - $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ - -rpath $(toolexeclibdir) \ - -version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) - -libobjc_gc$(libext).la: $(OBJS_GC) - $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ - -rpath $(toolexeclibdir) \ - -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) - -# -# FIXME -- The following part does not fit in the libtool context. -# Libtool is supposed to [going to] be able to create a win 32 DLL -# without extra code but since I don't have a win machine to test -# if it already works, I leave the old code here. -# -libobjc_s.a: libobjc.la - mv libobjc.a libobjc_s.a - -# Create a relocatable DLL -libobjc.dll: libobjc_s.a libobjc_entry.o - $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \ - -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 - $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ - --base-file libobjc.base --output-exp libobjc.exp - $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \ - -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 - $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ - --base-file libobjc.base --output-exp libobjc.exp - $(GCC_FOR_TARGET) libobjc.exp -mdll \ - -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 - $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ - --output-lib libobjc.a -# -# -# -# -# - -info: -dvi: -pdf: -html: - -Makefile: Makefile.in config.status - $(SHELL) config.status - -config.status: configure - rm -f config.cache - CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \ - CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck - -${srcdir}/configure: @MAINT@ configure.ac - rm -f config.cache - cd ${srcdir} && autoconf - -install: install-libs install-headers - -install-libs: installdirs - $(SHELL) $(multi_basedir)/mkinstalldirs $(DESTDIR)$(toolexeclibdir) - $(LIBTOOL_INSTALL) $(INSTALL) libobjc$(libext).la $(DESTDIR)$(toolexeclibdir); - if [ "$(OBJC_BOEHM_GC)" ]; then \ - $(LIBTOOL_INSTALL) $(INSTALL) libobjc_gc$(libext).la \ - $(DESTDIR)$(toolexeclibdir);\ - fi - $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@" - @-$(LIBTOOL) --mode=finish $(DESTDIR)$(toolexeclibdir) - -# Copy Objective C headers to installation include directory. -install-headers: - $(SHELL) $(multi_basedir)/mkinstalldirs $(DESTDIR)$(libsubdir)/$(includedirname)/objc - for file in $(OBJC_H); do \ - realfile=$(srcdir)/objc/$${file}; \ - $(INSTALL_DATA) $${realfile} $(DESTDIR)$(libsubdir)/$(includedirname)/objc; \ - done - -check uninstall install-strip dist installcheck installdirs: - -mostlyclean: - -$(LIBTOOL_CLEAN) rm -f libobjc$(libext).la libobjc_gc$(libext).la *.lo - -rm -f runtime-info.h tmp-runtime.s *.o *.lo libobjc* xforward \ - fflags *.aux *.cp *.dvi *.pdf *.fn *.info *.ky *.log *.pg \ - *.toc *.tp *.vr *.html libobj.exp - @$(MULTICLEAN) multi-clean DO=mostlyclean - -clean: mostlyclean - rm -f config.log - @$(MULTICLEAN) multi-clean DO=clean - -distclean: clean - @$(MULTICLEAN) multi-clean DO=distclean - rm -f config.cache config.status Makefile configure - -maintainer-clean realclean: distclean - -.PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \ - install-strip dist installcheck installdirs - -# Don't export variables to the environment, in order to not confuse -# configure. -.NOEXPORT: diff --git a/libobjc/NXConstStr.m b/libobjc/NXConstStr.m deleted file mode 100644 index 9afe30ae58af..000000000000 --- a/libobjc/NXConstStr.m +++ /dev/null @@ -1,42 +0,0 @@ -/* Implementation of the NXConstantString class for Objective-C. - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by Pieter J. Schoenmakers - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#include "objc/NXConstStr.h" - -@implementation NXConstantString - --(const char *) cString -{ - return (c_string); -} /* -cString */ - --(unsigned int) length -{ - return (len); -} /* -length */ - -@end diff --git a/libobjc/Object.m b/libobjc/Object.m deleted file mode 100644 index 3d7d2084b32c..000000000000 --- a/libobjc/Object.m +++ /dev/null @@ -1,386 +0,0 @@ -/* The implementation of class Object for Objective-C. - Copyright (C) 1993, 1994, 1995, 1997, 2002 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled - with GCC to produce an executable, this does not cause the resulting - executable to be covered by the GNU General Public License. This - exception does not however invalidate any other reasons why the - executable file might be covered by the GNU General Public License. */ - -#include -#include "objc/Object.h" -#include "objc/Protocol.h" -#include "objc/objc-api.h" - -extern int errno; - -#define MAX_CLASS_NAME_LEN 256 - -@implementation Object - -+ initialize -{ - return self; -} - -- init -{ - return self; -} - -+ new -{ - return [[self alloc] init]; -} - -+ alloc -{ - return class_create_instance(self); -} - -- free -{ - return object_dispose(self); -} - -- copy -{ - return [[self shallowCopy] deepen]; -} - -- shallowCopy -{ - return object_copy(self); -} - -- deepen -{ - return self; -} - -- deepCopy -{ - return [self copy]; -} - -- (Class)class -{ - return object_get_class(self); -} - -- (Class)superClass -{ - return object_get_super_class(self); -} - -- (MetaClass)metaClass -{ - return object_get_meta_class(self); -} - -- (const char *)name -{ - return object_get_class_name(self); -} - -- self -{ - return self; -} - -- (unsigned int)hash -{ - return (size_t)self; -} - -- (BOOL)isEqual:anObject -{ - return self==anObject; -} - -- (int)compare:anotherObject; -{ - if ([self isEqual:anotherObject]) - return 0; - // Ordering objects by their address is pretty useless, - // so subclasses should override this is some useful way. - else if (self > anotherObject) - return 1; - else - return -1; -} - -- (BOOL)isMetaClass -{ - return NO; -} - -- (BOOL)isClass -{ - return object_is_class(self); -} - -- (BOOL)isInstance -{ - return object_is_instance(self); -} - -- (BOOL)isKindOf:(Class)aClassObject -{ - Class class; - - for (class = self->isa; class!=Nil; class = class_get_super_class(class)) - if (class==aClassObject) - return YES; - return NO; -} - -- (BOOL)isMemberOf:(Class)aClassObject -{ - return self->isa==aClassObject; -} - -- (BOOL)isKindOfClassNamed:(const char *)aClassName -{ - Class class; - - if (aClassName!=NULL) - for (class = self->isa; class!=Nil; class = class_get_super_class(class)) - if (!strcmp(class_get_class_name(class), aClassName)) - return YES; - return NO; -} - -- (BOOL)isMemberOfClassNamed:(const char *)aClassName -{ - return ((aClassName!=NULL) - &&!strcmp(class_get_class_name(self->isa), aClassName)); -} - -+ (BOOL)instancesRespondTo:(SEL)aSel -{ - return class_get_instance_method(self, aSel)!=METHOD_NULL; -} - -- (BOOL)respondsTo:(SEL)aSel -{ - return ((object_is_instance(self) - ?class_get_instance_method(self->isa, aSel) - :class_get_class_method(self->isa, aSel))!=METHOD_NULL); -} - -+ (IMP)instanceMethodFor:(SEL)aSel -{ - return method_get_imp(class_get_instance_method(self, aSel)); -} - -// Indicates if the receiving class or instance conforms to the given protocol -// not usually overridden by subclasses -// -// Modified 9/5/94 to always search the class object's protocol list, rather -// than the meta class. - -+ (BOOL) conformsTo: (Protocol*)aProtocol -{ - size_t i; - struct objc_protocol_list* proto_list; - id parent; - - for (proto_list = ((Class)self)->protocols; - proto_list; proto_list = proto_list->next) - { - for (i=0; i < proto_list->count; i++) - { - if ([proto_list->list[i] conformsTo: aProtocol]) - return YES; - } - } - - if ((parent = [self superClass])) - return [parent conformsTo: aProtocol]; - else - return NO; -} - -- (BOOL) conformsTo: (Protocol*)aProtocol -{ - return [[self class] conformsTo:aProtocol]; -} - -- (IMP)methodFor:(SEL)aSel -{ - return (method_get_imp(object_is_instance(self) - ?class_get_instance_method(self->isa, aSel) - :class_get_class_method(self->isa, aSel))); -} - -+ (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel -{ - return ((struct objc_method_description *) - class_get_instance_method(self, aSel)); -} - -- (struct objc_method_description *)descriptionForMethod:(SEL)aSel -{ - return ((struct objc_method_description *) - (object_is_instance(self) - ?class_get_instance_method(self->isa, aSel) - :class_get_class_method(self->isa, aSel))); -} - -- perform:(SEL)aSel -{ - IMP msg = objc_msg_lookup(self, aSel); - if (!msg) - return [self error:"invalid selector passed to %s", sel_get_name(_cmd)]; - return (*msg)(self, aSel); -} - -- perform:(SEL)aSel with:anObject -{ - IMP msg = objc_msg_lookup(self, aSel); - if (!msg) - return [self error:"invalid selector passed to %s", sel_get_name(_cmd)]; - return (*msg)(self, aSel, anObject); -} - -- perform:(SEL)aSel with:anObject1 with:anObject2 -{ - IMP msg = objc_msg_lookup(self, aSel); - if (!msg) - return [self error:"invalid selector passed to %s", sel_get_name(_cmd)]; - return (*msg)(self, aSel, anObject1, anObject2); -} - -- (retval_t)forward:(SEL)aSel :(arglist_t)argFrame -{ - (void) argFrame; /* UNUSED */ - return (retval_t)[self doesNotRecognize: aSel]; -} - -- (retval_t)performv:(SEL)aSel :(arglist_t)argFrame -{ - return objc_msg_sendv(self, aSel, argFrame); -} - -+ poseAs:(Class)aClassObject -{ - return class_pose_as(self, aClassObject); -} - -- (Class)transmuteClassTo:(Class)aClassObject -{ - if (object_is_instance(self)) - if (class_is_class(aClassObject)) - if (class_get_instance_size(aClassObject)==class_get_instance_size(isa)) - if ([self isKindOf:aClassObject]) - { - Class old_isa = isa; - isa = aClassObject; - return old_isa; - } - return nil; -} - -- subclassResponsibility:(SEL)aSel -{ - return [self error:"subclass should override %s", sel_get_name(aSel)]; -} - -- notImplemented:(SEL)aSel -{ - return [self error:"method %s not implemented", sel_get_name(aSel)]; -} - -- shouldNotImplement:(SEL)aSel -{ - return [self error:"%s should not implement %s", - object_get_class_name(self), sel_get_name(aSel)]; -} - -- doesNotRecognize:(SEL)aSel -{ - return [self error:"%s does not recognize %s", - object_get_class_name(self), sel_get_name(aSel)]; -} - -- error:(const char *)aString, ... -{ -#define FMT "error: %s (%s)\n%s\n" - char fmt[(strlen((char*)FMT)+strlen((char*)object_get_class_name(self)) - +((aString!=NULL)?strlen((char*)aString):0)+8)]; - va_list ap; - - sprintf(fmt, FMT, object_get_class_name(self), - object_is_instance(self)?"instance":"class", - (aString!=NULL)?aString:""); - va_start(ap, aString); - objc_verror(self, OBJC_ERR_UNKNOWN, fmt, ap); - va_end(ap); - return nil; -#undef FMT -} - -+ (int)version -{ - return class_get_version(self); -} - -+ setVersion:(int)aVersion -{ - class_set_version(self, aVersion); - return self; -} - -+ (int)streamVersion: (TypedStream*)aStream -{ - if (aStream->mode == OBJC_READONLY) - return objc_get_stream_class_version (aStream, self); - else - return class_get_version (self); -} - -// These are used to write or read the instance variables -// declared in this particular part of the object. Subclasses -// should extend these, by calling [super read/write: aStream] -// before doing their own archiving. These methods are private, in -// the sense that they should only be called from subclasses. - -- read: (TypedStream*)aStream -{ - (void) aStream; /* UNUSED */ - // [super read: aStream]; - return self; -} - -- write: (TypedStream*)aStream -{ - (void) aStream; /* UNUSED */ - // [super write: aStream]; - return self; -} - -- awake -{ - // [super awake]; - return self; -} - -@end diff --git a/libobjc/Protocol.m b/libobjc/Protocol.m deleted file mode 100644 index 645e99114c56..000000000000 --- a/libobjc/Protocol.m +++ /dev/null @@ -1,182 +0,0 @@ -/* This file contains the implementation of class Protocol. - Copyright (C) 1993, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#include "objc/Protocol.h" -#include "objc/objc-api.h" - -/* Method description list */ -struct objc_method_description_list { - int count; - struct objc_method_description list[1]; -}; - - -@implementation Protocol -{ -@private - char *protocol_name; - struct objc_protocol_list *protocol_list; - struct objc_method_description_list *instance_methods, *class_methods; -} - -/* Obtaining attributes intrinsic to the protocol */ - -- (const char *)name -{ - return protocol_name; -} - -/* Testing protocol conformance */ - -- (BOOL) conformsTo: (Protocol *)aProtocolObject -{ - size_t i; - struct objc_protocol_list* proto_list; - - if (aProtocolObject == nil) - return NO; - - if (!strcmp(aProtocolObject->protocol_name, self->protocol_name)) - return YES; - - for (proto_list = protocol_list; proto_list; proto_list = proto_list->next) - { - for (i=0; i < proto_list->count; i++) - { - if ([proto_list->list[i] conformsTo: aProtocolObject]) - return YES; - } - } - - return NO; -} - -/* Looking up information specific to a protocol */ - -- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel -{ - int i; - struct objc_protocol_list* proto_list; - const char* name = sel_get_name (aSel); - struct objc_method_description *result; - - if (instance_methods) - for (i = 0; i < instance_methods->count; i++) - { - if (!strcmp ((char*)instance_methods->list[i].name, name)) - return &(instance_methods->list[i]); - } - - for (proto_list = protocol_list; proto_list; proto_list = proto_list->next) - { - size_t j; - for (j=0; j < proto_list->count; j++) - { - if ((result = [proto_list->list[j] - descriptionForInstanceMethod: aSel])) - return result; - } - } - - return NULL; -} - -- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel; -{ - int i; - struct objc_protocol_list* proto_list; - const char* name = sel_get_name (aSel); - struct objc_method_description *result; - - if (class_methods) - for (i = 0; i < class_methods->count; i++) - { - if (!strcmp ((char*)class_methods->list[i].name, name)) - return &(class_methods->list[i]); - } - - for (proto_list = protocol_list; proto_list; proto_list = proto_list->next) - { - size_t j; - for (j=0; j < proto_list->count; j++) - { - if ((result = [proto_list->list[j] - descriptionForClassMethod: aSel])) - return result; - } - } - - return NULL; -} - -- (unsigned) hash -{ - /* Compute a hash of the protocol_name; use the same hash algorithm - * that we use for class names; protocol names and class names are - * somewhat similar types of string spaces. - */ - int hash = 0, index; - - for (index = 0; protocol_name[index] != '\0'; index++) - { - hash = (hash << 4) ^ (hash >> 28) ^ protocol_name[index]; - } - - hash = (hash ^ (hash >> 10) ^ (hash >> 20)); - - return hash; -} - -/* - * Equality between formal protocols is only formal (nothing to do - * with actually checking the list of methods they have!). Two formal - * Protocols are equal if and only if they have the same name. - * - * Please note (for comparisons with other implementations) that - * checking the names is equivalent to checking that Protocol A - * conforms to Protocol B and Protocol B conforms to Protocol A, - * because this happens iff they have the same name. If they have - * different names, A conforms to B if and only if A includes B, but - * the situation where A includes B and B includes A is a circular - * dependency between Protocols which is forbidden by the compiler, so - * A conforms to B and B conforms to A with A and B having different - * names is an impossible case. - */ -- (BOOL) isEqual: (id)obj -{ - if (obj == self) - return YES; - - if ([obj isKindOf: [Protocol class]]) - { - if (strcmp (protocol_name, ((Protocol *)obj)->protocol_name) == 0) - return YES; - } - - return NO; -} -@end - diff --git a/libobjc/README b/libobjc/README deleted file mode 100644 index 093116fd594e..000000000000 --- a/libobjc/README +++ /dev/null @@ -1,104 +0,0 @@ - -GNU Objective C notes -********************* - -This document is to explain what has been done, and a little about how -specific features differ from other implementations. The runtime has -been completely rewritten in gcc 2.4. The earlier runtime had several -severe bugs and was rather incomplete. The compiler has had several -new features added as well. - -This is not documentation for Objective C, it is usable to someone -who knows Objective C from somewhere else. - - -Runtime API functions -===================== - -The runtime is modeled after the NeXT Objective C runtime. That is, -most functions have semantics as it is known from the NeXT. The -names, however, have changed. All runtime API functions have names -of lowercase letters and underscores as opposed to the -`traditional' mixed case names. - The runtime api functions are not documented as of now. -Someone offered to write it, and did it, but we were not allowed to -use it by his university (Very sad story). We have started writing -the documentation over again. This will be announced in appropriate -places when it becomes available. - - -Protocols -========= - -Protocols are now fully supported. The semantics is exactly as on the -NeXT. There is a flag to specify how protocols should be typechecked -when adopted to classes. The normal typechecker requires that all -methods in a given protocol must be implemented in the class that -adopts it -- it is not enough to inherit them. The flag -`-Wno-protocol' causes it to allow inherited methods, while -`-Wprotocols' is the default which requires them defined. - - -+load -=========== -This method, if defined, is called for each class and category -implementation when the class is loaded into the runtime. This method -is not inherited, and is thus not called for a subclass that doesn't -define it itself. Thus, each +load method is called exactly once by -the runtime. The runtime invocation of this method is thread safe. - - -+initialize -=========== - -This method, if defined, is called before any other instance or class -methods of that particular class. For the GNU runtime, this method is -not inherited, and is thus not called as initializer for a subclass that -doesn't define it itself. Thus, each +initialize method is called exactly -once by the runtime (or never if no methods of that particular class is -never called). It is wise to guard against multiple invocations anyway -to remain portable with the NeXT runtime. The runtime invocation of -this method is thread safe. - - -Passivation/Activation/Typedstreams -=================================== - -This is supported in the style of NeXT TypedStream's. Consult the -headerfile Typedstreams.h for api functions. I (Kresten) have -rewritten it in Objective C, but this implementation is not part of -2.4, it is available from the GNU Objective C prerelease archive. - There is one difference worth noting concerning objects stored with -objc_write_object_reference (aka NXWriteObjectReference). When these -are read back in, their object is not guaranteed to be available until -the `-awake' method is called in the object that requests that object. -To objc_read_object you must pass a pointer to an id, which is valid -after exit from the function calling it (like e.g. an instance -variable). In general, you should not use objects read in until the --awake method is called. - - -Acknowledgements -================ - -The GNU Objective C team: Geoffrey Knauth (manager), -Tom Wood (compiler) and Kresten Krab Thorup - (runtime) would like to thank a some people for -participating in the development of the present GNU Objective C. - -Paul Burchard and Andrew McCallum - has been very helpful debugging the -runtime. Eric Herring has been very helpful -cleaning up after the documentation-copyright disaster and is now -helping with the new documentation. - -Steve Naroff and Richard Stallman - has been very helpful with implementation details -in the compiler. - - -Bug Reports -=========== - -Please read the section `Submitting Bugreports' of the gcc manual -before you submit any bugs. diff --git a/libobjc/README.threads b/libobjc/README.threads deleted file mode 100644 index 5f15bd9cb45c..000000000000 --- a/libobjc/README.threads +++ /dev/null @@ -1,50 +0,0 @@ -============================================================================== -README.threads - Wed Nov 29 15:16:24 EST 1995 ------------------------------------------------------------------------------- - -Limited documentation is available in the THREADS file. - -This version has been tested on Sun Solaris, SGI Irix, and Windows NT. -It should also work on any single threaded system. - -Thanks go to the following people for help test and debug the library: - - Scott Christley, scottc@ocbi.com - Andrew McCallum, mccallum@cs.rochester.edu - -galen -gchunt@cs.rochester.edu - -Any questions, bug reports, etc should be directed to: - -Scott Christley, scottc@ocbi.com - -Please do not bug Galen with email as he no longer supports the code. - -============================================================================== -Changes from prior releases (in revered chronological order): ------------------------------------------------------------------------------- - -* Fixed bug in copy part of sarray_realloc. I had an < which should - have been <=. (Bug report from Scott). - ------------------------------------------------------------------------------- - -* Support for DEC OSF/1 is definitely broken. My programs always - seg-fault when I link with libpthreads.a. - -* Thread id's are no longer int's, but are instead of type - _objc_thread_t which is typedef'ed from a void *. An invalid thread - id is denoted by NULL and not -1 as before. - ------------------------------------------------------------------------------- - -* Renamed thread-winnt.c to thread-win32.c to better reflect support - for the API on both Windows NT and Windows 95 platforms. - (Who knows, maybe even Win32s :-). - -* Fixed bugs in Win32 support as per report from Scott Christley. - -* Fixed bug in sarray_get as per report from Scott Christley. - - diff --git a/libobjc/THREADS b/libobjc/THREADS deleted file mode 100644 index 8a436832f6cb..000000000000 --- a/libobjc/THREADS +++ /dev/null @@ -1,377 +0,0 @@ -This file describes in little detail the modifications to the -Objective-C runtime needed to make it thread safe. - -First off, kudos to Galen Hunt who is the author of this great work. - -If you have an comments or just want to know where to -send me money to express your undying gratitude for threading the -Objective-C runtime you can reach Galen at: - - gchunt@cs.rochester.edu - -Any questions, comments, bug reports, etc. should send email either to the -GCC bug account or to: - - Scott Christley - -* Sarray Threading: - -The most critical component of the Objective-C runtime is the sparse array -structure (sarray). Sarrays store object selectors and implementations. -Following in the tradition of the Objective-C runtime, my threading -support assumes that fast message dispatching is far more important -than *ANY* and *ALL* other operations. The message dispatching thus -uses *NO* locks on any kind. In fact, if you look in sarray.h, you -will notice that the message dispatching has not been modified. -Instead, I have modified the sarray management functions so that all -updates to the sarray data structure can be made in parallel will -message dispatching. - -To support concurrent message dispatching, no dynamically allocated -sarray data structures are freed while more than one thread is -operational. Sarray data structures that are no longer in use are -kept in a linked list of garbage and are released whenever the program -is operating with a single thread. The programmer can also flush the -garbage list by calling sarray_remove_garbage when the programmer can -ensure that no message dispatching is taking place concurrently. The -amount of un-reclaimed sarray garbage should normally be extremely -small in a real program as sarray structures are freed only when using -the "poseAs" functionality and early in program initialization, which -normally occurs while the program is single threaded. - -****************************************************************************** -* Static Variables: - -The following variables are either statically or globally defined. This list -does not include variables which are internal to implementation dependent -versions of thread-*.c. - -The following threading designations are used: - SAFE : Implicitly thread safe. - SINGLE : Must only be used in single thread mode. - MUTEX : Protected by single global mutex objc_runtime_mutex. - UNUSED : Not used in the runtime. - -Variable Name: Usage: Defined: Also used in: -=========================== ====== ============ ===================== -__objc_class_hash MUTEX class.c -__objc_class_links_resolved UNUSED class.c runtime.h -__objc_class_number MUTEX class.c -__objc_dangling_categories UNUSED init.c -__objc_module_list MUTEX init.c -__objc_selector_array MUTEX selector.c -__objc_selector_hash MUTEX selector.c -__objc_selector_max_index MUTEX selector.c sendmsg.c runtime.h -__objc_selector_names MUTEX selector.c -__objc_thread_exit_status SAFE thread.c -__objc_uninstalled_dtable MUTEX sendmsg.c selector.c -_objc_load_callback SAFE init.c objc-api.h -_objc_lookup_class SAFE class.c objc-api.h -_objc_object_alloc SINGLE objects.c objc-api.h -_objc_object_copy SINGLE objects.c objc-api.h -_objc_object_dispose SINGLE objects.c objc-api.h -frwd_sel SAFE2 sendmsg.c -idxsize MUTEX sarray.c sendmsg.c sarray.h -initialize_sel SAFE2 sendmsg.c -narrays MUTEX sarray.c sendmsg.c sarray.h -nbuckets MUTEX sarray.c sendmsg.c sarray.h -nindices MUTEX sarray.c sarray.h -previous_constructors SAFE1 init.c -proto_class SAFE1 init.c -unclaimed_categories MUTEX init.c -unclaimed_proto_list MUTEX init.c -uninitialized_statics MUTEX init.c - -Notes: -1) Initialized once in unithread mode. -2) Initialized value will always be same, guaranteed by lock on selector - hash table. - - -****************************************************************************** -* Frontend/Backend design: - -The design of the Objective-C runtime thread and mutex functions utilizes a -frontend/backend implementation. - -The frontend, as characterized by the files thr.h and thr.c, is a set -of platform independent structures and functions which represent the -user interface. Objective-C programs should use these structures and -functions for their thread and mutex work if they wish to maintain a -high degree of portability across platforms. - -The backend is composed of a file with the necessary code to map the ObjC -thread and mutex to a platform specific implementation. For example, the -file thr-solaris.c contains the implementation for Solaris. - -If you are compiling libobjc as part of GCC, the thr-objc.c backend is -always used; this backend uses GCC's gthread code. The thread system -is automatically configured when GCC is configured. Important: make -sure you configure GCC using `--enable-threads' if you want threads ! - -If you want to compile libobjc standalone, then you would need to -modify the configure.in and makefiles for it; and you need to pick an -appropriate backend file for the target platform; you make this choice -by assigning the OBJC_THREAD_FILE make variable to the basename of the -backend file. For example, OBJC_THREAD_FILE=thr-posix would indicate -that the generic posix backend file, thr-posix.c, should be compiled -with the ObjC runtime library. If your platform does not support -threads then you should specify the OBJC_THREAD_FILE=thr-single -backend file to compile the ObjC runtime library without thread or -mutex support; note that programs which rely upon the ObjC thread and -mutex functions will compile and link correctly but attempting to -create a thread or mutex will result in an error. - -It is questionable whether it is really necessary to have both a -frontend and backend function for all available functionality. On the -one hand, it provides a clear, consistent differentiation between what -is public and what is private with the downside of having the overhead -of multiple functions calls. For example, the function to have a -thread yield the processor is objc_thread_yield; in the current -implementation this produces a function call set: - -objc_thread_yield() -> __objc_thread_yield() -> system yield function - -This has two extra function calls over calling the platform specific function -explicitly, but the issue is whether only the overhead of a single function -is necessary. - -objc_thread_yield() -> system yield function - -This breaks the public/private dichotomy between the frontend/backend -for the sake of efficiency. It is possible to just use a preprocessor -define so as to eliminate the extra function call: - -#define objc_thread_yield() __objc_thread_yield() - -This has the undesirable effect that if objc_thread_yield is actually -turned into a function based upon future need; then ObjC programs which -access the thread functions would need to be recompiled versus just -being relinked. - -****************************************************************************** -* Threads: - -The thread system attempts to create multiple threads using whatever -operating system or library thread support is available. It does -assume that all system functions are thread safe. Notably this means -that the system implementation of malloc and free must be thread safe. -If a system has multiple processors, the threads are configured for -full parallel processing. - -* Backend initialization functions - -__objc_init_thread_system(void), int - Initialize the thread subsystem. Called once by __objc_exec_class. - Return -1 if error otherwise return 0. - -__objc_close_thread_system(void), int - Closes the thread subsystem, not currently guaranteed to be called. - Return -1 if error otherwise return 0. - -***** -* Frontend thread functions -* User programs should use these functions. - -objc_thread_detach(SEL selector, id object, id argument), objc_thread_t - Creates and detaches a new thread. The new thread starts by - sending the given selector with a single argument to the - given object. - -objc_thread_set_priority(int priority), int - Sets a thread's relative priority within the program. Valid - options are: - - OBJC_THREAD_INTERACTIVE_PRIORITY - OBJC_THREAD_BACKGROUND_PRIORITY - OBJC_THREAD_LOW_PRIORITY - -objc_thread_get_priority(void), int - Query a thread's priority. - -objc_thread_yield(void), void - Yields processor to another thread with equal or higher - priority. It is up to the system scheduler to determine if - the processor is taken or not. - -objc_thread_exit(void), int - Terminates a thread. If this is the last thread executing - then the program will terminate. - -objc_thread_id(void), int - Returns the current thread's id. - -objc_thread_set_data(void *value), int - Set a pointer to the thread's local storage. Local storage is - thread specific. - -objc_thread_get_data(void), void * - Returns the pointer to the thread's local storage. - -***** -* Backend thread functions -* User programs should *NOT* directly call these functions. - -__objc_thread_detach(void (*func)(void *arg), void *arg), objc_thread_t - Spawns a new thread executing func, called by objc_thread_detach. - Return NULL if error otherwise return thread id. - -__objc_thread_set_priority(int priority), int - Set the thread's priority, called by objc_thread_set_priority. - Return -1 if error otherwise return 0. - -__objc_thread_get_priority(void), int - Query a thread's priority, called by objc_thread_get_priority. - Return -1 if error otherwise return the priority. - -__objc_thread_yield(void), void - Yields the processor, called by objc_thread_yield. - -__objc_thread_exit(void), int - Terminates the thread, called by objc_thread_exit. - Return -1 if error otherwise function does not return. - -__objc_thread_id(void), objc_thread_t - Returns the current thread's id, called by objc_thread_id. - Return -1 if error otherwise return thread id. - -__objc_thread_set_data(void *value), int - Set pointer for thread local storage, called by objc_thread_set_data. - Returns -1 if error otherwise return 0. - -__objc_thread_get_data(void), void * - Returns the pointer to the thread's local storage. - Returns NULL if error, called by objc_thread_get_data. - - -****************************************************************************** -* Mutexes: - -Mutexes can be locked recursively. Each locked mutex remembers -its owner (by thread id) and how many times it has been locked. The -last unlock on a mutex removes the system lock and allows other -threads to access the mutex. - -***** -* Frontend mutex functions -* User programs should use these functions. - -objc_mutex_allocate(void), objc_mutex_t - Allocates a new mutex. Mutex is initially unlocked. - Return NULL if error otherwise return mutex pointer. - -objc_mutex_deallocate(objc_mutex_t mutex), int - Free a mutex. Before freeing the mutex, makes sure that no - one else is using it. - Return -1 if error otherwise return 0. - -objc_mutex_lock(objc_mutex_t mutex), int - Locks a mutex. As mentioned earlier, the same thread may call - this routine repeatedly. - Return -1 if error otherwise return 0. - -objc_mutex_trylock(objc_mutex_t mutex), int - Attempts to lock a mutex. If lock on mutex can be acquired - then function operates exactly as objc_mutex_lock. - Return -1 if failed to acquire lock otherwise return 0. - -objc_mutex_unlock(objc_mutex_t mutex), int - Unlocks the mutex by one level. Other threads may not acquire - the mutex until this thread has released all locks on it. - Return -1 if error otherwise return 0. - -***** -* Backend mutex functions -* User programs should *NOT* directly call these functions. - -__objc_mutex_allocate(objc_mutex_t mutex), int - Allocates a new mutex, called by objc_mutex_allocate. - Return -1 if error otherwise return 0. - -__objc_mutex_deallocate(objc_mutex_t mutex), int - Free a mutex, called by objc_mutex_deallocate. - Return -1 if error otherwise return 0. - -__objc_mutex_lock(objc_mutex_t mutex), int - Locks a mutex, called by objc_mutex_lock. - Return -1 if error otherwise return 0. - -__objc_mutex_trylock(objc_mutex_t mutex), int - Attempts to lock a mutex, called by objc_mutex_trylock. - Return -1 if failed to acquire lock or error otherwise return 0. - -__objc_mutex_unlock(objc_mutex_t mutex), int - Unlocks the mutex, called by objc_mutex_unlock. - Return -1 if error otherwise return 0. - -****************************************************************************** -* Condition Mutexes: - -Mutexes can be locked recursively. Each locked mutex remembers -its owner (by thread id) and how many times it has been locked. The -last unlock on a mutex removes the system lock and allows other -threads to access the mutex. - -* -* Frontend condition mutex functions -* User programs should use these functions. -* - -objc_condition_allocate(void), objc_condition_t - Allocate a condition mutex. - Return NULL if error otherwise return condition pointer. - -objc_condition_deallocate(objc_condition_t condition), int - Deallocate a condition. Note that this includes an implicit - condition_broadcast to insure that waiting threads have the - opportunity to wake. It is legal to dealloc a condition only - if no other thread is/will be using it. Does NOT check for - other threads waiting but just wakes them up. - Return -1 if error otherwise return 0. - -objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex), int - Wait on the condition unlocking the mutex until objc_condition_signal() - or objc_condition_broadcast() are called for the same condition. The - given mutex *must* have the depth 1 so that it can be unlocked - here, for someone else can lock it and signal/broadcast the condition. - The mutex is used to lock access to the shared data that make up the - "condition" predicate. - Return -1 if error otherwise return 0. - -objc_condition_broadcast(objc_condition_t condition), int - Wake up all threads waiting on this condition. It is recommended that - the called would lock the same mutex as the threads in - objc_condition_wait before changing the "condition predicate" - and make this call and unlock it right away after this call. - Return -1 if error otherwise return 0. - -objc_condition_signal(objc_condition_t condition), int - Wake up one thread waiting on this condition. - Return -1 if error otherwise return 0. - -* -* Backend condition mutex functions -* User programs should *NOT* directly call these functions. -* - -__objc_condition_allocate(objc_condition_t condition), int - Allocate a condition mutex, called by objc_condition_allocate. - Return -1 if error otherwise return 0. - -__objc_condition_deallocate(objc_condition_t condition), int - Deallocate a condition, called by objc_condition_deallocate. - Return -1 if error otherwise return 0. - -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex), int - Wait on the condition, called by objc_condition_wait. - Return -1 if error otherwise return 0 when condition is met. - -__objc_condition_broadcast(objc_condition_t condition), int - Wake up all threads waiting on this condition. - Called by objc_condition_broadcast. - Return -1 if error otherwise return 0. - -__objc_condition_signal(objc_condition_t condition), int - Wake up one thread waiting on this condition. - Called by objc_condition_signal. - Return -1 if error otherwise return 0. diff --git a/libobjc/THREADS.MACH b/libobjc/THREADS.MACH deleted file mode 100644 index 55de66378669..000000000000 --- a/libobjc/THREADS.MACH +++ /dev/null @@ -1,23 +0,0 @@ -This readme refers to the file thr-mach.c. - -Under mach, thread priorities are kinda strange-- any given thread has -a MAXIMUM priority and a BASE priority. The BASE priority is the -current priority of the thread and the MAXIMUM is the maximum possible -priority the thread can assume. The developer can lower, but never -raise the maximum priority. - -The gcc concept of thread priorities is that they run at one of three -levels; interactive, background, and low. - -Under mach, this is translated to: - -interactive -- set priority to maximum -background -- set priority to 2/3 of maximum -low -- set priority to 1/3 of maximum - -This means that it is possible for a thread with the priority of -interactive to actually run at a lower priority than another thread -with a background, or even low, priority if the developer has modified -the maximum priority. - - diff --git a/libobjc/acinclude.m4 b/libobjc/acinclude.m4 deleted file mode 100644 index 6a0bbc4b8c97..000000000000 --- a/libobjc/acinclude.m4 +++ /dev/null @@ -1,24 +0,0 @@ -dnl Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004 -dnl Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -m4_include(../config/acx.m4) -m4_include(../config/no-executables.m4) - -m4_include(../libtool.m4) -dnl The lines below arrange for aclocal not to bring an installed -dnl libtool.m4 into aclocal.m4, while still arranging for automake to -dnl add a definition of LIBTOOL to Makefile.in. -ifelse(yes,no,[ -AC_DEFUN([AM_PROG_LIBTOOL],) -AC_DEFUN([AC_LIBTOOL_DLOPEN],) -AC_DEFUN([AC_LIBLTDL_CONVENIENCE],) -AC_SUBST(LIBTOOL) -]) diff --git a/libobjc/aclocal.m4 b/libobjc/aclocal.m4 deleted file mode 100644 index 380a9c399d54..000000000000 --- a/libobjc/aclocal.m4 +++ /dev/null @@ -1,158 +0,0 @@ -# generated automatically by aclocal 1.9.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 7 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -]) - -m4_include([../config/multi.m4]) -m4_include([acinclude.m4]) diff --git a/libobjc/archive.c b/libobjc/archive.c deleted file mode 100644 index 992a69600d4a..000000000000 --- a/libobjc/archive.c +++ /dev/null @@ -1,1668 +0,0 @@ - /* GNU Objective C Runtime archiving - Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "tconfig.h" -#include "objc/runtime.h" -#include "objc/typedstream.h" -#include "objc/encoding.h" -#include - -extern int fflush (FILE *); - -#define ROUND(V, A) \ - ({ typeof (V) __v = (V); typeof (A) __a = (A); \ - __a * ((__v + __a - 1)/__a); }) - -#define PTR2LONG(P) (((char *) (P))-(char *) 0) -#define LONG2PTR(L) (((char *) 0) + (L)) - -/* Declare some functions... */ - -static int -objc_read_class (struct objc_typed_stream *stream, Class *class); - -int objc_sizeof_type (const char *type); - -static int -objc_write_use_common (struct objc_typed_stream *stream, unsigned long key); - -static int -objc_write_register_common (struct objc_typed_stream *stream, - unsigned long key); - -static int -objc_write_class (struct objc_typed_stream *stream, - struct objc_class *class); - -const char *objc_skip_type (const char *type); - -static void __objc_finish_write_root_object (struct objc_typed_stream *); -static void __objc_finish_read_root_object (struct objc_typed_stream *); - -static inline int -__objc_code_unsigned_char (unsigned char *buf, unsigned char val) -{ - if ((val&_B_VALUE) == val) - { - buf[0] = val|_B_SINT; - return 1; - } - else - { - buf[0] = _B_NINT|0x01; - buf[1] = val; - return 2; - } -} - -int -objc_write_unsigned_char (struct objc_typed_stream *stream, - unsigned char value) -{ - unsigned char buf[sizeof (unsigned char) + 1]; - int len = __objc_code_unsigned_char (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - -static inline int -__objc_code_char (unsigned char *buf, signed char val) -{ - if (val >= 0) - return __objc_code_unsigned_char (buf, val); - else - { - buf[0] = _B_NINT|_B_SIGN|0x01; - buf[1] = -val; - return 2; - } -} - -int -objc_write_char (struct objc_typed_stream *stream, signed char value) -{ - unsigned char buf[sizeof (char) + 1]; - int len = __objc_code_char (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - -static inline int -__objc_code_unsigned_short (unsigned char *buf, unsigned short val) -{ - if ((val&_B_VALUE) == val) - { - buf[0] = val|_B_SINT; - return 1; - } - else - { - int c, b; - - buf[0] = _B_NINT; - - for (c = sizeof (short); c != 0; c -= 1) - if (((val >> (8*(c - 1)))%0x100) != 0) - break; - - buf[0] |= c; - - for (b = 1; c != 0; c--, b++) - { - buf[b] = (val >> (8*(c - 1)))%0x100; - } - - return b; - } -} - -int -objc_write_unsigned_short (struct objc_typed_stream *stream, - unsigned short value) -{ - unsigned char buf[sizeof (unsigned short) + 1]; - int len = __objc_code_unsigned_short (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - -static inline int -__objc_code_short (unsigned char *buf, short val) -{ - int sign = (val < 0); - int size = __objc_code_unsigned_short (buf, sign ? -val : val); - if (sign) - buf[0] |= _B_SIGN; - return size; -} - -int -objc_write_short (struct objc_typed_stream *stream, short value) -{ - unsigned char buf[sizeof (short) + 1]; - int len = __objc_code_short (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - - -static inline int -__objc_code_unsigned_int (unsigned char *buf, unsigned int val) -{ - if ((val&_B_VALUE) == val) - { - buf[0] = val|_B_SINT; - return 1; - } - else - { - int c, b; - - buf[0] = _B_NINT; - - for (c = sizeof (int); c != 0; c -= 1) - if (((val >> (8*(c - 1)))%0x100) != 0) - break; - - buf[0] |= c; - - for (b = 1; c != 0; c--, b++) - { - buf[b] = (val >> (8*(c-1)))%0x100; - } - - return b; - } -} - -int -objc_write_unsigned_int (struct objc_typed_stream *stream, unsigned int value) -{ - unsigned char buf[sizeof (unsigned int) + 1]; - int len = __objc_code_unsigned_int (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - -static inline int -__objc_code_int (unsigned char *buf, int val) -{ - int sign = (val < 0); - int size = __objc_code_unsigned_int (buf, sign ? -val : val); - if (sign) - buf[0] |= _B_SIGN; - return size; -} - -int -objc_write_int (struct objc_typed_stream *stream, int value) -{ - unsigned char buf[sizeof (int) + 1]; - int len = __objc_code_int (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - -static inline int -__objc_code_unsigned_long (unsigned char *buf, unsigned long val) -{ - if ((val&_B_VALUE) == val) - { - buf[0] = val|_B_SINT; - return 1; - } - else - { - int c, b; - - buf[0] = _B_NINT; - - for (c = sizeof (long); c != 0; c -= 1) - if (((val >> (8*(c - 1)))%0x100) != 0) - break; - - buf[0] |= c; - - for (b = 1; c != 0; c--, b++) - { - buf[b] = (val >> (8*(c - 1)))%0x100; - } - - return b; - } -} - -int -objc_write_unsigned_long (struct objc_typed_stream *stream, - unsigned long value) -{ - unsigned char buf[sizeof (unsigned long) + 1]; - int len = __objc_code_unsigned_long (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - -static inline int -__objc_code_long (unsigned char *buf, long val) -{ - int sign = (val < 0); - int size = __objc_code_unsigned_long (buf, sign ? -val : val); - if (sign) - buf[0] |= _B_SIGN; - return size; -} - -int -objc_write_long (struct objc_typed_stream *stream, long value) -{ - unsigned char buf[sizeof (long) + 1]; - int len = __objc_code_long (buf, value); - return (*stream->write) (stream->physical, (char*)buf, len); -} - - -int -objc_write_string (struct objc_typed_stream *stream, - const unsigned char *string, unsigned int nbytes) -{ - unsigned char buf[sizeof (unsigned int) + 1]; - int len = __objc_code_unsigned_int (buf, nbytes); - - if ((buf[0]&_B_CODE) == _B_SINT) - buf[0] = (buf[0]&_B_VALUE)|_B_SSTR; - - else /* _B_NINT */ - buf[0] = (buf[0]&_B_VALUE)|_B_NSTR; - - if ((*stream->write) (stream->physical, (char*)buf, len) != 0) - return (*stream->write) (stream->physical, (char*)string, nbytes); - else - return 0; -} - -int -objc_write_string_atomic (struct objc_typed_stream *stream, - unsigned char *string, unsigned int nbytes) -{ - unsigned long key; - if ((key = PTR2LONG(objc_hash_value_for_key (stream->stream_table, string)))) - return objc_write_use_common (stream, key); - else - { - int length; - objc_hash_add (&stream->stream_table, - LONG2PTR(key=PTR2LONG(string)), string); - if ((length = objc_write_register_common (stream, key))) - return objc_write_string (stream, string, nbytes); - return length; - } -} - -static int -objc_write_register_common (struct objc_typed_stream *stream, - unsigned long key) -{ - unsigned char buf[sizeof (unsigned long)+2]; - int len = __objc_code_unsigned_long (buf + 1, key); - if (len == 1) - { - buf[0] = _B_RCOMM|0x01; - buf[1] &= _B_VALUE; - return (*stream->write) (stream->physical, (char*)buf, len + 1); - } - else - { - buf[1] = (buf[1]&_B_VALUE)|_B_RCOMM; - return (*stream->write) (stream->physical, (char*)buf + 1, len); - } -} - -static int -objc_write_use_common (struct objc_typed_stream *stream, unsigned long key) -{ - unsigned char buf[sizeof (unsigned long)+2]; - int len = __objc_code_unsigned_long (buf + 1, key); - if (len == 1) - { - buf[0] = _B_UCOMM|0x01; - buf[1] &= _B_VALUE; - return (*stream->write) (stream->physical, (char*)buf, 2); - } - else - { - buf[1] = (buf[1]&_B_VALUE)|_B_UCOMM; - return (*stream->write) (stream->physical, (char*)buf + 1, len); - } -} - -static inline int -__objc_write_extension (struct objc_typed_stream *stream, unsigned char code) -{ - if (code <= _B_VALUE) - { - unsigned char buf = code|_B_EXT; - return (*stream->write) (stream->physical, (char*)&buf, 1); - } - else - { - objc_error (nil, OBJC_ERR_BAD_OPCODE, - "__objc_write_extension: bad opcode %c\n", code); - return -1; - } -} - -inline int -__objc_write_object (struct objc_typed_stream *stream, id object) -{ - unsigned char buf = '\0'; - SEL write_sel = sel_get_any_uid ("write:"); - if (object) - { - __objc_write_extension (stream, _BX_OBJECT); - objc_write_class (stream, object->class_pointer); - (*objc_msg_lookup (object, write_sel)) (object, write_sel, stream); - return (*stream->write) (stream->physical, (char*)&buf, 1); - } - else - return objc_write_use_common (stream, 0); -} - -int -objc_write_object_reference (struct objc_typed_stream *stream, id object) -{ - unsigned long key; - if ((key = PTR2LONG(objc_hash_value_for_key (stream->object_table, object)))) - return objc_write_use_common (stream, key); - - __objc_write_extension (stream, _BX_OBJREF); - return objc_write_unsigned_long (stream, PTR2LONG (object)); -} - -int -objc_write_root_object (struct objc_typed_stream *stream, id object) -{ - int len = 0; - if (stream->writing_root_p) - objc_error (nil, OBJC_ERR_RECURSE_ROOT, - "objc_write_root_object called recursively"); - else - { - stream->writing_root_p = 1; - __objc_write_extension (stream, _BX_OBJROOT); - if ((len = objc_write_object (stream, object))) - __objc_finish_write_root_object (stream); - stream->writing_root_p = 0; - } - return len; -} - -int -objc_write_object (struct objc_typed_stream *stream, id object) -{ - unsigned long key; - if ((key = PTR2LONG(objc_hash_value_for_key (stream->object_table, object)))) - return objc_write_use_common (stream, key); - - else if (object == nil) - return objc_write_use_common (stream, 0); - - else - { - int length; - objc_hash_add (&stream->object_table, - LONG2PTR(key=PTR2LONG(object)), object); - if ((length = objc_write_register_common (stream, key))) - return __objc_write_object (stream, object); - return length; - } -} - -inline int -__objc_write_class (struct objc_typed_stream *stream, struct objc_class *class) -{ - __objc_write_extension (stream, _BX_CLASS); - objc_write_string_atomic (stream, (unsigned char *) class->name, - strlen ((char *) class->name)); - return objc_write_unsigned_long (stream, class->version); -} - - -static int -objc_write_class (struct objc_typed_stream *stream, - struct objc_class *class) -{ - unsigned long key; - if ((key = PTR2LONG(objc_hash_value_for_key (stream->stream_table, class)))) - return objc_write_use_common (stream, key); - else - { - int length; - objc_hash_add (&stream->stream_table, - LONG2PTR(key = PTR2LONG(class)), class); - if ((length = objc_write_register_common (stream, key))) - return __objc_write_class (stream, class); - return length; - } -} - - -inline int -__objc_write_selector (struct objc_typed_stream *stream, SEL selector) -{ - const char *sel_name; - __objc_write_extension (stream, _BX_SEL); - /* to handle NULL selectors */ - if ((SEL)0 == selector) - return objc_write_string (stream, (unsigned char*)"", 0); - sel_name = sel_get_name (selector); - return objc_write_string (stream, (unsigned char*)sel_name, strlen ((char*)sel_name)); -} - -int -objc_write_selector (struct objc_typed_stream *stream, SEL selector) -{ - const char *sel_name; - unsigned long key; - - /* to handle NULL selectors */ - if ((SEL)0 == selector) - return __objc_write_selector (stream, selector); - - sel_name = sel_get_name (selector); - if ((key = PTR2LONG(objc_hash_value_for_key (stream->stream_table, - sel_name)))) - return objc_write_use_common (stream, key); - else - { - int length; - objc_hash_add (&stream->stream_table, - LONG2PTR(key = PTR2LONG(sel_name)), (char *) sel_name); - if ((length = objc_write_register_common (stream, key))) - return __objc_write_selector (stream, selector); - return length; - } -} - - - -/* -** Read operations -*/ - -inline int -objc_read_char (struct objc_typed_stream *stream, char *val) -{ - unsigned char buf; - int len; - len = (*stream->read) (stream->physical, (char*)&buf, 1); - if (len != 0) - { - if ((buf & _B_CODE) == _B_SINT) - (*val) = (buf & _B_VALUE); - - else if ((buf & _B_NUMBER) == 1) - { - len = (*stream->read) (stream->physical, val, 1); - if (buf&_B_SIGN) - (*val) = -1 * (*val); - } - - else - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected 8bit signed int, got %dbit int", - (int) (buf&_B_NUMBER)*8); - } - return len; -} - - -inline int -objc_read_unsigned_char (struct objc_typed_stream *stream, unsigned char *val) -{ - unsigned char buf; - int len; - if ((len = (*stream->read) (stream->physical, (char*)&buf, 1))) - { - if ((buf & _B_CODE) == _B_SINT) - (*val) = (buf & _B_VALUE); - - else if ((buf & _B_NUMBER) == 1) - len = (*stream->read) (stream->physical, (char*)val, 1); - - else - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected 8bit unsigned int, got %dbit int", - (int) (buf&_B_NUMBER)*8); - } - return len; -} - -inline int -objc_read_short (struct objc_typed_stream *stream, short *value) -{ - unsigned char buf[sizeof (short) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - if ((buf[0] & _B_CODE) == _B_SINT) - (*value) = (buf[0] & _B_VALUE); - - else - { - int pos = 1; - int nbytes = buf[0] & _B_NUMBER; - if (nbytes > (int) sizeof (short)) - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected short, got bigger (%dbits)", nbytes*8); - len = (*stream->read) (stream->physical, (char*)buf + 1, nbytes); - (*value) = 0; - while (pos <= nbytes) - (*value) = ((*value)*0x100) + buf[pos++]; - if (buf[0] & _B_SIGN) - (*value) = -(*value); - } - } - return len; -} - -inline int -objc_read_unsigned_short (struct objc_typed_stream *stream, - unsigned short *value) -{ - unsigned char buf[sizeof (unsigned short) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - if ((buf[0] & _B_CODE) == _B_SINT) - (*value) = (buf[0] & _B_VALUE); - - else - { - int pos = 1; - int nbytes = buf[0] & _B_NUMBER; - if (nbytes > (int) sizeof (short)) - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected short, got int or bigger"); - len = (*stream->read) (stream->physical, (char*)buf + 1, nbytes); - (*value) = 0; - while (pos <= nbytes) - (*value) = ((*value)*0x100) + buf[pos++]; - } - } - return len; -} - - -inline int -objc_read_int (struct objc_typed_stream *stream, int *value) -{ - unsigned char buf[sizeof (int) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - if ((buf[0] & _B_CODE) == _B_SINT) - (*value) = (buf[0] & _B_VALUE); - - else - { - int pos = 1; - int nbytes = buf[0] & _B_NUMBER; - if (nbytes > (int) sizeof (int)) - objc_error (nil, OBJC_ERR_BAD_DATA, "expected int, got bigger"); - len = (*stream->read) (stream->physical, (char*)buf + 1, nbytes); - (*value) = 0; - while (pos <= nbytes) - (*value) = ((*value)*0x100) + buf[pos++]; - if (buf[0] & _B_SIGN) - (*value) = -(*value); - } - } - return len; -} - -inline int -objc_read_long (struct objc_typed_stream *stream, long *value) -{ - unsigned char buf[sizeof (long) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - if ((buf[0] & _B_CODE) == _B_SINT) - (*value) = (buf[0] & _B_VALUE); - - else - { - int pos = 1; - int nbytes = buf[0] & _B_NUMBER; - if (nbytes > (int) sizeof (long)) - objc_error (nil, OBJC_ERR_BAD_DATA, "expected long, got bigger"); - len = (*stream->read) (stream->physical, (char*)buf + 1, nbytes); - (*value) = 0; - while (pos <= nbytes) - (*value) = ((*value)*0x100) + buf[pos++]; - if (buf[0] & _B_SIGN) - (*value) = -(*value); - } - } - return len; -} - -inline int -__objc_read_nbyte_uint (struct objc_typed_stream *stream, - unsigned int nbytes, unsigned int *val) -{ - int len; - unsigned int pos = 0; - unsigned char buf[sizeof (unsigned int) + 1]; - - if (nbytes > sizeof (int)) - objc_error (nil, OBJC_ERR_BAD_DATA, "expected int, got bigger"); - - len = (*stream->read) (stream->physical, (char*)buf, nbytes); - (*val) = 0; - while (pos < nbytes) - (*val) = ((*val)*0x100) + buf[pos++]; - return len; -} - - -inline int -objc_read_unsigned_int (struct objc_typed_stream *stream, - unsigned int *value) -{ - unsigned char buf[sizeof (unsigned int) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - if ((buf[0] & _B_CODE) == _B_SINT) - (*value) = (buf[0] & _B_VALUE); - - else - len = __objc_read_nbyte_uint (stream, (buf[0] & _B_VALUE), value); - - } - return len; -} - -int -__objc_read_nbyte_ulong (struct objc_typed_stream *stream, - unsigned int nbytes, unsigned long *val) -{ - int len; - unsigned int pos = 0; - unsigned char buf[sizeof (unsigned long) + 1]; - - if (nbytes > sizeof (long)) - objc_error (nil, OBJC_ERR_BAD_DATA, "expected long, got bigger"); - - len = (*stream->read) (stream->physical, (char*)buf, nbytes); - (*val) = 0; - while (pos < nbytes) - (*val) = ((*val)*0x100) + buf[pos++]; - return len; -} - - -inline int -objc_read_unsigned_long (struct objc_typed_stream *stream, - unsigned long *value) -{ - unsigned char buf[sizeof (unsigned long) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - if ((buf[0] & _B_CODE) == _B_SINT) - (*value) = (buf[0] & _B_VALUE); - - else - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), value); - - } - return len; -} - -inline int -objc_read_string (struct objc_typed_stream *stream, - char **string) -{ - unsigned char buf[sizeof (unsigned int) + 1]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - unsigned long key = 0; - - if ((buf[0]&_B_CODE) == _B_RCOMM) /* register following */ - { - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - len = (*stream->read) (stream->physical, (char*)buf, 1); - } - - switch (buf[0]&_B_CODE) { - case _B_SSTR: - { - int length = buf[0]&_B_VALUE; - (*string) = (char*)objc_malloc (length + 1); - if (key) - objc_hash_add (&stream->stream_table, LONG2PTR(key), *string); - len = (*stream->read) (stream->physical, *string, length); - (*string)[length] = '\0'; - } - break; - - case _B_UCOMM: - { - char *tmp; - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - tmp = objc_hash_value_for_key (stream->stream_table, LONG2PTR (key)); - *string = objc_malloc (strlen (tmp) + 1); - strcpy (*string, tmp); - } - break; - - case _B_NSTR: - { - unsigned int nbytes = buf[0]&_B_VALUE; - len = __objc_read_nbyte_uint (stream, nbytes, &nbytes); - if (len) { - (*string) = (char*)objc_malloc (nbytes + 1); - if (key) - objc_hash_add (&stream->stream_table, LONG2PTR(key), *string); - len = (*stream->read) (stream->physical, *string, nbytes); - (*string)[nbytes] = '\0'; - } - } - break; - - default: - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected string, got opcode %c\n", (buf[0]&_B_CODE)); - } - } - - return len; -} - - -int -objc_read_object (struct objc_typed_stream *stream, id *object) -{ - unsigned char buf[sizeof (unsigned int)]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - SEL read_sel = sel_get_any_uid ("read:"); - unsigned long key = 0; - - if ((buf[0]&_B_CODE) == _B_RCOMM) /* register common */ - { - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - len = (*stream->read) (stream->physical, (char*)buf, 1); - } - - if (buf[0] == (_B_EXT | _BX_OBJECT)) - { - Class class; - - /* get class */ - len = objc_read_class (stream, &class); - - /* create instance */ - (*object) = class_create_instance (class); - - /* register? */ - if (key) - objc_hash_add (&stream->object_table, LONG2PTR(key), *object); - - /* send -read: */ - if (__objc_responds_to (*object, read_sel)) - (*get_imp (class, read_sel)) (*object, read_sel, stream); - - /* check null-byte */ - len = (*stream->read) (stream->physical, (char*)buf, 1); - if (buf[0] != '\0') - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected null-byte, got opcode %c", buf[0]); - } - - else if ((buf[0]&_B_CODE) == _B_UCOMM) - { - if (key) - objc_error (nil, OBJC_ERR_BAD_KEY, "cannot register use upcode..."); - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - (*object) = objc_hash_value_for_key (stream->object_table, - LONG2PTR(key)); - } - - else if (buf[0] == (_B_EXT | _BX_OBJREF)) /* a forward reference */ - { - struct objc_list *other; - len = objc_read_unsigned_long (stream, &key); - other - = (struct objc_list *) objc_hash_value_for_key (stream->object_refs, - LONG2PTR(key)); - objc_hash_add (&stream->object_refs, LONG2PTR(key), - (void *)list_cons (object, other)); - } - - else if (buf[0] == (_B_EXT | _BX_OBJROOT)) /* a root object */ - { - if (key) - objc_error (nil, OBJC_ERR_BAD_KEY, - "cannot register root object..."); - len = objc_read_object (stream, object); - __objc_finish_read_root_object (stream); - } - - else - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected object, got opcode %c", buf[0]); - } - return len; -} - -static int -objc_read_class (struct objc_typed_stream *stream, Class *class) -{ - unsigned char buf[sizeof (unsigned int)]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - unsigned long key = 0; - - if ((buf[0]&_B_CODE) == _B_RCOMM) /* register following */ - { - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - len = (*stream->read) (stream->physical, (char*)buf, 1); - } - - if (buf[0] == (_B_EXT | _BX_CLASS)) - { - char temp[1] = ""; - char *class_name = temp; - unsigned long version; - - /* get class */ - len = objc_read_string (stream, &class_name); - (*class) = objc_get_class (class_name); - objc_free (class_name); - - /* register */ - if (key) - objc_hash_add (&stream->stream_table, LONG2PTR(key), *class); - - objc_read_unsigned_long (stream, &version); - objc_hash_add (&stream->class_table, - (*class)->name, (void *)version); - } - - else if ((buf[0]&_B_CODE) == _B_UCOMM) - { - if (key) - objc_error (nil, OBJC_ERR_BAD_KEY, "cannot register use upcode..."); - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - *class = objc_hash_value_for_key (stream->stream_table, - LONG2PTR(key)); - if (! *class) - objc_error (nil, OBJC_ERR_BAD_CLASS, - "cannot find class for key %lu", key); - } - - else - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected class, got opcode %c", buf[0]); - } - return len; -} - -int -objc_read_selector (struct objc_typed_stream *stream, SEL* selector) -{ - unsigned char buf[sizeof (unsigned int)]; - int len; - if ((len = (*stream->read) (stream->physical, (char*)buf, 1))) - { - unsigned long key = 0; - - if ((buf[0]&_B_CODE) == _B_RCOMM) /* register following */ - { - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - len = (*stream->read) (stream->physical, (char*)buf, 1); - } - - if (buf[0] == (_B_EXT|_BX_SEL)) /* selector! */ - { - char temp[1] = ""; - char *selector_name = temp; - - /* get selector */ - len = objc_read_string (stream, &selector_name); - /* To handle NULL selectors */ - if (0 == strlen (selector_name)) - { - (*selector) = (SEL)0; - return 0; - } - else - (*selector) = sel_get_any_uid (selector_name); - objc_free (selector_name); - - /* register */ - if (key) - objc_hash_add (&stream->stream_table, - LONG2PTR(key), (void *) *selector); - } - - else if ((buf[0]&_B_CODE) == _B_UCOMM) - { - if (key) - objc_error (nil, OBJC_ERR_BAD_KEY, "cannot register use upcode..."); - len = __objc_read_nbyte_ulong (stream, (buf[0] & _B_VALUE), &key); - (*selector) = objc_hash_value_for_key (stream->stream_table, - LONG2PTR(key)); - } - - else - objc_error (nil, OBJC_ERR_BAD_DATA, - "expected selector, got opcode %c", buf[0]); - } - return len; -} - -/* -** USER LEVEL FUNCTIONS -*/ - -/* -** Write one object, encoded in TYPE and pointed to by DATA to the -** typed stream STREAM. -*/ - -int -objc_write_type (TypedStream *stream, const char *type, const void *data) -{ - switch (*type) { - case _C_ID: - return objc_write_object (stream, *(id *) data); - break; - - case _C_CLASS: - return objc_write_class (stream, *(Class *) data); - break; - - case _C_SEL: - return objc_write_selector (stream, *(SEL *) data); - break; - - case _C_CHR: - return objc_write_char (stream, *(signed char *) data); - break; - - case _C_UCHR: - return objc_write_unsigned_char (stream, *(unsigned char *) data); - break; - - case _C_SHT: - return objc_write_short (stream, *(short *) data); - break; - - case _C_USHT: - return objc_write_unsigned_short (stream, *(unsigned short *) data); - break; - - case _C_INT: - return objc_write_int (stream, *(int *) data); - break; - - case _C_UINT: - return objc_write_unsigned_int (stream, *(unsigned int *) data); - break; - - case _C_LNG: - return objc_write_long (stream, *(long *) data); - break; - - case _C_ULNG: - return objc_write_unsigned_long (stream, *(unsigned long *) data); - break; - - case _C_CHARPTR: - return objc_write_string (stream, - *(unsigned char **) data, strlen (*(char **) data)); - break; - - case _C_ATOM: - return objc_write_string_atomic (stream, *(unsigned char **) data, - strlen (*(char **) data)); - break; - - case _C_ARY_B: - { - int len = atoi (type + 1); - while (isdigit ((unsigned char) *++type)) - ; - return objc_write_array (stream, type, len, data); - } - break; - - case _C_STRUCT_B: - { - int acc_size = 0; - int align; - while (*type != _C_STRUCT_E && *type++ != '=') - ; /* skip "=" */ - while (*type != _C_STRUCT_E) - { - align = objc_alignof_type (type); /* padd to alignment */ - acc_size = ROUND (acc_size, align); - objc_write_type (stream, type, ((char *) data) + acc_size); - acc_size += objc_sizeof_type (type); /* add component size */ - type = objc_skip_typespec (type); /* skip component */ - } - return 1; - } - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, - "objc_write_type: cannot parse typespec: %s\n", type); - return 0; - } - } -} - -/* -** Read one object, encoded in TYPE and pointed to by DATA to the -** typed stream STREAM. DATA specifies the address of the types to -** read. Expected type is checked against the type actually present -** on the stream. -*/ - -int -objc_read_type(TypedStream *stream, const char *type, void *data) -{ - char c; - switch (c = *type) { - case _C_ID: - return objc_read_object (stream, (id*)data); - break; - - case _C_CLASS: - return objc_read_class (stream, (Class*)data); - break; - - case _C_SEL: - return objc_read_selector (stream, (SEL*)data); - break; - - case _C_CHR: - return objc_read_char (stream, (char*)data); - break; - - case _C_UCHR: - return objc_read_unsigned_char (stream, (unsigned char*)data); - break; - - case _C_SHT: - return objc_read_short (stream, (short*)data); - break; - - case _C_USHT: - return objc_read_unsigned_short (stream, (unsigned short*)data); - break; - - case _C_INT: - return objc_read_int (stream, (int*)data); - break; - - case _C_UINT: - return objc_read_unsigned_int (stream, (unsigned int*)data); - break; - - case _C_LNG: - return objc_read_long (stream, (long*)data); - break; - - case _C_ULNG: - return objc_read_unsigned_long (stream, (unsigned long*)data); - break; - - case _C_CHARPTR: - case _C_ATOM: - return objc_read_string (stream, (char**)data); - break; - - case _C_ARY_B: - { - int len = atoi (type + 1); - while (isdigit ((unsigned char) *++type)) - ; - return objc_read_array (stream, type, len, data); - } - break; - - case _C_STRUCT_B: - { - int acc_size = 0; - int align; - while (*type != _C_STRUCT_E && *type++ != '=') - ; /* skip "=" */ - while (*type != _C_STRUCT_E) - { - align = objc_alignof_type (type); /* padd to alignment */ - acc_size = ROUND (acc_size, align); - objc_read_type (stream, type, ((char*)data)+acc_size); - acc_size += objc_sizeof_type (type); /* add component size */ - type = objc_skip_typespec (type); /* skip component */ - } - return 1; - } - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, - "objc_read_type: cannot parse typespec: %s\n", type); - return 0; - } - } -} - -/* -** Write the object specified by the template TYPE to STREAM. Last -** arguments specify addresses of values to be written. It might -** seem surprising to specify values by address, but this is extremely -** convenient for copy-paste with objc_read_types calls. A more -** down-to-the-earth cause for this passing of addresses is that values -** of arbitrary size is not well supported in ANSI C for functions with -** variable number of arguments. -*/ - -int -objc_write_types (TypedStream *stream, const char *type, ...) -{ - va_list args; - const char *c; - int res = 0; - - va_start(args, type); - - for (c = type; *c; c = objc_skip_typespec (c)) - { - switch (*c) { - case _C_ID: - res = objc_write_object (stream, *va_arg (args, id*)); - break; - - case _C_CLASS: - res = objc_write_class (stream, *va_arg (args, Class*)); - break; - - case _C_SEL: - res = objc_write_selector (stream, *va_arg (args, SEL*)); - break; - - case _C_CHR: - res = objc_write_char (stream, *va_arg (args, char*)); - break; - - case _C_UCHR: - res = objc_write_unsigned_char (stream, - *va_arg (args, unsigned char*)); - break; - - case _C_SHT: - res = objc_write_short (stream, *va_arg (args, short*)); - break; - - case _C_USHT: - res = objc_write_unsigned_short (stream, - *va_arg (args, unsigned short*)); - break; - - case _C_INT: - res = objc_write_int(stream, *va_arg (args, int*)); - break; - - case _C_UINT: - res = objc_write_unsigned_int(stream, *va_arg (args, unsigned int*)); - break; - - case _C_LNG: - res = objc_write_long(stream, *va_arg (args, long*)); - break; - - case _C_ULNG: - res = objc_write_unsigned_long(stream, *va_arg (args, unsigned long*)); - break; - - case _C_CHARPTR: - { - unsigned char **str = va_arg (args, unsigned char **); - res = objc_write_string (stream, *str, strlen ((char*)*str)); - } - break; - - case _C_ATOM: - { - unsigned char **str = va_arg (args, unsigned char **); - res = objc_write_string_atomic (stream, *str, strlen ((char*)*str)); - } - break; - - case _C_ARY_B: - { - int len = atoi (c + 1); - const char *t = c; - while (isdigit ((unsigned char) *++t)) - ; - res = objc_write_array (stream, t, len, va_arg (args, void *)); - t = objc_skip_typespec (t); - if (*t != _C_ARY_E) - objc_error (nil, OBJC_ERR_BAD_TYPE, "expected `]', got: %s", t); - } - break; - - default: - objc_error (nil, OBJC_ERR_BAD_TYPE, - "objc_write_types: cannot parse typespec: %s\n", type); - } - } - va_end(args); - return res; -} - - -/* -** Last arguments specify addresses of values to be read. Expected -** type is checked against the type actually present on the stream. -*/ - -int -objc_read_types(TypedStream *stream, const char *type, ...) -{ - va_list args; - const char *c; - int res = 0; - - va_start (args, type); - - for (c = type; *c; c = objc_skip_typespec(c)) - { - switch (*c) { - case _C_ID: - res = objc_read_object(stream, va_arg (args, id*)); - break; - - case _C_CLASS: - res = objc_read_class(stream, va_arg (args, Class*)); - break; - - case _C_SEL: - res = objc_read_selector(stream, va_arg (args, SEL*)); - break; - - case _C_CHR: - res = objc_read_char(stream, va_arg (args, char*)); - break; - - case _C_UCHR: - res = objc_read_unsigned_char(stream, va_arg (args, unsigned char*)); - break; - - case _C_SHT: - res = objc_read_short(stream, va_arg (args, short*)); - break; - - case _C_USHT: - res = objc_read_unsigned_short(stream, va_arg (args, unsigned short*)); - break; - - case _C_INT: - res = objc_read_int(stream, va_arg (args, int*)); - break; - - case _C_UINT: - res = objc_read_unsigned_int(stream, va_arg (args, unsigned int*)); - break; - - case _C_LNG: - res = objc_read_long(stream, va_arg (args, long*)); - break; - - case _C_ULNG: - res = objc_read_unsigned_long(stream, va_arg (args, unsigned long*)); - break; - - case _C_CHARPTR: - case _C_ATOM: - { - char **str = va_arg (args, char **); - res = objc_read_string (stream, str); - } - break; - - case _C_ARY_B: - { - int len = atoi (c + 1); - const char *t = c; - while (isdigit ((unsigned char) *++t)) - ; - res = objc_read_array (stream, t, len, va_arg (args, void *)); - t = objc_skip_typespec (t); - if (*t != _C_ARY_E) - objc_error (nil, OBJC_ERR_BAD_TYPE, "expected `]', got: %s", t); - } - break; - - default: - objc_error (nil, OBJC_ERR_BAD_TYPE, - "objc_read_types: cannot parse typespec: %s\n", type); - } - } - va_end (args); - return res; -} - -/* -** Write an array of COUNT elements of TYPE from the memory address DATA. -** This is equivalent of objc_write_type (stream, "[N]", data) -*/ - -int -objc_write_array (TypedStream *stream, const char *type, - int count, const void *data) -{ - int off = objc_sizeof_type(type); - const char *where = data; - - while (count-- > 0) - { - objc_write_type(stream, type, where); - where += off; - } - return 1; -} - -/* -** Read an array of COUNT elements of TYPE into the memory address -** DATA. The memory pointed to by data is supposed to be allocated -** by the callee. This is equivalent of -** objc_read_type (stream, "[N]", data) -*/ - -int -objc_read_array (TypedStream *stream, const char *type, - int count, void *data) -{ - int off = objc_sizeof_type(type); - char *where = (char*)data; - - while (count-- > 0) - { - objc_read_type(stream, type, where); - where += off; - } - return 1; -} - -static int -__objc_fread (FILE *file, char *data, int len) -{ - return fread(data, len, 1, file); -} - -static int -__objc_fwrite (FILE *file, char *data, int len) -{ - return fwrite(data, len, 1, file); -} - -static int -__objc_feof (FILE *file) -{ - return feof(file); -} - -static int -__objc_no_write (FILE *file __attribute__ ((__unused__)), - const char *data __attribute__ ((__unused__)), - int len __attribute__ ((__unused__))) -{ - objc_error (nil, OBJC_ERR_NO_WRITE, "TypedStream not open for writing"); - return 0; -} - -static int -__objc_no_read (FILE *file __attribute__ ((__unused__)), - const char *data __attribute__ ((__unused__)), - int len __attribute__ ((__unused__))) -{ - objc_error (nil, OBJC_ERR_NO_READ, "TypedStream not open for reading"); - return 0; -} - -static int -__objc_read_typed_stream_signature (TypedStream *stream) -{ - char buffer[80]; - int pos = 0; - do - (*stream->read) (stream->physical, buffer+pos, 1); - while (buffer[pos++] != '\0') - ; - sscanf (buffer, "GNU TypedStream %d", &stream->version); - if (stream->version != OBJC_TYPED_STREAM_VERSION) - objc_error (nil, OBJC_ERR_STREAM_VERSION, - "cannot handle TypedStream version %d", stream->version); - return 1; -} - -static int -__objc_write_typed_stream_signature (TypedStream *stream) -{ - char buffer[80]; - sprintf(buffer, "GNU TypedStream %d", OBJC_TYPED_STREAM_VERSION); - stream->version = OBJC_TYPED_STREAM_VERSION; - (*stream->write) (stream->physical, buffer, strlen (buffer) + 1); - return 1; -} - -static void __objc_finish_write_root_object(struct objc_typed_stream *stream) -{ - objc_hash_delete (stream->object_table); - stream->object_table = objc_hash_new (64, - (hash_func_type) objc_hash_ptr, - (compare_func_type) objc_compare_ptrs); -} - -static void __objc_finish_read_root_object(struct objc_typed_stream *stream) -{ - node_ptr node; - SEL awake_sel = sel_get_any_uid ("awake"); - cache_ptr free_list = objc_hash_new (64, - (hash_func_type) objc_hash_ptr, - (compare_func_type) objc_compare_ptrs); - - /* resolve object forward references */ - for (node = objc_hash_next (stream->object_refs, NULL); node; - node = objc_hash_next (stream->object_refs, node)) - { - struct objc_list *reflist = node->value; - const void *key = node->key; - id object = objc_hash_value_for_key (stream->object_table, key); - while (reflist) - { - *((id*) reflist->head) = object; - if (objc_hash_value_for_key (free_list,reflist) == NULL) - objc_hash_add (&free_list,reflist,reflist); - - reflist = reflist->tail; - } - } - - /* apply __objc_free to all objects stored in free_list */ - for (node = objc_hash_next (free_list, NULL); node; - node = objc_hash_next (free_list, node)) - objc_free ((void *) node->key); - - objc_hash_delete (free_list); - - /* empty object reference table */ - objc_hash_delete (stream->object_refs); - stream->object_refs = objc_hash_new (8, (hash_func_type) objc_hash_ptr, - (compare_func_type) objc_compare_ptrs); - - /* call -awake for all objects read */ - if (awake_sel) - { - for (node = objc_hash_next (stream->object_table, NULL); node; - node = objc_hash_next (stream->object_table, node)) - { - id object = node->value; - if (__objc_responds_to (object, awake_sel)) - (*objc_msg_lookup (object, awake_sel)) (object, awake_sel); - } - } - - /* empty object table */ - objc_hash_delete (stream->object_table); - stream->object_table = objc_hash_new(64, - (hash_func_type)objc_hash_ptr, - (compare_func_type)objc_compare_ptrs); -} - -/* -** Open the stream PHYSICAL in MODE -*/ - -TypedStream * -objc_open_typed_stream (FILE *physical, int mode) -{ - TypedStream *s = (TypedStream *) objc_malloc (sizeof (TypedStream)); - - s->mode = mode; - s->physical = physical; - s->stream_table = objc_hash_new (64, - (hash_func_type) objc_hash_ptr, - (compare_func_type) objc_compare_ptrs); - s->object_table = objc_hash_new (64, - (hash_func_type) objc_hash_ptr, - (compare_func_type) objc_compare_ptrs); - s->eof = (objc_typed_eof_func) __objc_feof; - s->flush = (objc_typed_flush_func) fflush; - s->writing_root_p = 0; - if (mode == OBJC_READONLY) - { - s->class_table - = objc_hash_new (8, (hash_func_type) objc_hash_string, - (compare_func_type) objc_compare_strings); - s->object_refs = objc_hash_new (8, (hash_func_type) objc_hash_ptr, - (compare_func_type) objc_compare_ptrs); - s->read = (objc_typed_read_func) __objc_fread; - s->write = (objc_typed_write_func) __objc_no_write; - __objc_read_typed_stream_signature (s); - } - else if (mode == OBJC_WRITEONLY) - { - s->class_table = 0; - s->object_refs = 0; - s->read = (objc_typed_read_func) __objc_no_read; - s->write = (objc_typed_write_func) __objc_fwrite; - __objc_write_typed_stream_signature (s); - } - else - { - objc_close_typed_stream (s); - return NULL; - } - s->type = OBJC_FILE_STREAM; - return s; -} - -/* -** Open the file named by FILE_NAME in MODE -*/ - -TypedStream* -objc_open_typed_stream_for_file (const char *file_name, int mode) -{ - FILE *file = NULL; - TypedStream *s; - - if (mode == OBJC_READONLY) - file = fopen (file_name, "r"); - else - file = fopen (file_name, "w"); - - if (file) - { - s = objc_open_typed_stream (file, mode); - if (s) - s->type |= OBJC_MANAGED_STREAM; - return s; - } - else - return NULL; -} - -/* -** Close STREAM freeing the structure it self. If it was opened with -** objc_open_typed_stream_for_file, the file will also be closed. -*/ - -void -objc_close_typed_stream (TypedStream *stream) -{ - if (stream->mode == OBJC_READONLY) - { - __objc_finish_read_root_object (stream); /* Just in case... */ - objc_hash_delete (stream->class_table); - objc_hash_delete (stream->object_refs); - } - - objc_hash_delete (stream->stream_table); - objc_hash_delete (stream->object_table); - - if (stream->type == (OBJC_MANAGED_STREAM | OBJC_FILE_STREAM)) - fclose ((FILE *)stream->physical); - - objc_free(stream); -} - -BOOL -objc_end_of_typed_stream (TypedStream *stream) -{ - return (*stream->eof) (stream->physical); -} - -void -objc_flush_typed_stream (TypedStream *stream) -{ - (*stream->flush) (stream->physical); -} - -long -objc_get_stream_class_version (TypedStream *stream, Class class) -{ - if (stream->class_table) - return PTR2LONG(objc_hash_value_for_key (stream->class_table, - class->name)); - else - return class_get_version (class); -} - diff --git a/libobjc/class.c b/libobjc/class.c deleted file mode 100644 index 4374852989ce..000000000000 --- a/libobjc/class.c +++ /dev/null @@ -1,703 +0,0 @@ -/* GNU Objective C Runtime class related functions - Copyright (C) 1993, 1995, 1996, 1997, 2001, 2002 - Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup and Dennis Glatting. - - Lock-free class table code designed and written from scratch by - Nicola Pero, 2001. - -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. - -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -/* - The code in this file critically affects class method invocation - speed. This long preamble comment explains why, and the issues - involved. - - - One of the traditional weaknesses of the GNU Objective-C runtime is - that class method invocations are slow. The reason is that when you - write - - array = [NSArray new]; - - this gets basically compiled into the equivalent of - - array = [(objc_get_class ("NSArray")) new]; - - objc_get_class returns the class pointer corresponding to the string - `NSArray'; and because of the lookup, the operation is more - complicated and slow than a simple instance method invocation. - - Most high performance Objective-C code (using the GNU Objc runtime) - I had the opportunity to read (or write) work around this problem by - caching the class pointer: - - Class arrayClass = [NSArray class]; - - ... later on ... - - array = [arrayClass new]; - array = [arrayClass new]; - array = [arrayClass new]; - - In this case, you always perform a class lookup (the first one), but - then all the [arrayClass new] methods run exactly as fast as an - instance method invocation. It helps if you have many class method - invocations to the same class. - - The long-term solution to this problem would be to modify the - compiler to output tables of class pointers corresponding to all the - class method invocations, and to add code to the runtime to update - these tables - that should in the end allow class method invocations - to perform precisely as fast as instance method invocations, because - no class lookup would be involved. I think the Apple Objective-C - runtime uses this technique. Doing this involves synchronized - modifications in the runtime and in the compiler. - - As a first medicine to the problem, I [NP] have redesigned and - rewritten the way the runtime is performing class lookup. This - doesn't give as much speed as the other (definitive) approach, but - at least a class method invocation now takes approximately 4.5 times - an instance method invocation on my machine (it would take approx 12 - times before the rewriting), which is a lot better. - - One of the main reason the new class lookup is so faster is because - I implemented it in a way that can safely run multithreaded without - using locks - a so-called `lock-free' data structure. The atomic - operation is pointer assignment. The reason why in this problem - lock-free data structures work so well is that you never remove - classes from the table - and the difficult thing with lock-free data - structures is freeing data when is removed from the structures. */ - -#include "objc/runtime.h" /* the kitchen sink */ -#include "objc/sarray.h" - -#include "objc/objc.h" -#include "objc/objc-api.h" -#include "objc/thr.h" - -/* We use a table which maps a class name to the corresponding class - * pointer. The first part of this file defines this table, and - * functions to do basic operations on the table. The second part of - * the file implements some higher level Objective-C functionality for - * classes by using the functions provided in the first part to manage - * the table. */ - -/** - ** Class Table Internals - **/ - -/* A node holding a class */ -typedef struct class_node -{ - struct class_node *next; /* Pointer to next entry on the list. - NULL indicates end of list. */ - - const char *name; /* The class name string */ - int length; /* The class name string length */ - Class pointer; /* The Class pointer */ - -} *class_node_ptr; - -/* A table containing classes is a class_node_ptr (pointing to the - first entry in the table - if it is NULL, then the table is - empty). */ - -/* We have 1024 tables. Each table contains all class names which - have the same hash (which is a number between 0 and 1023). To look - up a class_name, we compute its hash, and get the corresponding - table. Once we have the table, we simply compare strings directly - till we find the one which we want (using the length first). The - number of tables is quite big on purpose (a normal big application - has less than 1000 classes), so that you shouldn't normally get any - collisions, and get away with a single comparison (which we can't - avoid since we need to know that you have got the right thing). */ -#define CLASS_TABLE_SIZE 1024 -#define CLASS_TABLE_MASK 1023 - -static class_node_ptr class_table_array[CLASS_TABLE_SIZE]; - -/* The table writing mutex - we lock on writing to avoid conflicts - between different writers, but we read without locks. That is - possible because we assume pointer assignment to be an atomic - operation. */ -static objc_mutex_t __class_table_lock = NULL; - -/* CLASS_TABLE_HASH is how we compute the hash of a class name. It is - a macro - *not* a function - arguments *are* modified directly. - - INDEX should be a variable holding an int; - HASH should be a variable holding an int; - CLASS_NAME should be a variable holding a (char *) to the class_name. - - After the macro is executed, INDEX contains the length of the - string, and HASH the computed hash of the string; CLASS_NAME is - untouched. */ - -#define CLASS_TABLE_HASH(INDEX, HASH, CLASS_NAME) \ - HASH = 0; \ - for (INDEX = 0; CLASS_NAME[INDEX] != '\0'; INDEX++) \ - { \ - HASH = (HASH << 4) ^ (HASH >> 28) ^ CLASS_NAME[INDEX]; \ - } \ - \ - HASH = (HASH ^ (HASH >> 10) ^ (HASH >> 20)) & CLASS_TABLE_MASK; - -/* Setup the table. */ -static void -class_table_setup (void) -{ - /* Start - nothing in the table. */ - memset (class_table_array, 0, sizeof (class_node_ptr) * CLASS_TABLE_SIZE); - - /* The table writing mutex. */ - __class_table_lock = objc_mutex_allocate (); -} - - -/* Insert a class in the table (used when a new class is registered). */ -static void -class_table_insert (const char *class_name, Class class_pointer) -{ - int hash, length; - class_node_ptr new_node; - - /* Find out the class name's hash and length. */ - CLASS_TABLE_HASH (length, hash, class_name); - - /* Prepare the new node holding the class. */ - new_node = objc_malloc (sizeof (struct class_node)); - new_node->name = class_name; - new_node->length = length; - new_node->pointer = class_pointer; - - /* Lock the table for modifications. */ - objc_mutex_lock (__class_table_lock); - - /* Insert the new node in the table at the beginning of the table at - class_table_array[hash]. */ - new_node->next = class_table_array[hash]; - class_table_array[hash] = new_node; - - objc_mutex_unlock (__class_table_lock); -} - -/* Replace a class in the table (used only by poseAs:). */ -static void -class_table_replace (Class old_class_pointer, Class new_class_pointer) -{ - int hash; - class_node_ptr node; - - objc_mutex_lock (__class_table_lock); - - hash = 0; - node = class_table_array[hash]; - - while (hash < CLASS_TABLE_SIZE) - { - if (node == NULL) - { - hash++; - if (hash < CLASS_TABLE_SIZE) - { - node = class_table_array[hash]; - } - } - else - { - Class class1 = node->pointer; - - if (class1 == old_class_pointer) - { - node->pointer = new_class_pointer; - } - node = node->next; - } - } - - objc_mutex_unlock (__class_table_lock); -} - - -/* Get a class from the table. This does not need mutex protection. - Currently, this function is called each time you call a static - method, this is why it must be very fast. */ -static inline Class -class_table_get_safe (const char *class_name) -{ - class_node_ptr node; - int length, hash; - - /* Compute length and hash. */ - CLASS_TABLE_HASH (length, hash, class_name); - - node = class_table_array[hash]; - - if (node != NULL) - { - do - { - if (node->length == length) - { - /* Compare the class names. */ - int i; - - for (i = 0; i < length; i++) - { - if ((node->name)[i] != class_name[i]) - { - break; - } - } - - if (i == length) - { - /* They are equal! */ - return node->pointer; - } - } - } - while ((node = node->next) != NULL); - } - - return Nil; -} - -/* Enumerate over the class table. */ -struct class_table_enumerator -{ - int hash; - class_node_ptr node; -}; - - -static Class -class_table_next (struct class_table_enumerator **e) -{ - struct class_table_enumerator *enumerator = *e; - class_node_ptr next; - - if (enumerator == NULL) - { - *e = objc_malloc (sizeof (struct class_table_enumerator)); - enumerator = *e; - enumerator->hash = 0; - enumerator->node = NULL; - - next = class_table_array[enumerator->hash]; - } - else - { - next = enumerator->node->next; - } - - if (next != NULL) - { - enumerator->node = next; - return enumerator->node->pointer; - } - else - { - enumerator->hash++; - - while (enumerator->hash < CLASS_TABLE_SIZE) - { - next = class_table_array[enumerator->hash]; - if (next != NULL) - { - enumerator->node = next; - return enumerator->node->pointer; - } - enumerator->hash++; - } - - /* Ok - table finished - done. */ - objc_free (enumerator); - return Nil; - } -} - -#if 0 /* DEBUGGING FUNCTIONS */ -/* Debugging function - print the class table. */ -void -class_table_print (void) -{ - int i; - - for (i = 0; i < CLASS_TABLE_SIZE; i++) - { - class_node_ptr node; - - printf ("%d:\n", i); - node = class_table_array[i]; - - while (node != NULL) - { - printf ("\t%s\n", node->name); - node = node->next; - } - } -} - -/* Debugging function - print an histogram of number of classes in - function of hash key values. Useful to evaluate the hash function - in real cases. */ -void -class_table_print_histogram (void) -{ - int i, j; - int counter = 0; - - for (i = 0; i < CLASS_TABLE_SIZE; i++) - { - class_node_ptr node; - - node = class_table_array[i]; - - while (node != NULL) - { - counter++; - node = node->next; - } - if (((i + 1) % 50) == 0) - { - printf ("%4d:", i + 1); - for (j = 0; j < counter; j++) - { - printf ("X"); - } - printf ("\n"); - counter = 0; - } - } - printf ("%4d:", i + 1); - for (j = 0; j < counter; j++) - { - printf ("X"); - } - printf ("\n"); -} -#endif /* DEBUGGING FUNCTIONS */ - -/** - ** Objective-C runtime functions - **/ - -/* From now on, the only access to the class table data structure - should be via the class_table_* functions. */ - -/* This is a hook which is called by objc_get_class and - objc_lookup_class if the runtime is not able to find the class. - This may e.g. try to load in the class using dynamic loading. */ -Class (*_objc_lookup_class) (const char *name) = 0; /* !T:SAFE */ - - -/* True when class links has been resolved. */ -BOOL __objc_class_links_resolved = NO; /* !T:UNUSED */ - - -void -__objc_init_class_tables (void) -{ - /* Allocate the class hash table. */ - - if (__class_table_lock) - return; - - objc_mutex_lock (__objc_runtime_mutex); - - class_table_setup (); - - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* This function adds a class to the class hash table, and assigns the - class a number, unless it's already known. */ -void -__objc_add_class_to_hash (Class class) -{ - Class h_class; - - objc_mutex_lock (__objc_runtime_mutex); - - /* Make sure the table is there. */ - assert (__class_table_lock); - - /* Make sure it's not a meta class. */ - assert (CLS_ISCLASS (class)); - - /* Check to see if the class is already in the hash table. */ - h_class = class_table_get_safe (class->name); - if (! h_class) - { - /* The class isn't in the hash table. Add the class and assign a class - number. */ - static unsigned int class_number = 1; - - CLS_SETNUMBER (class, class_number); - CLS_SETNUMBER (class->class_pointer, class_number); - - ++class_number; - class_table_insert (class->name, class); - } - - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* Get the class object for the class named NAME. If NAME does not - identify a known class, the hook _objc_lookup_class is called. If - this fails, nil is returned. */ -Class -objc_lookup_class (const char *name) -{ - Class class; - - class = class_table_get_safe (name); - - if (class) - return class; - - if (_objc_lookup_class) - return (*_objc_lookup_class) (name); - else - return 0; -} - -/* Get the class object for the class named NAME. If NAME does not - identify a known class, the hook _objc_lookup_class is called. If - this fails, an error message is issued and the system aborts. */ -Class -objc_get_class (const char *name) -{ - Class class; - - class = class_table_get_safe (name); - - if (class) - return class; - - if (_objc_lookup_class) - class = (*_objc_lookup_class) (name); - - if (class) - return class; - - objc_error (nil, OBJC_ERR_BAD_CLASS, - "objc runtime: cannot find class %s\n", name); - return 0; -} - -MetaClass -objc_get_meta_class (const char *name) -{ - return objc_get_class (name)->class_pointer; -} - -/* This function provides a way to enumerate all the classes in the - executable. Pass *ENUM_STATE == NULL to start the enumeration. The - function will return 0 when there are no more classes. - For example: - id class; - void *es = NULL; - while ((class = objc_next_class (&es))) - ... do something with class; -*/ -Class -objc_next_class (void **enum_state) -{ - Class class; - - objc_mutex_lock (__objc_runtime_mutex); - - /* Make sure the table is there. */ - assert (__class_table_lock); - - class = class_table_next ((struct class_table_enumerator **) enum_state); - - objc_mutex_unlock (__objc_runtime_mutex); - - return class; -} - -/* Resolve super/subclass links for all classes. The only thing we - can be sure of is that the class_pointer for class objects point to - the right meta class objects. */ -void -__objc_resolve_class_links (void) -{ - struct class_table_enumerator *es = NULL; - Class object_class = objc_get_class ("Object"); - Class class1; - - assert (object_class); - - objc_mutex_lock (__objc_runtime_mutex); - - /* Assign subclass links. */ - while ((class1 = class_table_next (&es))) - { - /* Make sure we have what we think we have. */ - assert (CLS_ISCLASS (class1)); - assert (CLS_ISMETA (class1->class_pointer)); - - /* The class_pointer of all meta classes point to Object's meta - class. */ - class1->class_pointer->class_pointer = object_class->class_pointer; - - if (! CLS_ISRESOLV (class1)) - { - CLS_SETRESOLV (class1); - CLS_SETRESOLV (class1->class_pointer); - - if (class1->super_class) - { - Class a_super_class - = objc_get_class ((char *) class1->super_class); - - assert (a_super_class); - - DEBUG_PRINTF ("making class connections for: %s\n", - class1->name); - - /* Assign subclass links for superclass. */ - class1->sibling_class = a_super_class->subclass_list; - a_super_class->subclass_list = class1; - - /* Assign subclass links for meta class of superclass. */ - if (a_super_class->class_pointer) - { - class1->class_pointer->sibling_class - = a_super_class->class_pointer->subclass_list; - a_super_class->class_pointer->subclass_list - = class1->class_pointer; - } - } - else /* A root class, make its meta object be a subclass of - Object. */ - { - class1->class_pointer->sibling_class - = object_class->subclass_list; - object_class->subclass_list = class1->class_pointer; - } - } - } - - /* Assign superclass links. */ - es = NULL; - while ((class1 = class_table_next (&es))) - { - Class sub_class; - for (sub_class = class1->subclass_list; sub_class; - sub_class = sub_class->sibling_class) - { - sub_class->super_class = class1; - if (CLS_ISCLASS (sub_class)) - sub_class->class_pointer->super_class = class1->class_pointer; - } - } - - objc_mutex_unlock (__objc_runtime_mutex); -} - - - -#define CLASSOF(c) ((c)->class_pointer) - -Class -class_pose_as (Class impostor, Class super_class) -{ - if (! CLS_ISRESOLV (impostor)) - __objc_resolve_class_links (); - - /* Preconditions */ - assert (impostor); - assert (super_class); - assert (impostor->super_class == super_class); - assert (CLS_ISCLASS (impostor)); - assert (CLS_ISCLASS (super_class)); - assert (impostor->instance_size == super_class->instance_size); - - { - Class *subclass = &(super_class->subclass_list); - - /* Move subclasses of super_class to impostor. */ - while (*subclass) - { - Class nextSub = (*subclass)->sibling_class; - - if (*subclass != impostor) - { - Class sub = *subclass; - - /* Classes */ - sub->sibling_class = impostor->subclass_list; - sub->super_class = impostor; - impostor->subclass_list = sub; - - /* It will happen that SUB is not a class object if it is - the top of the meta class hierarchy chain (root - meta-class objects inherit their class object). If - that is the case... don't mess with the meta-meta - class. */ - if (CLS_ISCLASS (sub)) - { - /* Meta classes */ - CLASSOF (sub)->sibling_class = - CLASSOF (impostor)->subclass_list; - CLASSOF (sub)->super_class = CLASSOF (impostor); - CLASSOF (impostor)->subclass_list = CLASSOF (sub); - } - } - - *subclass = nextSub; - } - - /* Set subclasses of superclass to be impostor only. */ - super_class->subclass_list = impostor; - CLASSOF (super_class)->subclass_list = CLASSOF (impostor); - - /* Set impostor to have no sibling classes. */ - impostor->sibling_class = 0; - CLASSOF (impostor)->sibling_class = 0; - } - - /* Check relationship of impostor and super_class is kept. */ - assert (impostor->super_class == super_class); - assert (CLASSOF (impostor)->super_class == CLASSOF (super_class)); - - /* This is how to update the lookup table. Regardless of what the - keys of the hashtable is, change all values that are superclass - into impostor. */ - - objc_mutex_lock (__objc_runtime_mutex); - - class_table_replace (super_class, impostor); - - objc_mutex_unlock (__objc_runtime_mutex); - - /* Next, we update the dispatch tables... */ - __objc_update_dispatch_table_for_class (CLASSOF (impostor)); - __objc_update_dispatch_table_for_class (impostor); - - return impostor; -} diff --git a/libobjc/config.h.in b/libobjc/config.h.in deleted file mode 100644 index 51811a576b74..000000000000 --- a/libobjc/config.h.in +++ /dev/null @@ -1,58 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if the compiler has a thread header that is non single. */ -#undef HAVE_GTHR_DEFAULT - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SCHED_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define if the compiler is configured for setjmp/longjmp exceptions. */ -#undef SJLJ_EXCEPTIONS - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS diff --git a/libobjc/configure b/libobjc/configure deleted file mode 100755 index 59d556537169..000000000000 --- a/libobjc/configure +++ /dev/null @@ -1,6595 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for package-unused version-unused. -# -# Copyright (C) 2003 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME='package-unused' -PACKAGE_TARNAME='libobjc' -PACKAGE_VERSION='version-unused' -PACKAGE_STRING='package-unused version-unused' -PACKAGE_BUGREPORT='' - -ac_unique_file="objc/objc.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir VERSION OBJC_BOEHM_GC OBJC_BOEHM_GC_INCLUDES multi_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical glibcpp_srcdir toolexecdir toolexeclibdir includedirname libext CC ac_ct_CC EXEEXT OBJEXT extra_ldflags_libobjc CFLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LN_S STRIP ac_ct_STRIP LIBTOOL SET_MAKE CPP CPPFLAGS EGREP LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures package-unused version-unused to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of package-unused version-unused:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory - --enable-objc-gc enable the use of Boehm's garbage collector with - the GNU Objective-C runtime. - --enable-multilib build many library versions (default) - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-shared=PKGS build shared libraries default=yes - --enable-static=PKGS build static libraries default=yes - --enable-fast-install=PKGS optimize for fast installation default=yes - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-sjlj-exceptions - force use of builtin_setjmp for exceptions - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-build-libsubdir=DIR Directory where to find libraries for build system - --with-target-subdir=SUBDIR - configuring in a subdirectory - --with-cross-host=HOST configuring with a cross compiler - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-pic try to use only PIC/non-PIC objects default=use both - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF -package-unused configure version-unused -generated by GNU Autoconf 2.59 - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by package-unused $as_me version-unused, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - case ${build_alias} in - "") build_noncanonical=${build} ;; - *) build_noncanonical=${build_alias} ;; -esac - - case ${host_alias} in - "") host_noncanonical=${build_noncanonical} ;; - *) host_noncanonical=${host_alias} ;; -esac - - case ${target_alias} in - "") target_noncanonical=${host_noncanonical} ;; - *) target_noncanonical=${target_alias} ;; -esac - - -# post-stage1 host modules use a different CC_FOR_BUILD so, in order to -# have matching libraries, they should use host libraries: Makefile.tpl -# arranges to pass --with-build-libsubdir=$(HOST_SUBDIR). -# However, they still use the build modules, because the corresponding -# host modules (e.g. bison) are only built for the host when bootstrap -# finishes. So: -# - build_subdir is where we find build modules, and never changes. -# - build_libsubdir is where we find build libraries, and can be overridden. - -# Prefix 'build-' so this never conflicts with target_subdir. -build_subdir="build-${build_noncanonical}" - -# Check whether --with-build-libsubdir or --without-build-libsubdir was given. -if test "${with_build_libsubdir+set}" = set; then - withval="$with_build_libsubdir" - build_libsubdir="$withval" -else - build_libsubdir="$build_subdir" -fi; -# --srcdir=. covers the toplevel, while "test -d" covers the subdirectories -if ( test $srcdir = . && test -d gcc ) \ - || test -d $srcdir/../host-${host_noncanonical}; then - host_subdir="host-${host_noncanonical}" -else - host_subdir=. -fi -# No prefix. -target_subdir=${target_noncanonical} - - -# We need the following definitions because AC_PROG_LIBTOOL relies on them -PACKAGE=libobjc -# Version is pulled out to make it a bit easier to change using sed. -VERSION=2:0:0 - - -# This works around the fact that libtool configuration may change LD -# for this particular configuration, but some shells, instead of -# keeping the changes in LD private, export them just because LD is -# exported. -ORIGINAL_LD_FOR_MULTILIBS=$LD - -# ------- -# Options -# ------- - -# We use these options to decide which functions to include. - -# Check whether --with-target-subdir or --without-target-subdir was given. -if test "${with_target_subdir+set}" = set; then - withval="$with_target_subdir" - -fi; - -# Check whether --with-cross-host or --without-cross-host was given. -if test "${with_cross_host+set}" = set; then - withval="$with_cross_host" - -fi; - -echo "$as_me:$LINENO: checking for --enable-version-specific-runtime-libs" >&5 -echo $ECHO_N "checking for --enable-version-specific-runtime-libs... $ECHO_C" >&6 -# Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given. -if test "${enable_version_specific_runtime_libs+set}" = set; then - enableval="$enable_version_specific_runtime_libs" - case "$enableval" in - yes) version_specific_libs=yes ;; - no) version_specific_libs=no ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable version-specific libs" >&5 -echo "$as_me: error: Unknown argument to enable/disable version-specific libs" >&2;} - { (exit 1); exit 1; }; };; - esac -else - version_specific_libs=no -fi; -echo "$as_me:$LINENO: result: $version_specific_libs" >&5 -echo "${ECHO_T}$version_specific_libs" >&6 - -# Check whether --enable-objc-gc or --disable-objc-gc was given. -if test "${enable_objc_gc+set}" = set; then - enableval="$enable_objc_gc" - case $enable_objc_gc in - no) - OBJC_BOEHM_GC='' - OBJC_BOEHM_GC_INCLUDES='' - ;; - *) - OBJC_BOEHM_GC=libobjc_gc.la - OBJC_BOEHM_GC_INCLUDES='-I$(top_srcdir)/../boehm-gc/include -I../boehm-gc/include' - ;; -esac -else - OBJC_BOEHM_GC=''; OBJC_BOEHM_GC_INCLUDES='' -fi; - - - -# ----------- -# Directories -# ----------- - -# Find the rest of the source tree framework. -# Default to --enable-multilib -# Check whether --enable-multilib or --disable-multilib was given. -if test "${enable_multilib+set}" = set; then - enableval="$enable_multilib" - case "$enableval" in - yes) multilib=yes ;; - no) multilib=no ;; - *) { { echo "$as_me:$LINENO: error: bad value $enableval for multilib option" >&5 -echo "$as_me: error: bad value $enableval for multilib option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - multilib=yes -fi; - -# We may get other options which we leave undocumented: -# --with-target-subdir, --with-multisrctop, --with-multisubdir -# See config-ml.in if you want the gory details. - -if test "$srcdir" = "."; then - if test "$with_target_subdir" != "."; then - multi_basedir="$srcdir/$with_multisrctop../.." - else - multi_basedir="$srcdir/$with_multisrctop.." - fi -else - multi_basedir="$srcdir/.." -fi - - -# Even if the default multilib is not a cross compilation, -# it may be that some of the other multilibs are. -if test $cross_compiling = no && test $multilib = yes \ - && test "x${with_multisubdir}" != x ; then - cross_compiling=maybe -fi - - ac_config_commands="$ac_config_commands default-1" - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 -if test "${ac_cv_target+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 -target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - - -# Export source directory. -# These need to be absolute paths, yet at the same time need to -# canonicalize only relative paths, because then amd will not unmount -# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd. -case $srcdir in - \\/$* | ?:\\/*) glibcpp_srcdir=${srcdir} ;; - *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; -esac - - -# Calculate toolexeclibdir -# Also toolexecdir, though it's only used in toolexeclibdir -case ${version_specific_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_noncanonical)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_noncanonical)' - toolexeclibdir='$(toolexecdir)/lib' - else - toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac - - - -# Figure out if we want to name the include directory and the -# library name changes differently. -includedirname=include -libext= -case "${host}" in - *-darwin*) - # Darwin is the only target so far that needs a different include directory. - includedirname=include-gnu-runtime - libext=-gnu - ;; -esac - - - - ac_config_headers="$ac_config_headers config.h" - - -# -------- -# Programs -# -------- - - - -# We must force CC to /not/ be a precious variable; otherwise -# the wrong, non-multilib-adjusted value will be used in multilibs. -# As a side effect, we have to subst CFLAGS ourselves. - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# FIXME: Cleanup? -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - gcc_no_link=no -else - gcc_no_link=yes -fi - -if test x$gcc_no_link = xyes; then - # Setting cross_compile will disable run tests; it will - # also disable AC_CHECK_FILE but that's generally - # correct if we can't link. - cross_compiling=yes - EXEEXT= -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -fi -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -# extra LD Flags which are required for targets -case "${host}" in - *-darwin*) - # Darwin needs -single_module when linking libobjc - extra_ldflags_libobjc=-Wl,-single_module - ;; -esac - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AS="${ac_tool_prefix}as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - echo "$as_me:$LINENO: result: $AS" >&5 -echo "${ECHO_T}$AS" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AS="as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 -echo "${ECHO_T}$ac_ct_AS" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AS=$ac_ct_AS -else - AS="$ac_cv_prog_AS" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi; - echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 - - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - -# Enable Win32 DLL on MS Windows - FIXME - - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} -case $enableval in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_shared=yes -fi; -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} -case $enableval in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_static=yes -fi; -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} -case $enableval in -yes) enable_fast_install=yes ;; -no) enable_fast_install=no ;; -*) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac -else - enable_fast_install=yes -fi; - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - lt_cv_prog_gnu_ld=yes -else - lt_cv_prog_gnu_ld=no -fi -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -with_gnu_ld=$lt_cv_prog_gnu_ld - - -echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_reload_flag='-r' -fi -echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 -reload_flag=$lt_cv_ld_reload_flag -test -n "$reload_flag" && reload_flag=" $reload_flag" - -echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/${ac_tool_prefix}nm - if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then - lt_cv_path_NM="$tmp_nm -B" - break - elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - lt_cv_path_NM="$tmp_nm -p" - break - else - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi -fi - -NM="$lt_cv_path_NM" -echo "$as_me:$LINENO: result: $NM" >&5 -echo "${ECHO_T}$NM" >&6 - -echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 -fi - -echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 -echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [regex]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | mingw* |pw32*) - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - # this will be overwritten by pass_all, but leave it in just in case - lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd='/usr/bin/file -L' - case "$host_os" in - rhapsody* | darwin1.012) - lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' - ;; - *) # Darwin 1.3 on - lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' - ;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | kfreebsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20*|hpux11*) - case $host_cpu in - hppa*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - esac - ;; - -irix5* | irix6*) - case $host_os in - irix5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' - fi - ;; - -newsos6) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; - -sysv5uw[78]* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; -esac - -fi -echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method - - - - - -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - -# find the maximum length of command line arguments -echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for *BSD - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len" ; then - echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 -else - echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6 -fi - - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - - -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - - -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - -fi; -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" - - -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi; -test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" -test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 3774 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test x$gcc_no_link = xyes; then - { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5 -echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;} - { (exit 1); exit 1; }; } -fi -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - lt_cv_cc_needs_belf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -lt_cv_cc_needs_belf=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; - - -esac - - -# Save cache, so that ltconfig can load it -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ -AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ -objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ -deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \ -|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5 -echo "$as_me: error: libtool configure failed" >&2;} - { (exit 1); exit 1; }; } - -# Reload cache, that may have been modified by ltconfig -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log - - - - - - - -if test "x$CC" != xcc; then - echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 -echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 -echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6 -fi -set dummy $CC; ac_cc=`echo $2 | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5' -if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5' - if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f conftest* - -fi -if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cat >>confdefs.h <<\_ACEOF -#define NO_MINUS_C_MINUS_O 1 -_ACEOF - -fi - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - -# ------- -# Headers -# ------- - -# Sanity check for the cross-compilation case: -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -if test "${ac_cv_header_stdio_h+set}" = set; then - echo "$as_me:$LINENO: checking for stdio.h" >&5 -echo $ECHO_N "checking for stdio.h... $ECHO_C" >&6 -if test "${ac_cv_header_stdio_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdio_h" >&5 -echo "${ECHO_T}$ac_cv_header_stdio_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking stdio.h usability" >&5 -echo $ECHO_N "checking stdio.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking stdio.h presence" >&5 -echo $ECHO_N "checking stdio.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: stdio.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: stdio.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: stdio.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: stdio.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: stdio.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: stdio.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: stdio.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: stdio.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: stdio.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: stdio.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: stdio.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: stdio.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: stdio.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: stdio.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: stdio.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: stdio.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ----------------------------------------- ## -## Report this to the package-unused lists. ## -## ----------------------------------------- ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for stdio.h" >&5 -echo $ECHO_N "checking for stdio.h... $ECHO_C" >&6 -if test "${ac_cv_header_stdio_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_stdio_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdio_h" >&5 -echo "${ECHO_T}$ac_cv_header_stdio_h" >&6 - -fi -if test $ac_cv_header_stdio_h = yes; then - : -else - { { echo "$as_me:$LINENO: error: Can't find stdio.h. -You must have a usable C system for the target already installed, at least -including headers and, preferably, the library, before you can configure -the Objective C runtime system. If necessary, install gcc now with -\`LANGUAGES=c', then the target library, then build with \`LANGUAGES=objc'." >&5 -echo "$as_me: error: Can't find stdio.h. -You must have a usable C system for the target already installed, at least -including headers and, preferably, the library, before you can configure -the Objective C runtime system. If necessary, install gcc now with -\`LANGUAGES=c', then the target library, then build with \`LANGUAGES=objc'." >&2;} - { (exit 1); exit 1; }; } -fi - - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - - -for ac_header in sched.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ----------------------------------------- ## -## Report this to the package-unused lists. ## -## ----------------------------------------- ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -# ----------- -# Miscellanea -# ----------- - -echo "$as_me:$LINENO: checking for thread model used by GCC" >&5 -echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6 -target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` -echo "$as_me:$LINENO: result: $target_thread_file" >&5 -echo "${ECHO_T}$target_thread_file" >&6 - -if test $target_thread_file != single; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GTHR_DEFAULT 1 -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking for exception model to use" >&5 -echo $ECHO_N "checking for exception model to use... $ECHO_C" >&6 -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# Check whether --enable-sjlj-exceptions or --disable-sjlj-exceptions was given. -if test "${enable_sjlj_exceptions+set}" = set; then - enableval="$enable_sjlj_exceptions" - : -else - cat > conftest.$ac_ext << EOF -#line 5202 "configure" -@interface Frob -@end -@implementation Frob -@end -int proc(); -int foo() -{ - @try { - return proc(); - } - @catch (Frob* ex) { - return 0; - } -} -EOF -old_CFLAGS="$CFLAGS" -CFLAGS="-x objective-c -fgnu-runtime -fobjc-exceptions -S" -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes - elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=no - fi -fi -CFLAGS="$old_CFLAGS" -rm -f conftest* -fi; -if test x$enable_sjlj_exceptions = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define SJLJ_EXCEPTIONS 1 -_ACEOF - - ac_exception_model_name=sjlj -elif test x$enable_sjlj_exceptions = xno; then - ac_exception_model_name="call frame" -else - { { echo "$as_me:$LINENO: error: unable to detect exception model" >&5 -echo "$as_me: error: unable to detect exception model" >&2;} - { (exit 1); exit 1; }; } -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -echo "$as_me:$LINENO: result: $ac_exception_model_name" >&5 -echo "${ECHO_T}$ac_exception_model_name" >&6 - -# ------ -# Output -# ------ - - ac_config_files="$ac_config_files Makefile" - - - ac_config_commands="$ac_config_commands default" - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by package-unused $as_me version-unused, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -package-unused config.status version-unused -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - - -srcdir="$srcdir" -host="$host" -target="$target" -with_multisubdir="$with_multisubdir" -with_multisrctop="$with_multisrctop" -with_target_subdir="$with_target_subdir" -ac_configure_args="${multilib_arg} ${ac_configure_args}" -multi_basedir="$multi_basedir" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC" -srcdir=${srcdir} -host=${host} -target=${target} -with_target_subdir=${with_target_subdir} -with_multisubdir=${with_multisubdir} -ac_configure_args="--enable-multilib ${ac_configure_args}" -multi_basedir=${multi_basedir} -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" - - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@build_libsubdir@,$build_libsubdir,;t t -s,@build_subdir@,$build_subdir,;t t -s,@host_subdir@,$host_subdir,;t t -s,@target_subdir@,$target_subdir,;t t -s,@VERSION@,$VERSION,;t t -s,@OBJC_BOEHM_GC@,$OBJC_BOEHM_GC,;t t -s,@OBJC_BOEHM_GC_INCLUDES@,$OBJC_BOEHM_GC_INCLUDES,;t t -s,@multi_basedir@,$multi_basedir,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@target_noncanonical@,$target_noncanonical,;t t -s,@glibcpp_srcdir@,$glibcpp_srcdir,;t t -s,@toolexecdir@,$toolexecdir,;t t -s,@toolexeclibdir@,$toolexeclibdir,;t t -s,@includedirname@,$includedirname,;t t -s,@libext@,$libext,;t t -s,@CC@,$CC,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@extra_ldflags_libobjc@,$extra_ldflags_libobjc,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@AS@,$AS,;t t -s,@ac_ct_AS@,$ac_ct_AS,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t -s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t -s,@MAINT@,$MAINT,;t t -s,@LN_S@,$LN_S,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@LIBTOOL@,$LIBTOOL,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@CPP@,$CPP,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@EGREP@,$EGREP,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - default-1 ) -# Only add multilib support code if we just rebuilt the top-level -# Makefile. -case " $CONFIG_FILES " in - *" Makefile "*) - ac_file=Makefile . ${multi_basedir}/config-ml.in - ;; -esac ;; - default ) if test -n "$CONFIG_FILES"; then - if test -n "${with_target_subdir}"; then - # FIXME: We shouldn't need to set ac_file - ac_file=Makefile - LD="${ORIGINAL_LD_FOR_MULTILIBS}" - . ${multi_basedir}/config-ml.in - fi -fi ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/libobjc/configure.ac b/libobjc/configure.ac deleted file mode 100644 index fca4418bb5d6..000000000000 --- a/libobjc/configure.ac +++ /dev/null @@ -1,296 +0,0 @@ -# Process this file with autoconf to produce a configure script. -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 -# 2005, 2006 Free Software Foundation, Inc. -# Originally contributed by Dave Love (d.love@dl.ac.uk). -# -#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. -# -#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, 51 Franklin Street, Fifth Floor, Boston, MA -#02110-1301, USA. - -AC_PREREQ(2.59) -AC_INIT(package-unused, version-unused,, libobjc) -AC_CONFIG_SRCDIR([objc/objc.h]) -GCC_TOPLEV_SUBDIRS - -# We need the following definitions because AC_PROG_LIBTOOL relies on them -PACKAGE=libobjc -# Version is pulled out to make it a bit easier to change using sed. -VERSION=2:0:0 -AC_SUBST(VERSION) - -# This works around the fact that libtool configuration may change LD -# for this particular configuration, but some shells, instead of -# keeping the changes in LD private, export them just because LD is -# exported. -ORIGINAL_LD_FOR_MULTILIBS=$LD - -# ------- -# Options -# ------- - -# We use these options to decide which functions to include. -AC_ARG_WITH(target-subdir, -[ --with-target-subdir=SUBDIR - configuring in a subdirectory]) -AC_ARG_WITH(cross-host, -[ --with-cross-host=HOST configuring with a cross compiler]) - -AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) -AC_ARG_ENABLE(version-specific-runtime-libs, -[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], -[case "$enableval" in - yes) version_specific_libs=yes ;; - no) version_specific_libs=no ;; - *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; - esac], -[version_specific_libs=no]) -AC_MSG_RESULT($version_specific_libs) - -AC_ARG_ENABLE(objc-gc, -[ --enable-objc-gc enable the use of Boehm's garbage collector with - the GNU Objective-C runtime.], -[case $enable_objc_gc in - no) - OBJC_BOEHM_GC='' - OBJC_BOEHM_GC_INCLUDES='' - ;; - *) - OBJC_BOEHM_GC=libobjc_gc.la - OBJC_BOEHM_GC_INCLUDES='-I$(top_srcdir)/../boehm-gc/include -I../boehm-gc/include' - ;; -esac], -[OBJC_BOEHM_GC=''; OBJC_BOEHM_GC_INCLUDES='']) -AC_SUBST(OBJC_BOEHM_GC) -AC_SUBST(OBJC_BOEHM_GC_INCLUDES) - -# ----------- -# Directories -# ----------- - -# Find the rest of the source tree framework. -AM_ENABLE_MULTILIB(, ..) - -AC_CANONICAL_SYSTEM -ACX_NONCANONICAL_TARGET - -# Export source directory. -# These need to be absolute paths, yet at the same time need to -# canonicalize only relative paths, because then amd will not unmount -# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd. -case $srcdir in - [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;; - *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; -esac -AC_SUBST(glibcpp_srcdir) - -# Calculate toolexeclibdir -# Also toolexecdir, though it's only used in toolexeclibdir -case ${version_specific_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_noncanonical)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_noncanonical)' - toolexeclibdir='$(toolexecdir)/lib' - else - toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac -AC_SUBST(toolexecdir) -AC_SUBST(toolexeclibdir) - -# Figure out if we want to name the include directory and the -# library name changes differently. -includedirname=include -libext= -case "${host}" in - *-darwin*) - # Darwin is the only target so far that needs a different include directory. - includedirname=include-gnu-runtime - libext=-gnu - ;; -esac -AC_SUBST(includedirname) -AC_SUBST(libext) - -AC_CONFIG_HEADERS(config.h) - -# -------- -# Programs -# -------- - -GCC_NO_EXECUTABLES - -# We must force CC to /not/ be a precious variable; otherwise -# the wrong, non-multilib-adjusted value will be used in multilibs. -# As a side effect, we have to subst CFLAGS ourselves. -m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) -m4_define([_AC_ARG_VAR_PRECIOUS],[]) -AC_PROG_CC -m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) - -# extra LD Flags which are required for targets -case "${host}" in - *-darwin*) - # Darwin needs -single_module when linking libobjc - extra_ldflags_libobjc=-Wl,-single_module - ;; -esac -AC_SUBST(extra_ldflags_libobjc) - -AC_SUBST(CFLAGS) - -AC_CHECK_TOOL(AS, as) -AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_PROG_INSTALL - -AM_MAINTAINER_MODE - -# Enable Win32 DLL on MS Windows - FIXME -AC_LIBTOOL_WIN32_DLL - -AC_PROG_LIBTOOL - -AM_PROG_CC_C_O - -AC_PROG_MAKE_SET - -# ------- -# Headers -# ------- - -# Sanity check for the cross-compilation case: -AC_CHECK_HEADER(stdio.h,:, - [AC_MSG_ERROR([Can't find stdio.h. -You must have a usable C system for the target already installed, at least -including headers and, preferably, the library, before you can configure -the Objective C runtime system. If necessary, install gcc now with -\`LANGUAGES=c', then the target library, then build with \`LANGUAGES=objc'.])]) - -AC_HEADER_STDC - -AC_CHECK_HEADERS(sched.h) - -# ----------- -# Miscellanea -# ----------- - -AC_MSG_CHECKING([for thread model used by GCC]) -target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` -AC_MSG_RESULT([$target_thread_file]) - -if test $target_thread_file != single; then - AC_DEFINE(HAVE_GTHR_DEFAULT, 1, - [Define if the compiler has a thread header that is non single.]) -fi - - -AC_MSG_CHECKING([for exception model to use]) -AC_LANG_PUSH(C) -AC_ARG_ENABLE(sjlj-exceptions, - AS_HELP_STRING([--enable-sjlj-exceptions], - [force use of builtin_setjmp for exceptions]), -[:], -[dnl Botheration. Now we've got to detect the exception model. -dnl Link tests against libgcc.a are problematic since -- at least -dnl as of this writing -- we've not been given proper -L bits for -dnl single-tree newlib and libgloss. -dnl -dnl This is what AC_TRY_COMPILE would do if it didn't delete the -dnl conftest files before we got a change to grep them first. -cat > conftest.$ac_ext << EOF -[#]line __oline__ "configure" -@interface Frob -@end -@implementation Frob -@end -int proc(); -int foo() -{ - @try { - return proc(); - } - @catch (Frob* ex) { - return 0; - } -} -EOF -old_CFLAGS="$CFLAGS" -dnl work around that we don't have Objective-C support in autoconf -CFLAGS="-x objective-c -fgnu-runtime -fobjc-exceptions -S" -if AC_TRY_EVAL(ac_compile); then - if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes - elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=no - fi -fi -CFLAGS="$old_CFLAGS" -rm -f conftest*]) -if test x$enable_sjlj_exceptions = xyes; then - AC_DEFINE(SJLJ_EXCEPTIONS, 1, - [Define if the compiler is configured for setjmp/longjmp exceptions.]) - ac_exception_model_name=sjlj -elif test x$enable_sjlj_exceptions = xno; then - ac_exception_model_name="call frame" -else - AC_MSG_ERROR([unable to detect exception model]) -fi -AC_LANG_POP(C) -AC_MSG_RESULT($ac_exception_model_name) - -# ------ -# Output -# ------ - -AC_CONFIG_FILES([Makefile]) - -AC_CONFIG_COMMANDS([default], -[[if test -n "$CONFIG_FILES"; then - if test -n "${with_target_subdir}"; then - # FIXME: We shouldn't need to set ac_file - ac_file=Makefile - LD="${ORIGINAL_LD_FOR_MULTILIBS}" - . ${multi_basedir}/config-ml.in - fi -fi]], -[[srcdir=${srcdir} -host=${host} -target=${target} -with_target_subdir=${with_target_subdir} -with_multisubdir=${with_multisubdir} -ac_configure_args="--enable-multilib ${ac_configure_args}" -multi_basedir=${multi_basedir} -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" -]]) - -AC_OUTPUT diff --git a/libobjc/encoding.c b/libobjc/encoding.c deleted file mode 100644 index 21a785814dc8..000000000000 --- a/libobjc/encoding.c +++ /dev/null @@ -1,1083 +0,0 @@ -/* Encoding of types for Objective C. - Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2004 - Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - Bitfield support by Ovidiu Predescu - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -/* FIXME: This file has no business including tm.h. */ - -#include "tconfig.h" -#include "coretypes.h" -#include "tm.h" -#include "objc/objc-api.h" -#include "objc/encoding.h" -#include - -#undef MAX -#define MAX(X, Y) \ - ({ typeof (X) __x = (X), __y = (Y); \ - (__x > __y ? __x : __y); }) - -#undef MIN -#define MIN(X, Y) \ - ({ typeof (X) __x = (X), __y = (Y); \ - (__x < __y ? __x : __y); }) - -#undef ROUND -#define ROUND(V, A) \ - ({ typeof (V) __v = (V); typeof (A) __a = (A); \ - __a * ((__v+__a - 1)/__a); }) - - -/* Various hacks for objc_layout_record. These are used by the target - macros. */ - -#define TREE_CODE(TYPE) *(TYPE) -#define TREE_TYPE(TREE) (TREE) - -#define RECORD_TYPE _C_STRUCT_B -#define UNION_TYPE _C_UNION_B -#define QUAL_UNION_TYPE _C_UNION_B -#define ARRAY_TYPE _C_ARY_B - -#define REAL_TYPE _C_DBL - -#define VECTOR_TYPE _C_VECTOR - -#define TYPE_FIELDS(TYPE) ({const char *_field = (TYPE)+1; \ - while (*_field != _C_STRUCT_E && *_field != _C_STRUCT_B \ - && *_field != _C_UNION_B && *_field++ != '=') \ - /* do nothing */; \ - _field;}) - -#define DECL_MODE(TYPE) *(TYPE) -#define TYPE_MODE(TYPE) *(TYPE) - -#define DFmode _C_DBL - -#define get_inner_array_type(TYPE) ({const char *_field = (TYPE); \ - while (*_field == _C_ARY_B)\ - {\ - while (isdigit ((unsigned char)*++_field))\ - ;\ - }\ - _field;}) - -/* Some ports (eg ARM) allow the structure size boundary to be - selected at compile-time. We override the normal definition with - one that has a constant value for this compilation. */ -#ifndef BITS_PER_UNIT -#define BITS_PER_UNIT 8 -#endif -#undef STRUCTURE_SIZE_BOUNDARY -#define STRUCTURE_SIZE_BOUNDARY (BITS_PER_UNIT * sizeof (struct{char a;})) - -/* Some ROUND_TYPE_ALIGN macros use TARGET_foo, and consequently - target_flags. Define a dummy entry here to so we don't die. - We have to rename it because target_flags may already have been - declared extern. */ -#define target_flags not_target_flags -static int __attribute__ ((__unused__)) not_target_flags = 0; - -/* Some ROUND_TYPE_ALIGN use ALTIVEC_VECTOR_MODE (rs6000 darwin). - Define a dummy ALTIVEC_VECTOR_MODE so it will not die. */ -#undef ALTIVEC_VECTOR_MODE -#define ALTIVEC_VECTOR_MODE(MODE) (0) - - -/* FIXME: while this file has no business including tm.h, this - definitely has no business defining this macro but it - is only way around without really rewritting this file, - should look after the branch of 3.4 to fix this. */ -#define rs6000_special_round_type_align(STRUCT, COMPUTED, SPECIFIED) \ - ({ const char *_fields = TYPE_FIELDS (STRUCT); \ - ((_fields != 0 \ - && TYPE_MODE (TREE_CODE (TREE_TYPE (_fields)) == ARRAY_TYPE \ - ? get_inner_array_type (_fields) \ - : TREE_TYPE (_fields)) == DFmode) \ - ? MAX (MAX (COMPUTED, SPECIFIED), 64) \ - : MAX (COMPUTED, SPECIFIED));}) - -/* - return the size of an object specified by type -*/ - -int -objc_sizeof_type (const char *type) -{ - /* Skip the variable name if any */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - - switch (*type) { - case _C_BOOL: - return sizeof (_Bool); - break; - - case _C_ID: - return sizeof (id); - break; - - case _C_CLASS: - return sizeof (Class); - break; - - case _C_SEL: - return sizeof (SEL); - break; - - case _C_CHR: - return sizeof (char); - break; - - case _C_UCHR: - return sizeof (unsigned char); - break; - - case _C_SHT: - return sizeof (short); - break; - - case _C_USHT: - return sizeof (unsigned short); - break; - - case _C_INT: - return sizeof (int); - break; - - case _C_UINT: - return sizeof (unsigned int); - break; - - case _C_LNG: - return sizeof (long); - break; - - case _C_ULNG: - return sizeof (unsigned long); - break; - - case _C_LNG_LNG: - return sizeof (long long); - break; - - case _C_ULNG_LNG: - return sizeof (unsigned long long); - break; - - case _C_FLT: - return sizeof (float); - break; - - case _C_DBL: - return sizeof (double); - break; - - case _C_VOID: - return sizeof (void); - break; - - case _C_PTR: - case _C_ATOM: - case _C_CHARPTR: - return sizeof (char *); - break; - - case _C_ARY_B: - { - int len = atoi (type + 1); - while (isdigit ((unsigned char)*++type)) - ; - return len * objc_aligned_size (type); - } - break; - - case _C_BFLD: - { - /* The new encoding of bitfields is: b 'position' 'type' 'size' */ - int position, size; - int startByte, endByte; - - position = atoi (type + 1); - while (isdigit ((unsigned char)*++type)) - ; - size = atoi (type + 1); - - startByte = position / BITS_PER_UNIT; - endByte = (position + size) / BITS_PER_UNIT; - return endByte - startByte; - } - - case _C_UNION_B: - case _C_STRUCT_B: - { - struct objc_struct_layout layout; - unsigned int size; - - objc_layout_structure (type, &layout); - while (objc_layout_structure_next_member (&layout)) - /* do nothing */ ; - objc_layout_finish_structure (&layout, &size, NULL); - - return size; - } - - case _C_COMPLEX: - { - type++; /* Skip after the 'j'. */ - switch (*type) - { - case _C_CHR: - return sizeof (_Complex char); - break; - - case _C_UCHR: - return sizeof (_Complex unsigned char); - break; - - case _C_SHT: - return sizeof (_Complex short); - break; - - case _C_USHT: - return sizeof (_Complex unsigned short); - break; - - case _C_INT: - return sizeof (_Complex int); - break; - - case _C_UINT: - return sizeof (_Complex unsigned int); - break; - - case _C_LNG: - return sizeof (_Complex long); - break; - - case _C_ULNG: - return sizeof (_Complex unsigned long); - break; - - case _C_LNG_LNG: - return sizeof (_Complex long long); - break; - - case _C_ULNG_LNG: - return sizeof (_Complex unsigned long long); - break; - - case _C_FLT: - return sizeof (_Complex float); - break; - - case _C_DBL: - return sizeof (_Complex double); - break; - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, "unknown complex type %s\n", - type); - return 0; - } - } - } - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, "unknown type %s\n", type); - return 0; - } - } -} - - -/* - Return the alignment of an object specified by type -*/ - -int -objc_alignof_type (const char *type) -{ - /* Skip the variable name if any */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - switch (*type) { - case _C_BOOL: - return __alignof__ (_Bool); - break; - - case _C_ID: - return __alignof__ (id); - break; - - case _C_CLASS: - return __alignof__ (Class); - break; - - case _C_SEL: - return __alignof__ (SEL); - break; - - case _C_CHR: - return __alignof__ (char); - break; - - case _C_UCHR: - return __alignof__ (unsigned char); - break; - - case _C_SHT: - return __alignof__ (short); - break; - - case _C_USHT: - return __alignof__ (unsigned short); - break; - - case _C_INT: - return __alignof__ (int); - break; - - case _C_UINT: - return __alignof__ (unsigned int); - break; - - case _C_LNG: - return __alignof__ (long); - break; - - case _C_ULNG: - return __alignof__ (unsigned long); - break; - - case _C_LNG_LNG: - return __alignof__ (long long); - break; - - case _C_ULNG_LNG: - return __alignof__ (unsigned long long); - break; - - case _C_FLT: - return __alignof__ (float); - break; - - case _C_DBL: - return __alignof__ (double); - break; - - case _C_PTR: - case _C_ATOM: - case _C_CHARPTR: - return __alignof__ (char *); - break; - - case _C_ARY_B: - while (isdigit ((unsigned char)*++type)) - /* do nothing */; - return objc_alignof_type (type); - - case _C_STRUCT_B: - case _C_UNION_B: - { - struct objc_struct_layout layout; - unsigned int align; - - objc_layout_structure (type, &layout); - while (objc_layout_structure_next_member (&layout)) - /* do nothing */; - objc_layout_finish_structure (&layout, NULL, &align); - - return align; - } - - - case _C_COMPLEX: - { - type++; /* Skip after the 'j'. */ - switch (*type) - { - case _C_CHR: - return __alignof__ (_Complex char); - break; - - case _C_UCHR: - return __alignof__ (_Complex unsigned char); - break; - - case _C_SHT: - return __alignof__ (_Complex short); - break; - - case _C_USHT: - return __alignof__ (_Complex unsigned short); - break; - - case _C_INT: - return __alignof__ (_Complex int); - break; - - case _C_UINT: - return __alignof__ (_Complex unsigned int); - break; - - case _C_LNG: - return __alignof__ (_Complex long); - break; - - case _C_ULNG: - return __alignof__ (_Complex unsigned long); - break; - - case _C_LNG_LNG: - return __alignof__ (_Complex long long); - break; - - case _C_ULNG_LNG: - return __alignof__ (_Complex unsigned long long); - break; - - case _C_FLT: - return __alignof__ (_Complex float); - break; - - case _C_DBL: - return __alignof__ (_Complex double); - break; - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, "unknown complex type %s\n", - type); - return 0; - } - } - } - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, "unknown type %s\n", type); - return 0; - } - } -} - -/* - The aligned size if the size rounded up to the nearest alignment. -*/ - -int -objc_aligned_size (const char *type) -{ - int size, align; - - /* Skip the variable name */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - - size = objc_sizeof_type (type); - align = objc_alignof_type (type); - - return ROUND (size, align); -} - -/* - The size rounded up to the nearest integral of the wordsize, taken - to be the size of a void *. -*/ - -int -objc_promoted_size (const char *type) -{ - int size, wordsize; - - /* Skip the variable name */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - - size = objc_sizeof_type (type); - wordsize = sizeof (void *); - - return ROUND (size, wordsize); -} - -/* - Skip type qualifiers. These may eventually precede typespecs - occurring in method prototype encodings. -*/ - -inline const char * -objc_skip_type_qualifiers (const char *type) -{ - while (*type == _C_CONST - || *type == _C_IN - || *type == _C_INOUT - || *type == _C_OUT - || *type == _C_BYCOPY - || *type == _C_BYREF - || *type == _C_ONEWAY - || *type == _C_GCINVISIBLE) - { - type += 1; - } - return type; -} - - -/* - Skip one typespec element. If the typespec is prepended by type - qualifiers, these are skipped as well. -*/ - -const char * -objc_skip_typespec (const char *type) -{ - /* Skip the variable name if any */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - - type = objc_skip_type_qualifiers (type); - - switch (*type) { - - case _C_ID: - /* An id may be annotated by the actual type if it is known - with the @"ClassName" syntax */ - - if (*++type != '"') - return type; - else - { - while (*++type != '"') - /* do nothing */; - return type + 1; - } - - /* The following are one character type codes */ - case _C_CLASS: - case _C_SEL: - case _C_CHR: - case _C_UCHR: - case _C_CHARPTR: - case _C_ATOM: - case _C_SHT: - case _C_USHT: - case _C_INT: - case _C_UINT: - case _C_LNG: - case _C_BOOL: - case _C_ULNG: - case _C_LNG_LNG: - case _C_ULNG_LNG: - case _C_FLT: - case _C_DBL: - case _C_VOID: - case _C_UNDEF: - return ++type; - break; - - case _C_COMPLEX: - return type + 2; - break; - - case _C_ARY_B: - /* skip digits, typespec and closing ']' */ - - while (isdigit ((unsigned char)*++type)) - ; - type = objc_skip_typespec (type); - if (*type == _C_ARY_E) - return ++type; - else - { - objc_error (nil, OBJC_ERR_BAD_TYPE, "bad array type %s\n", type); - return 0; - } - - case _C_BFLD: - /* The new encoding of bitfields is: b 'position' 'type' 'size' */ - while (isdigit ((unsigned char)*++type)) - ; /* skip position */ - while (isdigit ((unsigned char)*++type)) - ; /* skip type and size */ - return type; - - case _C_STRUCT_B: - /* skip name, and elements until closing '}' */ - - while (*type != _C_STRUCT_E && *type++ != '=') - ; - while (*type != _C_STRUCT_E) - { - type = objc_skip_typespec (type); - } - return ++type; - - case _C_UNION_B: - /* skip name, and elements until closing ')' */ - - while (*type != _C_UNION_E && *type++ != '=') - ; - while (*type != _C_UNION_E) - { - type = objc_skip_typespec (type); - } - return ++type; - - case _C_PTR: - /* Just skip the following typespec */ - - return objc_skip_typespec (++type); - - default: - { - objc_error (nil, OBJC_ERR_BAD_TYPE, "unknown type %s\n", type); - return 0; - } - } -} - -/* - Skip an offset as part of a method encoding. This is prepended by a - '+' if the argument is passed in registers. -*/ -inline const char * -objc_skip_offset (const char *type) -{ - if (*type == '+') - type++; - while (isdigit ((unsigned char) *++type)) - ; - return type; -} - -/* - Skip an argument specification of a method encoding. -*/ -const char * -objc_skip_argspec (const char *type) -{ - type = objc_skip_typespec (type); - type = objc_skip_offset (type); - return type; -} - -/* - Return the number of arguments that the method MTH expects. - Note that all methods need two implicit arguments `self' and - `_cmd'. -*/ -int -method_get_number_of_arguments (struct objc_method *mth) -{ - int i = 0; - const char *type = mth->method_types; - while (*type) - { - type = objc_skip_argspec (type); - i += 1; - } - return i - 1; -} - -/* - Return the size of the argument block needed on the stack to invoke - the method MTH. This may be zero, if all arguments are passed in - registers. -*/ - -int -method_get_sizeof_arguments (struct objc_method *mth) -{ - const char *type = objc_skip_typespec (mth->method_types); - return atoi (type); -} - -/* - Return a pointer to the next argument of ARGFRAME. type points to - the last argument. Typical use of this look like: - - { - char *datum, *type; - for (datum = method_get_first_argument (method, argframe, &type); - datum; datum = method_get_next_argument (argframe, &type)) - { - unsigned flags = objc_get_type_qualifiers (type); - type = objc_skip_type_qualifiers (type); - if (*type != _C_PTR) - [portal encodeData: datum ofType: type]; - else - { - if ((flags & _F_IN) == _F_IN) - [portal encodeData: *(char **) datum ofType: ++type]; - } - } - } -*/ - -char * -method_get_next_argument (arglist_t argframe, const char **type) -{ - const char *t = objc_skip_argspec (*type); - - if (*t == '\0') - return 0; - - *type = t; - t = objc_skip_typespec (t); - - if (*t == '+') - return argframe->arg_regs + atoi (++t); - else - return argframe->arg_ptr + atoi (t); -} - -/* - Return a pointer to the value of the first argument of the method - described in M with the given argumentframe ARGFRAME. The type - is returned in TYPE. type must be passed to successive calls of - method_get_next_argument. -*/ -char * -method_get_first_argument (struct objc_method *m, - arglist_t argframe, - const char **type) -{ - *type = m->method_types; - return method_get_next_argument (argframe, type); -} - -/* - Return a pointer to the ARGth argument of the method - M from the frame ARGFRAME. The type of the argument - is returned in the value-result argument TYPE -*/ - -char * -method_get_nth_argument (struct objc_method *m, - arglist_t argframe, int arg, - const char **type) -{ - const char *t = objc_skip_argspec (m->method_types); - - if (arg > method_get_number_of_arguments (m)) - return 0; - - while (arg--) - t = objc_skip_argspec (t); - - *type = t; - t = objc_skip_typespec (t); - - if (*t == '+') - return argframe->arg_regs + atoi (++t); - else - return argframe->arg_ptr + atoi (t); -} - -unsigned -objc_get_type_qualifiers (const char *type) -{ - unsigned res = 0; - BOOL flag = YES; - - while (flag) - switch (*type++) - { - case _C_CONST: res |= _F_CONST; break; - case _C_IN: res |= _F_IN; break; - case _C_INOUT: res |= _F_INOUT; break; - case _C_OUT: res |= _F_OUT; break; - case _C_BYCOPY: res |= _F_BYCOPY; break; - case _C_BYREF: res |= _F_BYREF; break; - case _C_ONEWAY: res |= _F_ONEWAY; break; - case _C_GCINVISIBLE: res |= _F_GCINVISIBLE; break; - default: flag = NO; - } - - return res; -} - - -/* The following three functions can be used to determine how a - structure is laid out by the compiler. For example: - - struct objc_struct_layout layout; - int i; - - objc_layout_structure (type, &layout); - while (objc_layout_structure_next_member (&layout)) - { - int position, align; - const char *type; - - objc_layout_structure_get_info (&layout, &position, &align, &type); - printf ("element %d has offset %d, alignment %d\n", - i++, position, align); - } - - These functions are used by objc_sizeof_type and objc_alignof_type - functions to compute the size and alignment of structures. The - previous method of computing the size and alignment of a structure - was not working on some architectures, particulary on AIX, and in - the presence of bitfields inside the structure. */ -void -objc_layout_structure (const char *type, - struct objc_struct_layout *layout) -{ - const char *ntype; - - if (*type != _C_UNION_B && *type != _C_STRUCT_B) - { - objc_error (nil, OBJC_ERR_BAD_TYPE, - "record (or union) type expected in objc_layout_structure, got %s\n", - type); - } - - type ++; - layout->original_type = type; - - /* Skip "=" if any. Avoid embedded structures and unions. */ - ntype = type; - while (*ntype != _C_STRUCT_E && *ntype != _C_STRUCT_B && *ntype != _C_UNION_B - && *ntype++ != '=') - /* do nothing */; - - /* If there's a "=", ntype - 1 points to '='; skip the the name */ - if (*(ntype - 1) == '=') - type = ntype; - - layout->type = type; - layout->prev_type = NULL; - layout->record_size = 0; - layout->record_align = BITS_PER_UNIT; - - layout->record_align = MAX (layout->record_align, STRUCTURE_SIZE_BOUNDARY); -} - - -BOOL -objc_layout_structure_next_member (struct objc_struct_layout *layout) -{ - register int desired_align = 0; - - /* The following are used only if the field is a bitfield */ - register const char *bfld_type = 0; - register int bfld_type_size, bfld_type_align = 0, bfld_field_size = 0; - - /* The current type without the type qualifiers */ - const char *type; - BOOL unionp = layout->original_type[-1] == _C_UNION_B; - - /* Add the size of the previous field to the size of the record. */ - if (layout->prev_type) - { - type = objc_skip_type_qualifiers (layout->prev_type); - if (unionp) - layout->record_size = MAX (layout->record_size, - objc_sizeof_type (type) * BITS_PER_UNIT); - - else if (*type != _C_BFLD) - layout->record_size += objc_sizeof_type (type) * BITS_PER_UNIT; - else { - /* Get the bitfield's type */ - for (bfld_type = type + 1; - isdigit ((unsigned char)*bfld_type); - bfld_type++) - /* do nothing */; - - bfld_type_size = objc_sizeof_type (bfld_type) * BITS_PER_UNIT; - bfld_type_align = objc_alignof_type (bfld_type) * BITS_PER_UNIT; - bfld_field_size = atoi (objc_skip_typespec (bfld_type)); - layout->record_size += bfld_field_size; - } - } - - if ((unionp && *layout->type == _C_UNION_E) - || (!unionp && *layout->type == _C_STRUCT_E)) - return NO; - - /* Skip the variable name if any */ - if (*layout->type == '"') - { - for (layout->type++; *layout->type++ != '"';) - /* do nothing */; - } - - type = objc_skip_type_qualifiers (layout->type); - - if (*type != _C_BFLD) - desired_align = objc_alignof_type (type) * BITS_PER_UNIT; - else - { - desired_align = 1; - /* Skip the bitfield's offset */ - for (bfld_type = type + 1; - isdigit ((unsigned char) *bfld_type); - bfld_type++) - /* do nothing */; - - bfld_type_size = objc_sizeof_type (bfld_type) * BITS_PER_UNIT; - bfld_type_align = objc_alignof_type (bfld_type) * BITS_PER_UNIT; - bfld_field_size = atoi (objc_skip_typespec (bfld_type)); - } - -#ifdef BIGGEST_FIELD_ALIGNMENT - desired_align = MIN (desired_align, BIGGEST_FIELD_ALIGNMENT); -#endif -#ifdef ADJUST_FIELD_ALIGN - desired_align = ADJUST_FIELD_ALIGN (type, desired_align); -#endif - - /* Record must have at least as much alignment as any field. - Otherwise, the alignment of the field within the record - is meaningless. */ -#ifndef PCC_BITFIELD_TYPE_MATTERS - layout->record_align = MAX (layout->record_align, desired_align); -#else /* PCC_BITFIELD_TYPE_MATTERS */ - if (*type == _C_BFLD) - { - /* For these machines, a zero-length field does not - affect the alignment of the structure as a whole. - It does, however, affect the alignment of the next field - within the structure. */ - if (bfld_field_size) - layout->record_align = MAX (layout->record_align, desired_align); - else - desired_align = objc_alignof_type (bfld_type) * BITS_PER_UNIT; - - /* A named bit field of declared type `int' - forces the entire structure to have `int' alignment. - Q1: How is encoded this thing and how to check for it? - Q2: How to determine maximum_field_alignment at runtime? */ - -/* if (DECL_NAME (field) != 0) */ - { - int type_align = bfld_type_align; -#if 0 - if (maximum_field_alignment != 0) - type_align = MIN (type_align, maximum_field_alignment); - else if (DECL_PACKED (field)) - type_align = MIN (type_align, BITS_PER_UNIT); -#endif - - layout->record_align = MAX (layout->record_align, type_align); - } - } - else - layout->record_align = MAX (layout->record_align, desired_align); -#endif /* PCC_BITFIELD_TYPE_MATTERS */ - - /* Does this field automatically have alignment it needs - by virtue of the fields that precede it and the record's - own alignment? */ - - if (*type == _C_BFLD) - layout->record_size = atoi (type + 1); - else if (layout->record_size % desired_align != 0) - { - /* No, we need to skip space before this field. - Bump the cumulative size to multiple of field alignment. */ - layout->record_size = ROUND (layout->record_size, desired_align); - } - - /* Jump to the next field in record. */ - - layout->prev_type = layout->type; - layout->type = objc_skip_typespec (layout->type); /* skip component */ - - return YES; -} - - -void objc_layout_finish_structure (struct objc_struct_layout *layout, - unsigned int *size, - unsigned int *align) -{ - BOOL unionp = layout->original_type[-1] == _C_UNION_B; - if (layout->type - && ((!unionp && *layout->type == _C_STRUCT_E) - || (unionp && *layout->type == _C_UNION_E))) - { - /* Work out the alignment of the record as one expression and store - in the record type. Round it up to a multiple of the record's - alignment. */ -#if defined (ROUND_TYPE_ALIGN) && ! defined (__sparc__) - layout->record_align = ROUND_TYPE_ALIGN (layout->original_type-1, - 1, - layout->record_align); -#else - layout->record_align = MAX (1, layout->record_align); -#endif - -#ifdef ROUND_TYPE_SIZE - layout->record_size = ROUND_TYPE_SIZE (layout->original_type, - layout->record_size, - layout->record_align); -#else - /* Round the size up to be a multiple of the required alignment */ - layout->record_size = ROUND (layout->record_size, layout->record_align); -#endif - - layout->type = NULL; - } - if (size) - *size = layout->record_size / BITS_PER_UNIT; - if (align) - *align = layout->record_align / BITS_PER_UNIT; -} - - -void objc_layout_structure_get_info (struct objc_struct_layout *layout, - unsigned int *offset, - unsigned int *align, - const char **type) -{ - if (offset) - *offset = layout->record_size / BITS_PER_UNIT; - if (align) - *align = layout->record_align / BITS_PER_UNIT; - if (type) - *type = layout->prev_type; -} diff --git a/libobjc/exception.c b/libobjc/exception.c deleted file mode 100644 index e1de2ae5af19..000000000000 --- a/libobjc/exception.c +++ /dev/null @@ -1,376 +0,0 @@ -/* The implementation of exception handling primitives for Objective-C. - Copyright (C) 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled - with GCC to produce an executable, this does not cause the resulting - executable to be covered by the GNU General Public License. This - exception does not however invalidate any other reasons why the - executable file might be covered by the GNU General Public License. */ - -#include -#include "config.h" -#include "objc/objc-api.h" -#include "unwind.h" -#include "unwind-pe.h" - - -/* This is the exception class we report -- "GNUCOBJC". */ -#define __objc_exception_class \ - ((((((((_Unwind_Exception_Class) 'G' \ - << 8 | (_Unwind_Exception_Class) 'N') \ - << 8 | (_Unwind_Exception_Class) 'U') \ - << 8 | (_Unwind_Exception_Class) 'C') \ - << 8 | (_Unwind_Exception_Class) 'O') \ - << 8 | (_Unwind_Exception_Class) 'B') \ - << 8 | (_Unwind_Exception_Class) 'J') \ - << 8 | (_Unwind_Exception_Class) 'C') - -/* This is the object that is passed around by the Objective C runtime - to represent the exception in flight. */ - -struct ObjcException -{ - /* This bit is needed in order to interact with the unwind runtime. */ - struct _Unwind_Exception base; - - /* The actual object we want to throw. */ - id value; - - /* Cache some internal unwind data between phase 1 and phase 2. */ - _Unwind_Ptr landingPad; - int handlerSwitchValue; -}; - - - -struct lsda_header_info -{ - _Unwind_Ptr Start; - _Unwind_Ptr LPStart; - _Unwind_Ptr ttype_base; - const unsigned char *TType; - const unsigned char *action_table; - unsigned char ttype_encoding; - unsigned char call_site_encoding; -}; - -static const unsigned char * -parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p, - struct lsda_header_info *info) -{ - _Unwind_Word tmp; - unsigned char lpstart_encoding; - - info->Start = (context ? _Unwind_GetRegionStart (context) : 0); - - /* Find @LPStart, the base to which landing pad offsets are relative. */ - lpstart_encoding = *p++; - if (lpstart_encoding != DW_EH_PE_omit) - p = read_encoded_value (context, lpstart_encoding, p, &info->LPStart); - else - info->LPStart = info->Start; - - /* Find @TType, the base of the handler and exception spec type data. */ - info->ttype_encoding = *p++; - if (info->ttype_encoding != DW_EH_PE_omit) - { - p = read_uleb128 (p, &tmp); - info->TType = p + tmp; - } - else - info->TType = 0; - - /* The encoding and length of the call-site table; the action table - immediately follows. */ - info->call_site_encoding = *p++; - p = read_uleb128 (p, &tmp); - info->action_table = p + tmp; - - return p; -} - -static Class -get_ttype_entry (struct lsda_header_info *info, _Unwind_Word i) -{ - _Unwind_Ptr ptr; - - i *= size_of_encoded_value (info->ttype_encoding); - read_encoded_value_with_base (info->ttype_encoding, info->ttype_base, - info->TType - i, &ptr); - - /* NULL ptr means catch-all. */ - if (ptr) - return objc_get_class ((const char *) ptr); - else - return 0; -} - -/* Like unto the method of the same name on Object, but takes an id. */ -/* ??? Does this bork the meta-type system? Can/should we look up an - isKindOf method on the id? */ - -static int -isKindOf (id value, Class target) -{ - Class c; - - /* NULL target is catch-all. */ - if (target == 0) - return 1; - - for (c = value->class_pointer; c; c = class_get_super_class (c)) - if (c == target) - return 1; - return 0; -} - -/* Using a different personality function name causes link failures - when trying to mix code using different exception handling models. */ -#ifdef SJLJ_EXCEPTIONS -#define PERSONALITY_FUNCTION __gnu_objc_personality_sj0 -#define __builtin_eh_return_data_regno(x) x -#else -#define PERSONALITY_FUNCTION __gnu_objc_personality_v0 -#endif - -_Unwind_Reason_Code -PERSONALITY_FUNCTION (int version, - _Unwind_Action actions, - _Unwind_Exception_Class exception_class, - struct _Unwind_Exception *ue_header, - struct _Unwind_Context *context) -{ - struct ObjcException *xh = (struct ObjcException *) ue_header; - - struct lsda_header_info info; - const unsigned char *language_specific_data; - const unsigned char *action_record; - const unsigned char *p; - _Unwind_Ptr landing_pad, ip; - int handler_switch_value; - int saw_cleanup = 0, saw_handler; - void *return_object; - - /* Interface version check. */ - if (version != 1) - return _URC_FATAL_PHASE1_ERROR; - - /* Shortcut for phase 2 found handler for domestic exception. */ - if (actions == (_UA_CLEANUP_PHASE | _UA_HANDLER_FRAME) - && exception_class == __objc_exception_class) - { - handler_switch_value = xh->handlerSwitchValue; - landing_pad = xh->landingPad; - goto install_context; - } - - language_specific_data = (const unsigned char *) - _Unwind_GetLanguageSpecificData (context); - - /* If no LSDA, then there are no handlers or cleanups. */ - if (! language_specific_data) - return _URC_CONTINUE_UNWIND; - - /* Parse the LSDA header. */ - p = parse_lsda_header (context, language_specific_data, &info); - info.ttype_base = base_of_encoded_value (info.ttype_encoding, context); - ip = _Unwind_GetIP (context) - 1; - landing_pad = 0; - action_record = 0; - handler_switch_value = 0; - -#ifdef SJLJ_EXCEPTIONS - /* The given "IP" is an index into the call-site table, with two - exceptions -- -1 means no-action, and 0 means terminate. But - since we're using uleb128 values, we've not got random access - to the array. */ - if ((int) ip < 0) - return _URC_CONTINUE_UNWIND; - else - { - _Unwind_Word cs_lp, cs_action; - do - { - p = read_uleb128 (p, &cs_lp); - p = read_uleb128 (p, &cs_action); - } - while (--ip); - - /* Can never have null landing pad for sjlj -- that would have - been indicated by a -1 call site index. */ - landing_pad = cs_lp + 1; - if (cs_action) - action_record = info.action_table + cs_action - 1; - goto found_something; - } -#else - /* Search the call-site table for the action associated with this IP. */ - while (p < info.action_table) - { - _Unwind_Ptr cs_start, cs_len, cs_lp; - _Unwind_Word cs_action; - - /* Note that all call-site encodings are "absolute" displacements. */ - p = read_encoded_value (0, info.call_site_encoding, p, &cs_start); - p = read_encoded_value (0, info.call_site_encoding, p, &cs_len); - p = read_encoded_value (0, info.call_site_encoding, p, &cs_lp); - p = read_uleb128 (p, &cs_action); - - /* The table is sorted, so if we've passed the ip, stop. */ - if (ip < info.Start + cs_start) - p = info.action_table; - else if (ip < info.Start + cs_start + cs_len) - { - if (cs_lp) - landing_pad = info.LPStart + cs_lp; - if (cs_action) - action_record = info.action_table + cs_action - 1; - goto found_something; - } - } -#endif /* SJLJ_EXCEPTIONS */ - - /* If ip is not present in the table, C++ would call terminate. */ - /* ??? As with Java, it's perhaps better to tweek the LSDA to - that no-action is mapped to no-entry. */ - return _URC_CONTINUE_UNWIND; - - found_something: - saw_cleanup = 0; - saw_handler = 0; - - if (landing_pad == 0) - { - /* If ip is present, and has a null landing pad, there are - no cleanups or handlers to be run. */ - } - else if (action_record == 0) - { - /* If ip is present, has a non-null landing pad, and a null - action table offset, then there are only cleanups present. - Cleanups use a zero switch value, as set above. */ - saw_cleanup = 1; - } - else - { - /* Otherwise we have a catch handler. */ - _Unwind_Sword ar_filter, ar_disp; - - while (1) - { - p = action_record; - p = read_sleb128 (p, &ar_filter); - read_sleb128 (p, &ar_disp); - - if (ar_filter == 0) - { - /* Zero filter values are cleanups. */ - saw_cleanup = 1; - } - - /* During forced unwinding, we only run cleanups. With a - foreign exception class, we have no class info to match. */ - else if ((actions & _UA_FORCE_UNWIND) - || exception_class != __objc_exception_class) - ; - - else if (ar_filter > 0) - { - /* Positive filter values are handlers. */ - - Class catch_type = get_ttype_entry (&info, ar_filter); - - if (isKindOf (xh->value, catch_type)) - { - handler_switch_value = ar_filter; - saw_handler = 1; - break; - } - } - else - { - /* Negative filter values are exception specifications, - which Objective-C does not use. */ - abort (); - } - - if (ar_disp == 0) - break; - action_record = p + ar_disp; - } - } - - if (! saw_handler && ! saw_cleanup) - return _URC_CONTINUE_UNWIND; - - if (actions & _UA_SEARCH_PHASE) - { - if (!saw_handler) - return _URC_CONTINUE_UNWIND; - - /* For domestic exceptions, we cache data from phase 1 for phase 2. */ - if (exception_class == __objc_exception_class) - { - xh->handlerSwitchValue = handler_switch_value; - xh->landingPad = landing_pad; - } - return _URC_HANDLER_FOUND; - } - - install_context: - if (saw_cleanup == 0) - { - return_object = xh->value; - if (!(actions & _UA_SEARCH_PHASE)) - _Unwind_DeleteException(&xh->base); - } - - _Unwind_SetGR (context, __builtin_eh_return_data_regno (0), - __builtin_extend_pointer (saw_cleanup ? xh : return_object)); - _Unwind_SetGR (context, __builtin_eh_return_data_regno (1), - handler_switch_value); - _Unwind_SetIP (context, landing_pad); - return _URC_INSTALL_CONTEXT; -} - -static void -__objc_exception_cleanup (_Unwind_Reason_Code code __attribute__((unused)), - struct _Unwind_Exception *exc) -{ - free (exc); -} - -void -objc_exception_throw (id value) -{ - struct ObjcException *header = calloc (1, sizeof (*header)); - header->base.exception_class = __objc_exception_class; - header->base.exception_cleanup = __objc_exception_cleanup; - header->value = value; - -#ifdef SJLJ_EXCEPTIONS - _Unwind_SjLj_RaiseException (&header->base); -#else - _Unwind_RaiseException (&header->base); -#endif - - /* Some sort of unwinding error. */ - abort (); -} diff --git a/libobjc/gc.c b/libobjc/gc.c deleted file mode 100644 index 51019993f3d1..000000000000 --- a/libobjc/gc.c +++ /dev/null @@ -1,454 +0,0 @@ -/* Basic data types for Objective C. - Copyright (C) 1998, 2002, 2004, 2005, 2006 Free Software Foundation, Inc. - Contributed by Ovidiu Predescu. - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#include "tconfig.h" -#include "objc/objc.h" -#include "objc/encoding.h" - -#include -#include -#include - -#if OBJC_WITH_GC - -#include -#include - -/* gc_typed.h uses the following but doesn't declare them */ -typedef GC_word word; -typedef GC_signed_word signed_word; -#define BITS_PER_WORD (CHAR_BIT * sizeof (word)) - -#include - -/* The following functions set up in `mask` the corresponding pointers. - The offset is incremented with the size of the type. */ - -#define ROUND(V, A) \ - ({ typeof (V) __v = (V); typeof (A) __a = (A); \ - __a * ((__v+__a - 1)/__a); }) - -#define SET_BIT_FOR_OFFSET(mask, offset) \ - GC_set_bit (mask, offset / sizeof (void *)) - -/* Some prototypes */ -static void -__objc_gc_setup_struct (GC_bitmap mask, const char *type, int offset); -static void -__objc_gc_setup_union (GC_bitmap mask, const char *type, int offset); - - -static void -__objc_gc_setup_array (GC_bitmap mask, const char *type, int offset) -{ - int i, len = atoi (type + 1); - - while (isdigit (*++type)) - /* do nothing */; /* skip the size of the array */ - - switch (*type) { - case _C_ARY_B: - for (i = 0; i < len; i++) - __objc_gc_setup_array (mask, type, offset); - break; - - case _C_STRUCT_B: - for (i = 0; i < len; i++) - __objc_gc_setup_struct (mask, type, offset); - break; - - case _C_UNION_B: - for (i = 0; i < len; i++) - __objc_gc_setup_union (mask, type, offset); - break; - - default: - break; - } -} - -static void -__objc_gc_setup_struct (GC_bitmap mask, const char *type, int offset) -{ - struct objc_struct_layout layout; - unsigned int position; - const char *mtype; - - objc_layout_structure (type, &layout); - - while (objc_layout_structure_next_member (&layout)) - { - BOOL gc_invisible = NO; - - objc_layout_structure_get_info (&layout, &position, NULL, &mtype); - - /* Skip the variable name */ - if (*mtype == '"') - { - for (mtype++; *mtype++ != '"';) - /* do nothing */; - } - - if (*mtype == _C_GCINVISIBLE) - { - gc_invisible = YES; - mtype++; - } - - /* Add to position the offset of this structure */ - position += offset; - - switch (*mtype) { - case _C_ID: - case _C_CLASS: - case _C_SEL: - case _C_PTR: - case _C_CHARPTR: - case _C_ATOM: - if (! gc_invisible) - SET_BIT_FOR_OFFSET (mask, position); - break; - - case _C_ARY_B: - __objc_gc_setup_array (mask, mtype, position); - break; - - case _C_STRUCT_B: - __objc_gc_setup_struct (mask, mtype, position); - break; - - case _C_UNION_B: - __objc_gc_setup_union (mask, mtype, position); - break; - - default: - break; - } - } -} - -static void -__objc_gc_setup_union (GC_bitmap mask, const char *type, int offset) -{ - /* Sub-optimal, quick implementation: assume the union is made of - pointers, set up the mask accordingly. */ - - int i, size, align; - - /* Skip the variable name */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - - size = objc_sizeof_type (type); - align = objc_alignof_type (type); - - offset = ROUND (offset, align); - for (i = 0; i < size; i += sizeof (void *)) - { - SET_BIT_FOR_OFFSET (mask, offset); - offset += sizeof (void *); - } -} - - -/* Iterates over the types in the structure that represents the class - encoding and sets the bits in mask according to each ivar type. */ -static void -__objc_gc_type_description_from_type (GC_bitmap mask, const char *type) -{ - struct objc_struct_layout layout; - unsigned int offset, align; - const char *ivar_type; - - objc_layout_structure (type, &layout); - - while (objc_layout_structure_next_member (&layout)) - { - BOOL gc_invisible = NO; - - objc_layout_structure_get_info (&layout, &offset, &align, &ivar_type); - - /* Skip the variable name */ - if (*ivar_type == '"') - { - for (ivar_type++; *ivar_type++ != '"';) - /* do nothing */; - } - - if (*ivar_type == _C_GCINVISIBLE) - { - gc_invisible = YES; - ivar_type++; - } - - switch (*ivar_type) { - case _C_ID: - case _C_CLASS: - case _C_SEL: - case _C_PTR: - case _C_CHARPTR: - if (! gc_invisible) - SET_BIT_FOR_OFFSET (mask, offset); - break; - - case _C_ARY_B: - __objc_gc_setup_array (mask, ivar_type, offset); - break; - - case _C_STRUCT_B: - __objc_gc_setup_struct (mask, ivar_type, offset); - break; - - case _C_UNION_B: - __objc_gc_setup_union (mask, ivar_type, offset); - break; - - default: - break; - } - } -} - -/* Computes in *type the full type encoding of this class including - its super classes. '*size' gives the total number of bytes allocated - into *type, '*current' the number of bytes used so far by the - encoding. */ -static void -__objc_class_structure_encoding (Class class, char **type, int *size, - int *current) -{ - int i, ivar_count; - struct objc_ivar_list *ivars; - - if (! class) - { - strcat (*type, "{"); - (*current)++; - return; - } - - /* Add the type encodings of the super classes */ - __objc_class_structure_encoding (class->super_class, type, size, current); - - ivars = class->ivars; - if (! ivars) - return; - - ivar_count = ivars->ivar_count; - - for (i = 0; i < ivar_count; i++) - { - struct objc_ivar *ivar = &(ivars->ivar_list[i]); - const char *ivar_type = ivar->ivar_type; - int len = strlen (ivar_type); - - if (*current + len + 1 >= *size) - { - /* Increase the size of the encoding string so that it - contains this ivar's type. */ - *size = ROUND (*current + len + 1, 10); - *type = objc_realloc (*type, *size); - } - strcat (*type + *current, ivar_type); - *current += len; - } -} - - -/* Allocates the memory that will hold the type description for class - and calls the __objc_class_structure_encoding that generates this - value. */ -void -__objc_generate_gc_type_description (Class class) -{ - GC_bitmap mask; - int bits_no, size; - int type_size = 10, current; - char *class_structure_type; - - if (! CLS_ISCLASS (class)) - return; - - /* We have to create a mask in which each bit counts for a pointer member. - We take into consideration all the non-pointer instance variables and we - round them up to the alignment. */ - - /* The number of bits in the mask is the size of an instance in bytes divided - by the size of a pointer. */ - bits_no = (ROUND (class_get_instance_size (class), sizeof (void *)) - / sizeof (void *)); - size = ROUND (bits_no, BITS_PER_WORD) / BITS_PER_WORD; - mask = objc_atomic_malloc (size * sizeof (int)); - memset (mask, 0, size * sizeof (int)); - - class_structure_type = objc_atomic_malloc (type_size); - *class_structure_type = current = 0; - __objc_class_structure_encoding (class, &class_structure_type, - &type_size, ¤t); - if (current + 1 == type_size) - class_structure_type = objc_realloc (class_structure_type, ++type_size); - strcat (class_structure_type + current, "}"); -#ifdef DEBUG - printf ("type description for '%s' is %s\n", class->name, class_structure_type); -#endif - - __objc_gc_type_description_from_type (mask, class_structure_type); - objc_free (class_structure_type); - -#ifdef DEBUG - printf (" mask for '%s', type '%s' (bits %d, mask size %d) is:", - class_structure_type, class->name, bits_no, size); - { - int i; - for (i = 0; i < size; i++) - printf (" %lx", mask[i]); - } - puts (""); -#endif - - class->gc_object_type = (void *) GC_make_descriptor (mask, bits_no); -} - - -/* Returns YES if type denotes a pointer type, NO otherwise */ -static inline BOOL -__objc_ivar_pointer (const char *type) -{ - type = objc_skip_type_qualifiers (type); - - return (*type == _C_ID - || *type == _C_CLASS - || *type == _C_SEL - || *type == _C_PTR - || *type == _C_CHARPTR - || *type == _C_ATOM); -} - - -/* Mark the instance variable whose name is given by ivarname as a - weak pointer (a pointer hidden to the garbage collector) if - gc_invisible is true. If gc_invisible is false it unmarks the - instance variable and makes it a normal pointer, visible to the - garbage collector. - - This operation only makes sense on instance variables that are - pointers. */ -void -class_ivar_set_gcinvisible (Class class, const char *ivarname, - BOOL gc_invisible) -{ - int i, ivar_count; - struct objc_ivar_list *ivars; - - if (! class || ! ivarname) - return; - - ivars = class->ivars; - if (! ivars) - return; - - ivar_count = ivars->ivar_count; - - for (i = 0; i < ivar_count; i++) - { - struct objc_ivar *ivar = &(ivars->ivar_list[i]); - const char *type; - - if (! ivar->ivar_name || strcmp (ivar->ivar_name, ivarname)) - continue; - - assert (ivar->ivar_type); - type = ivar->ivar_type; - - /* Skip the variable name */ - if (*type == '"') - { - for (type++; *type++ != '"';) - /* do nothing */; - } - - if (*type == _C_GCINVISIBLE) - { - char *new_type; - size_t len; - - if (gc_invisible || ! __objc_ivar_pointer (type)) - return; /* The type of the variable already matches the - requested gc_invisible type */ - - /* The variable is gc_invisible so we make it gc visible. */ - new_type = objc_atomic_malloc (strlen(ivar->ivar_type)); - len = (type - ivar->ivar_type); - memcpy (new_type, ivar->ivar_type, len); - new_type[len] = 0; - strcat (new_type, type + 1); - ivar->ivar_type = new_type; - } - else - { - char *new_type; - size_t len; - - if (! gc_invisible || ! __objc_ivar_pointer (type)) - return; /* The type of the variable already matches the - requested gc_invisible type */ - - /* The variable is gc visible so we make it gc_invisible. */ - new_type = objc_malloc (strlen(ivar->ivar_type) + 2); - len = (type - ivar->ivar_type); - memcpy (new_type, ivar->ivar_type, len); - new_type[len] = 0; - strcat (new_type, "!"); - strcat (new_type, type); - ivar->ivar_type = new_type; - } - - __objc_generate_gc_type_description (class); - return; - } - - /* Search the instance variable in the superclasses */ - class_ivar_set_gcinvisible (class->super_class, ivarname, gc_invisible); -} - -#else /* !OBJC_WITH_GC */ - -void -__objc_generate_gc_type_description (Class class __attribute__ ((__unused__))) -{ -} - -void class_ivar_set_gcinvisible (Class class __attribute__ ((__unused__)), - const char *ivarname __attribute__ ((__unused__)), - BOOL gc_invisible __attribute__ ((__unused__))) -{ -} - -#endif /* OBJC_WITH_GC */ diff --git a/libobjc/hash.c b/libobjc/hash.c deleted file mode 100644 index 969bd4585660..000000000000 --- a/libobjc/hash.c +++ /dev/null @@ -1,283 +0,0 @@ -/* Hash tables for Objective C internal structures - Copyright (C) 1993, 1996, 1997, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#include "assert.h" - -#include "objc/hash.h" - -#include "objc/runtime.h" /* for DEBUG_PRINTF */ - -/* These two macros determine when a hash table is full and - by how much it should be expanded respectively. - - These equations are percentages. */ -#define FULLNESS(cache) \ - ((((cache)->size * 75) / 100) <= (cache)->used) -#define EXPANSION(cache) \ - ((cache)->size * 2) - -cache_ptr -objc_hash_new (unsigned int size, hash_func_type hash_func, - compare_func_type compare_func) -{ - cache_ptr cache; - - /* Pass me a value greater than 0 and a power of 2. */ - assert (size); - assert (! (size & (size - 1))); - - /* Allocate the cache structure. calloc insures - its initialization for default values. */ - cache = (cache_ptr) objc_calloc (1, sizeof (struct cache)); - assert (cache); - - /* Allocate the array of buckets for the cache. - calloc initializes all of the pointers to NULL. */ - cache->node_table - = (node_ptr *) objc_calloc (size, sizeof (node_ptr)); - assert (cache->node_table); - - cache->size = size; - - /* This should work for all processor architectures? */ - cache->mask = (size - 1); - - /* Store the hashing function so that codes can be computed. */ - cache->hash_func = hash_func; - - /* Store the function that compares hash keys to - determine if they are equal. */ - cache->compare_func = compare_func; - - return cache; -} - - -void -objc_hash_delete (cache_ptr cache) -{ - node_ptr node; - node_ptr next_node; - unsigned int i; - - /* Purge all key/value pairs from the table. */ - /* Step through the nodes one by one and remove every node WITHOUT - using objc_hash_next. this makes objc_hash_delete much more efficient. */ - for (i = 0;i < cache->size;i++) { - if ((node = cache->node_table[i])) { - /* an entry in the hash table has been found, now step through the - nodes next in the list and free them. */ - while ((next_node = node->next)) { - objc_hash_remove (cache,node->key); - node = next_node; - } - - objc_hash_remove (cache,node->key); - } - } - - /* Release the array of nodes and the cache itself. */ - objc_free(cache->node_table); - objc_free(cache); -} - - -void -objc_hash_add (cache_ptr *cachep, const void *key, void *value) -{ - size_t indx = (*(*cachep)->hash_func)(*cachep, key); - node_ptr node = (node_ptr) objc_calloc (1, sizeof (struct cache_node)); - - - assert (node); - - /* Initialize the new node. */ - node->key = key; - node->value = value; - node->next = (*cachep)->node_table[indx]; - - /* Debugging. - Check the list for another key. */ -#ifdef DEBUG - { node_ptr node1 = (*cachep)->node_table[indx]; - - while (node1) { - - assert (node1->key != key); - node1 = node1->next; - } - } -#endif - - /* Install the node as the first element on the list. */ - (*cachep)->node_table[indx] = node; - - /* Bump the number of entries in the cache. */ - ++(*cachep)->used; - - /* Check the hash table's fullness. We're going - to expand if it is above the fullness level. */ - if (FULLNESS (*cachep)) { - - /* The hash table has reached its fullness level. Time to - expand it. - - I'm using a slow method here but is built on other - primitive functions thereby increasing its - correctness. */ - node_ptr node1 = NULL; - cache_ptr new = objc_hash_new (EXPANSION (*cachep), - (*cachep)->hash_func, - (*cachep)->compare_func); - - DEBUG_PRINTF ("Expanding cache %#x from %d to %d\n", - (int) *cachep, (*cachep)->size, new->size); - - /* Copy the nodes from the first hash table to the new one. */ - while ((node1 = objc_hash_next (*cachep, node1))) - objc_hash_add (&new, node1->key, node1->value); - - /* Trash the old cache. */ - objc_hash_delete (*cachep); - - /* Return a pointer to the new hash table. */ - *cachep = new; - } -} - - -void -objc_hash_remove (cache_ptr cache, const void *key) -{ - size_t indx = (*cache->hash_func)(cache, key); - node_ptr node = cache->node_table[indx]; - - - /* We assume there is an entry in the table. Error if it is not. */ - assert (node); - - /* Special case. First element is the key/value pair to be removed. */ - if ((*cache->compare_func)(node->key, key)) { - cache->node_table[indx] = node->next; - objc_free(node); - } else { - - /* Otherwise, find the hash entry. */ - node_ptr prev = node; - BOOL removed = NO; - - do { - - if ((*cache->compare_func)(node->key, key)) { - prev->next = node->next, removed = YES; - objc_free(node); - } else - prev = node, node = node->next; - } while (! removed && node); - assert (removed); - } - - /* Decrement the number of entries in the hash table. */ - --cache->used; -} - - -node_ptr -objc_hash_next (cache_ptr cache, node_ptr node) -{ - /* If the scan is being started then reset the last node - visitied pointer and bucket index. */ - if (! node) - cache->last_bucket = 0; - - /* If there is a node visited last then check for another - entry in the same bucket; Otherwise step to the next bucket. */ - if (node) { - if (node->next) - /* There is a node which follows the last node - returned. Step to that node and retun it. */ - return node->next; - else - ++cache->last_bucket; - } - - /* If the list isn't exhausted then search the buckets for - other nodes. */ - if (cache->last_bucket < cache->size) { - /* Scan the remainder of the buckets looking for an entry - at the head of the list. Return the first item found. */ - while (cache->last_bucket < cache->size) - if (cache->node_table[cache->last_bucket]) - return cache->node_table[cache->last_bucket]; - else - ++cache->last_bucket; - - /* No further nodes were found in the hash table. */ - return NULL; - } else - return NULL; -} - - -/* Given KEY, return corresponding value for it in CACHE. - Return NULL if the KEY is not recorded. */ - -void * -objc_hash_value_for_key (cache_ptr cache, const void *key) -{ - node_ptr node = cache->node_table[(*cache->hash_func)(cache, key)]; - void *retval = NULL; - - if (node) - do { - if ((*cache->compare_func)(node->key, key)) { - retval = node->value; - break; - } else - node = node->next; - } while (! retval && node); - - return retval; -} - -/* Given KEY, return YES if it exists in the CACHE. - Return NO if it does not */ - -BOOL -objc_hash_is_key_in_hash (cache_ptr cache, const void *key) -{ - node_ptr node = cache->node_table[(*cache->hash_func)(cache, key)]; - - if (node) - do { - if ((*cache->compare_func)(node->key, key)) - return YES; - else - node = node->next; - } while (node); - - return NO; -} diff --git a/libobjc/init.c b/libobjc/init.c deleted file mode 100644 index fc3d7ff3c0cd..000000000000 --- a/libobjc/init.c +++ /dev/null @@ -1,894 +0,0 @@ -/* GNU Objective C Runtime initialization - Copyright (C) 1993, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - +load support contributed by Ovidiu Predescu - -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. - -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/runtime.h" - -/* The version number of this runtime. This must match the number - defined in gcc (objc-act.c). */ -#define OBJC_VERSION 8 -#define PROTOCOL_VERSION 2 - -/* This list contains all modules currently loaded into the runtime. */ -static struct objc_list *__objc_module_list = 0; /* !T:MUTEX */ - -/* This list contains all proto_list's not yet assigned class links. */ -static struct objc_list *unclaimed_proto_list = 0; /* !T:MUTEX */ - -/* List of unresolved static instances. */ -static struct objc_list *uninitialized_statics = 0; /* !T:MUTEX */ - -/* Global runtime "write" mutex. */ -objc_mutex_t __objc_runtime_mutex = 0; - -/* Number of threads that are alive. */ -int __objc_runtime_threads_alive = 1; /* !T:MUTEX */ - -/* Check compiler vs runtime version. */ -static void init_check_module_version (Module_t); - -/* Assign isa links to protos. */ -static void __objc_init_protocols (struct objc_protocol_list *protos); - -/* Add protocol to class. */ -static void __objc_class_add_protocols (Class, struct objc_protocol_list *); - -/* This is a hook which is called by __objc_exec_class every time a - class or a category is loaded into the runtime. This may e.g. help - a dynamic loader determine the classes that have been loaded when - an object file is dynamically linked in. */ -void (*_objc_load_callback) (Class class, Category *category); /* !T:SAFE */ - -/* Is all categories/classes resolved? */ -BOOL __objc_dangling_categories = NO; /* !T:UNUSED */ - -extern SEL -__sel_register_typed_name (const char *name, const char *types, - struct objc_selector *orig, BOOL is_const); - -/* Sends +load to all classes and categories in certain situations. */ -static void objc_send_load (void); - -/* Inserts all the classes defined in module in a tree of classes that - resembles the class hierarchy. This tree is traversed in preorder - and the classes in its nodes receive the +load message if these - methods were not executed before. The algorithm ensures that when - the +load method of a class is executed all the superclasses have - been already received the +load message. */ -static void __objc_create_classes_tree (Module_t module); - -static void __objc_call_callback (Module_t module); - -/* A special version that works only before the classes are completely - installed in the runtime. */ -static BOOL class_is_subclass_of_class (Class class, Class superclass); - -typedef struct objc_class_tree { - Class class; - struct objc_list *subclasses; /* `head' is pointer to an objc_class_tree */ -} objc_class_tree; - -/* This is a linked list of objc_class_tree trees. The head of these - trees are root classes (their super class is Nil). These different - trees represent different class hierarchies. */ -static struct objc_list *__objc_class_tree_list = NULL; - -/* Keeps the +load methods who have been already executed. This hash - should not be destroyed during the execution of the program. */ -static cache_ptr __objc_load_methods = NULL; - -/* This function is used when building the class tree used to send - ordinately the +load message to all classes needing it. The tree - is really needed so that superclasses will get the message before - subclasses. - - This tree will contain classes which are being loaded (or have just - being loaded), and whose super_class pointers have not yet been - resolved. This implies that their super_class pointers point to a - string with the name of the superclass; when the first message is - sent to the class (/an object of that class) the class links will - be resolved, which will replace the super_class pointers with - pointers to the actual superclasses. - - Unfortunately, the tree might also contain classes which had been - loaded previously, and whose class links have already been - resolved. - - This function returns the superclass of a class in both cases, and - can be used to build the determine the class relationships while - building the tree. -*/ -static Class class_superclass_of_class (Class class) -{ - char *super_class_name; - - /* If the class links have been resolved, use the resolved - * links. */ - if (CLS_ISRESOLV (class)) - return class->super_class; - - /* Else, 'class' has not yet been resolved. This means that its - * super_class pointer is really the name of the super class (rather - * than a pointer to the actual superclass). */ - super_class_name = (char *)class->super_class; - - /* Return Nil for a root class. */ - if (super_class_name == NULL) - return Nil; - - /* Lookup the superclass of non-root classes. */ - return objc_lookup_class (super_class_name); -} - - -/* Creates a tree of classes whose topmost class is directly inherited - from `upper' and the bottom class in this tree is - `bottom_class'. The classes in this tree are super classes of - `bottom_class'. `subclasses' member of each tree node point to the - next subclass tree node. */ - -static objc_class_tree * -create_tree_of_subclasses_inherited_from (Class bottom_class, Class upper) -{ - Class superclass = bottom_class->super_class ? - objc_lookup_class ((char *) bottom_class->super_class) - : Nil; - - objc_class_tree *tree, *prev; - - DEBUG_PRINTF ("create_tree_of_subclasses_inherited_from:"); - DEBUG_PRINTF ("bottom_class = %s, upper = %s\n", - (bottom_class ? bottom_class->name : NULL), - (upper ? upper->name : NULL)); - - tree = prev = objc_calloc (1, sizeof (objc_class_tree)); - prev->class = bottom_class; - - while (superclass != upper) - { - tree = objc_calloc (1, sizeof (objc_class_tree)); - tree->class = superclass; - tree->subclasses = list_cons (prev, tree->subclasses); - superclass = class_superclass_of_class (superclass); - prev = tree; - } - - return tree; -} - -/* Insert the `class' into the proper place in the `tree' class - hierarchy. This function returns a new tree if the class has been - successfully inserted into the tree or NULL if the class is not - part of the classes hierarchy described by `tree'. This function is - private to objc_tree_insert_class (), you should not call it - directly. */ - -static objc_class_tree * -__objc_tree_insert_class (objc_class_tree *tree, Class class) -{ - DEBUG_PRINTF ("__objc_tree_insert_class: tree = %x, class = %s\n", - tree, class->name); - - if (tree == NULL) - return create_tree_of_subclasses_inherited_from (class, NULL); - else if (class == tree->class) - { - /* `class' has been already inserted */ - DEBUG_PRINTF ("1. class %s was previously inserted\n", class->name); - return tree; - } - else if (class_superclass_of_class (class) == tree->class) - { - /* If class is a direct subclass of tree->class then add class to the - list of subclasses. First check to see if it wasn't already - inserted. */ - struct objc_list *list = tree->subclasses; - objc_class_tree *node; - - while (list) - { - /* Class has been already inserted; do nothing just return - the tree. */ - if (((objc_class_tree *) list->head)->class == class) - { - DEBUG_PRINTF ("2. class %s was previously inserted\n", - class->name); - return tree; - } - list = list->tail; - } - - /* Create a new node class and insert it into the list of subclasses */ - node = objc_calloc (1, sizeof (objc_class_tree)); - node->class = class; - tree->subclasses = list_cons (node, tree->subclasses); - DEBUG_PRINTF ("3. class %s inserted\n", class->name); - return tree; - } - else - { - /* The class is not a direct subclass of tree->class. Search for - class's superclasses in the list of subclasses. */ - struct objc_list *subclasses = tree->subclasses; - - /* Precondition: the class must be a subclass of tree->class; - otherwise return NULL to indicate our caller that it must - take the next tree. */ - if (! class_is_subclass_of_class (class, tree->class)) - return NULL; - - for (; subclasses != NULL; subclasses = subclasses->tail) - { - Class aClass = ((objc_class_tree *) (subclasses->head))->class; - - if (class_is_subclass_of_class (class, aClass)) - { - /* If we found one of class's superclasses we insert the - class into its subtree and return the original tree - since nothing has been changed. */ - subclasses->head - = __objc_tree_insert_class (subclasses->head, class); - DEBUG_PRINTF ("4. class %s inserted\n", class->name); - return tree; - } - } - - /* We haven't found a subclass of `class' in the `subclasses' - list. Create a new tree of classes whose topmost class is a - direct subclass of tree->class. */ - { - objc_class_tree *new_tree - = create_tree_of_subclasses_inherited_from (class, tree->class); - tree->subclasses = list_cons (new_tree, tree->subclasses); - DEBUG_PRINTF ("5. class %s inserted\n", class->name); - return tree; - } - } -} - -/* This function inserts `class' in the right tree hierarchy classes. */ - -static void -objc_tree_insert_class (Class class) -{ - struct objc_list *list_node; - objc_class_tree *tree; - - list_node = __objc_class_tree_list; - while (list_node) - { - tree = __objc_tree_insert_class (list_node->head, class); - if (tree) - { - list_node->head = tree; - break; - } - else - list_node = list_node->tail; - } - - /* If the list was finished but the class hasn't been inserted, - insert it here. */ - if (! list_node) - { - __objc_class_tree_list = list_cons (NULL, __objc_class_tree_list); - __objc_class_tree_list->head = __objc_tree_insert_class (NULL, class); - } -} - -/* Traverse tree in preorder. Used to send +load. */ - -static void -objc_preorder_traverse (objc_class_tree *tree, - int level, - void (*function) (objc_class_tree *, int)) -{ - struct objc_list *node; - - (*function) (tree, level); - for (node = tree->subclasses; node; node = node->tail) - objc_preorder_traverse (node->head, level + 1, function); -} - -/* Traverse tree in postorder. Used to destroy a tree. */ - -static void -objc_postorder_traverse (objc_class_tree *tree, - int level, - void (*function) (objc_class_tree *, int)) -{ - struct objc_list *node; - - for (node = tree->subclasses; node; node = node->tail) - objc_postorder_traverse (node->head, level + 1, function); - (*function) (tree, level); -} - -/* Used to print a tree class hierarchy. */ - -#ifdef DEBUG -static void -__objc_tree_print (objc_class_tree *tree, int level) -{ - int i; - - for (i = 0; i < level; i++) - printf (" "); - printf ("%s\n", tree->class->name); -} -#endif - -/* Walks on a linked list of methods in the reverse order and executes - all the methods corresponding to `op' selector. Walking in the - reverse order assures the +load of class is executed first and then - +load of categories because of the way in which categories are - added to the class methods. */ - -static void -__objc_send_message_in_list (MethodList_t method_list, Class class, SEL op) -{ - int i; - - if (! method_list) - return; - - /* First execute the `op' message in the following method lists */ - __objc_send_message_in_list (method_list->method_next, class, op); - - /* Search the method list. */ - for (i = 0; i < method_list->method_count; i++) - { - Method_t mth = &method_list->method_list[i]; - - if (mth->method_name && sel_eq (mth->method_name, op) - && ! objc_hash_is_key_in_hash (__objc_load_methods, mth->method_imp)) - { - /* Add this method into the +load hash table */ - objc_hash_add (&__objc_load_methods, - mth->method_imp, - mth->method_imp); - - DEBUG_PRINTF ("sending +load in class: %s\n", class->name); - - /* The method was found and wasn't previously executed. */ - (*mth->method_imp) ((id)class, mth->method_name); - - break; - } - } -} - -static void -__objc_send_load (objc_class_tree *tree, - int level __attribute__ ((__unused__))) -{ - static SEL load_sel = 0; - Class class = tree->class; - MethodList_t method_list = class->class_pointer->methods; - - if (! load_sel) - load_sel = sel_register_name ("load"); - - __objc_send_message_in_list (method_list, class, load_sel); -} - -static void -__objc_destroy_class_tree_node (objc_class_tree *tree, - int level __attribute__ ((__unused__))) -{ - objc_free (tree); -} - -/* This is used to check if the relationship between two classes - before the runtime completely installs the classes. */ - -static BOOL -class_is_subclass_of_class (Class class, Class superclass) -{ - for (; class != Nil;) - { - if (class == superclass) - return YES; - class = class_superclass_of_class (class); - } - - return NO; -} - -/* This list contains all the classes in the runtime system for whom - their superclasses are not yet known to the runtime. */ -static struct objc_list *unresolved_classes = 0; - -/* Extern function used to reference the Object and NXConstantString - classes. */ - -extern void __objc_force_linking (void); - -void -__objc_force_linking (void) -{ - extern void __objc_linking (void); - __objc_linking (); -} - -/* Run through the statics list, removing modules as soon as all its - statics have been initialized. */ - -static void -objc_init_statics (void) -{ - struct objc_list **cell = &uninitialized_statics; - struct objc_static_instances **statics_in_module; - - objc_mutex_lock (__objc_runtime_mutex); - - while (*cell) - { - int module_initialized = 1; - - for (statics_in_module = (*cell)->head; - *statics_in_module; statics_in_module++) - { - struct objc_static_instances *statics = *statics_in_module; - Class class = objc_lookup_class (statics->class_name); - - if (! class) - module_initialized = 0; - /* Actually, the static's class_pointer will be NULL when we - haven't been here before. However, the comparison is to be - reminded of taking into account class posing and to think about - possible semantics... */ - else if (class != statics->instances[0]->class_pointer) - { - id *inst; - - for (inst = &statics->instances[0]; *inst; inst++) - { - (*inst)->class_pointer = class; - - /* ??? Make sure the object will not be freed. With - refcounting, invoke `-retain'. Without refcounting, do - nothing and hope that `-free' will never be invoked. */ - - /* ??? Send the object an `-initStatic' or something to - that effect now or later on? What are the semantics of - statically allocated instances, besides the trivial - NXConstantString, anyway? */ - } - } - } - if (module_initialized) - { - /* Remove this module from the uninitialized list. */ - struct objc_list *this = *cell; - *cell = this->tail; - objc_free (this); - } - else - cell = &(*cell)->tail; - } - - objc_mutex_unlock (__objc_runtime_mutex); -} /* objc_init_statics */ - -/* This function is called by constructor functions generated for each - module compiled. (_GLOBAL_$I$...) The purpose of this function is - to gather the module pointers so that they may be processed by the - initialization routines as soon as possible. */ - -void -__objc_exec_class (Module_t module) -{ - /* Have we processed any constructors previously? This flag is used to - indicate that some global data structures need to be built. */ - static BOOL previous_constructors = 0; - - static struct objc_list *unclaimed_categories = 0; - - /* The symbol table (defined in objc-api.h) generated by gcc */ - Symtab_t symtab = module->symtab; - - /* The statics in this module */ - struct objc_static_instances **statics - = symtab->defs[symtab->cls_def_cnt + symtab->cat_def_cnt]; - - /* Entry used to traverse hash lists */ - struct objc_list **cell; - - /* The table of selector references for this module */ - SEL selectors = symtab->refs; - - /* dummy counter */ - int i; - - DEBUG_PRINTF ("received module: %s\n", module->name); - - /* check gcc version */ - init_check_module_version (module); - - /* On the first call of this routine, initialize some data structures. */ - if (! previous_constructors) - { - /* Initialize thread-safe system */ - __objc_init_thread_system (); - __objc_runtime_threads_alive = 1; - __objc_runtime_mutex = objc_mutex_allocate (); - - __objc_init_selector_tables (); - __objc_init_class_tables (); - __objc_init_dispatch_tables (); - __objc_class_tree_list = list_cons (NULL, __objc_class_tree_list); - __objc_load_methods = objc_hash_new (128, - (hash_func_type)objc_hash_ptr, - objc_compare_ptrs); - previous_constructors = 1; - } - - /* Save the module pointer for later processing. (not currently used) */ - objc_mutex_lock (__objc_runtime_mutex); - __objc_module_list = list_cons (module, __objc_module_list); - - /* Replace referenced selectors from names to SEL's. */ - if (selectors) - { - for (i = 0; selectors[i].sel_id; ++i) - { - const char *name, *type; - name = (char *) selectors[i].sel_id; - type = (char *) selectors[i].sel_types; - /* Constructors are constant static data so we can safely store - pointers to them in the runtime structures. is_const == YES */ - __sel_register_typed_name (name, type, - (struct objc_selector *) &(selectors[i]), - YES); - } - } - - /* Parse the classes in the load module and gather selector information. */ - DEBUG_PRINTF ("gathering selectors from module: %s\n", module->name); - for (i = 0; i < symtab->cls_def_cnt; ++i) - { - Class class = (Class) symtab->defs[i]; - const char *superclass = (char *) class->super_class; - - /* Make sure we have what we think. */ - assert (CLS_ISCLASS (class)); - assert (CLS_ISMETA (class->class_pointer)); - DEBUG_PRINTF ("phase 1, processing class: %s\n", class->name); - - /* Initialize the subclass list to be NULL. - In some cases it isn't and this crashes the program. */ - class->subclass_list = NULL; - - /* Store the class in the class table and assign class numbers. */ - __objc_add_class_to_hash (class); - - /* Register all of the selectors in the class and meta class. */ - __objc_register_selectors_from_class (class); - __objc_register_selectors_from_class ((Class) class->class_pointer); - - /* Install the fake dispatch tables */ - __objc_install_premature_dtable (class); - __objc_install_premature_dtable (class->class_pointer); - - /* Register the instance methods as class methods, this is - only done for root classes. */ - __objc_register_instance_methods_to_class (class); - - if (class->protocols) - __objc_init_protocols (class->protocols); - - /* Check to see if the superclass is known in this point. If it's not - add the class to the unresolved_classes list. */ - if (superclass && ! objc_lookup_class (superclass)) - unresolved_classes = list_cons (class, unresolved_classes); - } - - /* Process category information from the module. */ - for (i = 0; i < symtab->cat_def_cnt; ++i) - { - Category_t category = symtab->defs[i + symtab->cls_def_cnt]; - Class class = objc_lookup_class (category->class_name); - - /* If the class for the category exists then append its methods. */ - if (class) - { - - DEBUG_PRINTF ("processing categories from (module,object): %s, %s\n", - module->name, - class->name); - - /* Do instance methods. */ - if (category->instance_methods) - class_add_method_list (class, category->instance_methods); - - /* Do class methods. */ - if (category->class_methods) - class_add_method_list ((Class) class->class_pointer, - category->class_methods); - - if (category->protocols) - { - __objc_init_protocols (category->protocols); - __objc_class_add_protocols (class, category->protocols); - } - - /* Register the instance methods as class methods, this is - only done for root classes. */ - __objc_register_instance_methods_to_class (class); - } - else - { - /* The object to which the category methods belong can't be found. - Save the information. */ - unclaimed_categories = list_cons (category, unclaimed_categories); - } - } - - if (statics) - uninitialized_statics = list_cons (statics, uninitialized_statics); - if (uninitialized_statics) - objc_init_statics (); - - /* Scan the unclaimed category hash. Attempt to attach any unclaimed - categories to objects. */ - for (cell = &unclaimed_categories; *cell; ) - { - Category_t category = (*cell)->head; - Class class = objc_lookup_class (category->class_name); - - if (class) - { - DEBUG_PRINTF ("attaching stored categories to object: %s\n", - class->name); - - list_remove_head (cell); - - if (category->instance_methods) - class_add_method_list (class, category->instance_methods); - - if (category->class_methods) - class_add_method_list ((Class) class->class_pointer, - category->class_methods); - - if (category->protocols) - { - __objc_init_protocols (category->protocols); - __objc_class_add_protocols (class, category->protocols); - } - - /* Register the instance methods as class methods, this is - only done for root classes. */ - __objc_register_instance_methods_to_class (class); - } - else - cell = &(*cell)->tail; - } - - if (unclaimed_proto_list && objc_lookup_class ("Protocol")) - { - list_mapcar (unclaimed_proto_list, - (void (*) (void *))__objc_init_protocols); - list_free (unclaimed_proto_list); - unclaimed_proto_list = 0; - } - - objc_send_load (); - - objc_mutex_unlock (__objc_runtime_mutex); -} - -static void -objc_send_load (void) -{ - if (! __objc_module_list) - return; - - /* Try to find out if all the classes loaded so far also have their - superclasses known to the runtime. We suppose that the objects - that are allocated in the +load method are in general of a class - declared in the same module. */ - if (unresolved_classes) - { - Class class = unresolved_classes->head; - - while (objc_lookup_class ((char *) class->super_class)) - { - list_remove_head (&unresolved_classes); - if (unresolved_classes) - class = unresolved_classes->head; - else - break; - } - - /* If we still have classes for whom we don't have yet their - super classes known to the runtime we don't send the +load - messages. */ - if (unresolved_classes) - return; - } - - /* Special check to allow creating and sending messages to constant - strings in +load methods. If these classes are not yet known, - even if all the other classes are known, delay sending of +load. */ - if (! objc_lookup_class ("NXConstantString") || - ! objc_lookup_class ("Object")) - return; - - /* Iterate over all modules in the __objc_module_list and call on - them the __objc_create_classes_tree function. This function - creates a tree of classes that resembles the class hierarchy. */ - list_mapcar (__objc_module_list, - (void (*) (void *)) __objc_create_classes_tree); - - while (__objc_class_tree_list) - { -#ifdef DEBUG - objc_preorder_traverse (__objc_class_tree_list->head, - 0, __objc_tree_print); -#endif - objc_preorder_traverse (__objc_class_tree_list->head, - 0, __objc_send_load); - objc_postorder_traverse (__objc_class_tree_list->head, - 0, __objc_destroy_class_tree_node); - list_remove_head (&__objc_class_tree_list); - } - - list_mapcar (__objc_module_list, (void (*) (void *)) __objc_call_callback); - list_free (__objc_module_list); - __objc_module_list = NULL; -} - -static void -__objc_create_classes_tree (Module_t module) -{ - /* The runtime mutex is locked in this point */ - - Symtab_t symtab = module->symtab; - int i; - - /* Iterate thru classes defined in this module and insert them in - the classes tree hierarchy. */ - for (i = 0; i < symtab->cls_def_cnt; i++) - { - Class class = (Class) symtab->defs[i]; - - objc_tree_insert_class (class); - } -} - -static void -__objc_call_callback (Module_t module) -{ - /* The runtime mutex is locked in this point. */ - - Symtab_t symtab = module->symtab; - int i; - - /* Iterate thru classes defined in this module and call the callback - for each one. */ - for (i = 0; i < symtab->cls_def_cnt; i++) - { - Class class = (Class) symtab->defs[i]; - - /* Call the _objc_load_callback for this class. */ - if (_objc_load_callback) - _objc_load_callback (class, 0); - } - - /* Call the _objc_load_callback for categories. Don't register the - instance methods as class methods for categories to root classes - since they were already added in the class. */ - for (i = 0; i < symtab->cat_def_cnt; i++) - { - Category_t category = symtab->defs[i + symtab->cls_def_cnt]; - Class class = objc_lookup_class (category->class_name); - - if (_objc_load_callback) - _objc_load_callback (class, category); - } -} - -/* Sanity check the version of gcc used to compile `module'. */ - -static void -init_check_module_version (Module_t module) -{ - if ((module->version != OBJC_VERSION) || (module->size != sizeof (Module))) - { - int code; - - if (module->version > OBJC_VERSION) - code = OBJC_ERR_OBJC_VERSION; - else if (module->version < OBJC_VERSION) - code = OBJC_ERR_GCC_VERSION; - else - code = OBJC_ERR_MODULE_SIZE; - - objc_error (nil, code, "Module %s version %d doesn't match runtime %d\n", - module->name, (int)module->version, OBJC_VERSION); - } -} - -static void -__objc_init_protocols (struct objc_protocol_list *protos) -{ - size_t i; - static Class proto_class = 0; - - if (! protos) - return; - - objc_mutex_lock (__objc_runtime_mutex); - - if (! proto_class) - proto_class = objc_lookup_class ("Protocol"); - - if (! proto_class) - { - unclaimed_proto_list = list_cons (protos, unclaimed_proto_list); - objc_mutex_unlock (__objc_runtime_mutex); - return; - } - -#if 0 - assert (protos->next == 0); /* only single ones allowed */ -#endif - - for (i = 0; i < protos->count; i++) - { - struct objc_protocol *aProto = protos->list[i]; - if (((size_t)aProto->class_pointer) == PROTOCOL_VERSION) - { - /* assign class pointer */ - aProto->class_pointer = proto_class; - - /* init super protocols */ - __objc_init_protocols (aProto->protocol_list); - } - else if (protos->list[i]->class_pointer != proto_class) - { - objc_error (nil, OBJC_ERR_PROTOCOL_VERSION, - "Version %d doesn't match runtime protocol version %d\n", - (int) ((char *) protos->list[i]->class_pointer - - (char *) 0), - PROTOCOL_VERSION); - } - } - - objc_mutex_unlock (__objc_runtime_mutex); -} - -static void -__objc_class_add_protocols (Class class, struct objc_protocol_list *protos) -{ - /* Well... */ - if (! protos) - return; - - /* Add it... */ - protos->next = class->protocols; - class->protocols = protos; -} diff --git a/libobjc/libobjc.def b/libobjc/libobjc.def deleted file mode 100644 index a80fb6155896..000000000000 --- a/libobjc/libobjc.def +++ /dev/null @@ -1,170 +0,0 @@ -; GNU Objective C Runtime DLL Export Definitions -; Copyright (C) 1997 Free Software Foundation, Inc. -; Contributed by Scott Christley -; -; 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. -; -; 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, 51 Franklin Street, Fifth Floor, -; Boston, MA 02110-1301, USA. - -LIBRARY libobjc -EXPORTS -search_for_method_in_list -objc_get_uninstalled_dtable -objc_hash_is_key_in_hash -hash_is_key_in_hash -objc_verror -_objc_load_callback -objc_malloc -objc_atomic_malloc -objc_valloc -objc_realloc -objc_calloc -objc_free -__objc_init_thread_system -objc_mutex_allocate -objc_mutex_deallocate -objc_mutex_lock -objc_mutex_trylock -objc_mutex_unlock -objc_thread_detach -objc_thread_exit -objc_thread_get_data -objc_thread_get_priority -objc_thread_id -objc_thread_set_data -objc_thread_set_priority -objc_thread_yield -objc_thread_add -objc_thread_remove -__objc_class_name_Object -__objc_class_name_Protocol -__objc_class_name_NXConstantString -objc_error -__objc_object_alloc -__objc_object_copy -__objc_object_dispose -class_create_instance -object_copy -object_dispose -__objc_init_selector_tables -__objc_register_selectors_from_class -__sel_register_typed_name -sel_get_any_typed_uid -sel_get_any_uid -sel_get_name -sel_get_type -sel_get_typed_uid -sel_get_uid -sel_is_mapped -sel_register_name -sel_register_typed_name -sel_types_match -method_get_first_argument -method_get_next_argument -method_get_nth_argument -method_get_number_of_arguments -method_get_sizeof_arguments -objc_aligned_size -objc_alignof_type -objc_get_type_qualifiers -objc_promoted_size -objc_sizeof_type -objc_skip_argspec -objc_skip_offset -objc_skip_type_qualifiers -objc_skip_typespec -__objc_read_nbyte_uint -__objc_read_nbyte_ulong -__objc_write_class -__objc_write_object -__objc_write_selector -objc_close_typed_stream -objc_end_of_typed_stream -objc_flush_typed_stream -objc_get_stream_class_version -objc_open_typed_stream -objc_open_typed_stream_for_file -objc_read_array -objc_read_char -objc_read_int -objc_read_long -objc_read_object -objc_read_selector -objc_read_short -objc_read_string -objc_read_type -objc_read_types -objc_read_unsigned_char -objc_read_unsigned_int -objc_read_unsigned_long -objc_read_unsigned_short -objc_write_array -objc_write_char -objc_write_int -objc_write_long -objc_write_object -objc_write_object_reference -objc_write_root_object -objc_write_selector -objc_write_short -objc_write_string -objc_write_string_atomic -objc_write_type -objc_write_types -objc_write_unsigned_char -objc_write_unsigned_int -objc_write_unsigned_long -objc_write_unsigned_short -__objc_exec_class -__objc_init_dispatch_tables -__objc_install_premature_dtable -__objc_print_dtable_stats -__objc_responds_to -__objc_update_dispatch_table_for_class -class_add_method_list -class_get_class_method -class_get_instance_method -get_imp -nil_method -objc_msg_lookup -objc_msg_lookup_super -objc_msg_sendv -__objc_add_class_to_hash -__objc_init_class_tables -__objc_resolve_class_links -class_pose_as -objc_get_class -objc_get_meta_class -objc_lookup_class -objc_next_class -sarray_at_put -sarray_at_put_safe -sarray_free -sarray_lazy_copy -sarray_new -sarray_realloc -sarray_remove_garbage -objc_hash_add -hash_add -objc_hash_delete -hash_delete -objc_hash_new -hash_new -objc_hash_next -hash_next -objc_hash_remove -hash_remove -objc_hash_value_for_key -hash_value_for_key diff --git a/libobjc/libobjc_entry.c b/libobjc/libobjc_entry.c deleted file mode 100644 index 205b0eda3b02..000000000000 --- a/libobjc/libobjc_entry.c +++ /dev/null @@ -1,55 +0,0 @@ -/* GNU Objective C Runtime DLL Entry - Copyright (C) 1997 Free Software Foundation, Inc. - Contributed by Scott Christley - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include - -/* - DLL entry function for Objective-C Runtime library - This function gets called everytime a process/thread attaches to DLL - */ -WINBOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, - LPVOID lpReserved) -{ - switch(ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - break; - case DLL_PROCESS_DETACH: - break; - case DLL_THREAD_ATTACH: - break; - case DLL_THREAD_DETACH: - break; - } - return TRUE; -} - -/* - This section terminates the list of imports under GCC. If you do not - include this then you will have problems when linking with DLLs. - */ -asm (".section .idata$3\n" ".long 0,0,0,0,0,0,0,0"); diff --git a/libobjc/linking.m b/libobjc/linking.m deleted file mode 100644 index 8c8a0a968b76..000000000000 --- a/libobjc/linking.m +++ /dev/null @@ -1,40 +0,0 @@ -/* Force linking of classes required by Objective C runtime. - Copyright (C) 1997 Free Software Foundation, Inc. - Contributed by Ovidiu Predescu (ovidiu@net-community.com). - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include - -/* Generate references to Object and NXConstanstString classes since they are - needed by the runtime system to run correctly. */ - - -void __objc_linking (void) -{ - [Object name]; - [NXConstantString name]; -} - diff --git a/libobjc/makefile.dos b/libobjc/makefile.dos deleted file mode 100644 index c7544a16476c..000000000000 --- a/libobjc/makefile.dos +++ /dev/null @@ -1,56 +0,0 @@ -# GNU Objective C Runtime Makefile for compiling with djgpp -# Copyright (C) 1993, 1994, 1996 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 2, 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 COPYING. If not, write to the Free Software -# Foundation, 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. - -# This Makefile is configured for GnuMAKE - -GCC_FOR_TARGET=gcc - -.SUFFIXES: .o .m - -OPTIMIZE = -O2 - -# Always search these dirs when compiling. -SUBDIR_INCLUDES = -I. -I.. -I../config - -.c.o: - $(GCC_FOR_TARGET) $(OPTIMIZE) \ - -c $(GCC_CFLAGS) $(SUBDIR_INCLUDES) $< - -.m.o: - $(GCC_FOR_TARGET) $(OPTIMIZE) -fgnu-runtime \ - -c $(GCC_CFLAGS) $(SUBDIR_INCLUDES) $< - -OBJC_O = hash.o sarray.o class.o sendmsg.o init.o archive.o \ - selector.o objects.o misc.o object.o protocol.o encoding.o thread.o - -libobjc.a: $(OBJC_O) - -rm -f libobjc.a - ar rc libobjc.a $(OBJC_O) - ranlib libobjc.a - -OBJC_H = hash.h objc-list.h sarray.h objc.h \ - objc-api.h \ - object.h protocol.h mutex.h \ - typedstream.h thread.h - -mostlyclean: - -rm -f *.o libobjc.a xforward fflags -clean: mostlyclean -distclean: mostlyclean -extraclean: mostlyclean diff --git a/libobjc/misc.c b/libobjc/misc.c deleted file mode 100644 index 972cff15290a..000000000000 --- a/libobjc/misc.c +++ /dev/null @@ -1,185 +0,0 @@ -/* GNU Objective C Runtime Miscellaneous - Copyright (C) 1993, 1994, 1995, 1996, 1997, 2002 - Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#define __USE_FIXED_PROTOTYPES__ -#include -#include "objc/runtime.h" - -/* -** Error handler function -** NULL so that default is to just print to stderr -*/ -static objc_error_handler _objc_error_handler = NULL; - -/* Trigger an objc error */ -void -objc_error (id object, int code, const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - objc_verror (object, code, fmt, ap); - va_end (ap); -} - -/* Trigger an objc error */ -void -objc_verror (id object, int code, const char *fmt, va_list ap) -{ - BOOL result = NO; - - /* Call the error handler if its there - Otherwise print to stderr */ - if (_objc_error_handler) - result = (*_objc_error_handler) (object, code, fmt, ap); - else - vfprintf (stderr, fmt, ap); - - /* Continue if the error handler says its ok - Otherwise abort the program */ - if (result) - return; - else - abort (); -} - -/* Set the error handler */ -objc_error_handler -objc_set_error_handler (objc_error_handler func) -{ - objc_error_handler temp = _objc_error_handler; - _objc_error_handler = func; - return temp; -} - -/* -** Standard functions for memory allocation and disposal. -** Users should use these functions in their ObjC programs so -** that they work properly with garbage collectors as well as -** can take advantage of the exception/error handling available. -*/ - -void * -objc_malloc (size_t size) -{ - void *res = (void *) (*_objc_malloc) (size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_atomic_malloc (size_t size) -{ - void *res = (void *) (*_objc_atomic_malloc) (size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_valloc (size_t size) -{ - void *res = (void *) (*_objc_valloc) (size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_realloc (void *mem, size_t size) -{ - void *res = (void *) (*_objc_realloc) (mem, size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void * -objc_calloc (size_t nelem, size_t size) -{ - void *res = (void *) (*_objc_calloc) (nelem, size); - if (! res) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted\n"); - return res; -} - -void -objc_free (void *mem) -{ - (*_objc_free) (mem); -} - -/* -** Hook functions for memory allocation and disposal. -** This makes it easy to substitute garbage collection systems -** such as Boehm's GC by assigning these function pointers -** to the GC's allocation routines. By default these point -** to the ANSI standard malloc, realloc, free, etc. -** -** Users should call the normal objc routines above for -** memory allocation and disposal within their programs. -*/ - -#if OBJC_WITH_GC -#include - -static void * -GC_calloc (size_t nelem, size_t size) -{ - void *p = GC_malloc (nelem * size); - if (! p) - objc_error (nil, OBJC_ERR_MEMORY, "Virtual memory exhausted!\n"); - - memset (p, 0, nelem * size); - return p; -} - -static void -noFree (void *p) -{ -} - -void *(*_objc_malloc) (size_t) = GC_malloc; -void *(*_objc_atomic_malloc) (size_t) = GC_malloc_atomic; -void *(*_objc_valloc) (size_t) = GC_malloc; -void *(*_objc_realloc) (void *, size_t) = GC_realloc; -void *(*_objc_calloc) (size_t, size_t) = GC_calloc; -void (*_objc_free) (void *) = noFree; - -#else /* !OBJC_WITH_GC */ - -void *(*_objc_malloc) (size_t) = malloc; -void *(*_objc_atomic_malloc) (size_t) = malloc; -void *(*_objc_valloc) (size_t) = malloc; -void *(*_objc_realloc) (void *, size_t) = realloc; -void *(*_objc_calloc) (size_t, size_t) = calloc; -void (*_objc_free) (void *) = free; - - -#endif /* !OBJC_WITH_GC */ diff --git a/libobjc/nil_method.c b/libobjc/nil_method.c deleted file mode 100644 index 268f0e330da0..000000000000 --- a/libobjc/nil_method.c +++ /dev/null @@ -1,55 +0,0 @@ -/* GNU Objective C Runtime nil receiver function - Copyright (C) 1993, 1995, 1996, 2002 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -/* This is the nil method, the function that is called when the receiver - of a method is nil */ - -#include "objc/runtime.h" - -/* When the receiver of a method invocation is nil, the runtime - returns nil_method() as the method implementation. This function - will be casted to whatever function was supposed to be executed to - execute that method (that function will take an id, followed by a - SEL, followed by who knows what arguments, depends on the method), - and executed. - - For this reason, nil_method() should be a function which can be - called in place of any function taking an 'id' argument followed by - a 'SEL' argument, followed by zero, or one, or any number of - arguments (both a fixed number, or a variable number !). - - There is no "proper" implementation of such a nil_method function - in C, however in all existing implementations it does not matter - when extra arguments are present, so we can simply create a function - taking a receiver and a selector, and all other arguments will be - ignored. :-) -*/ - -id -nil_method (id receiver, SEL op __attribute__ ((__unused__))) -{ - return receiver; -} diff --git a/libobjc/objc/NXConstStr.h b/libobjc/objc/NXConstStr.h deleted file mode 100644 index 3f408d3a207c..000000000000 --- a/libobjc/objc/NXConstStr.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Interface for the NXConstantString class for Objective-C. - Copyright (C) 1995, 2004 Free Software Foundation, Inc. - Contributed by Pieter J. Schoenmakers - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#ifndef __nxconstantstring_INCLUDE_GNU -#define __nxconstantstring_INCLUDE_GNU - -#include "Object.h" - -#ifdef __cplusplus -extern "C" { -#endif - -@interface NXConstantString: Object -{ - char *c_string; - unsigned int len; -} - --(const char *) cString; --(unsigned int) length; - -@end - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libobjc/objc/Object.h b/libobjc/objc/Object.h deleted file mode 100644 index 7b67f46615c6..000000000000 --- a/libobjc/objc/Object.h +++ /dev/null @@ -1,132 +0,0 @@ -/* Interface for the Object class for Objective-C. - Copyright (C) 1993, 1994, 1995 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled - with GCC to produce an executable, this does not cause the resulting - executable to be covered by the GNU General Public License. This - exception does not however invalidate any other reasons why the - executable file might be covered by the GNU General Public License. */ - -#ifndef __object_INCLUDE_GNU -#define __object_INCLUDE_GNU - -#include "objc.h" -#include "typedstream.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * All classes are derived from Object. As such, - * this is the overhead tacked onto those objects. - */ -@interface Object -{ - Class isa; /* A pointer to the instance's class structure */ -} - - /* Initializing classes and instances */ -+ initialize; -- init; - - /* Creating, freeing, and copying instances */ -+ new; -+ alloc; -- free; -- copy; -- shallowCopy; -- deepen; -- deepCopy; - - /* Identifying classes */ -- (Class)class; -- (Class)superClass; -- (MetaClass)metaClass; -- (const char *)name; - - /* Identifying and comparing objects */ -- self; -- (unsigned int)hash; -- (BOOL)isEqual:anObject; -- (int)compare:anotherObject; - - /* Testing object type */ -- (BOOL)isMetaClass; -- (BOOL)isClass; -- (BOOL)isInstance; - - /* Testing inheritance relationships */ -- (BOOL)isKindOf:(Class)aClassObject; -- (BOOL)isMemberOf:(Class)aClassObject; -- (BOOL)isKindOfClassNamed:(const char *)aClassName; -- (BOOL)isMemberOfClassNamed:(const char *)aClassName; - - /* Testing class functionality */ -+ (BOOL)instancesRespondTo:(SEL)aSel; -- (BOOL)respondsTo:(SEL)aSel; - - /* Testing protocol conformance */ -- (BOOL)conformsTo:(Protocol*)aProtocol; - - /* Introspection */ -+ (IMP)instanceMethodFor:(SEL)aSel; -- (IMP)methodFor:(SEL)aSel; -+ (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel; -- (struct objc_method_description *)descriptionForMethod:(SEL)aSel; - - /* Sending messages determined at run time */ -- perform:(SEL)aSel; -- perform:(SEL)aSel with:anObject; -- perform:(SEL)aSel with:anObject1 with:anObject2; - - /* Forwarding */ -- (retval_t)forward:(SEL)aSel :(arglist_t)argFrame; -- (retval_t)performv:(SEL)aSel :(arglist_t)argFrame; - - /* Posing */ -+ poseAs:(Class)aClassObject; -- (Class)transmuteClassTo:(Class)aClassObject; - - /* Enforcing intentions */ -- subclassResponsibility:(SEL)aSel; -- notImplemented:(SEL)aSel; -- shouldNotImplement:(SEL)aSel; - - /* Error handling */ -- doesNotRecognize:(SEL)aSel; -- error:(const char *)aString, ...; - - /* Archiving */ -+ (int)version; -+ setVersion:(int)aVersion; -+ (int)streamVersion: (TypedStream*)aStream; - -- read: (TypedStream*)aStream; -- write: (TypedStream*)aStream; -- awake; - -@end - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libobjc/objc/Protocol.h b/libobjc/objc/Protocol.h deleted file mode 100644 index fe0f28a8eb42..000000000000 --- a/libobjc/objc/Protocol.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Declare the class Protocol for Objective C programs. - Copyright (C) 1993, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#ifndef __Protocol_INCLUDE_GNU -#define __Protocol_INCLUDE_GNU - -#include "Object.h" - -#ifdef __cplusplus -extern "C" { -#endif - -@interface Protocol : Object -{ -@private - char *protocol_name; - struct objc_protocol_list *protocol_list; - struct objc_method_description_list *instance_methods, *class_methods; -} - -/* Obtaining attributes intrinsic to the protocol */ - -- (const char *)name; - -/* Testing protocol conformance */ - -- (BOOL) conformsTo: (Protocol *)aProtocolObject; - -/* Looking up information specific to a protocol */ - -- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel; -- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel; - -@end - -#ifdef __cplusplus -} -#endif - -#endif /* not __Protocol_INCLUDE_GNU */ diff --git a/libobjc/objc/encoding.h b/libobjc/objc/encoding.h deleted file mode 100644 index c432ee93bd3c..000000000000 --- a/libobjc/objc/encoding.h +++ /dev/null @@ -1,107 +0,0 @@ -/* Encoding of types for Objective C. - Copyright (C) 1993, 1997, 2002, 2004 Free Software Foundation, Inc. - -Author: Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#ifndef __encoding_INCLUDE_GNU -#define __encoding_INCLUDE_GNU - -#include "objc-api.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define _C_CONST 'r' -#define _C_IN 'n' -#define _C_INOUT 'N' -#define _C_OUT 'o' -#define _C_BYCOPY 'O' -#define _C_BYREF 'R' -#define _C_ONEWAY 'V' -#define _C_GCINVISIBLE '!' - -#define _F_CONST 0x01 -#define _F_IN 0x01 -#define _F_OUT 0x02 -#define _F_INOUT 0x03 -#define _F_BYCOPY 0x04 -#define _F_BYREF 0x08 -#define _F_ONEWAY 0x10 -#define _F_GCINVISIBLE 0x20 - -int objc_aligned_size (const char *type); -int objc_sizeof_type (const char *type); -int objc_alignof_type (const char *type); -int objc_aligned_size (const char *type); -int objc_promoted_size (const char *type); - -const char *objc_skip_type_qualifiers (const char *type); -const char *objc_skip_typespec (const char *type); -const char *objc_skip_offset (const char *type); -const char *objc_skip_argspec (const char *type); -int method_get_number_of_arguments (struct objc_method *); -int method_get_sizeof_arguments (struct objc_method *); - -char *method_get_first_argument (struct objc_method *, - arglist_t argframe, - const char **type); -char *method_get_next_argument (arglist_t argframe, - const char **type); -char *method_get_nth_argument (struct objc_method *m, - arglist_t argframe, - int arg, - const char **type); - -unsigned objc_get_type_qualifiers (const char *type); - - -struct objc_struct_layout -{ - const char *original_type; - const char *type; - const char *prev_type; - unsigned int record_size; - unsigned int record_align; -}; - -void objc_layout_structure (const char *type, - struct objc_struct_layout *layout); -BOOL objc_layout_structure_next_member (struct objc_struct_layout *layout); -void objc_layout_finish_structure (struct objc_struct_layout *layout, - unsigned int *size, - unsigned int *align); -void objc_layout_structure_get_info (struct objc_struct_layout *layout, - unsigned int *offset, - unsigned int *align, - const char **type); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __encoding_INCLUDE_GNU */ diff --git a/libobjc/objc/hash.h b/libobjc/objc/hash.h deleted file mode 100644 index b1cdd0c4fbf6..000000000000 --- a/libobjc/objc/hash.h +++ /dev/null @@ -1,216 +0,0 @@ -/* Hash tables for Objective C method dispatch. - Copyright (C) 1993, 1995, 1996, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - - -#ifndef __hash_INCLUDE_GNU -#define __hash_INCLUDE_GNU - -#include -#include -#include "objc.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * This data structure is used to hold items - * stored in a hash table. Each node holds - * a key/value pair. - * - * Items in the cache are really of type void *. - */ -typedef struct cache_node -{ - struct cache_node *next; /* Pointer to next entry on the list. - NULL indicates end of list. */ - const void *key; /* Key used to locate the value. Used - to locate value when more than one - key computes the same hash - value. */ - void *value; /* Value stored for the key. */ -} *node_ptr; - - -/* - * This data type is the function that computes a hash code given a key. - * Therefore, the key can be a pointer to anything and the function specific - * to the key type. - * - * Unfortunately there is a mutual data structure reference problem with this - * typedef. Therefore, to remove compiler warnings the functions passed to - * objc_hash_new will have to be casted to this type. - */ -typedef unsigned int (*hash_func_type) (void *, const void *); - -/* - * This data type is the function that compares two hash keys and returns an - * integer greater than, equal to, or less than 0, according as the first - * parameter is lexicographically greater than, equal to, or less than the - * second. - */ - -typedef int (*compare_func_type) (const void *, const void *); - - -/* - * This data structure is the cache. - * - * It must be passed to all of the hashing routines - * (except for new). - */ -typedef struct cache -{ - /* Variables used to implement the hash itself. */ - node_ptr *node_table; /* Pointer to an array of hash nodes. */ - /* Variables used to track the size of the hash table so to determine - when to resize it. */ - unsigned int size; /* Number of buckets allocated for the hash table - (number of array entries allocated for - "node_table"). Must be a power of two. */ - unsigned int used; /* Current number of entries in the hash table. */ - unsigned int mask; /* Precomputed mask. */ - - /* Variables used to implement indexing through the hash table. */ - - unsigned int last_bucket; /* Tracks which entry in the array where - the last value was returned. */ - /* Function used to compute a hash code given a key. - This function is specified when the hash table is created. */ - hash_func_type hash_func; - /* Function used to compare two hash keys to see if they are equal. */ - compare_func_type compare_func; -} *cache_ptr; - - -/* Two important hash tables. */ -extern cache_ptr module_hash_table, class_hash_table; - -/* Allocate and initialize a hash table. */ - -cache_ptr objc_hash_new (unsigned int size, - hash_func_type hash_func, - compare_func_type compare_func); - -/* Deallocate all of the hash nodes and the cache itself. */ - -void objc_hash_delete (cache_ptr cache); - -/* Add the key/value pair to the hash table. If the - hash table reaches a level of fullness then it will be resized. - - assert if the key is already in the hash. */ - -void objc_hash_add (cache_ptr *cachep, const void *key, void *value); - -/* Remove the key/value pair from the hash table. - assert if the key isn't in the table. */ - -void objc_hash_remove (cache_ptr cache, const void *key); - -/* Used to index through the hash table. Start with NULL - to get the first entry. - - Successive calls pass the value returned previously. - ** Don't modify the hash during this operation *** - - Cache nodes are returned such that key or value can - be extracted. */ - -node_ptr objc_hash_next (cache_ptr cache, node_ptr node); - -/* Used to return a value from a hash table using a given key. */ - -void *objc_hash_value_for_key (cache_ptr cache, const void *key); - -/* Used to determine if the given key exists in the hash table */ - -BOOL objc_hash_is_key_in_hash (cache_ptr cache, const void *key); - -/************************************************ - - Useful hashing functions. - - Declared inline for your pleasure. - -************************************************/ - -/* Calculate a hash code by performing some - manipulation of the key pointer. (Use the lowest bits - except for those likely to be 0 due to alignment.) */ - -static inline unsigned int -objc_hash_ptr (cache_ptr cache, const void *key) -{ - return ((size_t)key / sizeof (void *)) & cache->mask; -} - - -/* Calculate a hash code by iterating over a NULL - terminate string. */ -static inline unsigned int -objc_hash_string (cache_ptr cache, const void *key) -{ - unsigned int ret = 0; - unsigned int ctr = 0; - const char *ckey = (const char *) key; - - while (*ckey) { - ret ^= *ckey++ << ctr; - ctr = (ctr + 1) % sizeof (void *); - } - - return ret & cache->mask; -} - - -/* Compare two pointers for equality. */ -static inline int -objc_compare_ptrs (const void *k1, const void *k2) -{ - return (k1 == k2); -} - - -/* Compare two strings. */ -static inline int -objc_compare_strings (const void *k1, const void *k2) -{ - if (k1 == k2) - return 1; - else if (k1 == 0 || k2 == 0) - return 0; - else - return ! strcmp ((const char *) k1, (const char *) k2); -} - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* not __hash_INCLUDE_GNU */ diff --git a/libobjc/objc/objc-api.h b/libobjc/objc/objc-api.h deleted file mode 100644 index e0e49e21fdfc..000000000000 --- a/libobjc/objc/objc-api.h +++ /dev/null @@ -1,626 +0,0 @@ -/* GNU Objective-C Runtime API. - Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled - with GCC to produce an executable, this does not cause the resulting - executable to be covered by the GNU General Public License. This - exception does not however invalidate any other reasons why the - executable file might be covered by the GNU General Public License. */ - -#ifndef __objc_api_INCLUDE_GNU -#define __objc_api_INCLUDE_GNU - -#include "objc.h" -#include "hash.h" -#include "thr.h" -#include "objc-decls.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* For functions which return Method_t */ -#define METHOD_NULL (Method_t)0 - /* Boolean typedefs */ -/* -** Method descriptor returned by introspective Object methods. -** This is really just the first part of the more complete objc_method -** structure defined below and used internally by the runtime. -*/ -struct objc_method_description -{ - SEL name; /* this is a selector, not a string */ - char *types; /* type encoding */ -}; - -/* Filer types used to describe Ivars and Methods. */ -#define _C_ID '@' -#define _C_CLASS '#' -#define _C_SEL ':' -#define _C_CHR 'c' -#define _C_UCHR 'C' -#define _C_SHT 's' -#define _C_USHT 'S' -#define _C_INT 'i' -#define _C_UINT 'I' -#define _C_LNG 'l' -#define _C_ULNG 'L' -#define _C_LNG_LNG 'q' -#define _C_ULNG_LNG 'Q' -#define _C_FLT 'f' -#define _C_DBL 'd' -#define _C_BFLD 'b' -#define _C_BOOL 'B' -#define _C_VOID 'v' -#define _C_UNDEF '?' -#define _C_PTR '^' -#define _C_CHARPTR '*' -#define _C_ATOM '%' -#define _C_ARY_B '[' -#define _C_ARY_E ']' -#define _C_UNION_B '(' -#define _C_UNION_E ')' -#define _C_STRUCT_B '{' -#define _C_STRUCT_E '}' -#define _C_VECTOR '!' -#define _C_COMPLEX 'j' - - -/* -** Error handling -** -** Call objc_error() or objc_verror() to record an error; this error -** routine will generally exit the program but not necessarily if the -** user has installed his own error handler. -** -** Call objc_set_error_handler to assign your own function for -** handling errors. The function should return YES if it is ok -** to continue execution, or return NO or just abort if the -** program should be stopped. The default error handler is just to -** print a message on stderr. -** -** The error handler function should be of type objc_error_handler -** The first parameter is an object instance of relevance. -** The second parameter is an error code. -** The third parameter is a format string in the printf style. -** The fourth parameter is a variable list of arguments. -*/ -extern void objc_error(id object, int code, const char* fmt, ...); -extern void objc_verror(id object, int code, const char* fmt, va_list ap); -typedef BOOL (*objc_error_handler)(id, int code, const char *fmt, va_list ap); -extern objc_error_handler objc_set_error_handler(objc_error_handler func); - -/* -** Error codes -** These are used by the runtime library, and your -** error handling may use them to determine if the error is -** hard or soft thus whether execution can continue or abort. -*/ -#define OBJC_ERR_UNKNOWN 0 /* Generic error */ - -#define OBJC_ERR_OBJC_VERSION 1 /* Incorrect runtime version */ -#define OBJC_ERR_GCC_VERSION 2 /* Incorrect compiler version */ -#define OBJC_ERR_MODULE_SIZE 3 /* Bad module size */ -#define OBJC_ERR_PROTOCOL_VERSION 4 /* Incorrect protocol version */ - -#define OBJC_ERR_MEMORY 10 /* Out of memory */ - -#define OBJC_ERR_RECURSE_ROOT 20 /* Attempt to archive the root - object more than once. */ -#define OBJC_ERR_BAD_DATA 21 /* Didn't read expected data */ -#define OBJC_ERR_BAD_KEY 22 /* Bad key for object */ -#define OBJC_ERR_BAD_CLASS 23 /* Unknown class */ -#define OBJC_ERR_BAD_TYPE 24 /* Bad type specification */ -#define OBJC_ERR_NO_READ 25 /* Cannot read stream */ -#define OBJC_ERR_NO_WRITE 26 /* Cannot write stream */ -#define OBJC_ERR_STREAM_VERSION 27 /* Incorrect stream version */ -#define OBJC_ERR_BAD_OPCODE 28 /* Bad opcode */ - -#define OBJC_ERR_UNIMPLEMENTED 30 /* Method is not implemented */ - -#define OBJC_ERR_BAD_STATE 40 /* Bad thread state */ - -/* -** Set this variable nonzero to print a line describing each -** message that is sent. (this is currently disabled) -*/ -extern BOOL objc_trace; - - -/* For every class which happens to have statically allocated instances in - this module, one OBJC_STATIC_INSTANCES is allocated by the compiler. - INSTANCES is NULL terminated and points to all statically allocated - instances of this class. */ -struct objc_static_instances -{ - char *class_name; -#ifdef __cplusplus - id instances[1]; -#else - id instances[0]; -#endif -}; - -/* -** Whereas a Module (defined further down) is the root (typically) of a file, -** a Symtab is the root of the class and category definitions within the -** module. -** -** A Symtab contains a variable length array of pointers to classes and -** categories defined in the module. -*/ -typedef struct objc_symtab { - unsigned long sel_ref_cnt; /* Unknown. */ - SEL refs; /* Unknown. */ - unsigned short cls_def_cnt; /* Number of classes compiled - (defined) in the module. */ - unsigned short cat_def_cnt; /* Number of categories - compiled (defined) in the - module. */ - - void *defs[1]; /* Variable array of pointers. - cls_def_cnt of type Class - followed by cat_def_cnt of - type Category_t, followed - by a NULL terminated array - of objc_static_instances. */ -} Symtab, *Symtab_t; - - -/* -** The compiler generates one of these structures for each module that -** composes the executable (eg main.m). -** -** This data structure is the root of the definition tree for the module. -** -** A collect program runs between ld stages and creates a ObjC ctor array. -** That array holds a pointer to each module structure of the executable. -*/ -typedef struct objc_module { - unsigned long version; /* Compiler revision. */ - unsigned long size; /* sizeof(Module). */ - const char* name; /* Name of the file where the - module was generated. The - name includes the path. */ - - Symtab_t symtab; /* Pointer to the Symtab of - the module. The Symtab - holds an array of - pointers to - the classes and categories - defined in the module. */ -} Module, *Module_t; - - -/* -** The compiler generates one of these structures for a class that has -** instance variables defined in its specification. -*/ -typedef struct objc_ivar { - const char* ivar_name; /* Name of the instance - variable as entered in the - class definition. */ - const char* ivar_type; /* Description of the Ivar's - type. Useful for - debuggers. */ - int ivar_offset; /* Byte offset from the base - address of the instance - structure to the variable. */ -} *Ivar_t; - -typedef struct objc_ivar_list { - int ivar_count; /* Number of structures (Ivar) - contained in the list. One - structure per instance - variable defined in the - class. */ - struct objc_ivar ivar_list[1]; /* Variable length - structure. */ -} IvarList, *IvarList_t; - - -/* -** The compiler generates one (or more) of these structures for a class that -** has methods defined in its specification. -** -** The implementation of a class can be broken into separate pieces in a file -** and categories can break them across modules. To handle this problem is a -** singly linked list of methods. -*/ -typedef struct objc_method { - SEL method_name; /* This variable is the method's - name. It is a char*. - The unique integer passed to - objc_msg_send is a char* too. - It is compared against - method_name using strcmp. */ - const char* method_types; /* Description of the method's - parameter list. Useful for - debuggers. */ - IMP method_imp; /* Address of the method in the - executable. */ -} Method, *Method_t; - -typedef struct objc_method_list { - struct objc_method_list* method_next; /* This variable is used to link - a method list to another. It - is a singly linked list. */ - int method_count; /* Number of methods defined in - this structure. */ - Method method_list[1]; /* Variable length - structure. */ -} MethodList, *MethodList_t; - -struct objc_protocol_list { - struct objc_protocol_list *next; - size_t count; - Protocol *list[1]; -}; - -/* -** This is used to assure consistent access to the info field of -** classes -*/ -#ifndef HOST_BITS_PER_LONG -#define HOST_BITS_PER_LONG (sizeof(long)*8) -#endif - -#define __CLS_INFO(cls) ((cls)->info) -#define __CLS_ISINFO(cls, mask) ((__CLS_INFO(cls)&mask)==mask) -#define __CLS_SETINFO(cls, mask) (__CLS_INFO(cls) |= mask) - -/* The structure is of type MetaClass */ -#define _CLS_META 0x2L -#define CLS_ISMETA(cls) ((cls)&&__CLS_ISINFO(cls, _CLS_META)) - - -/* The structure is of type Class */ -#define _CLS_CLASS 0x1L -#define CLS_ISCLASS(cls) ((cls)&&__CLS_ISINFO(cls, _CLS_CLASS)) - -/* -** The class is initialized within the runtime. This means that -** it has had correct super and sublinks assigned -*/ -#define _CLS_RESOLV 0x8L -#define CLS_ISRESOLV(cls) __CLS_ISINFO(cls, _CLS_RESOLV) -#define CLS_SETRESOLV(cls) __CLS_SETINFO(cls, _CLS_RESOLV) - -/* -** The class has been send a +initialize message or a such is not -** defined for this class -*/ -#define _CLS_INITIALIZED 0x04L -#define CLS_ISINITIALIZED(cls) __CLS_ISINFO(cls, _CLS_INITIALIZED) -#define CLS_SETINITIALIZED(cls) __CLS_SETINFO(cls, _CLS_INITIALIZED) - -/* -** The class number of this class. This must be the same for both the -** class and its meta class object -*/ -#define CLS_GETNUMBER(cls) (__CLS_INFO(cls) >> (HOST_BITS_PER_LONG/2)) -#define CLS_SETNUMBER(cls, num) \ - ({ (cls)->info <<= (HOST_BITS_PER_LONG/2); \ - (cls)->info >>= (HOST_BITS_PER_LONG/2); \ - __CLS_SETINFO(cls, (((unsigned long)num) << (HOST_BITS_PER_LONG/2))); }) - -/* -** The compiler generates one of these structures for each category. A class -** may have many categories and contain both instance and factory methods. -*/ -typedef struct objc_category { - const char* category_name; /* Name of the category. Name - contained in the () of the - category definition. */ - const char* class_name; /* Name of the class to which - the category belongs. */ - MethodList_t instance_methods; /* Linked list of instance - methods defined in the - category. NULL indicates no - instance methods defined. */ - MethodList_t class_methods; /* Linked list of factory - methods defined in the - category. NULL indicates no - class methods defined. */ - struct objc_protocol_list *protocols; /* List of Protocols - conformed to */ -} Category, *Category_t; - -/* -** Structure used when a message is send to a class's super class. The -** compiler generates one of these structures and passes it to -** objc_msg_super. -*/ -typedef struct objc_super { - id self; /* Id of the object sending - the message. */ -#ifdef __cplusplus - Class super_class; -#else - Class class; /* Object's super class. */ -#endif -} Super, *Super_t; - -IMP objc_msg_lookup_super(Super_t super, SEL sel); - -retval_t objc_msg_sendv(id, SEL, arglist_t); - - - -/* -** This is a hook which is called by objc_lookup_class and -** objc_get_class if the runtime is not able to find the class. -** This may e.g. try to load in the class using dynamic loading. -** The function is guaranteed to be passed a non-NULL name string. -*/ -objc_EXPORT Class (*_objc_lookup_class)(const char *name); - -/* -** This is a hook which is called by __objc_exec_class every time a class -** or a category is loaded into the runtime. This may e.g. help a -** dynamic loader determine the classes that have been loaded when -** an object file is dynamically linked in. -*/ -objc_EXPORT void (*_objc_load_callback)(Class _class, Category* category); - -/* -** Hook functions for allocating, copying and disposing of instances -*/ -objc_EXPORT id (*_objc_object_alloc)(Class _class); -objc_EXPORT id (*_objc_object_copy)(id object); -objc_EXPORT id (*_objc_object_dispose)(id object); - -/* -** Standard functions for memory allocation and disposal. -** Users should use these functions in their ObjC programs so -** that they work properly with garbage collectors as well as -** can take advantage of the exception/error handling available. -*/ -void * -objc_malloc(size_t size); - -void * -objc_atomic_malloc(size_t size); - -void * -objc_valloc(size_t size); - -void * -objc_realloc(void *mem, size_t size); - -void * -objc_calloc(size_t nelem, size_t size); - -void -objc_free(void *mem); - -/* -** Hook functions for memory allocation and disposal. -** This makes it easy to substitute garbage collection systems -** such as Boehm's GC by assigning these function pointers -** to the GC's allocation routines. By default these point -** to the ANSI standard malloc, realloc, free, etc. -** -** Users should call the normal objc routines above for -** memory allocation and disposal within their programs. -*/ -objc_EXPORT void *(*_objc_malloc)(size_t); -objc_EXPORT void *(*_objc_atomic_malloc)(size_t); -objc_EXPORT void *(*_objc_valloc)(size_t); -objc_EXPORT void *(*_objc_realloc)(void *, size_t); -objc_EXPORT void *(*_objc_calloc)(size_t, size_t); -objc_EXPORT void (*_objc_free)(void *); - -/* -** Hook for method forwarding. This makes it easy to substitute a -** library, such as ffcall, that implements closures, thereby avoiding -** gcc's __builtin_apply problems. -*/ -objc_EXPORT IMP (*__objc_msg_forward)(SEL); - -Method_t class_get_class_method(MetaClass _class, SEL aSel); - -Method_t class_get_instance_method(Class _class, SEL aSel); - -Class class_pose_as(Class impostor, Class superclass); - -Class objc_get_class(const char *name); - -Class objc_lookup_class(const char *name); - -Class objc_next_class(void **enum_state); - -const char *sel_get_name(SEL selector); - -const char *sel_get_type(SEL selector); - -SEL sel_get_uid(const char *name); - -SEL sel_get_any_uid(const char *name); - -SEL sel_get_any_typed_uid(const char *name); - -SEL sel_get_typed_uid(const char *name, const char*); - -SEL sel_register_name(const char *name); - -SEL sel_register_typed_name(const char *name, const char*type); - - -BOOL sel_is_mapped (SEL aSel); - -extern id class_create_instance(Class _class); - -static inline const char * -class_get_class_name(Class _class) -{ - return CLS_ISCLASS(_class)?_class->name:((_class==Nil)?"Nil":0); -} - -static inline long -class_get_instance_size(Class _class) -{ - return CLS_ISCLASS(_class)?_class->instance_size:0; -} - -static inline MetaClass -class_get_meta_class(Class _class) -{ - return CLS_ISCLASS(_class)?_class->class_pointer:Nil; -} - -static inline Class -class_get_super_class(Class _class) -{ - return CLS_ISCLASS(_class)?_class->super_class:Nil; -} - -static inline int -class_get_version(Class _class) -{ - return CLS_ISCLASS(_class)?_class->version:-1; -} - -static inline BOOL -class_is_class(Class _class) -{ - return CLS_ISCLASS(_class); -} - -static inline BOOL -class_is_meta_class(Class _class) -{ - return CLS_ISMETA(_class); -} - - -static inline void -class_set_version(Class _class, long version) -{ - if (CLS_ISCLASS(_class)) - _class->version = version; -} - -static inline void * -class_get_gc_object_type (Class _class) -{ - return CLS_ISCLASS(_class) ? _class->gc_object_type : NULL; -} - -/* Mark the instance variable as innaccessible to the garbage collector */ -extern void class_ivar_set_gcinvisible (Class _class, - const char* ivarname, - BOOL gcInvisible); - -static inline IMP -method_get_imp(Method_t method) -{ - return (method!=METHOD_NULL)?method->method_imp:(IMP)0; -} - -IMP get_imp (Class _class, SEL sel); - -/* Redefine on NeXTSTEP so as not to conflict with system function */ -#ifdef __NeXT__ -#define object_copy gnu_object_copy -#define object_dispose gnu_object_dispose -#endif - -id object_copy(id object); - -id object_dispose(id object); - -static inline Class -object_get_class(id object) -{ - return ((object!=nil) - ? (CLS_ISCLASS(object->class_pointer) - ? object->class_pointer - : (CLS_ISMETA(object->class_pointer) - ? (Class)object - : Nil)) - : Nil); -} - -static inline const char * -object_get_class_name(id object) -{ - return ((object!=nil)?(CLS_ISCLASS(object->class_pointer) - ?object->class_pointer->name - :((Class)object)->name) - :"Nil"); -} - -static inline MetaClass -object_get_meta_class(id object) -{ - return ((object!=nil)?(CLS_ISCLASS(object->class_pointer) - ?object->class_pointer->class_pointer - :(CLS_ISMETA(object->class_pointer) - ?object->class_pointer - :Nil)) - :Nil); -} - -static inline Class -object_get_super_class -(id object) -{ - return ((object!=nil)?(CLS_ISCLASS(object->class_pointer) - ?object->class_pointer->super_class - :(CLS_ISMETA(object->class_pointer) - ?((Class)object)->super_class - :Nil)) - :Nil); -} - -static inline BOOL -object_is_class (id object) -{ - return ((object != nil) && CLS_ISMETA (object->class_pointer)); -} - -static inline BOOL -object_is_instance (id object) -{ - return ((object != nil) && CLS_ISCLASS (object->class_pointer)); -} - -static inline BOOL -object_is_meta_class (id object) -{ - return ((object != nil) - && !object_is_instance (object) - && !object_is_class (object)); -} - -struct sarray* -objc_get_uninstalled_dtable(void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* not __objc_api_INCLUDE_GNU */ - - - diff --git a/libobjc/objc/objc-decls.h b/libobjc/objc/objc-decls.h deleted file mode 100644 index 52938a2381c8..000000000000 --- a/libobjc/objc/objc-decls.h +++ /dev/null @@ -1,47 +0,0 @@ -/* GNU Objective-C Extern helpers for Win32. - Copyright (C) 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled - with GCC to produce an executable, this does not cause the resulting - executable to be covered by the GNU General Public License. This - exception does not however invalidate any other reasons why the - executable file might be covered by the GNU General Public License. */ - -#ifndef __objc_decls_INCLUDE_GNU -#define __objc_decls_INCLUDE_GNU - -#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32) - -# ifdef DLL_EXPORT /* defined by libtool (if required) */ -# define objc_EXPORT __declspec(dllexport) -# define objc_DECLARE __declspec(dllexport) -#else -# define objc_EXPORT extern __declspec(dllimport) -# define objc_DECLARE extern __declspec(dllimport) -#endif - -#else - -# define objc_EXPORT extern -# define objc_DECLARE - -#endif - -#endif /* __objc_decls_INCLUDE_GNU */ diff --git a/libobjc/objc/objc-list.h b/libobjc/objc/objc-list.h deleted file mode 100644 index 051e1c2c132a..000000000000 --- a/libobjc/objc/objc-list.h +++ /dev/null @@ -1,156 +0,0 @@ -/* Generic single linked list to keep various information - Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup. - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#ifndef __GNU_OBJC_LIST_H -#define __GNU_OBJC_LIST_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -struct objc_list { - void *head; - struct objc_list *tail; -}; - -/* Return a cons cell produced from (head . tail) */ - -static inline struct objc_list* -list_cons(void* head, struct objc_list* tail) -{ - struct objc_list* cell; - - cell = (struct objc_list*)objc_malloc(sizeof(struct objc_list)); - cell->head = head; - cell->tail = tail; - return cell; -} - -/* Return the length of a list, list_length(NULL) returns zero */ - -static inline int -list_length(struct objc_list* list) -{ - int i = 0; - while(list) - { - i += 1; - list = list->tail; - } - return i; -} - -/* Return the Nth element of LIST, where N count from zero. If N - larger than the list length, NULL is returned */ - -static inline void* -list_nth(int indx, struct objc_list* list) -{ - while(indx-- != 0) - { - if(list->tail) - list = list->tail; - else - return 0; - } - return list->head; -} - -/* Remove the element at the head by replacing it by its successor */ - -static inline void -list_remove_head(struct objc_list** list) -{ - if ((*list)->tail) - { - struct objc_list* tail = (*list)->tail; /* fetch next */ - *(*list) = *tail; /* copy next to list head */ - objc_free(tail); /* free next */ - } - else /* only one element in list */ - { - objc_free(*list); - (*list) = 0; - } -} - - -/* Remove the element with `car' set to ELEMENT */ - -static inline void -list_remove_elem(struct objc_list** list, void* elem) -{ - while (*list) { - if ((*list)->head == elem) - list_remove_head(list); - list = &((*list)->tail); - } -} - -/* Map FUNCTION over all elements in LIST */ - -static inline void -list_mapcar(struct objc_list* list, void(*function)(void*)) -{ - while(list) - { - (*function)(list->head); - list = list->tail; - } -} - -/* Return element that has ELEM as car */ - -static inline struct objc_list** -list_find(struct objc_list** list, void* elem) -{ - while(*list) - { - if ((*list)->head == elem) - return list; - list = &((*list)->tail); - } - return NULL; -} - -/* Free list (backwards recursive) */ - -static void -list_free(struct objc_list* list) -{ - if(list) - { - list_free(list->tail); - objc_free(list); - } -} - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* not __GNU_OBJC_LIST_H */ diff --git a/libobjc/objc/objc.h b/libobjc/objc/objc.h deleted file mode 100644 index ee7612c9754c..000000000000 --- a/libobjc/objc/objc.h +++ /dev/null @@ -1,165 +0,0 @@ -/* Basic data types for Objective C. - Copyright (C) 1993, 1995, 1996, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#ifndef __objc_INCLUDE_GNU -#define __objc_INCLUDE_GNU - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* -** Definition of the boolean type. -*/ -#ifdef __vxworks -typedef int BOOL; -#else -typedef unsigned char BOOL; -#endif -#define YES (BOOL)1 -#define NO (BOOL)0 - -/* -** Definition of a selector. Selectors themselves are not unique, but -** the sel_id is a unique identifier. -*/ -typedef const struct objc_selector -{ - void *sel_id; - const char *sel_types; -} *SEL; - -inline static BOOL -sel_eq (SEL s1, SEL s2) -{ - if (s1 == 0 || s2 == 0) - return s1 == s2; - else - return s1->sel_id == s2->sel_id; -} - - -/* -** ObjC uses this typedef for untyped instances. -*/ -typedef struct objc_object { - struct objc_class* class_pointer; -} *id; - -/* -** Definition of method type. When retrieving the implementation of a -** method, this is type of the pointer returned. The idea of the -** definition of IMP is to represent a 'pointer to a general function -** taking an id, a SEL, followed by other unspecified arguments'. You -** must always cast an IMP to a pointer to a function taking the -** appropriate, specific types for that function, before calling it - -** to make sure the appropriate arguments are passed to it. The code -** generated by the compiler to perform method calls automatically -** does this cast inside method calls. -*/ -typedef id (*IMP)(id, SEL, ...); - -/* -** More simple types... -*/ -#define nil (id)0 /* id of Nil instance */ -#define Nil (Class)0 /* id of Nil class */ -typedef char *STR; /* String alias */ - -/* -** The compiler generates one of these structures for each class. -** -** This structure is the definition for classes. -** -** This structure is generated by the compiler in the executable and used by -** the run-time during normal messaging operations. Therefore some members -** change type. The compiler generates "char* const" and places a string in -** the following member variables: super_class. -*/ -typedef struct objc_class *MetaClass; -typedef struct objc_class *Class; -struct objc_class { - MetaClass class_pointer; /* Pointer to the class's - meta class. */ - struct objc_class* super_class; /* Pointer to the super - class. NULL for class - Object. */ - const char* name; /* Name of the class. */ - long version; /* Unknown. */ - unsigned long info; /* Bit mask. See class masks - defined above. */ - long instance_size; /* Size in bytes of the class. - The sum of the class - definition and all super - class definitions. */ - struct objc_ivar_list* ivars; /* Pointer to a structure that - describes the instance - variables in the class - definition. NULL indicates - no instance variables. Does - not include super class - variables. */ - struct objc_method_list* methods; /* Linked list of instance - methods defined for the - class. */ - struct sarray * dtable; /* Pointer to instance - method dispatch table. */ - struct objc_class* subclass_list; /* Subclasses */ - struct objc_class* sibling_class; - - struct objc_protocol_list *protocols; /* Protocols conformed to */ - void* gc_object_type; -}; - -#ifndef __OBJC__ -typedef struct objc_protocol { - struct objc_class* class_pointer; - char *protocol_name; - struct objc_protocol_list *protocol_list; - struct objc_method_description_list *instance_methods, *class_methods; -} Protocol; - -#else /* __OBJC__ */ -@class Protocol; -#endif - -typedef void* retval_t; /* return value */ -typedef void(*apply_t)(void); /* function pointer */ -typedef union arglist { - char *arg_ptr; - char arg_regs[sizeof (char*)]; -} *arglist_t; /* argument frame */ - - -IMP objc_msg_lookup(id receiver, SEL op); - -#ifdef __cplusplus -} -#endif - -#endif /* not __objc_INCLUDE_GNU */ diff --git a/libobjc/objc/runtime.h b/libobjc/objc/runtime.h deleted file mode 100644 index 3582d1d91c0c..000000000000 --- a/libobjc/objc/runtime.h +++ /dev/null @@ -1,96 +0,0 @@ -/* GNU Objective C Runtime internal declarations - Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#ifndef __objc_runtime_INCLUDE_GNU -#define __objc_runtime_INCLUDE_GNU - -#include /* for varargs and va_list's */ - -#include -#include - -#include /* so noone else will get system versions */ -#include - -#include "objc.h" /* core data types */ -#include "objc-api.h" /* runtime api functions */ - -#include "thr.h" /* thread and mutex support */ - -#include "hash.h" /* hash structures */ -#include "objc-list.h" /* linear lists */ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -extern void __objc_add_class_to_hash(Class); /* (objc-class.c) */ -extern void __objc_init_selector_tables(void); /* (objc-sel.c) */ -extern void __objc_init_class_tables(void); /* (objc-class.c) */ -extern void __objc_init_dispatch_tables(void); /* (objc-dispatch.c) */ -extern void __objc_install_premature_dtable(Class); /* (objc-dispatch.c) */ -extern void __objc_resolve_class_links(void); /* (objc-class.c) */ -extern void __objc_register_selectors_from_class(Class); /* (objc-sel.c) */ -extern void __objc_register_selectors_from_list (MethodList_t); /* (selector.c) */ -extern void __objc_update_dispatch_table_for_class (Class);/* (objc-msg.c) */ - -extern int __objc_init_thread_system(void); /* thread.c */ -extern int __objc_fini_thread_system(void); /* thread.c */ -extern void __objc_print_dtable_stats(void); /* sendmsg.c */ - -extern void class_add_method_list(Class, MethodList_t); - -/* Registering instance methods as class methods for root classes */ -extern void __objc_register_instance_methods_to_class(Class); -extern Method_t search_for_method_in_list(MethodList_t list, SEL op); - -/* True when class links has been resolved */ -extern BOOL __objc_class_links_resolved; - -/* Number of selectors stored in each of the selector tables */ -extern unsigned int __objc_selector_max_index; - -/* Mutex locking __objc_selector_max_index and its arrays. */ -extern objc_mutex_t __objc_runtime_mutex; - -/* Number of threads which are alive. */ -extern int __objc_runtime_threads_alive; - -#ifdef DEBUG -#define DEBUG_PRINTF(format, args...) printf (format, ## args) -#else -#define DEBUG_PRINTF(format, args...) -#endif - -BOOL __objc_responds_to (id object, SEL sel); /* for internal use only! */ -SEL __sel_register_typed_name (const char*, const char*, - struct objc_selector*, BOOL is_const); -extern void __objc_generate_gc_type_description (Class); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* not __objc_runtime_INCLUDE_GNU */ diff --git a/libobjc/objc/sarray.h b/libobjc/objc/sarray.h deleted file mode 100644 index fe66b2e9a73c..000000000000 --- a/libobjc/objc/sarray.h +++ /dev/null @@ -1,244 +0,0 @@ -/* Sparse Arrays for Objective C dispatch tables - Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup. - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#ifndef __sarray_INCLUDE_GNU -#define __sarray_INCLUDE_GNU - -#include "thr.h" - -#define OBJC_SPARSE2 /* 2-level sparse array */ -/* #define OBJC_SPARSE3 */ /* 3-level sparse array */ - -#ifdef OBJC_SPARSE2 -extern const char* __objc_sparse2_id; -#endif - -#ifdef OBJC_SPARSE3 -extern const char* __objc_sparse3_id; -#endif - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -extern int nbuckets; /* for stats */ -extern int nindices; -extern int narrays; -extern int idxsize; - -/* An unsigned integer of same size as a pointer */ -#define SIZET_BITS (sizeof(size_t)*8) - -#if defined(__sparc__) || defined(OBJC_SPARSE2) -#define PRECOMPUTE_SELECTORS -#endif - -#ifdef OBJC_SPARSE3 - -/* Buckets are 8 words each */ -#define BUCKET_BITS 3 -#define BUCKET_SIZE (1< - indices[x.off.ioffset]-> - buckets[x.off.boffset]-> - elems[x.off.eoffset]; -#else /* OBJC_SPARSE2 */ - return array->buckets[x.off.boffset]->elems[x.off.eoffset]; -#endif /* OBJC_SPARSE2 */ -#else /* not PRECOMPUTE_SELECTORS */ -#ifdef OBJC_SPARSE3 - return array-> - indices[indx/INDEX_CAPACITY]-> - buckets[(indx/BUCKET_SIZE)%INDEX_SIZE]-> - elems[indx%BUCKET_SIZE]; -#else /* OBJC_SPARSE2 */ - return array->buckets[indx/BUCKET_SIZE]->elems[indx%BUCKET_SIZE]; -#endif /* not OBJC_SPARSE3 */ -#endif /* not PRECOMPUTE_SELECTORS */ -} - -static inline void* sarray_get_safe(struct sarray* array, sidx indx) -{ - if(soffset_decode(indx) < array->capacity) - return sarray_get(array, indx); - else - return (array->empty_bucket->elems[0]); -} - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __sarray_INCLUDE_GNU */ diff --git a/libobjc/objc/thr.h b/libobjc/objc/thr.h deleted file mode 100644 index c13992688901..000000000000 --- a/libobjc/objc/thr.h +++ /dev/null @@ -1,153 +0,0 @@ -/* Thread and mutex controls for Objective C. - Copyright (C) 1996, 1997, 2002, 2004 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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. - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - - -#ifndef __thread_INCLUDE_GNU -#define __thread_INCLUDE_GNU - -#include "objc.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/************************************************************************* - * Universal static variables: - */ -extern int __objc_thread_exit_status; /* Global exit status. */ - -/******** - * Thread safe implementation types and functions. - */ - -/* Thread priorities */ -#define OBJC_THREAD_INTERACTIVE_PRIORITY 2 -#define OBJC_THREAD_BACKGROUND_PRIORITY 1 -#define OBJC_THREAD_LOW_PRIORITY 0 - -/* A thread */ -typedef void * objc_thread_t; - -/* This structure represents a single mutual exclusion lock. */ -struct objc_mutex -{ - volatile objc_thread_t owner; /* Id of thread that owns. */ - volatile int depth; /* # of acquires. */ - void * backend; /* Specific to backend */ -}; -typedef struct objc_mutex *objc_mutex_t; - -/* This structure represents a single condition mutex */ -struct objc_condition -{ - void * backend; /* Specific to backend */ -}; -typedef struct objc_condition *objc_condition_t; - -/* Frontend mutex functions */ -objc_mutex_t objc_mutex_allocate (void); -int objc_mutex_deallocate (objc_mutex_t mutex); -int objc_mutex_lock (objc_mutex_t mutex); -int objc_mutex_unlock (objc_mutex_t mutex); -int objc_mutex_trylock (objc_mutex_t mutex); - -/* Frontend condition mutex functions */ -objc_condition_t objc_condition_allocate (void); -int objc_condition_deallocate (objc_condition_t condition); -int objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex); -int objc_condition_signal (objc_condition_t condition); -int objc_condition_broadcast (objc_condition_t condition); - -/* Frontend thread functions */ -objc_thread_t objc_thread_detach (SEL selector, id object, id argument); -void objc_thread_yield (void); -int objc_thread_exit (void); -int objc_thread_set_priority (int priority); -int objc_thread_get_priority (void); -void * objc_thread_get_data (void); -int objc_thread_set_data (void *value); -objc_thread_t objc_thread_id (void); -void objc_thread_add (void); -void objc_thread_remove (void); - -/* - Use this to set the hook function that will be called when the - runtime initially becomes multi threaded. - The hook function is only called once, meaning only when the - 2nd thread is spawned, not for each and every thread. - - It returns the previous hook function or NULL if there is none. - - A program outside of the runtime could set this to some function so - it can be informed; for example, the GNUstep Base Library sets it - so it can implement the NSBecomingMultiThreaded notification. - */ -typedef void (*objc_thread_callback) (void); -objc_thread_callback objc_set_thread_callback (objc_thread_callback func); - -/* Backend initialization functions */ -int __objc_init_thread_system (void); -int __objc_fini_thread_system (void); - -/* Backend mutex functions */ -int __objc_mutex_allocate (objc_mutex_t mutex); -int __objc_mutex_deallocate (objc_mutex_t mutex); -int __objc_mutex_lock (objc_mutex_t mutex); -int __objc_mutex_trylock (objc_mutex_t mutex); -int __objc_mutex_unlock (objc_mutex_t mutex); - -/* Backend condition mutex functions */ -int __objc_condition_allocate (objc_condition_t condition); -int __objc_condition_deallocate (objc_condition_t condition); -int __objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex); -int __objc_condition_broadcast (objc_condition_t condition); -int __objc_condition_signal (objc_condition_t condition); - -/* Backend thread functions */ -objc_thread_t __objc_thread_detach (void (*func) (void *arg), void *arg); -int __objc_thread_set_priority (int priority); -int __objc_thread_get_priority (void); -void __objc_thread_yield (void); -int __objc_thread_exit (void); -objc_thread_t __objc_thread_id (void); -int __objc_thread_set_data (void *value); -void * __objc_thread_get_data (void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* not __thread_INCLUDE_GNU */ diff --git a/libobjc/objc/typedstream.h b/libobjc/objc/typedstream.h deleted file mode 100644 index 3a5e0b3b80cf..000000000000 --- a/libobjc/objc/typedstream.h +++ /dev/null @@ -1,141 +0,0 @@ -/* GNU Objective-C Typed Streams interface. - Copyright (C) 1993, 1995, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled - with GCC to produce an executable, this does not cause the resulting - executable to be covered by the GNU General Public License. This - exception does not however invalidate any other reasons why the - executable file might be covered by the GNU General Public License. */ - -#ifndef __typedstream_INCLUDE_GNU -#define __typedstream_INCLUDE_GNU - -#include "objc.h" -#include "hash.h" - -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef int (*objc_typed_read_func)(void*, char*, int); -typedef int (*objc_typed_write_func)(void*, const char*, int); -typedef int (*objc_typed_flush_func)(void*); -typedef int (*objc_typed_eof_func)(void*); - -#define OBJC_READONLY 0x01 -#define OBJC_WRITEONLY 0x02 - -#define OBJC_MANAGED_STREAM 0x01 -#define OBJC_FILE_STREAM 0x02 -#define OBJC_MEMORY_STREAM 0x04 - -#define OBJC_TYPED_STREAM_VERSION 0x01 - -typedef struct objc_typed_stream { - void* physical; - cache_ptr object_table; /* read/written objects */ - cache_ptr stream_table; /* other read/written but shared things.. */ - cache_ptr class_table; /* class version mapping */ - cache_ptr object_refs; /* forward references */ - int mode; /* OBJC_READONLY or OBJC_WRITEONLY */ - int type; /* MANAGED, FILE, MEMORY etc bit string */ - int version; /* version used when writing */ - int writing_root_p; - objc_typed_read_func read; - objc_typed_write_func write; - objc_typed_eof_func eof; - objc_typed_flush_func flush; -} TypedStream; - -/* opcode masks */ -#define _B_VALUE 0x1fU -#define _B_CODE 0xe0U -#define _B_SIGN 0x10U -#define _B_NUMBER 0x0fU - -/* standard opcodes */ -#define _B_INVALID 0x00U -#define _B_SINT 0x20U -#define _B_NINT 0x40U -#define _B_SSTR 0x60U -#define _B_NSTR 0x80U -#define _B_RCOMM 0xa0U -#define _B_UCOMM 0xc0U -#define _B_EXT 0xe0U - -/* eXtension opcodes */ -#define _BX_OBJECT 0x00U -#define _BX_CLASS 0x01U -#define _BX_SEL 0x02U -#define _BX_OBJREF 0x03U -#define _BX_OBJROOT 0x04U -#define _BX_EXT 0x1fU - -/* -** Read and write objects as specified by TYPE. All the `last' -** arguments are pointers to the objects to read/write. -*/ - -int objc_write_type (TypedStream* stream, const char* type, const void* data); -int objc_read_type (TypedStream* stream, const char* type, void* data); - -int objc_write_types (TypedStream* stream, const char* type, ...); -int objc_read_types (TypedStream* stream, const char* type, ...); - -int objc_write_object_reference (TypedStream* stream, id object); -int objc_write_root_object (TypedStream* stream, id object); - -long objc_get_stream_class_version (TypedStream* stream, Class class_type); - - -/* -** Convenience functions -*/ - -int objc_write_array (TypedStream* stream, const char* type, - int count, const void* data); -int objc_read_array (TypedStream* stream, const char* type, - int count, void* data); - -int objc_write_object (TypedStream* stream, id object); -int objc_read_object (TypedStream* stream, id* object); - - - -/* -** Open a typed stream for reading or writing. MODE may be either of -** OBJC_READONLY or OBJC_WRITEONLY. -*/ - -TypedStream* objc_open_typed_stream (FILE* physical, int mode); -TypedStream* objc_open_typed_stream_for_file (const char* file_name, int mode); - -void objc_close_typed_stream (TypedStream* stream); - -BOOL objc_end_of_typed_stream (TypedStream* stream); -void objc_flush_typed_stream (TypedStream* stream); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* not __typedstream_INCLUDE_GNU */ diff --git a/libobjc/objects.c b/libobjc/objects.c deleted file mode 100644 index 7cc99bfcad5c..000000000000 --- a/libobjc/objects.c +++ /dev/null @@ -1,103 +0,0 @@ -/* GNU Objective C Runtime class related functions - Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "tconfig.h" /* include defs of bzero for target */ -#include "objc/objc.h" -#include "objc/runtime.h" /* the kitchen sink */ - -#if OBJC_WITH_GC -# include -#endif - -id __objc_object_alloc (Class); -id __objc_object_dispose (id); -id __objc_object_copy (id); - -id (*_objc_object_alloc) (Class) = __objc_object_alloc; /* !T:SINGLE */ -id (*_objc_object_dispose) (id) = __objc_object_dispose; /* !T:SINGLE */ -id (*_objc_object_copy) (id) = __objc_object_copy; /* !T:SINGLE */ - -id -class_create_instance (Class class) -{ - id new = nil; - -#if OBJC_WITH_GC - if (CLS_ISCLASS (class)) - new = (id) GC_malloc_explicitly_typed (class->instance_size, - class->gc_object_type); -#else - if (CLS_ISCLASS (class)) - new = (*_objc_object_alloc) (class); -#endif - - if (new != nil) - { - memset (new, 0, class->instance_size); - new->class_pointer = class; - } - return new; -} - -id -object_copy (id object) -{ - if ((object != nil) && CLS_ISCLASS (object->class_pointer)) - return (*_objc_object_copy) (object); - else - return nil; -} - -id -object_dispose (id object) -{ - if ((object != nil) && CLS_ISCLASS (object->class_pointer)) - { - if (_objc_object_dispose) - (*_objc_object_dispose) (object); - else - objc_free (object); - } - return nil; -} - -id __objc_object_alloc (Class class) -{ - return (id) objc_malloc (class->instance_size); -} - -id __objc_object_dispose (id object) -{ - objc_free (object); - return 0; -} - -id __objc_object_copy (id object) -{ - id copy = class_create_instance (object->class_pointer); - memcpy (copy, object, object->class_pointer->instance_size); - return copy; -} diff --git a/libobjc/sarray.c b/libobjc/sarray.c deleted file mode 100644 index b35772b3f53c..000000000000 --- a/libobjc/sarray.c +++ /dev/null @@ -1,518 +0,0 @@ -/* Sparse Arrays for Objective C dispatch tables - Copyright (C) 1993, 1995, 1996, 2002, 2004 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files - compiled with GCC to produce an executable, this does not cause - the resulting executable to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#include "objc/sarray.h" -#include "objc/runtime.h" -#include -#include "assert.h" - -int nbuckets = 0; /* !T:MUTEX */ -int nindices = 0; /* !T:MUTEX */ -int narrays = 0; /* !T:MUTEX */ -int idxsize = 0; /* !T:MUTEX */ - -static void *first_free_data = NULL; /* !T:MUTEX */ - -#ifdef OBJC_SPARSE2 -const char *__objc_sparse2_id = "2 level sparse indices"; -#endif - -#ifdef OBJC_SPARSE3 -const char *__objc_sparse3_id = "3 level sparse indices"; -#endif - -/* This function removes any structures left over from free operations - that were not safe in a multi-threaded environment. */ -void -sarray_remove_garbage (void) -{ - void **vp; - void *np; - - objc_mutex_lock (__objc_runtime_mutex); - - vp = first_free_data; - first_free_data = NULL; - - while (vp) { - np = *vp; - objc_free (vp); - vp = np; - } - - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* Free a block of dynamically allocated memory. If we are in multi-threaded - mode, it is ok to free it. If not, we add it to the garbage heap to be - freed later. */ - -static void -sarray_free_garbage (void *vp) -{ - objc_mutex_lock (__objc_runtime_mutex); - - if (__objc_runtime_threads_alive == 1) { - objc_free (vp); - if (first_free_data) - sarray_remove_garbage (); - } - else { - *(void **)vp = first_free_data; - first_free_data = vp; - } - - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* sarray_at_put : copies data in such a way as to be thread reader safe. */ -void -sarray_at_put (struct sarray *array, sidx index, void *element) -{ -#ifdef OBJC_SPARSE3 - struct sindex **the_index; - struct sindex *new_index; -#endif - struct sbucket **the_bucket; - struct sbucket *new_bucket; -#ifdef OBJC_SPARSE3 - size_t ioffset; -#endif - size_t boffset; - size_t eoffset; -#ifdef PRECOMPUTE_SELECTORS - union sofftype xx; - xx.idx = index; -#ifdef OBJC_SPARSE3 - ioffset = xx.off.ioffset; -#endif - boffset = xx.off.boffset; - eoffset = xx.off.eoffset; -#else /* not PRECOMPUTE_SELECTORS */ -#ifdef OBJC_SPARSE3 - ioffset = index/INDEX_CAPACITY; - boffset = (index/BUCKET_SIZE)%INDEX_SIZE; - eoffset = index%BUCKET_SIZE; -#else - boffset = index/BUCKET_SIZE; - eoffset = index%BUCKET_SIZE; -#endif -#endif /* not PRECOMPUTE_SELECTORS */ - - assert (soffset_decode (index) < array->capacity); /* Range check */ - -#ifdef OBJC_SPARSE3 - the_index = &(array->indices[ioffset]); - the_bucket = &((*the_index)->buckets[boffset]); -#else - the_bucket = &(array->buckets[boffset]); -#endif - - if ((*the_bucket)->elems[eoffset] == element) - return; /* great! we just avoided a lazy copy */ - -#ifdef OBJC_SPARSE3 - - /* First, perform lazy copy/allocation of index if needed */ - - if ((*the_index) == array->empty_index) { - - /* The index was previously empty, allocate a new */ - new_index = (struct sindex *) objc_malloc (sizeof (struct sindex)); - memcpy (new_index, array->empty_index, sizeof (struct sindex)); - new_index->version.version = array->version.version; - *the_index = new_index; /* Prepared for install. */ - the_bucket = &((*the_index)->buckets[boffset]); - - nindices += 1; - } else if ((*the_index)->version.version != array->version.version) { - - /* This index must be lazy copied */ - struct sindex *old_index = *the_index; - new_index = (struct sindex *) objc_malloc (sizeof (struct sindex)); - memcpy (new_index, old_index, sizeof (struct sindex)); - new_index->version.version = array->version.version; - *the_index = new_index; /* Prepared for install. */ - the_bucket = &((*the_index)->buckets[boffset]); - - nindices += 1; - } - -#endif /* OBJC_SPARSE3 */ - - /* next, perform lazy allocation/copy of the bucket if needed */ - - if ((*the_bucket) == array->empty_bucket) { - - /* The bucket was previously empty (or something like that), */ - /* allocate a new. This is the effect of `lazy' allocation */ - new_bucket = (struct sbucket *) objc_malloc (sizeof (struct sbucket)); - memcpy ((void *) new_bucket, (const void *) array->empty_bucket, - sizeof (struct sbucket)); - new_bucket->version.version = array->version.version; - *the_bucket = new_bucket; /* Prepared for install. */ - - nbuckets += 1; - - } else if ((*the_bucket)->version.version != array->version.version) { - - /* Perform lazy copy. */ - struct sbucket *old_bucket = *the_bucket; - new_bucket = (struct sbucket *) objc_malloc (sizeof (struct sbucket)); - memcpy (new_bucket, old_bucket, sizeof (struct sbucket)); - new_bucket->version.version = array->version.version; - *the_bucket = new_bucket; /* Prepared for install. */ - - nbuckets += 1; - - } - (*the_bucket)->elems[eoffset] = element; -} - -void -sarray_at_put_safe (struct sarray *array, sidx index, void *element) -{ - if (soffset_decode (index) >= array->capacity) - sarray_realloc (array, soffset_decode (index) + 1); - sarray_at_put (array, index, element); -} - -struct sarray * -sarray_new (int size, void *default_element) -{ - struct sarray *arr; -#ifdef OBJC_SPARSE3 - size_t num_indices = ((size - 1)/(INDEX_CAPACITY)) + 1; - struct sindex **new_indices; -#else /* OBJC_SPARSE2 */ - size_t num_indices = ((size - 1)/BUCKET_SIZE) + 1; - struct sbucket **new_buckets; -#endif - size_t counter; - - assert (size > 0); - - /* Allocate core array */ - arr = (struct sarray *) objc_malloc (sizeof (struct sarray)); - arr->version.version = 0; - - /* Initialize members */ -#ifdef OBJC_SPARSE3 - arr->capacity = num_indices*INDEX_CAPACITY; - new_indices = (struct sindex **) - objc_malloc (sizeof (struct sindex *) * num_indices); - - arr->empty_index = (struct sindex *) objc_malloc (sizeof (struct sindex)); - arr->empty_index->version.version = 0; - - narrays += 1; - idxsize += num_indices; - nindices += 1; - -#else /* OBJC_SPARSE2 */ - arr->capacity = num_indices*BUCKET_SIZE; - new_buckets = (struct sbucket **) - objc_malloc (sizeof (struct sbucket *) * num_indices); - - narrays += 1; - idxsize += num_indices; - -#endif - - arr->empty_bucket = (struct sbucket *) objc_malloc (sizeof (struct sbucket)); - arr->empty_bucket->version.version = 0; - - nbuckets += 1; - - arr->ref_count = 1; - arr->is_copy_of = (struct sarray *) 0; - - for (counter = 0; counter < BUCKET_SIZE; counter++) - arr->empty_bucket->elems[counter] = default_element; - -#ifdef OBJC_SPARSE3 - for (counter = 0; counter < INDEX_SIZE; counter++) - arr->empty_index->buckets[counter] = arr->empty_bucket; - - for (counter = 0; counter < num_indices; counter++) - new_indices[counter] = arr->empty_index; - -#else /* OBJC_SPARSE2 */ - - for (counter = 0; counter < num_indices; counter++) - new_buckets[counter] = arr->empty_bucket; - -#endif - -#ifdef OBJC_SPARSE3 - arr->indices = new_indices; -#else /* OBJC_SPARSE2 */ - arr->buckets = new_buckets; -#endif - - return arr; -} - - -/* Reallocate the sparse array to hold `newsize' entries - Note: We really allocate and then free. We have to do this to ensure that - any concurrent readers notice the update. */ - -void -sarray_realloc (struct sarray *array, int newsize) -{ -#ifdef OBJC_SPARSE3 - size_t old_max_index = (array->capacity - 1)/INDEX_CAPACITY; - size_t new_max_index = ((newsize - 1)/INDEX_CAPACITY); - size_t rounded_size = (new_max_index + 1) * INDEX_CAPACITY; - - struct sindex **new_indices; - struct sindex **old_indices; - -#else /* OBJC_SPARSE2 */ - size_t old_max_index = (array->capacity - 1)/BUCKET_SIZE; - size_t new_max_index = ((newsize - 1)/BUCKET_SIZE); - size_t rounded_size = (new_max_index + 1) * BUCKET_SIZE; - - struct sbucket **new_buckets; - struct sbucket **old_buckets; - -#endif - - size_t counter; - - assert (newsize > 0); - - /* The size is the same, just ignore the request */ - if (rounded_size <= array->capacity) - return; - - assert (array->ref_count == 1); /* stop if lazy copied... */ - - /* We are asked to extend the array -- allocate new bucket table, */ - /* and insert empty_bucket in newly allocated places. */ - if (rounded_size > array->capacity) - { - -#ifdef OBJC_SPARSE3 - new_max_index += 4; - rounded_size = (new_max_index + 1) * INDEX_CAPACITY; - -#else /* OBJC_SPARSE2 */ - new_max_index += 4; - rounded_size = (new_max_index + 1) * BUCKET_SIZE; -#endif - - /* update capacity */ - array->capacity = rounded_size; - -#ifdef OBJC_SPARSE3 - /* alloc to force re-read by any concurrent readers. */ - old_indices = array->indices; - new_indices = (struct sindex **) - objc_malloc ((new_max_index + 1) * sizeof (struct sindex *)); -#else /* OBJC_SPARSE2 */ - old_buckets = array->buckets; - new_buckets = (struct sbucket **) - objc_malloc ((new_max_index + 1) * sizeof (struct sbucket *)); -#endif - - /* copy buckets below old_max_index (they are still valid) */ - for (counter = 0; counter <= old_max_index; counter++ ) { -#ifdef OBJC_SPARSE3 - new_indices[counter] = old_indices[counter]; -#else /* OBJC_SPARSE2 */ - new_buckets[counter] = old_buckets[counter]; -#endif - } - -#ifdef OBJC_SPARSE3 - /* reset entries above old_max_index to empty_bucket */ - for (counter = old_max_index + 1; counter <= new_max_index; counter++) - new_indices[counter] = array->empty_index; -#else /* OBJC_SPARSE2 */ - /* reset entries above old_max_index to empty_bucket */ - for (counter = old_max_index + 1; counter <= new_max_index; counter++) - new_buckets[counter] = array->empty_bucket; -#endif - -#ifdef OBJC_SPARSE3 - /* install the new indices */ - array->indices = new_indices; -#else /* OBJC_SPARSE2 */ - array->buckets = new_buckets; -#endif - -#ifdef OBJC_SPARSE3 - /* free the old indices */ - sarray_free_garbage (old_indices); -#else /* OBJC_SPARSE2 */ - sarray_free_garbage (old_buckets); -#endif - - idxsize += (new_max_index-old_max_index); - return; - } -} - - -/* Free a sparse array allocated with sarray_new */ - -void -sarray_free (struct sarray *array) { -#ifdef OBJC_SPARSE3 - size_t old_max_index = (array->capacity - 1)/INDEX_CAPACITY; - struct sindex **old_indices; -#else - size_t old_max_index = (array->capacity - 1)/BUCKET_SIZE; - struct sbucket **old_buckets; -#endif - size_t counter = 0; - - assert (array->ref_count != 0); /* Freed multiple times!!! */ - - if (--(array->ref_count) != 0) /* There exists copies of me */ - return; - -#ifdef OBJC_SPARSE3 - old_indices = array->indices; -#else - old_buckets = array->buckets; -#endif - - /* Free all entries that do not point to empty_bucket */ - for (counter = 0; counter <= old_max_index; counter++ ) { -#ifdef OBJC_SPARSE3 - struct sindex *idx = old_indices[counter]; - if ((idx != array->empty_index) && - (idx->version.version == array->version.version)) { - int c2; - for (c2 = 0; c2 < INDEX_SIZE; c2++) { - struct sbucket *bkt = idx->buckets[c2]; - if ((bkt != array->empty_bucket) && - (bkt->version.version == array->version.version)) - { - sarray_free_garbage (bkt); - nbuckets -= 1; - } - } - sarray_free_garbage (idx); - nindices -= 1; - } -#else /* OBJC_SPARSE2 */ - struct sbucket *bkt = array->buckets[counter]; - if ((bkt != array->empty_bucket) && - (bkt->version.version == array->version.version)) - { - sarray_free_garbage (bkt); - nbuckets -= 1; - } -#endif - } - -#ifdef OBJC_SPARSE3 - /* free empty_index */ - if (array->empty_index->version.version == array->version.version) { - sarray_free_garbage (array->empty_index); - nindices -= 1; - } -#endif - - /* free empty_bucket */ - if (array->empty_bucket->version.version == array->version.version) { - sarray_free_garbage (array->empty_bucket); - nbuckets -= 1; - } - idxsize -= (old_max_index + 1); - narrays -= 1; - -#ifdef OBJC_SPARSE3 - /* free bucket table */ - sarray_free_garbage (array->indices); - -#else - /* free bucket table */ - sarray_free_garbage (array->buckets); - -#endif - - /* If this is a copy of another array, we free it (which might just - * decrement its reference count so it will be freed when no longer in use). - */ - if (array->is_copy_of) - sarray_free (array->is_copy_of); - - /* free array */ - sarray_free_garbage (array); -} - -/* This is a lazy copy. Only the core of the structure is actually */ -/* copied. */ - -struct sarray * -sarray_lazy_copy (struct sarray *oarr) -{ - struct sarray *arr; - -#ifdef OBJC_SPARSE3 - size_t num_indices = ((oarr->capacity - 1)/INDEX_CAPACITY) + 1; - struct sindex **new_indices; -#else /* OBJC_SPARSE2 */ - size_t num_indices = ((oarr->capacity - 1)/BUCKET_SIZE) + 1; - struct sbucket **new_buckets; -#endif - - /* Allocate core array */ - arr = (struct sarray *) objc_malloc (sizeof (struct sarray)); /* !!! */ - arr->version.version = oarr->version.version + 1; -#ifdef OBJC_SPARSE3 - arr->empty_index = oarr->empty_index; -#endif - arr->empty_bucket = oarr->empty_bucket; - arr->ref_count = 1; - oarr->ref_count += 1; - arr->is_copy_of = oarr; - arr->capacity = oarr->capacity; - -#ifdef OBJC_SPARSE3 - /* Copy bucket table */ - new_indices = (struct sindex **) - objc_malloc (sizeof (struct sindex *) * num_indices); - memcpy (new_indices, oarr->indices, sizeof (struct sindex *) * num_indices); - arr->indices = new_indices; -#else - /* Copy bucket table */ - new_buckets = (struct sbucket **) - objc_malloc (sizeof (struct sbucket *) * num_indices); - memcpy (new_buckets, oarr->buckets, sizeof (struct sbucket *) * num_indices); - arr->buckets = new_buckets; -#endif - - idxsize += num_indices; - narrays += 1; - - return arr; -} diff --git a/libobjc/selector.c b/libobjc/selector.c deleted file mode 100644 index 223c7100efa5..000000000000 --- a/libobjc/selector.c +++ /dev/null @@ -1,490 +0,0 @@ -/* GNU Objective C Runtime selector related functions - Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/runtime.h" -#include "objc/sarray.h" -#include "objc/encoding.h" - -/* Initial selector hash table size. Value doesn't matter much */ -#define SELECTOR_HASH_SIZE 128 - -/* Tables mapping selector names to uid and opposite */ -static struct sarray *__objc_selector_array = 0; /* uid -> sel !T:MUTEX */ -static struct sarray *__objc_selector_names = 0; /* uid -> name !T:MUTEX */ -static cache_ptr __objc_selector_hash = 0; /* name -> uid !T:MUTEX */ - -/* Number of selectors stored in each of the above tables */ -unsigned int __objc_selector_max_index = 0; /* !T:MUTEX */ - -void __objc_init_selector_tables (void) -{ - __objc_selector_array = sarray_new (SELECTOR_HASH_SIZE, 0); - __objc_selector_names = sarray_new (SELECTOR_HASH_SIZE, 0); - __objc_selector_hash - = objc_hash_new (SELECTOR_HASH_SIZE, - (hash_func_type) objc_hash_string, - (compare_func_type) objc_compare_strings); -} - -/* This routine is given a class and records all of the methods in its class - structure in the record table. */ -void -__objc_register_selectors_from_class (Class class) -{ - MethodList_t method_list; - - method_list = class->methods; - while (method_list) - { - __objc_register_selectors_from_list (method_list); - method_list = method_list->method_next; - } -} - - -/* This routine is given a list of methods and records each of the methods in - the record table. This is the routine that does the actual recording - work. - - The name and type pointers in the method list must be permanent and - immutable. - */ -void -__objc_register_selectors_from_list (MethodList_t method_list) -{ - int i = 0; - - objc_mutex_lock (__objc_runtime_mutex); - while (i < method_list->method_count) - { - Method_t method = &method_list->method_list[i]; - if (method->method_name) - { - method->method_name - = __sel_register_typed_name ((const char *) method->method_name, - method->method_types, 0, YES); - } - i += 1; - } - objc_mutex_unlock (__objc_runtime_mutex); -} - - -/* Register instance methods as class methods for root classes */ -void __objc_register_instance_methods_to_class (Class class) -{ - MethodList_t method_list; - MethodList_t class_method_list; - int max_methods_no = 16; - MethodList_t new_list; - Method_t curr_method; - - /* Only if a root class. */ - if (class->super_class) - return; - - /* Allocate a method list to hold the new class methods */ - new_list = objc_calloc (sizeof (struct objc_method_list) - + sizeof (struct objc_method[max_methods_no]), 1); - method_list = class->methods; - class_method_list = class->class_pointer->methods; - curr_method = &new_list->method_list[0]; - - /* Iterate through the method lists for the class */ - while (method_list) - { - int i; - - /* Iterate through the methods from this method list */ - for (i = 0; i < method_list->method_count; i++) - { - Method_t mth = &method_list->method_list[i]; - if (mth->method_name - && ! search_for_method_in_list (class_method_list, - mth->method_name)) - { - /* This instance method isn't a class method. - Add it into the new_list. */ - *curr_method = *mth; - - /* Reallocate the method list if necessary */ - if (++new_list->method_count == max_methods_no) - new_list = - objc_realloc (new_list, sizeof (struct objc_method_list) - + sizeof (struct - objc_method[max_methods_no += 16])); - curr_method = &new_list->method_list[new_list->method_count]; - } - } - - method_list = method_list->method_next; - } - - /* If we created any new class methods - then attach the method list to the class */ - if (new_list->method_count) - { - new_list = - objc_realloc (new_list, sizeof (struct objc_method_list) - + sizeof (struct objc_method[new_list->method_count])); - new_list->method_next = class->class_pointer->methods; - class->class_pointer->methods = new_list; - } - else - objc_free(new_list); - - __objc_update_dispatch_table_for_class (class->class_pointer); -} - - -/* Returns YES iff t1 and t2 have same method types, but we ignore - the argframe layout */ -BOOL -sel_types_match (const char *t1, const char *t2) -{ - if (! t1 || ! t2) - return NO; - while (*t1 && *t2) - { - if (*t1 == '+') t1++; - if (*t2 == '+') t2++; - while (isdigit ((unsigned char) *t1)) t1++; - while (isdigit ((unsigned char) *t2)) t2++; - /* xxx Remove these next two lines when qualifiers are put in - all selectors, not just Protocol selectors. */ - t1 = objc_skip_type_qualifiers (t1); - t2 = objc_skip_type_qualifiers (t2); - if (! *t1 && ! *t2) - return YES; - if (*t1 != *t2) - return NO; - t1++; - t2++; - } - return NO; -} - -/* return selector representing name */ -SEL -sel_get_typed_uid (const char *name, const char *types) -{ - struct objc_list *l; - sidx i; - - objc_mutex_lock (__objc_runtime_mutex); - - i = (sidx) objc_hash_value_for_key (__objc_selector_hash, name); - if (i == 0) - { - objc_mutex_unlock (__objc_runtime_mutex); - return 0; - } - - for (l = (struct objc_list *) sarray_get_safe (__objc_selector_array, i); - l; l = l->tail) - { - SEL s = (SEL) l->head; - if (types == 0 || s->sel_types == 0) - { - if (s->sel_types == types) - { - objc_mutex_unlock (__objc_runtime_mutex); - return s; - } - } - else if (sel_types_match (s->sel_types, types)) - { - objc_mutex_unlock (__objc_runtime_mutex); - return s; - } - } - - objc_mutex_unlock (__objc_runtime_mutex); - return 0; -} - -/* Return selector representing name; prefer a selector with non-NULL type */ -SEL -sel_get_any_typed_uid (const char *name) -{ - struct objc_list *l; - sidx i; - SEL s = NULL; - - objc_mutex_lock (__objc_runtime_mutex); - - i = (sidx) objc_hash_value_for_key (__objc_selector_hash, name); - if (i == 0) - { - objc_mutex_unlock (__objc_runtime_mutex); - return 0; - } - - for (l = (struct objc_list *) sarray_get_safe (__objc_selector_array, i); - l; l = l->tail) - { - s = (SEL) l->head; - if (s->sel_types) - { - objc_mutex_unlock (__objc_runtime_mutex); - return s; - } - } - - objc_mutex_unlock (__objc_runtime_mutex); - return s; -} - -/* return selector representing name */ -SEL -sel_get_any_uid (const char *name) -{ - struct objc_list *l; - sidx i; - - objc_mutex_lock (__objc_runtime_mutex); - - i = (sidx) objc_hash_value_for_key (__objc_selector_hash, name); - if (soffset_decode (i) == 0) - { - objc_mutex_unlock (__objc_runtime_mutex); - return 0; - } - - l = (struct objc_list *) sarray_get_safe (__objc_selector_array, i); - objc_mutex_unlock (__objc_runtime_mutex); - - if (l == 0) - return 0; - - return (SEL) l->head; -} - -/* return selector representing name */ -SEL -sel_get_uid (const char *name) -{ - return sel_register_typed_name (name, 0); -} - -/* Get name of selector. If selector is unknown, the empty string "" - is returned */ -const char *sel_get_name (SEL selector) -{ - const char *ret; - - objc_mutex_lock (__objc_runtime_mutex); - if ((soffset_decode ((sidx)selector->sel_id) > 0) - && (soffset_decode ((sidx)selector->sel_id) <= __objc_selector_max_index)) - ret = sarray_get_safe (__objc_selector_names, (sidx) selector->sel_id); - else - ret = 0; - objc_mutex_unlock (__objc_runtime_mutex); - return ret; -} - -BOOL -sel_is_mapped (SEL selector) -{ - unsigned int idx = soffset_decode ((sidx)selector->sel_id); - return ((idx > 0) && (idx <= __objc_selector_max_index)); -} - - -const char *sel_get_type (SEL selector) -{ - if (selector) - return selector->sel_types; - else - return 0; -} - -/* The uninstalled dispatch table */ -extern struct sarray *__objc_uninstalled_dtable; - -/* __sel_register_typed_name allocates lots of struct objc_selector:s - of 8 (16, if pointers are 64 bits) bytes at startup. To reduce the number - of malloc calls and memory lost to malloc overhead, we allocate - objc_selector:s in blocks here. This is only called from - __sel_register_typed_name, and __sel_register_typed_name may only be - called when __objc_runtime_mutex is locked. - - Note that the objc_selector:s allocated from __sel_register_typed_name - are never freed. - - 62 because 62 * sizeof (struct objc_selector) = 496 (992). This should - let malloc add some overhead and use a nice, round 512 (1024) byte chunk. - */ -#define SELECTOR_POOL_SIZE 62 -static struct objc_selector *selector_pool; -static int selector_pool_left; - -static struct objc_selector * -pool_alloc_selector(void) -{ - if (!selector_pool_left) - { - selector_pool = objc_malloc (sizeof (struct objc_selector) - * SELECTOR_POOL_SIZE); - selector_pool_left = SELECTOR_POOL_SIZE; - } - return &selector_pool[--selector_pool_left]; -} - -/* Store the passed selector name in the selector record and return its - selector value (value returned by sel_get_uid). - Assumes that the calling function has locked down __objc_runtime_mutex. */ -/* is_const parameter tells us if the name and types parameters - are really constant or not. If YES then they are constant and - we can just store the pointers. If NO then we need to copy - name and types because the pointers may disappear later on. */ -SEL -__sel_register_typed_name (const char *name, const char *types, - struct objc_selector *orig, BOOL is_const) -{ - struct objc_selector *j; - sidx i; - struct objc_list *l; - - i = (sidx) objc_hash_value_for_key (__objc_selector_hash, name); - if (soffset_decode (i) != 0) - { - for (l = (struct objc_list *) sarray_get_safe (__objc_selector_array, i); - l; l = l->tail) - { - SEL s = (SEL) l->head; - if (types == 0 || s->sel_types == 0) - { - if (s->sel_types == types) - { - if (orig) - { - orig->sel_id = (void *) i; - return orig; - } - else - return s; - } - } - else if (! strcmp (s->sel_types, types)) - { - if (orig) - { - orig->sel_id = (void *) i; - return orig; - } - else - return s; - } - } - if (orig) - j = orig; - else - j = pool_alloc_selector (); - - j->sel_id = (void *) i; - /* Can we use the pointer or must copy types? Don't copy if NULL */ - if ((is_const) || (types == 0)) - j->sel_types = (const char *) types; - else { - j->sel_types = (char *) objc_malloc (strlen (types) + 1); - strcpy ((char *) j->sel_types, types); - } - l = (struct objc_list *) sarray_get_safe (__objc_selector_array, i); - } - else - { - __objc_selector_max_index += 1; - i = soffset_encode (__objc_selector_max_index); - if (orig) - j = orig; - else - j = pool_alloc_selector (); - - j->sel_id = (void *) i; - /* Can we use the pointer or must copy types? Don't copy if NULL */ - if ((is_const) || (types == 0)) - j->sel_types = (const char *) types; - else { - j->sel_types = (char *) objc_malloc (strlen (types) + 1); - strcpy ((char *) j->sel_types, types); - } - l = 0; - } - - DEBUG_PRINTF ("Record selector %s[%s] as: %ld\n", name, types, - (long) soffset_decode (i)); - - { - int is_new = (l == 0); - const char *new_name; - - /* Can we use the pointer or must copy name? Don't copy if NULL */ - if ((is_const) || (name == 0)) - new_name = name; - else { - new_name = (char *) objc_malloc (strlen (name) + 1); - strcpy ((char *) new_name, name); - } - - l = list_cons ((void *) j, l); - sarray_at_put_safe (__objc_selector_names, i, (void *) new_name); - sarray_at_put_safe (__objc_selector_array, i, (void *) l); - if (is_new) - objc_hash_add (&__objc_selector_hash, (void *) new_name, (void *) i); - } - - sarray_realloc (__objc_uninstalled_dtable, __objc_selector_max_index + 1); - - return (SEL) j; -} - -SEL -sel_register_name (const char *name) -{ - SEL ret; - - objc_mutex_lock (__objc_runtime_mutex); - /* Assume that name is not constant static memory and needs to be - copied before put into a runtime structure. is_const == NO */ - ret = __sel_register_typed_name (name, 0, 0, NO); - objc_mutex_unlock (__objc_runtime_mutex); - - return ret; -} - -SEL -sel_register_typed_name (const char *name, const char *type) -{ - SEL ret; - - objc_mutex_lock (__objc_runtime_mutex); - /* Assume that name and type are not constant static memory and need to - be copied before put into a runtime structure. is_const == NO */ - ret = __sel_register_typed_name (name, type, 0, NO); - objc_mutex_unlock (__objc_runtime_mutex); - - return ret; -} diff --git a/libobjc/sendmsg.c b/libobjc/sendmsg.c deleted file mode 100644 index 9453ef3dd464..000000000000 --- a/libobjc/sendmsg.c +++ /dev/null @@ -1,701 +0,0 @@ -/* GNU Objective C Runtime message lookup - Copyright (C) 1993, 1995, 1996, 1997, 1998, - 2001, 2002, 2004 Free Software Foundation, Inc. - Contributed by Kresten Krab Thorup - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -/* FIXME: This file has no business including tm.h. */ -/* FIXME: This should be using libffi instead of __builtin_apply - and friends. */ - -#include "tconfig.h" -#include "coretypes.h" -#include "tm.h" -#include "objc/runtime.h" -#include "objc/sarray.h" -#include "objc/encoding.h" -#include "runtime-info.h" - -/* This is how we hack STRUCT_VALUE to be 1 or 0. */ -#define gen_rtx(args...) 1 -#define gen_rtx_MEM(args...) 1 -#define gen_rtx_REG(args...) 1 -#define rtx int - -#if ! defined (STRUCT_VALUE) || STRUCT_VALUE == 0 -#define INVISIBLE_STRUCT_RETURN 1 -#else -#define INVISIBLE_STRUCT_RETURN 0 -#endif - -/* The uninstalled dispatch table */ -struct sarray *__objc_uninstalled_dtable = 0; /* !T:MUTEX */ - -/* Hook for method forwarding. If it is set, is invoked to return a - function that performs the real forwarding. Otherwise the libgcc - based functions (__builtin_apply and friends) are used. */ -IMP (*__objc_msg_forward) (SEL) = NULL; - -/* Send +initialize to class */ -static void __objc_send_initialize (Class); - -static void __objc_install_dispatch_table_for_class (Class); - -/* Forward declare some functions */ -static void __objc_init_install_dtable (id, SEL); - -/* Various forwarding functions that are used based upon the - return type for the selector. - __objc_block_forward for structures. - __objc_double_forward for floats/doubles. - __objc_word_forward for pointers or types that fit in registers. - */ -static double __objc_double_forward (id, SEL, ...); -static id __objc_word_forward (id, SEL, ...); -typedef struct { id many[8]; } __big; -#if INVISIBLE_STRUCT_RETURN -static __big -#else -static id -#endif -__objc_block_forward (id, SEL, ...); -static Method_t search_for_method_in_hierarchy (Class class, SEL sel); -Method_t search_for_method_in_list (MethodList_t list, SEL op); -id nil_method (id, SEL); - -/* Given a selector, return the proper forwarding implementation. */ -inline -IMP -__objc_get_forward_imp (SEL sel) -{ - /* If a custom forwarding hook was registered, try getting a forwarding - * function from it. */ - if (__objc_msg_forward) - { - IMP result; - if ((result = __objc_msg_forward (sel)) != NULL) - return result; - } - - /* In all other cases, use the default forwarding functions built using - * __builtin_apply and friends. */ - { - const char *t = sel->sel_types; - - if (t && (*t == '[' || *t == '(' || *t == '{') -#ifdef OBJC_MAX_STRUCT_BY_VALUE - && objc_sizeof_type (t) > OBJC_MAX_STRUCT_BY_VALUE -#endif - ) - return (IMP)__objc_block_forward; - else if (t && (*t == 'f' || *t == 'd')) - return (IMP)__objc_double_forward; - else - return (IMP)__objc_word_forward; - } -} - -/* Given a class and selector, return the selector's implementation. */ -inline -IMP -get_imp (Class class, SEL sel) -{ - /* In a vanilla implementation we would first check if the dispatch - table is installed. Here instead, to get more speed in the - standard case (that the dispatch table is installed) we first try - to get the imp using brute force. Only if that fails, we do what - we should have been doing from the very beginning, that is, check - if the dispatch table needs to be installed, install it if it's - not installed, and retrieve the imp from the table if it's - installed. */ - void *res = sarray_get_safe (class->dtable, (size_t) sel->sel_id); - if (res == 0) - { - /* Not a valid method */ - if (class->dtable == __objc_uninstalled_dtable) - { - /* The dispatch table needs to be installed. */ - objc_mutex_lock (__objc_runtime_mutex); - - /* Double-checked locking pattern: Check - __objc_uninstalled_dtable again in case another thread - installed the dtable while we were waiting for the lock - to be released. */ - if (class->dtable == __objc_uninstalled_dtable) - { - __objc_install_dispatch_table_for_class (class); - } - - objc_mutex_unlock (__objc_runtime_mutex); - /* Call ourselves with the installed dispatch table - and get the real method */ - res = get_imp (class, sel); - } - else - { - /* The dispatch table has been installed. */ - - /* Get the method from the dispatch table (we try to get it - again in case another thread has installed the dtable just - after we invoked sarray_get_safe, but before we checked - class->dtable == __objc_uninstalled_dtable). - */ - res = sarray_get_safe (class->dtable, (size_t) sel->sel_id); - if (res == 0) - { - /* The dispatch table has been installed, and the method - is not in the dispatch table. So the method just - doesn't exist for the class. Return the forwarding - implementation. */ - res = __objc_get_forward_imp (sel); - } - } - } - return res; -} - -/* Query if an object can respond to a selector, returns YES if the -object implements the selector otherwise NO. Does not check if the -method can be forwarded. */ -inline -BOOL -__objc_responds_to (id object, SEL sel) -{ - void *res; - - /* Install dispatch table if need be */ - if (object->class_pointer->dtable == __objc_uninstalled_dtable) - { - objc_mutex_lock (__objc_runtime_mutex); - if (object->class_pointer->dtable == __objc_uninstalled_dtable) - { - __objc_install_dispatch_table_for_class (object->class_pointer); - } - objc_mutex_unlock (__objc_runtime_mutex); - } - - /* Get the method from the dispatch table */ - res = sarray_get_safe (object->class_pointer->dtable, (size_t) sel->sel_id); - return (res != 0); -} - -/* This is the lookup function. All entries in the table are either a - valid method *or* zero. If zero then either the dispatch table - needs to be installed or it doesn't exist and forwarding is attempted. */ -inline -IMP -objc_msg_lookup (id receiver, SEL op) -{ - IMP result; - if (receiver) - { - result = sarray_get_safe (receiver->class_pointer->dtable, - (sidx)op->sel_id); - if (result == 0) - { - /* Not a valid method */ - if (receiver->class_pointer->dtable == __objc_uninstalled_dtable) - { - /* The dispatch table needs to be installed. - This happens on the very first method call to the class. */ - __objc_init_install_dtable (receiver, op); - - /* Get real method for this in newly installed dtable */ - result = get_imp (receiver->class_pointer, op); - } - else - { - /* The dispatch table has been installed. Check again - if the method exists (just in case the dispatch table - has been installed by another thread after we did the - previous check that the method exists). - */ - result = sarray_get_safe (receiver->class_pointer->dtable, - (sidx)op->sel_id); - if (result == 0) - { - /* If the method still just doesn't exist for the - class, attempt to forward the method. */ - result = __objc_get_forward_imp (op); - } - } - } - return result; - } - else - return (IMP)nil_method; -} - -IMP -objc_msg_lookup_super (Super_t super, SEL sel) -{ - if (super->self) - return get_imp (super->class, sel); - else - return (IMP)nil_method; -} - -int method_get_sizeof_arguments (Method *); - -retval_t -objc_msg_sendv (id object, SEL op, arglist_t arg_frame) -{ - Method *m = class_get_instance_method (object->class_pointer, op); - const char *type; - *((id *) method_get_first_argument (m, arg_frame, &type)) = object; - *((SEL *) method_get_next_argument (arg_frame, &type)) = op; - return __builtin_apply ((apply_t) m->method_imp, - arg_frame, - method_get_sizeof_arguments (m)); -} - -void -__objc_init_dispatch_tables () -{ - __objc_uninstalled_dtable = sarray_new (200, 0); -} - -/* This function is called by objc_msg_lookup when the - dispatch table needs to be installed; thus it is called once - for each class, namely when the very first message is sent to it. */ -static void -__objc_init_install_dtable (id receiver, SEL op __attribute__ ((__unused__))) -{ - objc_mutex_lock (__objc_runtime_mutex); - - /* This may happen, if the programmer has taken the address of a - method before the dtable was initialized... too bad for him! */ - if (receiver->class_pointer->dtable != __objc_uninstalled_dtable) - { - objc_mutex_unlock (__objc_runtime_mutex); - return; - } - - if (CLS_ISCLASS (receiver->class_pointer)) - { - /* receiver is an ordinary object */ - assert (CLS_ISCLASS (receiver->class_pointer)); - - /* install instance methods table */ - __objc_install_dispatch_table_for_class (receiver->class_pointer); - - /* call +initialize -- this will in turn install the factory - dispatch table if not already done :-) */ - __objc_send_initialize (receiver->class_pointer); - } - else - { - /* receiver is a class object */ - assert (CLS_ISCLASS ((Class)receiver)); - assert (CLS_ISMETA (receiver->class_pointer)); - - /* Install real dtable for factory methods */ - __objc_install_dispatch_table_for_class (receiver->class_pointer); - - __objc_send_initialize ((Class)receiver); - } - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* Install dummy table for class which causes the first message to - that class (or instances hereof) to be initialized properly */ -void -__objc_install_premature_dtable (Class class) -{ - assert (__objc_uninstalled_dtable); - class->dtable = __objc_uninstalled_dtable; -} - -/* Send +initialize to class if not already done */ -static void -__objc_send_initialize (Class class) -{ - /* This *must* be a class object */ - assert (CLS_ISCLASS (class)); - assert (! CLS_ISMETA (class)); - - if (! CLS_ISINITIALIZED (class)) - { - CLS_SETINITIALIZED (class); - CLS_SETINITIALIZED (class->class_pointer); - - /* Create the garbage collector type memory description */ - __objc_generate_gc_type_description (class); - - if (class->super_class) - __objc_send_initialize (class->super_class); - - { - SEL op = sel_register_name ("initialize"); - IMP imp = 0; - MethodList_t method_list = class->class_pointer->methods; - - while (method_list) { - int i; - Method_t method; - - for (i = 0; i < method_list->method_count; i++) { - method = &(method_list->method_list[i]); - if (method->method_name - && method->method_name->sel_id == op->sel_id) { - imp = method->method_imp; - break; - } - } - - if (imp) - break; - - method_list = method_list->method_next; - - } - if (imp) - (*imp) ((id) class, op); - - } - } -} - -/* Walk on the methods list of class and install the methods in the reverse - order of the lists. Since methods added by categories are before the methods - of class in the methods list, this allows categories to substitute methods - declared in class. However if more than one category replaces the same - method nothing is guaranteed about what method will be used. - Assumes that __objc_runtime_mutex is locked down. */ -static void -__objc_install_methods_in_dtable (Class class, MethodList_t method_list) -{ - int i; - - if (! method_list) - return; - - if (method_list->method_next) - __objc_install_methods_in_dtable (class, method_list->method_next); - - for (i = 0; i < method_list->method_count; i++) - { - Method_t method = &(method_list->method_list[i]); - sarray_at_put_safe (class->dtable, - (sidx) method->method_name->sel_id, - method->method_imp); - } -} - -/* Assumes that __objc_runtime_mutex is locked down. */ -static void -__objc_install_dispatch_table_for_class (Class class) -{ - Class super; - - /* If the class has not yet had its class links resolved, we must - re-compute all class links */ - if (! CLS_ISRESOLV (class)) - __objc_resolve_class_links (); - - super = class->super_class; - - if (super != 0 && (super->dtable == __objc_uninstalled_dtable)) - __objc_install_dispatch_table_for_class (super); - - /* Allocate dtable if necessary */ - if (super == 0) - { - objc_mutex_lock (__objc_runtime_mutex); - class->dtable = sarray_new (__objc_selector_max_index, 0); - objc_mutex_unlock (__objc_runtime_mutex); - } - else - class->dtable = sarray_lazy_copy (super->dtable); - - __objc_install_methods_in_dtable (class, class->methods); -} - -void -__objc_update_dispatch_table_for_class (Class class) -{ - Class next; - struct sarray *arr; - - /* not yet installed -- skip it */ - if (class->dtable == __objc_uninstalled_dtable) - return; - - objc_mutex_lock (__objc_runtime_mutex); - - arr = class->dtable; - __objc_install_premature_dtable (class); /* someone might require it... */ - sarray_free (arr); /* release memory */ - - /* could have been lazy... */ - __objc_install_dispatch_table_for_class (class); - - if (class->subclass_list) /* Traverse subclasses */ - for (next = class->subclass_list; next; next = next->sibling_class) - __objc_update_dispatch_table_for_class (next); - - objc_mutex_unlock (__objc_runtime_mutex); -} - - -/* This function adds a method list to a class. This function is - typically called by another function specific to the run-time. As - such this function does not worry about thread safe issues. - - This one is only called for categories. Class objects have their - methods installed right away, and their selectors are made into - SEL's by the function __objc_register_selectors_from_class. */ -void -class_add_method_list (Class class, MethodList_t list) -{ - /* Passing of a linked list is not allowed. Do multiple calls. */ - assert (! list->method_next); - - __objc_register_selectors_from_list(list); - - /* Add the methods to the class's method list. */ - list->method_next = class->methods; - class->methods = list; - - /* Update the dispatch table of class */ - __objc_update_dispatch_table_for_class (class); -} - -Method_t -class_get_instance_method (Class class, SEL op) -{ - return search_for_method_in_hierarchy (class, op); -} - -Method_t -class_get_class_method (MetaClass class, SEL op) -{ - return search_for_method_in_hierarchy (class, op); -} - - -/* Search for a method starting from the current class up its hierarchy. - Return a pointer to the method's method structure if found. NULL - otherwise. */ - -static Method_t -search_for_method_in_hierarchy (Class cls, SEL sel) -{ - Method_t method = NULL; - Class class; - - if (! sel_is_mapped (sel)) - return NULL; - - /* Scan the method list of the class. If the method isn't found in the - list then step to its super class. */ - for (class = cls; ((! method) && class); class = class->super_class) - method = search_for_method_in_list (class->methods, sel); - - return method; -} - - - -/* Given a linked list of method and a method's name. Search for the named - method's method structure. Return a pointer to the method's method - structure if found. NULL otherwise. */ -Method_t -search_for_method_in_list (MethodList_t list, SEL op) -{ - MethodList_t method_list = list; - - if (! sel_is_mapped (op)) - return NULL; - - /* If not found then we'll search the list. */ - while (method_list) - { - int i; - - /* Search the method list. */ - for (i = 0; i < method_list->method_count; ++i) - { - Method_t method = &method_list->method_list[i]; - - if (method->method_name) - if (method->method_name->sel_id == op->sel_id) - return method; - } - - /* The method wasn't found. Follow the link to the next list of - methods. */ - method_list = method_list->method_next; - } - - return NULL; -} - -static retval_t __objc_forward (id object, SEL sel, arglist_t args); - -/* Forwarding pointers/integers through the normal registers */ -static id -__objc_word_forward (id rcv, SEL op, ...) -{ - void *args, *res; - - args = __builtin_apply_args (); - res = __objc_forward (rcv, op, args); - if (res) - __builtin_return (res); - else - return res; -} - -/* Specific routine for forwarding floats/double because of - architectural differences on some processors. i386s for - example which uses a floating point stack versus general - registers for floating point numbers. This forward routine - makes sure that GCC restores the proper return values */ -static double -__objc_double_forward (id rcv, SEL op, ...) -{ - void *args, *res; - - args = __builtin_apply_args (); - res = __objc_forward (rcv, op, args); - __builtin_return (res); -} - -#if INVISIBLE_STRUCT_RETURN -static __big -#else -static id -#endif -__objc_block_forward (id rcv, SEL op, ...) -{ - void *args, *res; - - args = __builtin_apply_args (); - res = __objc_forward (rcv, op, args); - if (res) - __builtin_return (res); - else -#if INVISIBLE_STRUCT_RETURN - return (__big) {{0, 0, 0, 0, 0, 0, 0, 0}}; -#else - return nil; -#endif -} - - -/* This function is installed in the dispatch table for all methods which are - not implemented. Thus, it is called when a selector is not recognized. */ -static retval_t -__objc_forward (id object, SEL sel, arglist_t args) -{ - IMP imp; - static SEL frwd_sel = 0; /* !T:SAFE2 */ - SEL err_sel; - - /* first try if the object understands forward:: */ - if (! frwd_sel) - frwd_sel = sel_get_any_uid ("forward::"); - - if (__objc_responds_to (object, frwd_sel)) - { - imp = get_imp (object->class_pointer, frwd_sel); - return (*imp) (object, frwd_sel, sel, args); - } - - /* If the object recognizes the doesNotRecognize: method then we're going - to send it. */ - err_sel = sel_get_any_uid ("doesNotRecognize:"); - if (__objc_responds_to (object, err_sel)) - { - imp = get_imp (object->class_pointer, err_sel); - return (*imp) (object, err_sel, sel); - } - - /* The object doesn't recognize the method. Check for responding to - error:. If it does then sent it. */ - { - char msg[256 + strlen ((const char *) sel_get_name (sel)) - + strlen ((const char *) object->class_pointer->name)]; - - sprintf (msg, "(%s) %s does not recognize %s", - (CLS_ISMETA (object->class_pointer) - ? "class" - : "instance" ), - object->class_pointer->name, sel_get_name (sel)); - - err_sel = sel_get_any_uid ("error:"); - if (__objc_responds_to (object, err_sel)) - { - imp = get_imp (object->class_pointer, err_sel); - return (*imp) (object, sel_get_any_uid ("error:"), msg); - } - - /* The object doesn't respond to doesNotRecognize: or error:; Therefore, - a default action is taken. */ - objc_error (object, OBJC_ERR_UNIMPLEMENTED, "%s\n", msg); - - return 0; - } -} - -void -__objc_print_dtable_stats () -{ - int total = 0; - - objc_mutex_lock (__objc_runtime_mutex); - -#ifdef OBJC_SPARSE2 - printf ("memory usage: (%s)\n", "2-level sparse arrays"); -#else - printf ("memory usage: (%s)\n", "3-level sparse arrays"); -#endif - - printf ("arrays: %d = %ld bytes\n", narrays, - (long) narrays * sizeof (struct sarray)); - total += narrays * sizeof (struct sarray); - printf ("buckets: %d = %ld bytes\n", nbuckets, - (long) nbuckets * sizeof (struct sbucket)); - total += nbuckets * sizeof (struct sbucket); - - printf ("idxtables: %d = %ld bytes\n", - idxsize, (long) idxsize * sizeof (void *)); - total += idxsize * sizeof (void *); - printf ("-----------------------------------\n"); - printf ("total: %d bytes\n", total); - printf ("===================================\n"); - - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* Returns the uninstalled dispatch table indicator. - If a class' dispatch table points to __objc_uninstalled_dtable - then that means it needs its dispatch table to be installed. */ -inline -struct sarray * -objc_get_uninstalled_dtable () -{ - return __objc_uninstalled_dtable; -} diff --git a/libobjc/thr-dce.c b/libobjc/thr-dce.c deleted file mode 100644 index b20eacf8c950..000000000000 --- a/libobjc/thr-dce.c +++ /dev/null @@ -1,281 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Initialize the thread storage key */ - return pthread_keycreate(&_objc_thread_storage, NULL); -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - /* Destroy the thread storage key */ - /* Not implemented yet */ - /* return pthread_key_delete(&_objc_thread_storage); */ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (pthread_create(&new_thread_handle, pthread_attr_default, - (void *)func, arg) == 0) - { - /* ??? May not work! (64bit) */ - thread_id = *(objc_thread_t *)&new_thread_handle; - pthread_detach(&new_thread_handle); /* Fully detach thread. */ - } - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - int sys_priority = 0; - - switch (priority) - { - case OBJC_THREAD_INTERACTIVE_PRIORITY: - sys_priority = (PRI_FG_MIN_NP + PRI_FG_MAX_NP) / 2; - break; - default: - case OBJC_THREAD_BACKGROUND_PRIORITY: - sys_priority = (PRI_BG_MIN_NP + PRI_BG_MAX_NP) / 2; - break; - case OBJC_THREAD_LOW_PRIORITY: - sys_priority = (PRI_BG_MIN_NP + PRI_BG_MAX_NP) / 2; - break; - } - - /* Change the priority. */ - if (pthread_setprio(pthread_self(), sys_priority) >= 0) - return 0; - else - /* Failed */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - int sys_priority; - - if ((sys_priority = pthread_getprio(pthread_self())) >= 0) { - if (sys_priority >= PRI_FG_MIN_NP && sys_priority <= PRI_FG_MAX_NP) - return OBJC_THREAD_INTERACTIVE_PRIORITY; - if (sys_priority >= PRI_BG_MIN_NP && sys_priority <= PRI_BG_MAX_NP) - return OBJC_THREAD_BACKGROUND_PRIORITY; - return OBJC_THREAD_LOW_PRIORITY; - } - - /* Failed */ - return -1; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - pthread_yield(); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* exit the thread */ - pthread_exit(&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - pthread_t self = pthread_self(); - - return (objc_thread_t) pthread_getunique_np (&self); -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - return pthread_setspecific(_objc_thread_storage, value); -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - void *value = NULL; - - if ( !(pthread_getspecific(_objc_thread_storage, &value)) ) - return value; - - return NULL; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if (pthread_mutex_init((pthread_mutex_t *)(&(mutex->backend)), - pthread_mutexattr_default)) - return -1; - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - if (pthread_mutex_destroy((pthread_mutex_t *)(&(mutex->backend)))) - return -1; - else - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - return pthread_mutex_lock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - if (pthread_mutex_trylock((pthread_mutex_t *)(&(mutex->backend))) != 1) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return pthread_mutex_unlock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - if (pthread_cond_init((pthread_cond_t *)(&(condition->backend)), NULL)) - return -1; - else - return 0; - */ -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_destroy((pthread_cond_t *)(&(condition->backend))); - */ -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_wait((pthread_cond_t *)(&(condition->backend)), - (pthread_mutex_t *)(&(mutex->backend))); - */ -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_broadcast((pthread_cond_t *)(&(condition->backend))); - */ -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_signal((pthread_cond_t *)(&(condition->backend))); - */ -} - -/* End of File */ diff --git a/libobjc/thr-decosf1.c b/libobjc/thr-decosf1.c deleted file mode 100644 index b20eacf8c950..000000000000 --- a/libobjc/thr-decosf1.c +++ /dev/null @@ -1,281 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Initialize the thread storage key */ - return pthread_keycreate(&_objc_thread_storage, NULL); -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - /* Destroy the thread storage key */ - /* Not implemented yet */ - /* return pthread_key_delete(&_objc_thread_storage); */ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (pthread_create(&new_thread_handle, pthread_attr_default, - (void *)func, arg) == 0) - { - /* ??? May not work! (64bit) */ - thread_id = *(objc_thread_t *)&new_thread_handle; - pthread_detach(&new_thread_handle); /* Fully detach thread. */ - } - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - int sys_priority = 0; - - switch (priority) - { - case OBJC_THREAD_INTERACTIVE_PRIORITY: - sys_priority = (PRI_FG_MIN_NP + PRI_FG_MAX_NP) / 2; - break; - default: - case OBJC_THREAD_BACKGROUND_PRIORITY: - sys_priority = (PRI_BG_MIN_NP + PRI_BG_MAX_NP) / 2; - break; - case OBJC_THREAD_LOW_PRIORITY: - sys_priority = (PRI_BG_MIN_NP + PRI_BG_MAX_NP) / 2; - break; - } - - /* Change the priority. */ - if (pthread_setprio(pthread_self(), sys_priority) >= 0) - return 0; - else - /* Failed */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - int sys_priority; - - if ((sys_priority = pthread_getprio(pthread_self())) >= 0) { - if (sys_priority >= PRI_FG_MIN_NP && sys_priority <= PRI_FG_MAX_NP) - return OBJC_THREAD_INTERACTIVE_PRIORITY; - if (sys_priority >= PRI_BG_MIN_NP && sys_priority <= PRI_BG_MAX_NP) - return OBJC_THREAD_BACKGROUND_PRIORITY; - return OBJC_THREAD_LOW_PRIORITY; - } - - /* Failed */ - return -1; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - pthread_yield(); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* exit the thread */ - pthread_exit(&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - pthread_t self = pthread_self(); - - return (objc_thread_t) pthread_getunique_np (&self); -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - return pthread_setspecific(_objc_thread_storage, value); -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - void *value = NULL; - - if ( !(pthread_getspecific(_objc_thread_storage, &value)) ) - return value; - - return NULL; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if (pthread_mutex_init((pthread_mutex_t *)(&(mutex->backend)), - pthread_mutexattr_default)) - return -1; - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - if (pthread_mutex_destroy((pthread_mutex_t *)(&(mutex->backend)))) - return -1; - else - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - return pthread_mutex_lock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - if (pthread_mutex_trylock((pthread_mutex_t *)(&(mutex->backend))) != 1) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return pthread_mutex_unlock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - if (pthread_cond_init((pthread_cond_t *)(&(condition->backend)), NULL)) - return -1; - else - return 0; - */ -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_destroy((pthread_cond_t *)(&(condition->backend))); - */ -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_wait((pthread_cond_t *)(&(condition->backend)), - (pthread_mutex_t *)(&(mutex->backend))); - */ -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_broadcast((pthread_cond_t *)(&(condition->backend))); - */ -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; - - /* - return pthread_cond_signal((pthread_cond_t *)(&(condition->backend))); - */ -} - -/* End of File */ diff --git a/libobjc/thr-irix.c b/libobjc/thr-irix.c deleted file mode 100644 index ca68e08a4919..000000000000 --- a/libobjc/thr-irix.c +++ /dev/null @@ -1,235 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - SGI IRIX Implementation - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include -#include -#include -#include -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Key structure for maintaining thread specific storage */ -static void * __objc_shared_arena_handle = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Name of IRIX arena. */ - char arena_name[64]; - - DEBUG_PRINTF("__objc_init_thread_system\n"); - - /* Construct a temporary name for arena. */ - sprintf(arena_name, "/usr/tmp/objc_%05u", (unsigned)getpid()); - - /* Up to 256 threads. Arena only for threads. */ - usconfig(CONF_INITUSERS, 256); - usconfig(CONF_ARENATYPE, US_SHAREDONLY); - - /* Initialize the arena */ - if (!(__objc_shared_arena_handle = usinit(arena_name))) - /* Failed */ - return -1; - - return 0; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - objc_thread_t thread_id; - int sys_id; - - if ((sys_id = sproc((void *)func, PR_SALL, arg)) >= 0) - thread_id = (objc_thread_t)sys_id; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - /* Not implemented yet */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - /* Not implemented yet */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - sginap(0); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* IRIX only has exit. */ - exit(__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - /* Threads are processes. */ - return (objc_thread_t)get_pid(); -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - *((void **)&PRDA->usr_prda) = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return *((void **)&PRDA->usr_prda); -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if (!( (ulock_t)(mutex->backend) = usnewlock(__objc_shared_arena_handle) )) - return -1; - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - usfreelock((ulock_t)(mutex->backend), __objc_shared_arena_handle); - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - if (ussetlock((ulock_t)(mutex->backend)) == 0) - return -1; - else - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - if (ustestlock((ulock_t)(mutex->backend)) == 0) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - usunsetlock((ulock_t)(mutex->backend)); - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - /* Unimplemented. */ - return -1; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* End of File */ diff --git a/libobjc/thr-mach.c b/libobjc/thr-mach.c deleted file mode 100644 index 76167b42af2a..000000000000 --- a/libobjc/thr-mach.c +++ /dev/null @@ -1,313 +0,0 @@ -/* GNU Objective C Runtime Thread Implementation - Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - Modified for Mach threads by Bill Bumgarner - Condition functions added by Mircea Oancea - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include -#include "objc/thr.h" -#include "objc/runtime.h" - -/* - Obtain the maximum thread priority that can set for t. Under the - mach threading model, it is possible for the developer to adjust the - maximum priority downward only-- cannot be raised without superuser - privileges. Once lowered, it cannot be raised. - */ -static int -__mach_get_max_thread_priority (cthread_t t, int *base) -{ - thread_t threadP; - kern_return_t error; - struct thread_sched_info info; - unsigned int info_count=THREAD_SCHED_INFO_COUNT; - - if (t == NULL) - return -1; - - threadP = cthread_thread (t); /* get thread underlying */ - - error = thread_info (threadP, THREAD_SCHED_INFO, - (thread_info_t) &info, &info_count); - - if (error != KERN_SUCCESS) - return -1; - - if (base != NULL) - *base = info.base_priority; - - return info.max_priority; -} - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system (void) -{ - return 0; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system (void) -{ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach (void (*func) (void *arg), void *arg) -{ - objc_thread_t thread_id; - cthread_t new_thread_handle; - - /* create thread */ - new_thread_handle = cthread_fork ((cthread_fn_t) func, arg); - - if (new_thread_handle) - { - /* this is not terribly portable */ - thread_id = *(objc_thread_t *) &new_thread_handle; - cthread_detach (new_thread_handle); - } - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority (int priority) -{ - objc_thread_t *t = objc_thread_id (); - cthread_t cT = (cthread_t) t; - int maxPriority = __mach_get_max_thread_priority (cT, NULL); - int sys_priority = 0; - - if (maxPriority == -1) - return -1; - - switch (priority) - { - case OBJC_THREAD_INTERACTIVE_PRIORITY: - sys_priority = maxPriority; - break; - case OBJC_THREAD_BACKGROUND_PRIORITY: - sys_priority = (maxPriority * 2) / 3; - break; - case OBJC_THREAD_LOW_PRIORITY: - sys_priority = maxPriority / 3; - break; - default: - return -1; - } - - if (sys_priority == 0) - return -1; - - /* Change the priority */ - if (cthread_priority (cT, sys_priority, 0) == KERN_SUCCESS) - return 0; - else - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority (void) -{ - objc_thread_t *t = objc_thread_id (); - cthread_t cT = (cthread_t) t; /* see objc_thread_id () */ - int basePriority; - int maxPriority; - int sys_priority = 0; - - int interactiveT, backgroundT, lowT; /* thresholds */ - - maxPriority = __mach_get_max_thread_priority (cT, &basePriority); - - if (maxPriority == -1) - return -1; - - if (basePriority > ( (maxPriority * 2) / 3)) - return OBJC_THREAD_INTERACTIVE_PRIORITY; - - if (basePriority > ( maxPriority / 3)) - return OBJC_THREAD_BACKGROUND_PRIORITY; - - return OBJC_THREAD_LOW_PRIORITY; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield (void) -{ - cthread_yield (); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit (void) -{ - /* exit the thread */ - cthread_exit (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id (void) -{ - cthread_t self = cthread_self (); - - return *(objc_thread_t *) &self; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data (void *value) -{ - cthread_set_data (cthread_self (), (any_t) value); - return 0; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data (void) -{ - return (void *) cthread_data (cthread_self ()); -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate (objc_mutex_t mutex) -{ - int err = 0; - mutex->backend = objc_malloc (sizeof (struct mutex)); - - err = mutex_init ((mutex_t) (mutex->backend)); - - if (err != 0) - { - objc_free (mutex->backend); - return -1; - } - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate (objc_mutex_t mutex) -{ - mutex_clear ((mutex_t) (mutex->backend)); - - objc_free (mutex->backend); - mutex->backend = NULL; - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock (objc_mutex_t mutex) -{ - mutex_lock ((mutex_t) (mutex->backend)); - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock (objc_mutex_t mutex) -{ - if (mutex_try_lock ((mutex_t) (mutex->backend)) == 0) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock (objc_mutex_t mutex) -{ - mutex_unlock ((mutex_t) (mutex->backend)); - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate (objc_condition_t condition) -{ - condition->backend = objc_malloc (sizeof (struct condition)); - condition_init ((condition_t) (condition->backend)); - return 0; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate (objc_condition_t condition) -{ - condition_clear ((condition_t) (condition->backend)); - objc_free (condition->backend); - condition->backend = NULL; - return 0; -} - -/* Wait on the condition */ -int -__objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - condition_wait ((condition_t) (condition->backend), - (mutex_t) (mutex->backend)); - return 0; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast (objc_condition_t condition) -{ - condition_broadcast ((condition_t) (condition->backend)); - return 0; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal (objc_condition_t condition) -{ - condition_signal ((condition_t) (condition->backend)); - return 0; -} - -/* End of File */ diff --git a/libobjc/thr-objc.c b/libobjc/thr-objc.c deleted file mode 100644 index 7d6375aaa55e..000000000000 --- a/libobjc/thr-objc.c +++ /dev/null @@ -1,192 +0,0 @@ -/* GNU Objective C Runtime Thread Interface. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2006 - 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 2, 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 COPYING. If not, write to -the Free Software Foundation, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#define _LIBOBJC -/* The line below is needed for declarations of functions such as - pthread_mutexattr_settype, without which gthr-posix.h may fail to - compile within libobjc. Unfortunately, this breaks compilation on - Tru64 UNIX V4.0F, so disable it there. */ -#ifndef __osf__ -#define _XOPEN_SOURCE 500 -#endif -#include "config.h" -#include "tconfig.h" -#include "coretypes.h" -#include "tm.h" -#include "defaults.h" -#include "objc/thr.h" -#include "objc/runtime.h" -#include - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - return __gthread_objc_init_thread_system (); -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - return __gthread_objc_close_thread_system (); -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *), void *arg) -{ - return __gthread_objc_thread_detach (func, arg); -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - return __gthread_objc_thread_set_priority (priority); -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - return __gthread_objc_thread_get_priority (); -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - __gthread_objc_thread_yield (); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - return __gthread_objc_thread_exit (); -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - return __gthread_objc_thread_id (); -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - return __gthread_objc_thread_set_data (value); -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return __gthread_objc_thread_get_data (); -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - return __gthread_objc_mutex_allocate (mutex); -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - return __gthread_objc_mutex_deallocate (mutex); -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - return __gthread_objc_mutex_lock (mutex); -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - return __gthread_objc_mutex_trylock (mutex); -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return __gthread_objc_mutex_unlock (mutex); -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - return __gthread_objc_condition_allocate (condition); -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - return __gthread_objc_condition_deallocate (condition); -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - return __gthread_objc_condition_wait (condition, mutex); -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - return __gthread_objc_condition_broadcast (condition); -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - return __gthread_objc_condition_signal (condition); -} - -/* End of File */ diff --git a/libobjc/thr-os2.c b/libobjc/thr-os2.c deleted file mode 100644 index 787c9494bfb9..000000000000 --- a/libobjc/thr-os2.c +++ /dev/null @@ -1,267 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - OS/2 emx Implementation - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Thomas Baier (baier@ci.tuwien.ac.at) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" - -#define INCL_DOSSEMAPHORES -#define INCL_DOSPROCESS - -/* - * conflicts with objc.h: SEL, BOOL, id - * solution: prefixing those with _OS2_ before including - */ -#define SEL _OS2_SEL -#define BOOL _OS2_BOOL -#define id _OS2_id -#include -#undef id -#undef SEL -#undef BOOL - -#include - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - return 0; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - int thread_id = 0; - - if ((thread_id = _beginthread (func,NULL,32768,arg)) < 0) - thread_id = 0; - - return (objc_thread_t)thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - ULONG sys_class = 0; - ULONG sys_priority = 0; - - /* OBJC_THREAD_INTERACTIVE_PRIORITY -> PRTYC_FOREGROUNDSERVER - * OBJC_THREAD_BACKGROUND_PRIORITY -> PRTYC_REGULAR - * OBJC_THREAD_LOW_PRIORITY -> PRTYC_IDLETIME */ - - switch (priority) { - case OBJC_THREAD_INTERACTIVE_PRIORITY: - sys_class = PRTYC_REGULAR; - sys_priority = 10; - break; - default: - case OBJC_THREAD_BACKGROUND_PRIORITY: - sys_class = PRTYC_IDLETIME; - sys_priority = 25; - break; - case OBJC_THREAD_LOW_PRIORITY: - sys_class = PRTYC_IDLETIME; - sys_priority = 0; - break; - } - - /* Change priority */ - if (!DosSetPriority (PRTYS_THREAD,sys_class,sys_priority,*_threadid)) - return 0; - else - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - PTIB ptib; - PPIB ppib; - - /* get information about current thread */ - DosGetInfoBlocks (&ptib,&ppib); - - switch (ptib->tib_ptib2->tib2_ulpri) - { - case PRTYC_IDLETIME: - case PRTYC_REGULAR: - case PRTYC_TIMECRITICAL: - case PRTYC_FOREGROUNDSERVER: - default: - return OBJC_THREAD_INTERACTIVE_PRIORITY; - } - - return -1; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - DosSleep (0); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* terminate the thread, NEVER use DosExit () */ - _endthread (); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - return (objc_thread_t) *_threadid; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - *_threadstore () = value; - - return 0; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return *_threadstore (); -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if (DosCreateMutexSem (NULL, (HMTX)(&(mutex->backend)),0L,0) > 0) - return -1; - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - DosCloseMutexSem ((HMTX)(mutex->backend)); - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - if (DosRequestMutexSem ((HMTX)(mutex->backend),-1L) != 0) - return -1; - else - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - if (DosRequestMutexSem ((HMTX)(mutex->backend),0L) != 0) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - if (DosReleaseMutexSem((HMTX)(mutex->backend)) != 0) - return -1; - else - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - /* Unimplemented. */ - return -1; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* End of File */ diff --git a/libobjc/thr-posix.c b/libobjc/thr-posix.c deleted file mode 100644 index f7010833df8f..000000000000 --- a/libobjc/thr-posix.c +++ /dev/null @@ -1,318 +0,0 @@ -/* GNU Objective C Runtime Thread Interface for POSIX compliant threads - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - Modified for Linux/Pthreads by Kai-Uwe Sattler (kus@iti.cs.uni-magdeburg.de) - Modified for posix compliance by Chris Ball (cball@fmco.com) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" -#include - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Initialize the thread storage key */ - if (pthread_key_create(&_objc_thread_storage, NULL) == 0) - { - /* - * The normal default detach state for threads is PTHREAD_CREATE_JOINABLE - * which causes threads to not die when you think they should. - */ - if (pthread_attr_init(&_objc_thread_attribs) == 0) - { - if (pthread_attr_setdetachstate(&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - if (pthread_key_delete(_objc_thread_storage) == 0) - { - if (pthread_attr_destroy(&_objc_thread_attribs) == 0) - return 0; - } - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!(pthread_create(&new_thread_handle, &_objc_thread_attribs, - (void *)func, arg))) - thread_id = *(objc_thread_t *)&new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. - * - * Be aware that the default schedpolicy often disallows thread priorities. - */ -int -__objc_thread_set_priority(int priority) -{ - pthread_t thread_id = pthread_self(); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (pthread_getschedparam(thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = sched_get_priority_max(policy)) != 0) - return -1; - - if ((priority_min = sched_get_priority_min(policy)) != 0) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (pthread_setschedparam(thread_id, policy, ¶ms) == 0) - return 0; - } - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - int policy; - struct sched_param params; - - if (pthread_getschedparam(pthread_self(), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - sched_yield(); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* exit the thread */ - pthread_exit(&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - pthread_t self = pthread_self(); - - return *(objc_thread_t *)&self; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - if (pthread_setspecific(_objc_thread_storage, value) == 0) - return 0; - else - return -1; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return pthread_getspecific(_objc_thread_storage); -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - mutex->backend = objc_malloc(sizeof(pthread_mutex_t)); - - if (pthread_mutex_init((pthread_mutex_t *)mutex->backend, NULL)) - { - objc_free(mutex->backend); - mutex->backend = NULL; - return -1; - } - - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - int count = 1; - - /* - * Posix Threads specifically require that the thread be unlocked for - * pthread_mutex_destroy to work. - */ - - while (count) - { - if ((count = pthread_mutex_unlock((pthread_mutex_t*)mutex->backend)) < 0) - return -1; - } - - if (pthread_mutex_destroy((pthread_mutex_t *)mutex->backend)) - return -1; - - objc_free(mutex->backend); - mutex->backend = NULL; - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - if (pthread_mutex_lock((pthread_mutex_t *)mutex->backend) == 0) - return 0; - else - return -1; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - if (pthread_mutex_trylock((pthread_mutex_t *)mutex->backend) == 0) - return 0; - else - return -1; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - if (pthread_mutex_unlock((pthread_mutex_t *)mutex->backend) == 0) - return 0; - else - return -1; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - condition->backend = objc_malloc(sizeof(pthread_cond_t)); - - if (pthread_cond_init((pthread_cond_t *)condition->backend, NULL)) - { - objc_free(condition->backend); - condition->backend = NULL; - return -1; - } - - return 0; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - if (pthread_cond_destroy((pthread_cond_t *)condition->backend)) - return -1; - - objc_free(condition->backend); - condition->backend = NULL; - return 0; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - if (pthread_cond_wait((pthread_cond_t *)condition->backend, - (pthread_mutex_t *)mutex->backend) == 0) - return 0; - else - return -1; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - if (pthread_cond_broadcast((pthread_cond_t *)condition->backend) == 0) - return 0; - else - return -1; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - if (pthread_cond_signal((pthread_cond_t *)condition->backend) == 0) - return 0; - else - return -1; -} diff --git a/libobjc/thr-pthreads.c b/libobjc/thr-pthreads.c deleted file mode 100644 index d73db47ad2e6..000000000000 --- a/libobjc/thr-pthreads.c +++ /dev/null @@ -1,218 +0,0 @@ -/* GNU Objective C Runtime Thread Implementation for PCThreads under GNU/Linux. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Scott Christley - Condition functions added by: Mircea Oancea - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Initialize the thread storage key */ - return pthread_key_create(&_objc_thread_storage, NULL); -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - /* Destroy the thread storage key */ - /* Not implemented yet */ - /* return pthread_key_delete(&_objc_thread_storage); */ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if ( !(pthread_create(&new_thread_handle, NULL, (void *)func, arg)) ) - thread_id = *(objc_thread_t *)&new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - /* Not implemented yet */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - /* Not implemented yet */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - pthread_yield(NULL); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* exit the thread */ - pthread_exit(&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - pthread_t self = pthread_self(); - - return *(objc_thread_t *)&self; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - return pthread_setspecific(_objc_thread_storage, value); -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - void *value = NULL; - - if ( !(pthread_getspecific(_objc_thread_storage, &value)) ) - return value; - - return NULL; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if (pthread_mutex_init((pthread_mutex_t *)(&(mutex->backend)), NULL)) - return -1; - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - if (pthread_mutex_destroy((pthread_mutex_t *)(&(mutex->backend)))) - return -1; - else - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - return pthread_mutex_lock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - return pthread_mutex_trylock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return pthread_mutex_unlock((pthread_mutex_t *)(&(mutex->backend))); -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - if (pthread_cond_init((pthread_cond_t *)(&(condition->backend)), NULL)) - return -1; - else - return 0; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - return pthread_cond_destroy((pthread_cond_t *)(&(condition->backend))); -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - return pthread_cond_wait((pthread_cond_t *)(&(condition->backend)), - (pthread_mutex_t *)(&(mutex->backend))); -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - return pthread_cond_broadcast((pthread_cond_t *)(&(condition->backend))); -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - return pthread_cond_signal((pthread_cond_t *)(&(condition->backend))); -} - -/* End of File */ diff --git a/libobjc/thr-rtems.c b/libobjc/thr-rtems.c deleted file mode 100644 index 4e4f1e493ad7..000000000000 --- a/libobjc/thr-rtems.c +++ /dev/null @@ -1,194 +0,0 @@ -/* GNU Objective C Runtime Thread Implementation - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - Renamed from thr-vxworks.c to thr-rtems.c by - Ralf Corsepius (corsepiu@faw.uni-ulm.de) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - return; -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit(&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - /* No thread support, use 1. */ - return (objc_thread_t)1; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - return 0; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - return 0; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - return 0; -} - -/* End of File */ diff --git a/libobjc/thr-single.c b/libobjc/thr-single.c deleted file mode 100644 index 0407dcf17cfd..000000000000 --- a/libobjc/thr-single.c +++ /dev/null @@ -1,192 +0,0 @@ -/* GNU Objective C Runtime Thread Implementation - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - return; -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit(&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - /* No thread support, use 1. */ - return (objc_thread_t)1; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - return 0; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - return 0; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - return 0; -} - -/* End of File */ diff --git a/libobjc/thr-solaris.c b/libobjc/thr-solaris.c deleted file mode 100644 index 0cc352267248..000000000000 --- a/libobjc/thr-solaris.c +++ /dev/null @@ -1,259 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - Conditions added by Mircea Oancea (mircea@first.elcom.pub.ro) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" - -#include -#include -#include - -/* Key structure for maintaining thread specific storage */ -static thread_key_t __objc_thread_data_key; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Initialize the thread storage key */ - if (thr_keycreate(&__objc_thread_data_key, NULL) == 0) - return 0; - else - return -1; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - objc_thread_t thread_id; - thread_t new_thread_id = 0; - - if (thr_create(NULL, 0, (void *)func, arg, - THR_DETACHED | THR_NEW_LWP, - &new_thread_id) == 0) - thread_id = *(objc_thread_t *)&new_thread_id; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - int sys_priority = 0; - - switch (priority) - { - case OBJC_THREAD_INTERACTIVE_PRIORITY: - sys_priority = 300; - break; - default: - case OBJC_THREAD_BACKGROUND_PRIORITY: - sys_priority = 200; - break; - case OBJC_THREAD_LOW_PRIORITY: - sys_priority = 1000; - break; - } - - /* Change priority */ - if (thr_setprio(thr_self(), sys_priority) == 0) - return 0; - else - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - int sys_priority; - - if (thr_getprio(thr_self(), &sys_priority) == 0) - { - if (sys_priority >= 250) - return OBJC_THREAD_INTERACTIVE_PRIORITY; - else if (sys_priority >= 150) - return OBJC_THREAD_BACKGROUND_PRIORITY; - return OBJC_THREAD_LOW_PRIORITY; - } - - /* Couldn't get priority. */ - return -1; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - thr_yield(); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* exit the thread */ - thr_exit(&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - return (objc_thread_t)thr_self(); -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - if (thr_setspecific(__objc_thread_data_key, value) == 0) - return 0; - else - return -1; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - void *value = NULL; - - if (thr_getspecific(__objc_thread_data_key, &value) == 0) - return value; - - return NULL; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if (mutex_init( (mutex_t *)(&(mutex->backend)), USYNC_THREAD, 0)) - return -1; - else - return 0; -} - - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - mutex_destroy((mutex_t *)(&(mutex->backend))); - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - if (mutex_lock((mutex_t *)(&(mutex->backend))) != 0) - return -1; - else - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - if (mutex_trylock((mutex_t *)(&(mutex->backend))) != 0) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - if (mutex_unlock((mutex_t *)(&(mutex->backend))) != 0) - return -1; - else - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - return cond_init((cond_t *)(&(condition->backend)), USYNC_THREAD, NULL); -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - return cond_destroy((cond_t *)(&(condition->backend))); -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - return cond_wait((cond_t *)(&(condition->backend)), - (mutex_t *)(&(mutex->backend))); -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - return cond_broadcast((cond_t *)(&(condition->backend))); -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - return cond_signal((cond_t *)(&(condition->backend))); -} - -/* End of File */ diff --git a/libobjc/thr-vxworks.c b/libobjc/thr-vxworks.c deleted file mode 100644 index 0407dcf17cfd..000000000000 --- a/libobjc/thr-vxworks.c +++ /dev/null @@ -1,192 +0,0 @@ -/* GNU Objective C Runtime Thread Implementation - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - return; -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit(&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - /* No thread support, use 1. */ - return (objc_thread_t)1; -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - return 0; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - return 0; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - return 0; -} - -/* End of File */ diff --git a/libobjc/thr-win32.c b/libobjc/thr-win32.c deleted file mode 100644 index cc4bb746e136..000000000000 --- a/libobjc/thr-win32.c +++ /dev/null @@ -1,272 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - Win32 Implementation - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include "objc/thr.h" -#include "objc/runtime.h" - -#ifndef __OBJC__ -#define __OBJC__ -#endif -#include - -/* Key structure for maintaining thread specific storage */ -static DWORD __objc_data_tls = (DWORD)-1; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -int -__objc_init_thread_system(void) -{ - /* Initialize the thread storage key */ - if ((__objc_data_tls = TlsAlloc()) != (DWORD)-1) - return 0; - else - return -1; -} - -/* Close the threads subsystem. */ -int -__objc_close_thread_system(void) -{ - if (__objc_data_tls != (DWORD)-1) - TlsFree(__objc_data_tls); - return 0; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -objc_thread_t -__objc_thread_detach(void (*func)(void *arg), void *arg) -{ - DWORD thread_id = 0; - HANDLE win32_handle; - - if (!(win32_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func, - arg, 0, &thread_id))) - thread_id = 0; - - return (objc_thread_t)thread_id; -} - -/* Set the current thread's priority. */ -int -__objc_thread_set_priority(int priority) -{ - int sys_priority = 0; - - switch (priority) - { - case OBJC_THREAD_INTERACTIVE_PRIORITY: - sys_priority = THREAD_PRIORITY_NORMAL; - break; - default: - case OBJC_THREAD_BACKGROUND_PRIORITY: - sys_priority = THREAD_PRIORITY_BELOW_NORMAL; - break; - case OBJC_THREAD_LOW_PRIORITY: - sys_priority = THREAD_PRIORITY_LOWEST; - break; - } - - /* Change priority */ - if (SetThreadPriority(GetCurrentThread(), sys_priority)) - return 0; - else - return -1; -} - -/* Return the current thread's priority. */ -int -__objc_thread_get_priority(void) -{ - int sys_priority; - - sys_priority = GetThreadPriority(GetCurrentThread()); - - switch (sys_priority) - { - case THREAD_PRIORITY_HIGHEST: - case THREAD_PRIORITY_TIME_CRITICAL: - case THREAD_PRIORITY_ABOVE_NORMAL: - case THREAD_PRIORITY_NORMAL: - return OBJC_THREAD_INTERACTIVE_PRIORITY; - - default: - case THREAD_PRIORITY_BELOW_NORMAL: - return OBJC_THREAD_BACKGROUND_PRIORITY; - - case THREAD_PRIORITY_IDLE: - case THREAD_PRIORITY_LOWEST: - return OBJC_THREAD_LOW_PRIORITY; - } - - /* Couldn't get priority. */ - return -1; -} - -/* Yield our process time to another thread. */ -void -__objc_thread_yield(void) -{ - Sleep(0); -} - -/* Terminate the current thread. */ -int -__objc_thread_exit(void) -{ - /* exit the thread */ - ExitThread(__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -objc_thread_t -__objc_thread_id(void) -{ - return (objc_thread_t)GetCurrentThreadId(); -} - -/* Sets the thread's local storage pointer. */ -int -__objc_thread_set_data(void *value) -{ - if (TlsSetValue(__objc_data_tls, value)) - return 0; - else - return -1; -} - -/* Returns the thread's local storage pointer. */ -void * -__objc_thread_get_data(void) -{ - return TlsGetValue(__objc_data_tls); /* Return thread data. */ -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -int -__objc_mutex_allocate(objc_mutex_t mutex) -{ - if ((mutex->backend = (void *)CreateMutex(NULL, 0, NULL)) == NULL) - return -1; - else - return 0; -} - -/* Deallocate a mutex. */ -int -__objc_mutex_deallocate(objc_mutex_t mutex) -{ - CloseHandle((HANDLE)(mutex->backend)); - return 0; -} - -/* Grab a lock on a mutex. */ -int -__objc_mutex_lock(objc_mutex_t mutex) -{ - int status; - - status = WaitForSingleObject((HANDLE)(mutex->backend), INFINITE); - if (status != WAIT_OBJECT_0 && status != WAIT_ABANDONED) - return -1; - else - return 0; -} - -/* Try to grab a lock on a mutex. */ -int -__objc_mutex_trylock(objc_mutex_t mutex) -{ - int status; - - status = WaitForSingleObject((HANDLE)(mutex->backend), 0); - if (status != WAIT_OBJECT_0 && status != WAIT_ABANDONED) - return -1; - else - return 0; -} - -/* Unlock the mutex */ -int -__objc_mutex_unlock(objc_mutex_t mutex) -{ - if (ReleaseMutex((HANDLE)(mutex->backend)) == 0) - return -1; - else - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -int -__objc_condition_allocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Deallocate a condition. */ -int -__objc_condition_deallocate(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Wait on the condition */ -int -__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) -{ - /* Unimplemented. */ - return -1; -} - -/* Wake up all threads waiting on this condition. */ -int -__objc_condition_broadcast(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* Wake up one thread waiting on this condition. */ -int -__objc_condition_signal(objc_condition_t condition) -{ - /* Unimplemented. */ - return -1; -} - -/* End of File */ diff --git a/libobjc/thr.c b/libobjc/thr.c deleted file mode 100644 index 17f6f7e2920a..000000000000 --- a/libobjc/thr.c +++ /dev/null @@ -1,563 +0,0 @@ -/* GNU Objective C Runtime Thread Interface - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) - -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. - -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, 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* As a special exception, if you link this library with files compiled with - GCC to produce an executable, this does not cause the resulting executable - to be covered by the GNU General Public License. This exception does not - however invalidate any other reasons why the executable file might be - covered by the GNU General Public License. */ - -#include -#include "objc/runtime.h" - -/* Global exit status. */ -int __objc_thread_exit_status = 0; - -/* Flag which lets us know if we ever became multi threaded */ -int __objc_is_multi_threaded = 0; - -/* The hook function called when the runtime becomes multi threaded */ -objc_thread_callback _objc_became_multi_threaded = NULL; - -/* - Use this to set the hook function that will be called when the - runtime initially becomes multi threaded. - The hook function is only called once, meaning only when the - 2nd thread is spawned, not for each and every thread. - - It returns the previous hook function or NULL if there is none. - - A program outside of the runtime could set this to some function so - it can be informed; for example, the GNUstep Base Library sets it - so it can implement the NSBecomingMultiThreaded notification. - */ -objc_thread_callback objc_set_thread_callback (objc_thread_callback func) -{ - objc_thread_callback temp = _objc_became_multi_threaded; - _objc_became_multi_threaded = func; - return temp; -} - -/* - Private functions - - These functions are utilized by the frontend, but they are not - considered part of the public interface. - */ - -/* - First function called in a thread, starts everything else. - - This function is passed to the backend by objc_thread_detach - as the starting function for a new thread. - */ -struct __objc_thread_start_state -{ - SEL selector; - id object; - id argument; -}; - -static void __attribute__((noreturn)) -__objc_thread_detach_function (struct __objc_thread_start_state *istate) -{ - /* Valid state? */ - if (istate) { - id (*imp) (id, SEL, id); - SEL selector = istate->selector; - id object = istate->object; - id argument = istate->argument; - - /* Don't need anymore so free it */ - objc_free (istate); - - /* Clear out the thread local storage */ - objc_thread_set_data (NULL); - - /* Check to see if we just became multi threaded */ - if (! __objc_is_multi_threaded) - { - __objc_is_multi_threaded = 1; - - /* Call the hook function */ - if (_objc_became_multi_threaded != NULL) - (*_objc_became_multi_threaded) (); - } - - /* Call the method */ - if ((imp = (id (*) (id, SEL, id))objc_msg_lookup (object, selector))) - (*imp) (object, selector, argument); - else - objc_error (object, OBJC_ERR_UNIMPLEMENTED, - "objc_thread_detach called with bad selector.\n"); - } - else - objc_error (nil, OBJC_ERR_BAD_STATE, - "objc_thread_detach called with NULL state.\n"); - - /* Exit the thread */ - objc_thread_exit (); -} - -/* - Frontend functions - - These functions constitute the public interface to the Objective-C thread - and mutex functionality. - */ - -/* Frontend thread functions */ - -/* - Detach a new thread of execution and return its id. Returns NULL if fails. - Thread is started by sending message with selector to object. Message - takes a single argument. - */ -objc_thread_t -objc_thread_detach (SEL selector, id object, id argument) -{ - struct __objc_thread_start_state *istate; - objc_thread_t thread_id = NULL; - - /* Allocate the state structure */ - if (! (istate = (struct __objc_thread_start_state *) - objc_malloc (sizeof (*istate)))) - return NULL; - - /* Initialize the state structure */ - istate->selector = selector; - istate->object = object; - istate->argument = argument; - - /* lock access */ - objc_mutex_lock (__objc_runtime_mutex); - - /* Call the backend to spawn the thread */ - if ((thread_id = __objc_thread_detach ((void *)__objc_thread_detach_function, - istate)) == NULL) - { - /* failed! */ - objc_mutex_unlock (__objc_runtime_mutex); - objc_free (istate); - return NULL; - } - - /* Increment our thread counter */ - __objc_runtime_threads_alive++; - objc_mutex_unlock (__objc_runtime_mutex); - - return thread_id; -} - -/* Set the current thread's priority. */ -int -objc_thread_set_priority (int priority) -{ - /* Call the backend */ - return __objc_thread_set_priority (priority); -} - -/* Return the current thread's priority. */ -int -objc_thread_get_priority (void) -{ - /* Call the backend */ - return __objc_thread_get_priority (); -} - -/* - Yield our process time to another thread. Any BUSY waiting that is done - by a thread should use this function to make sure that other threads can - make progress even on a lazy uniprocessor system. - */ -void -objc_thread_yield (void) -{ - /* Call the backend */ - __objc_thread_yield (); -} - -/* - Terminate the current tread. Doesn't return. - Actually, if it failed returns -1. - */ -int -objc_thread_exit (void) -{ - /* Decrement our counter of the number of threads alive */ - objc_mutex_lock (__objc_runtime_mutex); - __objc_runtime_threads_alive--; - objc_mutex_unlock (__objc_runtime_mutex); - - /* Call the backend to terminate the thread */ - return __objc_thread_exit (); -} - -/* - Returns an integer value which uniquely describes a thread. Must not be - NULL which is reserved as a marker for "no thread". - */ -objc_thread_t -objc_thread_id (void) -{ - /* Call the backend */ - return __objc_thread_id (); -} - -/* - Sets the thread's local storage pointer. - Returns 0 if successful or -1 if failed. - */ -int -objc_thread_set_data (void *value) -{ - /* Call the backend */ - return __objc_thread_set_data (value); -} - -/* - Returns the thread's local storage pointer. Returns NULL on failure. - */ -void * -objc_thread_get_data (void) -{ - /* Call the backend */ - return __objc_thread_get_data (); -} - -/* Frontend mutex functions */ - -/* - Allocate a mutex. Return the mutex pointer if successful or NULL if the - allocation failed for any reason. - */ -objc_mutex_t -objc_mutex_allocate (void) -{ - objc_mutex_t mutex; - - /* Allocate the mutex structure */ - if (! (mutex = (objc_mutex_t)objc_malloc (sizeof (struct objc_mutex)))) - return NULL; - - /* Call backend to create the mutex */ - if (__objc_mutex_allocate (mutex)) - { - /* failed! */ - objc_free (mutex); - return NULL; - } - - /* Initialize mutex */ - mutex->owner = NULL; - mutex->depth = 0; - return mutex; -} - -/* - Deallocate a mutex. Note that this includes an implicit mutex_lock to - insure that no one else is using the lock. It is legal to deallocate - a lock if we have a lock on it, but illegal to deallocate a lock held - by anyone else. - Returns the number of locks on the thread. (1 for deallocate). - */ -int -objc_mutex_deallocate (objc_mutex_t mutex) -{ - int depth; - - /* Valid mutex? */ - if (! mutex) - return -1; - - /* Acquire lock on mutex */ - depth = objc_mutex_lock (mutex); - - /* Call backend to destroy mutex */ - if (__objc_mutex_deallocate (mutex)) - return -1; - - /* Free the mutex structure */ - objc_free (mutex); - - /* Return last depth */ - return depth; -} - -/* - Grab a lock on a mutex. If this thread already has a lock on this mutex - then we increment the lock count. If another thread has a lock on the - mutex we block and wait for the thread to release the lock. - Returns the lock count on the mutex held by this thread. - */ -int -objc_mutex_lock (objc_mutex_t mutex) -{ - objc_thread_t thread_id; - int status; - - /* Valid mutex? */ - if (! mutex) - return -1; - - /* If we already own the lock then increment depth */ - thread_id = __objc_thread_id (); - if (mutex->owner == thread_id) - return ++mutex->depth; - - /* Call the backend to lock the mutex */ - status = __objc_mutex_lock (mutex); - - /* Failed? */ - if (status) - return status; - - /* Successfully locked the thread */ - mutex->owner = thread_id; - return mutex->depth = 1; -} - -/* - Try to grab a lock on a mutex. If this thread already has a lock on - this mutex then we increment the lock count and return it. If another - thread has a lock on the mutex returns -1. - */ -int -objc_mutex_trylock (objc_mutex_t mutex) -{ - objc_thread_t thread_id; - int status; - - /* Valid mutex? */ - if (! mutex) - return -1; - - /* If we already own the lock then increment depth */ - thread_id = __objc_thread_id (); - if (mutex->owner == thread_id) - return ++mutex->depth; - - /* Call the backend to try to lock the mutex */ - status = __objc_mutex_trylock (mutex); - - /* Failed? */ - if (status) - return status; - - /* Successfully locked the thread */ - mutex->owner = thread_id; - return mutex->depth = 1; -} - -/* - Unlocks the mutex by one level. - Decrements the lock count on this mutex by one. - If the lock count reaches zero, release the lock on the mutex. - Returns the lock count on the mutex. - It is an error to attempt to unlock a mutex which this thread - doesn't hold in which case return -1 and the mutex is unaffected. - */ -int -objc_mutex_unlock (objc_mutex_t mutex) -{ - objc_thread_t thread_id; - int status; - - /* Valid mutex? */ - if (! mutex) - return -1; - - /* If another thread owns the lock then abort */ - thread_id = __objc_thread_id (); - if (mutex->owner != thread_id) - return -1; - - /* Decrement depth and return */ - if (mutex->depth > 1) - return --mutex->depth; - - /* Depth down to zero so we are no longer the owner */ - mutex->depth = 0; - mutex->owner = NULL; - - /* Have the backend unlock the mutex */ - status = __objc_mutex_unlock (mutex); - - /* Failed? */ - if (status) - return status; - - return 0; -} - -/* Frontend condition mutex functions */ - -/* - Allocate a condition. Return the condition pointer if successful or NULL - if the allocation failed for any reason. - */ -objc_condition_t -objc_condition_allocate (void) -{ - objc_condition_t condition; - - /* Allocate the condition mutex structure */ - if (! (condition = - (objc_condition_t) objc_malloc (sizeof (struct objc_condition)))) - return NULL; - - /* Call the backend to create the condition mutex */ - if (__objc_condition_allocate (condition)) - { - /* failed! */ - objc_free (condition); - return NULL; - } - - /* Success! */ - return condition; -} - -/* - Deallocate a condition. Note that this includes an implicit - condition_broadcast to insure that waiting threads have the opportunity - to wake. It is legal to dealloc a condition only if no other - thread is/will be using it. Here we do NOT check for other threads - waiting but just wake them up. - */ -int -objc_condition_deallocate (objc_condition_t condition) -{ - /* Broadcast the condition */ - if (objc_condition_broadcast (condition)) - return -1; - - /* Call the backend to destroy */ - if (__objc_condition_deallocate (condition)) - return -1; - - /* Free the condition mutex structure */ - objc_free (condition); - - return 0; -} - -/* - Wait on the condition unlocking the mutex until objc_condition_signal () - or objc_condition_broadcast () are called for the same condition. The - given mutex *must* have the depth set to 1 so that it can be unlocked - here, so that someone else can lock it and signal/broadcast the condition. - The mutex is used to lock access to the shared data that make up the - "condition" predicate. - */ -int -objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - objc_thread_t thread_id; - - /* Valid arguments? */ - if (! mutex || ! condition) - return -1; - - /* Make sure we are owner of mutex */ - thread_id = __objc_thread_id (); - if (mutex->owner != thread_id) - return -1; - - /* Cannot be locked more than once */ - if (mutex->depth > 1) - return -1; - - /* Virtually unlock the mutex */ - mutex->depth = 0; - mutex->owner = (objc_thread_t)NULL; - - /* Call the backend to wait */ - __objc_condition_wait (condition, mutex); - - /* Make ourselves owner of the mutex */ - mutex->owner = thread_id; - mutex->depth = 1; - - return 0; -} - -/* - Wake up all threads waiting on this condition. It is recommended that - the called would lock the same mutex as the threads in objc_condition_wait - before changing the "condition predicate" and make this call and unlock it - right away after this call. - */ -int -objc_condition_broadcast (objc_condition_t condition) -{ - /* Valid condition mutex? */ - if (! condition) - return -1; - - return __objc_condition_broadcast (condition); -} - -/* - Wake up one thread waiting on this condition. It is recommended that - the called would lock the same mutex as the threads in objc_condition_wait - before changing the "condition predicate" and make this call and unlock it - right away after this call. - */ -int -objc_condition_signal (objc_condition_t condition) -{ - /* Valid condition mutex? */ - if (! condition) - return -1; - - return __objc_condition_signal (condition); -} - -/* Make the objc thread system aware that a thread which is managed - (started, stopped) by external code could access objc facilities - from now on. This is used when you are interfacing with some - external non-objc-based environment/system - you must call - objc_thread_add () before an alien thread makes any calls to - Objective-C. Do not cause the _objc_became_multi_threaded hook to - be executed. */ -void -objc_thread_add (void) -{ - objc_mutex_lock (__objc_runtime_mutex); - __objc_is_multi_threaded = 1; - __objc_runtime_threads_alive++; - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* Make the objc thread system aware that a thread managed (started, - stopped) by some external code will no longer access objc and thus - can be forgotten by the objc thread system. Call - objc_thread_remove () when your alien thread is done with making - calls to Objective-C. */ -void -objc_thread_remove (void) -{ - objc_mutex_lock (__objc_runtime_mutex); - __objc_runtime_threads_alive--; - objc_mutex_unlock (__objc_runtime_mutex); -} - -/* End of File */ From a209e9fb70c0bd71502d0c5278c2be5b5d0c9d25 Mon Sep 17 00:00:00 2001 From: obrien Date: Tue, 3 Jul 2012 06:54:37 +0000 Subject: [PATCH 4/5] Vendor import the latest GPLv2 libstdc++ sources. It happens to be that while libstdc++ is a subset of gcc which was changed to GPLv3, libstdc++ was kept under LGPLv2 until the end of the 4.2 branch (gcc 4.2.4) (@ GRN 135556). Obtained from: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch/libstdc++-v3 Requested by: pfg Reviewed by: pfg --- libstdc++/ChangeLog | 130 ++++++++++++++++++ libstdc++/config/os/aix/os_defines.h | 7 +- libstdc++/include/bits/allocator.h | 10 ++ libstdc++/include/bits/basic_string.h | 26 ++-- libstdc++/include/bits/fstream.tcc | 2 +- libstdc++/include/bits/locale_facets.tcc | 8 +- libstdc++/include/ext/atomicity.h | 2 +- .../include/ext/codecvt_specializations.h | 6 +- libstdc++/include/ext/concurrence.h | 2 +- libstdc++/include/ext/vstring.h | 26 ++-- libstdc++/include/tr1/boost_shared_ptr.h | 2 +- libstdc++/include/tr1/random | 9 +- libstdc++/libsupc++/eh_personality.cc | 4 +- libstdc++/libsupc++/typeinfo | 14 +- libstdc++/scripts/check_compile | 57 ++++++++ libstdc++/src/valarray-inst.cc | 2 +- 16 files changed, 258 insertions(+), 49 deletions(-) create mode 100755 libstdc++/scripts/check_compile diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog index d915bcf66fbe..2236fe957842 100644 --- a/libstdc++/ChangeLog +++ b/libstdc++/ChangeLog @@ -1,3 +1,133 @@ +2008-05-19 Release Manager + + * GCC 4.2.4 released. + +2008-03-13 David Edelsohn + + Backport from mainline: + 2008-01-26 David Edelsohn + + PR target/34794 + * config/os/aix/os_defines.h: Define __COMPATMATH__. + +2008-02-14 Kaveh R. Ghazi + + * testsuite/27_io/fpos/14320-1.cc: Check for "long long" and + remove XFAIL. + +2008-02-01 Release Manager + + * GCC 4.2.3 released. + +2008-01-06 Ted Phelps + + PR c++/34152 + * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Check + _GLIBCXX_HAVE_GETIPINFO instead of HAVE_GETIPINFO. + +2008-01-05 Paolo Carlini + + PR libstdc++/34680 + + Revert: + 2007-12-17 Jonathan Wakely + * include/bits/locale_facets.tcc (has_facet, use_facet): Simplify + RTTI checks. + + 2007-12-14 Benjamin Kosnik + + PR libstdc++/30127 + PR libstdc++/34449 + * include/bits/locale_facets.tcc (use_facet): Check facet hierarchy. + (has_facet): Same. + * testsuite/22_locale/global_templates/user_facet_hierarchies.cc: New. + * testsuite/22_locale/global_templates/ + standard_facet_hierarchies.cc: New. + +2007-12-17 Jonathan Wakely + + * include/bits/locale_facets.tcc (has_facet, use_facet): Simplify + RTTI checks. + +2007-12-17 Benjamin Kosnik + + * testsuite/22_locale/global_templates/ + standard_facet_hierarchies.cc: Fix for generic locale model. + +2007-12-14 Benjamin Kosnik + + PR libstdc++/30127 + PR libstdc++/34449 + * include/bits/locale_facets.tcc (use_facet): Check facet hierarchy. + (has_facet): Same. + * testsuite/22_locale/global_templates/user_facet_hierarchies.cc: New. + * testsuite/22_locale/global_templates/ + standard_facet_hierarchies.cc: New. + +2007-11-26 Paolo Carlini + + * include/bits/locale_facets.tcc (num_put<>::_M_insert_int): When + ios_base::showpos and the type is signed and the value is zero, + prepend +. + * testsuite/22_locale/num_put/put/char/12.cc: New. + * testsuite/22_locale/num_put/put/wchar_t/12.cc: Likewise. + +2007-10-20 Paolo Carlini + + * include/tr1/random + (uniform_int<>::_M_call(_UniformRandomNumberGenerator&, result_type, + result_type, true_type)): Fix small thinko. + +2007-10-19 Paolo Carlini + + PR libstdc++/33815 + * include/tr1/random + (uniform_int<>::_M_call(_UniformRandomNumberGenerator&, result_type, + result_type, true_type)): Avoid the modulo (which uses the low-order + bits). + +2007-10-18 Paolo Carlini + + PR libstdc++/33807 + * include/bits/allocator.h (operator==(const allocator<_Tp>&, + const allocator<_Tp>&), operator!=(const allocator<_Tp>&, + const allocator<_Tp>&)): Add. + * testsuite/20_util/memory/allocator/33807.cc: New. + +2007-10-14 Jonathan Wakely + + * docs/html/Makefile: Follow up to libstdc++/14991, remove target. + +2007-10-14 Jonathan Wakely + + * src/valarray-inst.cc, include/ext/atomicity.h, + include/ext/concurrence.h, include/bits/basic_string.h, + include/bits/fstream.tcc, include/ext/vstring.h: Fix comment typos. + +2007-10-14 Jonathan Wakely + + * include/tr1_impl/boost_shared_ptr.h: (__weak_ptr::lock()): Add + missing template argument. + * testsuite/tr1/2_general_utilities/memory/shared_ptr/ + explicit_instantiation/2.cc: New. + * testsuite/tr1/2_general_utilities/memory/weak_ptr/ + explicit_instantiation/2.cc: New. + +2007-10-11 Paolo Carlini + + PR libstdc++/33734 + * include/ext/codecvt_specializations.h (encoding_state::good, + init, destroy): Use cast notation instead of reinterpret_cast. + +2007-10-07 Release Manager + + * GCC 4.2.2 released. + +2007-10-06 Benjamin Kosnik + + PR libstdc++/33678 + * libsupc++/typeinfo (typeinfo): Revert ordering of virtual components. + 2007-08-28 Paolo Carlini PR libstdc++/33128 diff --git a/libstdc++/config/os/aix/os_defines.h b/libstdc++/config/os/aix/os_defines.h index 8f1f8138ab65..2aa9f7fc2cb3 100644 --- a/libstdc++/config/os/aix/os_defines.h +++ b/libstdc++/config/os/aix/os_defines.h @@ -1,6 +1,6 @@ // Specific definitions for AIX -*- C++ -*- -// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc. +// Copyright (C) 2000, 2002, 2005, 2008 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -48,4 +48,9 @@ #define _ALL_SOURCE #endif +// C99 math +#ifndef __COMPATMATH__ +#define __COMPATMATH__ +#endif + #endif diff --git a/libstdc++/include/bits/allocator.h b/libstdc++/include/bits/allocator.h index 43939c14fa76..4d62c0ae8f32 100644 --- a/libstdc++/include/bits/allocator.h +++ b/libstdc++/include/bits/allocator.h @@ -115,11 +115,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std) operator==(const allocator<_T1>&, const allocator<_T2>&) { return true; } + template + inline bool + operator==(const allocator<_Tp>&, const allocator<_Tp>&) + { return true; } + template inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&) { return false; } + template + inline bool + operator!=(const allocator<_Tp>&, const allocator<_Tp>&) + { return false; } + // Inhibit implicit instantiations for required instantiations, // which are defined via explicit instantiations elsewhere. // NB: This syntax is a GNU extension. diff --git a/libstdc++/include/bits/basic_string.h b/libstdc++/include/bits/basic_string.h index e4b7a5b5fba3..dba1f566db50 100644 --- a/libstdc++/include/bits/basic_string.h +++ b/libstdc++/include/bits/basic_string.h @@ -1672,7 +1672,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find position of a character of C substring. * @param s String containing characters to locate. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to search for. * @return Index of first occurrence. * @@ -1733,7 +1733,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character of C substring. * @param s C string containing characters to locate. - * @param pos Index of character to search back from (default end). + * @param pos Index of character to search back from. * @param n Number of characters from s to search for. * @return Index of last occurrence. * @@ -1764,7 +1764,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character. * @param c Character to locate. - * @param pos Index of character to search back from (default 0). + * @param pos Index of character to search back from (default end). * @return Index of last occurrence. * * Starting from @a pos, searches backward for @a c within this string. @@ -1794,7 +1794,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to consider. * @return Index of first occurrence. * @@ -1839,8 +1839,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character not in string. * @param str String containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a str within this string. If found, returns the index @@ -1853,9 +1853,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search back from. * @param n Number of characters from s to consider. - * @return Index of first occurrence. + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in the first @a n characters of @a s within this string. @@ -1866,10 +1866,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; /** - * @brief Find position of a character not in C string. + * @brief Find last position of a character not in C string. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a s within this string. If found, returns the index @@ -1885,8 +1885,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a different character. * @param c Character to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character other than * @a c within this string. If found, returns the index where it was diff --git a/libstdc++/include/bits/fstream.tcc b/libstdc++/include/bits/fstream.tcc index 5520f9b61462..ea097c687106 100644 --- a/libstdc++/include/bits/fstream.tcc +++ b/libstdc++/include/bits/fstream.tcc @@ -194,7 +194,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const bool __testin = _M_mode & ios_base::in; if (__testin && !_M_writing) { - // Check for pback madness, and if so swich back to the + // Check for pback madness, and if so switch back to the // normal buffers and jet outta here before expensive // fileops happen... _M_destroy_pback(); diff --git a/libstdc++/include/bits/locale_facets.tcc b/libstdc++/include/bits/locale_facets.tcc index d3c47ff9b7f2..8f62e1904eaa 100644 --- a/libstdc++/include/bits/locale_facets.tcc +++ b/libstdc++/include/bits/locale_facets.tcc @@ -1,6 +1,7 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +// 2006, 2007, 2008 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -117,6 +118,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) return static_cast(*__facets[__i]); } + // Routine to access a cache for the facet. If the cache didn't // exist before, it gets constructed on the fly. template @@ -1015,13 +1017,13 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE if (__builtin_expect(__dec, true)) { // Decimal. - if (__v > 0) + if (__v >= 0) { if (__flags & ios_base::showpos && numeric_limits<_ValueT>::is_signed) *--__cs = __lit[__num_base::_S_oplus], ++__len; } - else if (__v) + else *--__cs = __lit[__num_base::_S_ominus], ++__len; } else if (__flags & ios_base::showbase && __v) diff --git a/libstdc++/include/ext/atomicity.h b/libstdc++/include/ext/atomicity.h index 975121e876b3..05bac1f46d40 100644 --- a/libstdc++/include/ext/atomicity.h +++ b/libstdc++/include/ext/atomicity.h @@ -42,7 +42,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) // Functions for portable atomic access. - // To abstract locking primatives across all thread policies, use: + // To abstract locking primitives across all thread policies, use: // __exchange_and_add_dispatch // __atomic_add_dispatch #ifdef _GLIBCXX_ATOMIC_BUILTINS diff --git a/libstdc++/include/ext/codecvt_specializations.h b/libstdc++/include/ext/codecvt_specializations.h index f0a6bbed4d65..3973d3256d83 100644 --- a/libstdc++/include/ext/codecvt_specializations.h +++ b/libstdc++/include/ext/codecvt_specializations.h @@ -128,7 +128,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) bool good() const throw() { - const descriptor_type __err = reinterpret_cast(-1); + const descriptor_type __err = (iconv_t)(-1); bool __test = _M_in_desc && _M_in_desc != __err; __test &= _M_out_desc && _M_out_desc != __err; return __test; @@ -166,7 +166,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) void init() { - const descriptor_type __err = reinterpret_cast(-1); + const descriptor_type __err = (iconv_t)(-1); const bool __have_encodings = _M_int_enc.size() && _M_ext_enc.size(); if (!_M_in_desc && __have_encodings) { @@ -199,7 +199,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) void destroy() throw() { - const descriptor_type __err = reinterpret_cast(-1); + const descriptor_type __err = (iconv_t)(-1); if (_M_in_desc && _M_in_desc != __err) { iconv_close(_M_in_desc); diff --git a/libstdc++/include/ext/concurrence.h b/libstdc++/include/ext/concurrence.h index 56e07de91e0d..31c3ce681351 100644 --- a/libstdc++/include/ext/concurrence.h +++ b/libstdc++/include/ext/concurrence.h @@ -46,7 +46,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) // Available locking policies: // _S_single single-threaded code that doesn't need to be locked. // _S_mutex multi-threaded code that requires additional support - // from gthr.h or abstraction layers in concurrance.h. + // from gthr.h or abstraction layers in concurrence.h. // _S_atomic multi-threaded code using atomic operations. enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; diff --git a/libstdc++/include/ext/vstring.h b/libstdc++/include/ext/vstring.h index 79265b9cc6db..38a2c9fd0712 100644 --- a/libstdc++/include/ext/vstring.h +++ b/libstdc++/include/ext/vstring.h @@ -1407,7 +1407,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find position of a character of C substring. * @param s String containing characters to locate. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to search for. * @return Index of first occurrence. * @@ -1468,7 +1468,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character of C substring. * @param s C string containing characters to locate. - * @param pos Index of character to search back from (default end). + * @param pos Index of character to search back from. * @param n Number of characters from s to search for. * @return Index of last occurrence. * @@ -1499,7 +1499,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character. * @param c Character to locate. - * @param pos Index of character to search back from (default 0). + * @param pos Index of character to search back from (default end). * @return Index of last occurrence. * * Starting from @a pos, searches backward for @a c within this string. @@ -1529,7 +1529,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to consider. * @return Index of first occurrence. * @@ -1574,8 +1574,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character not in string. * @param str String containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a str within this string. If found, returns the index @@ -1589,9 +1589,9 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search back from. * @param n Number of characters from s to consider. - * @return Index of first occurrence. + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in the first @a n characters of @a s within this string. @@ -1602,10 +1602,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; /** - * @brief Find position of a character not in C string. + * @brief Find last position of a character not in C string. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a s within this string. If found, returns the index @@ -1621,8 +1621,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a different character. * @param c Character to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character other than * @a c within this string. If found, returns the index where it was diff --git a/libstdc++/include/tr1/boost_shared_ptr.h b/libstdc++/include/tr1/boost_shared_ptr.h index fc79cfc70c23..d83bde692a61 100644 --- a/libstdc++/include/tr1/boost_shared_ptr.h +++ b/libstdc++/include/tr1/boost_shared_ptr.h @@ -857,7 +857,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) // Q: How can we get here? // A: Another thread may have invalidated r after the // use_count test above. - return __shared_ptr(); + return __shared_ptr(); } #else diff --git a/libstdc++/include/tr1/random b/libstdc++/include/tr1/random index c97f16d2a2d7..492adfd5e74c 100644 --- a/libstdc++/include/tr1/random +++ b/libstdc++/include/tr1/random @@ -1618,10 +1618,15 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) result_type _M_call(_UniformRandomNumberGenerator& __urng, result_type __min, result_type __max, true_type) - { + { + // XXX Must be fixed to also work when __urng.max() - __urng.min() + // is smaller than __max - __min. typedef typename __gnu_cxx::__add_unsigned::__type __utype; - return result_type(__utype(__urng()) % (__max - __min + 1)) + __min; + return result_type((__max - __min + 1.0L) + * (__utype(__urng()) - __utype(__urng.min())) + / (__utype(__urng.max()) + - __utype(__urng.min()) + 1.0L)) + __min; } template diff --git a/libstdc++/libsupc++/eh_personality.cc b/libstdc++/libsupc++/eh_personality.cc index 5fd25f232d9d..12bba96b2b87 100644 --- a/libstdc++/libsupc++/eh_personality.cc +++ b/libstdc++/libsupc++/eh_personality.cc @@ -1,5 +1,5 @@ // -*- C++ -*- The GNU C++ exception personality routine. -// Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2006, 2008 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -434,7 +434,7 @@ PERSONALITY_FUNCTION (int version, // Parse the LSDA header. p = parse_lsda_header (context, language_specific_data, &info); info.ttype_base = base_of_encoded_value (info.ttype_encoding, context); -#ifdef HAVE_GETIPINFO +#ifdef _GLIBCXX_HAVE_GETIPINFO ip = _Unwind_GetIPInfo (context, &ip_before_insn); #else ip = _Unwind_GetIP (context); diff --git a/libstdc++/libsupc++/typeinfo b/libstdc++/libsupc++/typeinfo index 90ac18a801f2..cddb65eda8f5 100644 --- a/libstdc++/libsupc++/typeinfo +++ b/libstdc++/libsupc++/typeinfo @@ -99,7 +99,13 @@ namespace std #endif bool operator!=(const type_info& __arg) const { return !operator==(__arg); } - + + // Return true if this is a pointer type of some kind + virtual bool __is_pointer_p() const; + + // Return true if this is a function type + virtual bool __is_function_p() const; + // Try and catch a thrown type. Store an adjusted pointer to the // caught type in THR_OBJ. If THR_TYPE is not a pointer type, then // THR_OBJ points to the thrown object. If THR_TYPE is a pointer @@ -113,12 +119,6 @@ namespace std virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, void **__obj_ptr) const; - // Return true if this is a pointer type of some kind - virtual bool __is_pointer_p() const; - - // Return true if this is a function type - virtual bool __is_function_p() const; - protected: const char *__name; diff --git a/libstdc++/scripts/check_compile b/libstdc++/scripts/check_compile new file mode 100755 index 000000000000..c969f98c476e --- /dev/null +++ b/libstdc++/scripts/check_compile @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +# Script to do performance testing. + +# Invocation +# check_performance SRC_DIR BUILD_DIR + +# 1: variables +# +SRC_DIR=$1 +BUILD_DIR=$2 + +# Now that we've successfully translated the numerical option into +# a symbolic one, we can safely ignore it. +shift + +# This has been true all along. Found out about it the hard way... +case $BASH_VERSION in + 1*) + echo 'You need bash 2.x to run check_performance. Exiting.'; + exit 1 ;; + *) ;; +esac + +flags_script=$BUILD_DIR/scripts/testsuite_flags +INCLUDES=`$flags_script --build-includes` +PCH_FLAGS=`$flags_script --cxxpchflags` +FLAGS=`$flags_script --cxxflags` +TEST_FLAGS="-S" +COMPILER=`$flags_script --build-cxx` +CXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS $TEST_FLAGS" + +echo "compile line is:" +echo $CXX +echo "" + +TESTS_FILE="testsuite_files" + +#mkdir binaries +UNIQUE_ID=0 + +for NAME in `cat $TESTS_FILE` +do + if $RUN; then + echo $NAME + OUTPUT_NAME=$UNIQUE_ID + $CXX $SRC_DIR/testsuite/$NAME -o $OUTPUT_NAME + if [ -f $OUTPUT_NAME ]; then +# mv $OUTPUT_NAME binaries + rm $OUTPUT_NAME + fi + echo "" + let UNIQUE_ID+=1 + fi +done + +exit 0 diff --git a/libstdc++/src/valarray-inst.cc b/libstdc++/src/valarray-inst.cc index c13e1a2454bd..e63c52f229db 100644 --- a/libstdc++/src/valarray-inst.cc +++ b/libstdc++/src/valarray-inst.cc @@ -68,7 +68,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __gslice_to_index(size_t __o, const valarray& __l, const valarray& __s, valarray& __i) { - // There are as much as dimensions as there are strides. + // There are as many dimensions as there are strides. size_t __n = __l.size(); // Get a buffer to hold current multi-index as we go through From efa03e2cad49a3519b80897c1fef2ca9997f76fb Mon Sep 17 00:00:00 2001 From: pfg Date: Tue, 28 Apr 2015 16:28:29 +0000 Subject: [PATCH 5/5] Bring updated versions of libcpp and libgomp. While GCC 4.3 changed license, the library components remained under LGPLv2.1 all the during all the existence of the branch. From gcclibs, only libcpp and libgomp have some value for us in the base gcc 4.2.1: bring updated versions from GCC 4.3.5 as reference as we have already been including some of the fixes. These not expected to become part of any FreeBSD release. --- libcpp/ChangeLog | 370 +- libcpp/Makefile.in | 13 +- libcpp/charset.c | 29 +- libcpp/config.in | 3 + libcpp/configure | 83 +- libcpp/configure.ac | 9 + libcpp/directives-only.c | 240 + libcpp/directives.c | 142 +- libcpp/expr.c | 155 +- libcpp/files.c | 246 +- libcpp/include/cpplib.h | 40 +- libcpp/include/line-map.h | 19 +- libcpp/include/symtab.h | 4 +- libcpp/init.c | 64 +- libcpp/internal.h | 40 +- libcpp/lex.c | 40 +- libcpp/line-map.c | 11 +- libcpp/macro.c | 230 +- libcpp/pch.c | 117 +- libcpp/traditional.c | 74 +- libgomp/ChangeLog | 440 +- libgomp/Makefile.am | 21 +- libgomp/Makefile.in | 237 +- libgomp/aclocal.m4 | 5 + libgomp/config.h.in | 13 + libgomp/config/linux/affinity.c | 107 + libgomp/config/linux/proc.c | 179 + libgomp/config/mingw32/proc.c | 82 + libgomp/config/posix/affinity.c | 41 + libgomp/configure | 11486 +++++++++++++++++++++++++++--- libgomp/configure.ac | 75 +- libgomp/configure.tgt | 16 +- libgomp/env.c | 97 +- libgomp/iter.c | 22 +- libgomp/libgomp.h | 12 +- libgomp/libgomp.texi | 25 +- libgomp/omp.h.in | 49 +- libgomp/omp_lib.h.in | 10 +- libgomp/team.c | 23 +- 39 files changed, 13222 insertions(+), 1647 deletions(-) create mode 100644 libcpp/directives-only.c create mode 100644 libgomp/config/linux/affinity.c create mode 100644 libgomp/config/linux/proc.c create mode 100644 libgomp/config/mingw32/proc.c create mode 100644 libgomp/config/posix/affinity.c diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 20afce892197..0866d2dbb71a 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,23 +1,381 @@ -2007-07-19 Release Manager +2010-05-22 Release Manager - * GCC 4.2.1 released. + * GCC 4.3.5 released. -2007-05-13 Release Manager +2009-08-04 Release Manager - * GCC 4.2.0 released. + * GCC 4.3.4 released. -2007-04-23 Tom Tromey +2009-01-24 Release Manager - PR preprocessor/30468: + * GCC 4.3.3 released. + +2008-08-27 Release Manager + + * GCC 4.3.2 released. + +2008-07-31 Jakub Jelinek + + PR preprocessor/36649 + * files.c (struct report_missing_guard_data): New type. + (report_missing_guard): Put paths into an array instead of printing + them right away. Return 1 rather than 0. + (report_missing_guard_cmp): New function. + (_cpp_report_missing_guards): Sort and print paths gathered by + report_missing_guard callback. + +2008-06-06 Release Manager + + * GCC 4.3.1 released. + +2008-03-05 Release Manager + + * GCC 4.3.0 released. + +2008-01-25 Jakub Jelinek + + PR preprocessor/34692 + * macro.c (collect_args): Add pragma_buff argument. Push + CPP_PRAGMA ... CPP_PRAGMA_EOL tokens to *pragma_buff, rather + than into arguments. Reset prevent_expansion and parsing_args + state at CPP_PRAGMA_EOL/CPP_EOF. + (funlike_invocation_p): Add pragma_buff argument, pass it through + to collect_args. + (enter_macro_context): Add result argument. Adjust + funlike_invocation_p caller. Emit all deferred pragma tokens + gathered during collect_args before the expansion, add a padding + token. Return 2 instead of 1 if any pragma tokens were prepended. + (cpp_get_token): If enter_macro_context returns 2, don't return + a padding token, instead cycle to grab CPP_PRAGMA token. + * directives.c (_cpp_handle_directive): If was_parsing_args + in deferred pragma, leave parsing_args and prevent_expansion as is. + +2008-01-22 Tom Tromey + + PR c++/34859 + * macro.c (_cpp_create_definition): Handle __STDC_LIMIT_MACROS and + __STDC_CONSTANT_MACROS. + +2008-01-07 Fred Fish + + PR preprocessor/30363 + * traditional.c (replace_args_and_push): Add local variable + cxtquote, calculate the replacement text size assuming a + worst case of every input character quoted with backslash, + and properly handle output quoting of quote characters in + actual arguments used in function-like macros. + +2008-01-03 Tom Tromey + + PR preprocessor/34602 + * directives.c (do_line): Don't try to spell EOF token. + (do_linemarker): Add comment. + +2007-12-11 DJ Delorie + + * charset.c (convert_using_iconv): Close out any shift states, + returning to the initial state. + +2007-12-06 Tom Tromey + + PR c/29172 + * internal.h (struct cpp_reader) : Changed + type. + : Removed. + * files.c (FILE_HASH_POOL_SIZE): New macro. + (struct file_hash_entry_pool): New. + (destroy_all_cpp_files): New function. + (allocate_file_hash_entries): Allocate a file_hash_entry_pool. + (new_file_hash_entry): Update. + (free_file_hash_entries): New function. + (_cpp_cleanup_files): Call free_file_hash_entries and + destroy_all_cpp_files. + (cpp_clear_file_cache): New function. + * include/cpplib.h (cpp_clear_file_cache): Declare. + +2007-12-03 Tom Tromey + + PR preprocessor/34288 + * configure.ac, config.in: Rebuilt. + * configure.ac: Check for ssize_t. + +2007-11-30 Tom Tromey + + PR preprocessor/32868 + * macro.c (_cpp_create_definition): Special case + __STDC_FORMAT_MACROS. + +2007-11-16 Michael Matz + + * files.c (search_path_head): Fix check for absolute paths. + +2007-11-11 Tom Tromey + + PR c++/17557 + * include/cpplib.h (cpp_included_before): Declare. + * files.c (struct file_hash_entry) : New field. + (_cpp_find_file): Initialize new field. + (make_cpp_dir): Likewise. + (cpp_included_before): New function. + +2007-11-01 Tom Tromey + + PR preprocessor/30805 + * macro.c (paste_tokens): Handle padding token. + (paste_tokens): Don't abort unless padding has PASTE_LEFT flag. + +2007-10-31 Tom Tromey + + PR preprocessor/30786 + * macro.c (builtin_macro): Return result of _cpp_do__Pragma. + * directives.c (_cpp_do__Pragma): Return error status. + * internal.h (_cpp_do__Pragma): Update. + * directives.c (get__Pragma_string): Back up if EOF seen. + +2007-09-06 Tom Tromey + + * internal.h (struct cpp_reader) : New + field. + (struct cpp_reader) : Likewise. + * init.c (cpp_set_line_map): New function. + * line-map.c (linemap_add): Use linemap's allocator. + * include/line-map.h (GTY): Define. + (line_map_realloc): New typedef. + (struct line_map): Mark with GTY. + (struct line_maps): Likewise. + (struct line_maps) : Likewise. + (struct line_maps) : New field. + * include/symtab.h (GTY): Conditionally define. + * include/cpplib.h (cpp_set_line_map): Declare. + (cpp_get_token_with_location): Declare. + * macro.c (cpp_get_token): Set invocation_location on the reader. + (cpp_get_token_with_location): New function. + +2007-08-30 Chao-ying Fu + + * expr.c (interpret_float_suffix): Support hr, r, lr, llr, uhr, ur, + ulr, ullr, hk, k, lk, llk, uhk, uk, ulk, ullk. + (cpp_classify_number): Support decimal fixed-point constants without + exponents. + Warn about fixed-point constants when -pedantic. + * include/cpplib.h (CPP_N_SMALL, CPP_N_MEDIUM, CPP_N_LARGE): Change + comments to support fixed-point values. + (CPP_N_FRACT, CPP_N_ACCUM): Define. + +2007-08-18 Tom Tromey + + PR preprocessor/32974 + * directives.c (parse_include): Don't check for EOL when + processing #pragma dependency. + +2007-07-30 Ollie Wild + + * directives-only.c: New file. + * internal.h (struct _cpp_dir_only_callbacks): New. + (_cpp_preprocess_dir_only): New function. + * directives.c (_cpp_handle_directive): Check directives_only before + disabling execution of indented directives. + * files.c (_cpp_stack_file): Add directives_only check. + * include/cpplib.h (struct cpp_options): Add directives_only. + (cpp_init_special_builtins): New function. + * init.c (cpp_init_special_builtins): New function. + (cpp_init_builtins): Move builtin_array initialization to + cpp_init_special_builtins. + (post_options): Check directives_only before setting + pfile->state.prevent_expansion = 1. + * macro.c (_cpp_builtin_macro_text): Print an error if __COUNTER__ + is expanded inside a directive while -fdirectives-only is enabled. + * Makefile.in (libcpp_a_OBJS): Add directives-only.o. + (libcpp_a_SOURCES): Add directives-only.c. + +2007-07-04 Uros Bizjak + + * traditional.c (_cpp_scan_out_logical_line): Initialize + fmacro.args, fmacro.node, fmacro.offset, fmacro.line and + fmacro.args to prevent 'may be used uninitialized' warning. + +2007-07-03 Uros Bizjak + + * include/cpplib.h (CPP_N_WIDTH_MD, CPP_N_MD_W, CPP_N_MD_Q): + Add new constants. + * expr.c (interpret_float_suffix): Process 'w', 'W', 'q' and 'Q' + suffixes. Return CPP_N_MD_W for 'w' or 'W' suffixes and CPP_N_MD_Q + for 'q' or 'Q' suffixes. + +2007-06-17 Danny Smith + + * files.c (open_file): Prevent the call + for stat from overwriting errno. + +2007-06-09 Vladimir Prus + + * files.c (open_file): Account for the + fact that on windows, opening a directory gives + EACCES. + +2007-06-05 Joerg Wunsch + + PR preprocessor/23479 + * expr.c (cpp_classify_number): Implement 0b-prefixed binary + integer constants. + (append_digit): Likewise. + * include/cpplib.h: Add CPP_N_BINARY, to be used for 0b-prefixed + binary integer constants. + +2007-05-31 Dave Korn + + PR preprocessor/14331 + * lex.c (_cpp_get_fresh_line): Don't warn if no newline at EOF. + +2007-05-24 Ollie Wild + + * macro.c (_cpp_builtin_macro_text): Handle BT_COUNTER. + * pch.c (cpp_write_pch_deps): Save __COUNTER__ state. + (cpp_write_pch_state): Save __COUNTER__ state. + (cpp_valid_state): Check valid __COUNTER__ state. + (cpp_read_state): Read new __COUNTER__ state. + * include/cpplib.h (enum builtin_type): Add BT_COUNTER enumerator. + * init.c (builtin_array): Add __COUNTER__/BT_COUNTER. + * internal.h (struct cpp_reader): Add counter member. + +2007-05-23 Simon Martin + + PR preprocessor/20077 + * macro.c (create_iso_definition): Fixed the method to determine + whether the token-pasting operator appears at the beginning or the end + of a macro. + +2007-05-21 Ian Lance Taylor + + * internal.h (struct cpp_reader): Add new fields: + nonexistent_file_hash and nonexistent_file_ob. + * files.c: Include "obstack.h". + (find_file_in_dir): Before trying to open the file, look up the + path name in the hash table of nonexistent files. After failing + to open the file, add the path name to the hash table. + (_cpp_find_file): Cache the results of looking up the file name + starting with the quote and bracket chain heads, if we can. + (nonexistent_file_hash_eq): New static function. + (_cpp_init_files): Initialize pfile->nonexistent_file_hash and + pfile->nonexistent_file_ob. + (_cpp_cleanup_files): Free pfile->nonexistent_file_hash and + pfile->nonexistent_file_ob. + +2007-05-14 Janis Johnson + + * expr.c (cpp_classify_number): Warn about dfp constant for -pedantic. + + PR c/31924 + * expr.c (interpret_float_suffix): Check for invalid suffix. + +2007-05-02 Eric Christopher + + * expr.c (num_div_op): Don't overflow if the result is + zero. + +2007-05-02 Tom Tromey + + PR preprocessor/28709 + * macro.c (paste_tokens): Remove PASTE_LEFT from the old lhs. + +2007-03-30 Michael Meissner + + * directives.c (lex_macro_node_from_str): Fix alloca call to be + type correct. + +2007-03-30 Richard Henderson + + * directives.c (lex_macro_node_from_str): New. + (cpp_push_definition, cpp_pop_definition): New. + * include/cpplib.h (cpp_push_definition, cpp_pop_definition): Declare. + +2007-03-01 Brooks Moses + + * Makefile.in: Add dummy install-pdf target. + +2007-01-30 Tom Tromey + + PR preprocessor/30468 * mkdeps.c (apply_vpath): Strip successive '/'s if we stripped './'. +2007-01-30 Tom Tromey + + PR preprocessor/29966 + * macro.c (lex_expansion_token): Save and restore cpp_reader's + cur_token. + (_cpp_create_definition): Don't restore cur_token here. + * lex.c (_cpp_lex_token): Added assertion. + +2007-01-27 Tom Tromey + + * configure: Rebuilt. + +2007-01-12 Tom Tromey + + PR preprocessor/28227 + * directives.c (lex_macro_node): Added 'is_def_or_undef' + argument. + (do_define): Update. + (do_undef): Update. + (do_ifdef): Update. + (do_ifndef): Update. + +2007-01-11 Paolo Bonzini + + * configure: Regenerate. + +2007-01-11 Paolo Bonzini + + * configure: Regenerate. + +2007-01-04 Tom Tromey + + PR preprocessor/28165 + * internal.h (cpp_in_primary_file): New function. + * directives.c (do_include_next): Use cpp_in_primary_file. + (do_pragma_once): Likewise. + (do_pragma_system_header): Likewise. + +2006-12-29 Ian Lance Taylor + + * lex.c (_cpp_clean_line): Add uses of __builtin_expect. Don't + look backward at the end of the line unless we saw a backslash. + 2006-12-29 Jakub Jelinek PR preprocessor/29612 * directives.c (do_linemarker): Set pfile->buffer->sysp always, not only when new_sysp is non-zero. +2006-12-28 Tom Tromey + + PR preprocessor/30001 + * charset.c (_cpp_convert_input): Check that to.len is greater + than zero. + +2006-11-20 Trevor Smigiel + + * configure.ac (need_64bit_hwint): Need 64bit hwint for SPU. + * configure: Rebuilt. + +2006-11-01 Douglas Gregor + + * include/cpplib.h (enum c_lang): Add CLK_GNUCXX0X and CLK_CXX0X + for experimental C++0x mode. + * init.c (lang_defaults): Add defaults for C++0x modes. C++0x has + adopted the preprocessor changes introduced in C99. + +2006-10-29 Joseph Myers + + * configure.ac (need_64bit_hwint): Set for i[34567]86-*-linux* + depending on --enable-targets=all. + * configure: Regenerate. + 2006-10-12 Jakub Jelinek PR preprocessor/28709 diff --git a/libcpp/Makefile.in b/libcpp/Makefile.in index f565fa2f2a9a..960a42d56e3f 100644 --- a/libcpp/Makefile.in +++ b/libcpp/Makefile.in @@ -69,14 +69,14 @@ INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) -libcpp_a_OBJS = charset.o directives.o errors.o expr.o files.o \ - identifiers.o init.o lex.o line-map.o macro.o mkdeps.o \ - pch.o symtab.o traditional.o +libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \ + expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \ + mkdeps.o pch.o symtab.o traditional.o makedepend_OBJS = makedepend.o -libcpp_a_SOURCES = charset.c directives.c errors.c expr.c files.c \ - identifiers.c init.c lex.c line-map.c macro.c mkdeps.c \ - pch.c symtab.c traditional.c +libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \ + expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \ + mkdeps.c pch.c symtab.c traditional.c all: libcpp.a makedepend$(EXEEXT) $(USED_CATALOGS) @@ -184,6 +184,7 @@ pdf: html: info: install-info: +install-pdf: install-man: install-html: diff --git a/libcpp/charset.c b/libcpp/charset.c index 78c89816735a..5db8fc134303 100644 --- a/libcpp/charset.c +++ b/libcpp/charset.c @@ -1,5 +1,5 @@ /* CPP Library - charsets - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc. Broken out of c-lex.c Apr 2003, adding valid C99 UCN ranges. @@ -548,6 +548,15 @@ convert_no_conversion (iconv_t cd ATTRIBUTE_UNUSED, /* And this one uses the system iconv primitive. It's a little different, since iconv's interface is a little different. */ #if HAVE_ICONV + +#define CONVERT_ICONV_GROW_BUFFER \ + do { \ + outbytesleft += OUTBUF_BLOCK_SIZE; \ + to->asize += OUTBUF_BLOCK_SIZE; \ + to->text = XRESIZEVEC (uchar, to->text, to->asize); \ + outbuf = (char *)to->text + to->asize - outbytesleft; \ + } while (0) + static bool convert_using_iconv (iconv_t cd, const uchar *from, size_t flen, struct _cpp_strbuf *to) @@ -570,16 +579,24 @@ convert_using_iconv (iconv_t cd, const uchar *from, size_t flen, iconv (cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (__builtin_expect (inbytesleft == 0, 1)) { + /* Close out any shift states, returning to the initial state. */ + if (iconv (cd, 0, 0, &outbuf, &outbytesleft) == (size_t)-1) + { + if (errno != E2BIG) + return false; + + CONVERT_ICONV_GROW_BUFFER; + if (iconv (cd, 0, 0, &outbuf, &outbytesleft) == (size_t)-1) + return false; + } + to->len = to->asize - outbytesleft; return true; } if (errno != E2BIG) return false; - outbytesleft += OUTBUF_BLOCK_SIZE; - to->asize += OUTBUF_BLOCK_SIZE; - to->text = XRESIZEVEC (uchar, to->text, to->asize); - outbuf = (char *)to->text + to->asize - outbytesleft; + CONVERT_ICONV_GROW_BUFFER; } } #else @@ -1628,7 +1645,7 @@ _cpp_convert_input (cpp_reader *pfile, const char *input_charset, terminate with another \r, not an \n, so that we do not mistake the \r\n sequence for a single DOS line ending and erroneously issue the "No newline at end of file" diagnostic. */ - if (to.text[to.len - 1] == '\r') + if (to.len && to.text[to.len - 1] == '\r') to.text[to.len] = '\r'; else to.text[to.len] = '\n'; diff --git a/libcpp/config.in b/libcpp/config.in index 2b05ba0c401f..5d52ec122103 100644 --- a/libcpp/config.in +++ b/libcpp/config.in @@ -280,3 +280,6 @@ /* Define to `unsigned' if does not define. */ #undef size_t + +/* Define to `int' if does not define. */ +#undef ssize_t diff --git a/libcpp/configure b/libcpp/configure index 2b944b37f7c7..5d70aed04875 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -2816,7 +2816,7 @@ fi echo "$as_me:$LINENO: result: $acx_cv_prog_cc_pedantic__Wno_long_long" >&5 echo "${ECHO_T}$acx_cv_prog_cc_pedantic__Wno_long_long" >&6 if test $acx_cv_prog_cc_pedantic__Wno_long_long = yes; then - WARN_PEDANTIC="-pedantic -Wno-long-long" + WARN_PEDANTIC="$WARN_PEDANTIC${WARN_PEDANTIC:+ }-pedantic -Wno-long-long" fi @@ -2835,11 +2835,12 @@ else enable_werror_always=no fi; if test $enable_werror_always = yes; then - WERROR=-Werror + WERROR="$WERROR${WERROR:+ }-Werror" fi + # Dependency checking. rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null @@ -4113,6 +4114,72 @@ _ACEOF fi +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ssize_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 if test "${ac_cv_struct_tm+set}" = set; then @@ -8244,8 +8311,16 @@ case $target in sparc64*-*-* | ultrasparc-*-freebsd* | \ sparcv9-*-solaris2* | \ sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + spu-*-* | \ sh[123456789l]*-*-*) need_64bit_hwint=yes ;; + i[34567]86-*-linux*) + if test "x$enable_targets" = xall; then + need_64bit_hwint=yes + else + need_64bit_hwint=no + fi + ;; *) need_64bit_hwint=no ;; esac @@ -8792,7 +8867,7 @@ cat >>$CONFIG_STATUS <<_ACEOF # INIT-COMMANDS section. # -DEPDIR=$DEPDIR +ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR _ACEOF @@ -9526,7 +9601,7 @@ esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in - depdir ) mkdir $DEPDIR ;; + depdir ) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;; esac done _ACEOF diff --git a/libcpp/configure.ac b/libcpp/configure.ac index e32d8233e44f..40f62715acdd 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -46,6 +46,7 @@ AC_C_INLINE AC_FUNC_OBSTACK AC_TYPE_OFF_T AC_TYPE_SIZE_T +AC_CHECK_TYPE(ssize_t, int) AC_STRUCT_TM AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) @@ -128,8 +129,16 @@ case $target in sparc64*-*-* | ultrasparc-*-freebsd* | \ sparcv9-*-solaris2* | \ sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + spu-*-* | \ sh[123456789l]*-*-*) need_64bit_hwint=yes ;; + i[34567]86-*-linux*) + if test "x$enable_targets" = xall; then + need_64bit_hwint=yes + else + need_64bit_hwint=no + fi + ;; *) need_64bit_hwint=no ;; esac diff --git a/libcpp/directives-only.c b/libcpp/directives-only.c new file mode 100644 index 000000000000..d50cebbdae3c --- /dev/null +++ b/libcpp/directives-only.c @@ -0,0 +1,240 @@ +/* CPP Library - directive only preprocessing for distributed compilation. + Copyright (C) 2007 + Free Software Foundation, Inc. + Contributed by Ollie Wild . + +This program 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. + +This program 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 this program; if not, write to the Free Software +Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include "config.h" +#include "system.h" +#include "cpplib.h" +#include "internal.h" + +/* DO (Directive only) flags. */ +#define DO_BOL (1 << 0) /* At the beginning of a logical line. */ +#define DO_STRING (1 << 1) /* In a string constant. */ +#define DO_CHAR (1 << 2) /* In a character constant. */ +#define DO_BLOCK_COMMENT (1 << 3) /* In a block comment. */ +#define DO_LINE_COMMENT (1 << 4) /* In a single line "//-style" comment. */ + +#define DO_LINE_SPECIAL (DO_STRING | DO_CHAR | DO_LINE_COMMENT) +#define DO_SPECIAL (DO_LINE_SPECIAL | DO_BLOCK_COMMENT) + +/* Writes out the preprocessed file, handling spacing and paste + avoidance issues. */ +void +_cpp_preprocess_dir_only (cpp_reader *pfile, + const struct _cpp_dir_only_callbacks *cb) +{ + struct cpp_buffer *buffer; + const unsigned char *cur, *base, *next_line, *rlimit; + cppchar_t c, last_c; + unsigned flags; + int lines, col; + source_location loc; + + restart: + /* Buffer initialization ala _cpp_clean_line(). */ + buffer = pfile->buffer; + buffer->cur_note = buffer->notes_used = 0; + buffer->cur = buffer->line_base = buffer->next_line; + buffer->need_line = false; + + /* This isn't really needed. It prevents a compiler warning, though. */ + loc = pfile->line_table->highest_line; + + /* Scan initialization. */ + next_line = cur = base = buffer->cur; + rlimit = buffer->rlimit; + flags = DO_BOL; + lines = 0; + col = 1; + + for (last_c = '\n', c = *cur; cur < rlimit; last_c = c, c = *++cur, ++col) + { + /* Skip over escaped newlines. */ + if (__builtin_expect (c == '\\', false)) + { + const unsigned char *tmp = cur + 1; + + while (is_nvspace (*tmp) && tmp < rlimit) + tmp++; + if (*tmp == '\r') + tmp++; + if (*tmp == '\n' && tmp < rlimit) + { + CPP_INCREMENT_LINE (pfile, 0); + lines++; + col = 0; + cur = tmp; + c = last_c; + continue; + } + } + + if (__builtin_expect (last_c == '#', false) && !(flags & DO_SPECIAL)) + { + if (c != '#' && (flags & DO_BOL)) + { + struct line_maps *line_table; + + if (!pfile->state.skipping && next_line != base) + cb->print_lines (lines, base, next_line - base); + + /* Prep things for directive handling. */ + buffer->next_line = cur; + buffer->need_line = true; + _cpp_get_fresh_line (pfile); + + /* Ensure proper column numbering for generated error messages. */ + buffer->line_base -= col - 1; + + _cpp_handle_directive (pfile, 0 /* ignore indented */); + + /* Sanitize the line settings. Duplicate #include's can mess + things up. */ + line_table = pfile->line_table; + line_table->highest_location = line_table->highest_line; + + /* The if block prevents us from outputing line information when + the file ends with a directive and no newline. Note that we + must use pfile->buffer, not buffer. */ + if (pfile->buffer->next_line < pfile->buffer->rlimit) + cb->maybe_print_line (pfile->line_table->highest_line); + + goto restart; + } + + flags &= ~DO_BOL; + pfile->mi_valid = false; + } + else if (__builtin_expect (last_c == '/', false) \ + && !(flags & DO_SPECIAL) && c != '*' && c != '/') + { + /* If a previous slash is not starting a block comment, clear the + DO_BOL flag. */ + flags &= ~DO_BOL; + pfile->mi_valid = false; + } + + switch (c) + { + case '/': + if ((flags & DO_BLOCK_COMMENT) && last_c == '*') + { + flags &= ~DO_BLOCK_COMMENT; + c = 0; + } + else if (!(flags & DO_SPECIAL) && last_c == '/') + flags |= DO_LINE_COMMENT; + else if (!(flags & DO_SPECIAL)) + /* Mark the position for possible error reporting. */ + LINEMAP_POSITION_FOR_COLUMN (loc, pfile->line_table, col); + + break; + + case '*': + if (!(flags & DO_SPECIAL)) + { + if (last_c == '/') + flags |= DO_BLOCK_COMMENT; + else + { + flags &= ~DO_BOL; + pfile->mi_valid = false; + } + } + + break; + + case '\'': + case '"': + { + unsigned state = (c == '"') ? DO_STRING : DO_CHAR; + + if (!(flags & DO_SPECIAL)) + { + flags |= state; + flags &= ~DO_BOL; + pfile->mi_valid = false; + } + else if ((flags & state) && last_c != '\\') + flags &= ~state; + + break; + } + + case '\\': + { + if ((flags & (DO_STRING | DO_CHAR)) && last_c == '\\') + c = 0; + + if (!(flags & DO_SPECIAL)) + { + flags &= ~DO_BOL; + pfile->mi_valid = false; + } + + break; + } + + case '\n': + CPP_INCREMENT_LINE (pfile, 0); + lines++; + col = 0; + flags &= ~DO_LINE_SPECIAL; + if (!(flags & DO_SPECIAL)) + flags |= DO_BOL; + break; + + case '#': + next_line = cur; + /* Don't update DO_BOL yet. */ + break; + + case ' ': case '\t': case '\f': case '\v': case '\0': + break; + + default: + if (!(flags & DO_SPECIAL)) + { + flags &= ~DO_BOL; + pfile->mi_valid = false; + } + break; + } + } + + if (flags & DO_BLOCK_COMMENT) + cpp_error_with_line (pfile, CPP_DL_ERROR, loc, 0, "unterminated comment"); + + if (!pfile->state.skipping && cur != base) + { + /* If the file was not newline terminated, add rlimit, which is + guaranteed to point to a newline, to the end of our range. */ + if (cur[-1] != '\n') + { + cur++; + CPP_INCREMENT_LINE (pfile, 0); + lines++; + } + + cb->print_lines (lines, base, cur - base); + } + + _cpp_pop_buffer (pfile); + if (pfile->buffer) + goto restart; +} diff --git a/libcpp/directives.c b/libcpp/directives.c index 7fb142e48c79..c77e84bfec16 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -1,6 +1,7 @@ /* CPP Library. (Directive handling.) Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2007, 2008 Free Software Foundation, Inc. Contributed by Per Bothner, 1994-95. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -102,7 +103,7 @@ static void push_conditional (cpp_reader *, int, int, const cpp_hashnode *); static unsigned int read_flag (cpp_reader *, unsigned int); static int strtoul_for_line (const uchar *, unsigned int, unsigned long *); static void do_diagnostic (cpp_reader *, int, int); -static cpp_hashnode *lex_macro_node (cpp_reader *); +static cpp_hashnode *lex_macro_node (cpp_reader *, bool); static int undefine_macros (cpp_reader *, cpp_hashnode *, void *); static void do_include_common (cpp_reader *, enum include_type); static struct pragma_entry *lookup_pragma_entry (struct pragma_entry *, @@ -423,8 +424,13 @@ _cpp_handle_directive (cpp_reader *pfile, int indented) does not cause '#define foo bar' to get executed when compiled with -save-temps, we recognize directives in -fpreprocessed mode only if the # is in column 1. macro.c - puts a space in front of any '#' at the start of a macro. */ + puts a space in front of any '#' at the start of a macro. + + We exclude the -fdirectives-only case because macro expansion + has not been performed yet, and block comments can cause spaces + to preceed the directive. */ if (CPP_OPTION (pfile, preprocessed) + && !CPP_OPTION (pfile, directives_only) && (indented || !(dir->flags & IN_I))) { skip = 0; @@ -469,7 +475,7 @@ _cpp_handle_directive (cpp_reader *pfile, int indented) _cpp_backup_tokens (pfile, 1); end_directive (pfile, skip); - if (was_parsing_args) + if (was_parsing_args && !pfile->state.in_deferred_pragma) { /* Restore state when within macro args. */ pfile->state.parsing_args = 2; @@ -502,9 +508,11 @@ run_directive (cpp_reader *pfile, int dir_no, const char *buf, size_t count) } /* Checks for validity the macro name in #define, #undef, #ifdef and - #ifndef directives. */ + #ifndef directives. IS_DEF_OR_UNDEF is true if this call is + processing a #define or #undefine directive, and false + otherwise. */ static cpp_hashnode * -lex_macro_node (cpp_reader *pfile) +lex_macro_node (cpp_reader *pfile, bool is_def_or_undef) { const cpp_token *token = _cpp_lex_token (pfile); @@ -519,7 +527,7 @@ lex_macro_node (cpp_reader *pfile) { cpp_hashnode *node = token->val.node; - if (node == pfile->spec_nodes.n_defined) + if (is_def_or_undef && node == pfile->spec_nodes.n_defined) cpp_error (pfile, CPP_DL_ERROR, "\"defined\" cannot be used as a macro name"); else if (! (node->flags & NODE_POISONED)) @@ -542,7 +550,7 @@ lex_macro_node (cpp_reader *pfile) static void do_define (cpp_reader *pfile) { - cpp_hashnode *node = lex_macro_node (pfile); + cpp_hashnode *node = lex_macro_node (pfile, true); if (node) { @@ -561,7 +569,7 @@ do_define (cpp_reader *pfile) static void do_undef (cpp_reader *pfile) { - cpp_hashnode *node = lex_macro_node (pfile); + cpp_hashnode *node = lex_macro_node (pfile, true); if (node) { @@ -690,7 +698,11 @@ parse_include (cpp_reader *pfile, int *pangle_brackets, return NULL; } - if (buf == NULL || CPP_OPTION (pfile, discard_comments)) + if (pfile->directive == &dtable[T_PRAGMA]) + { + /* This pragma allows extra tokens after the file name. */ + } + else if (buf == NULL || CPP_OPTION (pfile, discard_comments)) check_eol (pfile); else { @@ -772,7 +784,7 @@ do_include_next (cpp_reader *pfile) /* If this is the primary source file, warn and use the normal search logic. */ - if (! pfile->buffer->prev) + if (cpp_in_primary_file (pfile)) { cpp_error (pfile, CPP_DL_WARNING, "#include_next in primary source file"); @@ -852,9 +864,12 @@ do_line (cpp_reader *pfile) || strtoul_for_line (token->val.str.text, token->val.str.len, &new_lineno)) { - cpp_error (pfile, CPP_DL_ERROR, - "\"%s\" after #line is not a positive integer", - cpp_token_as_text (pfile, token)); + if (token->type == CPP_EOF) + cpp_error (pfile, CPP_DL_ERROR, "unexpected end of file after #line"); + else + cpp_error (pfile, CPP_DL_ERROR, + "\"%s\" after #line is not a positive integer", + cpp_token_as_text (pfile, token)); return; } @@ -908,6 +923,8 @@ do_linemarker (cpp_reader *pfile) || strtoul_for_line (token->val.str.text, token->val.str.len, &new_lineno)) { + /* Unlike #line, there does not seem to be a way to get an EOF + here. So, it should be safe to always spell the token. */ cpp_error (pfile, CPP_DL_ERROR, "\"%s\" after # is not a positive integer", cpp_token_as_text (pfile, token)); @@ -1346,7 +1363,7 @@ do_pragma (cpp_reader *pfile) static void do_pragma_once (cpp_reader *pfile) { - if (pfile->buffer->prev == NULL) + if (cpp_in_primary_file (pfile)) cpp_error (pfile, CPP_DL_WARNING, "#pragma once in main file"); check_eol (pfile); @@ -1396,9 +1413,7 @@ do_pragma_poison (cpp_reader *pfile) static void do_pragma_system_header (cpp_reader *pfile) { - cpp_buffer *buffer = pfile->buffer; - - if (buffer->prev == 0) + if (cpp_in_primary_file (pfile)) cpp_error (pfile, CPP_DL_WARNING, "#pragma system_header ignored outside include file"); else @@ -1457,15 +1472,24 @@ static const cpp_token * get__Pragma_string (cpp_reader *pfile) { const cpp_token *string; + const cpp_token *paren; - if (get_token_no_padding (pfile)->type != CPP_OPEN_PAREN) + paren = get_token_no_padding (pfile); + if (paren->type == CPP_EOF) + _cpp_backup_tokens (pfile, 1); + if (paren->type != CPP_OPEN_PAREN) return NULL; string = get_token_no_padding (pfile); + if (string->type == CPP_EOF) + _cpp_backup_tokens (pfile, 1); if (string->type != CPP_STRING && string->type != CPP_WSTRING) return NULL; - if (get_token_no_padding (pfile)->type != CPP_CLOSE_PAREN) + paren = get_token_no_padding (pfile); + if (paren->type == CPP_EOF) + _cpp_backup_tokens (pfile, 1); + if (paren->type != CPP_CLOSE_PAREN) return NULL; return string; @@ -1585,18 +1609,21 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in) _cpp_push_token_context (pfile, NULL, toks, count); } -/* Handle the _Pragma operator. */ -void +/* Handle the _Pragma operator. Return 0 on error, 1 if ok. */ +int _cpp_do__Pragma (cpp_reader *pfile) { const cpp_token *string = get__Pragma_string (pfile); pfile->directive_result.type = CPP_PADDING; if (string) - destringize_and_run (pfile, &string->val.str); - else - cpp_error (pfile, CPP_DL_ERROR, - "_Pragma takes a parenthesized string literal"); + { + destringize_and_run (pfile, &string->val.str); + return 1; + } + cpp_error (pfile, CPP_DL_ERROR, + "_Pragma takes a parenthesized string literal"); + return 0; } /* Handle #ifdef. */ @@ -1607,7 +1634,7 @@ do_ifdef (cpp_reader *pfile) if (! pfile->state.skipping) { - const cpp_hashnode *node = lex_macro_node (pfile); + const cpp_hashnode *node = lex_macro_node (pfile, false); if (node) { @@ -1629,7 +1656,7 @@ do_ifndef (cpp_reader *pfile) if (! pfile->state.skipping) { - node = lex_macro_node (pfile); + node = lex_macro_node (pfile, false); if (node) { @@ -2077,6 +2104,65 @@ cpp_undef (cpp_reader *pfile, const char *macro) run_directive (pfile, T_UNDEF, buf, len); } +/* Like lex_macro_node, but read the input from STR. */ +static cpp_hashnode * +lex_macro_node_from_str (cpp_reader *pfile, const char *str) +{ + size_t len = strlen (str); + uchar *buf = (uchar *) alloca (len + 1); + cpp_hashnode *node; + + memcpy (buf, str, len); + buf[len] = '\n'; + cpp_push_buffer (pfile, buf, len, true); + node = lex_macro_node (pfile, true); + _cpp_pop_buffer (pfile); + + return node; +} + +/* If STR is a defined macro, return its definition node, else return NULL. */ +cpp_macro * +cpp_push_definition (cpp_reader *pfile, const char *str) +{ + cpp_hashnode *node = lex_macro_node_from_str (pfile, str); + if (node && node->type == NT_MACRO) + return node->value.macro; + else + return NULL; +} + +/* Replace a previous definition DFN of the macro STR. If DFN is NULL, + then the macro should be undefined. */ +void +cpp_pop_definition (cpp_reader *pfile, const char *str, cpp_macro *dfn) +{ + cpp_hashnode *node = lex_macro_node_from_str (pfile, str); + if (node == NULL) + return; + + if (node->type == NT_MACRO) + { + if (pfile->cb.undef) + pfile->cb.undef (pfile, pfile->directive_line, node); + if (CPP_OPTION (pfile, warn_unused_macros)) + _cpp_warn_if_unused_macro (pfile, node, NULL); + } + if (node->type != NT_VOID) + _cpp_free_definition (node); + + if (dfn) + { + node->type = NT_MACRO; + node->value.macro = dfn; + if (! ustrncmp (NODE_NAME (node), DSC ("__STDC_"))) + node->flags |= NODE_WARN; + + if (pfile->cb.define) + pfile->cb.define (pfile, pfile->directive_line, node); + } +} + /* Process the string STR as if it appeared as the body of a #assert. */ void cpp_assert (cpp_reader *pfile, const char *str) diff --git a/libcpp/expr.c b/libcpp/expr.c index 574b85ff656d..9df75332c055 100644 --- a/libcpp/expr.c +++ b/libcpp/expr.c @@ -82,26 +82,77 @@ static void check_promotion (cpp_reader *, const struct op *); static unsigned int interpret_float_suffix (const uchar *s, size_t len) { - size_t f = 0, l = 0, i = 0, d = 0; + size_t f, l, w, q, i, d; + size_t r, k, u, h; + + f = l = w = q = i = d = 0; + r = k = u = h = 0; while (len--) switch (s[len]) { - case 'f': case 'F': f++; break; - case 'l': case 'L': l++; break; + case 'r': case 'R': r++; break; + case 'k': case 'K': k++; break; + case 'u': case 'U': u++; break; + case 'h': case 'H': h++; break; + case 'f': case 'F': + if (d > 0) + return 0; + f++; + break; + case 'l': case 'L': + if (d > 0) + return 0; + l++; + /* If there are two Ls, they must be adjacent and the same case. */ + if (l == 2 && s[len] != s[len + 1]) + return 0; + break; + case 'w': case 'W': + if (d > 0) + return 0; + w++; + break; + case 'q': case 'Q': + if (d > 0) + return 0; + q++; + break; case 'i': case 'I': case 'j': case 'J': i++; break; - case 'd': case 'D': - /* Disallow fd, ld suffixes. */ - if (d && (f || l)) - return 0; - d++; - break; + case 'd': case 'D': d++; break; default: return 0; } - if (f + l > 1 || i > 1) + if (r + k > 1 || h > 1 || l > 2 || u > 1) + return 0; + + if (r == 1) + { + if (f || i || d || w || q) + return 0; + + return (CPP_N_FRACT + | (u ? CPP_N_UNSIGNED : 0) + | (h ? CPP_N_SMALL : + l == 2 ? CPP_N_LARGE : + l == 1 ? CPP_N_MEDIUM : 0)); + } + + if (k == 1) + { + if (f || i || d || w || q) + return 0; + + return (CPP_N_ACCUM + | (u ? CPP_N_UNSIGNED : 0) + | (h ? CPP_N_SMALL : + l == 2 ? CPP_N_LARGE : + l == 1 ? CPP_N_MEDIUM : 0)); + } + + if (f + l + w + q > 1 || i > 1 || h + u > 0) return 0; /* Allow dd, df, dl suffixes for decimal float constants. */ @@ -110,7 +161,9 @@ interpret_float_suffix (const uchar *s, size_t len) return ((i ? CPP_N_IMAGINARY : 0) | (f ? CPP_N_SMALL : - l ? CPP_N_LARGE : CPP_N_MEDIUM) + l ? CPP_N_LARGE : + w ? CPP_N_MD_W : + q ? CPP_N_MD_Q : CPP_N_MEDIUM) | (d ? CPP_N_DFLOAT : 0)); } @@ -182,6 +235,11 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token) radix = 16; str++; } + else if ((*str == 'b' || *str == 'B') && (str[1] == '0' || str[1] == '1')) + { + radix = 2; + str++; + } } /* Now scan for a well-formed integer or float. */ @@ -216,14 +274,46 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token) } } + /* The suffix may be for decimal fixed-point constants without exponent. */ + if (radix != 16 && float_flag == NOT_FLOAT) + { + result = interpret_float_suffix (str, limit - str); + if ((result & CPP_N_FRACT) || (result & CPP_N_ACCUM)) + { + result |= CPP_N_FLOATING; + /* We need to restore the radix to 10, if the radix is 8. */ + if (radix == 8) + radix = 10; + + if (CPP_PEDANTIC (pfile)) + cpp_error (pfile, CPP_DL_PEDWARN, + "fixed-point constants are a GCC extension"); + goto syntax_ok; + } + else + result = 0; + } + if (float_flag != NOT_FLOAT && radix == 8) radix = 10; if (max_digit >= radix) - SYNTAX_ERROR2 ("invalid digit \"%c\" in octal constant", '0' + max_digit); + { + if (radix == 2) + SYNTAX_ERROR2 ("invalid digit \"%c\" in binary constant", '0' + max_digit); + else + SYNTAX_ERROR2 ("invalid digit \"%c\" in octal constant", '0' + max_digit); + } if (float_flag != NOT_FLOAT) { + if (radix == 2) + { + cpp_error (pfile, CPP_DL_ERROR, + "invalid prefix \"0b\" for floating constant"); + return CPP_N_INVALID; + } + if (radix == 16 && CPP_PEDANTIC (pfile) && !CPP_OPTION (pfile, c99)) cpp_error (pfile, CPP_DL_PEDWARN, "use of C99 hexadecimal floating constant"); @@ -270,6 +360,14 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token) return CPP_N_INVALID; } + if ((result & (CPP_N_FRACT | CPP_N_ACCUM)) && CPP_PEDANTIC (pfile)) + cpp_error (pfile, CPP_DL_PEDWARN, + "fixed-point constants are a GCC extension"); + + if ((result & CPP_N_DFLOAT) && CPP_PEDANTIC (pfile)) + cpp_error (pfile, CPP_DL_PEDWARN, + "decimal float constants are a GCC extension"); + result |= CPP_N_FLOATING; } else @@ -305,14 +403,20 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token) result |= CPP_N_INTEGER; } + syntax_ok: if ((result & CPP_N_IMAGINARY) && CPP_PEDANTIC (pfile)) cpp_error (pfile, CPP_DL_PEDWARN, "imaginary constants are a GCC extension"); + if (radix == 2 && CPP_PEDANTIC (pfile)) + cpp_error (pfile, CPP_DL_PEDWARN, + "binary constants are a GCC extension"); if (radix == 10) result |= CPP_N_DECIMAL; else if (radix == 16) result |= CPP_N_HEX; + else if (radix == 2) + result |= CPP_N_BINARY; else result |= CPP_N_OCTAL; @@ -363,6 +467,11 @@ cpp_interpret_integer (cpp_reader *pfile, const cpp_token *token, base = 16; p += 2; } + else if ((type & CPP_N_RADIX) == CPP_N_BINARY) + { + base = 2; + p += 2; + } /* We can add a digit to numbers strictly less than this without needing the precision and slowness of double integers. */ @@ -418,12 +527,25 @@ static cpp_num append_digit (cpp_num num, int digit, int base, size_t precision) { cpp_num result; - unsigned int shift = 3 + (base == 16); + unsigned int shift; bool overflow; cpp_num_part add_high, add_low; - /* Multiply by 8 or 16. Catching this overflow here means we don't + /* Multiply by 2, 8 or 16. Catching this overflow here means we don't need to worry about add_high overflowing. */ + switch (base) + { + case 2: + shift = 1; + break; + + case 16: + shift = 4; + break; + + default: + shift = 3; + } overflow = !!(num.high >> (PART_PRECISION - shift)); result.high = num.high << shift; result.low = num.low << shift; @@ -441,7 +563,7 @@ append_digit (cpp_num num, int digit, int base, size_t precision) if (add_low + digit < add_low) add_high++; add_low += digit; - + if (result.low + add_low < result.low) add_high++; if (result.high + add_high < result.high) @@ -1527,7 +1649,8 @@ num_div_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op) { if (negate) result = num_negate (result, precision); - result.overflow = num_positive (result, precision) ^ !negate; + result.overflow = (num_positive (result, precision) ^ !negate + && !num_zerop (result)); } return result; diff --git a/libcpp/files.c b/libcpp/files.c index 833421805900..f39ca440e563 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -1,6 +1,7 @@ /* Part of CPP library. File handling. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -26,6 +27,7 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "cpplib.h" #include "internal.h" #include "mkdeps.h" +#include "obstack.h" #include "hashtab.h" #include "md5.h" #include @@ -140,6 +142,7 @@ struct file_hash_entry { struct file_hash_entry *next; cpp_dir *start_dir; + source_location location; union { _cpp_file *file; @@ -147,6 +150,21 @@ struct file_hash_entry } u; }; +/* Number of entries to put in a file_hash_entry pool. */ +#define FILE_HASH_POOL_SIZE 127 + +/* A file hash entry pool. We allocate file_hash_entry object from + one of these. */ +struct file_hash_entry_pool +{ + /* Number of entries used from this pool. */ + unsigned int file_hash_entries_used; + /* Next pool in the chain; used when freeing. */ + struct file_hash_entry_pool *next; + /* The memory pool. */ + struct file_hash_entry pool[FILE_HASH_POOL_SIZE]; +}; + static bool open_file (_cpp_file *file); static bool pch_open_file (cpp_reader *pfile, _cpp_file *file, bool *invalid_pch); @@ -226,6 +244,22 @@ open_file (_cpp_file *file) close (file->fd); file->fd = -1; } +#if defined(_WIN32) && !defined(__CYGWIN__) + else if (errno == EACCES) + { + /* On most UNIX systems, open succeeds on a directory. Above, + we check if we have opened a directory and if so, set errno + to ENOENT. However, on Windows, opening a directory + fails with EACCES. We want to return ENOENT in that + case too. */ + if (stat (file->path, &file->st) == 0 + && S_ISDIR (file->st.st_mode)) + errno = ENOENT; + else + /* The call to stat may have reset errno. */ + errno = EACCES; + } +#endif else if (errno == ENOTDIR) errno = ENOENT; @@ -322,6 +356,16 @@ find_file_in_dir (cpp_reader *pfile, _cpp_file *file, bool *invalid_pch) if (path) { + hashval_t hv = htab_hash_string (path); + char *copy; + void **pp; + + if (htab_find_with_hash (pfile->nonexistent_file_hash, path, hv) != NULL) + { + file->err_no = ENOENT; + return false; + } + file->path = path; if (pch_open_file (pfile, file, invalid_pch)) return true; @@ -335,7 +379,16 @@ find_file_in_dir (cpp_reader *pfile, _cpp_file *file, bool *invalid_pch) return true; } + /* We copy the path name onto an obstack partly so that we don't + leak the memory, but mostly so that we don't fragment the + heap. */ + copy = obstack_copy0 (&pfile->nonexistent_file_ob, path, + strlen (path)); free (path); + pp = htab_find_slot_with_hash (pfile->nonexistent_file_hash, + copy, hv, INSERT); + *pp = copy; + file->path = file->name; } else @@ -396,6 +449,9 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f struct file_hash_entry *entry, **hash_slot; _cpp_file *file; bool invalid_pch = false; + bool saw_bracket_include = false; + bool saw_quote_include = false; + struct cpp_dir *found_in_cache = NULL; /* Ensure we get no confusion between cached files and directories. */ if (start_dir == NULL) @@ -448,13 +504,19 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f /* Only check the cache for the starting location (done above) and the quote and bracket chain heads because there are no other possible starting points for searches. */ - if (file->dir != pfile->bracket_include - && file->dir != pfile->quote_include) + if (file->dir == pfile->bracket_include) + saw_bracket_include = true; + else if (file->dir == pfile->quote_include) + saw_quote_include = true; + else continue; entry = search_cache (*hash_slot, file->dir); if (entry) - break; + { + found_in_cache = file->dir; + break; + } } if (entry) @@ -475,9 +537,35 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f entry = new_file_hash_entry (pfile); entry->next = *hash_slot; entry->start_dir = start_dir; + entry->location = pfile->line_table->highest_location; entry->u.file = file; *hash_slot = entry; + /* If we passed the quote or bracket chain heads, cache them also. + This speeds up processing if there are lots of -I options. */ + if (saw_bracket_include + && pfile->bracket_include != start_dir + && found_in_cache != pfile->bracket_include) + { + entry = new_file_hash_entry (pfile); + entry->next = *hash_slot; + entry->start_dir = pfile->bracket_include; + entry->location = pfile->line_table->highest_location; + entry->u.file = file; + *hash_slot = entry; + } + if (saw_quote_include + && pfile->quote_include != start_dir + && found_in_cache != pfile->quote_include) + { + entry = new_file_hash_entry (pfile); + entry->next = *hash_slot; + entry->start_dir = pfile->quote_include; + entry->location = pfile->line_table->highest_location; + entry->u.file = file; + *hash_slot = entry; + } + return file; } @@ -722,7 +810,8 @@ _cpp_stack_file (cpp_reader *pfile, _cpp_file *file, bool import) /* Stack the buffer. */ buffer = cpp_push_buffer (pfile, file->buffer, file->st.st_size, - CPP_OPTION (pfile, preprocessed)); + CPP_OPTION (pfile, preprocessed) + && !CPP_OPTION (pfile, directives_only)); buffer->file = file; buffer->sysp = sysp; @@ -763,7 +852,8 @@ search_path_head (cpp_reader *pfile, const char *fname, int angle_brackets, /* For #include_next, skip in the search path past the dir in which the current file was found, but if it was found via an absolute path use the normal search logic. */ - if (type == IT_INCLUDE_NEXT && file->dir) + if (type == IT_INCLUDE_NEXT && file->dir + && file->dir != &pfile->no_search_path) dir = file->dir->next; else if (angle_brackets) dir = pfile->bracket_include; @@ -889,6 +979,19 @@ destroy_cpp_file (_cpp_file *file) free (file); } +/* Release all the files allocated by this reader. */ +static void +destroy_all_cpp_files (cpp_reader *pfile) +{ + _cpp_file *iter = pfile->all_files; + while (iter) + { + _cpp_file *next = iter->next_file; + destroy_cpp_file (iter); + iter = next; + } +} + /* A hash of directory names. The directory names are the path names of files which contain a #include "", the included file name is appended to this directories. @@ -923,6 +1026,7 @@ make_cpp_dir (cpp_reader *pfile, const char *dir_name, int sysp) entry = new_file_hash_entry (pfile); entry->next = *hash_slot; entry->start_dir = NULL; + entry->location = pfile->line_table->highest_location; entry->u.dir = dir; *hash_slot = entry; @@ -933,20 +1037,35 @@ make_cpp_dir (cpp_reader *pfile, const char *dir_name, int sysp) static void allocate_file_hash_entries (cpp_reader *pfile) { - pfile->file_hash_entries_used = 0; - pfile->file_hash_entries_allocated = 127; - pfile->file_hash_entries = XNEWVEC (struct file_hash_entry, - pfile->file_hash_entries_allocated); + struct file_hash_entry_pool *pool = XNEW (struct file_hash_entry_pool); + pool->file_hash_entries_used = 0; + pool->next = pfile->file_hash_entries; + pfile->file_hash_entries = pool; } /* Return a new file hash entry. */ static struct file_hash_entry * new_file_hash_entry (cpp_reader *pfile) { - if (pfile->file_hash_entries_used == pfile->file_hash_entries_allocated) + unsigned int idx; + if (pfile->file_hash_entries->file_hash_entries_used == FILE_HASH_POOL_SIZE) allocate_file_hash_entries (pfile); - return &pfile->file_hash_entries[pfile->file_hash_entries_used++]; + idx = pfile->file_hash_entries->file_hash_entries_used++; + return &pfile->file_hash_entries->pool[idx]; +} + +/* Free the file hash entry pools. */ +static void +free_file_hash_entries (cpp_reader *pfile) +{ + struct file_hash_entry_pool *iter = pfile->file_hash_entries; + while (iter) + { + struct file_hash_entry_pool *next = iter->next; + free (iter); + iter = next; + } } /* Returns TRUE if a file FNAME has ever been successfully opened. @@ -966,6 +1085,25 @@ cpp_included (cpp_reader *pfile, const char *fname) return entry != NULL; } +/* Returns TRUE if a file FNAME has ever been successfully opened + before LOCATION. This routine is not intended to correctly handle + filenames aliased by links or redundant . or .. traversals etc. */ +bool +cpp_included_before (cpp_reader *pfile, const char *fname, + source_location location) +{ + struct file_hash_entry *entry; + + entry = (struct file_hash_entry *) + htab_find_with_hash (pfile->file_hash, fname, htab_hash_string (fname)); + + while (entry && (entry->start_dir == NULL || entry->u.file->err_no + || entry->location > location)) + entry = entry->next; + + return entry != NULL; +} + /* Calculate the hash value of a file hash entry P. */ static hashval_t @@ -997,6 +1135,14 @@ file_hash_eq (const void *p, const void *q) return strcmp (hname, fname) == 0; } +/* Compare entries in the nonexistent file hash table. These are just + strings. */ +static int +nonexistent_file_hash_eq (const void *p, const void *q) +{ + return strcmp (p, q) == 0; +} + /* Initialize everything in this source file. */ void _cpp_init_files (cpp_reader *pfile) @@ -1006,6 +1152,12 @@ _cpp_init_files (cpp_reader *pfile) pfile->dir_hash = htab_create_alloc (127, file_hash_hash, file_hash_eq, NULL, xcalloc, free); allocate_file_hash_entries (pfile); + pfile->nonexistent_file_hash = htab_create_alloc (127, htab_hash_string, + nonexistent_file_hash_eq, + NULL, xcalloc, free); + _obstack_begin (&pfile->nonexistent_file_ob, 0, 0, + (void *(*) (long)) xmalloc, + (void (*) (void *)) free); } /* Finalize everything in this source file. */ @@ -1014,6 +1166,21 @@ _cpp_cleanup_files (cpp_reader *pfile) { htab_delete (pfile->file_hash); htab_delete (pfile->dir_hash); + htab_delete (pfile->nonexistent_file_hash); + obstack_free (&pfile->nonexistent_file_ob, 0); + free_file_hash_entries (pfile); + destroy_all_cpp_files (pfile); +} + +/* Make the parser forget about files it has seen. This can be useful + for resetting the parser to start another run. */ +void +cpp_clear_file_cache (cpp_reader *pfile) +{ + _cpp_cleanup_files (pfile); + pfile->file_hash_entries = NULL; + pfile->all_files = NULL; + _cpp_init_files (pfile); } /* Enter a file name in the hash for the sake of cpp_included. */ @@ -1051,12 +1218,19 @@ cpp_change_file (cpp_reader *pfile, enum lc_reason reason, _cpp_do_file_change (pfile, reason, new_name, 1, 0); } +struct report_missing_guard_data +{ + const char **paths; + size_t count; +}; + /* Callback function for htab_traverse. */ static int -report_missing_guard (void **slot, void *b) +report_missing_guard (void **slot, void *d) { struct file_hash_entry *entry = (struct file_hash_entry *) *slot; - int *bannerp = (int *) b; + struct report_missing_guard_data *data + = (struct report_missing_guard_data *) d; /* Skip directories. */ if (entry->start_dir != NULL) @@ -1066,19 +1240,25 @@ report_missing_guard (void **slot, void *b) /* We don't want MI guard advice for the main file. */ if (file->cmacro == NULL && file->stack_count == 1 && !file->main_file) { - if (*bannerp == 0) + if (data->paths == NULL) { - fputs (_("Multiple include guards may be useful for:\n"), - stderr); - *bannerp = 1; + data->paths = XCNEWVEC (const char *, data->count); + data->count = 0; } - fputs (entry->u.file->path, stderr); - putc ('\n', stderr); + data->paths[data->count++] = file->path; } } - return 0; + /* Keep traversing the hash table. */ + return 1; +} + +/* Comparison function for qsort. */ +static int +report_missing_guard_cmp (const void *p1, const void *p2) +{ + return strcmp (*(const char *const *) p1, *(const char *const *) p2); } /* Report on all files that might benefit from a multiple include guard. @@ -1086,9 +1266,29 @@ report_missing_guard (void **slot, void *b) void _cpp_report_missing_guards (cpp_reader *pfile) { - int banner = 0; + struct report_missing_guard_data data; - htab_traverse (pfile->file_hash, report_missing_guard, &banner); + data.paths = NULL; + data.count = htab_elements (pfile->file_hash); + htab_traverse (pfile->file_hash, report_missing_guard, &data); + + if (data.paths != NULL) + { + size_t i; + + /* Sort the paths to avoid outputting them in hash table + order. */ + qsort (data.paths, data.count, sizeof (const char *), + report_missing_guard_cmp); + fputs (_("Multiple include guards may be useful for:\n"), + stderr); + for (i = 0; i < data.count; i++) + { + fputs (data.paths[i], stderr); + putc ('\n', stderr); + } + free (data.paths); + } } /* Locate HEADER, and determine whether it is newer than the current diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 5fb80d9e8209..e205be7cd6c9 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -1,6 +1,6 @@ /* Definitions for CPP library. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005 + 2004, 2005, 2007 Free Software Foundation, Inc. Written by Per Bothner, 1994-95. @@ -155,7 +155,7 @@ enum cpp_ttype /* C language kind, used when calling cpp_create_reader. */ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_STDC89, CLK_STDC94, CLK_STDC99, - CLK_GNUCXX, CLK_CXX98, CLK_ASM}; + CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX0X, CLK_CXX0X, CLK_ASM}; /* Payload of a NUMBER, STRING, CHAR or COMMENT token. */ struct cpp_string GTY(()) @@ -440,6 +440,9 @@ struct cpp_options /* True means error callback should be used for diagnostics. */ bool client_diagnostic; + + /* True disables tokenization outside of preprocessing directives. */ + bool directives_only; }; /* Callback for header lookup for HEADER, which is the name of a @@ -555,7 +558,8 @@ enum builtin_type BT_TIME, /* `__TIME__' */ BT_STDC, /* `__STDC__' */ BT_PRAGMA, /* `_Pragma' operator */ - BT_TIMESTAMP /* `__TIMESTAMP__' */ + BT_TIMESTAMP, /* `__TIMESTAMP__' */ + BT_COUNTER /* `__COUNTER__' */ }; #define CPP_HASHNODE(HNODE) ((cpp_hashnode *) (HNODE)) @@ -619,6 +623,10 @@ struct cpp_hashnode GTY(()) extern cpp_reader *cpp_create_reader (enum c_lang, struct ht *, struct line_maps *); +/* Reset the cpp_reader's line_map. This is only used after reading a + PCH file. */ +extern void cpp_set_line_map (cpp_reader *, struct line_maps *); + /* Call this to change the selected language standard (e.g. because of command line options). */ extern void cpp_set_lang (cpp_reader *, enum c_lang); @@ -643,6 +651,10 @@ extern struct deps *cpp_get_deps (cpp_reader *); too. If there was an error opening the file, it returns NULL. */ extern const char *cpp_read_main_file (cpp_reader *, const char *); +/* Set up built-ins with special behavior. Use cpp_init_builtins() + instead unless your know what you are doing. */ +extern void cpp_init_special_builtins (cpp_reader *); + /* Set up built-ins like __FILE__. */ extern void cpp_init_builtins (cpp_reader *, int); @@ -679,6 +691,8 @@ extern void cpp_register_deferred_pragma (cpp_reader *, const char *, extern int cpp_avoid_paste (cpp_reader *, const cpp_token *, const cpp_token *); extern const cpp_token *cpp_get_token (cpp_reader *); +extern const cpp_token *cpp_get_token_with_location (cpp_reader *, + source_location *); extern const unsigned char *cpp_macro_definition (cpp_reader *, const cpp_hashnode *); extern void _cpp_backup_tokens (cpp_reader *, unsigned int); @@ -704,6 +718,9 @@ extern void cpp_assert (cpp_reader *, const char *); extern void cpp_undef (cpp_reader *, const char *); extern void cpp_unassert (cpp_reader *, const char *); +extern cpp_macro *cpp_push_definition (cpp_reader *, const char *); +extern void cpp_pop_definition (cpp_reader *, const char *, cpp_macro *); + /* Undefine all macros and assertions. */ extern void cpp_undef_all (cpp_reader *); @@ -736,19 +753,28 @@ struct cpp_num #define CPP_N_FLOATING 0x0002 #define CPP_N_WIDTH 0x00F0 -#define CPP_N_SMALL 0x0010 /* int, float. */ -#define CPP_N_MEDIUM 0x0020 /* long, double. */ -#define CPP_N_LARGE 0x0040 /* long long, long double. */ +#define CPP_N_SMALL 0x0010 /* int, float, shrot _Fract/Accum */ +#define CPP_N_MEDIUM 0x0020 /* long, double, long _Fract/_Accum. */ +#define CPP_N_LARGE 0x0040 /* long long, long double, + long long _Fract/Accum. */ + +#define CPP_N_WIDTH_MD 0xF0000 /* machine defined. */ +#define CPP_N_MD_W 0x10000 +#define CPP_N_MD_Q 0x20000 #define CPP_N_RADIX 0x0F00 #define CPP_N_DECIMAL 0x0100 #define CPP_N_HEX 0x0200 #define CPP_N_OCTAL 0x0400 +#define CPP_N_BINARY 0x0800 #define CPP_N_UNSIGNED 0x1000 /* Properties. */ #define CPP_N_IMAGINARY 0x2000 #define CPP_N_DFLOAT 0x4000 +#define CPP_N_FRACT 0x100000 /* Fract types. */ +#define CPP_N_ACCUM 0x200000 /* Accum types. */ + /* Classify a CPP_NUMBER token. The return value is a combination of the flags from the above sets. */ extern unsigned cpp_classify_number (cpp_reader *, const cpp_token *); @@ -827,6 +853,7 @@ extern unsigned char *cpp_quote_string (unsigned char *, const unsigned char *, /* In cppfiles.c */ extern bool cpp_included (cpp_reader *, const char *); +extern bool cpp_included_before (cpp_reader *, const char *, source_location); extern void cpp_make_system_header (cpp_reader *, int, int); extern bool cpp_push_include (cpp_reader *, const char *); extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *); @@ -835,6 +862,7 @@ extern cpp_dir *cpp_get_dir (struct _cpp_file *); extern cpp_buffer *cpp_get_buffer (cpp_reader *); extern struct _cpp_file *cpp_get_file (cpp_buffer *); extern cpp_buffer *cpp_get_prev (cpp_buffer *); +extern void cpp_clear_file_cache (cpp_reader *); /* In cpppch.c */ struct save_macro_data; diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index 7e9ede01a1a5..cddc74d432e6 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -1,5 +1,5 @@ /* Map logical line numbers to (source file, line number) pairs. - Copyright (C) 2001, 2003, 2004 + Copyright (C) 2001, 2003, 2004, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it @@ -23,6 +23,10 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #ifndef LIBCPP_LINE_MAP_H #define LIBCPP_LINE_MAP_H +#ifndef GTY +#define GTY(x) /* nothing */ +#endif + /* Reason for adding a line change with add_line_map (). LC_ENTER is when including a new file, e.g. a #include directive in C. LC_LEAVE is when reaching a file's end. LC_RENAME is when a file @@ -35,6 +39,9 @@ enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME}; and effectively typedef source_location location_t. */ typedef unsigned int source_location; +/* Memory allocation function typedef. Works like xrealloc. */ +typedef void *(*line_map_realloc) (void *, size_t); + /* Physical source file TO_FILE at line TO_LINE at column 0 is represented by the logical START_LOCATION. TO_LINE+L at column C is represented by START_LOCATION+(L*(1<line_table = line_table; +} + /* Free resources used by PFILE. Accessing PFILE after this function returns leads to undefined behavior. Returns the error count. */ void @@ -308,6 +318,7 @@ static const struct builtin builtin_array[] = B("__BASE_FILE__", BT_BASE_FILE), B("__LINE__", BT_SPECLINE), B("__INCLUDE_LEVEL__", BT_INCLUDE_LEVEL), + B("__COUNTER__", BT_COUNTER), /* Keep builtins not used for -traditional-cpp at the end, and update init_builtins() if any more are added. */ B("_Pragma", BT_PRAGMA), @@ -347,11 +358,8 @@ mark_named_operators (cpp_reader *pfile) } } -/* Read the builtins table above and enter them, and language-specific - macros, into the hash table. HOSTED is true if this is a hosted - environment. */ void -cpp_init_builtins (cpp_reader *pfile, int hosted) +cpp_init_special_builtins (cpp_reader *pfile) { const struct builtin *b; size_t n = ARRAY_SIZE (builtin_array); @@ -360,10 +368,7 @@ cpp_init_builtins (cpp_reader *pfile, int hosted) n -= 2; else if (! CPP_OPTION (pfile, stdc_0_in_system_headers) || CPP_OPTION (pfile, std)) - { - n--; - _cpp_define_builtin (pfile, "__STDC__ 1"); - } + n--; for (b = builtin_array; b < builtin_array + n; b++) { @@ -372,6 +377,20 @@ cpp_init_builtins (cpp_reader *pfile, int hosted) hp->flags |= NODE_BUILTIN | NODE_WARN; hp->value.builtin = (enum builtin_type) b->value; } +} + +/* Read the builtins table above and enter them, and language-specific + macros, into the hash table. HOSTED is true if this is a hosted + environment. */ +void +cpp_init_builtins (cpp_reader *pfile, int hosted) +{ + cpp_init_special_builtins (pfile); + + if (!CPP_OPTION (pfile, traditional) + && (! CPP_OPTION (pfile, stdc_0_in_system_headers) + || CPP_OPTION (pfile, std))) + _cpp_define_builtin (pfile, "__STDC__ 1"); if (CPP_OPTION (pfile, cplusplus)) _cpp_define_builtin (pfile, "__cplusplus 1"); @@ -619,7 +638,8 @@ post_options (cpp_reader *pfile) preprocessed text. Read preprocesed source in ISO mode. */ if (CPP_OPTION (pfile, preprocessed)) { - pfile->state.prevent_expansion = 1; + if (!CPP_OPTION (pfile, directives_only)) + pfile->state.prevent_expansion = 1; CPP_OPTION (pfile, traditional) = 0; } diff --git a/libcpp/internal.h b/libcpp/internal.h index 857bfe1d8c58..6110e5cdb08f 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -1,5 +1,5 @@ /* Part of CPP library. - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it @@ -339,6 +339,14 @@ struct cpp_reader /* Token generated while handling a directive, if any. */ cpp_token directive_result; + /* When expanding a macro at top-level, this is the location of the + macro invocation. */ + source_location invocation_location; + + /* True if this call to cpp_get_token should consider setting + invocation_location. */ + bool set_invocation_location; + /* Search paths for include files. */ struct cpp_dir *quote_include; /* "" */ struct cpp_dir *bracket_include; /* <> */ @@ -352,8 +360,11 @@ struct cpp_reader /* File and directory hash table. */ struct htab *file_hash; struct htab *dir_hash; - struct file_hash_entry *file_hash_entries; - unsigned int file_hash_entries_allocated, file_hash_entries_used; + struct file_hash_entry_pool *file_hash_entries; + + /* Negative path lookup hash table. */ + struct htab *nonexistent_file_hash; + struct obstack nonexistent_file_ob; /* Nonzero means don't look for #include "foo" the source-file directory. */ @@ -448,6 +459,9 @@ struct cpp_reader /* A saved list of the defined macros, for dependency checking of precompiled headers. */ struct cpp_savedstate *savedstate; + + /* Next value of __COUNTER__ macro. */ + unsigned int counter; }; /* Character classes. Based on the more primitive macros in safe-ctype.h. @@ -488,6 +502,13 @@ cpp_in_system_header (cpp_reader *pfile) #define CPP_PEDANTIC(PF) CPP_OPTION (PF, pedantic) #define CPP_WTRADITIONAL(PF) CPP_OPTION (PF, warn_traditional) +static inline int cpp_in_primary_file (cpp_reader *); +static inline int +cpp_in_primary_file (cpp_reader *pfile) +{ + return pfile->line_table->depth == 1; +} + /* In errors.c */ extern int _cpp_begin_message (cpp_reader *, int, source_location, unsigned int); @@ -554,13 +575,24 @@ extern int _cpp_handle_directive (cpp_reader *, int); extern void _cpp_define_builtin (cpp_reader *, const char *); extern char ** _cpp_save_pragma_names (cpp_reader *); extern void _cpp_restore_pragma_names (cpp_reader *, char **); -extern void _cpp_do__Pragma (cpp_reader *); +extern int _cpp_do__Pragma (cpp_reader *); extern void _cpp_init_directives (cpp_reader *); extern void _cpp_init_internal_pragmas (cpp_reader *); extern void _cpp_do_file_change (cpp_reader *, enum lc_reason, const char *, unsigned int, unsigned int); extern void _cpp_pop_buffer (cpp_reader *); +/* In directives.c */ +struct _cpp_dir_only_callbacks +{ + /* Called to print a block of lines. */ + void (*print_lines) (int, const void *, size_t); + void (*maybe_print_line) (source_location); +}; + +extern void _cpp_preprocess_dir_only (cpp_reader *, + const struct _cpp_dir_only_callbacks *); + /* In traditional.c. */ extern bool _cpp_scan_out_logical_line (cpp_reader *, cpp_macro *); extern bool _cpp_read_logical_line_trad (cpp_reader *); diff --git a/libcpp/lex.c b/libcpp/lex.c index df09bd6d3d68..ef59f900c64a 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -111,31 +111,39 @@ _cpp_clean_line (cpp_reader *pfile) if (!buffer->from_stage3) { + const uchar *pbackslash = NULL; + /* Short circuit for the common case of an un-escaped line with no trigraphs. The primary win here is by not writing any data back to memory until we have to. */ for (;;) { c = *++s; - if (c == '\n' || c == '\r') + if (__builtin_expect (c == '\n', false) + || __builtin_expect (c == '\r', false)) { d = (uchar *) s; - if (s == buffer->rlimit) + if (__builtin_expect (s == buffer->rlimit, false)) goto done; /* DOS line ending? */ - if (c == '\r' && s[1] == '\n') - s++; + if (__builtin_expect (c == '\r', false) + && s[1] == '\n') + { + s++; + if (s == buffer->rlimit) + goto done; + } - if (s == buffer->rlimit) + if (__builtin_expect (pbackslash == NULL, true)) goto done; - /* check for escaped newline */ + /* Check for escaped newline. */ p = d; - while (p != buffer->next_line && is_nvspace (p[-1])) + while (is_nvspace (p[-1])) p--; - if (p == buffer->next_line || p[-1] != '\\') + if (p - 1 != pbackslash) goto done; /* Have an escaped newline; process it and proceed to @@ -145,7 +153,11 @@ _cpp_clean_line (cpp_reader *pfile) buffer->next_line = p - 1; break; } - if (c == '?' && s[1] == '?' && _cpp_trigraph_map[s[2]]) + if (__builtin_expect (c == '\\', false)) + pbackslash = s; + else if (__builtin_expect (c == '?', false) + && __builtin_expect (s[1] == '?', false) + && _cpp_trigraph_map[s[2]]) { /* Have a trigraph. We may or may not have to convert it. Add a line note regardless, for -Wtrigraphs. */ @@ -754,6 +766,11 @@ _cpp_lex_token (cpp_reader *pfile) pfile->cur_run = next_tokenrun (pfile->cur_run); pfile->cur_token = pfile->cur_run->base; } + /* We assume that the current token is somewhere in the current + run. */ + if (pfile->cur_token < pfile->cur_run->base + || pfile->cur_token >= pfile->cur_run->limit) + abort (); if (pfile->lookaheads) { @@ -835,11 +852,8 @@ _cpp_get_fresh_line (cpp_reader *pfile) && buffer->next_line > buffer->rlimit && !buffer->from_stage3) { - /* Only warn once. */ + /* Clip to buffer size. */ buffer->next_line = buffer->rlimit; - cpp_error_with_line (pfile, CPP_DL_PEDWARN, pfile->line_table->highest_line, - CPP_BUF_COLUMN (buffer, buffer->cur), - "no newline at end of file"); } return_at_eof = buffer->return_at_eof; diff --git a/libcpp/line-map.c b/libcpp/line-map.c index c95eacde7e3c..c13a82dcafc9 100644 --- a/libcpp/line-map.c +++ b/libcpp/line-map.c @@ -1,5 +1,5 @@ /* Map logical line numbers to (source file, line number) pairs. - Copyright (C) 2001, 2003, 2004 + Copyright (C) 2001, 2003, 2004, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it @@ -96,8 +96,15 @@ linemap_add (struct line_maps *set, enum lc_reason reason, if (set->used == set->allocated) { + line_map_realloc reallocator + = set->reallocator ? set->reallocator : xrealloc; set->allocated = 2 * set->allocated + 256; - set->maps = XRESIZEVEC (struct line_map, set->maps, set->allocated); + set->maps + = (struct line_map *) (*reallocator) (set->maps, + set->allocated + * sizeof (struct line_map)); + memset (&set->maps[set->used], 0, ((set->allocated - set->used) + * sizeof (struct line_map))); } map = &set->maps[set->used]; diff --git a/libcpp/macro.c b/libcpp/macro.c index be50c111e32e..fd624b10110e 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -1,6 +1,7 @@ /* Part of CPP library. (Macro and #define handling.) Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006, 2007, 2008 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -40,11 +41,13 @@ struct macro_arg /* Macro expansion. */ -static int enter_macro_context (cpp_reader *, cpp_hashnode *); +static int enter_macro_context (cpp_reader *, cpp_hashnode *, + const cpp_token *); static int builtin_macro (cpp_reader *, cpp_hashnode *); static void push_ptoken_context (cpp_reader *, cpp_hashnode *, _cpp_buff *, const cpp_token **, unsigned int); -static _cpp_buff *collect_args (cpp_reader *, const cpp_hashnode *); +static _cpp_buff *collect_args (cpp_reader *, const cpp_hashnode *, + _cpp_buff **); static cpp_context *next_context (cpp_reader *); static const cpp_token *padding_token (cpp_reader *, const cpp_token *); static void expand_arg (cpp_reader *, macro_arg *); @@ -54,7 +57,8 @@ static void paste_all_tokens (cpp_reader *, const cpp_token *); static bool paste_tokens (cpp_reader *, const cpp_token **, const cpp_token *); static void replace_args (cpp_reader *, cpp_hashnode *, cpp_macro *, macro_arg *); -static _cpp_buff *funlike_invocation_p (cpp_reader *, cpp_hashnode *); +static _cpp_buff *funlike_invocation_p (cpp_reader *, cpp_hashnode *, + _cpp_buff **); static bool create_iso_definition (cpp_reader *, cpp_macro *); /* #define directive parsing and handling. */ @@ -262,6 +266,13 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) else result = pfile->time; break; + + case BT_COUNTER: + if (CPP_OPTION (pfile, directives_only) && pfile->state.in_directive) + cpp_error (pfile, CPP_DL_ERROR, + "__COUNTER__ expanded inside directive with -fdirectives-only"); + number = pfile->counter++; + break; } if (result == NULL) @@ -292,8 +303,7 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node) if (pfile->state.in_directive) return 0; - _cpp_do__Pragma (pfile); - return 1; + return _cpp_do__Pragma (pfile); } buf = _cpp_builtin_macro_text (pfile, node); @@ -431,21 +441,22 @@ static bool paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs) { unsigned char *buf, *end, *lhsend; - const cpp_token *lhs; + cpp_token *lhs; unsigned int len; - lhs = *plhs; - len = cpp_token_len (lhs) + cpp_token_len (rhs) + 1; + len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 1; buf = (unsigned char *) alloca (len); - end = lhsend = cpp_spell_token (pfile, lhs, buf, false); + end = lhsend = cpp_spell_token (pfile, *plhs, buf, false); /* Avoid comment headers, since they are still processed in stage 3. It is simpler to insert a space here, rather than modifying the lexer to ignore comments in some circumstances. Simply returning false doesn't work, since we want to clear the PASTE_LEFT flag. */ - if (lhs->type == CPP_DIV && rhs->type != CPP_EQ) + if ((*plhs)->type == CPP_DIV && rhs->type != CPP_EQ) *end++ = ' '; - end = cpp_spell_token (pfile, rhs, end, false); + /* In one obscure case we might see padding here. */ + if (rhs->type != CPP_PADDING) + end = cpp_spell_token (pfile, rhs, end, false); *end = '\n'; cpp_push_buffer (pfile, buf, end - buf, /* from_stage3 */ true); @@ -453,13 +464,22 @@ paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs) /* Set pfile->cur_token as required by _cpp_lex_direct. */ pfile->cur_token = _cpp_temp_token (pfile); - *plhs = _cpp_lex_direct (pfile); + lhs = _cpp_lex_direct (pfile); if (pfile->buffer->cur != pfile->buffer->rlimit) { + source_location saved_loc = lhs->src_loc; + _cpp_pop_buffer (pfile); _cpp_backup_tokens (pfile, 1); *lhsend = '\0'; + /* We have to remove the PASTE_LEFT flag from the old lhs, but + we want to keep the new location. */ + *lhs = **plhs; + *plhs = lhs; + lhs->src_loc = saved_loc; + lhs->flags &= ~PASTE_LEFT; + /* Mandatory error for all apart from assembler. */ if (CPP_OPTION (pfile, lang) != CLK_ASM) cpp_error (pfile, CPP_DL_ERROR, @@ -468,6 +488,7 @@ paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs) return false; } + *plhs = lhs; _cpp_pop_buffer (pfile); return true; } @@ -498,8 +519,10 @@ paste_all_tokens (cpp_reader *pfile, const cpp_token *lhs) rhs = *FIRST (context).ptoken++; if (rhs->type == CPP_PADDING) - abort (); - + { + if (rhs->flags & PASTE_LEFT) + abort (); + } if (!paste_tokens (pfile, &lhs, rhs)) break; } @@ -555,9 +578,12 @@ _cpp_arguments_ok (cpp_reader *pfile, cpp_macro *macro, const cpp_hashnode *node invocation. Assumes the opening parenthesis has been processed. If there is an error, emits an appropriate diagnostic and returns NULL. Each argument is terminated by a CPP_EOF token, for the - future benefit of expand_arg(). */ + future benefit of expand_arg(). If there are any deferred + #pragma directives among macro arguments, store pointers to the + CPP_PRAGMA ... CPP_PRAGMA_EOL tokens into *PRAGMA_BUFF buffer. */ static _cpp_buff * -collect_args (cpp_reader *pfile, const cpp_hashnode *node) +collect_args (cpp_reader *pfile, const cpp_hashnode *node, + _cpp_buff **pragma_buff) { _cpp_buff *buff, *base_buff; cpp_macro *macro; @@ -625,6 +651,51 @@ collect_args (cpp_reader *pfile, const cpp_hashnode *node) else if (token->type == CPP_EOF || (token->type == CPP_HASH && token->flags & BOL)) break; + else if (token->type == CPP_PRAGMA) + { + cpp_token *newtok = _cpp_temp_token (pfile); + + /* CPP_PRAGMA token lives in directive_result, which will + be overwritten on the next directive. */ + *newtok = *token; + token = newtok; + do + { + if (*pragma_buff == NULL + || BUFF_ROOM (*pragma_buff) < sizeof (cpp_token *)) + { + _cpp_buff *next; + if (*pragma_buff == NULL) + *pragma_buff + = _cpp_get_buff (pfile, 32 * sizeof (cpp_token *)); + else + { + next = *pragma_buff; + *pragma_buff + = _cpp_get_buff (pfile, + (BUFF_FRONT (*pragma_buff) + - (*pragma_buff)->base) * 2); + (*pragma_buff)->next = next; + } + } + *(const cpp_token **) BUFF_FRONT (*pragma_buff) = token; + BUFF_FRONT (*pragma_buff) += sizeof (cpp_token *); + if (token->type == CPP_PRAGMA_EOL) + break; + token = cpp_get_token (pfile); + } + while (token->type != CPP_EOF); + + /* In deferred pragmas parsing_args and prevent_expansion + had been changed, reset it. */ + pfile->state.parsing_args = 2; + pfile->state.prevent_expansion = 1; + + if (token->type == CPP_EOF) + break; + else + continue; + } arg->first[ntokens++] = token; } @@ -689,9 +760,11 @@ collect_args (cpp_reader *pfile, const cpp_hashnode *node) /* Search for an opening parenthesis to the macro of NODE, in such a way that, if none is found, we don't lose the information in any intervening padding tokens. If we find the parenthesis, collect - the arguments and return the buffer containing them. */ + the arguments and return the buffer containing them. PRAGMA_BUFF + argument is the same as in collect_args. */ static _cpp_buff * -funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node) +funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node, + _cpp_buff **pragma_buff) { const cpp_token *token, *padding = NULL; @@ -708,7 +781,7 @@ funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node) if (token->type == CPP_OPEN_PAREN) { pfile->state.parsing_args = 2; - return collect_args (pfile, node); + return collect_args (pfile, node, pragma_buff); } /* CPP_EOF can be the end of macro arguments, or the end of the @@ -729,9 +802,13 @@ funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node) /* Push the context of a macro with hash entry NODE onto the context stack. If we can successfully expand the macro, we push a context containing its yet-to-be-rescanned replacement list and return one. - Otherwise, we don't push a context and return zero. */ + If there were additionally any unexpanded deferred #pragma directives + among macro arguments, push another context containing the + pragma tokens before the yet-to-be-rescanned replacement list + and return two. Otherwise, we don't push a context and return zero. */ static int -enter_macro_context (cpp_reader *pfile, cpp_hashnode *node) +enter_macro_context (cpp_reader *pfile, cpp_hashnode *node, + const cpp_token *result) { /* The presence of a macro invalidates a file's controlling macro. */ pfile->mi_valid = false; @@ -742,6 +819,7 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node) if (! (node->flags & NODE_BUILTIN)) { cpp_macro *macro = node->value.macro; + _cpp_buff *pragma_buff = NULL; if (macro->fun_like) { @@ -750,7 +828,7 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node) pfile->state.prevent_expansion++; pfile->keep_tokens++; pfile->state.parsing_args = 1; - buff = funlike_invocation_p (pfile, node); + buff = funlike_invocation_p (pfile, node, &pragma_buff); pfile->state.parsing_args = 0; pfile->keep_tokens--; pfile->state.prevent_expansion--; @@ -762,6 +840,9 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node) "function-like macro \"%s\" must be used with arguments in traditional C", NODE_NAME (node)); + if (pragma_buff) + _cpp_release_buff (pfile, pragma_buff); + return 0; } @@ -778,6 +859,25 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node) if (macro->paramc == 0) _cpp_push_token_context (pfile, node, macro->exp.tokens, macro->count); + if (pragma_buff) + { + if (!pfile->state.in_directive) + _cpp_push_token_context (pfile, NULL, + padding_token (pfile, result), 1); + do + { + _cpp_buff *tail = pragma_buff->next; + pragma_buff->next = NULL; + push_ptoken_context (pfile, NULL, pragma_buff, + (const cpp_token **) pragma_buff->base, + ((const cpp_token **) BUFF_FRONT (pragma_buff) + - (const cpp_token **) pragma_buff->base)); + pragma_buff = tail; + } + while (pragma_buff != NULL); + return 2; + } + return 1; } @@ -1077,6 +1177,8 @@ const cpp_token * cpp_get_token (cpp_reader *pfile) { const cpp_token *result; + bool can_set = pfile->set_invocation_location; + pfile->set_invocation_location = false; for (;;) { @@ -1122,10 +1224,17 @@ cpp_get_token (cpp_reader *pfile) if (!(node->flags & NODE_DISABLED)) { - if (!pfile->state.prevent_expansion - && enter_macro_context (pfile, node)) + int ret; + /* If not in a macro context, and we're going to start an + expansion, record the location. */ + if (can_set && !context->macro) + pfile->invocation_location = result->src_loc; + if (pfile->state.prevent_expansion) + break; + ret = enter_macro_context (pfile, node, result); + if (ret) { - if (pfile->state.in_directive) + if (pfile->state.in_directive || ret == 2) continue; return padding_token (pfile, result); } @@ -1147,6 +1256,27 @@ cpp_get_token (cpp_reader *pfile) return result; } +/* Like cpp_get_token, but also returns a location separate from the + one provided by the returned token. LOC is an out parameter; *LOC + is set to the location "as expected by the user". This matters + when a token results from macro expansion -- the token's location + will indicate where the macro is defined, but *LOC will be the + location of the start of the expansion. */ +const cpp_token * +cpp_get_token_with_location (cpp_reader *pfile, source_location *loc) +{ + const cpp_token *result; + + pfile->set_invocation_location = true; + result = cpp_get_token (pfile); + if (pfile->context->macro) + *loc = pfile->invocation_location; + else + *loc = result->src_loc; + + return result; +} + /* Returns true if we're expanding an object-like macro that was defined in a system header. Just checks the macro at the top of the stack. Used for diagnostic suppression. */ @@ -1398,10 +1528,12 @@ alloc_expansion_token (cpp_reader *pfile, cpp_macro *macro) static cpp_token * lex_expansion_token (cpp_reader *pfile, cpp_macro *macro) { - cpp_token *token; + cpp_token *token, *saved_cur_token; + saved_cur_token = pfile->cur_token; pfile->cur_token = alloc_expansion_token (pfile, macro); token = _cpp_lex_direct (pfile); + pfile->cur_token = saved_cur_token; /* Is this a parameter? */ if (token->type == CPP_NAME @@ -1422,6 +1554,9 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro) { cpp_token *token; const cpp_token *ctoken; + bool following_paste_op = false; + const char *paste_op_error_msg = + N_("'##' cannot appear at either end of a macro expansion"); /* Get the first token of the expansion (or the '(' of a function-like macro). */ @@ -1515,26 +1650,34 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro) } if (token->type == CPP_EOF) - break; + { + /* Paste operator constraint 6.10.3.3.1: + Token-paste ##, can appear in both object-like and + function-like macros, but not at the end. */ + if (following_paste_op) + { + cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); + return false; + } + break; + } /* Paste operator constraint 6.10.3.3.1. */ if (token->type == CPP_PASTE) { /* Token-paste ##, can appear in both object-like and - function-like macros, but not at the ends. */ - if (--macro->count > 0) - token = lex_expansion_token (pfile, macro); - - if (macro->count == 0 || token->type == CPP_EOF) + function-like macros, but not at the beginning. */ + if (macro->count == 1) { - cpp_error (pfile, CPP_DL_ERROR, - "'##' cannot appear at either end of a macro expansion"); + cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); return false; } + --macro->count; token[-1].flags |= PASTE_LEFT; } + following_paste_op = (token->type == CPP_PASTE); token = lex_expansion_token (pfile, macro); } @@ -1590,18 +1733,12 @@ _cpp_create_definition (cpp_reader *pfile, cpp_hashnode *node) ok = _cpp_create_trad_definition (pfile, macro); else { - cpp_token *saved_cur_token = pfile->cur_token; - ok = create_iso_definition (pfile, macro); - /* Restore lexer position because of games lex_expansion_token() - plays lexing the macro. We set the type for SEEN_EOL() in - directives.c. + /* We set the type for SEEN_EOL() in directives.c. Longer term we should lex the whole line before coming here, and just copy the expansion. */ - saved_cur_token[-1].type = pfile->cur_token[-1].type; - pfile->cur_token = saved_cur_token; /* Stop the lexer accepting __VA_ARGS__. */ pfile->state.va_args_ok = 0; @@ -1641,7 +1778,14 @@ _cpp_create_definition (cpp_reader *pfile, cpp_hashnode *node) /* Enter definition in hash table. */ node->type = NT_MACRO; node->value.macro = macro; - if (! ustrncmp (NODE_NAME (node), DSC ("__STDC_"))) + if (! ustrncmp (NODE_NAME (node), DSC ("__STDC_")) + && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_FORMAT_MACROS") + /* __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are mentioned + in the C standard, as something that one must use in C++. + However DR#593 indicates that these aren't actually mentioned + in the C++ standard. We special-case them anyway. */ + && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_LIMIT_MACROS") + && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_CONSTANT_MACROS")) node->flags |= NODE_WARN; return ok; diff --git a/libcpp/pch.c b/libcpp/pch.c index cc23b4ee9087..bf7b9bea36d9 100644 --- a/libcpp/pch.c +++ b/libcpp/pch.c @@ -35,14 +35,14 @@ static int write_defs (cpp_reader *, cpp_hashnode *, void *); static int save_macros (cpp_reader *, cpp_hashnode *, void *); /* This structure represents a macro definition on disk. */ -struct macrodef_struct +struct macrodef_struct { unsigned int definition_length; unsigned short name_length; unsigned short flags; }; -/* This is how we write out a macro definition. +/* This is how we write out a macro definition. Suitable for being called by cpp_forall_identifiers. */ static int @@ -54,7 +54,7 @@ write_macdef (cpp_reader *pfile, cpp_hashnode *hn, void *file_p) case NT_VOID: if (! (hn->flags & NODE_POISONED)) return 1; - + case NT_MACRO: if ((hn->flags & NODE_BUILTIN)) return 1; @@ -76,7 +76,7 @@ write_macdef (cpp_reader *pfile, cpp_hashnode *hn, void *file_p) defn = NODE_NAME (hn); s.definition_length = s.name_length; } - + if (fwrite (&s, sizeof (s), 1, f) != 1 || fwrite (defn, 1, s.definition_length, f) != s.definition_length) { @@ -86,7 +86,7 @@ write_macdef (cpp_reader *pfile, cpp_hashnode *hn, void *file_p) } } return 1; - + case NT_ASSERTION: /* Not currently implemented. */ return 1; @@ -123,7 +123,7 @@ static int save_idents (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p) { struct cpp_savedstate *const ss = (struct cpp_savedstate *)ss_p; - + if (hn->type != NT_VOID) { struct cpp_string news; @@ -136,7 +136,7 @@ save_idents (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p) { struct cpp_string *sp; unsigned char *text; - + sp = XNEW (struct cpp_string); *slot = sp; @@ -157,7 +157,7 @@ hashmem (const void *p_p, size_t sz) const unsigned char *p = (const unsigned char *)p_p; size_t i; hashval_t h; - + h = 0; for (i = 0; i < sz; i++) h = h * 67 - (*p++ - 113); @@ -194,10 +194,10 @@ cpp_save_state (cpp_reader *r, FILE *f) { /* Save the list of non-void identifiers for the dependency checking. */ r->savedstate = XNEW (struct cpp_savedstate); - r->savedstate->definedhash = htab_create (100, cpp_string_hash, + r->savedstate->definedhash = htab_create (100, cpp_string_hash, cpp_string_eq, NULL); cpp_forall_identifiers (r, save_idents, r->savedstate); - + /* Write out the list of defined identifiers. */ cpp_forall_identifiers (r, write_macdef, f); @@ -210,20 +210,20 @@ static int count_defs (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p) { struct cpp_savedstate *const ss = (struct cpp_savedstate *)ss_p; - + switch (hn->type) { case NT_MACRO: if (hn->flags & NODE_BUILTIN) return 1; - + /* else fall through. */ case NT_VOID: { struct cpp_string news; void **slot; - + news.len = NODE_LEN (hn); news.text = NODE_NAME (hn); slot = (void **) htab_find (ss->definedhash, &news); @@ -249,20 +249,20 @@ static int write_defs (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p) { struct cpp_savedstate *const ss = (struct cpp_savedstate *)ss_p; - + switch (hn->type) { case NT_MACRO: if (hn->flags & NODE_BUILTIN) return 1; - + /* else fall through. */ case NT_VOID: { struct cpp_string news; void **slot; - + news.len = NODE_LEN (hn); news.text = NODE_NAME (hn); slot = (void **) htab_find (ss->definedhash, &news); @@ -303,7 +303,7 @@ cpp_write_pch_deps (cpp_reader *r, FILE *f) struct cpp_savedstate *const ss = r->savedstate; unsigned char *definedstrs; size_t i; - + /* Collect the list of identifiers which have been seen and weren't defined to anything previously. */ ss->hashsize = 0; @@ -337,6 +337,14 @@ cpp_write_pch_deps (cpp_reader *r, FILE *f) /* Free the saved state. */ free (ss); r->savedstate = NULL; + + /* Save the next value of __COUNTER__. */ + if (fwrite (&r->counter, sizeof (r->counter), 1, f) != 1) + { + cpp_errno (r, CPP_DL_ERROR, "while writing precompiled header"); + return -1; + } + return 0; } @@ -361,6 +369,15 @@ cpp_write_pch_state (cpp_reader *r, FILE *f) return -1; } + /* Save the next __COUNTER__ value. When we include a precompiled header, + we need to start at the offset we would have if the header had been + included normally. */ + if (fwrite (&r->counter, sizeof (r->counter), 1, f) != 1) + { + cpp_errno (r, CPP_DL_ERROR, "while writing precompiled header"); + return -1; + } + return 0; } @@ -404,7 +421,7 @@ collect_ht_nodes (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, with the preprocessor's current definitions. It will be consistent when: - - anything that was defined just before the PCH was generated + - anything that was defined just before the PCH was generated is defined the same way now; and - anything that was not defined then, but is defined now, was not used by the PCH. @@ -423,17 +440,18 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd) struct ht_node_list nl = { 0, 0, 0 }; unsigned char *first, *last; unsigned int i; - + unsigned int counter; + /* Read in the list of identifiers that must be defined Check that they are defined in the same way. */ for (;;) { cpp_hashnode *h; const unsigned char *newdefn; - + if (read (fd, &m, sizeof (m)) != sizeof (m)) goto error; - + if (m.name_length == 0) break; @@ -453,10 +471,10 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd) namebuf = XNEWVEC (unsigned char, namebufsz); } - if ((size_t)read (fd, namebuf, m.definition_length) + if ((size_t)read (fd, namebuf, m.definition_length) != m.definition_length) goto error; - + h = cpp_lookup (r, namebuf, m.name_length); if (m.flags & NODE_POISONED || h->type != NT_MACRO @@ -470,7 +488,7 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd) } newdefn = cpp_macro_definition (r, h); - + if (m.definition_length != ustrlen (newdefn) || memcmp (namebuf, newdefn, m.definition_length) != 0) { @@ -498,17 +516,17 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd) nl.defs = XNEWVEC (cpp_hashnode *, nl.asize); cpp_forall_identifiers (r, &collect_ht_nodes, &nl); qsort (nl.defs, nl.n_defs, sizeof (cpp_hashnode *), &comp_hashnodes); - + /* Loop through nl.defs and undeftab, both of which are sorted lists. There should be no matches. */ first = undeftab; last = undeftab + m.definition_length; i = 0; - + while (first < last && i < nl.n_defs) { int cmp = ustrcmp (first, NODE_NAME (nl.defs[i])); - + if (cmp < 0) first += ustrlen (first) + 1; else if (cmp > 0) @@ -516,15 +534,31 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd) else { if (CPP_OPTION (r, warn_invalid_pch)) - cpp_error (r, CPP_DL_WARNING_SYSHDR, + cpp_error (r, CPP_DL_WARNING_SYSHDR, "%s: not used because `%s' is defined", name, first); goto fail; } } - + free(nl.defs); + nl.defs = NULL; free (undeftab); + undeftab = NULL; + + /* Read in the next value of __COUNTER__. + Check that (a) __COUNTER__ was not used in the pch or (b) __COUNTER__ + has not been used in this translation unit. */ + if (read (fd, &counter, sizeof (counter)) != sizeof (counter)) + goto error; + if (counter && r->counter) + { + if (CPP_OPTION (r, warn_invalid_pch)) + cpp_error (r, CPP_DL_WARNING_SYSHDR, + "%s: not used because `__COUNTER__' is invalid", + name); + goto fail; + } /* We win! */ return 0; @@ -545,7 +579,7 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd) /* Save all the existing macros. */ -struct save_macro_data +struct save_macro_data { uchar **defns; size_t count; @@ -567,7 +601,7 @@ struct save_macro_data file were not saved in this way, but this is not done (yet), except for builtins, and for #assert by default. */ -static int +static int save_macros (cpp_reader *r, cpp_hashnode *h, void *data_p) { struct save_macro_data *data = (struct save_macro_data *)data_p; @@ -577,9 +611,9 @@ save_macros (cpp_reader *r, cpp_hashnode *h, void *data_p) if (data->count == data->array_size) { data->array_size *= 2; - data->defns = XRESIZEVEC (uchar *, data->defns, (data->array_size)); + data->defns = XRESIZEVEC (uchar *, data->defns, (data->array_size)); } - + switch (h->type) { case NT_ASSERTION: @@ -596,7 +630,7 @@ save_macros (cpp_reader *r, cpp_hashnode *h, void *data_p) data->defns[data->count][defnlen] = '\n'; } break; - + default: abort (); } @@ -612,7 +646,7 @@ void cpp_prepare_state (cpp_reader *r, struct save_macro_data **data) { struct save_macro_data *d = XNEW (struct save_macro_data); - + d->array_size = 512; d->defns = XNEWVEC (uchar *, d->array_size); d->count = 0; @@ -622,7 +656,7 @@ cpp_prepare_state (cpp_reader *r, struct save_macro_data **data) } /* Given a precompiled header that was previously determined to be valid, - apply all its definitions (and undefinitions) to the current state. + apply all its definitions (and undefinitions) to the current state. DEPNAME is passed to deps_restore. */ int @@ -631,8 +665,9 @@ cpp_read_state (cpp_reader *r, const char *name, FILE *f, { size_t i; struct lexer_state old_state; + unsigned int counter; - /* Restore spec_nodes, which will be full of references to the old + /* Restore spec_nodes, which will be full of references to the old hashtable entries and so will now be invalid. */ { struct spec_nodes *s = &r->spec_nodes; @@ -690,8 +725,14 @@ cpp_read_state (cpp_reader *r, const char *name, FILE *f, if (! _cpp_read_file_entries (r, f)) goto error; + if (fread (&counter, sizeof (counter), 1, f) != 1) + goto error; + + if (!r->counter) + r->counter = counter; + return 0; - + error: cpp_errno (r, CPP_DL_ERROR, "while reading precompiled header"); return -1; diff --git a/libcpp/traditional.c b/libcpp/traditional.c index a543348d9e69..6c4dda1a9f32 100644 --- a/libcpp/traditional.c +++ b/libcpp/traditional.c @@ -1,5 +1,5 @@ /* CPP Library - traditional lexical analysis and macro expansion. - Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Contributed by Neil Booth, May 2002 This program is free software; you can redistribute it and/or modify it @@ -353,6 +353,11 @@ _cpp_scan_out_logical_line (cpp_reader *pfile, cpp_macro *macro) const uchar *start_of_input_line; fmacro.buff = NULL; + fmacro.args = NULL; + fmacro.node = NULL; + fmacro.offset = 0; + fmacro.line = 0; + fmacro.argc = 0; quote = 0; header_ok = pfile->state.angled_headers; @@ -827,8 +832,11 @@ replace_args_and_push (cpp_reader *pfile, struct fun_macro *fmacro) uchar *p; _cpp_buff *buff; size_t len = 0; + int cxtquote = 0; - /* Calculate the length of the argument-replaced text. */ + /* Get an estimate of the length of the argument-replaced text. + This is a worst case estimate, assuming that every replacement + text character needs quoting. */ for (exp = macro->exp.text;;) { struct block *b = (struct block *) exp; @@ -836,8 +844,8 @@ replace_args_and_push (cpp_reader *pfile, struct fun_macro *fmacro) len += b->text_len; if (b->arg_index == 0) break; - len += (fmacro->args[b->arg_index] - - fmacro->args[b->arg_index - 1] - 1); + len += 2 * (fmacro->args[b->arg_index] + - fmacro->args[b->arg_index - 1] - 1); exp += BLOCK_LEN (b->text_len); } @@ -845,21 +853,69 @@ replace_args_and_push (cpp_reader *pfile, struct fun_macro *fmacro) buff = _cpp_get_buff (pfile, len + 1); /* Copy the expansion and replace arguments. */ + /* Accumulate actual length, including quoting as necessary */ p = BUFF_FRONT (buff); + len = 0; for (exp = macro->exp.text;;) { struct block *b = (struct block *) exp; size_t arglen; + int argquote; + uchar *base; + uchar *in; - memcpy (p, b->text, b->text_len); - p += b->text_len; + len += b->text_len; + /* Copy the non-argument text literally, keeping + track of whether matching quotes have been seen. */ + for (arglen = b->text_len, in = b->text; arglen > 0; arglen--) + { + if (*in == '"') + cxtquote = ! cxtquote; + *p++ = *in++; + } + /* Done if no more arguments */ if (b->arg_index == 0) break; arglen = (fmacro->args[b->arg_index] - fmacro->args[b->arg_index - 1] - 1); - memcpy (p, pfile->out.base + fmacro->args[b->arg_index - 1], - arglen); - p += arglen; + base = pfile->out.base + fmacro->args[b->arg_index - 1]; + in = base; +#if 0 + /* Skip leading whitespace in the text for the argument to + be substituted. To be compatible with gcc 2.95, we would + also need to trim trailing whitespace. Gcc 2.95 trims + leading and trailing whitespace, which may be a bug. The + current gcc testsuite explicitly checks that this leading + and trailing whitespace in actual arguments is + preserved. */ + while (arglen > 0 && is_space (*in)) + { + in++; + arglen--; + } +#endif + for (argquote = 0; arglen > 0; arglen--) + { + if (cxtquote && *in == '"') + { + if (in > base && *(in-1) != '\\') + argquote = ! argquote; + /* Always add backslash before double quote if argument + is expanded in a quoted context */ + *p++ = '\\'; + len++; + } + else if (cxtquote && argquote && *in == '\\') + { + /* Always add backslash before a backslash in an argument + that is expanded in a quoted context and also in the + range of a quoted context in the argument itself. */ + *p++ = '\\'; + len++; + } + *p++ = *in++; + len++; + } exp += BLOCK_LEN (b->text_len); } diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 56191ecee0cf..22378929a87c 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,6 +1,223 @@ -2007-07-19 Release Manager +2010-05-22 Release Manager - * GCC 4.2.1 released. + * GCC 4.3.5 released. + +2010-05-06 Ralf Wildenhues + + PR other/43620 + * configure.ac (AM_INIT_AUTOMAKE): Add no-dist. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * config.h.in: Regenerate. + * Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2009-08-19 Tobias Burnus + + PR fortran/41102 + omp_lib.h.in: Fix -std=f95 errors. + +2009-08-14 Uros Bizjak + + Backport from mainline: + 2008-12-26 Uros Bizjak + + * testsuite/libgomp.c/atomic-6.c: Add -mieee for alpha*-*-* targets. + +2009-08-04 Release Manager + + * GCC 4.3.4 released. + +2009-01-24 Release Manager + + * GCC 4.3.3 released. + +2008-12-05 Janis Johnson + + Backport from mainline: + 2008-05-15 Janis Johnson + + * testsuite/lib/libgomp.exp: Load new torture support. + +2008-12-02 Janis Johnson + + Backport from mainline: + 2008-11-26 Janis Johnson + + PR testsuite/28870 + * testsuite/lib/libgomp.exp: Include new timeout library files. + (libgomp_target_compile): Set timeout value from new proc. + +2008-08-27 Release Manager + + * GCC 4.3.2 released. + +2008-06-12 Jakub Jelinek + + PR middle-end/36506 + * testsuite/libgomp.c/reduction-5.c: New test. + +2008-06-06 Release Manager + + * GCC 4.3.1 released. + +2008-05-23 Jakub Jelinek + + PR c++/36308 + * testsuite/libgomp.c++/ctor-11.C: New test. + * testsuite/libgomp.c++/ctor-12.C: New test. + +2008-05-07 Jakub Jelinek + + PR middle-end/36106 + * testsuite/libgomp.c/atomic-5.c: New test. + * testsuite/libgomp.c/atomic-6.c: New test. + * testsuite/libgomp.c/autopar-1.c: New test. + +2008-03-18 Jakub Jelinek + + PR middle-end/35611 + * testsuite/libgomp.c/atomic-4.c: New test. + + PR libgomp/35625 + * iter.c (gomp_iter_guided_next_locked): If q > n, set end to ws->end. + (gomp_iter_guided_next): Likewise. + * testsuite/libgomp.c/pr35625.c: New test. + +2008-03-13 Jakub Jelinek + + PR middle-end/35185 + * testsuite/libgomp.c++/pr35185.C: New test. + +2008-03-12 Jakub Jelinek + + PR middle-end/35549 + * testsuite/libgomp.c/pr35549.c: New test. + +2008-03-06 Jakub Jelinek + + * testsuite/libgomp.c/atomic-3.c: New test. + +2008-03-05 Release Manager + + * GCC 4.3.0 released. + +2008-02-15 Jakub Jelinek + + PR middle-end/35196 + * testsuite/libgomp.c/pr35196.c: New test. + + PR middle-end/35130 + * testsuite/libgomp.fortran/pr35130.f90: New test. + * testsuite/libgomp.c/pr35130.c: New test. + +2008-01-25 Jakub Jelinek + + PR middle-end/33880 + * testsuite/libgomp.c/pr33880.c: New test. + * testsuite/libgomp.fortran/pr33880.f90: New test. + +2008-01-24 David Edelsohn + + * configure: Regenerate. + +2008-01-08 Jakub Jelinek + + * configure.ac: Move futex checking into ../config/futex.m4. + * configure: Rebuilt. + * aclocal.m4: Rebuilt. + * Makefile.in: Rebuilt. + + * configure.tgt: Rename have_tls to gcc_cv_have_tls to match + 2007-10-15 ../config/tls.m4 change. + +2007-12-19 Jakub Jelinek + + PR c++/34513 + * testsuite/libgomp.c/pr34513.c: New test. + * testsuite/libgomp.c++/pr34513.C: New test. + +2007-12-17 Jack Howarth + + PR target/32765 + * testsuite/libgomp.fortran/crayptr2.f90: Move dg-options for darwin. + +2007-12-04 Jakub Jelinek + + * omp.h.in (__GOMP_NOTHROW): Define. Use it on omp_* prototypes. + +2007-12-03 Jakub Jelinek + + * testsuite/libgomp.c/private-1.c: New test. + +2007-11-29 Andris Pavenis + Paolo Bonzini + + * Makefile.am: Use space as vpath separator. Use 'vpath %' + instead of 'VPATH ='. + * Makefile.in: Regenerate. + +2007-11-23 Matthias Klose + + * configure.ac: Adjust makeinfo version check. + * configure: Regenerate. + +2007-11-10 Jakub Jelinek + + PR fortran/34020 + * testsuite/libgomp.fortran/pr34020.f90: New test. + +2007-11-06 Jakub Jelinek + + PR c++/33894 + * testsuite/libgomp.c++/atomic-1.C: New test. + +2007-10-25 Jakub Jelinek + + PR libgomp/33275 + * testsuite/libgomp.fortran/omp_parse3.f90 (test_threadprivate): + Make x and y integers rather than (implicit) reals. Add private (j) + clause to the last omp parallel. + +2007-10-15 Maciej W. Rozycki + + * configure: Regenerate following changes to ../config/tls.m4. + +2007-09-28 Jakub Jelinek + + * testsuite/libgomp.fortran/stack.f90: New test. + +2007-09-10 Danny Smith + + * config/mingw32/proc.c: New file. + +2007-09-05 Uros Bizjak + + * testsuite/libgomp.c/atomic-1.c: Include cpuid.h for i386 targets. + (main): Use __get_cpuid to get i386 target fetaures. + * testsuite/libgomp.c/atomic-2.c: Include cpuid.h for x86_64 targets. + (main): Use __get_cpuid to get x86_64 target fetaures. + +2007-08-15 Jack Howarth + + PR target/32765 + * testsuite/libgomp.fortran/pr32550.f90: Use -static-libgcc on Darwin. + * testsuite/libgomp.fortran/crayptr2.f90: Likwise. + +2007-07-12 Jakub Jelinek + + PR fortran/32550 + * testsuite/libgomp.fortran/pr32550.f90: New test. + * testsuite/libgomp.fortran/crayptr2.f90: New test. + +2007-07-05 H.J. Lu + + * aclocal.m4: Regenerated. + +2007-07-05 Tobias Burnus + + PR fortran/32359 + * testsuite/libgomp.fortran/pr32359.f90: New. 2007-07-02 Jakub Jelinek @@ -21,9 +238,117 @@ * testsuite/libgomp.c/pr32362-2.c: New test. * testsuite/libgomp.c/pr32362-3.c: New test. -2007-05-13 Release Manager +2007-06-07 Jakub Jelinek - * GCC 4.2.0 released. + * team.c (gomp_team_start): Fix setting up thread_attr + stack size. + +2007-06-02 Paolo Bonzini + + * configure: Regenerate. + +2007-05-23 Steve Ellcey + + * Makefile.in: Regenerate. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2007-05-04 Jakub Jelinek + + * config/linux/proc.c: New file. + + PR libgomp/28482 + * configure.tgt: Don't link with -Wl,-z,nodlopen even on Linux. + +2007-04-19 Daniel Franke + + * libgomp.texi (GOMP_CPU_AFFINITY): Updated. + +2007-04-16 Matthias Klose + + * configure.tgt (i[456]86-*-linux*): Only add ia32 specific + flags if not building with -m64. + * testsuite/lib/libgomp-dg.exp (libgomp_init): Don't add -march + flag for i?86-*-* targets, if current target matches -m64. + +2007-04-14 Steve Ellcey + + * Makefile.am: Add -I .. to ACLOCAL_AMFLAGS. + * Makefile.in: Regenerate. + +2007-04-07 John David Anglin + + PR testsuite/31369 + * testsuite/libgomp.c++/c++.exp: Don't use concat when setting + ld_library_path. + * testsuite/libgomp.fortran/fortran.exp: Likewise. + +2007-04-04 Jakub Jelinek + + * libgomp.h (gomp_cpu_affinity, gomp_cpu_affinity_len): New extern + decls. + (gomp_init_affinity, gomp_init_thread_affinity): New prototypes. + * env.c (gomp_cpu_affinity, gomp_cpu_affinity_len): New variables. + (parse_affinity): New function. + (initialize_env): Call it and gomp_init_affinity. + * team.c (gomp_team_start): If gomp_cpu_affinity != NULL, + create new pthread_attr_t and call gomp_init_thread_affinity + on it for each thread before passing the attribute to pthread_create. + * config/linux/affinity.c: New file. + * config/posix/affinity.c: New file. + * configure.ac (HAVE_PTHREAD_AFFINITY_NP): New test. + * configure: Rebuilt. + * config.h.in: Rebuilt. + * Makefile.am (libgomp_la_SOURCES): Add affinity.c. + * Makefile.in: Rebuilt. + +2007-03-23 Andreas Tobler + + * testsuite/lib/libgomp.exp (libgomp_init): Add -shared-libgcc for + *-*-darwin*. + * testsuite/libgomp.c++/c++.exp: Look for shared libstdc++ library + and use it if found. + +2007-03-18 Uros Bizjak + + * testsuite/config/default.exp: New file. + * testsuite/lib/libgomp.exp: New file. + * testsuite/lib/libgomp.dg (load_gcc_lib, libgomp_init, + libgomp_target_compile, libgomp_option_help, libgomp_option_proc, + load_lib *, load_gcc_lib *): Move to libgomp.exp. + (libgomp_load): Remove. + * testsuite/lib/libgomp.exp (libgomp_init): Compute + always_ld_library_path, not ld_library_path. Set additional_flags + to -march=i486 for ilp32 x86_64-*-* and i386-*-* targets. + (target_compile): Do not call libgomp_init. Append lang_library_path + and lang_link_flags to options. + * testsuite/libgomp.c/c.exp: Set DEFAULT_FLAGS to -O2. Set + ld_library_path from always_ld_library_path. Set LD_LIBRARY_PATH + here. + * testsuite/libgomp.c++/c++.exp: Set ld_library_path from + always_ld_library_path. Set LD_LIBRARY_PATH here. + * testsuite/libgomp.fortran/fortran.exp: Ditto. + * testsuite/libgomp.c/atomic-1.c: Set dg-options to + "-O2 -march=pentium" for ilp32 x86 targets. Simplify check for + CX8 flag. + * testsuite/libgomp.c/atomic-2.c: Set dg-options to "-O2 -mcx16" for + lp64 x86 targets. Do not check for SSE3 bit. Do not define bit_SSE3. + * testsuite/libgomp.c/pr29947-1.c: Remove default dg-options. + * testsuite/libgomp.c/pr29947-1.c: Ditto. + * testsuite/libgomp.c/atomic-10.c: Ditto. + +2007-03-21 Jakub Jelinek + + * testsuite/libgomp.fortran/appendix-a/a.22.8.f90: Add + dg-final cleanup-modules line. + * testsuite/libgomp.fortran/appendix-a/a.40.1.f90: Likewise. + * testsuite/libgomp.fortran/appendix-a/a.31.5.f90: Likewise. + * testsuite/libgomp.fortran/appendix-a/a.31.4.f90: Likewise. + * testsuite/libgomp.fortran/threadprivate2.f90: Likewise. + * testsuite/libgomp.fortran/reduction5.f90: Likewise. + * testsuite/libgomp.fortran/threadprivate3.f90: Likewise. + * testsuite/libgomp.fortran/threadprivate1.f90: Likewise. 2007-03-18 Andreas Schwab @@ -31,15 +356,32 @@ extraction. * configure: Regenerate. +2007-03-01 Brooks Moses + + * Makefile.am: Add install-pdf target as copied from + automake v1.10 rules. + * Makefile.in: Regenerate + 2007-02-07 Jakub Jelinek + PR libgomp/28486 + * configure: Regenerate. + PR c++/30703 * testsuite/libgomp.c++/pr30703.C: New test. -2007-02-07 Daniel Franke +2007-02-02 Jakub Jelinek - Backport from mainline: - 2007-01-31 Daniel Franke + Revert: + 2006-07-05 Eric Christopher + * configure.ac: Depend addition of -pthread on host OS. + * configure: Regenerate. + +2007-01-31 Ralf Wildenhues + + * libgomp.texi: Fix spacing after abbreviations. + +2007-01-31 Daniel Franke PR libgomp/30546 * configure.ac: Add check for makeinfo @@ -50,74 +392,47 @@ * Makefile.in: Regenerated. * testsuite/Makefile.in: Regenerated. -2007-02-07 Daniel Franke - - Backport from mainline: - 2007-01-31 Ralf Wildenhues - - * libgomp.texi: Fix spacing after abbreviations. - - Backport from mainline: - 2007-01-29 Daniel Franke +2007-01-29 Daniel Franke PR libgomp/30540 * libgomp.texi: More about implementation-dependent settings. -2007-02-06 Roger Sayle - - PR libgomp/28296 - Backport from mainline. - Revert: - 2006-07-05 Eric Christopher - * configure.ac: Depend addition of -pthread on host OS. - * configure: Regenerate. - -2007-01-30 Tobias Burnus - - Backport from mainline. - 2007-01-26 Tobias Burnus +2007-01-26 Tobias Burnus * testsuite/libgomp.fortran/fortran.exp: Support .f03 extension. -2007-01-25 Daniel Franke - - Backport from mainline: - 2006-12-21 Daniel Franke - - PR libgomp/28209 - * libgomp.texi: New file. - * configure.ac: Add --enable-generated-files-in-srcdir option. - * Makefile.am: Add info, dvi, pdf, html targets. On request, - copy files to srcdir. - * Makefile.in: Regenerated. - * testsuite/Makefile.in: Regenerated. - * NOTES: Removed. - - Backport from mainline: - 2007-01-14 Daniel Franke - * libgomp.texi: Document implementation specific default values of - environment variables. - 2007-01-24 Jakub Jelinek PR middle-end/30494 * testsuite/libgomp.c/pr30494.c: New test. -2006-12-18 Daniel Franke +2007-01-15 Tom Tromey - Backport from mainline: - 2006-12-04 Daniel Franke + * configure: Rebuilt. + * configure.ac: Fixed comment. + +2007-01-14 Daniel Franke + + * libgomp.texi: Document implementation specific default values of + environment variables. + +2006-12-21 Daniel Franke + + PR libgomp/28209 + * libgomp.texi: New file. + * configure.ac: Add --enable-generated-files-in-srcdir option. + * Makefile.am: Add info, dvi, pdf, html targets. On request, copy + files to srcdir. + * Makefile.in: Regenerated. + * config.h.in: Regenerated. + * testsuite/Makefile.in: Regenerated. + * NOTES: Removed. + +2006-12-04 Daniel Franke PR libgomp/29949 * env.c (omp_set_num_threads): Set illegal thread count to 1. - Backport from mainline: - 2006-11-09 Uros Bizjak - - * env.c (parse_schedule): Reject out of range values. - (parse_unsigned_long): Reject out of range, negative - or zero values. - 2006-12-04 Eric Botcazou * configure: Regenerate. @@ -135,6 +450,15 @@ * configure.tgt: Force initial-exec TLS model on Linux only. +2006-11-13 Daniel Jacobowitz + + * configure: Regenerated. + +2006-11-09 Uros Bizjak + + * env.c (parse_schedule): Reject out of range values. + (parse_unsigned_long): Reject out of range, negative or zero values. + 2006-10-29 Jakub Jelinek PR fortran/29629 diff --git a/libgomp/Makefile.am b/libgomp/Makefile.am index c2bfbeaad5fa..55e3bf3ee15c 100644 --- a/libgomp/Makefile.am +++ b/libgomp/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -ACLOCAL_AMFLAGS = -I ../config +ACLOCAL_AMFLAGS = -I .. -I ../config SUBDIRS = testsuite ## May be used by toolexeclibdir. @@ -12,9 +12,7 @@ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include -empty = -space = $(empty) $(empty) -VPATH = $(subst $(space),:,$(strip $(search_path))) +vpath % $(strip $(search_path)) AM_CPPFLAGS = $(addprefix -I, $(search_path)) AM_CFLAGS = $(XCFLAGS) @@ -33,7 +31,7 @@ libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) libgomp_la_SOURCES = alloc.c barrier.c critical.c env.c error.c iter.c \ loop.c ordered.c parallel.c sections.c single.c team.c work.c \ - lock.c mutex.c proc.c sem.c bar.c time.c fortran.c + lock.c mutex.c proc.c sem.c bar.c time.c fortran.c affinity.c nodist_noinst_HEADERS = libgomp_f.h nodist_libsubinclude_HEADERS = omp.h @@ -51,10 +49,19 @@ env.lo: libgomp_f.h env.o: libgomp_f.h -# No install-html target -.PHONY: install-html +# No install-html or install-pdf support in automake yet +.PHONY: install-html install-pdf install-html: +install-pdf: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ + done # Automake Documentation: # If your package has Texinfo files in many directories, you can use the diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index 7fee1ccb3cb7..57daccc6e720 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -17,6 +17,7 @@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ +VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -37,24 +38,27 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(am__configure_deps) $(srcdir)/../config.guess \ - $(srcdir)/../config.sub $(srcdir)/../depcomp \ - $(srcdir)/../install-sh $(srcdir)/../ltmain.sh \ - $(srcdir)/../missing $(srcdir)/../mkinstalldirs \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in $(srcdir)/libgomp.spec.in \ - $(srcdir)/libgomp_f.h.in $(srcdir)/omp.h.in \ - $(srcdir)/omp_lib.f90.in $(srcdir)/omp_lib.h.in \ - $(top_srcdir)/configure ChangeLog +DIST_COMMON = $(srcdir)/../config.guess $(srcdir)/../config.sub \ + ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(srcdir)/config.h.in $(srcdir)/../mkinstalldirs \ + $(srcdir)/omp.h.in $(srcdir)/omp_lib.h.in \ + $(srcdir)/omp_lib.f90.in $(srcdir)/libgomp_f.h.in \ + $(srcdir)/libgomp.spec.in $(srcdir)/../depcomp \ + $(srcdir)/../ltmain.sh $(srcdir)/../config.guess \ + $(srcdir)/../config.sub subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/enable.m4 \ + $(top_srcdir)/../config/futex.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/stdint.m4 \ - $(top_srcdir)/../config/tls.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../ltoptions.m4 \ + $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ + $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -79,21 +83,20 @@ libgomp_la_LIBADD = am_libgomp_la_OBJECTS = alloc.lo barrier.lo critical.lo env.lo \ error.lo iter.lo loop.lo ordered.lo parallel.lo sections.lo \ single.lo team.lo work.lo lock.lo mutex.lo proc.lo sem.lo \ - bar.lo time.lo fortran.lo + bar.lo time.lo fortran.lo affinity.lo libgomp_la_OBJECTS = $(am_libgomp_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I. depcomp = $(SHELL) $(top_srcdir)/../depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \ +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libgomp_la_SOURCES) -DIST_SOURCES = $(libgomp_la_SOURCES) MULTISRCTOP = MULTIBUILDTOP = MULTIDIRS = @@ -126,18 +129,6 @@ HEADERS = $(nodist_finclude_HEADERS) $(nodist_libsubinclude_HEADERS) \ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -VPATH = $(subst $(space),:,$(strip $(search_path))) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ @@ -157,6 +148,7 @@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ @@ -164,12 +156,15 @@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ +FGREP = @FGREP@ GENINSRC_FALSE = @GENINSRC_FALSE@ GENINSRC_TRUE = @GENINSRC_TRUE@ +GREP = @GREP@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE = @LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE@ LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE = @LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@ @@ -182,6 +177,7 @@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ +NM = @NM@ OBJEXT = @OBJEXT@ OMP_LOCK_ALIGN = @OMP_LOCK_ALIGN@ OMP_LOCK_KIND = @OMP_LOCK_KIND@ @@ -200,6 +196,7 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SECTION_LDFLAGS = @SECTION_LDFLAGS@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -210,6 +207,7 @@ XCFLAGS = @XCFLAGS@ XLDFLAGS = @XLDFLAGS@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ @@ -244,6 +242,7 @@ libexecdir = @libexecdir@ libtool_VERSION = @libtool_VERSION@ link_gomp = @link_gomp@ localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ multi_basedir = @multi_basedir@ @@ -260,14 +259,12 @@ target_os = @target_os@ target_vendor = @target_vendor@ toolexecdir = @toolexecdir@ toolexeclibdir = @toolexeclibdir@ -ACLOCAL_AMFLAGS = -I ../config +ACLOCAL_AMFLAGS = -I .. -I ../config SUBDIRS = testsuite gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include -empty = -space = $(empty) $(empty) AM_CPPFLAGS = $(addprefix -I, $(search_path)) AM_CFLAGS = $(XCFLAGS) AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) @@ -279,7 +276,7 @@ libgomp_version_info = -version-info $(libtool_VERSION) libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script) libgomp_la_SOURCES = alloc.c barrier.c critical.c env.c error.c iter.c \ loop.c ordered.c parallel.c sections.c single.c team.c work.c \ - lock.c mutex.c proc.c sem.c bar.c time.c fortran.c + lock.c mutex.c proc.c sem.c bar.c time.c fortran.c affinity.c nodist_noinst_HEADERS = libgomp_f.h nodist_libsubinclude_HEADERS = omp.h @@ -406,6 +403,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affinity.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/barrier.Plo@am__quote@ @@ -733,152 +731,6 @@ GTAGS: distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - mkdir $(distdir) - $(mkdir_p) $(distdir)/. $(distdir)/.. $(distdir)/../config - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-info - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' -distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) all-multi $(HEADERS) \ @@ -1011,16 +863,13 @@ uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-local \ all-multi am--refresh check check-am clean clean-generic \ clean-libtool clean-multi clean-recursive \ - clean-toolexeclibLTLIBRARIES ctags ctags-recursive dist \ - dist-all dist-bzip2 dist-gzip dist-info dist-shar dist-tarZ \ - dist-zip distcheck distclean distclean-compile \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-multi distclean-recursive distclean-tags \ - distcleancheck distdir distuninstallcheck dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-multi \ - install-nodist_fincludeHEADERS \ + clean-toolexeclibLTLIBRARIES ctags ctags-recursive dist-info \ + distclean distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-multi distclean-recursive \ + distclean-tags dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-multi install-nodist_fincludeHEADERS \ install-nodist_libsubincludeHEADERS \ install-nodist_toolexeclibHEADERS install-strip \ install-toolexeclibLTLIBRARIES installcheck installcheck-am \ @@ -1036,6 +885,8 @@ uninstall-info: uninstall-info-recursive uninstall-toolexeclibLTLIBRARIES +vpath % $(strip $(search_path)) + omp_lib_kinds.mod: omp_lib.mod : omp_lib.mod: omp_lib.f90 @@ -1045,10 +896,20 @@ fortran.o: libgomp_f.h env.lo: libgomp_f.h env.o: libgomp_f.h -# No install-html target -.PHONY: install-html +# No install-html or install-pdf support in automake yet +.PHONY: install-html install-pdf install-html: +install-pdf: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ + done + all-local: $(STAMP_GENINSRC) stamp-geninsrc: libgomp.info diff --git a/libgomp/aclocal.m4 b/libgomp/aclocal.m4 index 31c2eec2d9a6..eee6ec06b284 100644 --- a/libgomp/aclocal.m4 +++ b/libgomp/aclocal.m4 @@ -859,8 +859,13 @@ AC_SUBST([am__untar]) m4_include([../config/acx.m4]) m4_include([../config/depstand.m4]) m4_include([../config/enable.m4]) +m4_include([../config/futex.m4]) m4_include([../config/lead-dot.m4]) m4_include([../config/multi.m4]) m4_include([../config/stdint.m4]) m4_include([../config/tls.m4]) +m4_include([../ltoptions.m4]) +m4_include([../ltsugar.m4]) +m4_include([../ltversion.m4]) +m4_include([../lt~obsolete.m4]) m4_include([acinclude.m4]) diff --git a/libgomp/config.h.in b/libgomp/config.h.in index 0c1599388b2d..a80176f926a4 100644 --- a/libgomp/config.h.in +++ b/libgomp/config.h.in @@ -12,9 +12,15 @@ /* Define if the POSIX Semaphores do not work on your system. */ #undef HAVE_BROKEN_POSIX_SEMAPHORES +/* Define to 1 if the target assembler supports thread-local storage. */ +#undef HAVE_CC_TLS + /* Define to 1 if you have the `clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + /* Define to 1 if you have the `getloadavg' function. */ #undef HAVE_GETLOADAVG @@ -24,6 +30,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H +/* Define if pthread_{,attr_}{g,s}etaffinity_np is supported. */ +#undef HAVE_PTHREAD_AFFINITY_NP + /* Define to 1 if you have the header file. */ #undef HAVE_SEMAPHORE_H @@ -60,6 +69,10 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + /* Name of package */ #undef PACKAGE diff --git a/libgomp/config/linux/affinity.c b/libgomp/config/linux/affinity.c new file mode 100644 index 000000000000..8fcce5f3a5b4 --- /dev/null +++ b/libgomp/config/linux/affinity.c @@ -0,0 +1,107 @@ +/* Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Contributed by Jakub Jelinek . + + This file is part of the GNU OpenMP Library (libgomp). + + Libgomp is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + Libgomp 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 Lesser General Public License for + more details. + + You should have received a copy of the GNU Lesser General Public License + along with libgomp; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with other files, some + of which are compiled with GCC, to produce an executable, this library + does not by itself cause the resulting executable to be covered by the + GNU General Public License. This exception does not however invalidate + any other reasons why the executable file might be covered by the GNU + General Public License. */ + +/* This is a Linux specific implementation of a CPU affinity setting. */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif +#include "libgomp.h" +#include +#include +#include + +#ifdef HAVE_PTHREAD_AFFINITY_NP + +static unsigned int affinity_counter; +#ifndef HAVE_SYNC_BUILTINS +static gomp_mutex_t affinity_lock; +#endif + +void +gomp_init_affinity (void) +{ + cpu_set_t cpuset; + size_t idx, widx; + + if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), &cpuset)) + { + gomp_error ("could not get CPU affinity set"); + free (gomp_cpu_affinity); + gomp_cpu_affinity = NULL; + gomp_cpu_affinity_len = 0; + return; + } + + for (widx = idx = 0; idx < gomp_cpu_affinity_len; idx++) + if (gomp_cpu_affinity[idx] < CPU_SETSIZE + && CPU_ISSET (gomp_cpu_affinity[idx], &cpuset)) + gomp_cpu_affinity[widx++] = gomp_cpu_affinity[idx]; + + if (widx == 0) + { + gomp_error ("no CPUs left for affinity setting"); + free (gomp_cpu_affinity); + gomp_cpu_affinity = NULL; + gomp_cpu_affinity_len = 0; + return; + } + + gomp_cpu_affinity_len = widx; + CPU_ZERO (&cpuset); + CPU_SET (gomp_cpu_affinity[0], &cpuset); + pthread_setaffinity_np (pthread_self (), sizeof (cpuset), &cpuset); + affinity_counter = 1; +#ifndef HAVE_SYNC_BUILTINS + gomp_mutex_init (&affinity_lock); +#endif +} + +void +gomp_init_thread_affinity (pthread_attr_t *attr) +{ + unsigned int cpu; + cpu_set_t cpuset; + +#ifdef HAVE_SYNC_BUILTINS + cpu = __sync_fetch_and_add (&affinity_counter, 1); +#else + gomp_mutex_lock (&affinity_lock); + cpu = affinity_counter++; + gomp_mutex_unlock (&affinity_lock); +#endif + cpu %= gomp_cpu_affinity_len; + CPU_ZERO (&cpuset); + CPU_SET (gomp_cpu_affinity[cpu], &cpuset); + pthread_attr_setaffinity_np (attr, sizeof (cpu_set_t), &cpuset); +} + +#else + +#include "../posix/affinity.c" + +#endif diff --git a/libgomp/config/linux/proc.c b/libgomp/config/linux/proc.c new file mode 100644 index 000000000000..2267cfbd2d1b --- /dev/null +++ b/libgomp/config/linux/proc.c @@ -0,0 +1,179 @@ +/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. + Contributed by Jakub Jelinek . + + This file is part of the GNU OpenMP Library (libgomp). + + Libgomp is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + Libgomp 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 Lesser General Public License for + more details. + + You should have received a copy of the GNU Lesser General Public License + along with libgomp; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with other files, some + of which are compiled with GCC, to produce an executable, this library + does not by itself cause the resulting executable to be covered by the + GNU General Public License. This exception does not however invalidate + any other reasons why the executable file might be covered by the GNU + General Public License. */ + +/* This file contains system specific routines related to counting + online processors and dynamic load balancing. */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif +#include "libgomp.h" +#include +#include +#include +#ifdef HAVE_GETLOADAVG +# ifdef HAVE_SYS_LOADAVG_H +# include +# endif +#endif + +#ifdef HAVE_PTHREAD_AFFINITY_NP +static unsigned long +cpuset_popcount (cpu_set_t *cpusetp) +{ +#ifdef CPU_COUNT + /* glibc 2.6 and above provide a macro for this. */ + return CPU_COUNT (cpusetp); +#else + size_t i; + unsigned long ret = 0; + extern int check[sizeof (cpusetp->__bits[0]) == sizeof (unsigned long int)]; + + (void) check; + for (i = 0; i < sizeof (*cpusetp) / sizeof (cpusetp->__bits[0]); i++) + { + unsigned long int mask = cpusetp->__bits[i]; + if (mask == 0) + continue; + ret += __builtin_popcountl (mask); + } + return ret; +#endif +} +#endif + +/* At startup, determine the default number of threads. It would seem + this should be related to the number of cpus online. */ + +void +gomp_init_num_threads (void) +{ +#ifdef HAVE_PTHREAD_AFFINITY_NP + cpu_set_t cpuset; + + if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), &cpuset) == 0) + { + /* Count only the CPUs this process can use. */ + gomp_nthreads_var = cpuset_popcount (&cpuset); + if (gomp_nthreads_var == 0) + gomp_nthreads_var = 1; + return; + } +#endif +#ifdef _SC_NPROCESSORS_ONLN + gomp_nthreads_var = sysconf (_SC_NPROCESSORS_ONLN); +#endif +} + +static int +get_num_procs (void) +{ +#ifdef HAVE_PTHREAD_AFFINITY_NP + cpu_set_t cpuset; + + if (gomp_cpu_affinity == NULL) + { + /* Count only the CPUs this process can use. */ + if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), + &cpuset) == 0) + { + int ret = cpuset_popcount (&cpuset); + return ret != 0 ? ret : 1; + } + } + else + { + size_t idx; + static int affinity_cpus; + + /* We can't use pthread_getaffinity_np in this case + (we have changed it ourselves, it binds to just one CPU). + Count instead the number of different CPUs we are + using. */ + CPU_ZERO (&cpuset); + if (affinity_cpus == 0) + { + int cpus = 0; + for (idx = 0; idx < gomp_cpu_affinity_len; idx++) + if (! CPU_ISSET (gomp_cpu_affinity[idx], &cpuset)) + { + cpus++; + CPU_SET (gomp_cpu_affinity[idx], &cpuset); + } + affinity_cpus = cpus; + } + return affinity_cpus; + } +#endif +#ifdef _SC_NPROCESSORS_ONLN + return sysconf (_SC_NPROCESSORS_ONLN); +#else + return gomp_nthreads_var; +#endif +} + +/* When OMP_DYNAMIC is set, at thread launch determine the number of + threads we should spawn for this team. */ +/* ??? I have no idea what best practice for this is. Surely some + function of the number of processors that are *still* online and + the load average. Here I use the number of processors online + minus the 15 minute load average. */ + +unsigned +gomp_dynamic_max_threads (void) +{ + unsigned n_onln, loadavg; + + n_onln = get_num_procs (); + if (n_onln > gomp_nthreads_var) + n_onln = gomp_nthreads_var; + + loadavg = 0; +#ifdef HAVE_GETLOADAVG + { + double dloadavg[3]; + if (getloadavg (dloadavg, 3) == 3) + { + /* Add 0.1 to get a kind of biased rounding. */ + loadavg = dloadavg[2] + 0.1; + } + } +#endif + + if (loadavg >= n_onln) + return 1; + else + return n_onln - loadavg; +} + +int +omp_get_num_procs (void) +{ + return get_num_procs (); +} + +ialias (omp_get_num_procs) diff --git a/libgomp/config/mingw32/proc.c b/libgomp/config/mingw32/proc.c new file mode 100644 index 000000000000..def7bb5e8f48 --- /dev/null +++ b/libgomp/config/mingw32/proc.c @@ -0,0 +1,82 @@ +/* Copyright (C) 2007 Free Software Foundation, Inc. + Contributed by Danny Smith + + This file is part of the GNU OpenMP Library (libgomp). + + Libgomp is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + Libgomp 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 Lesser General Public License for + more details. + + You should have received a copy of the GNU Lesser General Public License + along with libgomp; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with other files, some + of which are compiled with GCC, to produce an executable, this library + does not by itself cause the resulting executable to be covered by the + GNU General Public License. This exception does not however invalidate + any other reasons why the executable file might be covered by the GNU + General Public License. */ + +/* This file contains system specific routines related to counting + online processors and dynamic load balancing. It is expected that + a system may well want to write special versions of each of these. + + The following implementation uses win32 API routines. */ + +#include "libgomp.h" +#include + +/* Count the CPU's currently available to this process. */ +static int +count_avail_process_cpus () +{ + DWORD_PTR process_cpus; + DWORD_PTR system_cpus; + + if (GetProcessAffinityMask (GetCurrentProcess (), + &process_cpus, &system_cpus)) + { + unsigned int count; + for (count = 0; process_cpus != 0; process_cpus >>= 1) + if (process_cpus & 1) + count++; + return count; + } + return 1; +} + +/* At startup, determine the default number of threads. It would seem + this should be related to the number of cpus available to the process. */ + +void +gomp_init_num_threads (void) +{ + gomp_nthreads_var = count_avail_process_cpus (); +} + +/* When OMP_DYNAMIC is set, at thread launch determine the number of + threads we should spawn for this team. FIXME: How do we adjust for + load average on MS Windows? */ + +unsigned +gomp_dynamic_max_threads (void) +{ + int n_onln = count_avail_process_cpus (); + return n_onln > gomp_nthreads_var ? gomp_nthreads_var : n_onln; +} + +int +omp_get_num_procs (void) +{ + return count_avail_process_cpus (); +} + +ialias (omp_get_num_procs) diff --git a/libgomp/config/posix/affinity.c b/libgomp/config/posix/affinity.c new file mode 100644 index 000000000000..67cb37ad924b --- /dev/null +++ b/libgomp/config/posix/affinity.c @@ -0,0 +1,41 @@ +/* Copyright (C) 2006 Free Software Foundation, Inc. + Contributed by Jakub Jelinek . + + This file is part of the GNU OpenMP Library (libgomp). + + Libgomp is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + Libgomp 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 Lesser General Public License for + more details. + + You should have received a copy of the GNU Lesser General Public License + along with libgomp; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with other files, some + of which are compiled with GCC, to produce an executable, this library + does not by itself cause the resulting executable to be covered by the + GNU General Public License. This exception does not however invalidate + any other reasons why the executable file might be covered by the GNU + General Public License. */ + +/* This is a generic stub implementation of a CPU affinity setting. */ + +#include "libgomp.h" + +void +gomp_init_affinity (void) +{ +} + +void +gomp_init_thread_affinity (pthread_attr_t *attr) +{ + (void) attr; +} diff --git a/libgomp/configure b/libgomp/configure index af4254c1fda0..8d63ae93bbea 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -241,6 +241,155 @@ IFS=" $as_nl" $as_unset CDPATH + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +$* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. @@ -308,7 +457,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GENINSRC_TRUE GENINSRC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS AR ac_ct_AR RANLIB ac_ct_RANLIB PERL BUILD_INFO_TRUE BUILD_INFO_FALSE LN_S LIBTOOL enable_shared enable_static MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT FC FCFLAGS LDFLAGS ac_ct_FC libtool_VERSION CPP CPPFLAGS EGREP SECTION_LDFLAGS OPT_LDFLAGS LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE config_path XCFLAGS XLDFLAGS link_gomp USE_FORTRAN_TRUE USE_FORTRAN_FALSE OMP_LOCK_SIZE OMP_LOCK_ALIGN OMP_NEST_LOCK_SIZE OMP_NEST_LOCK_ALIGN OMP_LOCK_KIND OMP_NEST_LOCK_KIND LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GENINSRC_TRUE GENINSRC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS AR ac_ct_AR RANLIB ac_ct_RANLIB PERL BUILD_INFO_TRUE BUILD_INFO_FALSE LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S lt_ECHO CPP CPPFLAGS enable_shared enable_static MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT FC FCFLAGS LDFLAGS ac_ct_FC libtool_VERSION SECTION_LDFLAGS OPT_LDFLAGS LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE LIBGOMP_BUILD_VERSIONED_SHLIB_FALSE config_path XCFLAGS XLDFLAGS link_gomp USE_FORTRAN_TRUE USE_FORTRAN_FALSE OMP_LOCK_SIZE OMP_LOCK_ALIGN OMP_NEST_LOCK_SIZE OMP_NEST_LOCK_ALIGN OMP_LOCK_KIND OMP_NEST_LOCK_KIND LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -718,13 +867,13 @@ echo X"$0" | /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then + if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r "$srcdir/$ac_unique_file"; then +if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } @@ -733,7 +882,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then { (exit 1); exit 1; }; } fi fi -(cd $srcdir && test -r "./$ac_unique_file") 2>/dev/null || +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` @@ -749,6 +898,14 @@ ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_FC_set=${FC+set} ac_env_FC_value=$FC ac_cv_env_FC_set=${FC+set} @@ -761,14 +918,6 @@ ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS # # Report the --help message. @@ -854,8 +1003,6 @@ Optional Features: --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory [default=no] - --enable-linux-futex Use the Linux futex system call - [default=default] --enable-generated-files-in-srcdir put copies of generated files in source dir intended for creating source tarballs for users without @@ -863,12 +1010,17 @@ Optional Features: --enable-multilib build many library versions (default) --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared=PKGS build shared libraries default=yes - --enable-static=PKGS build static libraries default=yes - --enable-fast-install=PKGS optimize for fast installation default=yes + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer + --enable-linux-futex use the Linux futex system call + [default=default] --enable-tls Use thread-local storage [default=yes] --enable-symvers=STYLE enables symbol versioning of the shared library [default=yes] @@ -876,8 +1028,9 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-pic try to use only PIC/non-PIC objects default=use both + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] Some influential environment variables: CC C compiler command @@ -886,9 +1039,9 @@ Some influential environment variables: nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory + CPP C preprocessor FC Fortran compiler command FCFLAGS Fortran compiler flags - CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1365,26 +1518,6 @@ fi; echo "$as_me:$LINENO: result: $enable_version_specific_runtime_libs" >&5 echo "${ECHO_T}$enable_version_specific_runtime_libs" >&6 -echo "$as_me:$LINENO: checking for --enable-linux-futex" >&5 -echo $ECHO_N "checking for --enable-linux-futex... $ECHO_C" >&6 - # Check whether --enable-linux-futex or --disable-linux-futex was given. -if test "${enable_linux_futex+set}" = set; then - enableval="$enable_linux_futex" - - case "$enableval" in - yes|no|default) ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable linux-futex" >&5 -echo "$as_me: error: Unknown argument to enable/disable linux-futex" >&2;} - { (exit 1); exit 1; }; } ;; - esac - -else - enable_linux_futex=default -fi; - -echo "$as_me:$LINENO: result: $enable_linux_futex" >&5 -echo "${ECHO_T}$enable_linux_futex" >&6 - # We would like our source tree to be readonly. However when releases or # pre-releases are generated, the flex/bison generated files as well as the # various formats of manuals need to be included along with the rest of the @@ -1556,7 +1689,7 @@ target_alias=${target_alias-$host_alias} # we can do about that; they come from AC_INIT). # foreign: we don't follow the normal rules for GNU packages (no COPYING # file in the top srcdir, etc, etc), so stop complaining. -# no-dependencies: turns off auto dependency generation (just for now) +# no-dist: we don't want 'dist' and related rules. # -Wall: turns on all automake warnings... # -Wno-portability: ...except this one, since GNU make is required. # -Wno-override: ... and this one, since we do want this in testsuite. @@ -3526,13 +3659,10 @@ else sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` case $ac_prog_version in - '') gcc_cv_prog_makeinfo_modern=no;; - 4.[4-9]*) gcc_cv_prog_makeinfo_modern=yes;; - *) gcc_cv_prog_makeinfo_modern=no;; - esac - if test $gcc_cv_prog_makeinfo_modern = no; then - MAKEINFO="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing makeinfo" - fi + '') gcc_cv_prog_makeinfo_modern=no;; + 4.[4-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*) gcc_cv_prog_makeinfo_modern=yes;; + *) gcc_cv_prog_makeinfo_modern=no;; + esac fi echo "$as_me:$LINENO: result: $gcc_cv_prog_makeinfo_modern" >&5 @@ -3540,6 +3670,9 @@ echo "${ECHO_T}$gcc_cv_prog_makeinfo_modern" >&6 else gcc_cv_prog_makeinfo_modern=no fi + if test $gcc_cv_prog_makeinfo_modern = no; then + MAKEINFO="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing makeinfo" + fi @@ -3554,73 +3687,264 @@ fi # Configure libtool + + +macro_version='2.1a' +macro_revision='1.2435' + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Set options + +enable_dlopen=no + + +enable_win32_dll=no + + # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} -case $enableval in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else enable_shared=yes fi; + + + + + + + + # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} -case $enableval in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else enable_static=yes fi; + + + + + + + + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; + +test -z "$pic_mode" && pic_mode=default + + + + + + + # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} -case $enableval in -yes) enable_fast_install=yes ;; -no) enable_fast_install=no ;; -*) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else enable_fast_install=yes fi; + + + + + + + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED + +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for fgrep" >&5 +echo $ECHO_N "checking for fgrep... $ECHO_C" >&6 +if test "${ac_cv_prog_fgrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo 'ab*c' | (grep -F 'ab*c') >/dev/null 2>&1 + then ac_cv_prog_fgrep='grep -F' + else ac_cv_prog_fgrep='fgrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_fgrep" >&5 +echo "${ECHO_T}$ac_cv_prog_fgrep" >&6 + FGREP=$ac_cv_prog_fgrep + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" @@ -3631,8 +3955,8 @@ fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -3642,12 +3966,12 @@ echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 esac case $ac_prog in # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) + [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; @@ -3671,22 +3995,26 @@ if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do + IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. + # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + case `"$lt_cv_path_LD" -v 2>&1 &6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld -echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_reload_flag='-r' -fi -echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 -reload_flag=$lt_cv_ld_reload_flag -test -n "$reload_flag" && reload_flag=" $reload_flag" -echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 + + + + + + + +echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 +echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3741,35 +4068,173 @@ else # Let the user override the test. lt_cv_path_NM="$NM" else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/${ac_tool_prefix}nm - if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then - lt_cv_path_NM="$tmp_nm -B" - break - elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - lt_cv_path_NM="$tmp_nm -p" - break - else - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac fi - fi + done + IFS="$lt_save_ifs" done - IFS="$ac_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm + : ${lt_cv_path_NM=no} fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$ac_tool_prefix"; then + for ac_prog in "dumpbin -symbols" "link -dump -symbols" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DUMPBIN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + echo "$as_me:$LINENO: result: $DUMPBIN" >&5 +echo "${ECHO_T}$DUMPBIN" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -NM="$lt_cv_path_NM" -echo "$as_me:$LINENO: result: $NM" >&5 -echo "${ECHO_T}$NM" >&6 + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in "dumpbin -symbols" "link -dump -symbols" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 +echo "${ECHO_T}$ac_ct_DUMPBIN" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_DUMPBIN" && break +done +test -n "$ac_ct_DUMPBIN" || ac_ct_DUMPBIN=":" + + DUMPBIN=$ac_ct_DUMPBIN +fi + + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 +echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6 +if test "${lt_cv_nm_interface+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:4223: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:4226: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:4229: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 +echo "${ECHO_T}$lt_cv_nm_interface" >&6 echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 @@ -3782,180 +4247,6 @@ else echo "${ECHO_T}no, using $LN_S" >&6 fi -echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 -echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [regex]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin* | mingw* |pw32*) - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - # this will be overwritten by pass_all, but leave it in just in case - lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd='/usr/bin/file -L' - case "$host_os" in - rhapsody* | darwin1.012) - lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' - ;; - *) # Darwin 1.3 on - lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' - ;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | kfreebsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20*|hpux11*) - case $host_cpu in - hppa*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - esac - ;; - -irix5* | irix6*) - case $host_os in - irix5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' - fi - ;; - -newsos6) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; - -sysv5uw[78]* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; -esac - -fi -echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method - - - - - -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 @@ -3974,6 +4265,13 @@ else lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. @@ -3998,174 +4296,400 @@ else elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else - lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`getconf ARG_MAX 2> /dev/null` + if test -n $lt_cv_sys_max_cmd_len; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; esac fi -if test -n "$lt_cv_sys_max_cmd_len" ; then +if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi +max_cmd_len=$lt_cv_sys_max_cmd_len -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 +echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6 +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, ) >/dev/null 2>&1 \ + && xsi_shell=yes +echo "$as_me:$LINENO: result: $xsi_shell" >&5 +echo "${ECHO_T}$xsi_shell" >&6 + + +echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 +echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6 +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +echo "$as_me:$LINENO: result: $lt_shell_append" >&5 +echo "${ECHO_T}$lt_shell_append" >&6 + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 + lt_unset=false +fi -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' ;; esac -fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + + + + + + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/usr/bin:$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; esac -fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 + + + + + + + + + +echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 +echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' else - MAGIC_CMD=: - fi -fi - + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; esac +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then +if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -4174,7 +4698,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -4183,27 +4707,27 @@ done fi fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -4212,30 +4736,43 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" + ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - RANLIB=$ac_ct_RANLIB + AR=$ac_ct_AR else - RANLIB="$ac_cv_prog_RANLIB" + AR="$ac_cv_prog_AR" fi +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru + + + + + + + + + + + if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 @@ -4316,14 +4853,402 @@ else STRIP="$ac_cv_prog_STRIP" fi +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + + + + + + + + + + + + + + + -# Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" # Check whether --enable-libtool-lock or --disable-libtool-lock was given. @@ -4331,60 +5256,11 @@ if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; -test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" - - -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi; -test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" -test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 4353 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -4393,19 +5269,56 @@ ia64-*-hpux*) ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; esac fi rm -rf conftest* ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 5285 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 @@ -4413,39 +5326,45 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; esac fi rm -rf conftest* @@ -4460,9 +5379,7 @@ echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - - - ac_ext=c + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -4528,388 +5445,29 @@ echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 CFLAGS="$SAVE_CFLAGS" fi ;; - - -esac - - -# Save cache, so that ltconfig can load it -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ -LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ -AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ -objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ -deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \ -|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5 -echo "$as_me: error: libtool configure failed" >&2;} - { (exit 1); exit 1; }; } - -# Reload cache, that may have been modified by ltconfig -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; esac fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi + rm -rf conftest* + ;; +esac +need_locks="$enable_libtool_lock" -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log - - - - - - - - - -echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi; - echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 - - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - -# We need gfortran to compile parts of the library -# We can't use AC_PROG_FC because it expects a fully working gfortran. -#AC_PROG_FC(gfortran) -FC="$GFORTRAN" -ac_ext=${FC_SRCEXT-f} -ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5' -ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_fc_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in gfortran - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_FC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$FC"; then - ac_cv_prog_FC="$FC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_FC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -FC=$ac_cv_prog_FC -if test -n "$FC"; then - echo "$as_me:$LINENO: result: $FC" >&5 -echo "${ECHO_T}$FC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$FC" && break - done -fi -if test -z "$FC"; then - ac_ct_FC=$FC - for ac_prog in gfortran -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_FC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_FC"; then - ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_FC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_FC=$ac_cv_prog_ac_ct_FC -if test -n "$ac_ct_FC"; then - echo "$as_me:$LINENO: result: $ac_ct_FC" >&5 -echo "${ECHO_T}$ac_ct_FC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_FC" && break -done - - FC=$ac_ct_FC -fi - - -# Provide some information about the compiler. -echo "$as_me:4763:" \ - "checking for Fortran compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -rm -f a.out - -# If we don't use `.F' as extension, the preprocessor is not run on the -# input file. (Note that this only needs to work for GNU compilers.) -ac_save_ext=$ac_ext -ac_ext=F -echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6 -if test "${ac_cv_fc_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - program main -#ifndef __GNUC__ - choke me -#endif - - end -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_fc_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_fc_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6 -ac_ext=$ac_save_ext -ac_test_FFLAGS=${FCFLAGS+set} -ac_save_FFLAGS=$FCFLAGS -FCFLAGS= -echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5 -echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_fc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - FCFLAGS=-g -cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_fc_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_fc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_fc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_fc_g" >&6 -if test "$ac_test_FFLAGS" = set; then - FCFLAGS=$ac_save_FFLAGS -elif test $ac_cv_prog_fc_g = yes; then - if test "x$ac_cv_fc_compiler_gnu" = xyes; then - FCFLAGS="-g -O2" - else - FCFLAGS="-g" - fi -else - if test "x$ac_cv_fc_compiler_gnu" = xyes; then - FCFLAGS="-O2" - else - FCFLAGS= - fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -FCFLAGS="$FCFLAGS -Wall" - -# For libtool versioning info, format is CURRENT:REVISION:AGE -libtool_VERSION=1:0:0 - - -# Check header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5145,21 +5703,7496 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + + + + + + + + + + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6385: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6389: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + if test "$host_cpu" = m68k; then + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + fi + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + + + + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6707: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6711: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $RM conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6812: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6816: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + + + + + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6867: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6871: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + if test "$host_cpu" = m68k; then + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + fi + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + if test "$host_cpu" = m68k; then + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + fi + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + if test "${lt_cv_apple_cc_single_mod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi-module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm libconftest.dylib + fi + rm conftest.$ac_ext + fi +fi + + output_verbose_link_cmd=echo + if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then + archive_cmds='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $single_module -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + module_expsym_cmds='sed -e "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd=echo + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat >conftest.$ac_ext <<_ACEOF +int foo(void) {} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +withGCC=$GCC +if test "$withGCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + if test "$host_cpu" = m68k; then + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + else + dynamic_linker=no + fi + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $withGCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir"; then + shlibpath_overrides_runpath=yes +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 9664 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +_LT_EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 9764 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +_LT_EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + + echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + + echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + + +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +# We need gfortran to compile parts of the library +# We can't use AC_PROG_FC because it expects a fully working gfortran. +#AC_PROG_FC(gfortran) +FC="$GFORTRAN" +ac_ext=${FC_SRCEXT-f} +ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$FC"; then + ac_cv_prog_FC="$FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_FC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +FC=$ac_cv_prog_FC +if test -n "$FC"; then + echo "$as_me:$LINENO: result: $FC" >&5 +echo "${ECHO_T}$FC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FC" && break + done +fi +if test -z "$FC"; then + ac_ct_FC=$FC + for ac_prog in gfortran +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_FC"; then + ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_FC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_FC=$ac_cv_prog_ac_ct_FC +if test -n "$ac_ct_FC"; then + echo "$as_me:$LINENO: result: $ac_ct_FC" >&5 +echo "${ECHO_T}$ac_ct_FC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_FC" && break +done + + FC=$ac_ct_FC +fi + + +# Provide some information about the compiler. +echo "$as_me:10119:" \ + "checking for Fortran compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6 +if test "${ac_cv_fc_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_fc_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FCFLAGS+set} +ac_save_FFLAGS=$FCFLAGS +FCFLAGS= +echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5 +echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_fc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FCFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_fc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_fc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_fc_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FCFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_fc_g = yes; then + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-g -O2" + else + FCFLAGS="-g" + fi +else + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-O2" + else + FCFLAGS= + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=${FC_SRCEXT-f} +ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in f95 fort xlf95 ifc efc pgf95 lf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$FC"; then + ac_cv_prog_FC="$FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_FC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +FC=$ac_cv_prog_FC +if test -n "$FC"; then + echo "$as_me:$LINENO: result: $FC" >&5 +echo "${ECHO_T}$FC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FC" && break + done +fi +if test -z "$FC"; then + ac_ct_FC=$FC + for ac_prog in f95 fort xlf95 ifc efc pgf95 lf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_FC"; then + ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_FC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_FC=$ac_cv_prog_ac_ct_FC +if test -n "$ac_ct_FC"; then + echo "$as_me:$LINENO: result: $ac_ct_FC" >&5 +echo "${ECHO_T}$ac_ct_FC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_FC" && break +done + + FC=$ac_ct_FC +fi + + +# Provide some information about the compiler. +echo "$as_me:10355:" \ + "checking for Fortran compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6 +if test "${ac_cv_fc_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_fc_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FCFLAGS+set} +ac_save_FFLAGS=$FCFLAGS +FCFLAGS= +echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5 +echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_fc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FCFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_fc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_fc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_fc_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FCFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_fc_g = yes; then + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-g -O2" + else + FCFLAGS="-g" + fi +else + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-O2" + else + FCFLAGS= + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + + + + ac_ext=${FC_SRCEXT-f} +ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu + + +archive_cmds_need_lc_FC=no +allow_undefined_flag_FC= +always_export_symbols_FC=no +archive_expsym_cmds_FC= +export_dynamic_flag_spec_FC= +hardcode_direct_FC=no +hardcode_direct_absolute_FC=no +hardcode_libdir_flag_spec_FC= +hardcode_libdir_flag_spec_ld_FC= +hardcode_libdir_separator_FC= +hardcode_minus_L_FC=no +hardcode_automatic_FC=no +inherit_rpath_FC=no +module_cmds_FC= +module_expsym_cmds_FC= +link_all_deplibs_FC=unknown +old_archive_cmds_FC=$old_archive_cmds +no_undefined_flag_FC= +whole_archive_flag_spec_FC= +enable_shared_with_static_runtimes_FC=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +objext_FC=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + CC=${FC-"f95"} + compiler=$CC + compiler_FC=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + + if test -n "$compiler"; then + echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + + echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + + echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + + GCC_FC="$ac_cv_fc_compiler_gnu" + LD_FC="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_FC= +postdep_objects_FC= +predeps_FC= +postdeps_FC= +compiler_lib_search_path_FC= + +cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF + +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$ECHO "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_FC"; then + compiler_lib_search_path_FC="${prev}${p}" + else + compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_FC"; then + postdeps_FC="${prev}${p}" + else + postdeps_FC="${postdeps_FC} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_FC"; then + predep_objects_FC="$p" + else + predep_objects_FC="$predep_objects_FC $p" + fi + else + if test -z "$postdep_objects_FC"; then + postdep_objects_FC="$p" + else + postdep_objects_FC="$postdep_objects_FC $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling FC test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken + + +case " $postdeps_FC " in +*" -lc "*) archive_cmds_need_lc_FC=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_FC= +lt_prog_compiler_pic_FC= +lt_prog_compiler_static_FC= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_FC='-Wl,' + lt_prog_compiler_static_FC='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_FC='-Bstatic' + fi + ;; + + amigaos*) + if test "$host_cpu" = m68k; then + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4' + fi + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_FC='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_FC='-fno-common' + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_FC='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_FC=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_FC='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_FC=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic_FC='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_FC='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_FC='-Bstatic' + else + lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_FC='-qnocommon' + lt_prog_compiler_wl_FC='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_FC='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_FC='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_FC='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_FC='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_FC='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_FC='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_FC='-Wl,' + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_FC='-Wl,' + lt_prog_compiler_pic_FC='-fpic' + lt_prog_compiler_static_FC='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_FC='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_FC='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-Bstatic' + lt_prog_compiler_wl_FC='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-Bstatic' + lt_prog_compiler_wl_FC='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_FC='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_FC='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_FC='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_FC='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_FC='-Qoption ld ';; + *) + lt_prog_compiler_wl_FC='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_FC='-Qoption ld ' + lt_prog_compiler_pic_FC='-PIC' + lt_prog_compiler_static_FC='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_FC='-Wl,' + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_FC='-Kconform_pic' + lt_prog_compiler_static_FC='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_FC='-Wl,' + lt_prog_compiler_pic_FC='-KPIC' + lt_prog_compiler_static_FC='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_FC='-Wl,' + lt_prog_compiler_can_build_shared_FC=no + ;; + + uts4*) + lt_prog_compiler_pic_FC='-pic' + lt_prog_compiler_static_FC='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_FC=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_FC= + ;; + *) + lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC" + ;; +esac +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_FC" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_FC" >&6 + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_FC"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_FC=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_FC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11071: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11075: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_FC=yes + fi + fi + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_FC" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_FC" >&6 + +if test x"$lt_prog_compiler_pic_works_FC" = xyes; then + case $lt_prog_compiler_pic_FC in + "" | " "*) ;; + *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;; + esac +else + lt_prog_compiler_pic_FC= + lt_prog_compiler_can_build_shared_FC=no +fi + +fi + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_FC=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_FC=yes + fi + else + lt_prog_compiler_static_works_FC=yes + fi + fi + $RM conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_FC" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_FC" >&6 + +if test x"$lt_prog_compiler_static_works_FC" = xyes; then + : +else + lt_prog_compiler_static_FC= +fi + + + + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_FC=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11170: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11174: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_FC=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_FC" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_FC" >&6 + + + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_FC=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11222: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11226: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_FC=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_FC" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_FC" >&6 + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_FC= + always_export_symbols_FC=no + archive_cmds_FC= + archive_expsym_cmds_FC= + compiler_needs_object_FC=no + enable_shared_with_static_runtimes_FC=no + export_dynamic_flag_spec_FC= + export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic_FC=no + hardcode_direct_FC=no + hardcode_direct_absolute_FC=no + hardcode_libdir_flag_spec_FC= + hardcode_libdir_flag_spec_ld_FC= + hardcode_libdir_separator_FC= + hardcode_minus_L_FC=no + hardcode_shlibpath_var_FC=unsupported + inherit_rpath_FC=no + link_all_deplibs_FC=unknown + module_cmds_FC= + module_expsym_cmds_FC= + old_archive_from_new_cmds_FC= + old_archive_from_expsyms_cmds_FC= + thread_safe_flag_spec_FC= + whole_archive_flag_spec_FC= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_FC= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_FC="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_FC=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_FC='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_FC= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_FC=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + if test "$host_cpu" = m68k; then + archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_minus_L_FC=yes + fi + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_FC=no + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_FC=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_FC=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_FC='-L$libdir' + allow_undefined_flag_FC=unsupported + always_export_symbols_FC=no + enable_shared_with_static_runtimes_FC=yes + export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_FC=no + fi + ;; + + interix[3-9]*) + hardcode_direct_FC=no + hardcode_shlibpath_var_FC=no + hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir' + export_dynamic_flag_spec_FC='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_FC=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_FC=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs_FC=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_FC=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_FC=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_FC=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_FC=yes + hardcode_shlibpath_var_FC=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_FC=no + fi + ;; + esac + + if test "$ld_shlibs_FC" = no; then + runpath_var= + hardcode_libdir_flag_spec_FC= + export_dynamic_flag_spec_FC= + whole_archive_flag_spec_FC= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_FC=unsupported + always_export_symbols_FC=yes + archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_FC=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_FC=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_FC='' + hardcode_direct_FC=yes + hardcode_direct_absolute_FC=yes + hardcode_libdir_separator_FC=':' + link_all_deplibs_FC=yes + file_list_spec_FC='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_FC=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_FC=yes + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_libdir_separator_FC= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_FC=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_FC='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_FC="-z nodefs" + archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_FC=' ${wl}-bernotok' + allow_undefined_flag_FC=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_FC='$convenience' + archive_cmds_need_lc_FC=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + if test "$host_cpu" = m68k; then + archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_minus_L_FC=yes + fi + # see comment about different semantics on the GNU ld section + ld_shlibs_FC=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_FC=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_FC=' ' + allow_undefined_flag_FC=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds_FC='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_FC='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_FC=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_FC='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[012]) + allow_undefined_flag_FC='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_FC='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + ;; + esac + archive_cmds_need_lc_FC=no + hardcode_direct_FC=no + hardcode_automatic_FC=yes + hardcode_shlibpath_var_FC=unsupported + whole_archive_flag_spec_FC='' + link_all_deplibs_FC=yes + if test "$GCC" = yes ; then + if test "${lt_cv_apple_cc_single_mod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi-module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm libconftest.dylib + fi + rm conftest.$ac_ext + fi +fi + + output_verbose_link_cmd=echo + if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then + archive_cmds_FC='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + archive_expsym_cmds_FC='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $single_module -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_cmds_FC='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + archive_expsym_cmds_FC='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_cmds_FC='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + module_expsym_cmds_FC='sed -e "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd=echo + archive_cmds_FC='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO $rpath/$soname` $verstring' + module_cmds_FC='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_FC='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_FC='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_FC=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_shlibpath_var_FC=no + ;; + + freebsd1*) + ld_shlibs_FC=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_FC='-R$libdir' + hardcode_direct_FC=yes + hardcode_shlibpath_var_FC=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_FC=yes + hardcode_minus_L_FC=yes + hardcode_shlibpath_var_FC=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_FC='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_FC='-R$libdir' + hardcode_direct_FC=yes + hardcode_shlibpath_var_FC=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_FC=: + hardcode_direct_FC=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_FC=yes + export_dynamic_flag_spec_FC='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_FC='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_FC='+b $libdir' + hardcode_libdir_separator_FC=: + hardcode_direct_FC=yes + hardcode_direct_absolute_FC=yes + export_dynamic_flag_spec_FC='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_FC=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_FC='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_FC=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_FC=no + hardcode_shlibpath_var_FC=no + ;; + *) + hardcode_direct_FC=yes + hardcode_direct_absolute_FC=yes + export_dynamic_flag_spec_FC='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_FC=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat >conftest.$ac_ext <<_ACEOF +int foo(void) {} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc_FC='no' + hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_FC=: + inherit_rpath_FC=yes + link_all_deplibs_FC=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_FC='-R$libdir' + hardcode_direct_FC=yes + hardcode_shlibpath_var_FC=no + ;; + + newsos6) + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_FC=yes + hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_FC=: + hardcode_shlibpath_var_FC=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + hardcode_direct_FC=yes + hardcode_shlibpath_var_FC=no + hardcode_direct_absolute_FC=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir' + export_dynamic_flag_spec_FC='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_FC='-R$libdir' + ;; + *) + archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_minus_L_FC=yes + allow_undefined_flag_FC=unsupported + archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_FC=' -expect_unresolved \*' + archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc_FC='no' + hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_FC=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_FC=' -expect_unresolved \*' + archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_FC='-rpath $libdir' + fi + archive_cmds_need_lc_FC='no' + hardcode_libdir_separator_FC=: + ;; + + solaris*) + no_undefined_flag_FC=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_FC='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec_FC='-R$libdir' + hardcode_shlibpath_var_FC=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_FC=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_direct_FC=yes + hardcode_minus_L_FC=yes + hardcode_shlibpath_var_FC=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_FC=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_FC='$CC -r -o $output$reload_objs' + hardcode_direct_FC=no + ;; + motorola) + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_FC=no + ;; + + sysv4.3*) + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_FC=no + export_dynamic_flag_spec_FC='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_FC=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_FC=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_FC='${wl}-z,text' + archive_cmds_need_lc_FC=no + hardcode_shlibpath_var_FC=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_FC='${wl}-z,text' + allow_undefined_flag_FC='${wl}-z,nodefs' + archive_cmds_need_lc_FC=no + hardcode_shlibpath_var_FC=no + hardcode_libdir_flag_spec_FC='${wl}-R,$libdir' + hardcode_libdir_separator_FC=':' + link_all_deplibs_FC=yes + export_dynamic_flag_spec_FC='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_FC='-L$libdir' + hardcode_shlibpath_var_FC=no + ;; + + *) + ld_shlibs_FC=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec_FC='${wl}-Blargedynsym' + ;; + esac + fi + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_FC" >&5 +echo "${ECHO_T}$ld_shlibs_FC" >&6 +test "$ld_shlibs_FC" = no && can_build_shared=no + +with_gnu_ld_FC=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_FC" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_FC=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_FC in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_FC + pic_flag=$lt_prog_compiler_pic_FC + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_FC + allow_undefined_flag_FC= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_FC=no + else + archive_cmds_need_lc_FC=yes + fi + allow_undefined_flag_FC=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_FC" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_FC" >&6 + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +withGCC=$ac_cv_fc_compiler_gnu +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + if test "$host_cpu" = m68k; then + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + else + dynamic_linker=no + fi + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $withGCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\"" + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir"; then + shlibpath_overrides_runpath=yes +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_FC= +if test -n "$hardcode_libdir_flag_spec_FC" || + test -n "$runpath_var_FC" || + test "X$hardcode_automatic_FC" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_FC" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no && + test "$hardcode_minus_L_FC" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_FC=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_FC=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_FC=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_FC" >&5 +echo "${ECHO_T}$hardcode_action_FC" >&6 + +if test "$hardcode_action_FC" = relink || + test "$inherit_rpath_FC" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +FCFLAGS="$FCFLAGS -Wall" + +# For libtool versioning info, format is CURRENT:REVISION:AGE +libtool_VERSION=1:0:0 + + +# Check header files. echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then @@ -5391,78 +13424,6 @@ _ACEOF fi -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - @@ -8681,6 +16642,24 @@ cat >>confdefs.h <<\_ACEOF _ACEOF ;; +esac + + # Check whether --enable-linux-futex or --disable-linux-futex was given. +if test "${enable_linux_futex+set}" = set; then + enableval="$enable_linux_futex" + + case "$enableval" in + yes|no|default) ;; + *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable linux-futex" >&5 +echo "$as_me: error: Unknown argument to enable/disable linux-futex" >&2;} + { (exit 1); exit 1; }; } ;; + esac + +else + enable_linux_futex=default +fi; + +case "$target" in *-linux*) case "$enable_linux_futex" in default) @@ -8729,7 +16708,9 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - cat >conftest.$ac_ext <<_ACEOF + save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -8777,7 +16758,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 if test x$cross_compiling = xno; then if getconf GNU_LIBPTHREAD_VERSION 2>/dev/null \ - | LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then + | LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then :; else { echo "$as_me:$LINENO: WARNING: The kernel might not support futex or gettid syscalls. If so, please configure with --disable-linux-futex" >&5 echo "$as_me: WARNING: The kernel might not support futex or gettid syscalls. @@ -8788,6 +16769,7 @@ If so, please configure with --disable-linux-futex" >&2;} fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -8849,7 +16831,76 @@ rm -f conftest.err conftest.$ac_objext \ ;; esac ;; + *) + enable_linux_futex=no + ;; esac +if test x$enable_linux_futex = xyes; then + : +fi + + +# Check for pthread_{,attr_}[sg]etaffinity_np. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _GNU_SOURCE + #include +int +main () +{ +cpu_set_t cpuset; + pthread_attr_t attr; + pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + if (CPU_ISSET (0, &cpuset)) + CPU_SET (1, &cpuset); + else + CPU_ZERO (&cpuset); + pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + pthread_attr_init (&attr); + pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); + pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_PTHREAD_AFFINITY_NP 1 +_ACEOF + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext # At least for glibc, clock_gettime is in librt. But don't pull that # in if it still doesn't give us the function we want. @@ -8948,17 +16999,17 @@ fi; echo "$as_me:$LINENO: checking whether the target supports thread-local storage" >&5 echo $ECHO_N "checking whether the target supports thread-local storage... $ECHO_C" >&6 -if test "${have_tls+set}" = set; then +if test "${gcc_cv_have_tls+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then - cat >conftest.$ac_ext <<_ACEOF -__thread int foo; + cat >conftest.$ac_ext <<_ACEOF +__thread int a; int b; int main() { return a = b; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -8972,20 +17023,22 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_tls=yes + gcc_cv_have_tls=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -have_tls=no +gcc_cv_have_tls=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + else cat >conftest.$ac_ext <<_ACEOF @@ -9002,7 +17055,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - save_LDFLAGS="$LDFLAGS" + chktls_save_LDFLAGS="$LDFLAGS" LDFLAGS="-static $LDFLAGS" cat >conftest.$ac_ext <<_ACEOF int main() { return 0; } @@ -9050,14 +17103,14 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_tls=yes + gcc_cv_have_tls=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -have_tls=no +gcc_cv_have_tls=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi @@ -9065,25 +17118,147 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -have_tls=yes +gcc_cv_have_tls=yes fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS="$chktls_save_LDFLAGS" + if test $gcc_cv_have_tls = yes; then + chktls_save_CFLAGS="$CFLAGS" + thread_CFLAGS=failed + for flag in '' '-pthread' '-lpthread'; do + CFLAGS="$flag $chktls_save_CFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + void *g(void *d) { return NULL; } +int +main () +{ +pthread_t t; pthread_create(&t,NULL,g,NULL); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + thread_CFLAGS="$flag" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "X$thread_CFLAGS" != Xfailed; then + break + fi + done + CFLAGS="$chktls_save_CFLAGS" + if test "X$thread_CFLAGS" != Xfailed; then + CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + __thread int a; + static int *a_in_other_thread; + static void * + thread_func (void *arg) + { + a_in_other_thread = &a; + return (void *)0; + } +int +main () +{ +pthread_t thread; + void *thread_retval; + int *a_in_main_thread; + if (pthread_create (&thread, (pthread_attr_t *)0, + thread_func, (void *)0)) + return 0; + a_in_main_thread = &a; + if (pthread_join (thread, &thread_retval)) + return 0; + return (a_in_other_thread == a_in_main_thread); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gcc_cv_have_tls=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -have_tls=no +gcc_cv_have_tls=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + CFLAGS="$chktls_save_CFLAGS" + fi + fi +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +gcc_cv_have_tls=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi -echo "$as_me:$LINENO: result: $have_tls" >&5 -echo "${ECHO_T}$have_tls" >&6 - if test "$enable_tls $have_tls" = "yes yes"; then +echo "$as_me:$LINENO: result: $gcc_cv_have_tls" >&5 +echo "${ECHO_T}$gcc_cv_have_tls" >&6 + if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then cat >>confdefs.h <<\_ACEOF #define HAVE_TLS 1 @@ -9288,6 +17463,118 @@ _ACEOF fi + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + # If we're not using GNU ld, then there's no point in even trying these # tests. Check for that first. We should have already tested for gld # by now (in libtool), but require it now just to be safe... @@ -11703,6 +19990,339 @@ CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} CC="$CC" AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' +predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' +postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' +LD_FC='`$ECHO "X$LD_FC" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds_FC='`$ECHO "X$old_archive_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +compiler_FC='`$ECHO "X$compiler_FC" | $Xsed -e "$delay_single_quote_subst"`' +GCC_FC='`$ECHO "X$GCC_FC" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_FC='`$ECHO "X$lt_prog_compiler_no_builtin_flag_FC" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl_FC='`$ECHO "X$lt_prog_compiler_wl_FC" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic_FC='`$ECHO "X$lt_prog_compiler_pic_FC" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static_FC='`$ECHO "X$lt_prog_compiler_static_FC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_FC='`$ECHO "X$lt_cv_prog_compiler_c_o_FC" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc_FC='`$ECHO "X$archive_cmds_need_lc_FC" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_FC='`$ECHO "X$enable_shared_with_static_runtimes_FC" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec_FC='`$ECHO "X$export_dynamic_flag_spec_FC" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec_FC='`$ECHO "X$whole_archive_flag_spec_FC" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object_FC='`$ECHO "X$compiler_needs_object_FC" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds_FC='`$ECHO "X$old_archive_from_new_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_FC='`$ECHO "X$old_archive_from_expsyms_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_FC='`$ECHO "X$archive_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds_FC='`$ECHO "X$archive_expsym_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds_FC='`$ECHO "X$module_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds_FC='`$ECHO "X$module_expsym_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld_FC='`$ECHO "X$with_gnu_ld_FC" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag_FC='`$ECHO "X$allow_undefined_flag_FC" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag_FC='`$ECHO "X$no_undefined_flag_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_FC='`$ECHO "X$hardcode_libdir_flag_spec_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_FC='`$ECHO "X$hardcode_libdir_flag_spec_ld_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator_FC='`$ECHO "X$hardcode_libdir_separator_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_FC='`$ECHO "X$hardcode_direct_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute_FC='`$ECHO "X$hardcode_direct_absolute_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L_FC='`$ECHO "X$hardcode_minus_L_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var_FC='`$ECHO "X$hardcode_shlibpath_var_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic_FC='`$ECHO "X$hardcode_automatic_FC" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath_FC='`$ECHO "X$inherit_rpath_FC" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs_FC='`$ECHO "X$link_all_deplibs_FC" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path_FC='`$ECHO "X$fix_srcfile_path_FC" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols_FC='`$ECHO "X$always_export_symbols_FC" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds_FC='`$ECHO "X$export_symbols_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms_FC='`$ECHO "X$exclude_expsyms_FC" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms_FC='`$ECHO "X$include_expsyms_FC" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds_FC='`$ECHO "X$prelink_cmds_FC" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec_FC='`$ECHO "X$file_list_spec_FC" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action_FC='`$ECHO "X$hardcode_action_FC" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects_FC='`$ECHO "X$predep_objects_FC" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects_FC='`$ECHO "X$postdep_objects_FC" | $Xsed -e "$delay_single_quote_subst"`' +predeps_FC='`$ECHO "X$predeps_FC" | $Xsed -e "$delay_single_quote_subst"`' +postdeps_FC='`$ECHO "X$postdeps_FC" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path_FC='`$ECHO "X$compiler_lib_search_path_FC" | $Xsed -e "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +AR \ +AR_FLAGS \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +SHELL \ +ECHO \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_wl \ +lt_prog_compiler_pic \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +fix_srcfile_path \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +finish_eval \ +old_striplib \ +striplib \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_FC \ +compiler_FC \ +lt_prog_compiler_no_builtin_flag_FC \ +lt_prog_compiler_wl_FC \ +lt_prog_compiler_pic_FC \ +lt_prog_compiler_static_FC \ +lt_cv_prog_compiler_c_o_FC \ +export_dynamic_flag_spec_FC \ +whole_archive_flag_spec_FC \ +compiler_needs_object_FC \ +with_gnu_ld_FC \ +allow_undefined_flag_FC \ +no_undefined_flag_FC \ +hardcode_libdir_flag_spec_FC \ +hardcode_libdir_flag_spec_ld_FC \ +hardcode_libdir_separator_FC \ +fix_srcfile_path_FC \ +exclude_expsyms_FC \ +include_expsyms_FC \ +file_list_spec_FC \ +predep_objects_FC \ +postdep_objects_FC \ +predeps_FC \ +postdeps_FC \ +compiler_lib_search_path_FC; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +old_archive_cmds_FC \ +old_archive_from_new_cmds_FC \ +old_archive_from_expsyms_cmds_FC \ +archive_cmds_FC \ +archive_expsym_cmds_FC \ +module_cmds_FC \ +module_expsym_cmds_FC \ +export_symbols_cmds_FC \ +prelink_cmds_FC; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` + ;; +esac + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + + GCC="$GCC" CC="$CC" acx_cv_header_stdint="$acx_cv_header_stdint" @@ -11739,6 +20359,7 @@ do "libgomp.spec" ) CONFIG_FILES="$CONFIG_FILES libgomp.spec" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "gstdint.h" ) CONFIG_COMMANDS="$CONFIG_COMMANDS gstdint.h" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 @@ -11886,8 +20507,19 @@ s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@PERL@,$PERL,;t t s,@BUILD_INFO_TRUE@,$BUILD_INFO_TRUE,;t t s,@BUILD_INFO_FALSE@,$BUILD_INFO_FALSE,;t t -s,@LN_S@,$LN_S,;t t s,@LIBTOOL@,$LIBTOOL,;t t +s,@SED@,$SED,;t t +s,@EGREP@,$EGREP,;t t +s,@FGREP@,$FGREP,;t t +s,@GREP@,$GREP,;t t +s,@LD@,$LD,;t t +s,@DUMPBIN@,$DUMPBIN,;t t +s,@ac_ct_DUMPBIN@,$ac_ct_DUMPBIN,;t t +s,@NM@,$NM,;t t +s,@LN_S@,$LN_S,;t t +s,@lt_ECHO@,$lt_ECHO,;t t +s,@CPP@,$CPP,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t s,@enable_shared@,$enable_shared,;t t s,@enable_static@,$enable_static,;t t s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t @@ -11898,9 +20530,6 @@ s,@FCFLAGS@,$FCFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@ac_ct_FC@,$ac_ct_FC,;t t s,@libtool_VERSION@,$libtool_VERSION,;t t -s,@CPP@,$CPP,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@EGREP@,$EGREP,;t t s,@SECTION_LDFLAGS@,$SECTION_LDFLAGS,;t t s,@OPT_LDFLAGS@,$OPT_LDFLAGS,;t t s,@LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE@,$LIBGOMP_BUILD_VERSIONED_SHLIB_TRUE,;t t @@ -12608,6 +21237,716 @@ echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} echo '# dummy' > "$dirpart/$file" done done + ;; + libtool ) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007 Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, a copy can be downloaded from +# http://www.gnu.org/copyleft/gpl.html, or by writing to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# The names of the tagged configurations supported by this script. +available_tags="FC " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: FC + +# The linker used to build libraries. +LD=$lt_LD_FC + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_FC + +# A language specific compiler. +CC=$lt_compiler_FC + +# Is the compiler the GNU compiler? +with_gcc=$GCC_FC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_FC + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_FC + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_FC + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_FC + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_FC + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_FC +archive_expsym_cmds=$lt_archive_expsym_cmds_FC + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_FC +module_expsym_cmds=$lt_module_expsym_cmds_FC + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_FC + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_FC + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_FC + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_FC + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_FC + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_FC + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_FC + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_FC + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_FC + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_FC + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_FC + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path_FC + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_FC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_FC + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_FC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_FC + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_FC + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_FC + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_FC + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_FC +postdep_objects=$lt_postdep_objects_FC +predeps=$lt_predeps_FC +postdeps=$lt_postdeps_FC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_FC + +# ### END LIBTOOL TAG CONFIG: FC +_LT_EOF + ;; gstdint.h ) if test "$GCC" = yes; then @@ -12650,33 +21989,51 @@ if test "$acx_cv_header_stdint" = stddef.h; then #ifndef _UINT8_T #define _UINT8_T + #ifndef __uint8_t_defined + #define __uint8_t_defined typedef unsigned $acx_cv_type_int8_t uint8_t; #endif + #endif #ifndef _UINT16_T #define _UINT16_T + #ifndef __uint16_t_defined + #define __uint16_t_defined typedef unsigned $acx_cv_type_int16_t uint16_t; #endif + #endif #ifndef _UINT32_T #define _UINT32_T + #ifndef __uint32_t_defined + #define __uint32_t_defined typedef unsigned $acx_cv_type_int32_t uint32_t; #endif + #endif #ifndef _INT8_T #define _INT8_T + #ifndef __int8_t_defined + #define __int8_t_defined typedef $acx_cv_type_int8_t int8_t; #endif + #endif #ifndef _INT16_T #define _INT16_T + #ifndef __int16_t_defined + #define __int16_t_defined typedef $acx_cv_type_int16_t int16_t; #endif + #endif #ifndef _INT32_T #define _INT32_T + #ifndef __int32_t_defined + #define __int32_t_defined typedef $acx_cv_type_int32_t int32_t; #endif + #endif EOF elif test "$ac_cv_type_u_int32_t" = yes; then sed 's/^ *//' >> tmp-stdint.h <> tmp-stdint.h <> tmp-stdint.h <> tmp-stdint.h <= 199901L #ifndef _INT64_T #define _INT64_T + #ifndef __int64_t_defined typedef long long int64_t; #endif + #endif #ifndef _UINT64_T #define _UINT64_T typedef unsigned long long uint64_t; @@ -12822,8 +22196,12 @@ if test "$ac_cv_type_uintptr_t" != yes; then sed 's/^ *//' >> tmp-stdint.h < - int lk;], - [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])], - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [#ifndef _GNU_SOURCE - #define _GNU_SOURCE 1 - #endif - #include - pthread_t th; void *status;], - [pthread_tryjoin_np (th, &status);])],[enable_linux_futex=yes], - [if test x$cross_compiling = xno; then - if getconf GNU_LIBPTHREAD_VERSION 2>/dev/null \ - | LC_ALL=C grep -i NPTL > /dev/null 2>/dev/null; then - AC_MSG_WARN([The kernel might not support futex or gettid syscalls. -If so, please configure with --disable-linux-futex]) - fi - fi - enable_linux_futex=yes])]) - ;; - yes) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [#include - int lk;], - [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],[], - [AC_MSG_ERROR([SYS_gettid and SYS_futex required for --enable-linux-futex])]) - ;; - esac - ;; esac +GCC_LINUX_FUTEX(:) + +# Check for pthread_{,attr_}[sg]etaffinity_np. +AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#define _GNU_SOURCE + #include ], + [cpu_set_t cpuset; + pthread_attr_t attr; + pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + if (CPU_ISSET (0, &cpuset)) + CPU_SET (1, &cpuset); + else + CPU_ZERO (&cpuset); + pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + pthread_attr_init (&attr); + pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); + pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset);])], + AC_DEFINE(HAVE_PTHREAD_AFFINITY_NP, 1, +[ Define if pthread_{,attr_}{g,s}etaffinity_np is supported.])) + # At least for glibc, clock_gettime is in librt. But don't pull that # in if it still doesn't give us the function we want. if test $ac_cv_func_clock_gettime = no; then diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt index 89bae02e80a7..68115abf71d5 100644 --- a/libgomp/configure.tgt +++ b/libgomp/configure.tgt @@ -11,14 +11,11 @@ # XLDFLAGS Add extra link flags to use. # Optimize TLS usage by avoiding the overhead of dynamic allocation. -# This does require that the library be present during process -# startup, so mark the library as not to be dlopened. -if test $have_tls = yes ; then +if test $gcc_cv_have_tls = yes ; then case "${target}" in *-*-linux*) XCFLAGS="${XCFLAGS} -ftls-model=initial-exec" - XLDFLAGS="${XLDFLAGS} -Wl,-z,nodlopen" ;; esac fi @@ -49,9 +46,14 @@ if test $enable_linux_futex = yes; then # Note that bare i386 is not included here. We need cmpxchg. i[456]86-*-linux*) config_path="linux/x86 linux posix" - if test -z "$with_arch"; then - XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" - fi + case " ${CC} ${CFLAGS} " in + *" -m64 "*) + ;; + *) + if test -z "$with_arch"; then + XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" + fi + esac ;; # Similar jiggery-pokery for x86_64 multilibs, except here we diff --git a/libgomp/env.c b/libgomp/env.c index f07b31b914b3..4a07bfa4975a 100644 --- a/libgomp/env.c +++ b/libgomp/env.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2006 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). @@ -42,6 +42,8 @@ bool gomp_dyn_var = false; bool gomp_nest_var = false; enum gomp_schedule_type gomp_run_sched_var = GFS_DYNAMIC; unsigned long gomp_run_sched_chunk = 1; +unsigned short *gomp_cpu_affinity; +size_t gomp_cpu_affinity_len; /* Parse the OMP_SCHEDULE environment variable. */ @@ -177,6 +179,97 @@ parse_boolean (const char *name, bool *value) gomp_error ("Invalid value for environment variable %s", name); } +/* Parse the GOMP_CPU_AFFINITY environment varible. Return true if one was + present and it was successfully parsed. */ + +static bool +parse_affinity (void) +{ + char *env, *end; + unsigned long cpu_beg, cpu_end, cpu_stride; + unsigned short *cpus = NULL; + size_t allocated = 0, used = 0, needed; + + env = getenv ("GOMP_CPU_AFFINITY"); + if (env == NULL) + return false; + + do + { + while (*env == ' ' || *env == '\t') + env++; + + cpu_beg = strtoul (env, &end, 0); + cpu_end = cpu_beg; + cpu_stride = 1; + if (env == end || cpu_beg >= 65536) + goto invalid; + + env = end; + if (*env == '-') + { + cpu_end = strtoul (++env, &end, 0); + if (env == end || cpu_end >= 65536 || cpu_end < cpu_beg) + goto invalid; + + env = end; + if (*env == ':') + { + cpu_stride = strtoul (++env, &end, 0); + if (env == end || cpu_stride == 0 || cpu_stride >= 65536) + goto invalid; + + env = end; + } + } + + needed = (cpu_end - cpu_beg) / cpu_stride + 1; + if (used + needed >= allocated) + { + unsigned short *new_cpus; + + if (allocated < 64) + allocated = 64; + if (allocated > needed) + allocated <<= 1; + else + allocated += 2 * needed; + new_cpus = realloc (cpus, allocated * sizeof (unsigned short)); + if (new_cpus == NULL) + { + free (cpus); + gomp_error ("not enough memory to store GOMP_CPU_AFFINITY list"); + return false; + } + + cpus = new_cpus; + } + + while (needed--) + { + cpus[used++] = cpu_beg; + cpu_beg += cpu_stride; + } + + while (*env == ' ' || *env == '\t') + env++; + + if (*env == ',') + env++; + else if (*env == '\0') + break; + } + while (1); + + gomp_cpu_affinity = cpus; + gomp_cpu_affinity_len = used; + return true; + + invalid: + gomp_error ("Invalid value for enviroment variable GOMP_CPU_AFFINITY"); + return false; +} + static void __attribute__((constructor)) initialize_env (void) { @@ -190,6 +283,8 @@ initialize_env (void) parse_boolean ("OMP_NESTED", &gomp_nest_var); if (!parse_unsigned_long ("OMP_NUM_THREADS", &gomp_nthreads_var)) gomp_init_num_threads (); + if (parse_affinity ()) + gomp_init_affinity (); /* Not strictly environment related, but ordering constructors is tricky. */ pthread_attr_init (&gomp_thread_attr); diff --git a/libgomp/iter.c b/libgomp/iter.c index 1a8a2a7d04fd..2d5dd2edd5a7 100644 --- a/libgomp/iter.c +++ b/libgomp/iter.c @@ -242,16 +242,16 @@ gomp_iter_guided_next_locked (long *pstart, long *pend) if (ws->next == ws->end) return false; - n = (ws->end - ws->next) / ws->incr; + start = ws->next; + n = (ws->end - start) / ws->incr; q = (n + nthreads - 1) / nthreads; if (q < ws->chunk_size) q = ws->chunk_size; - if (q > n) - q = n; - - start = ws->next; - end = start + q * ws->incr; + if (q <= n) + end = start + q * ws->incr; + else + end = ws->end; ws->next = end; *pstart = start; @@ -286,15 +286,15 @@ gomp_iter_guided_next (long *pstart, long *pend) if (start == end) return false; - n = (end - start) / ws->incr; + n = (end - start) / incr; q = (n + nthreads - 1) / nthreads; if (q < chunk_size) q = chunk_size; - if (q > n) - q = n; - - nend = start + q * incr; + if (__builtin_expect (q <= n, 1)) + nend = start + q * incr; + else + nend = end; tmp = __sync_val_compare_and_swap (&ws->next, start, nend); if (__builtin_expect (tmp == start, 1)) diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h index 47e68e69cfec..7075250a87fc 100644 --- a/libgomp/libgomp.h +++ b/libgomp/libgomp.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2007 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). @@ -246,8 +246,18 @@ extern unsigned long gomp_run_sched_chunk; /* The attributes to be used during thread creation. */ extern pthread_attr_t gomp_thread_attr; +/* Other variables. */ + +extern unsigned short *gomp_cpu_affinity; +extern size_t gomp_cpu_affinity_len; + /* Function prototypes. */ +/* affinity.c */ + +extern void gomp_init_affinity (void); +extern void gomp_init_thread_affinity (pthread_attr_t *); + /* alloc.c */ extern void *gomp_malloc (size_t) __attribute__((malloc)); diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index c48cf93e089f..f92a5da77fd8 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -895,14 +895,25 @@ dynamic scheduling and a chunk size of 1 is used. @cindex Environment Variable @table @asis @item @emph{Description}: -A patch for this extension has been submitted, but was not yet applied at the -time of writing. +Binds threads to specific CPUs. The variable should contain a space- or +comma-separated list of CPUs. This list may contain different kind of +entries: either single CPU numbers in any order, a range of CPUs (M-N) +or a range with some stride (M-N:S). CPU numbers are zero based. For example, +@code{GOMP_CPU_AFFINITY="0 3 1-2 4-15:2"} will bind the initial thread +to CPU 0, the second to CPU 3, the third to CPU 1, the fourth to +CPU 2, the fifth to CPU 4, the sixth through tenth to CPUs 6, 8, 10, 12, +and 14 respectively and then start assigning back from the beginning of +the list. @code{GOMP_CPU_AFFINITY=0} binds all threads to CPU 0. -@item @emph{Reference}: -@uref{http://gcc.gnu.org/ml/gcc-patches/2006-05/msg00982.html, -GCC Patches Mailinglist} -@uref{http://gcc.gnu.org/ml/gcc-patches/2006-05/msg01133.html, -GCC Patches Mailinglist} +There is no GNU OpenMP library routine to determine whether a CPU affinity +specification is in effect. As a workaround, language-specific library +functions, e.g., @code{getenv} in C or @code{GET_ENVIRONMENT_VARIABLE} in +Fortran, may be used to query the setting of the @code{GOMP_CPU_AFFINITY} +environment variable. A defined CPU affinity on startup cannot be changed +or disabled during the runtime of the application. + +If this environment variable is omitted, the host system will handle the +assignment of threads to CPUs. @end table diff --git a/libgomp/omp.h.in b/libgomp/omp.h.in index 44fda9088c33..5ebcdbb27351 100644 --- a/libgomp/omp.h.in +++ b/libgomp/omp.h.in @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2007 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). @@ -49,36 +49,39 @@ typedef struct #ifdef __cplusplus extern "C" { +# define __GOMP_NOTHROW throw () +#else +# define __GOMP_NOTHROW __attribute__((__nothrow__)) #endif -extern void omp_set_num_threads (int); -extern int omp_get_num_threads (void); -extern int omp_get_max_threads (void); -extern int omp_get_thread_num (void); -extern int omp_get_num_procs (void); +extern void omp_set_num_threads (int) __GOMP_NOTHROW; +extern int omp_get_num_threads (void) __GOMP_NOTHROW; +extern int omp_get_max_threads (void) __GOMP_NOTHROW; +extern int omp_get_thread_num (void) __GOMP_NOTHROW; +extern int omp_get_num_procs (void) __GOMP_NOTHROW; -extern int omp_in_parallel (void); +extern int omp_in_parallel (void) __GOMP_NOTHROW; -extern void omp_set_dynamic (int); -extern int omp_get_dynamic (void); +extern void omp_set_dynamic (int) __GOMP_NOTHROW; +extern int omp_get_dynamic (void) __GOMP_NOTHROW; -extern void omp_set_nested (int); -extern int omp_get_nested (void); +extern void omp_set_nested (int) __GOMP_NOTHROW; +extern int omp_get_nested (void) __GOMP_NOTHROW; -extern void omp_init_lock (omp_lock_t *); -extern void omp_destroy_lock (omp_lock_t *); -extern void omp_set_lock (omp_lock_t *); -extern void omp_unset_lock (omp_lock_t *); -extern int omp_test_lock (omp_lock_t *); +extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW; +extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW; +extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW; +extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW; +extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW; -extern void omp_init_nest_lock (omp_nest_lock_t *); -extern void omp_destroy_nest_lock (omp_nest_lock_t *); -extern void omp_set_nest_lock (omp_nest_lock_t *); -extern void omp_unset_nest_lock (omp_nest_lock_t *); -extern int omp_test_nest_lock (omp_nest_lock_t *); +extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +extern void omp_unset_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +extern int omp_test_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; -extern double omp_get_wtime (void); -extern double omp_get_wtick (void); +extern double omp_get_wtime (void) __GOMP_NOTHROW; +extern double omp_get_wtick (void) __GOMP_NOTHROW; #ifdef __cplusplus } diff --git a/libgomp/omp_lib.h.in b/libgomp/omp_lib.h.in index 734f2f781fc3..2376b23bd301 100644 --- a/libgomp/omp_lib.h.in +++ b/libgomp/omp_lib.h.in @@ -38,16 +38,16 @@ external omp_set_num_threads external omp_get_dynamic, omp_get_nested - logical*4 omp_get_dynamic, omp_get_nested + logical(4) omp_get_dynamic, omp_get_nested external omp_test_lock, omp_in_parallel - logical*4 omp_test_lock, omp_in_parallel + logical(4) omp_test_lock, omp_in_parallel external omp_get_max_threads, omp_get_num_procs - integer*4 omp_get_max_threads, omp_get_num_procs + integer(4) omp_get_max_threads, omp_get_num_procs external omp_get_num_threads, omp_get_thread_num - integer*4 omp_get_num_threads, omp_get_thread_num + integer(4) omp_get_num_threads, omp_get_thread_num external omp_test_nest_lock - integer*4 omp_test_nest_lock + integer(4) omp_test_nest_lock external omp_get_wtick, omp_get_wtime double precision omp_get_wtick, omp_get_wtime diff --git a/libgomp/team.c b/libgomp/team.c index 060f4ea2c6b7..7d50bfc29af8 100644 --- a/libgomp/team.c +++ b/libgomp/team.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). @@ -183,6 +183,7 @@ gomp_team_start (void (*fn) (void *), void *data, unsigned nthreads, struct gomp_team *team; bool nested; unsigned i, n, old_threads_used = 0; + pthread_attr_t thread_attr, *attr; thr = gomp_thread (); nested = thr->ts.team != NULL; @@ -265,6 +266,17 @@ gomp_team_start (void (*fn) (void *), void *data, unsigned nthreads, } } + attr = &gomp_thread_attr; + if (gomp_cpu_affinity != NULL) + { + size_t stacksize; + pthread_attr_init (&thread_attr); + pthread_attr_setdetachstate (&thread_attr, PTHREAD_CREATE_DETACHED); + if (! pthread_attr_getstacksize (&gomp_thread_attr, &stacksize)) + pthread_attr_setstacksize (&thread_attr, stacksize); + attr = &thread_attr; + } + start_data = gomp_alloca (sizeof (struct gomp_thread_start_data) * (nthreads-i)); @@ -283,12 +295,17 @@ gomp_team_start (void (*fn) (void *), void *data, unsigned nthreads, start_data->fn_data = data; start_data->nested = nested; - err = pthread_create (&pt, &gomp_thread_attr, - gomp_thread_start, start_data); + if (gomp_cpu_affinity != NULL) + gomp_init_thread_affinity (attr); + + err = pthread_create (&pt, attr, gomp_thread_start, start_data); if (err != 0) gomp_fatal ("Thread creation failed: %s", strerror (err)); } + if (gomp_cpu_affinity != NULL) + pthread_attr_destroy (&thread_attr); + do_release: gomp_barrier_wait (nested ? &team->barrier : &gomp_threads_dock);