From 59cf8412055c31299b8d3d1d15662320656d7ea2 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Tue, 7 Apr 2009 01:13:44 +0000 Subject: [PATCH 01/50] Flatten the dist tree. --- contrib/gdb/COPYING => COPYING | 0 contrib/gdb/COPYING.LIB => COPYING.LIB | 0 contrib/gdb/FREEBSD-diffs => FREEBSD-diffs | 0 contrib/gdb/README => README | 0 contrib/gdb/config-ml.in => config-ml.in | 0 contrib/gdb/djunpack.bat => djunpack.bat | 0 {contrib/gdb/gdb => gdb}/CONTRIBUTE | 0 {contrib/gdb/gdb => gdb}/COPYING | 0 {contrib/gdb/gdb => gdb}/MAINTAINERS | 0 {contrib/gdb/gdb => gdb}/NEWS | 0 {contrib/gdb/gdb => gdb}/PROBLEMS | 0 {contrib/gdb/gdb => gdb}/README | 0 {contrib/gdb/gdb => gdb}/TODO | 0 {contrib/gdb/gdb => gdb}/abug-rom.c | 0 {contrib/gdb/gdb => gdb}/acinclude.m4 | 0 {contrib/gdb/gdb => gdb}/aclocal.m4 | 0 {contrib/gdb/gdb => gdb}/ada-exp.c | 0 {contrib/gdb/gdb => gdb}/ada-exp.y | 0 {contrib/gdb/gdb => gdb}/ada-lang.c | 0 {contrib/gdb/gdb => gdb}/ada-lang.h | 0 {contrib/gdb/gdb => gdb}/ada-lex.l | 0 {contrib/gdb/gdb => gdb}/ada-tasks.c | 0 {contrib/gdb/gdb => gdb}/ada-typeprint.c | 0 {contrib/gdb/gdb => gdb}/ada-valprint.c | 0 {contrib/gdb/gdb => gdb}/alpha-mdebug-tdep.c | 0 {contrib/gdb/gdb => gdb}/alpha-nat.c | 0 {contrib/gdb/gdb => gdb}/alpha-tdep.c | 0 {contrib/gdb/gdb => gdb}/alpha-tdep.h | 0 {contrib/gdb/gdb => gdb}/alphabsd-nat.c | 0 {contrib/gdb/gdb => gdb}/alphabsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/alphabsd-tdep.h | 0 {contrib/gdb/gdb => gdb}/alphafbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/alphanbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/amd64-nat.c | 0 {contrib/gdb/gdb => gdb}/amd64-nat.h | 0 {contrib/gdb/gdb => gdb}/amd64-tdep.c | 0 {contrib/gdb/gdb => gdb}/amd64-tdep.h | 0 {contrib/gdb/gdb => gdb}/amd64bsd-nat.c | 0 {contrib/gdb/gdb => gdb}/amd64fbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/amd64fbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/amd64nbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/amd64nbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/amd64obsd-nat.c | 0 {contrib/gdb/gdb => gdb}/amd64obsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/annotate.c | 0 {contrib/gdb/gdb => gdb}/annotate.h | 0 {contrib/gdb/gdb => gdb}/arch-utils.c | 0 {contrib/gdb/gdb => gdb}/arch-utils.h | 0 {contrib/gdb/gdb => gdb}/arm-tdep.c | 0 {contrib/gdb/gdb => gdb}/arm-tdep.h | 0 {contrib/gdb/gdb => gdb}/armnbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/armnbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/auxv.c | 0 {contrib/gdb/gdb => gdb}/auxv.h | 0 {contrib/gdb/gdb => gdb}/ax-gdb.c | 0 {contrib/gdb/gdb => gdb}/ax-gdb.h | 0 {contrib/gdb/gdb => gdb}/ax-general.c | 0 {contrib/gdb/gdb => gdb}/ax.h | 0 {contrib/gdb/gdb => gdb}/bcache.c | 0 {contrib/gdb/gdb => gdb}/bcache.h | 0 {contrib/gdb/gdb => gdb}/bfd-target.c | 0 {contrib/gdb/gdb => gdb}/bfd-target.h | 0 {contrib/gdb/gdb => gdb}/block.c | 0 {contrib/gdb/gdb => gdb}/block.h | 0 {contrib/gdb/gdb => gdb}/blockframe.c | 0 {contrib/gdb/gdb => gdb}/breakpoint.c | 0 {contrib/gdb/gdb => gdb}/breakpoint.h | 0 {contrib/gdb/gdb => gdb}/buildsym.c | 0 {contrib/gdb/gdb => gdb}/buildsym.h | 0 {contrib/gdb/gdb => gdb}/c-exp.c | 0 {contrib/gdb/gdb => gdb}/c-exp.y | 0 {contrib/gdb/gdb => gdb}/c-lang.c | 0 {contrib/gdb/gdb => gdb}/c-lang.h | 0 {contrib/gdb/gdb => gdb}/c-typeprint.c | 0 {contrib/gdb/gdb => gdb}/c-valprint.c | 0 {contrib/gdb/gdb => gdb}/call-cmds.h | 0 {contrib/gdb/gdb => gdb}/charset.c | 0 {contrib/gdb/gdb => gdb}/charset.h | 0 {contrib/gdb/gdb => gdb}/cli-out.c | 0 {contrib/gdb/gdb => gdb}/cli-out.h | 0 {contrib/gdb/gdb => gdb}/cli/cli-cmds.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-cmds.h | 0 {contrib/gdb/gdb => gdb}/cli/cli-decode.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-decode.h | 0 {contrib/gdb/gdb => gdb}/cli/cli-dump.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-dump.h | 0 {contrib/gdb/gdb => gdb}/cli/cli-interp.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-logging.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-script.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-script.h | 0 {contrib/gdb/gdb => gdb}/cli/cli-setshow.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-setshow.h | 0 {contrib/gdb/gdb => gdb}/cli/cli-utils.c | 0 {contrib/gdb/gdb => gdb}/cli/cli-utils.h | 0 {contrib/gdb/gdb => gdb}/coff-pe-read.c | 0 {contrib/gdb/gdb => gdb}/coff-pe-read.h | 0 {contrib/gdb/gdb => gdb}/coff-solib.c | 0 {contrib/gdb/gdb => gdb}/coff-solib.h | 0 {contrib/gdb/gdb => gdb}/coffread.c | 0 {contrib/gdb/gdb => gdb}/command.h | 0 {contrib/gdb/gdb => gdb}/complaints.c | 0 {contrib/gdb/gdb => gdb}/complaints.h | 0 {contrib/gdb/gdb => gdb}/completer.c | 0 {contrib/gdb/gdb => gdb}/completer.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/alpha-osf2.mh | 0 {contrib/gdb/gdb => gdb}/config/alpha/alpha-osf3.mh | 0 {contrib/gdb/gdb => gdb}/config/alpha/alpha.mt | 0 {contrib/gdb/gdb => gdb}/config/alpha/fbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/alpha/fbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/alpha/nbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/alpha/nbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/alpha/nm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/nm-osf.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/nm-osf2.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/nm-osf3.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/tm-alpha.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/tm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/tm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/alpha/xm-alphaosf.h | 0 {contrib/gdb/gdb => gdb}/config/arm/embed.mt | 0 {contrib/gdb/gdb => gdb}/config/arm/nbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/arm/nbsdaout.mh | 0 {contrib/gdb/gdb => gdb}/config/arm/nbsdelf.mh | 0 {contrib/gdb/gdb => gdb}/config/arm/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/arm/nm-nbsdaout.h | 0 {contrib/gdb/gdb => gdb}/config/arm/tm-arm.h | 0 {contrib/gdb/gdb => gdb}/config/arm/tm-embed.h | 0 {contrib/gdb/gdb => gdb}/config/arm/tm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/arm/tm-wince.h | 0 {contrib/gdb/gdb => gdb}/config/arm/wince.mt | 0 {contrib/gdb/gdb => gdb}/config/arm/xm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/i386/embed.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/fbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/fbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/fbsd64.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/fbsd64.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/go32.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/go32.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386aout.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386gnu.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386gnu.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386lynx.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386lynx.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386nw.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386sco.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386sco4.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386sco5.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386sol2.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386sol2.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386v.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386v.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/i386v4.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/i386v42mp.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/nbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/nbsd64.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/nbsd64.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/nbsdaout.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/nbsdelf.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/ncr3000.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/ncr3000.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-fbsd64.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-go32.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386gnu.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386lynx.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386sco.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386sco4.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386sco5.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386sol2.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386v.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386v4.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-i386v42mp.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-nbsdaout.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-nto.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nm-obsd.h | 0 {contrib/gdb/gdb => gdb}/config/i386/nto.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/nto.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/obsd.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/obsd.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/obsd64.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/obsd64.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/obsdaout.mh | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-go32.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-i386.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-i386lynx.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-i386sol2.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-nto.h | 0 {contrib/gdb/gdb => gdb}/config/i386/tm-vxworks.h | 0 {contrib/gdb/gdb => gdb}/config/i386/vxworks.mt | 0 {contrib/gdb/gdb => gdb}/config/i386/xm-go32.h | 0 {contrib/gdb/gdb => gdb}/config/i386/xm-i386.h | 0 {contrib/gdb/gdb => gdb}/config/i386/xm-i386sco.h | 0 {contrib/gdb/gdb => gdb}/config/i386/xm-i386v.h | 0 {contrib/gdb/gdb => gdb}/config/i386/xm-i386v4.h | 0 {contrib/gdb/gdb => gdb}/config/i386/xm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/ia64/fbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/ia64/fbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/ia64/ia64.mt | 0 {contrib/gdb/gdb => gdb}/config/ia64/nm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/ia64/tm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/ia64/tm-ia64.h | 0 {contrib/gdb/gdb => gdb}/config/mips/decstation.mh | 0 {contrib/gdb/gdb => gdb}/config/mips/embed.mt | 0 {contrib/gdb/gdb => gdb}/config/mips/littlemips.mh | 0 {contrib/gdb/gdb => gdb}/config/mips/mipsv4.mh | 0 {contrib/gdb/gdb => gdb}/config/mips/mipsv4.mt | 0 {contrib/gdb/gdb => gdb}/config/mips/nbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/mips/nbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/mips/news-mips.mh | 0 {contrib/gdb/gdb => gdb}/config/mips/nm-mips.h | 0 {contrib/gdb/gdb => gdb}/config/mips/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/mips/nm-news-mips.h | 0 {contrib/gdb/gdb => gdb}/config/mips/nm-riscos.h | 0 {contrib/gdb/gdb => gdb}/config/mips/riscos.mh | 0 {contrib/gdb/gdb => gdb}/config/mips/tm-mips.h | 0 {contrib/gdb/gdb => gdb}/config/mips/tm-mipsv4.h | 0 {contrib/gdb/gdb => gdb}/config/mips/tm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/mips/tm-vxmips.h | 0 {contrib/gdb/gdb => gdb}/config/mips/tm-wince.h | 0 {contrib/gdb/gdb => gdb}/config/mips/vxmips.mt | 0 {contrib/gdb/gdb => gdb}/config/mips/wince.mt | 0 {contrib/gdb/gdb => gdb}/config/mips/xm-mips.h | 0 {contrib/gdb/gdb => gdb}/config/mips/xm-mipsv4.h | 0 {contrib/gdb/gdb => gdb}/config/mips/xm-riscos.h | 0 {contrib/gdb/gdb => gdb}/config/nm-gnu.h | 0 {contrib/gdb/gdb => gdb}/config/nm-lynx.h | 0 {contrib/gdb/gdb => gdb}/config/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/nm-nbsdaout.h | 0 {contrib/gdb/gdb => gdb}/config/nm-sysv4.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/fbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/powerpc/fbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/powerpc/nbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/powerpc/nbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/powerpc/nm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/ppc-eabi.mt | 0 {contrib/gdb/gdb => gdb}/config/powerpc/ppc-sim.mt | 0 {contrib/gdb/gdb => gdb}/config/powerpc/tm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/tm-ppc-eabi.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/tm-ppcle-eabi.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/tm-ppcle-sim.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/tm-vxworks.h | 0 {contrib/gdb/gdb => gdb}/config/powerpc/vxworks.mt | 0 {contrib/gdb/gdb => gdb}/config/rs6000/nm-rs6000.h | 0 {contrib/gdb/gdb => gdb}/config/rs6000/nm-rs6000ly.h | 0 {contrib/gdb/gdb => gdb}/config/rs6000/rs6000.mh | 0 {contrib/gdb/gdb => gdb}/config/rs6000/rs6000.mt | 0 {contrib/gdb/gdb => gdb}/config/rs6000/rs6000lynx.mh | 0 {contrib/gdb/gdb => gdb}/config/rs6000/rs6000lynx.mt | 0 {contrib/gdb/gdb => gdb}/config/rs6000/tm-rs6000.h | 0 {contrib/gdb/gdb => gdb}/config/rs6000/tm-rs6000ly.h | 0 {contrib/gdb/gdb => gdb}/config/rs6000/xm-rs6000.h | 0 {contrib/gdb/gdb => gdb}/config/s390/s390.mh | 0 {contrib/gdb/gdb => gdb}/config/s390/s390.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/fbsd.mh | 0 {contrib/gdb/gdb => gdb}/config/sparc/fbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/nbsd.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/nbsd64.mh | 0 {contrib/gdb/gdb => gdb}/config/sparc/nbsd64.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/nbsdaout.mh | 0 {contrib/gdb/gdb => gdb}/config/sparc/nbsdelf.mh | 0 {contrib/gdb/gdb => gdb}/config/sparc/nm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/nm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/nm-nbsdaout.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/nm-sol2.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/obsd.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/obsd64.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/sol2-64.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/sol2.mh | 0 {contrib/gdb/gdb => gdb}/config/sparc/sol2.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/sparc.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/sparc64.mt | 0 {contrib/gdb/gdb => gdb}/config/sparc/tm-fbsd.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/tm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/tm-nbsd64.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/tm-sol2.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/tm-vxworks.h | 0 {contrib/gdb/gdb => gdb}/config/sparc/vxworks.mt | 0 {contrib/gdb/gdb => gdb}/config/tm-lynx.h | 0 {contrib/gdb/gdb => gdb}/config/tm-nto.h | 0 {contrib/gdb/gdb => gdb}/config/tm-sunos.h | 0 {contrib/gdb/gdb => gdb}/config/tm-sysv4.h | 0 {contrib/gdb/gdb => gdb}/config/tm-vxworks.h | 0 {contrib/gdb/gdb => gdb}/config/xm-nbsd.h | 0 {contrib/gdb/gdb => gdb}/config/xm-sysv4.h | 0 {contrib/gdb/gdb => gdb}/copying.awk | 0 {contrib/gdb/gdb => gdb}/copying.c | 0 {contrib/gdb/gdb => gdb}/core-aout.c | 0 {contrib/gdb/gdb => gdb}/core-regset.c | 0 {contrib/gdb/gdb => gdb}/corefile.c | 0 {contrib/gdb/gdb => gdb}/corelow.c | 0 {contrib/gdb/gdb => gdb}/cp-abi.c | 0 {contrib/gdb/gdb => gdb}/cp-abi.h | 0 {contrib/gdb/gdb => gdb}/cp-namespace.c | 0 {contrib/gdb/gdb => gdb}/cp-support.c | 0 {contrib/gdb/gdb => gdb}/cp-support.h | 0 {contrib/gdb/gdb => gdb}/cp-valprint.c | 0 {contrib/gdb/gdb => gdb}/cpu32bug-rom.c | 0 {contrib/gdb/gdb => gdb}/dbug-rom.c | 0 {contrib/gdb/gdb => gdb}/dbxread.c | 0 {contrib/gdb/gdb => gdb}/dcache.c | 0 {contrib/gdb/gdb => gdb}/dcache.h | 0 {contrib/gdb/gdb => gdb}/defs.h | 0 {contrib/gdb/gdb => gdb}/delta68-nat.c | 0 {contrib/gdb/gdb => gdb}/demangle.c | 0 {contrib/gdb/gdb => gdb}/dictionary.c | 0 {contrib/gdb/gdb => gdb}/dictionary.h | 0 {contrib/gdb/gdb => gdb}/dink32-rom.c | 0 {contrib/gdb/gdb => gdb}/disasm.c | 0 {contrib/gdb/gdb => gdb}/disasm.h | 0 {contrib/gdb/gdb => gdb}/doc/GDBvn.texi | 0 {contrib/gdb/gdb => gdb}/doc/LRS | 0 {contrib/gdb/gdb => gdb}/doc/a4rc.sed | 0 {contrib/gdb/gdb => gdb}/doc/agentexpr.texi | 0 {contrib/gdb/gdb => gdb}/doc/all-cfg.texi | 0 {contrib/gdb/gdb => gdb}/doc/annotate.texinfo | 0 {contrib/gdb/gdb => gdb}/doc/fdl.texi | 0 {contrib/gdb/gdb => gdb}/doc/gdb.info-1 | 0 {contrib/gdb/gdb => gdb}/doc/gdb.info-2 | 0 {contrib/gdb/gdb => gdb}/doc/gdb.info-3 | 0 {contrib/gdb/gdb => gdb}/doc/gdb.texinfo | 0 {contrib/gdb/gdb => gdb}/doc/gdbint.texinfo | 0 {contrib/gdb/gdb => gdb}/doc/gpl.texi | 0 {contrib/gdb/gdb => gdb}/doc/lpsrc.sed | 0 {contrib/gdb/gdb => gdb}/doc/observer.texi | 0 {contrib/gdb/gdb => gdb}/doc/psrc.sed | 0 {contrib/gdb/gdb => gdb}/doc/refcard.tex | 0 {contrib/gdb/gdb => gdb}/doc/stabs.texinfo | 0 {contrib/gdb/gdb => gdb}/doublest.c | 0 {contrib/gdb/gdb => gdb}/doublest.h | 0 {contrib/gdb/gdb => gdb}/dpx2-nat.c | 0 {contrib/gdb/gdb => gdb}/dsrec.c | 0 {contrib/gdb/gdb => gdb}/dummy-frame.c | 0 {contrib/gdb/gdb => gdb}/dummy-frame.h | 0 {contrib/gdb/gdb => gdb}/dve3900-rom.c | 0 {contrib/gdb/gdb => gdb}/dwarf2-frame.c | 0 {contrib/gdb/gdb => gdb}/dwarf2-frame.h | 0 {contrib/gdb/gdb => gdb}/dwarf2expr.c | 0 {contrib/gdb/gdb => gdb}/dwarf2expr.h | 0 {contrib/gdb/gdb => gdb}/dwarf2loc.c | 0 {contrib/gdb/gdb => gdb}/dwarf2loc.h | 0 {contrib/gdb/gdb => gdb}/dwarf2read.c | 0 {contrib/gdb/gdb => gdb}/dwarfread.c | 0 {contrib/gdb/gdb => gdb}/elfread.c | 0 {contrib/gdb/gdb => gdb}/environ.c | 0 {contrib/gdb/gdb => gdb}/environ.h | 0 {contrib/gdb/gdb => gdb}/eval.c | 0 {contrib/gdb/gdb => gdb}/event-loop.c | 0 {contrib/gdb/gdb => gdb}/event-loop.h | 0 {contrib/gdb/gdb => gdb}/event-top.c | 0 {contrib/gdb/gdb => gdb}/event-top.h | 0 {contrib/gdb/gdb => gdb}/exc_request.defs | 0 {contrib/gdb/gdb => gdb}/exec.c | 0 {contrib/gdb/gdb => gdb}/exec.h | 0 {contrib/gdb/gdb => gdb}/expprint.c | 0 {contrib/gdb/gdb => gdb}/expression.h | 0 {contrib/gdb/gdb => gdb}/f-exp.c | 0 {contrib/gdb/gdb => gdb}/f-exp.y | 0 {contrib/gdb/gdb => gdb}/f-lang.c | 0 {contrib/gdb/gdb => gdb}/f-lang.h | 0 {contrib/gdb/gdb => gdb}/f-typeprint.c | 0 {contrib/gdb/gdb => gdb}/f-valprint.c | 0 {contrib/gdb/gdb => gdb}/fbsd-proc.c | 0 {contrib/gdb/gdb => gdb}/findvar.c | 0 {contrib/gdb/gdb => gdb}/fork-child.c | 0 {contrib/gdb/gdb => gdb}/frame-base.c | 0 {contrib/gdb/gdb => gdb}/frame-base.h | 0 {contrib/gdb/gdb => gdb}/frame-unwind.c | 0 {contrib/gdb/gdb => gdb}/frame-unwind.h | 0 {contrib/gdb/gdb => gdb}/frame.c | 0 {contrib/gdb/gdb => gdb}/frame.h | 0 {contrib/gdb/gdb => gdb}/gcore.c | 0 {contrib/gdb/gdb => gdb}/gdb-events.c | 0 {contrib/gdb/gdb => gdb}/gdb-events.h | 0 {contrib/gdb/gdb => gdb}/gdb-events.sh | 0 {contrib/gdb/gdb => gdb}/gdb-stabs.h | 0 {contrib/gdb/gdb => gdb}/gdb.1 | 0 {contrib/gdb/gdb => gdb}/gdb.c | 0 {contrib/gdb/gdb => gdb}/gdb.gdb | 0 {contrib/gdb/gdb => gdb}/gdb.h | 0 {contrib/gdb/gdb => gdb}/gdb_assert.h | 0 {contrib/gdb/gdb => gdb}/gdb_curses.h | 0 {contrib/gdb/gdb => gdb}/gdb_dirent.h | 0 {contrib/gdb/gdb => gdb}/gdb_gcore.sh | 0 {contrib/gdb/gdb => gdb}/gdb_indent.sh | 0 {contrib/gdb/gdb => gdb}/gdb_locale.h | 0 {contrib/gdb/gdb => gdb}/gdb_mbuild.sh | 0 {contrib/gdb/gdb => gdb}/gdb_obstack.h | 0 {contrib/gdb/gdb => gdb}/gdb_proc_service.h | 0 {contrib/gdb/gdb => gdb}/gdb_regex.h | 0 {contrib/gdb/gdb => gdb}/gdb_stat.h | 0 {contrib/gdb/gdb => gdb}/gdb_string.h | 0 {contrib/gdb/gdb => gdb}/gdb_thread_db.h | 0 {contrib/gdb/gdb => gdb}/gdb_vfork.h | 0 {contrib/gdb/gdb => gdb}/gdb_wait.h | 0 {contrib/gdb/gdb => gdb}/gdbarch.c | 0 {contrib/gdb/gdb => gdb}/gdbarch.h | 0 {contrib/gdb/gdb => gdb}/gdbarch.sh | 0 {contrib/gdb/gdb => gdb}/gdbcmd.h | 0 {contrib/gdb/gdb => gdb}/gdbcore.h | 0 {contrib/gdb/gdb => gdb}/gdbinit.in | 0 {contrib/gdb/gdb => gdb}/gdbserver/README | 0 {contrib/gdb/gdb => gdb}/gdbserver/acinclude.m4 | 0 {contrib/gdb/gdb => gdb}/gdbserver/aclocal.m4 | 0 {contrib/gdb/gdb => gdb}/gdbserver/gdbreplay.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/gdbserver.1 | 0 {contrib/gdb/gdb => gdb}/gdbserver/i387-fp.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/i387-fp.h | 0 {contrib/gdb/gdb => gdb}/gdbserver/inferiors.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/mem-break.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/mem-break.h | 0 {contrib/gdb/gdb => gdb}/gdbserver/proc-service.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/regcache.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/regcache.h | 0 {contrib/gdb/gdb => gdb}/gdbserver/remote-utils.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/server.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/server.h | 0 {contrib/gdb/gdb => gdb}/gdbserver/target.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/target.h | 0 {contrib/gdb/gdb => gdb}/gdbserver/terminal.h | 0 {contrib/gdb/gdb => gdb}/gdbserver/thread-db.c | 0 {contrib/gdb/gdb => gdb}/gdbserver/utils.c | 0 {contrib/gdb/gdb => gdb}/gdbthread.h | 0 {contrib/gdb/gdb => gdb}/gdbtypes.c | 0 {contrib/gdb/gdb => gdb}/gdbtypes.h | 0 {contrib/gdb/gdb => gdb}/glibc-tdep.c | 0 {contrib/gdb/gdb => gdb}/glibc-tdep.h | 0 {contrib/gdb/gdb => gdb}/gnu-nat.c | 0 {contrib/gdb/gdb => gdb}/gnu-nat.h | 0 {contrib/gdb/gdb => gdb}/gnu-v2-abi.c | 0 {contrib/gdb/gdb => gdb}/gnu-v3-abi.c | 0 {contrib/gdb/gdb => gdb}/go32-nat.c | 0 {contrib/gdb/gdb => gdb}/gregset.h | 0 {contrib/gdb/gdb => gdb}/hpacc-abi.c | 0 {contrib/gdb/gdb => gdb}/hpread.c | 0 {contrib/gdb/gdb => gdb}/i386-nat.c | 0 {contrib/gdb/gdb => gdb}/i386-nto-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386-sol2-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386-stub.c | 0 {contrib/gdb/gdb => gdb}/i386-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386-tdep.h | 0 {contrib/gdb/gdb => gdb}/i386bsd-nat.c | 0 {contrib/gdb/gdb => gdb}/i386bsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386fbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/i386fbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386gnu-nat.c | 0 {contrib/gdb/gdb => gdb}/i386gnu-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386ly-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386nbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386obsd-nat.c | 0 {contrib/gdb/gdb => gdb}/i386obsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/i386v-nat.c | 0 {contrib/gdb/gdb => gdb}/i386v4-nat.c | 0 {contrib/gdb/gdb => gdb}/i387-tdep.c | 0 {contrib/gdb/gdb => gdb}/i387-tdep.h | 0 {contrib/gdb/gdb => gdb}/ia64-fbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/ia64-fbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/ia64-tdep.c | 0 {contrib/gdb/gdb => gdb}/ia64-tdep.h | 0 {contrib/gdb/gdb => gdb}/inf-loop.c | 0 {contrib/gdb/gdb => gdb}/inf-loop.h | 0 {contrib/gdb/gdb => gdb}/infcall.c | 0 {contrib/gdb/gdb => gdb}/infcall.h | 0 {contrib/gdb/gdb => gdb}/infcmd.c | 0 {contrib/gdb/gdb => gdb}/inferior.h | 0 {contrib/gdb/gdb => gdb}/inflow.c | 0 {contrib/gdb/gdb => gdb}/inflow.h | 0 {contrib/gdb/gdb => gdb}/infptrace.c | 0 {contrib/gdb/gdb => gdb}/infrun.c | 0 {contrib/gdb/gdb => gdb}/inftarg.c | 0 {contrib/gdb/gdb => gdb}/infttrace.c | 0 {contrib/gdb/gdb => gdb}/infttrace.h | 0 {contrib/gdb/gdb => gdb}/interps.c | 0 {contrib/gdb/gdb => gdb}/interps.h | 0 {contrib/gdb/gdb => gdb}/jv-exp.c | 0 {contrib/gdb/gdb => gdb}/jv-exp.y | 0 {contrib/gdb/gdb => gdb}/jv-lang.c | 0 {contrib/gdb/gdb => gdb}/jv-lang.h | 0 {contrib/gdb/gdb => gdb}/jv-typeprint.c | 0 {contrib/gdb/gdb => gdb}/jv-valprint.c | 0 {contrib/gdb/gdb => gdb}/kod-cisco.c | 0 {contrib/gdb/gdb => gdb}/kod.c | 0 {contrib/gdb/gdb => gdb}/kod.h | 0 {contrib/gdb/gdb => gdb}/language.c | 0 {contrib/gdb/gdb => gdb}/language.h | 0 {contrib/gdb/gdb => gdb}/libunwind-frame.c | 0 {contrib/gdb/gdb => gdb}/libunwind-frame.h | 0 {contrib/gdb/gdb => gdb}/lin-lwp.c | 0 {contrib/gdb/gdb => gdb}/linespec.c | 0 {contrib/gdb/gdb => gdb}/linespec.h | 0 {contrib/gdb/gdb => gdb}/lynx-nat.c | 0 {contrib/gdb/gdb => gdb}/m2-exp.c | 0 {contrib/gdb/gdb => gdb}/m2-exp.y | 0 {contrib/gdb/gdb => gdb}/m2-lang.c | 0 {contrib/gdb/gdb => gdb}/m2-lang.h | 0 {contrib/gdb/gdb => gdb}/m2-typeprint.c | 0 {contrib/gdb/gdb => gdb}/m2-valprint.c | 0 {contrib/gdb/gdb => gdb}/macrocmd.c | 0 {contrib/gdb/gdb => gdb}/macroexp.c | 0 {contrib/gdb/gdb => gdb}/macroexp.h | 0 {contrib/gdb/gdb => gdb}/macroscope.c | 0 {contrib/gdb/gdb => gdb}/macroscope.h | 0 {contrib/gdb/gdb => gdb}/macrotab.c | 0 {contrib/gdb/gdb => gdb}/macrotab.h | 0 {contrib/gdb/gdb => gdb}/main.c | 0 {contrib/gdb/gdb => gdb}/main.h | 0 {contrib/gdb/gdb => gdb}/maint.c | 0 {contrib/gdb/gdb => gdb}/mdebugread.c | 0 {contrib/gdb/gdb => gdb}/mem-break.c | 0 {contrib/gdb/gdb => gdb}/memattr.c | 0 {contrib/gdb/gdb => gdb}/memattr.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmd-break.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmd-disas.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmd-env.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmd-file.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmd-stack.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmd-var.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmds.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-cmds.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-console.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-console.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-getopt.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-getopt.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-interp.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-main.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-main.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-out.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-out.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-parse.c | 0 {contrib/gdb/gdb => gdb}/mi/mi-parse.h | 0 {contrib/gdb/gdb => gdb}/mi/mi-symbol-cmds.c | 0 {contrib/gdb/gdb => gdb}/minimon.h | 0 {contrib/gdb/gdb => gdb}/minsyms.c | 0 {contrib/gdb/gdb => gdb}/mips-nat.c | 0 {contrib/gdb/gdb => gdb}/mips-tdep.c | 0 {contrib/gdb/gdb => gdb}/mips-tdep.h | 0 {contrib/gdb/gdb => gdb}/mipsnbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/mipsnbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/mipsnbsd-tdep.h | 0 {contrib/gdb/gdb => gdb}/mipsread.c | 0 {contrib/gdb/gdb => gdb}/mipsv4-nat.c | 0 {contrib/gdb/gdb => gdb}/monitor.c | 0 {contrib/gdb/gdb => gdb}/monitor.h | 0 {contrib/gdb/gdb => gdb}/msg.defs | 0 {contrib/gdb/gdb => gdb}/msg_reply.defs | 0 {contrib/gdb/gdb => gdb}/nbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/nbsd-tdep.h | 0 {contrib/gdb/gdb => gdb}/nlmread.c | 0 {contrib/gdb/gdb => gdb}/notify.defs | 0 {contrib/gdb/gdb => gdb}/nto-procfs.c | 0 {contrib/gdb/gdb => gdb}/nto-tdep.c | 0 {contrib/gdb/gdb => gdb}/nto-tdep.h | 0 {contrib/gdb/gdb => gdb}/objc-exp.c | 0 {contrib/gdb/gdb => gdb}/objc-exp.y | 0 {contrib/gdb/gdb => gdb}/objc-lang.c | 0 {contrib/gdb/gdb => gdb}/objc-lang.h | 0 {contrib/gdb/gdb => gdb}/objfiles.c | 0 {contrib/gdb/gdb => gdb}/objfiles.h | 0 {contrib/gdb/gdb => gdb}/observer.c | 0 {contrib/gdb/gdb => gdb}/observer.h | 0 {contrib/gdb/gdb => gdb}/ocd.c | 0 {contrib/gdb/gdb => gdb}/ocd.h | 0 {contrib/gdb/gdb => gdb}/osabi.c | 0 {contrib/gdb/gdb => gdb}/osabi.h | 0 {contrib/gdb/gdb => gdb}/p-exp.c | 0 {contrib/gdb/gdb => gdb}/p-exp.y | 0 {contrib/gdb/gdb => gdb}/p-lang.c | 0 {contrib/gdb/gdb => gdb}/p-lang.h | 0 {contrib/gdb/gdb => gdb}/p-typeprint.c | 0 {contrib/gdb/gdb => gdb}/p-valprint.c | 0 {contrib/gdb/gdb => gdb}/pa64solib.c | 0 {contrib/gdb/gdb => gdb}/pa64solib.h | 0 {contrib/gdb/gdb => gdb}/parse.c | 0 {contrib/gdb/gdb => gdb}/parser-defs.h | 0 {contrib/gdb/gdb => gdb}/ppc-bdm.c | 0 {contrib/gdb/gdb => gdb}/ppc-sysv-tdep.c | 0 {contrib/gdb/gdb => gdb}/ppc-tdep.h | 0 {contrib/gdb/gdb => gdb}/ppcbug-rom.c | 0 {contrib/gdb/gdb => gdb}/ppcfbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/ppcfbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/ppcfbsd-tdep.h | 0 {contrib/gdb/gdb => gdb}/ppcnbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/ppcnbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/ppcnbsd-tdep.h | 0 {contrib/gdb/gdb => gdb}/printcmd.c | 0 {contrib/gdb/gdb => gdb}/proc-api.c | 0 {contrib/gdb/gdb => gdb}/proc-events.c | 0 {contrib/gdb/gdb => gdb}/proc-flags.c | 0 {contrib/gdb/gdb => gdb}/proc-service.c | 0 {contrib/gdb/gdb => gdb}/proc-utils.h | 0 {contrib/gdb/gdb => gdb}/proc-why.c | 0 {contrib/gdb/gdb => gdb}/process_reply.defs | 0 {contrib/gdb/gdb => gdb}/procfs.c | 0 {contrib/gdb/gdb => gdb}/regcache.c | 0 {contrib/gdb/gdb => gdb}/regcache.h | 0 {contrib/gdb/gdb => gdb}/regformats/reg-arm.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-i386.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-ia64.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-m68k.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-mips.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-ppc.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-s390.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-s390x.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-sh.dat | 0 {contrib/gdb/gdb => gdb}/regformats/reg-x86-64.dat | 0 {contrib/gdb/gdb => gdb}/regformats/regdat.sh | 0 {contrib/gdb/gdb => gdb}/regformats/regdef.h | 0 {contrib/gdb/gdb => gdb}/reggroups.c | 0 {contrib/gdb/gdb => gdb}/reggroups.h | 0 {contrib/gdb/gdb => gdb}/regset.h | 0 {contrib/gdb/gdb => gdb}/remote-e7000.c | 0 {contrib/gdb/gdb => gdb}/remote-est.c | 0 {contrib/gdb/gdb => gdb}/remote-fileio.c | 0 {contrib/gdb/gdb => gdb}/remote-fileio.h | 0 {contrib/gdb/gdb => gdb}/remote-hms.c | 0 {contrib/gdb/gdb => gdb}/remote-mips.c | 0 {contrib/gdb/gdb => gdb}/remote-rdi.c | 0 {contrib/gdb/gdb => gdb}/remote-rdp.c | 0 {contrib/gdb/gdb => gdb}/remote-sds.c | 0 {contrib/gdb/gdb => gdb}/remote-sim.c | 0 {contrib/gdb/gdb => gdb}/remote-st.c | 0 {contrib/gdb/gdb => gdb}/remote-utils.c | 0 {contrib/gdb/gdb => gdb}/remote-utils.h | 0 {contrib/gdb/gdb => gdb}/remote-vx.c | 0 {contrib/gdb/gdb => gdb}/remote-vx68.c | 0 {contrib/gdb/gdb => gdb}/remote-vxmips.c | 0 {contrib/gdb/gdb => gdb}/remote-vxsparc.c | 0 {contrib/gdb/gdb => gdb}/remote.c | 0 {contrib/gdb/gdb => gdb}/remote.h | 0 {contrib/gdb/gdb => gdb}/reply_mig_hack.awk | 0 {contrib/gdb/gdb => gdb}/rom68k-rom.c | 0 {contrib/gdb/gdb => gdb}/rs6000-nat.c | 0 {contrib/gdb/gdb => gdb}/rs6000-tdep.c | 0 {contrib/gdb/gdb => gdb}/s390-nat.c | 0 {contrib/gdb/gdb => gdb}/s390-tdep.c | 0 {contrib/gdb/gdb => gdb}/s390-tdep.h | 0 {contrib/gdb/gdb => gdb}/scm-exp.c | 0 {contrib/gdb/gdb => gdb}/scm-lang.c | 0 {contrib/gdb/gdb => gdb}/scm-lang.h | 0 {contrib/gdb/gdb => gdb}/scm-tags.h | 0 {contrib/gdb/gdb => gdb}/scm-valprint.c | 0 {contrib/gdb/gdb => gdb}/sentinel-frame.c | 0 {contrib/gdb/gdb => gdb}/sentinel-frame.h | 0 {contrib/gdb/gdb => gdb}/ser-e7kpc.c | 0 {contrib/gdb/gdb => gdb}/ser-go32.c | 0 {contrib/gdb/gdb => gdb}/ser-pipe.c | 0 {contrib/gdb/gdb => gdb}/ser-tcp.c | 0 {contrib/gdb/gdb => gdb}/ser-unix.c | 0 {contrib/gdb/gdb => gdb}/ser-unix.h | 0 {contrib/gdb/gdb => gdb}/serial.c | 0 {contrib/gdb/gdb => gdb}/serial.h | 0 {contrib/gdb/gdb => gdb}/signals/signals.c | 0 {contrib/gdb/gdb => gdb}/sim-regno.h | 0 {contrib/gdb/gdb => gdb}/sol-thread.c | 0 {contrib/gdb/gdb => gdb}/solib-legacy.c | 0 {contrib/gdb/gdb => gdb}/solib-osf.c | 0 {contrib/gdb/gdb => gdb}/solib-sunos.c | 0 {contrib/gdb/gdb => gdb}/solib-svr4.c | 0 {contrib/gdb/gdb => gdb}/solib-svr4.h | 0 {contrib/gdb/gdb => gdb}/solib.c | 0 {contrib/gdb/gdb => gdb}/solib.h | 0 {contrib/gdb/gdb => gdb}/solist.h | 0 {contrib/gdb/gdb => gdb}/somread.c | 0 {contrib/gdb/gdb => gdb}/somsolib.c | 0 {contrib/gdb/gdb => gdb}/somsolib.h | 0 {contrib/gdb/gdb => gdb}/source.c | 0 {contrib/gdb/gdb => gdb}/source.h | 0 {contrib/gdb/gdb => gdb}/sparc-nat.c | 0 {contrib/gdb/gdb => gdb}/sparc-nat.h | 0 {contrib/gdb/gdb => gdb}/sparc-sol2-nat.c | 0 {contrib/gdb/gdb => gdb}/sparc-sol2-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparc-stub.c | 0 {contrib/gdb/gdb => gdb}/sparc-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparc-tdep.h | 0 {contrib/gdb/gdb => gdb}/sparc64-nat.c | 0 {contrib/gdb/gdb => gdb}/sparc64-sol2-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparc64-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparc64-tdep.h | 0 {contrib/gdb/gdb => gdb}/sparc64fbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/sparc64fbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparc64nbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/sparc64nbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparc64obsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparcnbsd-nat.c | 0 {contrib/gdb/gdb => gdb}/sparcnbsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/sparcobsd-tdep.c | 0 {contrib/gdb/gdb => gdb}/srec.h | 0 {contrib/gdb/gdb => gdb}/stabsread.c | 0 {contrib/gdb/gdb => gdb}/stabsread.h | 0 {contrib/gdb/gdb => gdb}/stack.c | 0 {contrib/gdb/gdb => gdb}/stack.h | 0 {contrib/gdb/gdb => gdb}/standalone.c | 0 {contrib/gdb/gdb => gdb}/std-regs.c | 0 {contrib/gdb/gdb => gdb}/stop-gdb.c | 0 {contrib/gdb/gdb => gdb}/sun3-nat.c | 0 {contrib/gdb/gdb => gdb}/symfile.c | 0 {contrib/gdb/gdb => gdb}/symfile.h | 0 {contrib/gdb/gdb => gdb}/symmisc.c | 0 {contrib/gdb/gdb => gdb}/symtab.c | 0 {contrib/gdb/gdb => gdb}/symtab.h | 0 {contrib/gdb/gdb => gdb}/target.c | 0 {contrib/gdb/gdb => gdb}/target.h | 0 {contrib/gdb/gdb => gdb}/terminal.h | 0 {contrib/gdb/gdb => gdb}/thread-db.c | 0 {contrib/gdb/gdb => gdb}/thread.c | 0 {contrib/gdb/gdb => gdb}/top.c | 0 {contrib/gdb/gdb => gdb}/top.h | 0 {contrib/gdb/gdb => gdb}/tracepoint.c | 0 {contrib/gdb/gdb => gdb}/tracepoint.h | 0 {contrib/gdb/gdb => gdb}/trad-frame.c | 0 {contrib/gdb/gdb => gdb}/trad-frame.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-command.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-command.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-data.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-data.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-disasm.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-disasm.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-file.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-file.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-hooks.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-hooks.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-interp.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-io.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-io.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-layout.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-layout.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-main.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-out.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-regs.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-regs.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-source.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-source.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-stack.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-stack.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-win.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-win.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-windata.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-windata.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-wingeneral.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-wingeneral.h | 0 {contrib/gdb/gdb => gdb}/tui/tui-winsource.c | 0 {contrib/gdb/gdb => gdb}/tui/tui-winsource.h | 0 {contrib/gdb/gdb => gdb}/tui/tui.c | 0 {contrib/gdb/gdb => gdb}/tui/tui.h | 0 {contrib/gdb/gdb => gdb}/typeprint.c | 0 {contrib/gdb/gdb => gdb}/typeprint.h | 0 {contrib/gdb/gdb => gdb}/ui-file.c | 0 {contrib/gdb/gdb => gdb}/ui-file.h | 0 {contrib/gdb/gdb => gdb}/ui-out.c | 0 {contrib/gdb/gdb => gdb}/ui-out.h | 0 {contrib/gdb/gdb => gdb}/user-regs.c | 0 {contrib/gdb/gdb => gdb}/user-regs.h | 0 {contrib/gdb/gdb => gdb}/utils.c | 0 {contrib/gdb/gdb => gdb}/uw-thread.c | 0 {contrib/gdb/gdb => gdb}/valarith.c | 0 {contrib/gdb/gdb => gdb}/valops.c | 0 {contrib/gdb/gdb => gdb}/valprint.c | 0 {contrib/gdb/gdb => gdb}/valprint.h | 0 {contrib/gdb/gdb => gdb}/value.h | 0 {contrib/gdb/gdb => gdb}/values.c | 0 {contrib/gdb/gdb => gdb}/varobj.c | 0 {contrib/gdb/gdb => gdb}/varobj.h | 0 {contrib/gdb/gdb => gdb}/version.h | 0 {contrib/gdb/gdb => gdb}/version.in | 0 {contrib/gdb/gdb => gdb}/win32-nat.c | 0 {contrib/gdb/gdb => gdb}/wince-stub.c | 0 {contrib/gdb/gdb => gdb}/wince-stub.h | 0 {contrib/gdb/gdb => gdb}/wince.c | 0 {contrib/gdb/gdb => gdb}/wrapper.c | 0 {contrib/gdb/gdb => gdb}/wrapper.h | 0 {contrib/gdb/gdb => gdb}/xcoffread.c | 0 {contrib/gdb/gdb => gdb}/xcoffsolib.c | 0 {contrib/gdb/gdb => gdb}/xcoffsolib.h | 0 {contrib/gdb/gdb => gdb}/xmodem.c | 0 {contrib/gdb/gdb => gdb}/xmodem.h | 0 contrib/gdb/gettext.m4 => gettext.m4 | 0 {contrib/gdb/include => include}/COPYING | 0 {contrib/gdb/include => include}/MAINTAINERS | 0 {contrib/gdb/include => include}/alloca-conf.h | 0 {contrib/gdb/include => include}/ansidecl.h | 0 {contrib/gdb/include => include}/bfdlink.h | 0 {contrib/gdb/include => include}/bin-bugs.h | 0 {contrib/gdb/include => include}/bout.h | 0 {contrib/gdb/include => include}/demangle.h | 0 {contrib/gdb/include => include}/dis-asm.h | 0 {contrib/gdb/include => include}/dyn-string.h | 0 {contrib/gdb/include => include}/fibheap.h | 0 {contrib/gdb/include => include}/filenames.h | 0 {contrib/gdb/include => include}/floatformat.h | 0 {contrib/gdb/include => include}/fnmatch.h | 0 {contrib/gdb/include => include}/fopen-bin.h | 0 {contrib/gdb/include => include}/fopen-same.h | 0 {contrib/gdb/include => include}/fopen-vms.h | 0 {contrib/gdb/include => include}/gdb/callback.h | 0 {contrib/gdb/include => include}/gdb/fileio.h | 0 {contrib/gdb/include => include}/gdb/remote-sim.h | 0 {contrib/gdb/include => include}/gdb/signals.h | 0 {contrib/gdb/include => include}/gdb/sim-arm.h | 0 {contrib/gdb/include => include}/gdb/sim-d10v.h | 0 {contrib/gdb/include => include}/gdb/sim-frv.h | 0 {contrib/gdb/include => include}/gdb/sim-h8300.h | 0 {contrib/gdb/include => include}/gdb/sim-sh.h | 0 {contrib/gdb/include => include}/gdbm.h | 0 {contrib/gdb/include => include}/getopt.h | 0 {contrib/gdb/include => include}/hashtab.h | 0 {contrib/gdb/include => include}/hp-symtab.h | 0 {contrib/gdb/include => include}/ieee.h | 0 {contrib/gdb/include => include}/libiberty.h | 0 {contrib/gdb/include => include}/md5.h | 0 {contrib/gdb/include => include}/oasys.h | 0 {contrib/gdb/include => include}/objalloc.h | 0 {contrib/gdb/include => include}/obstack.h | 0 {contrib/gdb/include => include}/os9k.h | 0 {contrib/gdb/include => include}/partition.h | 0 {contrib/gdb/include => include}/progress.h | 0 {contrib/gdb/include => include}/safe-ctype.h | 0 {contrib/gdb/include => include}/sort.h | 0 {contrib/gdb/include => include}/splay-tree.h | 0 {contrib/gdb/include => include}/symcat.h | 0 {contrib/gdb/include => include}/ternary.h | 0 {contrib/gdb/include => include}/xregex.h | 0 {contrib/gdb/include => include}/xregex2.h | 0 {contrib/gdb/include => include}/xtensa-isa-internal.h | 0 {contrib/gdb/include => include}/xtensa-isa.h | 0 contrib/gdb/install-sh => install-sh | 0 contrib/gdb/libtool.m4 => libtool.m4 | 0 contrib/gdb/ltcf-c.sh => ltcf-c.sh | 0 contrib/gdb/ltcf-cxx.sh => ltcf-cxx.sh | 0 contrib/gdb/ltcf-gcj.sh => ltcf-gcj.sh | 0 contrib/gdb/ltconfig => ltconfig | 0 contrib/gdb/ltmain.sh => ltmain.sh | 0 contrib/gdb/md5.sum => md5.sum | 0 contrib/gdb/missing => missing | 0 contrib/gdb/mkinstalldirs => mkinstalldirs | 0 contrib/gdb/move-if-change => move-if-change | 0 contrib/gdb/src-release => src-release | 0 contrib/gdb/symlink-tree => symlink-tree | 0 contrib/gdb/ylwrap => ylwrap | 0 843 files changed, 0 insertions(+), 0 deletions(-) rename contrib/gdb/COPYING => COPYING (100%) rename contrib/gdb/COPYING.LIB => COPYING.LIB (100%) rename contrib/gdb/FREEBSD-diffs => FREEBSD-diffs (100%) rename contrib/gdb/README => README (100%) rename contrib/gdb/config-ml.in => config-ml.in (100%) rename contrib/gdb/djunpack.bat => djunpack.bat (100%) rename {contrib/gdb/gdb => gdb}/CONTRIBUTE (100%) rename {contrib/gdb/gdb => gdb}/COPYING (100%) rename {contrib/gdb/gdb => gdb}/MAINTAINERS (100%) rename {contrib/gdb/gdb => gdb}/NEWS (100%) rename {contrib/gdb/gdb => gdb}/PROBLEMS (100%) rename {contrib/gdb/gdb => gdb}/README (100%) rename {contrib/gdb/gdb => gdb}/TODO (100%) rename {contrib/gdb/gdb => gdb}/abug-rom.c (100%) rename {contrib/gdb/gdb => gdb}/acinclude.m4 (100%) rename {contrib/gdb/gdb => gdb}/aclocal.m4 (100%) rename {contrib/gdb/gdb => gdb}/ada-exp.c (100%) rename {contrib/gdb/gdb => gdb}/ada-exp.y (100%) rename {contrib/gdb/gdb => gdb}/ada-lang.c (100%) rename {contrib/gdb/gdb => gdb}/ada-lang.h (100%) rename {contrib/gdb/gdb => gdb}/ada-lex.l (100%) rename {contrib/gdb/gdb => gdb}/ada-tasks.c (100%) rename {contrib/gdb/gdb => gdb}/ada-typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/ada-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/alpha-mdebug-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/alpha-nat.c (100%) rename {contrib/gdb/gdb => gdb}/alpha-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/alpha-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/alphabsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/alphabsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/alphabsd-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/alphafbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/alphanbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/amd64-nat.c (100%) rename {contrib/gdb/gdb => gdb}/amd64-nat.h (100%) rename {contrib/gdb/gdb => gdb}/amd64-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/amd64-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/amd64bsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/amd64fbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/amd64fbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/amd64nbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/amd64nbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/amd64obsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/amd64obsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/annotate.c (100%) rename {contrib/gdb/gdb => gdb}/annotate.h (100%) rename {contrib/gdb/gdb => gdb}/arch-utils.c (100%) rename {contrib/gdb/gdb => gdb}/arch-utils.h (100%) rename {contrib/gdb/gdb => gdb}/arm-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/arm-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/armnbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/armnbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/auxv.c (100%) rename {contrib/gdb/gdb => gdb}/auxv.h (100%) rename {contrib/gdb/gdb => gdb}/ax-gdb.c (100%) rename {contrib/gdb/gdb => gdb}/ax-gdb.h (100%) rename {contrib/gdb/gdb => gdb}/ax-general.c (100%) rename {contrib/gdb/gdb => gdb}/ax.h (100%) rename {contrib/gdb/gdb => gdb}/bcache.c (100%) rename {contrib/gdb/gdb => gdb}/bcache.h (100%) rename {contrib/gdb/gdb => gdb}/bfd-target.c (100%) rename {contrib/gdb/gdb => gdb}/bfd-target.h (100%) rename {contrib/gdb/gdb => gdb}/block.c (100%) rename {contrib/gdb/gdb => gdb}/block.h (100%) rename {contrib/gdb/gdb => gdb}/blockframe.c (100%) rename {contrib/gdb/gdb => gdb}/breakpoint.c (100%) rename {contrib/gdb/gdb => gdb}/breakpoint.h (100%) rename {contrib/gdb/gdb => gdb}/buildsym.c (100%) rename {contrib/gdb/gdb => gdb}/buildsym.h (100%) rename {contrib/gdb/gdb => gdb}/c-exp.c (100%) rename {contrib/gdb/gdb => gdb}/c-exp.y (100%) rename {contrib/gdb/gdb => gdb}/c-lang.c (100%) rename {contrib/gdb/gdb => gdb}/c-lang.h (100%) rename {contrib/gdb/gdb => gdb}/c-typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/c-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/call-cmds.h (100%) rename {contrib/gdb/gdb => gdb}/charset.c (100%) rename {contrib/gdb/gdb => gdb}/charset.h (100%) rename {contrib/gdb/gdb => gdb}/cli-out.c (100%) rename {contrib/gdb/gdb => gdb}/cli-out.h (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-cmds.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-cmds.h (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-decode.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-decode.h (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-dump.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-dump.h (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-interp.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-logging.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-script.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-script.h (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-setshow.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-setshow.h (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-utils.c (100%) rename {contrib/gdb/gdb => gdb}/cli/cli-utils.h (100%) rename {contrib/gdb/gdb => gdb}/coff-pe-read.c (100%) rename {contrib/gdb/gdb => gdb}/coff-pe-read.h (100%) rename {contrib/gdb/gdb => gdb}/coff-solib.c (100%) rename {contrib/gdb/gdb => gdb}/coff-solib.h (100%) rename {contrib/gdb/gdb => gdb}/coffread.c (100%) rename {contrib/gdb/gdb => gdb}/command.h (100%) rename {contrib/gdb/gdb => gdb}/complaints.c (100%) rename {contrib/gdb/gdb => gdb}/complaints.h (100%) rename {contrib/gdb/gdb => gdb}/completer.c (100%) rename {contrib/gdb/gdb => gdb}/completer.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/alpha-osf2.mh (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/alpha-osf3.mh (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/alpha.mt (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/fbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/fbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nm-osf.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nm-osf2.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/nm-osf3.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/tm-alpha.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/tm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/tm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/alpha/xm-alphaosf.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/embed.mt (100%) rename {contrib/gdb/gdb => gdb}/config/arm/nbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/arm/nbsdaout.mh (100%) rename {contrib/gdb/gdb => gdb}/config/arm/nbsdelf.mh (100%) rename {contrib/gdb/gdb => gdb}/config/arm/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/nm-nbsdaout.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/tm-arm.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/tm-embed.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/tm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/tm-wince.h (100%) rename {contrib/gdb/gdb => gdb}/config/arm/wince.mt (100%) rename {contrib/gdb/gdb => gdb}/config/arm/xm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/embed.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/fbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/fbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/fbsd64.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/fbsd64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/go32.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/go32.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386aout.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386gnu.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386gnu.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386lynx.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386lynx.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386nw.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386sco.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386sco4.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386sco5.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386sol2.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386sol2.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386v.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386v.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386v4.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/i386v42mp.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nbsd64.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nbsd64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nbsdaout.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nbsdelf.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/ncr3000.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/ncr3000.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-fbsd64.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-go32.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386gnu.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386lynx.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386sco.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386sco4.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386sco5.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386sol2.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386v.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386v4.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-i386v42mp.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-nbsdaout.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-nto.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nm-obsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nto.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/nto.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/obsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/obsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/obsd64.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/obsd64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/obsdaout.mh (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-go32.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-i386.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-i386lynx.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-i386sol2.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-nto.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/tm-vxworks.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/vxworks.mt (100%) rename {contrib/gdb/gdb => gdb}/config/i386/xm-go32.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/xm-i386.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/xm-i386sco.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/xm-i386v.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/xm-i386v4.h (100%) rename {contrib/gdb/gdb => gdb}/config/i386/xm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/ia64/fbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/ia64/fbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/ia64/ia64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/ia64/nm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/ia64/tm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/ia64/tm-ia64.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/decstation.mh (100%) rename {contrib/gdb/gdb => gdb}/config/mips/embed.mt (100%) rename {contrib/gdb/gdb => gdb}/config/mips/littlemips.mh (100%) rename {contrib/gdb/gdb => gdb}/config/mips/mipsv4.mh (100%) rename {contrib/gdb/gdb => gdb}/config/mips/mipsv4.mt (100%) rename {contrib/gdb/gdb => gdb}/config/mips/nbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/mips/nbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/mips/news-mips.mh (100%) rename {contrib/gdb/gdb => gdb}/config/mips/nm-mips.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/nm-news-mips.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/nm-riscos.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/riscos.mh (100%) rename {contrib/gdb/gdb => gdb}/config/mips/tm-mips.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/tm-mipsv4.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/tm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/tm-vxmips.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/tm-wince.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/vxmips.mt (100%) rename {contrib/gdb/gdb => gdb}/config/mips/wince.mt (100%) rename {contrib/gdb/gdb => gdb}/config/mips/xm-mips.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/xm-mipsv4.h (100%) rename {contrib/gdb/gdb => gdb}/config/mips/xm-riscos.h (100%) rename {contrib/gdb/gdb => gdb}/config/nm-gnu.h (100%) rename {contrib/gdb/gdb => gdb}/config/nm-lynx.h (100%) rename {contrib/gdb/gdb => gdb}/config/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/nm-nbsdaout.h (100%) rename {contrib/gdb/gdb => gdb}/config/nm-sysv4.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/fbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/fbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/nbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/nbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/nm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/ppc-eabi.mt (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/ppc-sim.mt (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/tm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/tm-ppc-eabi.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/tm-ppcle-eabi.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/tm-ppcle-sim.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/tm-vxworks.h (100%) rename {contrib/gdb/gdb => gdb}/config/powerpc/vxworks.mt (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/nm-rs6000.h (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/nm-rs6000ly.h (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/rs6000.mh (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/rs6000.mt (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/rs6000lynx.mh (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/rs6000lynx.mt (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/tm-rs6000.h (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/tm-rs6000ly.h (100%) rename {contrib/gdb/gdb => gdb}/config/rs6000/xm-rs6000.h (100%) rename {contrib/gdb/gdb => gdb}/config/s390/s390.mh (100%) rename {contrib/gdb/gdb => gdb}/config/s390/s390.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/fbsd.mh (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/fbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nbsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nbsd64.mh (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nbsd64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nbsdaout.mh (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nbsdelf.mh (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nm-nbsdaout.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/nm-sol2.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/obsd.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/obsd64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/sol2-64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/sol2.mh (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/sol2.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/sparc.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/sparc64.mt (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/tm-fbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/tm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/tm-nbsd64.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/tm-sol2.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/tm-vxworks.h (100%) rename {contrib/gdb/gdb => gdb}/config/sparc/vxworks.mt (100%) rename {contrib/gdb/gdb => gdb}/config/tm-lynx.h (100%) rename {contrib/gdb/gdb => gdb}/config/tm-nto.h (100%) rename {contrib/gdb/gdb => gdb}/config/tm-sunos.h (100%) rename {contrib/gdb/gdb => gdb}/config/tm-sysv4.h (100%) rename {contrib/gdb/gdb => gdb}/config/tm-vxworks.h (100%) rename {contrib/gdb/gdb => gdb}/config/xm-nbsd.h (100%) rename {contrib/gdb/gdb => gdb}/config/xm-sysv4.h (100%) rename {contrib/gdb/gdb => gdb}/copying.awk (100%) rename {contrib/gdb/gdb => gdb}/copying.c (100%) rename {contrib/gdb/gdb => gdb}/core-aout.c (100%) rename {contrib/gdb/gdb => gdb}/core-regset.c (100%) rename {contrib/gdb/gdb => gdb}/corefile.c (100%) rename {contrib/gdb/gdb => gdb}/corelow.c (100%) rename {contrib/gdb/gdb => gdb}/cp-abi.c (100%) rename {contrib/gdb/gdb => gdb}/cp-abi.h (100%) rename {contrib/gdb/gdb => gdb}/cp-namespace.c (100%) rename {contrib/gdb/gdb => gdb}/cp-support.c (100%) rename {contrib/gdb/gdb => gdb}/cp-support.h (100%) rename {contrib/gdb/gdb => gdb}/cp-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/cpu32bug-rom.c (100%) rename {contrib/gdb/gdb => gdb}/dbug-rom.c (100%) rename {contrib/gdb/gdb => gdb}/dbxread.c (100%) rename {contrib/gdb/gdb => gdb}/dcache.c (100%) rename {contrib/gdb/gdb => gdb}/dcache.h (100%) rename {contrib/gdb/gdb => gdb}/defs.h (100%) rename {contrib/gdb/gdb => gdb}/delta68-nat.c (100%) rename {contrib/gdb/gdb => gdb}/demangle.c (100%) rename {contrib/gdb/gdb => gdb}/dictionary.c (100%) rename {contrib/gdb/gdb => gdb}/dictionary.h (100%) rename {contrib/gdb/gdb => gdb}/dink32-rom.c (100%) rename {contrib/gdb/gdb => gdb}/disasm.c (100%) rename {contrib/gdb/gdb => gdb}/disasm.h (100%) rename {contrib/gdb/gdb => gdb}/doc/GDBvn.texi (100%) rename {contrib/gdb/gdb => gdb}/doc/LRS (100%) rename {contrib/gdb/gdb => gdb}/doc/a4rc.sed (100%) rename {contrib/gdb/gdb => gdb}/doc/agentexpr.texi (100%) rename {contrib/gdb/gdb => gdb}/doc/all-cfg.texi (100%) rename {contrib/gdb/gdb => gdb}/doc/annotate.texinfo (100%) rename {contrib/gdb/gdb => gdb}/doc/fdl.texi (100%) rename {contrib/gdb/gdb => gdb}/doc/gdb.info-1 (100%) rename {contrib/gdb/gdb => gdb}/doc/gdb.info-2 (100%) rename {contrib/gdb/gdb => gdb}/doc/gdb.info-3 (100%) rename {contrib/gdb/gdb => gdb}/doc/gdb.texinfo (100%) rename {contrib/gdb/gdb => gdb}/doc/gdbint.texinfo (100%) rename {contrib/gdb/gdb => gdb}/doc/gpl.texi (100%) rename {contrib/gdb/gdb => gdb}/doc/lpsrc.sed (100%) rename {contrib/gdb/gdb => gdb}/doc/observer.texi (100%) rename {contrib/gdb/gdb => gdb}/doc/psrc.sed (100%) rename {contrib/gdb/gdb => gdb}/doc/refcard.tex (100%) rename {contrib/gdb/gdb => gdb}/doc/stabs.texinfo (100%) rename {contrib/gdb/gdb => gdb}/doublest.c (100%) rename {contrib/gdb/gdb => gdb}/doublest.h (100%) rename {contrib/gdb/gdb => gdb}/dpx2-nat.c (100%) rename {contrib/gdb/gdb => gdb}/dsrec.c (100%) rename {contrib/gdb/gdb => gdb}/dummy-frame.c (100%) rename {contrib/gdb/gdb => gdb}/dummy-frame.h (100%) rename {contrib/gdb/gdb => gdb}/dve3900-rom.c (100%) rename {contrib/gdb/gdb => gdb}/dwarf2-frame.c (100%) rename {contrib/gdb/gdb => gdb}/dwarf2-frame.h (100%) rename {contrib/gdb/gdb => gdb}/dwarf2expr.c (100%) rename {contrib/gdb/gdb => gdb}/dwarf2expr.h (100%) rename {contrib/gdb/gdb => gdb}/dwarf2loc.c (100%) rename {contrib/gdb/gdb => gdb}/dwarf2loc.h (100%) rename {contrib/gdb/gdb => gdb}/dwarf2read.c (100%) rename {contrib/gdb/gdb => gdb}/dwarfread.c (100%) rename {contrib/gdb/gdb => gdb}/elfread.c (100%) rename {contrib/gdb/gdb => gdb}/environ.c (100%) rename {contrib/gdb/gdb => gdb}/environ.h (100%) rename {contrib/gdb/gdb => gdb}/eval.c (100%) rename {contrib/gdb/gdb => gdb}/event-loop.c (100%) rename {contrib/gdb/gdb => gdb}/event-loop.h (100%) rename {contrib/gdb/gdb => gdb}/event-top.c (100%) rename {contrib/gdb/gdb => gdb}/event-top.h (100%) rename {contrib/gdb/gdb => gdb}/exc_request.defs (100%) rename {contrib/gdb/gdb => gdb}/exec.c (100%) rename {contrib/gdb/gdb => gdb}/exec.h (100%) rename {contrib/gdb/gdb => gdb}/expprint.c (100%) rename {contrib/gdb/gdb => gdb}/expression.h (100%) rename {contrib/gdb/gdb => gdb}/f-exp.c (100%) rename {contrib/gdb/gdb => gdb}/f-exp.y (100%) rename {contrib/gdb/gdb => gdb}/f-lang.c (100%) rename {contrib/gdb/gdb => gdb}/f-lang.h (100%) rename {contrib/gdb/gdb => gdb}/f-typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/f-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/fbsd-proc.c (100%) rename {contrib/gdb/gdb => gdb}/findvar.c (100%) rename {contrib/gdb/gdb => gdb}/fork-child.c (100%) rename {contrib/gdb/gdb => gdb}/frame-base.c (100%) rename {contrib/gdb/gdb => gdb}/frame-base.h (100%) rename {contrib/gdb/gdb => gdb}/frame-unwind.c (100%) rename {contrib/gdb/gdb => gdb}/frame-unwind.h (100%) rename {contrib/gdb/gdb => gdb}/frame.c (100%) rename {contrib/gdb/gdb => gdb}/frame.h (100%) rename {contrib/gdb/gdb => gdb}/gcore.c (100%) rename {contrib/gdb/gdb => gdb}/gdb-events.c (100%) rename {contrib/gdb/gdb => gdb}/gdb-events.h (100%) rename {contrib/gdb/gdb => gdb}/gdb-events.sh (100%) rename {contrib/gdb/gdb => gdb}/gdb-stabs.h (100%) rename {contrib/gdb/gdb => gdb}/gdb.1 (100%) rename {contrib/gdb/gdb => gdb}/gdb.c (100%) rename {contrib/gdb/gdb => gdb}/gdb.gdb (100%) rename {contrib/gdb/gdb => gdb}/gdb.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_assert.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_curses.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_dirent.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_gcore.sh (100%) rename {contrib/gdb/gdb => gdb}/gdb_indent.sh (100%) rename {contrib/gdb/gdb => gdb}/gdb_locale.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_mbuild.sh (100%) rename {contrib/gdb/gdb => gdb}/gdb_obstack.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_proc_service.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_regex.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_stat.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_string.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_thread_db.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_vfork.h (100%) rename {contrib/gdb/gdb => gdb}/gdb_wait.h (100%) rename {contrib/gdb/gdb => gdb}/gdbarch.c (100%) rename {contrib/gdb/gdb => gdb}/gdbarch.h (100%) rename {contrib/gdb/gdb => gdb}/gdbarch.sh (100%) rename {contrib/gdb/gdb => gdb}/gdbcmd.h (100%) rename {contrib/gdb/gdb => gdb}/gdbcore.h (100%) rename {contrib/gdb/gdb => gdb}/gdbinit.in (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/README (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/acinclude.m4 (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/aclocal.m4 (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/gdbreplay.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/gdbserver.1 (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/i387-fp.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/i387-fp.h (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/inferiors.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/mem-break.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/mem-break.h (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/proc-service.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/regcache.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/regcache.h (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/remote-utils.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/server.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/server.h (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/target.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/target.h (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/terminal.h (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/thread-db.c (100%) rename {contrib/gdb/gdb => gdb}/gdbserver/utils.c (100%) rename {contrib/gdb/gdb => gdb}/gdbthread.h (100%) rename {contrib/gdb/gdb => gdb}/gdbtypes.c (100%) rename {contrib/gdb/gdb => gdb}/gdbtypes.h (100%) rename {contrib/gdb/gdb => gdb}/glibc-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/glibc-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/gnu-nat.c (100%) rename {contrib/gdb/gdb => gdb}/gnu-nat.h (100%) rename {contrib/gdb/gdb => gdb}/gnu-v2-abi.c (100%) rename {contrib/gdb/gdb => gdb}/gnu-v3-abi.c (100%) rename {contrib/gdb/gdb => gdb}/go32-nat.c (100%) rename {contrib/gdb/gdb => gdb}/gregset.h (100%) rename {contrib/gdb/gdb => gdb}/hpacc-abi.c (100%) rename {contrib/gdb/gdb => gdb}/hpread.c (100%) rename {contrib/gdb/gdb => gdb}/i386-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i386-nto-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386-sol2-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386-stub.c (100%) rename {contrib/gdb/gdb => gdb}/i386-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/i386bsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i386bsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386fbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i386fbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386gnu-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i386gnu-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386ly-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386nbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386obsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i386obsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i386v-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i386v4-nat.c (100%) rename {contrib/gdb/gdb => gdb}/i387-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/i387-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/ia64-fbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/ia64-fbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/ia64-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/ia64-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/inf-loop.c (100%) rename {contrib/gdb/gdb => gdb}/inf-loop.h (100%) rename {contrib/gdb/gdb => gdb}/infcall.c (100%) rename {contrib/gdb/gdb => gdb}/infcall.h (100%) rename {contrib/gdb/gdb => gdb}/infcmd.c (100%) rename {contrib/gdb/gdb => gdb}/inferior.h (100%) rename {contrib/gdb/gdb => gdb}/inflow.c (100%) rename {contrib/gdb/gdb => gdb}/inflow.h (100%) rename {contrib/gdb/gdb => gdb}/infptrace.c (100%) rename {contrib/gdb/gdb => gdb}/infrun.c (100%) rename {contrib/gdb/gdb => gdb}/inftarg.c (100%) rename {contrib/gdb/gdb => gdb}/infttrace.c (100%) rename {contrib/gdb/gdb => gdb}/infttrace.h (100%) rename {contrib/gdb/gdb => gdb}/interps.c (100%) rename {contrib/gdb/gdb => gdb}/interps.h (100%) rename {contrib/gdb/gdb => gdb}/jv-exp.c (100%) rename {contrib/gdb/gdb => gdb}/jv-exp.y (100%) rename {contrib/gdb/gdb => gdb}/jv-lang.c (100%) rename {contrib/gdb/gdb => gdb}/jv-lang.h (100%) rename {contrib/gdb/gdb => gdb}/jv-typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/jv-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/kod-cisco.c (100%) rename {contrib/gdb/gdb => gdb}/kod.c (100%) rename {contrib/gdb/gdb => gdb}/kod.h (100%) rename {contrib/gdb/gdb => gdb}/language.c (100%) rename {contrib/gdb/gdb => gdb}/language.h (100%) rename {contrib/gdb/gdb => gdb}/libunwind-frame.c (100%) rename {contrib/gdb/gdb => gdb}/libunwind-frame.h (100%) rename {contrib/gdb/gdb => gdb}/lin-lwp.c (100%) rename {contrib/gdb/gdb => gdb}/linespec.c (100%) rename {contrib/gdb/gdb => gdb}/linespec.h (100%) rename {contrib/gdb/gdb => gdb}/lynx-nat.c (100%) rename {contrib/gdb/gdb => gdb}/m2-exp.c (100%) rename {contrib/gdb/gdb => gdb}/m2-exp.y (100%) rename {contrib/gdb/gdb => gdb}/m2-lang.c (100%) rename {contrib/gdb/gdb => gdb}/m2-lang.h (100%) rename {contrib/gdb/gdb => gdb}/m2-typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/m2-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/macrocmd.c (100%) rename {contrib/gdb/gdb => gdb}/macroexp.c (100%) rename {contrib/gdb/gdb => gdb}/macroexp.h (100%) rename {contrib/gdb/gdb => gdb}/macroscope.c (100%) rename {contrib/gdb/gdb => gdb}/macroscope.h (100%) rename {contrib/gdb/gdb => gdb}/macrotab.c (100%) rename {contrib/gdb/gdb => gdb}/macrotab.h (100%) rename {contrib/gdb/gdb => gdb}/main.c (100%) rename {contrib/gdb/gdb => gdb}/main.h (100%) rename {contrib/gdb/gdb => gdb}/maint.c (100%) rename {contrib/gdb/gdb => gdb}/mdebugread.c (100%) rename {contrib/gdb/gdb => gdb}/mem-break.c (100%) rename {contrib/gdb/gdb => gdb}/memattr.c (100%) rename {contrib/gdb/gdb => gdb}/memattr.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmd-break.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmd-disas.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmd-env.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmd-file.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmd-stack.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmd-var.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmds.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-cmds.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-console.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-console.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-getopt.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-getopt.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-interp.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-main.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-main.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-out.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-out.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-parse.c (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-parse.h (100%) rename {contrib/gdb/gdb => gdb}/mi/mi-symbol-cmds.c (100%) rename {contrib/gdb/gdb => gdb}/minimon.h (100%) rename {contrib/gdb/gdb => gdb}/minsyms.c (100%) rename {contrib/gdb/gdb => gdb}/mips-nat.c (100%) rename {contrib/gdb/gdb => gdb}/mips-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/mips-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/mipsnbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/mipsnbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/mipsnbsd-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/mipsread.c (100%) rename {contrib/gdb/gdb => gdb}/mipsv4-nat.c (100%) rename {contrib/gdb/gdb => gdb}/monitor.c (100%) rename {contrib/gdb/gdb => gdb}/monitor.h (100%) rename {contrib/gdb/gdb => gdb}/msg.defs (100%) rename {contrib/gdb/gdb => gdb}/msg_reply.defs (100%) rename {contrib/gdb/gdb => gdb}/nbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/nbsd-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/nlmread.c (100%) rename {contrib/gdb/gdb => gdb}/notify.defs (100%) rename {contrib/gdb/gdb => gdb}/nto-procfs.c (100%) rename {contrib/gdb/gdb => gdb}/nto-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/nto-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/objc-exp.c (100%) rename {contrib/gdb/gdb => gdb}/objc-exp.y (100%) rename {contrib/gdb/gdb => gdb}/objc-lang.c (100%) rename {contrib/gdb/gdb => gdb}/objc-lang.h (100%) rename {contrib/gdb/gdb => gdb}/objfiles.c (100%) rename {contrib/gdb/gdb => gdb}/objfiles.h (100%) rename {contrib/gdb/gdb => gdb}/observer.c (100%) rename {contrib/gdb/gdb => gdb}/observer.h (100%) rename {contrib/gdb/gdb => gdb}/ocd.c (100%) rename {contrib/gdb/gdb => gdb}/ocd.h (100%) rename {contrib/gdb/gdb => gdb}/osabi.c (100%) rename {contrib/gdb/gdb => gdb}/osabi.h (100%) rename {contrib/gdb/gdb => gdb}/p-exp.c (100%) rename {contrib/gdb/gdb => gdb}/p-exp.y (100%) rename {contrib/gdb/gdb => gdb}/p-lang.c (100%) rename {contrib/gdb/gdb => gdb}/p-lang.h (100%) rename {contrib/gdb/gdb => gdb}/p-typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/p-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/pa64solib.c (100%) rename {contrib/gdb/gdb => gdb}/pa64solib.h (100%) rename {contrib/gdb/gdb => gdb}/parse.c (100%) rename {contrib/gdb/gdb => gdb}/parser-defs.h (100%) rename {contrib/gdb/gdb => gdb}/ppc-bdm.c (100%) rename {contrib/gdb/gdb => gdb}/ppc-sysv-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/ppc-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/ppcbug-rom.c (100%) rename {contrib/gdb/gdb => gdb}/ppcfbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/ppcfbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/ppcfbsd-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/ppcnbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/ppcnbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/ppcnbsd-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/printcmd.c (100%) rename {contrib/gdb/gdb => gdb}/proc-api.c (100%) rename {contrib/gdb/gdb => gdb}/proc-events.c (100%) rename {contrib/gdb/gdb => gdb}/proc-flags.c (100%) rename {contrib/gdb/gdb => gdb}/proc-service.c (100%) rename {contrib/gdb/gdb => gdb}/proc-utils.h (100%) rename {contrib/gdb/gdb => gdb}/proc-why.c (100%) rename {contrib/gdb/gdb => gdb}/process_reply.defs (100%) rename {contrib/gdb/gdb => gdb}/procfs.c (100%) rename {contrib/gdb/gdb => gdb}/regcache.c (100%) rename {contrib/gdb/gdb => gdb}/regcache.h (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-arm.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-i386.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-ia64.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-m68k.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-mips.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-ppc.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-s390.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-s390x.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-sh.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/reg-x86-64.dat (100%) rename {contrib/gdb/gdb => gdb}/regformats/regdat.sh (100%) rename {contrib/gdb/gdb => gdb}/regformats/regdef.h (100%) rename {contrib/gdb/gdb => gdb}/reggroups.c (100%) rename {contrib/gdb/gdb => gdb}/reggroups.h (100%) rename {contrib/gdb/gdb => gdb}/regset.h (100%) rename {contrib/gdb/gdb => gdb}/remote-e7000.c (100%) rename {contrib/gdb/gdb => gdb}/remote-est.c (100%) rename {contrib/gdb/gdb => gdb}/remote-fileio.c (100%) rename {contrib/gdb/gdb => gdb}/remote-fileio.h (100%) rename {contrib/gdb/gdb => gdb}/remote-hms.c (100%) rename {contrib/gdb/gdb => gdb}/remote-mips.c (100%) rename {contrib/gdb/gdb => gdb}/remote-rdi.c (100%) rename {contrib/gdb/gdb => gdb}/remote-rdp.c (100%) rename {contrib/gdb/gdb => gdb}/remote-sds.c (100%) rename {contrib/gdb/gdb => gdb}/remote-sim.c (100%) rename {contrib/gdb/gdb => gdb}/remote-st.c (100%) rename {contrib/gdb/gdb => gdb}/remote-utils.c (100%) rename {contrib/gdb/gdb => gdb}/remote-utils.h (100%) rename {contrib/gdb/gdb => gdb}/remote-vx.c (100%) rename {contrib/gdb/gdb => gdb}/remote-vx68.c (100%) rename {contrib/gdb/gdb => gdb}/remote-vxmips.c (100%) rename {contrib/gdb/gdb => gdb}/remote-vxsparc.c (100%) rename {contrib/gdb/gdb => gdb}/remote.c (100%) rename {contrib/gdb/gdb => gdb}/remote.h (100%) rename {contrib/gdb/gdb => gdb}/reply_mig_hack.awk (100%) rename {contrib/gdb/gdb => gdb}/rom68k-rom.c (100%) rename {contrib/gdb/gdb => gdb}/rs6000-nat.c (100%) rename {contrib/gdb/gdb => gdb}/rs6000-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/s390-nat.c (100%) rename {contrib/gdb/gdb => gdb}/s390-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/s390-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/scm-exp.c (100%) rename {contrib/gdb/gdb => gdb}/scm-lang.c (100%) rename {contrib/gdb/gdb => gdb}/scm-lang.h (100%) rename {contrib/gdb/gdb => gdb}/scm-tags.h (100%) rename {contrib/gdb/gdb => gdb}/scm-valprint.c (100%) rename {contrib/gdb/gdb => gdb}/sentinel-frame.c (100%) rename {contrib/gdb/gdb => gdb}/sentinel-frame.h (100%) rename {contrib/gdb/gdb => gdb}/ser-e7kpc.c (100%) rename {contrib/gdb/gdb => gdb}/ser-go32.c (100%) rename {contrib/gdb/gdb => gdb}/ser-pipe.c (100%) rename {contrib/gdb/gdb => gdb}/ser-tcp.c (100%) rename {contrib/gdb/gdb => gdb}/ser-unix.c (100%) rename {contrib/gdb/gdb => gdb}/ser-unix.h (100%) rename {contrib/gdb/gdb => gdb}/serial.c (100%) rename {contrib/gdb/gdb => gdb}/serial.h (100%) rename {contrib/gdb/gdb => gdb}/signals/signals.c (100%) rename {contrib/gdb/gdb => gdb}/sim-regno.h (100%) rename {contrib/gdb/gdb => gdb}/sol-thread.c (100%) rename {contrib/gdb/gdb => gdb}/solib-legacy.c (100%) rename {contrib/gdb/gdb => gdb}/solib-osf.c (100%) rename {contrib/gdb/gdb => gdb}/solib-sunos.c (100%) rename {contrib/gdb/gdb => gdb}/solib-svr4.c (100%) rename {contrib/gdb/gdb => gdb}/solib-svr4.h (100%) rename {contrib/gdb/gdb => gdb}/solib.c (100%) rename {contrib/gdb/gdb => gdb}/solib.h (100%) rename {contrib/gdb/gdb => gdb}/solist.h (100%) rename {contrib/gdb/gdb => gdb}/somread.c (100%) rename {contrib/gdb/gdb => gdb}/somsolib.c (100%) rename {contrib/gdb/gdb => gdb}/somsolib.h (100%) rename {contrib/gdb/gdb => gdb}/source.c (100%) rename {contrib/gdb/gdb => gdb}/source.h (100%) rename {contrib/gdb/gdb => gdb}/sparc-nat.c (100%) rename {contrib/gdb/gdb => gdb}/sparc-nat.h (100%) rename {contrib/gdb/gdb => gdb}/sparc-sol2-nat.c (100%) rename {contrib/gdb/gdb => gdb}/sparc-sol2-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparc-stub.c (100%) rename {contrib/gdb/gdb => gdb}/sparc-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparc-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/sparc64-nat.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64-sol2-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64-tdep.h (100%) rename {contrib/gdb/gdb => gdb}/sparc64fbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64fbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64nbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64nbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparc64obsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparcnbsd-nat.c (100%) rename {contrib/gdb/gdb => gdb}/sparcnbsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/sparcobsd-tdep.c (100%) rename {contrib/gdb/gdb => gdb}/srec.h (100%) rename {contrib/gdb/gdb => gdb}/stabsread.c (100%) rename {contrib/gdb/gdb => gdb}/stabsread.h (100%) rename {contrib/gdb/gdb => gdb}/stack.c (100%) rename {contrib/gdb/gdb => gdb}/stack.h (100%) rename {contrib/gdb/gdb => gdb}/standalone.c (100%) rename {contrib/gdb/gdb => gdb}/std-regs.c (100%) rename {contrib/gdb/gdb => gdb}/stop-gdb.c (100%) rename {contrib/gdb/gdb => gdb}/sun3-nat.c (100%) rename {contrib/gdb/gdb => gdb}/symfile.c (100%) rename {contrib/gdb/gdb => gdb}/symfile.h (100%) rename {contrib/gdb/gdb => gdb}/symmisc.c (100%) rename {contrib/gdb/gdb => gdb}/symtab.c (100%) rename {contrib/gdb/gdb => gdb}/symtab.h (100%) rename {contrib/gdb/gdb => gdb}/target.c (100%) rename {contrib/gdb/gdb => gdb}/target.h (100%) rename {contrib/gdb/gdb => gdb}/terminal.h (100%) rename {contrib/gdb/gdb => gdb}/thread-db.c (100%) rename {contrib/gdb/gdb => gdb}/thread.c (100%) rename {contrib/gdb/gdb => gdb}/top.c (100%) rename {contrib/gdb/gdb => gdb}/top.h (100%) rename {contrib/gdb/gdb => gdb}/tracepoint.c (100%) rename {contrib/gdb/gdb => gdb}/tracepoint.h (100%) rename {contrib/gdb/gdb => gdb}/trad-frame.c (100%) rename {contrib/gdb/gdb => gdb}/trad-frame.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-command.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-command.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-data.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-data.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-disasm.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-disasm.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-file.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-file.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-hooks.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-hooks.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-interp.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-io.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-io.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-layout.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-layout.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-main.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-out.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-regs.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-regs.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-source.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-source.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-stack.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-stack.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-win.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-win.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-windata.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-windata.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-wingeneral.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-wingeneral.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-winsource.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui-winsource.h (100%) rename {contrib/gdb/gdb => gdb}/tui/tui.c (100%) rename {contrib/gdb/gdb => gdb}/tui/tui.h (100%) rename {contrib/gdb/gdb => gdb}/typeprint.c (100%) rename {contrib/gdb/gdb => gdb}/typeprint.h (100%) rename {contrib/gdb/gdb => gdb}/ui-file.c (100%) rename {contrib/gdb/gdb => gdb}/ui-file.h (100%) rename {contrib/gdb/gdb => gdb}/ui-out.c (100%) rename {contrib/gdb/gdb => gdb}/ui-out.h (100%) rename {contrib/gdb/gdb => gdb}/user-regs.c (100%) rename {contrib/gdb/gdb => gdb}/user-regs.h (100%) rename {contrib/gdb/gdb => gdb}/utils.c (100%) rename {contrib/gdb/gdb => gdb}/uw-thread.c (100%) rename {contrib/gdb/gdb => gdb}/valarith.c (100%) rename {contrib/gdb/gdb => gdb}/valops.c (100%) rename {contrib/gdb/gdb => gdb}/valprint.c (100%) rename {contrib/gdb/gdb => gdb}/valprint.h (100%) rename {contrib/gdb/gdb => gdb}/value.h (100%) rename {contrib/gdb/gdb => gdb}/values.c (100%) rename {contrib/gdb/gdb => gdb}/varobj.c (100%) rename {contrib/gdb/gdb => gdb}/varobj.h (100%) rename {contrib/gdb/gdb => gdb}/version.h (100%) rename {contrib/gdb/gdb => gdb}/version.in (100%) rename {contrib/gdb/gdb => gdb}/win32-nat.c (100%) rename {contrib/gdb/gdb => gdb}/wince-stub.c (100%) rename {contrib/gdb/gdb => gdb}/wince-stub.h (100%) rename {contrib/gdb/gdb => gdb}/wince.c (100%) rename {contrib/gdb/gdb => gdb}/wrapper.c (100%) rename {contrib/gdb/gdb => gdb}/wrapper.h (100%) rename {contrib/gdb/gdb => gdb}/xcoffread.c (100%) rename {contrib/gdb/gdb => gdb}/xcoffsolib.c (100%) rename {contrib/gdb/gdb => gdb}/xcoffsolib.h (100%) rename {contrib/gdb/gdb => gdb}/xmodem.c (100%) rename {contrib/gdb/gdb => gdb}/xmodem.h (100%) rename contrib/gdb/gettext.m4 => gettext.m4 (100%) rename {contrib/gdb/include => include}/COPYING (100%) rename {contrib/gdb/include => include}/MAINTAINERS (100%) rename {contrib/gdb/include => include}/alloca-conf.h (100%) rename {contrib/gdb/include => include}/ansidecl.h (100%) rename {contrib/gdb/include => include}/bfdlink.h (100%) rename {contrib/gdb/include => include}/bin-bugs.h (100%) rename {contrib/gdb/include => include}/bout.h (100%) rename {contrib/gdb/include => include}/demangle.h (100%) rename {contrib/gdb/include => include}/dis-asm.h (100%) rename {contrib/gdb/include => include}/dyn-string.h (100%) rename {contrib/gdb/include => include}/fibheap.h (100%) rename {contrib/gdb/include => include}/filenames.h (100%) rename {contrib/gdb/include => include}/floatformat.h (100%) rename {contrib/gdb/include => include}/fnmatch.h (100%) rename {contrib/gdb/include => include}/fopen-bin.h (100%) rename {contrib/gdb/include => include}/fopen-same.h (100%) rename {contrib/gdb/include => include}/fopen-vms.h (100%) rename {contrib/gdb/include => include}/gdb/callback.h (100%) rename {contrib/gdb/include => include}/gdb/fileio.h (100%) rename {contrib/gdb/include => include}/gdb/remote-sim.h (100%) rename {contrib/gdb/include => include}/gdb/signals.h (100%) rename {contrib/gdb/include => include}/gdb/sim-arm.h (100%) rename {contrib/gdb/include => include}/gdb/sim-d10v.h (100%) rename {contrib/gdb/include => include}/gdb/sim-frv.h (100%) rename {contrib/gdb/include => include}/gdb/sim-h8300.h (100%) rename {contrib/gdb/include => include}/gdb/sim-sh.h (100%) rename {contrib/gdb/include => include}/gdbm.h (100%) rename {contrib/gdb/include => include}/getopt.h (100%) rename {contrib/gdb/include => include}/hashtab.h (100%) rename {contrib/gdb/include => include}/hp-symtab.h (100%) rename {contrib/gdb/include => include}/ieee.h (100%) rename {contrib/gdb/include => include}/libiberty.h (100%) rename {contrib/gdb/include => include}/md5.h (100%) rename {contrib/gdb/include => include}/oasys.h (100%) rename {contrib/gdb/include => include}/objalloc.h (100%) rename {contrib/gdb/include => include}/obstack.h (100%) rename {contrib/gdb/include => include}/os9k.h (100%) rename {contrib/gdb/include => include}/partition.h (100%) rename {contrib/gdb/include => include}/progress.h (100%) rename {contrib/gdb/include => include}/safe-ctype.h (100%) rename {contrib/gdb/include => include}/sort.h (100%) rename {contrib/gdb/include => include}/splay-tree.h (100%) rename {contrib/gdb/include => include}/symcat.h (100%) rename {contrib/gdb/include => include}/ternary.h (100%) rename {contrib/gdb/include => include}/xregex.h (100%) rename {contrib/gdb/include => include}/xregex2.h (100%) rename {contrib/gdb/include => include}/xtensa-isa-internal.h (100%) rename {contrib/gdb/include => include}/xtensa-isa.h (100%) rename contrib/gdb/install-sh => install-sh (100%) rename contrib/gdb/libtool.m4 => libtool.m4 (100%) rename contrib/gdb/ltcf-c.sh => ltcf-c.sh (100%) rename contrib/gdb/ltcf-cxx.sh => ltcf-cxx.sh (100%) rename contrib/gdb/ltcf-gcj.sh => ltcf-gcj.sh (100%) rename contrib/gdb/ltconfig => ltconfig (100%) rename contrib/gdb/ltmain.sh => ltmain.sh (100%) rename contrib/gdb/md5.sum => md5.sum (100%) rename contrib/gdb/missing => missing (100%) rename contrib/gdb/mkinstalldirs => mkinstalldirs (100%) rename contrib/gdb/move-if-change => move-if-change (100%) rename contrib/gdb/src-release => src-release (100%) rename contrib/gdb/symlink-tree => symlink-tree (100%) rename contrib/gdb/ylwrap => ylwrap (100%) diff --git a/contrib/gdb/COPYING b/COPYING similarity index 100% rename from contrib/gdb/COPYING rename to COPYING diff --git a/contrib/gdb/COPYING.LIB b/COPYING.LIB similarity index 100% rename from contrib/gdb/COPYING.LIB rename to COPYING.LIB diff --git a/contrib/gdb/FREEBSD-diffs b/FREEBSD-diffs similarity index 100% rename from contrib/gdb/FREEBSD-diffs rename to FREEBSD-diffs diff --git a/contrib/gdb/README b/README similarity index 100% rename from contrib/gdb/README rename to README diff --git a/contrib/gdb/config-ml.in b/config-ml.in similarity index 100% rename from contrib/gdb/config-ml.in rename to config-ml.in diff --git a/contrib/gdb/djunpack.bat b/djunpack.bat similarity index 100% rename from contrib/gdb/djunpack.bat rename to djunpack.bat diff --git a/contrib/gdb/gdb/CONTRIBUTE b/gdb/CONTRIBUTE similarity index 100% rename from contrib/gdb/gdb/CONTRIBUTE rename to gdb/CONTRIBUTE diff --git a/contrib/gdb/gdb/COPYING b/gdb/COPYING similarity index 100% rename from contrib/gdb/gdb/COPYING rename to gdb/COPYING diff --git a/contrib/gdb/gdb/MAINTAINERS b/gdb/MAINTAINERS similarity index 100% rename from contrib/gdb/gdb/MAINTAINERS rename to gdb/MAINTAINERS diff --git a/contrib/gdb/gdb/NEWS b/gdb/NEWS similarity index 100% rename from contrib/gdb/gdb/NEWS rename to gdb/NEWS diff --git a/contrib/gdb/gdb/PROBLEMS b/gdb/PROBLEMS similarity index 100% rename from contrib/gdb/gdb/PROBLEMS rename to gdb/PROBLEMS diff --git a/contrib/gdb/gdb/README b/gdb/README similarity index 100% rename from contrib/gdb/gdb/README rename to gdb/README diff --git a/contrib/gdb/gdb/TODO b/gdb/TODO similarity index 100% rename from contrib/gdb/gdb/TODO rename to gdb/TODO diff --git a/contrib/gdb/gdb/abug-rom.c b/gdb/abug-rom.c similarity index 100% rename from contrib/gdb/gdb/abug-rom.c rename to gdb/abug-rom.c diff --git a/contrib/gdb/gdb/acinclude.m4 b/gdb/acinclude.m4 similarity index 100% rename from contrib/gdb/gdb/acinclude.m4 rename to gdb/acinclude.m4 diff --git a/contrib/gdb/gdb/aclocal.m4 b/gdb/aclocal.m4 similarity index 100% rename from contrib/gdb/gdb/aclocal.m4 rename to gdb/aclocal.m4 diff --git a/contrib/gdb/gdb/ada-exp.c b/gdb/ada-exp.c similarity index 100% rename from contrib/gdb/gdb/ada-exp.c rename to gdb/ada-exp.c diff --git a/contrib/gdb/gdb/ada-exp.y b/gdb/ada-exp.y similarity index 100% rename from contrib/gdb/gdb/ada-exp.y rename to gdb/ada-exp.y diff --git a/contrib/gdb/gdb/ada-lang.c b/gdb/ada-lang.c similarity index 100% rename from contrib/gdb/gdb/ada-lang.c rename to gdb/ada-lang.c diff --git a/contrib/gdb/gdb/ada-lang.h b/gdb/ada-lang.h similarity index 100% rename from contrib/gdb/gdb/ada-lang.h rename to gdb/ada-lang.h diff --git a/contrib/gdb/gdb/ada-lex.l b/gdb/ada-lex.l similarity index 100% rename from contrib/gdb/gdb/ada-lex.l rename to gdb/ada-lex.l diff --git a/contrib/gdb/gdb/ada-tasks.c b/gdb/ada-tasks.c similarity index 100% rename from contrib/gdb/gdb/ada-tasks.c rename to gdb/ada-tasks.c diff --git a/contrib/gdb/gdb/ada-typeprint.c b/gdb/ada-typeprint.c similarity index 100% rename from contrib/gdb/gdb/ada-typeprint.c rename to gdb/ada-typeprint.c diff --git a/contrib/gdb/gdb/ada-valprint.c b/gdb/ada-valprint.c similarity index 100% rename from contrib/gdb/gdb/ada-valprint.c rename to gdb/ada-valprint.c diff --git a/contrib/gdb/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c similarity index 100% rename from contrib/gdb/gdb/alpha-mdebug-tdep.c rename to gdb/alpha-mdebug-tdep.c diff --git a/contrib/gdb/gdb/alpha-nat.c b/gdb/alpha-nat.c similarity index 100% rename from contrib/gdb/gdb/alpha-nat.c rename to gdb/alpha-nat.c diff --git a/contrib/gdb/gdb/alpha-tdep.c b/gdb/alpha-tdep.c similarity index 100% rename from contrib/gdb/gdb/alpha-tdep.c rename to gdb/alpha-tdep.c diff --git a/contrib/gdb/gdb/alpha-tdep.h b/gdb/alpha-tdep.h similarity index 100% rename from contrib/gdb/gdb/alpha-tdep.h rename to gdb/alpha-tdep.h diff --git a/contrib/gdb/gdb/alphabsd-nat.c b/gdb/alphabsd-nat.c similarity index 100% rename from contrib/gdb/gdb/alphabsd-nat.c rename to gdb/alphabsd-nat.c diff --git a/contrib/gdb/gdb/alphabsd-tdep.c b/gdb/alphabsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/alphabsd-tdep.c rename to gdb/alphabsd-tdep.c diff --git a/contrib/gdb/gdb/alphabsd-tdep.h b/gdb/alphabsd-tdep.h similarity index 100% rename from contrib/gdb/gdb/alphabsd-tdep.h rename to gdb/alphabsd-tdep.h diff --git a/contrib/gdb/gdb/alphafbsd-tdep.c b/gdb/alphafbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/alphafbsd-tdep.c rename to gdb/alphafbsd-tdep.c diff --git a/contrib/gdb/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/alphanbsd-tdep.c rename to gdb/alphanbsd-tdep.c diff --git a/contrib/gdb/gdb/amd64-nat.c b/gdb/amd64-nat.c similarity index 100% rename from contrib/gdb/gdb/amd64-nat.c rename to gdb/amd64-nat.c diff --git a/contrib/gdb/gdb/amd64-nat.h b/gdb/amd64-nat.h similarity index 100% rename from contrib/gdb/gdb/amd64-nat.h rename to gdb/amd64-nat.h diff --git a/contrib/gdb/gdb/amd64-tdep.c b/gdb/amd64-tdep.c similarity index 100% rename from contrib/gdb/gdb/amd64-tdep.c rename to gdb/amd64-tdep.c diff --git a/contrib/gdb/gdb/amd64-tdep.h b/gdb/amd64-tdep.h similarity index 100% rename from contrib/gdb/gdb/amd64-tdep.h rename to gdb/amd64-tdep.h diff --git a/contrib/gdb/gdb/amd64bsd-nat.c b/gdb/amd64bsd-nat.c similarity index 100% rename from contrib/gdb/gdb/amd64bsd-nat.c rename to gdb/amd64bsd-nat.c diff --git a/contrib/gdb/gdb/amd64fbsd-nat.c b/gdb/amd64fbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/amd64fbsd-nat.c rename to gdb/amd64fbsd-nat.c diff --git a/contrib/gdb/gdb/amd64fbsd-tdep.c b/gdb/amd64fbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/amd64fbsd-tdep.c rename to gdb/amd64fbsd-tdep.c diff --git a/contrib/gdb/gdb/amd64nbsd-nat.c b/gdb/amd64nbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/amd64nbsd-nat.c rename to gdb/amd64nbsd-nat.c diff --git a/contrib/gdb/gdb/amd64nbsd-tdep.c b/gdb/amd64nbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/amd64nbsd-tdep.c rename to gdb/amd64nbsd-tdep.c diff --git a/contrib/gdb/gdb/amd64obsd-nat.c b/gdb/amd64obsd-nat.c similarity index 100% rename from contrib/gdb/gdb/amd64obsd-nat.c rename to gdb/amd64obsd-nat.c diff --git a/contrib/gdb/gdb/amd64obsd-tdep.c b/gdb/amd64obsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/amd64obsd-tdep.c rename to gdb/amd64obsd-tdep.c diff --git a/contrib/gdb/gdb/annotate.c b/gdb/annotate.c similarity index 100% rename from contrib/gdb/gdb/annotate.c rename to gdb/annotate.c diff --git a/contrib/gdb/gdb/annotate.h b/gdb/annotate.h similarity index 100% rename from contrib/gdb/gdb/annotate.h rename to gdb/annotate.h diff --git a/contrib/gdb/gdb/arch-utils.c b/gdb/arch-utils.c similarity index 100% rename from contrib/gdb/gdb/arch-utils.c rename to gdb/arch-utils.c diff --git a/contrib/gdb/gdb/arch-utils.h b/gdb/arch-utils.h similarity index 100% rename from contrib/gdb/gdb/arch-utils.h rename to gdb/arch-utils.h diff --git a/contrib/gdb/gdb/arm-tdep.c b/gdb/arm-tdep.c similarity index 100% rename from contrib/gdb/gdb/arm-tdep.c rename to gdb/arm-tdep.c diff --git a/contrib/gdb/gdb/arm-tdep.h b/gdb/arm-tdep.h similarity index 100% rename from contrib/gdb/gdb/arm-tdep.h rename to gdb/arm-tdep.h diff --git a/contrib/gdb/gdb/armnbsd-nat.c b/gdb/armnbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/armnbsd-nat.c rename to gdb/armnbsd-nat.c diff --git a/contrib/gdb/gdb/armnbsd-tdep.c b/gdb/armnbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/armnbsd-tdep.c rename to gdb/armnbsd-tdep.c diff --git a/contrib/gdb/gdb/auxv.c b/gdb/auxv.c similarity index 100% rename from contrib/gdb/gdb/auxv.c rename to gdb/auxv.c diff --git a/contrib/gdb/gdb/auxv.h b/gdb/auxv.h similarity index 100% rename from contrib/gdb/gdb/auxv.h rename to gdb/auxv.h diff --git a/contrib/gdb/gdb/ax-gdb.c b/gdb/ax-gdb.c similarity index 100% rename from contrib/gdb/gdb/ax-gdb.c rename to gdb/ax-gdb.c diff --git a/contrib/gdb/gdb/ax-gdb.h b/gdb/ax-gdb.h similarity index 100% rename from contrib/gdb/gdb/ax-gdb.h rename to gdb/ax-gdb.h diff --git a/contrib/gdb/gdb/ax-general.c b/gdb/ax-general.c similarity index 100% rename from contrib/gdb/gdb/ax-general.c rename to gdb/ax-general.c diff --git a/contrib/gdb/gdb/ax.h b/gdb/ax.h similarity index 100% rename from contrib/gdb/gdb/ax.h rename to gdb/ax.h diff --git a/contrib/gdb/gdb/bcache.c b/gdb/bcache.c similarity index 100% rename from contrib/gdb/gdb/bcache.c rename to gdb/bcache.c diff --git a/contrib/gdb/gdb/bcache.h b/gdb/bcache.h similarity index 100% rename from contrib/gdb/gdb/bcache.h rename to gdb/bcache.h diff --git a/contrib/gdb/gdb/bfd-target.c b/gdb/bfd-target.c similarity index 100% rename from contrib/gdb/gdb/bfd-target.c rename to gdb/bfd-target.c diff --git a/contrib/gdb/gdb/bfd-target.h b/gdb/bfd-target.h similarity index 100% rename from contrib/gdb/gdb/bfd-target.h rename to gdb/bfd-target.h diff --git a/contrib/gdb/gdb/block.c b/gdb/block.c similarity index 100% rename from contrib/gdb/gdb/block.c rename to gdb/block.c diff --git a/contrib/gdb/gdb/block.h b/gdb/block.h similarity index 100% rename from contrib/gdb/gdb/block.h rename to gdb/block.h diff --git a/contrib/gdb/gdb/blockframe.c b/gdb/blockframe.c similarity index 100% rename from contrib/gdb/gdb/blockframe.c rename to gdb/blockframe.c diff --git a/contrib/gdb/gdb/breakpoint.c b/gdb/breakpoint.c similarity index 100% rename from contrib/gdb/gdb/breakpoint.c rename to gdb/breakpoint.c diff --git a/contrib/gdb/gdb/breakpoint.h b/gdb/breakpoint.h similarity index 100% rename from contrib/gdb/gdb/breakpoint.h rename to gdb/breakpoint.h diff --git a/contrib/gdb/gdb/buildsym.c b/gdb/buildsym.c similarity index 100% rename from contrib/gdb/gdb/buildsym.c rename to gdb/buildsym.c diff --git a/contrib/gdb/gdb/buildsym.h b/gdb/buildsym.h similarity index 100% rename from contrib/gdb/gdb/buildsym.h rename to gdb/buildsym.h diff --git a/contrib/gdb/gdb/c-exp.c b/gdb/c-exp.c similarity index 100% rename from contrib/gdb/gdb/c-exp.c rename to gdb/c-exp.c diff --git a/contrib/gdb/gdb/c-exp.y b/gdb/c-exp.y similarity index 100% rename from contrib/gdb/gdb/c-exp.y rename to gdb/c-exp.y diff --git a/contrib/gdb/gdb/c-lang.c b/gdb/c-lang.c similarity index 100% rename from contrib/gdb/gdb/c-lang.c rename to gdb/c-lang.c diff --git a/contrib/gdb/gdb/c-lang.h b/gdb/c-lang.h similarity index 100% rename from contrib/gdb/gdb/c-lang.h rename to gdb/c-lang.h diff --git a/contrib/gdb/gdb/c-typeprint.c b/gdb/c-typeprint.c similarity index 100% rename from contrib/gdb/gdb/c-typeprint.c rename to gdb/c-typeprint.c diff --git a/contrib/gdb/gdb/c-valprint.c b/gdb/c-valprint.c similarity index 100% rename from contrib/gdb/gdb/c-valprint.c rename to gdb/c-valprint.c diff --git a/contrib/gdb/gdb/call-cmds.h b/gdb/call-cmds.h similarity index 100% rename from contrib/gdb/gdb/call-cmds.h rename to gdb/call-cmds.h diff --git a/contrib/gdb/gdb/charset.c b/gdb/charset.c similarity index 100% rename from contrib/gdb/gdb/charset.c rename to gdb/charset.c diff --git a/contrib/gdb/gdb/charset.h b/gdb/charset.h similarity index 100% rename from contrib/gdb/gdb/charset.h rename to gdb/charset.h diff --git a/contrib/gdb/gdb/cli-out.c b/gdb/cli-out.c similarity index 100% rename from contrib/gdb/gdb/cli-out.c rename to gdb/cli-out.c diff --git a/contrib/gdb/gdb/cli-out.h b/gdb/cli-out.h similarity index 100% rename from contrib/gdb/gdb/cli-out.h rename to gdb/cli-out.h diff --git a/contrib/gdb/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-cmds.c rename to gdb/cli/cli-cmds.c diff --git a/contrib/gdb/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h similarity index 100% rename from contrib/gdb/gdb/cli/cli-cmds.h rename to gdb/cli/cli-cmds.h diff --git a/contrib/gdb/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-decode.c rename to gdb/cli/cli-decode.c diff --git a/contrib/gdb/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h similarity index 100% rename from contrib/gdb/gdb/cli/cli-decode.h rename to gdb/cli/cli-decode.h diff --git a/contrib/gdb/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-dump.c rename to gdb/cli/cli-dump.c diff --git a/contrib/gdb/gdb/cli/cli-dump.h b/gdb/cli/cli-dump.h similarity index 100% rename from contrib/gdb/gdb/cli/cli-dump.h rename to gdb/cli/cli-dump.h diff --git a/contrib/gdb/gdb/cli/cli-interp.c b/gdb/cli/cli-interp.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-interp.c rename to gdb/cli/cli-interp.c diff --git a/contrib/gdb/gdb/cli/cli-logging.c b/gdb/cli/cli-logging.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-logging.c rename to gdb/cli/cli-logging.c diff --git a/contrib/gdb/gdb/cli/cli-script.c b/gdb/cli/cli-script.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-script.c rename to gdb/cli/cli-script.c diff --git a/contrib/gdb/gdb/cli/cli-script.h b/gdb/cli/cli-script.h similarity index 100% rename from contrib/gdb/gdb/cli/cli-script.h rename to gdb/cli/cli-script.h diff --git a/contrib/gdb/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-setshow.c rename to gdb/cli/cli-setshow.c diff --git a/contrib/gdb/gdb/cli/cli-setshow.h b/gdb/cli/cli-setshow.h similarity index 100% rename from contrib/gdb/gdb/cli/cli-setshow.h rename to gdb/cli/cli-setshow.h diff --git a/contrib/gdb/gdb/cli/cli-utils.c b/gdb/cli/cli-utils.c similarity index 100% rename from contrib/gdb/gdb/cli/cli-utils.c rename to gdb/cli/cli-utils.c diff --git a/contrib/gdb/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h similarity index 100% rename from contrib/gdb/gdb/cli/cli-utils.h rename to gdb/cli/cli-utils.h diff --git a/contrib/gdb/gdb/coff-pe-read.c b/gdb/coff-pe-read.c similarity index 100% rename from contrib/gdb/gdb/coff-pe-read.c rename to gdb/coff-pe-read.c diff --git a/contrib/gdb/gdb/coff-pe-read.h b/gdb/coff-pe-read.h similarity index 100% rename from contrib/gdb/gdb/coff-pe-read.h rename to gdb/coff-pe-read.h diff --git a/contrib/gdb/gdb/coff-solib.c b/gdb/coff-solib.c similarity index 100% rename from contrib/gdb/gdb/coff-solib.c rename to gdb/coff-solib.c diff --git a/contrib/gdb/gdb/coff-solib.h b/gdb/coff-solib.h similarity index 100% rename from contrib/gdb/gdb/coff-solib.h rename to gdb/coff-solib.h diff --git a/contrib/gdb/gdb/coffread.c b/gdb/coffread.c similarity index 100% rename from contrib/gdb/gdb/coffread.c rename to gdb/coffread.c diff --git a/contrib/gdb/gdb/command.h b/gdb/command.h similarity index 100% rename from contrib/gdb/gdb/command.h rename to gdb/command.h diff --git a/contrib/gdb/gdb/complaints.c b/gdb/complaints.c similarity index 100% rename from contrib/gdb/gdb/complaints.c rename to gdb/complaints.c diff --git a/contrib/gdb/gdb/complaints.h b/gdb/complaints.h similarity index 100% rename from contrib/gdb/gdb/complaints.h rename to gdb/complaints.h diff --git a/contrib/gdb/gdb/completer.c b/gdb/completer.c similarity index 100% rename from contrib/gdb/gdb/completer.c rename to gdb/completer.c diff --git a/contrib/gdb/gdb/completer.h b/gdb/completer.h similarity index 100% rename from contrib/gdb/gdb/completer.h rename to gdb/completer.h diff --git a/contrib/gdb/gdb/config/alpha/alpha-osf2.mh b/gdb/config/alpha/alpha-osf2.mh similarity index 100% rename from contrib/gdb/gdb/config/alpha/alpha-osf2.mh rename to gdb/config/alpha/alpha-osf2.mh diff --git a/contrib/gdb/gdb/config/alpha/alpha-osf3.mh b/gdb/config/alpha/alpha-osf3.mh similarity index 100% rename from contrib/gdb/gdb/config/alpha/alpha-osf3.mh rename to gdb/config/alpha/alpha-osf3.mh diff --git a/contrib/gdb/gdb/config/alpha/alpha.mt b/gdb/config/alpha/alpha.mt similarity index 100% rename from contrib/gdb/gdb/config/alpha/alpha.mt rename to gdb/config/alpha/alpha.mt diff --git a/contrib/gdb/gdb/config/alpha/fbsd.mh b/gdb/config/alpha/fbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/alpha/fbsd.mh rename to gdb/config/alpha/fbsd.mh diff --git a/contrib/gdb/gdb/config/alpha/fbsd.mt b/gdb/config/alpha/fbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/alpha/fbsd.mt rename to gdb/config/alpha/fbsd.mt diff --git a/contrib/gdb/gdb/config/alpha/nbsd.mh b/gdb/config/alpha/nbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/alpha/nbsd.mh rename to gdb/config/alpha/nbsd.mh diff --git a/contrib/gdb/gdb/config/alpha/nbsd.mt b/gdb/config/alpha/nbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/alpha/nbsd.mt rename to gdb/config/alpha/nbsd.mt diff --git a/contrib/gdb/gdb/config/alpha/nm-fbsd.h b/gdb/config/alpha/nm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/nm-fbsd.h rename to gdb/config/alpha/nm-fbsd.h diff --git a/contrib/gdb/gdb/config/alpha/nm-nbsd.h b/gdb/config/alpha/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/nm-nbsd.h rename to gdb/config/alpha/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/alpha/nm-osf.h b/gdb/config/alpha/nm-osf.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/nm-osf.h rename to gdb/config/alpha/nm-osf.h diff --git a/contrib/gdb/gdb/config/alpha/nm-osf2.h b/gdb/config/alpha/nm-osf2.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/nm-osf2.h rename to gdb/config/alpha/nm-osf2.h diff --git a/contrib/gdb/gdb/config/alpha/nm-osf3.h b/gdb/config/alpha/nm-osf3.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/nm-osf3.h rename to gdb/config/alpha/nm-osf3.h diff --git a/contrib/gdb/gdb/config/alpha/tm-alpha.h b/gdb/config/alpha/tm-alpha.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/tm-alpha.h rename to gdb/config/alpha/tm-alpha.h diff --git a/contrib/gdb/gdb/config/alpha/tm-fbsd.h b/gdb/config/alpha/tm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/tm-fbsd.h rename to gdb/config/alpha/tm-fbsd.h diff --git a/contrib/gdb/gdb/config/alpha/tm-nbsd.h b/gdb/config/alpha/tm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/tm-nbsd.h rename to gdb/config/alpha/tm-nbsd.h diff --git a/contrib/gdb/gdb/config/alpha/xm-alphaosf.h b/gdb/config/alpha/xm-alphaosf.h similarity index 100% rename from contrib/gdb/gdb/config/alpha/xm-alphaosf.h rename to gdb/config/alpha/xm-alphaosf.h diff --git a/contrib/gdb/gdb/config/arm/embed.mt b/gdb/config/arm/embed.mt similarity index 100% rename from contrib/gdb/gdb/config/arm/embed.mt rename to gdb/config/arm/embed.mt diff --git a/contrib/gdb/gdb/config/arm/nbsd.mt b/gdb/config/arm/nbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/arm/nbsd.mt rename to gdb/config/arm/nbsd.mt diff --git a/contrib/gdb/gdb/config/arm/nbsdaout.mh b/gdb/config/arm/nbsdaout.mh similarity index 100% rename from contrib/gdb/gdb/config/arm/nbsdaout.mh rename to gdb/config/arm/nbsdaout.mh diff --git a/contrib/gdb/gdb/config/arm/nbsdelf.mh b/gdb/config/arm/nbsdelf.mh similarity index 100% rename from contrib/gdb/gdb/config/arm/nbsdelf.mh rename to gdb/config/arm/nbsdelf.mh diff --git a/contrib/gdb/gdb/config/arm/nm-nbsd.h b/gdb/config/arm/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/arm/nm-nbsd.h rename to gdb/config/arm/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/arm/nm-nbsdaout.h b/gdb/config/arm/nm-nbsdaout.h similarity index 100% rename from contrib/gdb/gdb/config/arm/nm-nbsdaout.h rename to gdb/config/arm/nm-nbsdaout.h diff --git a/contrib/gdb/gdb/config/arm/tm-arm.h b/gdb/config/arm/tm-arm.h similarity index 100% rename from contrib/gdb/gdb/config/arm/tm-arm.h rename to gdb/config/arm/tm-arm.h diff --git a/contrib/gdb/gdb/config/arm/tm-embed.h b/gdb/config/arm/tm-embed.h similarity index 100% rename from contrib/gdb/gdb/config/arm/tm-embed.h rename to gdb/config/arm/tm-embed.h diff --git a/contrib/gdb/gdb/config/arm/tm-nbsd.h b/gdb/config/arm/tm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/arm/tm-nbsd.h rename to gdb/config/arm/tm-nbsd.h diff --git a/contrib/gdb/gdb/config/arm/tm-wince.h b/gdb/config/arm/tm-wince.h similarity index 100% rename from contrib/gdb/gdb/config/arm/tm-wince.h rename to gdb/config/arm/tm-wince.h diff --git a/contrib/gdb/gdb/config/arm/wince.mt b/gdb/config/arm/wince.mt similarity index 100% rename from contrib/gdb/gdb/config/arm/wince.mt rename to gdb/config/arm/wince.mt diff --git a/contrib/gdb/gdb/config/arm/xm-nbsd.h b/gdb/config/arm/xm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/arm/xm-nbsd.h rename to gdb/config/arm/xm-nbsd.h diff --git a/contrib/gdb/gdb/config/i386/embed.mt b/gdb/config/i386/embed.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/embed.mt rename to gdb/config/i386/embed.mt diff --git a/contrib/gdb/gdb/config/i386/fbsd.mh b/gdb/config/i386/fbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/fbsd.mh rename to gdb/config/i386/fbsd.mh diff --git a/contrib/gdb/gdb/config/i386/fbsd.mt b/gdb/config/i386/fbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/fbsd.mt rename to gdb/config/i386/fbsd.mt diff --git a/contrib/gdb/gdb/config/i386/fbsd64.mh b/gdb/config/i386/fbsd64.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/fbsd64.mh rename to gdb/config/i386/fbsd64.mh diff --git a/contrib/gdb/gdb/config/i386/fbsd64.mt b/gdb/config/i386/fbsd64.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/fbsd64.mt rename to gdb/config/i386/fbsd64.mt diff --git a/contrib/gdb/gdb/config/i386/go32.mh b/gdb/config/i386/go32.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/go32.mh rename to gdb/config/i386/go32.mh diff --git a/contrib/gdb/gdb/config/i386/go32.mt b/gdb/config/i386/go32.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/go32.mt rename to gdb/config/i386/go32.mt diff --git a/contrib/gdb/gdb/config/i386/i386aout.mt b/gdb/config/i386/i386aout.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/i386aout.mt rename to gdb/config/i386/i386aout.mt diff --git a/contrib/gdb/gdb/config/i386/i386gnu.mh b/gdb/config/i386/i386gnu.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386gnu.mh rename to gdb/config/i386/i386gnu.mh diff --git a/contrib/gdb/gdb/config/i386/i386gnu.mt b/gdb/config/i386/i386gnu.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/i386gnu.mt rename to gdb/config/i386/i386gnu.mt diff --git a/contrib/gdb/gdb/config/i386/i386lynx.mh b/gdb/config/i386/i386lynx.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386lynx.mh rename to gdb/config/i386/i386lynx.mh diff --git a/contrib/gdb/gdb/config/i386/i386lynx.mt b/gdb/config/i386/i386lynx.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/i386lynx.mt rename to gdb/config/i386/i386lynx.mt diff --git a/contrib/gdb/gdb/config/i386/i386nw.mt b/gdb/config/i386/i386nw.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/i386nw.mt rename to gdb/config/i386/i386nw.mt diff --git a/contrib/gdb/gdb/config/i386/i386sco.mh b/gdb/config/i386/i386sco.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386sco.mh rename to gdb/config/i386/i386sco.mh diff --git a/contrib/gdb/gdb/config/i386/i386sco4.mh b/gdb/config/i386/i386sco4.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386sco4.mh rename to gdb/config/i386/i386sco4.mh diff --git a/contrib/gdb/gdb/config/i386/i386sco5.mh b/gdb/config/i386/i386sco5.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386sco5.mh rename to gdb/config/i386/i386sco5.mh diff --git a/contrib/gdb/gdb/config/i386/i386sol2.mh b/gdb/config/i386/i386sol2.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386sol2.mh rename to gdb/config/i386/i386sol2.mh diff --git a/contrib/gdb/gdb/config/i386/i386sol2.mt b/gdb/config/i386/i386sol2.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/i386sol2.mt rename to gdb/config/i386/i386sol2.mt diff --git a/contrib/gdb/gdb/config/i386/i386v.mh b/gdb/config/i386/i386v.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386v.mh rename to gdb/config/i386/i386v.mh diff --git a/contrib/gdb/gdb/config/i386/i386v.mt b/gdb/config/i386/i386v.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/i386v.mt rename to gdb/config/i386/i386v.mt diff --git a/contrib/gdb/gdb/config/i386/i386v4.mh b/gdb/config/i386/i386v4.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386v4.mh rename to gdb/config/i386/i386v4.mh diff --git a/contrib/gdb/gdb/config/i386/i386v42mp.mh b/gdb/config/i386/i386v42mp.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/i386v42mp.mh rename to gdb/config/i386/i386v42mp.mh diff --git a/contrib/gdb/gdb/config/i386/nbsd.mt b/gdb/config/i386/nbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/nbsd.mt rename to gdb/config/i386/nbsd.mt diff --git a/contrib/gdb/gdb/config/i386/nbsd64.mh b/gdb/config/i386/nbsd64.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/nbsd64.mh rename to gdb/config/i386/nbsd64.mh diff --git a/contrib/gdb/gdb/config/i386/nbsd64.mt b/gdb/config/i386/nbsd64.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/nbsd64.mt rename to gdb/config/i386/nbsd64.mt diff --git a/contrib/gdb/gdb/config/i386/nbsdaout.mh b/gdb/config/i386/nbsdaout.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/nbsdaout.mh rename to gdb/config/i386/nbsdaout.mh diff --git a/contrib/gdb/gdb/config/i386/nbsdelf.mh b/gdb/config/i386/nbsdelf.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/nbsdelf.mh rename to gdb/config/i386/nbsdelf.mh diff --git a/contrib/gdb/gdb/config/i386/ncr3000.mh b/gdb/config/i386/ncr3000.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/ncr3000.mh rename to gdb/config/i386/ncr3000.mh diff --git a/contrib/gdb/gdb/config/i386/ncr3000.mt b/gdb/config/i386/ncr3000.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/ncr3000.mt rename to gdb/config/i386/ncr3000.mt diff --git a/contrib/gdb/gdb/config/i386/nm-fbsd.h b/gdb/config/i386/nm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-fbsd.h rename to gdb/config/i386/nm-fbsd.h diff --git a/contrib/gdb/gdb/config/i386/nm-fbsd64.h b/gdb/config/i386/nm-fbsd64.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-fbsd64.h rename to gdb/config/i386/nm-fbsd64.h diff --git a/contrib/gdb/gdb/config/i386/nm-go32.h b/gdb/config/i386/nm-go32.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-go32.h rename to gdb/config/i386/nm-go32.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386.h b/gdb/config/i386/nm-i386.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386.h rename to gdb/config/i386/nm-i386.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386gnu.h b/gdb/config/i386/nm-i386gnu.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386gnu.h rename to gdb/config/i386/nm-i386gnu.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386lynx.h b/gdb/config/i386/nm-i386lynx.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386lynx.h rename to gdb/config/i386/nm-i386lynx.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386sco.h b/gdb/config/i386/nm-i386sco.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386sco.h rename to gdb/config/i386/nm-i386sco.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386sco4.h b/gdb/config/i386/nm-i386sco4.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386sco4.h rename to gdb/config/i386/nm-i386sco4.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386sco5.h b/gdb/config/i386/nm-i386sco5.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386sco5.h rename to gdb/config/i386/nm-i386sco5.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386sol2.h b/gdb/config/i386/nm-i386sol2.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386sol2.h rename to gdb/config/i386/nm-i386sol2.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386v.h b/gdb/config/i386/nm-i386v.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386v.h rename to gdb/config/i386/nm-i386v.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386v4.h b/gdb/config/i386/nm-i386v4.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386v4.h rename to gdb/config/i386/nm-i386v4.h diff --git a/contrib/gdb/gdb/config/i386/nm-i386v42mp.h b/gdb/config/i386/nm-i386v42mp.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-i386v42mp.h rename to gdb/config/i386/nm-i386v42mp.h diff --git a/contrib/gdb/gdb/config/i386/nm-nbsd.h b/gdb/config/i386/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-nbsd.h rename to gdb/config/i386/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/i386/nm-nbsdaout.h b/gdb/config/i386/nm-nbsdaout.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-nbsdaout.h rename to gdb/config/i386/nm-nbsdaout.h diff --git a/contrib/gdb/gdb/config/i386/nm-nto.h b/gdb/config/i386/nm-nto.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-nto.h rename to gdb/config/i386/nm-nto.h diff --git a/contrib/gdb/gdb/config/i386/nm-obsd.h b/gdb/config/i386/nm-obsd.h similarity index 100% rename from contrib/gdb/gdb/config/i386/nm-obsd.h rename to gdb/config/i386/nm-obsd.h diff --git a/contrib/gdb/gdb/config/i386/nto.mh b/gdb/config/i386/nto.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/nto.mh rename to gdb/config/i386/nto.mh diff --git a/contrib/gdb/gdb/config/i386/nto.mt b/gdb/config/i386/nto.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/nto.mt rename to gdb/config/i386/nto.mt diff --git a/contrib/gdb/gdb/config/i386/obsd.mh b/gdb/config/i386/obsd.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/obsd.mh rename to gdb/config/i386/obsd.mh diff --git a/contrib/gdb/gdb/config/i386/obsd.mt b/gdb/config/i386/obsd.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/obsd.mt rename to gdb/config/i386/obsd.mt diff --git a/contrib/gdb/gdb/config/i386/obsd64.mh b/gdb/config/i386/obsd64.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/obsd64.mh rename to gdb/config/i386/obsd64.mh diff --git a/contrib/gdb/gdb/config/i386/obsd64.mt b/gdb/config/i386/obsd64.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/obsd64.mt rename to gdb/config/i386/obsd64.mt diff --git a/contrib/gdb/gdb/config/i386/obsdaout.mh b/gdb/config/i386/obsdaout.mh similarity index 100% rename from contrib/gdb/gdb/config/i386/obsdaout.mh rename to gdb/config/i386/obsdaout.mh diff --git a/contrib/gdb/gdb/config/i386/tm-fbsd.h b/gdb/config/i386/tm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-fbsd.h rename to gdb/config/i386/tm-fbsd.h diff --git a/contrib/gdb/gdb/config/i386/tm-go32.h b/gdb/config/i386/tm-go32.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-go32.h rename to gdb/config/i386/tm-go32.h diff --git a/contrib/gdb/gdb/config/i386/tm-i386.h b/gdb/config/i386/tm-i386.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-i386.h rename to gdb/config/i386/tm-i386.h diff --git a/contrib/gdb/gdb/config/i386/tm-i386lynx.h b/gdb/config/i386/tm-i386lynx.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-i386lynx.h rename to gdb/config/i386/tm-i386lynx.h diff --git a/contrib/gdb/gdb/config/i386/tm-i386sol2.h b/gdb/config/i386/tm-i386sol2.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-i386sol2.h rename to gdb/config/i386/tm-i386sol2.h diff --git a/contrib/gdb/gdb/config/i386/tm-nbsd.h b/gdb/config/i386/tm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-nbsd.h rename to gdb/config/i386/tm-nbsd.h diff --git a/contrib/gdb/gdb/config/i386/tm-nto.h b/gdb/config/i386/tm-nto.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-nto.h rename to gdb/config/i386/tm-nto.h diff --git a/contrib/gdb/gdb/config/i386/tm-vxworks.h b/gdb/config/i386/tm-vxworks.h similarity index 100% rename from contrib/gdb/gdb/config/i386/tm-vxworks.h rename to gdb/config/i386/tm-vxworks.h diff --git a/contrib/gdb/gdb/config/i386/vxworks.mt b/gdb/config/i386/vxworks.mt similarity index 100% rename from contrib/gdb/gdb/config/i386/vxworks.mt rename to gdb/config/i386/vxworks.mt diff --git a/contrib/gdb/gdb/config/i386/xm-go32.h b/gdb/config/i386/xm-go32.h similarity index 100% rename from contrib/gdb/gdb/config/i386/xm-go32.h rename to gdb/config/i386/xm-go32.h diff --git a/contrib/gdb/gdb/config/i386/xm-i386.h b/gdb/config/i386/xm-i386.h similarity index 100% rename from contrib/gdb/gdb/config/i386/xm-i386.h rename to gdb/config/i386/xm-i386.h diff --git a/contrib/gdb/gdb/config/i386/xm-i386sco.h b/gdb/config/i386/xm-i386sco.h similarity index 100% rename from contrib/gdb/gdb/config/i386/xm-i386sco.h rename to gdb/config/i386/xm-i386sco.h diff --git a/contrib/gdb/gdb/config/i386/xm-i386v.h b/gdb/config/i386/xm-i386v.h similarity index 100% rename from contrib/gdb/gdb/config/i386/xm-i386v.h rename to gdb/config/i386/xm-i386v.h diff --git a/contrib/gdb/gdb/config/i386/xm-i386v4.h b/gdb/config/i386/xm-i386v4.h similarity index 100% rename from contrib/gdb/gdb/config/i386/xm-i386v4.h rename to gdb/config/i386/xm-i386v4.h diff --git a/contrib/gdb/gdb/config/i386/xm-nbsd.h b/gdb/config/i386/xm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/i386/xm-nbsd.h rename to gdb/config/i386/xm-nbsd.h diff --git a/contrib/gdb/gdb/config/ia64/fbsd.mh b/gdb/config/ia64/fbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/ia64/fbsd.mh rename to gdb/config/ia64/fbsd.mh diff --git a/contrib/gdb/gdb/config/ia64/fbsd.mt b/gdb/config/ia64/fbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/ia64/fbsd.mt rename to gdb/config/ia64/fbsd.mt diff --git a/contrib/gdb/gdb/config/ia64/ia64.mt b/gdb/config/ia64/ia64.mt similarity index 100% rename from contrib/gdb/gdb/config/ia64/ia64.mt rename to gdb/config/ia64/ia64.mt diff --git a/contrib/gdb/gdb/config/ia64/nm-fbsd.h b/gdb/config/ia64/nm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/ia64/nm-fbsd.h rename to gdb/config/ia64/nm-fbsd.h diff --git a/contrib/gdb/gdb/config/ia64/tm-fbsd.h b/gdb/config/ia64/tm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/ia64/tm-fbsd.h rename to gdb/config/ia64/tm-fbsd.h diff --git a/contrib/gdb/gdb/config/ia64/tm-ia64.h b/gdb/config/ia64/tm-ia64.h similarity index 100% rename from contrib/gdb/gdb/config/ia64/tm-ia64.h rename to gdb/config/ia64/tm-ia64.h diff --git a/contrib/gdb/gdb/config/mips/decstation.mh b/gdb/config/mips/decstation.mh similarity index 100% rename from contrib/gdb/gdb/config/mips/decstation.mh rename to gdb/config/mips/decstation.mh diff --git a/contrib/gdb/gdb/config/mips/embed.mt b/gdb/config/mips/embed.mt similarity index 100% rename from contrib/gdb/gdb/config/mips/embed.mt rename to gdb/config/mips/embed.mt diff --git a/contrib/gdb/gdb/config/mips/littlemips.mh b/gdb/config/mips/littlemips.mh similarity index 100% rename from contrib/gdb/gdb/config/mips/littlemips.mh rename to gdb/config/mips/littlemips.mh diff --git a/contrib/gdb/gdb/config/mips/mipsv4.mh b/gdb/config/mips/mipsv4.mh similarity index 100% rename from contrib/gdb/gdb/config/mips/mipsv4.mh rename to gdb/config/mips/mipsv4.mh diff --git a/contrib/gdb/gdb/config/mips/mipsv4.mt b/gdb/config/mips/mipsv4.mt similarity index 100% rename from contrib/gdb/gdb/config/mips/mipsv4.mt rename to gdb/config/mips/mipsv4.mt diff --git a/contrib/gdb/gdb/config/mips/nbsd.mh b/gdb/config/mips/nbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/mips/nbsd.mh rename to gdb/config/mips/nbsd.mh diff --git a/contrib/gdb/gdb/config/mips/nbsd.mt b/gdb/config/mips/nbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/mips/nbsd.mt rename to gdb/config/mips/nbsd.mt diff --git a/contrib/gdb/gdb/config/mips/news-mips.mh b/gdb/config/mips/news-mips.mh similarity index 100% rename from contrib/gdb/gdb/config/mips/news-mips.mh rename to gdb/config/mips/news-mips.mh diff --git a/contrib/gdb/gdb/config/mips/nm-mips.h b/gdb/config/mips/nm-mips.h similarity index 100% rename from contrib/gdb/gdb/config/mips/nm-mips.h rename to gdb/config/mips/nm-mips.h diff --git a/contrib/gdb/gdb/config/mips/nm-nbsd.h b/gdb/config/mips/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/mips/nm-nbsd.h rename to gdb/config/mips/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/mips/nm-news-mips.h b/gdb/config/mips/nm-news-mips.h similarity index 100% rename from contrib/gdb/gdb/config/mips/nm-news-mips.h rename to gdb/config/mips/nm-news-mips.h diff --git a/contrib/gdb/gdb/config/mips/nm-riscos.h b/gdb/config/mips/nm-riscos.h similarity index 100% rename from contrib/gdb/gdb/config/mips/nm-riscos.h rename to gdb/config/mips/nm-riscos.h diff --git a/contrib/gdb/gdb/config/mips/riscos.mh b/gdb/config/mips/riscos.mh similarity index 100% rename from contrib/gdb/gdb/config/mips/riscos.mh rename to gdb/config/mips/riscos.mh diff --git a/contrib/gdb/gdb/config/mips/tm-mips.h b/gdb/config/mips/tm-mips.h similarity index 100% rename from contrib/gdb/gdb/config/mips/tm-mips.h rename to gdb/config/mips/tm-mips.h diff --git a/contrib/gdb/gdb/config/mips/tm-mipsv4.h b/gdb/config/mips/tm-mipsv4.h similarity index 100% rename from contrib/gdb/gdb/config/mips/tm-mipsv4.h rename to gdb/config/mips/tm-mipsv4.h diff --git a/contrib/gdb/gdb/config/mips/tm-nbsd.h b/gdb/config/mips/tm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/mips/tm-nbsd.h rename to gdb/config/mips/tm-nbsd.h diff --git a/contrib/gdb/gdb/config/mips/tm-vxmips.h b/gdb/config/mips/tm-vxmips.h similarity index 100% rename from contrib/gdb/gdb/config/mips/tm-vxmips.h rename to gdb/config/mips/tm-vxmips.h diff --git a/contrib/gdb/gdb/config/mips/tm-wince.h b/gdb/config/mips/tm-wince.h similarity index 100% rename from contrib/gdb/gdb/config/mips/tm-wince.h rename to gdb/config/mips/tm-wince.h diff --git a/contrib/gdb/gdb/config/mips/vxmips.mt b/gdb/config/mips/vxmips.mt similarity index 100% rename from contrib/gdb/gdb/config/mips/vxmips.mt rename to gdb/config/mips/vxmips.mt diff --git a/contrib/gdb/gdb/config/mips/wince.mt b/gdb/config/mips/wince.mt similarity index 100% rename from contrib/gdb/gdb/config/mips/wince.mt rename to gdb/config/mips/wince.mt diff --git a/contrib/gdb/gdb/config/mips/xm-mips.h b/gdb/config/mips/xm-mips.h similarity index 100% rename from contrib/gdb/gdb/config/mips/xm-mips.h rename to gdb/config/mips/xm-mips.h diff --git a/contrib/gdb/gdb/config/mips/xm-mipsv4.h b/gdb/config/mips/xm-mipsv4.h similarity index 100% rename from contrib/gdb/gdb/config/mips/xm-mipsv4.h rename to gdb/config/mips/xm-mipsv4.h diff --git a/contrib/gdb/gdb/config/mips/xm-riscos.h b/gdb/config/mips/xm-riscos.h similarity index 100% rename from contrib/gdb/gdb/config/mips/xm-riscos.h rename to gdb/config/mips/xm-riscos.h diff --git a/contrib/gdb/gdb/config/nm-gnu.h b/gdb/config/nm-gnu.h similarity index 100% rename from contrib/gdb/gdb/config/nm-gnu.h rename to gdb/config/nm-gnu.h diff --git a/contrib/gdb/gdb/config/nm-lynx.h b/gdb/config/nm-lynx.h similarity index 100% rename from contrib/gdb/gdb/config/nm-lynx.h rename to gdb/config/nm-lynx.h diff --git a/contrib/gdb/gdb/config/nm-nbsd.h b/gdb/config/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/nm-nbsd.h rename to gdb/config/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/nm-nbsdaout.h b/gdb/config/nm-nbsdaout.h similarity index 100% rename from contrib/gdb/gdb/config/nm-nbsdaout.h rename to gdb/config/nm-nbsdaout.h diff --git a/contrib/gdb/gdb/config/nm-sysv4.h b/gdb/config/nm-sysv4.h similarity index 100% rename from contrib/gdb/gdb/config/nm-sysv4.h rename to gdb/config/nm-sysv4.h diff --git a/contrib/gdb/gdb/config/powerpc/fbsd.mh b/gdb/config/powerpc/fbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/powerpc/fbsd.mh rename to gdb/config/powerpc/fbsd.mh diff --git a/contrib/gdb/gdb/config/powerpc/fbsd.mt b/gdb/config/powerpc/fbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/powerpc/fbsd.mt rename to gdb/config/powerpc/fbsd.mt diff --git a/contrib/gdb/gdb/config/powerpc/nbsd.mh b/gdb/config/powerpc/nbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/powerpc/nbsd.mh rename to gdb/config/powerpc/nbsd.mh diff --git a/contrib/gdb/gdb/config/powerpc/nbsd.mt b/gdb/config/powerpc/nbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/powerpc/nbsd.mt rename to gdb/config/powerpc/nbsd.mt diff --git a/contrib/gdb/gdb/config/powerpc/nm-fbsd.h b/gdb/config/powerpc/nm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/nm-fbsd.h rename to gdb/config/powerpc/nm-fbsd.h diff --git a/contrib/gdb/gdb/config/powerpc/nm-nbsd.h b/gdb/config/powerpc/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/nm-nbsd.h rename to gdb/config/powerpc/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/powerpc/ppc-eabi.mt b/gdb/config/powerpc/ppc-eabi.mt similarity index 100% rename from contrib/gdb/gdb/config/powerpc/ppc-eabi.mt rename to gdb/config/powerpc/ppc-eabi.mt diff --git a/contrib/gdb/gdb/config/powerpc/ppc-sim.mt b/gdb/config/powerpc/ppc-sim.mt similarity index 100% rename from contrib/gdb/gdb/config/powerpc/ppc-sim.mt rename to gdb/config/powerpc/ppc-sim.mt diff --git a/contrib/gdb/gdb/config/powerpc/tm-nbsd.h b/gdb/config/powerpc/tm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/tm-nbsd.h rename to gdb/config/powerpc/tm-nbsd.h diff --git a/contrib/gdb/gdb/config/powerpc/tm-ppc-eabi.h b/gdb/config/powerpc/tm-ppc-eabi.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/tm-ppc-eabi.h rename to gdb/config/powerpc/tm-ppc-eabi.h diff --git a/contrib/gdb/gdb/config/powerpc/tm-ppcle-eabi.h b/gdb/config/powerpc/tm-ppcle-eabi.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/tm-ppcle-eabi.h rename to gdb/config/powerpc/tm-ppcle-eabi.h diff --git a/contrib/gdb/gdb/config/powerpc/tm-ppcle-sim.h b/gdb/config/powerpc/tm-ppcle-sim.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/tm-ppcle-sim.h rename to gdb/config/powerpc/tm-ppcle-sim.h diff --git a/contrib/gdb/gdb/config/powerpc/tm-vxworks.h b/gdb/config/powerpc/tm-vxworks.h similarity index 100% rename from contrib/gdb/gdb/config/powerpc/tm-vxworks.h rename to gdb/config/powerpc/tm-vxworks.h diff --git a/contrib/gdb/gdb/config/powerpc/vxworks.mt b/gdb/config/powerpc/vxworks.mt similarity index 100% rename from contrib/gdb/gdb/config/powerpc/vxworks.mt rename to gdb/config/powerpc/vxworks.mt diff --git a/contrib/gdb/gdb/config/rs6000/nm-rs6000.h b/gdb/config/rs6000/nm-rs6000.h similarity index 100% rename from contrib/gdb/gdb/config/rs6000/nm-rs6000.h rename to gdb/config/rs6000/nm-rs6000.h diff --git a/contrib/gdb/gdb/config/rs6000/nm-rs6000ly.h b/gdb/config/rs6000/nm-rs6000ly.h similarity index 100% rename from contrib/gdb/gdb/config/rs6000/nm-rs6000ly.h rename to gdb/config/rs6000/nm-rs6000ly.h diff --git a/contrib/gdb/gdb/config/rs6000/rs6000.mh b/gdb/config/rs6000/rs6000.mh similarity index 100% rename from contrib/gdb/gdb/config/rs6000/rs6000.mh rename to gdb/config/rs6000/rs6000.mh diff --git a/contrib/gdb/gdb/config/rs6000/rs6000.mt b/gdb/config/rs6000/rs6000.mt similarity index 100% rename from contrib/gdb/gdb/config/rs6000/rs6000.mt rename to gdb/config/rs6000/rs6000.mt diff --git a/contrib/gdb/gdb/config/rs6000/rs6000lynx.mh b/gdb/config/rs6000/rs6000lynx.mh similarity index 100% rename from contrib/gdb/gdb/config/rs6000/rs6000lynx.mh rename to gdb/config/rs6000/rs6000lynx.mh diff --git a/contrib/gdb/gdb/config/rs6000/rs6000lynx.mt b/gdb/config/rs6000/rs6000lynx.mt similarity index 100% rename from contrib/gdb/gdb/config/rs6000/rs6000lynx.mt rename to gdb/config/rs6000/rs6000lynx.mt diff --git a/contrib/gdb/gdb/config/rs6000/tm-rs6000.h b/gdb/config/rs6000/tm-rs6000.h similarity index 100% rename from contrib/gdb/gdb/config/rs6000/tm-rs6000.h rename to gdb/config/rs6000/tm-rs6000.h diff --git a/contrib/gdb/gdb/config/rs6000/tm-rs6000ly.h b/gdb/config/rs6000/tm-rs6000ly.h similarity index 100% rename from contrib/gdb/gdb/config/rs6000/tm-rs6000ly.h rename to gdb/config/rs6000/tm-rs6000ly.h diff --git a/contrib/gdb/gdb/config/rs6000/xm-rs6000.h b/gdb/config/rs6000/xm-rs6000.h similarity index 100% rename from contrib/gdb/gdb/config/rs6000/xm-rs6000.h rename to gdb/config/rs6000/xm-rs6000.h diff --git a/contrib/gdb/gdb/config/s390/s390.mh b/gdb/config/s390/s390.mh similarity index 100% rename from contrib/gdb/gdb/config/s390/s390.mh rename to gdb/config/s390/s390.mh diff --git a/contrib/gdb/gdb/config/s390/s390.mt b/gdb/config/s390/s390.mt similarity index 100% rename from contrib/gdb/gdb/config/s390/s390.mt rename to gdb/config/s390/s390.mt diff --git a/contrib/gdb/gdb/config/sparc/fbsd.mh b/gdb/config/sparc/fbsd.mh similarity index 100% rename from contrib/gdb/gdb/config/sparc/fbsd.mh rename to gdb/config/sparc/fbsd.mh diff --git a/contrib/gdb/gdb/config/sparc/fbsd.mt b/gdb/config/sparc/fbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/fbsd.mt rename to gdb/config/sparc/fbsd.mt diff --git a/contrib/gdb/gdb/config/sparc/nbsd.mt b/gdb/config/sparc/nbsd.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/nbsd.mt rename to gdb/config/sparc/nbsd.mt diff --git a/contrib/gdb/gdb/config/sparc/nbsd64.mh b/gdb/config/sparc/nbsd64.mh similarity index 100% rename from contrib/gdb/gdb/config/sparc/nbsd64.mh rename to gdb/config/sparc/nbsd64.mh diff --git a/contrib/gdb/gdb/config/sparc/nbsd64.mt b/gdb/config/sparc/nbsd64.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/nbsd64.mt rename to gdb/config/sparc/nbsd64.mt diff --git a/contrib/gdb/gdb/config/sparc/nbsdaout.mh b/gdb/config/sparc/nbsdaout.mh similarity index 100% rename from contrib/gdb/gdb/config/sparc/nbsdaout.mh rename to gdb/config/sparc/nbsdaout.mh diff --git a/contrib/gdb/gdb/config/sparc/nbsdelf.mh b/gdb/config/sparc/nbsdelf.mh similarity index 100% rename from contrib/gdb/gdb/config/sparc/nbsdelf.mh rename to gdb/config/sparc/nbsdelf.mh diff --git a/contrib/gdb/gdb/config/sparc/nm-fbsd.h b/gdb/config/sparc/nm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/nm-fbsd.h rename to gdb/config/sparc/nm-fbsd.h diff --git a/contrib/gdb/gdb/config/sparc/nm-nbsd.h b/gdb/config/sparc/nm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/nm-nbsd.h rename to gdb/config/sparc/nm-nbsd.h diff --git a/contrib/gdb/gdb/config/sparc/nm-nbsdaout.h b/gdb/config/sparc/nm-nbsdaout.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/nm-nbsdaout.h rename to gdb/config/sparc/nm-nbsdaout.h diff --git a/contrib/gdb/gdb/config/sparc/nm-sol2.h b/gdb/config/sparc/nm-sol2.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/nm-sol2.h rename to gdb/config/sparc/nm-sol2.h diff --git a/contrib/gdb/gdb/config/sparc/obsd.mt b/gdb/config/sparc/obsd.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/obsd.mt rename to gdb/config/sparc/obsd.mt diff --git a/contrib/gdb/gdb/config/sparc/obsd64.mt b/gdb/config/sparc/obsd64.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/obsd64.mt rename to gdb/config/sparc/obsd64.mt diff --git a/contrib/gdb/gdb/config/sparc/sol2-64.mt b/gdb/config/sparc/sol2-64.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/sol2-64.mt rename to gdb/config/sparc/sol2-64.mt diff --git a/contrib/gdb/gdb/config/sparc/sol2.mh b/gdb/config/sparc/sol2.mh similarity index 100% rename from contrib/gdb/gdb/config/sparc/sol2.mh rename to gdb/config/sparc/sol2.mh diff --git a/contrib/gdb/gdb/config/sparc/sol2.mt b/gdb/config/sparc/sol2.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/sol2.mt rename to gdb/config/sparc/sol2.mt diff --git a/contrib/gdb/gdb/config/sparc/sparc.mt b/gdb/config/sparc/sparc.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/sparc.mt rename to gdb/config/sparc/sparc.mt diff --git a/contrib/gdb/gdb/config/sparc/sparc64.mt b/gdb/config/sparc/sparc64.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/sparc64.mt rename to gdb/config/sparc/sparc64.mt diff --git a/contrib/gdb/gdb/config/sparc/tm-fbsd.h b/gdb/config/sparc/tm-fbsd.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/tm-fbsd.h rename to gdb/config/sparc/tm-fbsd.h diff --git a/contrib/gdb/gdb/config/sparc/tm-nbsd.h b/gdb/config/sparc/tm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/tm-nbsd.h rename to gdb/config/sparc/tm-nbsd.h diff --git a/contrib/gdb/gdb/config/sparc/tm-nbsd64.h b/gdb/config/sparc/tm-nbsd64.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/tm-nbsd64.h rename to gdb/config/sparc/tm-nbsd64.h diff --git a/contrib/gdb/gdb/config/sparc/tm-sol2.h b/gdb/config/sparc/tm-sol2.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/tm-sol2.h rename to gdb/config/sparc/tm-sol2.h diff --git a/contrib/gdb/gdb/config/sparc/tm-vxworks.h b/gdb/config/sparc/tm-vxworks.h similarity index 100% rename from contrib/gdb/gdb/config/sparc/tm-vxworks.h rename to gdb/config/sparc/tm-vxworks.h diff --git a/contrib/gdb/gdb/config/sparc/vxworks.mt b/gdb/config/sparc/vxworks.mt similarity index 100% rename from contrib/gdb/gdb/config/sparc/vxworks.mt rename to gdb/config/sparc/vxworks.mt diff --git a/contrib/gdb/gdb/config/tm-lynx.h b/gdb/config/tm-lynx.h similarity index 100% rename from contrib/gdb/gdb/config/tm-lynx.h rename to gdb/config/tm-lynx.h diff --git a/contrib/gdb/gdb/config/tm-nto.h b/gdb/config/tm-nto.h similarity index 100% rename from contrib/gdb/gdb/config/tm-nto.h rename to gdb/config/tm-nto.h diff --git a/contrib/gdb/gdb/config/tm-sunos.h b/gdb/config/tm-sunos.h similarity index 100% rename from contrib/gdb/gdb/config/tm-sunos.h rename to gdb/config/tm-sunos.h diff --git a/contrib/gdb/gdb/config/tm-sysv4.h b/gdb/config/tm-sysv4.h similarity index 100% rename from contrib/gdb/gdb/config/tm-sysv4.h rename to gdb/config/tm-sysv4.h diff --git a/contrib/gdb/gdb/config/tm-vxworks.h b/gdb/config/tm-vxworks.h similarity index 100% rename from contrib/gdb/gdb/config/tm-vxworks.h rename to gdb/config/tm-vxworks.h diff --git a/contrib/gdb/gdb/config/xm-nbsd.h b/gdb/config/xm-nbsd.h similarity index 100% rename from contrib/gdb/gdb/config/xm-nbsd.h rename to gdb/config/xm-nbsd.h diff --git a/contrib/gdb/gdb/config/xm-sysv4.h b/gdb/config/xm-sysv4.h similarity index 100% rename from contrib/gdb/gdb/config/xm-sysv4.h rename to gdb/config/xm-sysv4.h diff --git a/contrib/gdb/gdb/copying.awk b/gdb/copying.awk similarity index 100% rename from contrib/gdb/gdb/copying.awk rename to gdb/copying.awk diff --git a/contrib/gdb/gdb/copying.c b/gdb/copying.c similarity index 100% rename from contrib/gdb/gdb/copying.c rename to gdb/copying.c diff --git a/contrib/gdb/gdb/core-aout.c b/gdb/core-aout.c similarity index 100% rename from contrib/gdb/gdb/core-aout.c rename to gdb/core-aout.c diff --git a/contrib/gdb/gdb/core-regset.c b/gdb/core-regset.c similarity index 100% rename from contrib/gdb/gdb/core-regset.c rename to gdb/core-regset.c diff --git a/contrib/gdb/gdb/corefile.c b/gdb/corefile.c similarity index 100% rename from contrib/gdb/gdb/corefile.c rename to gdb/corefile.c diff --git a/contrib/gdb/gdb/corelow.c b/gdb/corelow.c similarity index 100% rename from contrib/gdb/gdb/corelow.c rename to gdb/corelow.c diff --git a/contrib/gdb/gdb/cp-abi.c b/gdb/cp-abi.c similarity index 100% rename from contrib/gdb/gdb/cp-abi.c rename to gdb/cp-abi.c diff --git a/contrib/gdb/gdb/cp-abi.h b/gdb/cp-abi.h similarity index 100% rename from contrib/gdb/gdb/cp-abi.h rename to gdb/cp-abi.h diff --git a/contrib/gdb/gdb/cp-namespace.c b/gdb/cp-namespace.c similarity index 100% rename from contrib/gdb/gdb/cp-namespace.c rename to gdb/cp-namespace.c diff --git a/contrib/gdb/gdb/cp-support.c b/gdb/cp-support.c similarity index 100% rename from contrib/gdb/gdb/cp-support.c rename to gdb/cp-support.c diff --git a/contrib/gdb/gdb/cp-support.h b/gdb/cp-support.h similarity index 100% rename from contrib/gdb/gdb/cp-support.h rename to gdb/cp-support.h diff --git a/contrib/gdb/gdb/cp-valprint.c b/gdb/cp-valprint.c similarity index 100% rename from contrib/gdb/gdb/cp-valprint.c rename to gdb/cp-valprint.c diff --git a/contrib/gdb/gdb/cpu32bug-rom.c b/gdb/cpu32bug-rom.c similarity index 100% rename from contrib/gdb/gdb/cpu32bug-rom.c rename to gdb/cpu32bug-rom.c diff --git a/contrib/gdb/gdb/dbug-rom.c b/gdb/dbug-rom.c similarity index 100% rename from contrib/gdb/gdb/dbug-rom.c rename to gdb/dbug-rom.c diff --git a/contrib/gdb/gdb/dbxread.c b/gdb/dbxread.c similarity index 100% rename from contrib/gdb/gdb/dbxread.c rename to gdb/dbxread.c diff --git a/contrib/gdb/gdb/dcache.c b/gdb/dcache.c similarity index 100% rename from contrib/gdb/gdb/dcache.c rename to gdb/dcache.c diff --git a/contrib/gdb/gdb/dcache.h b/gdb/dcache.h similarity index 100% rename from contrib/gdb/gdb/dcache.h rename to gdb/dcache.h diff --git a/contrib/gdb/gdb/defs.h b/gdb/defs.h similarity index 100% rename from contrib/gdb/gdb/defs.h rename to gdb/defs.h diff --git a/contrib/gdb/gdb/delta68-nat.c b/gdb/delta68-nat.c similarity index 100% rename from contrib/gdb/gdb/delta68-nat.c rename to gdb/delta68-nat.c diff --git a/contrib/gdb/gdb/demangle.c b/gdb/demangle.c similarity index 100% rename from contrib/gdb/gdb/demangle.c rename to gdb/demangle.c diff --git a/contrib/gdb/gdb/dictionary.c b/gdb/dictionary.c similarity index 100% rename from contrib/gdb/gdb/dictionary.c rename to gdb/dictionary.c diff --git a/contrib/gdb/gdb/dictionary.h b/gdb/dictionary.h similarity index 100% rename from contrib/gdb/gdb/dictionary.h rename to gdb/dictionary.h diff --git a/contrib/gdb/gdb/dink32-rom.c b/gdb/dink32-rom.c similarity index 100% rename from contrib/gdb/gdb/dink32-rom.c rename to gdb/dink32-rom.c diff --git a/contrib/gdb/gdb/disasm.c b/gdb/disasm.c similarity index 100% rename from contrib/gdb/gdb/disasm.c rename to gdb/disasm.c diff --git a/contrib/gdb/gdb/disasm.h b/gdb/disasm.h similarity index 100% rename from contrib/gdb/gdb/disasm.h rename to gdb/disasm.h diff --git a/contrib/gdb/gdb/doc/GDBvn.texi b/gdb/doc/GDBvn.texi similarity index 100% rename from contrib/gdb/gdb/doc/GDBvn.texi rename to gdb/doc/GDBvn.texi diff --git a/contrib/gdb/gdb/doc/LRS b/gdb/doc/LRS similarity index 100% rename from contrib/gdb/gdb/doc/LRS rename to gdb/doc/LRS diff --git a/contrib/gdb/gdb/doc/a4rc.sed b/gdb/doc/a4rc.sed similarity index 100% rename from contrib/gdb/gdb/doc/a4rc.sed rename to gdb/doc/a4rc.sed diff --git a/contrib/gdb/gdb/doc/agentexpr.texi b/gdb/doc/agentexpr.texi similarity index 100% rename from contrib/gdb/gdb/doc/agentexpr.texi rename to gdb/doc/agentexpr.texi diff --git a/contrib/gdb/gdb/doc/all-cfg.texi b/gdb/doc/all-cfg.texi similarity index 100% rename from contrib/gdb/gdb/doc/all-cfg.texi rename to gdb/doc/all-cfg.texi diff --git a/contrib/gdb/gdb/doc/annotate.texinfo b/gdb/doc/annotate.texinfo similarity index 100% rename from contrib/gdb/gdb/doc/annotate.texinfo rename to gdb/doc/annotate.texinfo diff --git a/contrib/gdb/gdb/doc/fdl.texi b/gdb/doc/fdl.texi similarity index 100% rename from contrib/gdb/gdb/doc/fdl.texi rename to gdb/doc/fdl.texi diff --git a/contrib/gdb/gdb/doc/gdb.info-1 b/gdb/doc/gdb.info-1 similarity index 100% rename from contrib/gdb/gdb/doc/gdb.info-1 rename to gdb/doc/gdb.info-1 diff --git a/contrib/gdb/gdb/doc/gdb.info-2 b/gdb/doc/gdb.info-2 similarity index 100% rename from contrib/gdb/gdb/doc/gdb.info-2 rename to gdb/doc/gdb.info-2 diff --git a/contrib/gdb/gdb/doc/gdb.info-3 b/gdb/doc/gdb.info-3 similarity index 100% rename from contrib/gdb/gdb/doc/gdb.info-3 rename to gdb/doc/gdb.info-3 diff --git a/contrib/gdb/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo similarity index 100% rename from contrib/gdb/gdb/doc/gdb.texinfo rename to gdb/doc/gdb.texinfo diff --git a/contrib/gdb/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo similarity index 100% rename from contrib/gdb/gdb/doc/gdbint.texinfo rename to gdb/doc/gdbint.texinfo diff --git a/contrib/gdb/gdb/doc/gpl.texi b/gdb/doc/gpl.texi similarity index 100% rename from contrib/gdb/gdb/doc/gpl.texi rename to gdb/doc/gpl.texi diff --git a/contrib/gdb/gdb/doc/lpsrc.sed b/gdb/doc/lpsrc.sed similarity index 100% rename from contrib/gdb/gdb/doc/lpsrc.sed rename to gdb/doc/lpsrc.sed diff --git a/contrib/gdb/gdb/doc/observer.texi b/gdb/doc/observer.texi similarity index 100% rename from contrib/gdb/gdb/doc/observer.texi rename to gdb/doc/observer.texi diff --git a/contrib/gdb/gdb/doc/psrc.sed b/gdb/doc/psrc.sed similarity index 100% rename from contrib/gdb/gdb/doc/psrc.sed rename to gdb/doc/psrc.sed diff --git a/contrib/gdb/gdb/doc/refcard.tex b/gdb/doc/refcard.tex similarity index 100% rename from contrib/gdb/gdb/doc/refcard.tex rename to gdb/doc/refcard.tex diff --git a/contrib/gdb/gdb/doc/stabs.texinfo b/gdb/doc/stabs.texinfo similarity index 100% rename from contrib/gdb/gdb/doc/stabs.texinfo rename to gdb/doc/stabs.texinfo diff --git a/contrib/gdb/gdb/doublest.c b/gdb/doublest.c similarity index 100% rename from contrib/gdb/gdb/doublest.c rename to gdb/doublest.c diff --git a/contrib/gdb/gdb/doublest.h b/gdb/doublest.h similarity index 100% rename from contrib/gdb/gdb/doublest.h rename to gdb/doublest.h diff --git a/contrib/gdb/gdb/dpx2-nat.c b/gdb/dpx2-nat.c similarity index 100% rename from contrib/gdb/gdb/dpx2-nat.c rename to gdb/dpx2-nat.c diff --git a/contrib/gdb/gdb/dsrec.c b/gdb/dsrec.c similarity index 100% rename from contrib/gdb/gdb/dsrec.c rename to gdb/dsrec.c diff --git a/contrib/gdb/gdb/dummy-frame.c b/gdb/dummy-frame.c similarity index 100% rename from contrib/gdb/gdb/dummy-frame.c rename to gdb/dummy-frame.c diff --git a/contrib/gdb/gdb/dummy-frame.h b/gdb/dummy-frame.h similarity index 100% rename from contrib/gdb/gdb/dummy-frame.h rename to gdb/dummy-frame.h diff --git a/contrib/gdb/gdb/dve3900-rom.c b/gdb/dve3900-rom.c similarity index 100% rename from contrib/gdb/gdb/dve3900-rom.c rename to gdb/dve3900-rom.c diff --git a/contrib/gdb/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c similarity index 100% rename from contrib/gdb/gdb/dwarf2-frame.c rename to gdb/dwarf2-frame.c diff --git a/contrib/gdb/gdb/dwarf2-frame.h b/gdb/dwarf2-frame.h similarity index 100% rename from contrib/gdb/gdb/dwarf2-frame.h rename to gdb/dwarf2-frame.h diff --git a/contrib/gdb/gdb/dwarf2expr.c b/gdb/dwarf2expr.c similarity index 100% rename from contrib/gdb/gdb/dwarf2expr.c rename to gdb/dwarf2expr.c diff --git a/contrib/gdb/gdb/dwarf2expr.h b/gdb/dwarf2expr.h similarity index 100% rename from contrib/gdb/gdb/dwarf2expr.h rename to gdb/dwarf2expr.h diff --git a/contrib/gdb/gdb/dwarf2loc.c b/gdb/dwarf2loc.c similarity index 100% rename from contrib/gdb/gdb/dwarf2loc.c rename to gdb/dwarf2loc.c diff --git a/contrib/gdb/gdb/dwarf2loc.h b/gdb/dwarf2loc.h similarity index 100% rename from contrib/gdb/gdb/dwarf2loc.h rename to gdb/dwarf2loc.h diff --git a/contrib/gdb/gdb/dwarf2read.c b/gdb/dwarf2read.c similarity index 100% rename from contrib/gdb/gdb/dwarf2read.c rename to gdb/dwarf2read.c diff --git a/contrib/gdb/gdb/dwarfread.c b/gdb/dwarfread.c similarity index 100% rename from contrib/gdb/gdb/dwarfread.c rename to gdb/dwarfread.c diff --git a/contrib/gdb/gdb/elfread.c b/gdb/elfread.c similarity index 100% rename from contrib/gdb/gdb/elfread.c rename to gdb/elfread.c diff --git a/contrib/gdb/gdb/environ.c b/gdb/environ.c similarity index 100% rename from contrib/gdb/gdb/environ.c rename to gdb/environ.c diff --git a/contrib/gdb/gdb/environ.h b/gdb/environ.h similarity index 100% rename from contrib/gdb/gdb/environ.h rename to gdb/environ.h diff --git a/contrib/gdb/gdb/eval.c b/gdb/eval.c similarity index 100% rename from contrib/gdb/gdb/eval.c rename to gdb/eval.c diff --git a/contrib/gdb/gdb/event-loop.c b/gdb/event-loop.c similarity index 100% rename from contrib/gdb/gdb/event-loop.c rename to gdb/event-loop.c diff --git a/contrib/gdb/gdb/event-loop.h b/gdb/event-loop.h similarity index 100% rename from contrib/gdb/gdb/event-loop.h rename to gdb/event-loop.h diff --git a/contrib/gdb/gdb/event-top.c b/gdb/event-top.c similarity index 100% rename from contrib/gdb/gdb/event-top.c rename to gdb/event-top.c diff --git a/contrib/gdb/gdb/event-top.h b/gdb/event-top.h similarity index 100% rename from contrib/gdb/gdb/event-top.h rename to gdb/event-top.h diff --git a/contrib/gdb/gdb/exc_request.defs b/gdb/exc_request.defs similarity index 100% rename from contrib/gdb/gdb/exc_request.defs rename to gdb/exc_request.defs diff --git a/contrib/gdb/gdb/exec.c b/gdb/exec.c similarity index 100% rename from contrib/gdb/gdb/exec.c rename to gdb/exec.c diff --git a/contrib/gdb/gdb/exec.h b/gdb/exec.h similarity index 100% rename from contrib/gdb/gdb/exec.h rename to gdb/exec.h diff --git a/contrib/gdb/gdb/expprint.c b/gdb/expprint.c similarity index 100% rename from contrib/gdb/gdb/expprint.c rename to gdb/expprint.c diff --git a/contrib/gdb/gdb/expression.h b/gdb/expression.h similarity index 100% rename from contrib/gdb/gdb/expression.h rename to gdb/expression.h diff --git a/contrib/gdb/gdb/f-exp.c b/gdb/f-exp.c similarity index 100% rename from contrib/gdb/gdb/f-exp.c rename to gdb/f-exp.c diff --git a/contrib/gdb/gdb/f-exp.y b/gdb/f-exp.y similarity index 100% rename from contrib/gdb/gdb/f-exp.y rename to gdb/f-exp.y diff --git a/contrib/gdb/gdb/f-lang.c b/gdb/f-lang.c similarity index 100% rename from contrib/gdb/gdb/f-lang.c rename to gdb/f-lang.c diff --git a/contrib/gdb/gdb/f-lang.h b/gdb/f-lang.h similarity index 100% rename from contrib/gdb/gdb/f-lang.h rename to gdb/f-lang.h diff --git a/contrib/gdb/gdb/f-typeprint.c b/gdb/f-typeprint.c similarity index 100% rename from contrib/gdb/gdb/f-typeprint.c rename to gdb/f-typeprint.c diff --git a/contrib/gdb/gdb/f-valprint.c b/gdb/f-valprint.c similarity index 100% rename from contrib/gdb/gdb/f-valprint.c rename to gdb/f-valprint.c diff --git a/contrib/gdb/gdb/fbsd-proc.c b/gdb/fbsd-proc.c similarity index 100% rename from contrib/gdb/gdb/fbsd-proc.c rename to gdb/fbsd-proc.c diff --git a/contrib/gdb/gdb/findvar.c b/gdb/findvar.c similarity index 100% rename from contrib/gdb/gdb/findvar.c rename to gdb/findvar.c diff --git a/contrib/gdb/gdb/fork-child.c b/gdb/fork-child.c similarity index 100% rename from contrib/gdb/gdb/fork-child.c rename to gdb/fork-child.c diff --git a/contrib/gdb/gdb/frame-base.c b/gdb/frame-base.c similarity index 100% rename from contrib/gdb/gdb/frame-base.c rename to gdb/frame-base.c diff --git a/contrib/gdb/gdb/frame-base.h b/gdb/frame-base.h similarity index 100% rename from contrib/gdb/gdb/frame-base.h rename to gdb/frame-base.h diff --git a/contrib/gdb/gdb/frame-unwind.c b/gdb/frame-unwind.c similarity index 100% rename from contrib/gdb/gdb/frame-unwind.c rename to gdb/frame-unwind.c diff --git a/contrib/gdb/gdb/frame-unwind.h b/gdb/frame-unwind.h similarity index 100% rename from contrib/gdb/gdb/frame-unwind.h rename to gdb/frame-unwind.h diff --git a/contrib/gdb/gdb/frame.c b/gdb/frame.c similarity index 100% rename from contrib/gdb/gdb/frame.c rename to gdb/frame.c diff --git a/contrib/gdb/gdb/frame.h b/gdb/frame.h similarity index 100% rename from contrib/gdb/gdb/frame.h rename to gdb/frame.h diff --git a/contrib/gdb/gdb/gcore.c b/gdb/gcore.c similarity index 100% rename from contrib/gdb/gdb/gcore.c rename to gdb/gcore.c diff --git a/contrib/gdb/gdb/gdb-events.c b/gdb/gdb-events.c similarity index 100% rename from contrib/gdb/gdb/gdb-events.c rename to gdb/gdb-events.c diff --git a/contrib/gdb/gdb/gdb-events.h b/gdb/gdb-events.h similarity index 100% rename from contrib/gdb/gdb/gdb-events.h rename to gdb/gdb-events.h diff --git a/contrib/gdb/gdb/gdb-events.sh b/gdb/gdb-events.sh similarity index 100% rename from contrib/gdb/gdb/gdb-events.sh rename to gdb/gdb-events.sh diff --git a/contrib/gdb/gdb/gdb-stabs.h b/gdb/gdb-stabs.h similarity index 100% rename from contrib/gdb/gdb/gdb-stabs.h rename to gdb/gdb-stabs.h diff --git a/contrib/gdb/gdb/gdb.1 b/gdb/gdb.1 similarity index 100% rename from contrib/gdb/gdb/gdb.1 rename to gdb/gdb.1 diff --git a/contrib/gdb/gdb/gdb.c b/gdb/gdb.c similarity index 100% rename from contrib/gdb/gdb/gdb.c rename to gdb/gdb.c diff --git a/contrib/gdb/gdb/gdb.gdb b/gdb/gdb.gdb similarity index 100% rename from contrib/gdb/gdb/gdb.gdb rename to gdb/gdb.gdb diff --git a/contrib/gdb/gdb/gdb.h b/gdb/gdb.h similarity index 100% rename from contrib/gdb/gdb/gdb.h rename to gdb/gdb.h diff --git a/contrib/gdb/gdb/gdb_assert.h b/gdb/gdb_assert.h similarity index 100% rename from contrib/gdb/gdb/gdb_assert.h rename to gdb/gdb_assert.h diff --git a/contrib/gdb/gdb/gdb_curses.h b/gdb/gdb_curses.h similarity index 100% rename from contrib/gdb/gdb/gdb_curses.h rename to gdb/gdb_curses.h diff --git a/contrib/gdb/gdb/gdb_dirent.h b/gdb/gdb_dirent.h similarity index 100% rename from contrib/gdb/gdb/gdb_dirent.h rename to gdb/gdb_dirent.h diff --git a/contrib/gdb/gdb/gdb_gcore.sh b/gdb/gdb_gcore.sh similarity index 100% rename from contrib/gdb/gdb/gdb_gcore.sh rename to gdb/gdb_gcore.sh diff --git a/contrib/gdb/gdb/gdb_indent.sh b/gdb/gdb_indent.sh similarity index 100% rename from contrib/gdb/gdb/gdb_indent.sh rename to gdb/gdb_indent.sh diff --git a/contrib/gdb/gdb/gdb_locale.h b/gdb/gdb_locale.h similarity index 100% rename from contrib/gdb/gdb/gdb_locale.h rename to gdb/gdb_locale.h diff --git a/contrib/gdb/gdb/gdb_mbuild.sh b/gdb/gdb_mbuild.sh similarity index 100% rename from contrib/gdb/gdb/gdb_mbuild.sh rename to gdb/gdb_mbuild.sh diff --git a/contrib/gdb/gdb/gdb_obstack.h b/gdb/gdb_obstack.h similarity index 100% rename from contrib/gdb/gdb/gdb_obstack.h rename to gdb/gdb_obstack.h diff --git a/contrib/gdb/gdb/gdb_proc_service.h b/gdb/gdb_proc_service.h similarity index 100% rename from contrib/gdb/gdb/gdb_proc_service.h rename to gdb/gdb_proc_service.h diff --git a/contrib/gdb/gdb/gdb_regex.h b/gdb/gdb_regex.h similarity index 100% rename from contrib/gdb/gdb/gdb_regex.h rename to gdb/gdb_regex.h diff --git a/contrib/gdb/gdb/gdb_stat.h b/gdb/gdb_stat.h similarity index 100% rename from contrib/gdb/gdb/gdb_stat.h rename to gdb/gdb_stat.h diff --git a/contrib/gdb/gdb/gdb_string.h b/gdb/gdb_string.h similarity index 100% rename from contrib/gdb/gdb/gdb_string.h rename to gdb/gdb_string.h diff --git a/contrib/gdb/gdb/gdb_thread_db.h b/gdb/gdb_thread_db.h similarity index 100% rename from contrib/gdb/gdb/gdb_thread_db.h rename to gdb/gdb_thread_db.h diff --git a/contrib/gdb/gdb/gdb_vfork.h b/gdb/gdb_vfork.h similarity index 100% rename from contrib/gdb/gdb/gdb_vfork.h rename to gdb/gdb_vfork.h diff --git a/contrib/gdb/gdb/gdb_wait.h b/gdb/gdb_wait.h similarity index 100% rename from contrib/gdb/gdb/gdb_wait.h rename to gdb/gdb_wait.h diff --git a/contrib/gdb/gdb/gdbarch.c b/gdb/gdbarch.c similarity index 100% rename from contrib/gdb/gdb/gdbarch.c rename to gdb/gdbarch.c diff --git a/contrib/gdb/gdb/gdbarch.h b/gdb/gdbarch.h similarity index 100% rename from contrib/gdb/gdb/gdbarch.h rename to gdb/gdbarch.h diff --git a/contrib/gdb/gdb/gdbarch.sh b/gdb/gdbarch.sh similarity index 100% rename from contrib/gdb/gdb/gdbarch.sh rename to gdb/gdbarch.sh diff --git a/contrib/gdb/gdb/gdbcmd.h b/gdb/gdbcmd.h similarity index 100% rename from contrib/gdb/gdb/gdbcmd.h rename to gdb/gdbcmd.h diff --git a/contrib/gdb/gdb/gdbcore.h b/gdb/gdbcore.h similarity index 100% rename from contrib/gdb/gdb/gdbcore.h rename to gdb/gdbcore.h diff --git a/contrib/gdb/gdb/gdbinit.in b/gdb/gdbinit.in similarity index 100% rename from contrib/gdb/gdb/gdbinit.in rename to gdb/gdbinit.in diff --git a/contrib/gdb/gdb/gdbserver/README b/gdb/gdbserver/README similarity index 100% rename from contrib/gdb/gdb/gdbserver/README rename to gdb/gdbserver/README diff --git a/contrib/gdb/gdb/gdbserver/acinclude.m4 b/gdb/gdbserver/acinclude.m4 similarity index 100% rename from contrib/gdb/gdb/gdbserver/acinclude.m4 rename to gdb/gdbserver/acinclude.m4 diff --git a/contrib/gdb/gdb/gdbserver/aclocal.m4 b/gdb/gdbserver/aclocal.m4 similarity index 100% rename from contrib/gdb/gdb/gdbserver/aclocal.m4 rename to gdb/gdbserver/aclocal.m4 diff --git a/contrib/gdb/gdb/gdbserver/gdbreplay.c b/gdb/gdbserver/gdbreplay.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/gdbreplay.c rename to gdb/gdbserver/gdbreplay.c diff --git a/contrib/gdb/gdb/gdbserver/gdbserver.1 b/gdb/gdbserver/gdbserver.1 similarity index 100% rename from contrib/gdb/gdb/gdbserver/gdbserver.1 rename to gdb/gdbserver/gdbserver.1 diff --git a/contrib/gdb/gdb/gdbserver/i387-fp.c b/gdb/gdbserver/i387-fp.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/i387-fp.c rename to gdb/gdbserver/i387-fp.c diff --git a/contrib/gdb/gdb/gdbserver/i387-fp.h b/gdb/gdbserver/i387-fp.h similarity index 100% rename from contrib/gdb/gdb/gdbserver/i387-fp.h rename to gdb/gdbserver/i387-fp.h diff --git a/contrib/gdb/gdb/gdbserver/inferiors.c b/gdb/gdbserver/inferiors.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/inferiors.c rename to gdb/gdbserver/inferiors.c diff --git a/contrib/gdb/gdb/gdbserver/mem-break.c b/gdb/gdbserver/mem-break.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/mem-break.c rename to gdb/gdbserver/mem-break.c diff --git a/contrib/gdb/gdb/gdbserver/mem-break.h b/gdb/gdbserver/mem-break.h similarity index 100% rename from contrib/gdb/gdb/gdbserver/mem-break.h rename to gdb/gdbserver/mem-break.h diff --git a/contrib/gdb/gdb/gdbserver/proc-service.c b/gdb/gdbserver/proc-service.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/proc-service.c rename to gdb/gdbserver/proc-service.c diff --git a/contrib/gdb/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/regcache.c rename to gdb/gdbserver/regcache.c diff --git a/contrib/gdb/gdb/gdbserver/regcache.h b/gdb/gdbserver/regcache.h similarity index 100% rename from contrib/gdb/gdb/gdbserver/regcache.h rename to gdb/gdbserver/regcache.h diff --git a/contrib/gdb/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/remote-utils.c rename to gdb/gdbserver/remote-utils.c diff --git a/contrib/gdb/gdb/gdbserver/server.c b/gdb/gdbserver/server.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/server.c rename to gdb/gdbserver/server.c diff --git a/contrib/gdb/gdb/gdbserver/server.h b/gdb/gdbserver/server.h similarity index 100% rename from contrib/gdb/gdb/gdbserver/server.h rename to gdb/gdbserver/server.h diff --git a/contrib/gdb/gdb/gdbserver/target.c b/gdb/gdbserver/target.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/target.c rename to gdb/gdbserver/target.c diff --git a/contrib/gdb/gdb/gdbserver/target.h b/gdb/gdbserver/target.h similarity index 100% rename from contrib/gdb/gdb/gdbserver/target.h rename to gdb/gdbserver/target.h diff --git a/contrib/gdb/gdb/gdbserver/terminal.h b/gdb/gdbserver/terminal.h similarity index 100% rename from contrib/gdb/gdb/gdbserver/terminal.h rename to gdb/gdbserver/terminal.h diff --git a/contrib/gdb/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/thread-db.c rename to gdb/gdbserver/thread-db.c diff --git a/contrib/gdb/gdb/gdbserver/utils.c b/gdb/gdbserver/utils.c similarity index 100% rename from contrib/gdb/gdb/gdbserver/utils.c rename to gdb/gdbserver/utils.c diff --git a/contrib/gdb/gdb/gdbthread.h b/gdb/gdbthread.h similarity index 100% rename from contrib/gdb/gdb/gdbthread.h rename to gdb/gdbthread.h diff --git a/contrib/gdb/gdb/gdbtypes.c b/gdb/gdbtypes.c similarity index 100% rename from contrib/gdb/gdb/gdbtypes.c rename to gdb/gdbtypes.c diff --git a/contrib/gdb/gdb/gdbtypes.h b/gdb/gdbtypes.h similarity index 100% rename from contrib/gdb/gdb/gdbtypes.h rename to gdb/gdbtypes.h diff --git a/contrib/gdb/gdb/glibc-tdep.c b/gdb/glibc-tdep.c similarity index 100% rename from contrib/gdb/gdb/glibc-tdep.c rename to gdb/glibc-tdep.c diff --git a/contrib/gdb/gdb/glibc-tdep.h b/gdb/glibc-tdep.h similarity index 100% rename from contrib/gdb/gdb/glibc-tdep.h rename to gdb/glibc-tdep.h diff --git a/contrib/gdb/gdb/gnu-nat.c b/gdb/gnu-nat.c similarity index 100% rename from contrib/gdb/gdb/gnu-nat.c rename to gdb/gnu-nat.c diff --git a/contrib/gdb/gdb/gnu-nat.h b/gdb/gnu-nat.h similarity index 100% rename from contrib/gdb/gdb/gnu-nat.h rename to gdb/gnu-nat.h diff --git a/contrib/gdb/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c similarity index 100% rename from contrib/gdb/gdb/gnu-v2-abi.c rename to gdb/gnu-v2-abi.c diff --git a/contrib/gdb/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c similarity index 100% rename from contrib/gdb/gdb/gnu-v3-abi.c rename to gdb/gnu-v3-abi.c diff --git a/contrib/gdb/gdb/go32-nat.c b/gdb/go32-nat.c similarity index 100% rename from contrib/gdb/gdb/go32-nat.c rename to gdb/go32-nat.c diff --git a/contrib/gdb/gdb/gregset.h b/gdb/gregset.h similarity index 100% rename from contrib/gdb/gdb/gregset.h rename to gdb/gregset.h diff --git a/contrib/gdb/gdb/hpacc-abi.c b/gdb/hpacc-abi.c similarity index 100% rename from contrib/gdb/gdb/hpacc-abi.c rename to gdb/hpacc-abi.c diff --git a/contrib/gdb/gdb/hpread.c b/gdb/hpread.c similarity index 100% rename from contrib/gdb/gdb/hpread.c rename to gdb/hpread.c diff --git a/contrib/gdb/gdb/i386-nat.c b/gdb/i386-nat.c similarity index 100% rename from contrib/gdb/gdb/i386-nat.c rename to gdb/i386-nat.c diff --git a/contrib/gdb/gdb/i386-nto-tdep.c b/gdb/i386-nto-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386-nto-tdep.c rename to gdb/i386-nto-tdep.c diff --git a/contrib/gdb/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386-sol2-tdep.c rename to gdb/i386-sol2-tdep.c diff --git a/contrib/gdb/gdb/i386-stub.c b/gdb/i386-stub.c similarity index 100% rename from contrib/gdb/gdb/i386-stub.c rename to gdb/i386-stub.c diff --git a/contrib/gdb/gdb/i386-tdep.c b/gdb/i386-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386-tdep.c rename to gdb/i386-tdep.c diff --git a/contrib/gdb/gdb/i386-tdep.h b/gdb/i386-tdep.h similarity index 100% rename from contrib/gdb/gdb/i386-tdep.h rename to gdb/i386-tdep.h diff --git a/contrib/gdb/gdb/i386bsd-nat.c b/gdb/i386bsd-nat.c similarity index 100% rename from contrib/gdb/gdb/i386bsd-nat.c rename to gdb/i386bsd-nat.c diff --git a/contrib/gdb/gdb/i386bsd-tdep.c b/gdb/i386bsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386bsd-tdep.c rename to gdb/i386bsd-tdep.c diff --git a/contrib/gdb/gdb/i386fbsd-nat.c b/gdb/i386fbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/i386fbsd-nat.c rename to gdb/i386fbsd-nat.c diff --git a/contrib/gdb/gdb/i386fbsd-tdep.c b/gdb/i386fbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386fbsd-tdep.c rename to gdb/i386fbsd-tdep.c diff --git a/contrib/gdb/gdb/i386gnu-nat.c b/gdb/i386gnu-nat.c similarity index 100% rename from contrib/gdb/gdb/i386gnu-nat.c rename to gdb/i386gnu-nat.c diff --git a/contrib/gdb/gdb/i386gnu-tdep.c b/gdb/i386gnu-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386gnu-tdep.c rename to gdb/i386gnu-tdep.c diff --git a/contrib/gdb/gdb/i386ly-tdep.c b/gdb/i386ly-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386ly-tdep.c rename to gdb/i386ly-tdep.c diff --git a/contrib/gdb/gdb/i386nbsd-tdep.c b/gdb/i386nbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386nbsd-tdep.c rename to gdb/i386nbsd-tdep.c diff --git a/contrib/gdb/gdb/i386obsd-nat.c b/gdb/i386obsd-nat.c similarity index 100% rename from contrib/gdb/gdb/i386obsd-nat.c rename to gdb/i386obsd-nat.c diff --git a/contrib/gdb/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/i386obsd-tdep.c rename to gdb/i386obsd-tdep.c diff --git a/contrib/gdb/gdb/i386v-nat.c b/gdb/i386v-nat.c similarity index 100% rename from contrib/gdb/gdb/i386v-nat.c rename to gdb/i386v-nat.c diff --git a/contrib/gdb/gdb/i386v4-nat.c b/gdb/i386v4-nat.c similarity index 100% rename from contrib/gdb/gdb/i386v4-nat.c rename to gdb/i386v4-nat.c diff --git a/contrib/gdb/gdb/i387-tdep.c b/gdb/i387-tdep.c similarity index 100% rename from contrib/gdb/gdb/i387-tdep.c rename to gdb/i387-tdep.c diff --git a/contrib/gdb/gdb/i387-tdep.h b/gdb/i387-tdep.h similarity index 100% rename from contrib/gdb/gdb/i387-tdep.h rename to gdb/i387-tdep.h diff --git a/contrib/gdb/gdb/ia64-fbsd-nat.c b/gdb/ia64-fbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/ia64-fbsd-nat.c rename to gdb/ia64-fbsd-nat.c diff --git a/contrib/gdb/gdb/ia64-fbsd-tdep.c b/gdb/ia64-fbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/ia64-fbsd-tdep.c rename to gdb/ia64-fbsd-tdep.c diff --git a/contrib/gdb/gdb/ia64-tdep.c b/gdb/ia64-tdep.c similarity index 100% rename from contrib/gdb/gdb/ia64-tdep.c rename to gdb/ia64-tdep.c diff --git a/contrib/gdb/gdb/ia64-tdep.h b/gdb/ia64-tdep.h similarity index 100% rename from contrib/gdb/gdb/ia64-tdep.h rename to gdb/ia64-tdep.h diff --git a/contrib/gdb/gdb/inf-loop.c b/gdb/inf-loop.c similarity index 100% rename from contrib/gdb/gdb/inf-loop.c rename to gdb/inf-loop.c diff --git a/contrib/gdb/gdb/inf-loop.h b/gdb/inf-loop.h similarity index 100% rename from contrib/gdb/gdb/inf-loop.h rename to gdb/inf-loop.h diff --git a/contrib/gdb/gdb/infcall.c b/gdb/infcall.c similarity index 100% rename from contrib/gdb/gdb/infcall.c rename to gdb/infcall.c diff --git a/contrib/gdb/gdb/infcall.h b/gdb/infcall.h similarity index 100% rename from contrib/gdb/gdb/infcall.h rename to gdb/infcall.h diff --git a/contrib/gdb/gdb/infcmd.c b/gdb/infcmd.c similarity index 100% rename from contrib/gdb/gdb/infcmd.c rename to gdb/infcmd.c diff --git a/contrib/gdb/gdb/inferior.h b/gdb/inferior.h similarity index 100% rename from contrib/gdb/gdb/inferior.h rename to gdb/inferior.h diff --git a/contrib/gdb/gdb/inflow.c b/gdb/inflow.c similarity index 100% rename from contrib/gdb/gdb/inflow.c rename to gdb/inflow.c diff --git a/contrib/gdb/gdb/inflow.h b/gdb/inflow.h similarity index 100% rename from contrib/gdb/gdb/inflow.h rename to gdb/inflow.h diff --git a/contrib/gdb/gdb/infptrace.c b/gdb/infptrace.c similarity index 100% rename from contrib/gdb/gdb/infptrace.c rename to gdb/infptrace.c diff --git a/contrib/gdb/gdb/infrun.c b/gdb/infrun.c similarity index 100% rename from contrib/gdb/gdb/infrun.c rename to gdb/infrun.c diff --git a/contrib/gdb/gdb/inftarg.c b/gdb/inftarg.c similarity index 100% rename from contrib/gdb/gdb/inftarg.c rename to gdb/inftarg.c diff --git a/contrib/gdb/gdb/infttrace.c b/gdb/infttrace.c similarity index 100% rename from contrib/gdb/gdb/infttrace.c rename to gdb/infttrace.c diff --git a/contrib/gdb/gdb/infttrace.h b/gdb/infttrace.h similarity index 100% rename from contrib/gdb/gdb/infttrace.h rename to gdb/infttrace.h diff --git a/contrib/gdb/gdb/interps.c b/gdb/interps.c similarity index 100% rename from contrib/gdb/gdb/interps.c rename to gdb/interps.c diff --git a/contrib/gdb/gdb/interps.h b/gdb/interps.h similarity index 100% rename from contrib/gdb/gdb/interps.h rename to gdb/interps.h diff --git a/contrib/gdb/gdb/jv-exp.c b/gdb/jv-exp.c similarity index 100% rename from contrib/gdb/gdb/jv-exp.c rename to gdb/jv-exp.c diff --git a/contrib/gdb/gdb/jv-exp.y b/gdb/jv-exp.y similarity index 100% rename from contrib/gdb/gdb/jv-exp.y rename to gdb/jv-exp.y diff --git a/contrib/gdb/gdb/jv-lang.c b/gdb/jv-lang.c similarity index 100% rename from contrib/gdb/gdb/jv-lang.c rename to gdb/jv-lang.c diff --git a/contrib/gdb/gdb/jv-lang.h b/gdb/jv-lang.h similarity index 100% rename from contrib/gdb/gdb/jv-lang.h rename to gdb/jv-lang.h diff --git a/contrib/gdb/gdb/jv-typeprint.c b/gdb/jv-typeprint.c similarity index 100% rename from contrib/gdb/gdb/jv-typeprint.c rename to gdb/jv-typeprint.c diff --git a/contrib/gdb/gdb/jv-valprint.c b/gdb/jv-valprint.c similarity index 100% rename from contrib/gdb/gdb/jv-valprint.c rename to gdb/jv-valprint.c diff --git a/contrib/gdb/gdb/kod-cisco.c b/gdb/kod-cisco.c similarity index 100% rename from contrib/gdb/gdb/kod-cisco.c rename to gdb/kod-cisco.c diff --git a/contrib/gdb/gdb/kod.c b/gdb/kod.c similarity index 100% rename from contrib/gdb/gdb/kod.c rename to gdb/kod.c diff --git a/contrib/gdb/gdb/kod.h b/gdb/kod.h similarity index 100% rename from contrib/gdb/gdb/kod.h rename to gdb/kod.h diff --git a/contrib/gdb/gdb/language.c b/gdb/language.c similarity index 100% rename from contrib/gdb/gdb/language.c rename to gdb/language.c diff --git a/contrib/gdb/gdb/language.h b/gdb/language.h similarity index 100% rename from contrib/gdb/gdb/language.h rename to gdb/language.h diff --git a/contrib/gdb/gdb/libunwind-frame.c b/gdb/libunwind-frame.c similarity index 100% rename from contrib/gdb/gdb/libunwind-frame.c rename to gdb/libunwind-frame.c diff --git a/contrib/gdb/gdb/libunwind-frame.h b/gdb/libunwind-frame.h similarity index 100% rename from contrib/gdb/gdb/libunwind-frame.h rename to gdb/libunwind-frame.h diff --git a/contrib/gdb/gdb/lin-lwp.c b/gdb/lin-lwp.c similarity index 100% rename from contrib/gdb/gdb/lin-lwp.c rename to gdb/lin-lwp.c diff --git a/contrib/gdb/gdb/linespec.c b/gdb/linespec.c similarity index 100% rename from contrib/gdb/gdb/linespec.c rename to gdb/linespec.c diff --git a/contrib/gdb/gdb/linespec.h b/gdb/linespec.h similarity index 100% rename from contrib/gdb/gdb/linespec.h rename to gdb/linespec.h diff --git a/contrib/gdb/gdb/lynx-nat.c b/gdb/lynx-nat.c similarity index 100% rename from contrib/gdb/gdb/lynx-nat.c rename to gdb/lynx-nat.c diff --git a/contrib/gdb/gdb/m2-exp.c b/gdb/m2-exp.c similarity index 100% rename from contrib/gdb/gdb/m2-exp.c rename to gdb/m2-exp.c diff --git a/contrib/gdb/gdb/m2-exp.y b/gdb/m2-exp.y similarity index 100% rename from contrib/gdb/gdb/m2-exp.y rename to gdb/m2-exp.y diff --git a/contrib/gdb/gdb/m2-lang.c b/gdb/m2-lang.c similarity index 100% rename from contrib/gdb/gdb/m2-lang.c rename to gdb/m2-lang.c diff --git a/contrib/gdb/gdb/m2-lang.h b/gdb/m2-lang.h similarity index 100% rename from contrib/gdb/gdb/m2-lang.h rename to gdb/m2-lang.h diff --git a/contrib/gdb/gdb/m2-typeprint.c b/gdb/m2-typeprint.c similarity index 100% rename from contrib/gdb/gdb/m2-typeprint.c rename to gdb/m2-typeprint.c diff --git a/contrib/gdb/gdb/m2-valprint.c b/gdb/m2-valprint.c similarity index 100% rename from contrib/gdb/gdb/m2-valprint.c rename to gdb/m2-valprint.c diff --git a/contrib/gdb/gdb/macrocmd.c b/gdb/macrocmd.c similarity index 100% rename from contrib/gdb/gdb/macrocmd.c rename to gdb/macrocmd.c diff --git a/contrib/gdb/gdb/macroexp.c b/gdb/macroexp.c similarity index 100% rename from contrib/gdb/gdb/macroexp.c rename to gdb/macroexp.c diff --git a/contrib/gdb/gdb/macroexp.h b/gdb/macroexp.h similarity index 100% rename from contrib/gdb/gdb/macroexp.h rename to gdb/macroexp.h diff --git a/contrib/gdb/gdb/macroscope.c b/gdb/macroscope.c similarity index 100% rename from contrib/gdb/gdb/macroscope.c rename to gdb/macroscope.c diff --git a/contrib/gdb/gdb/macroscope.h b/gdb/macroscope.h similarity index 100% rename from contrib/gdb/gdb/macroscope.h rename to gdb/macroscope.h diff --git a/contrib/gdb/gdb/macrotab.c b/gdb/macrotab.c similarity index 100% rename from contrib/gdb/gdb/macrotab.c rename to gdb/macrotab.c diff --git a/contrib/gdb/gdb/macrotab.h b/gdb/macrotab.h similarity index 100% rename from contrib/gdb/gdb/macrotab.h rename to gdb/macrotab.h diff --git a/contrib/gdb/gdb/main.c b/gdb/main.c similarity index 100% rename from contrib/gdb/gdb/main.c rename to gdb/main.c diff --git a/contrib/gdb/gdb/main.h b/gdb/main.h similarity index 100% rename from contrib/gdb/gdb/main.h rename to gdb/main.h diff --git a/contrib/gdb/gdb/maint.c b/gdb/maint.c similarity index 100% rename from contrib/gdb/gdb/maint.c rename to gdb/maint.c diff --git a/contrib/gdb/gdb/mdebugread.c b/gdb/mdebugread.c similarity index 100% rename from contrib/gdb/gdb/mdebugread.c rename to gdb/mdebugread.c diff --git a/contrib/gdb/gdb/mem-break.c b/gdb/mem-break.c similarity index 100% rename from contrib/gdb/gdb/mem-break.c rename to gdb/mem-break.c diff --git a/contrib/gdb/gdb/memattr.c b/gdb/memattr.c similarity index 100% rename from contrib/gdb/gdb/memattr.c rename to gdb/memattr.c diff --git a/contrib/gdb/gdb/memattr.h b/gdb/memattr.h similarity index 100% rename from contrib/gdb/gdb/memattr.h rename to gdb/memattr.h diff --git a/contrib/gdb/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmd-break.c rename to gdb/mi/mi-cmd-break.c diff --git a/contrib/gdb/gdb/mi/mi-cmd-disas.c b/gdb/mi/mi-cmd-disas.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmd-disas.c rename to gdb/mi/mi-cmd-disas.c diff --git a/contrib/gdb/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmd-env.c rename to gdb/mi/mi-cmd-env.c diff --git a/contrib/gdb/gdb/mi/mi-cmd-file.c b/gdb/mi/mi-cmd-file.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmd-file.c rename to gdb/mi/mi-cmd-file.c diff --git a/contrib/gdb/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmd-stack.c rename to gdb/mi/mi-cmd-stack.c diff --git a/contrib/gdb/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmd-var.c rename to gdb/mi/mi-cmd-var.c diff --git a/contrib/gdb/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmds.c rename to gdb/mi/mi-cmds.c diff --git a/contrib/gdb/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h similarity index 100% rename from contrib/gdb/gdb/mi/mi-cmds.h rename to gdb/mi/mi-cmds.h diff --git a/contrib/gdb/gdb/mi/mi-console.c b/gdb/mi/mi-console.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-console.c rename to gdb/mi/mi-console.c diff --git a/contrib/gdb/gdb/mi/mi-console.h b/gdb/mi/mi-console.h similarity index 100% rename from contrib/gdb/gdb/mi/mi-console.h rename to gdb/mi/mi-console.h diff --git a/contrib/gdb/gdb/mi/mi-getopt.c b/gdb/mi/mi-getopt.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-getopt.c rename to gdb/mi/mi-getopt.c diff --git a/contrib/gdb/gdb/mi/mi-getopt.h b/gdb/mi/mi-getopt.h similarity index 100% rename from contrib/gdb/gdb/mi/mi-getopt.h rename to gdb/mi/mi-getopt.h diff --git a/contrib/gdb/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-interp.c rename to gdb/mi/mi-interp.c diff --git a/contrib/gdb/gdb/mi/mi-main.c b/gdb/mi/mi-main.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-main.c rename to gdb/mi/mi-main.c diff --git a/contrib/gdb/gdb/mi/mi-main.h b/gdb/mi/mi-main.h similarity index 100% rename from contrib/gdb/gdb/mi/mi-main.h rename to gdb/mi/mi-main.h diff --git a/contrib/gdb/gdb/mi/mi-out.c b/gdb/mi/mi-out.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-out.c rename to gdb/mi/mi-out.c diff --git a/contrib/gdb/gdb/mi/mi-out.h b/gdb/mi/mi-out.h similarity index 100% rename from contrib/gdb/gdb/mi/mi-out.h rename to gdb/mi/mi-out.h diff --git a/contrib/gdb/gdb/mi/mi-parse.c b/gdb/mi/mi-parse.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-parse.c rename to gdb/mi/mi-parse.c diff --git a/contrib/gdb/gdb/mi/mi-parse.h b/gdb/mi/mi-parse.h similarity index 100% rename from contrib/gdb/gdb/mi/mi-parse.h rename to gdb/mi/mi-parse.h diff --git a/contrib/gdb/gdb/mi/mi-symbol-cmds.c b/gdb/mi/mi-symbol-cmds.c similarity index 100% rename from contrib/gdb/gdb/mi/mi-symbol-cmds.c rename to gdb/mi/mi-symbol-cmds.c diff --git a/contrib/gdb/gdb/minimon.h b/gdb/minimon.h similarity index 100% rename from contrib/gdb/gdb/minimon.h rename to gdb/minimon.h diff --git a/contrib/gdb/gdb/minsyms.c b/gdb/minsyms.c similarity index 100% rename from contrib/gdb/gdb/minsyms.c rename to gdb/minsyms.c diff --git a/contrib/gdb/gdb/mips-nat.c b/gdb/mips-nat.c similarity index 100% rename from contrib/gdb/gdb/mips-nat.c rename to gdb/mips-nat.c diff --git a/contrib/gdb/gdb/mips-tdep.c b/gdb/mips-tdep.c similarity index 100% rename from contrib/gdb/gdb/mips-tdep.c rename to gdb/mips-tdep.c diff --git a/contrib/gdb/gdb/mips-tdep.h b/gdb/mips-tdep.h similarity index 100% rename from contrib/gdb/gdb/mips-tdep.h rename to gdb/mips-tdep.h diff --git a/contrib/gdb/gdb/mipsnbsd-nat.c b/gdb/mipsnbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/mipsnbsd-nat.c rename to gdb/mipsnbsd-nat.c diff --git a/contrib/gdb/gdb/mipsnbsd-tdep.c b/gdb/mipsnbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/mipsnbsd-tdep.c rename to gdb/mipsnbsd-tdep.c diff --git a/contrib/gdb/gdb/mipsnbsd-tdep.h b/gdb/mipsnbsd-tdep.h similarity index 100% rename from contrib/gdb/gdb/mipsnbsd-tdep.h rename to gdb/mipsnbsd-tdep.h diff --git a/contrib/gdb/gdb/mipsread.c b/gdb/mipsread.c similarity index 100% rename from contrib/gdb/gdb/mipsread.c rename to gdb/mipsread.c diff --git a/contrib/gdb/gdb/mipsv4-nat.c b/gdb/mipsv4-nat.c similarity index 100% rename from contrib/gdb/gdb/mipsv4-nat.c rename to gdb/mipsv4-nat.c diff --git a/contrib/gdb/gdb/monitor.c b/gdb/monitor.c similarity index 100% rename from contrib/gdb/gdb/monitor.c rename to gdb/monitor.c diff --git a/contrib/gdb/gdb/monitor.h b/gdb/monitor.h similarity index 100% rename from contrib/gdb/gdb/monitor.h rename to gdb/monitor.h diff --git a/contrib/gdb/gdb/msg.defs b/gdb/msg.defs similarity index 100% rename from contrib/gdb/gdb/msg.defs rename to gdb/msg.defs diff --git a/contrib/gdb/gdb/msg_reply.defs b/gdb/msg_reply.defs similarity index 100% rename from contrib/gdb/gdb/msg_reply.defs rename to gdb/msg_reply.defs diff --git a/contrib/gdb/gdb/nbsd-tdep.c b/gdb/nbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/nbsd-tdep.c rename to gdb/nbsd-tdep.c diff --git a/contrib/gdb/gdb/nbsd-tdep.h b/gdb/nbsd-tdep.h similarity index 100% rename from contrib/gdb/gdb/nbsd-tdep.h rename to gdb/nbsd-tdep.h diff --git a/contrib/gdb/gdb/nlmread.c b/gdb/nlmread.c similarity index 100% rename from contrib/gdb/gdb/nlmread.c rename to gdb/nlmread.c diff --git a/contrib/gdb/gdb/notify.defs b/gdb/notify.defs similarity index 100% rename from contrib/gdb/gdb/notify.defs rename to gdb/notify.defs diff --git a/contrib/gdb/gdb/nto-procfs.c b/gdb/nto-procfs.c similarity index 100% rename from contrib/gdb/gdb/nto-procfs.c rename to gdb/nto-procfs.c diff --git a/contrib/gdb/gdb/nto-tdep.c b/gdb/nto-tdep.c similarity index 100% rename from contrib/gdb/gdb/nto-tdep.c rename to gdb/nto-tdep.c diff --git a/contrib/gdb/gdb/nto-tdep.h b/gdb/nto-tdep.h similarity index 100% rename from contrib/gdb/gdb/nto-tdep.h rename to gdb/nto-tdep.h diff --git a/contrib/gdb/gdb/objc-exp.c b/gdb/objc-exp.c similarity index 100% rename from contrib/gdb/gdb/objc-exp.c rename to gdb/objc-exp.c diff --git a/contrib/gdb/gdb/objc-exp.y b/gdb/objc-exp.y similarity index 100% rename from contrib/gdb/gdb/objc-exp.y rename to gdb/objc-exp.y diff --git a/contrib/gdb/gdb/objc-lang.c b/gdb/objc-lang.c similarity index 100% rename from contrib/gdb/gdb/objc-lang.c rename to gdb/objc-lang.c diff --git a/contrib/gdb/gdb/objc-lang.h b/gdb/objc-lang.h similarity index 100% rename from contrib/gdb/gdb/objc-lang.h rename to gdb/objc-lang.h diff --git a/contrib/gdb/gdb/objfiles.c b/gdb/objfiles.c similarity index 100% rename from contrib/gdb/gdb/objfiles.c rename to gdb/objfiles.c diff --git a/contrib/gdb/gdb/objfiles.h b/gdb/objfiles.h similarity index 100% rename from contrib/gdb/gdb/objfiles.h rename to gdb/objfiles.h diff --git a/contrib/gdb/gdb/observer.c b/gdb/observer.c similarity index 100% rename from contrib/gdb/gdb/observer.c rename to gdb/observer.c diff --git a/contrib/gdb/gdb/observer.h b/gdb/observer.h similarity index 100% rename from contrib/gdb/gdb/observer.h rename to gdb/observer.h diff --git a/contrib/gdb/gdb/ocd.c b/gdb/ocd.c similarity index 100% rename from contrib/gdb/gdb/ocd.c rename to gdb/ocd.c diff --git a/contrib/gdb/gdb/ocd.h b/gdb/ocd.h similarity index 100% rename from contrib/gdb/gdb/ocd.h rename to gdb/ocd.h diff --git a/contrib/gdb/gdb/osabi.c b/gdb/osabi.c similarity index 100% rename from contrib/gdb/gdb/osabi.c rename to gdb/osabi.c diff --git a/contrib/gdb/gdb/osabi.h b/gdb/osabi.h similarity index 100% rename from contrib/gdb/gdb/osabi.h rename to gdb/osabi.h diff --git a/contrib/gdb/gdb/p-exp.c b/gdb/p-exp.c similarity index 100% rename from contrib/gdb/gdb/p-exp.c rename to gdb/p-exp.c diff --git a/contrib/gdb/gdb/p-exp.y b/gdb/p-exp.y similarity index 100% rename from contrib/gdb/gdb/p-exp.y rename to gdb/p-exp.y diff --git a/contrib/gdb/gdb/p-lang.c b/gdb/p-lang.c similarity index 100% rename from contrib/gdb/gdb/p-lang.c rename to gdb/p-lang.c diff --git a/contrib/gdb/gdb/p-lang.h b/gdb/p-lang.h similarity index 100% rename from contrib/gdb/gdb/p-lang.h rename to gdb/p-lang.h diff --git a/contrib/gdb/gdb/p-typeprint.c b/gdb/p-typeprint.c similarity index 100% rename from contrib/gdb/gdb/p-typeprint.c rename to gdb/p-typeprint.c diff --git a/contrib/gdb/gdb/p-valprint.c b/gdb/p-valprint.c similarity index 100% rename from contrib/gdb/gdb/p-valprint.c rename to gdb/p-valprint.c diff --git a/contrib/gdb/gdb/pa64solib.c b/gdb/pa64solib.c similarity index 100% rename from contrib/gdb/gdb/pa64solib.c rename to gdb/pa64solib.c diff --git a/contrib/gdb/gdb/pa64solib.h b/gdb/pa64solib.h similarity index 100% rename from contrib/gdb/gdb/pa64solib.h rename to gdb/pa64solib.h diff --git a/contrib/gdb/gdb/parse.c b/gdb/parse.c similarity index 100% rename from contrib/gdb/gdb/parse.c rename to gdb/parse.c diff --git a/contrib/gdb/gdb/parser-defs.h b/gdb/parser-defs.h similarity index 100% rename from contrib/gdb/gdb/parser-defs.h rename to gdb/parser-defs.h diff --git a/contrib/gdb/gdb/ppc-bdm.c b/gdb/ppc-bdm.c similarity index 100% rename from contrib/gdb/gdb/ppc-bdm.c rename to gdb/ppc-bdm.c diff --git a/contrib/gdb/gdb/ppc-sysv-tdep.c b/gdb/ppc-sysv-tdep.c similarity index 100% rename from contrib/gdb/gdb/ppc-sysv-tdep.c rename to gdb/ppc-sysv-tdep.c diff --git a/contrib/gdb/gdb/ppc-tdep.h b/gdb/ppc-tdep.h similarity index 100% rename from contrib/gdb/gdb/ppc-tdep.h rename to gdb/ppc-tdep.h diff --git a/contrib/gdb/gdb/ppcbug-rom.c b/gdb/ppcbug-rom.c similarity index 100% rename from contrib/gdb/gdb/ppcbug-rom.c rename to gdb/ppcbug-rom.c diff --git a/contrib/gdb/gdb/ppcfbsd-nat.c b/gdb/ppcfbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/ppcfbsd-nat.c rename to gdb/ppcfbsd-nat.c diff --git a/contrib/gdb/gdb/ppcfbsd-tdep.c b/gdb/ppcfbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/ppcfbsd-tdep.c rename to gdb/ppcfbsd-tdep.c diff --git a/contrib/gdb/gdb/ppcfbsd-tdep.h b/gdb/ppcfbsd-tdep.h similarity index 100% rename from contrib/gdb/gdb/ppcfbsd-tdep.h rename to gdb/ppcfbsd-tdep.h diff --git a/contrib/gdb/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/ppcnbsd-nat.c rename to gdb/ppcnbsd-nat.c diff --git a/contrib/gdb/gdb/ppcnbsd-tdep.c b/gdb/ppcnbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/ppcnbsd-tdep.c rename to gdb/ppcnbsd-tdep.c diff --git a/contrib/gdb/gdb/ppcnbsd-tdep.h b/gdb/ppcnbsd-tdep.h similarity index 100% rename from contrib/gdb/gdb/ppcnbsd-tdep.h rename to gdb/ppcnbsd-tdep.h diff --git a/contrib/gdb/gdb/printcmd.c b/gdb/printcmd.c similarity index 100% rename from contrib/gdb/gdb/printcmd.c rename to gdb/printcmd.c diff --git a/contrib/gdb/gdb/proc-api.c b/gdb/proc-api.c similarity index 100% rename from contrib/gdb/gdb/proc-api.c rename to gdb/proc-api.c diff --git a/contrib/gdb/gdb/proc-events.c b/gdb/proc-events.c similarity index 100% rename from contrib/gdb/gdb/proc-events.c rename to gdb/proc-events.c diff --git a/contrib/gdb/gdb/proc-flags.c b/gdb/proc-flags.c similarity index 100% rename from contrib/gdb/gdb/proc-flags.c rename to gdb/proc-flags.c diff --git a/contrib/gdb/gdb/proc-service.c b/gdb/proc-service.c similarity index 100% rename from contrib/gdb/gdb/proc-service.c rename to gdb/proc-service.c diff --git a/contrib/gdb/gdb/proc-utils.h b/gdb/proc-utils.h similarity index 100% rename from contrib/gdb/gdb/proc-utils.h rename to gdb/proc-utils.h diff --git a/contrib/gdb/gdb/proc-why.c b/gdb/proc-why.c similarity index 100% rename from contrib/gdb/gdb/proc-why.c rename to gdb/proc-why.c diff --git a/contrib/gdb/gdb/process_reply.defs b/gdb/process_reply.defs similarity index 100% rename from contrib/gdb/gdb/process_reply.defs rename to gdb/process_reply.defs diff --git a/contrib/gdb/gdb/procfs.c b/gdb/procfs.c similarity index 100% rename from contrib/gdb/gdb/procfs.c rename to gdb/procfs.c diff --git a/contrib/gdb/gdb/regcache.c b/gdb/regcache.c similarity index 100% rename from contrib/gdb/gdb/regcache.c rename to gdb/regcache.c diff --git a/contrib/gdb/gdb/regcache.h b/gdb/regcache.h similarity index 100% rename from contrib/gdb/gdb/regcache.h rename to gdb/regcache.h diff --git a/contrib/gdb/gdb/regformats/reg-arm.dat b/gdb/regformats/reg-arm.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-arm.dat rename to gdb/regformats/reg-arm.dat diff --git a/contrib/gdb/gdb/regformats/reg-i386.dat b/gdb/regformats/reg-i386.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-i386.dat rename to gdb/regformats/reg-i386.dat diff --git a/contrib/gdb/gdb/regformats/reg-ia64.dat b/gdb/regformats/reg-ia64.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-ia64.dat rename to gdb/regformats/reg-ia64.dat diff --git a/contrib/gdb/gdb/regformats/reg-m68k.dat b/gdb/regformats/reg-m68k.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-m68k.dat rename to gdb/regformats/reg-m68k.dat diff --git a/contrib/gdb/gdb/regformats/reg-mips.dat b/gdb/regformats/reg-mips.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-mips.dat rename to gdb/regformats/reg-mips.dat diff --git a/contrib/gdb/gdb/regformats/reg-ppc.dat b/gdb/regformats/reg-ppc.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-ppc.dat rename to gdb/regformats/reg-ppc.dat diff --git a/contrib/gdb/gdb/regformats/reg-s390.dat b/gdb/regformats/reg-s390.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-s390.dat rename to gdb/regformats/reg-s390.dat diff --git a/contrib/gdb/gdb/regformats/reg-s390x.dat b/gdb/regformats/reg-s390x.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-s390x.dat rename to gdb/regformats/reg-s390x.dat diff --git a/contrib/gdb/gdb/regformats/reg-sh.dat b/gdb/regformats/reg-sh.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-sh.dat rename to gdb/regformats/reg-sh.dat diff --git a/contrib/gdb/gdb/regformats/reg-x86-64.dat b/gdb/regformats/reg-x86-64.dat similarity index 100% rename from contrib/gdb/gdb/regformats/reg-x86-64.dat rename to gdb/regformats/reg-x86-64.dat diff --git a/contrib/gdb/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh similarity index 100% rename from contrib/gdb/gdb/regformats/regdat.sh rename to gdb/regformats/regdat.sh diff --git a/contrib/gdb/gdb/regformats/regdef.h b/gdb/regformats/regdef.h similarity index 100% rename from contrib/gdb/gdb/regformats/regdef.h rename to gdb/regformats/regdef.h diff --git a/contrib/gdb/gdb/reggroups.c b/gdb/reggroups.c similarity index 100% rename from contrib/gdb/gdb/reggroups.c rename to gdb/reggroups.c diff --git a/contrib/gdb/gdb/reggroups.h b/gdb/reggroups.h similarity index 100% rename from contrib/gdb/gdb/reggroups.h rename to gdb/reggroups.h diff --git a/contrib/gdb/gdb/regset.h b/gdb/regset.h similarity index 100% rename from contrib/gdb/gdb/regset.h rename to gdb/regset.h diff --git a/contrib/gdb/gdb/remote-e7000.c b/gdb/remote-e7000.c similarity index 100% rename from contrib/gdb/gdb/remote-e7000.c rename to gdb/remote-e7000.c diff --git a/contrib/gdb/gdb/remote-est.c b/gdb/remote-est.c similarity index 100% rename from contrib/gdb/gdb/remote-est.c rename to gdb/remote-est.c diff --git a/contrib/gdb/gdb/remote-fileio.c b/gdb/remote-fileio.c similarity index 100% rename from contrib/gdb/gdb/remote-fileio.c rename to gdb/remote-fileio.c diff --git a/contrib/gdb/gdb/remote-fileio.h b/gdb/remote-fileio.h similarity index 100% rename from contrib/gdb/gdb/remote-fileio.h rename to gdb/remote-fileio.h diff --git a/contrib/gdb/gdb/remote-hms.c b/gdb/remote-hms.c similarity index 100% rename from contrib/gdb/gdb/remote-hms.c rename to gdb/remote-hms.c diff --git a/contrib/gdb/gdb/remote-mips.c b/gdb/remote-mips.c similarity index 100% rename from contrib/gdb/gdb/remote-mips.c rename to gdb/remote-mips.c diff --git a/contrib/gdb/gdb/remote-rdi.c b/gdb/remote-rdi.c similarity index 100% rename from contrib/gdb/gdb/remote-rdi.c rename to gdb/remote-rdi.c diff --git a/contrib/gdb/gdb/remote-rdp.c b/gdb/remote-rdp.c similarity index 100% rename from contrib/gdb/gdb/remote-rdp.c rename to gdb/remote-rdp.c diff --git a/contrib/gdb/gdb/remote-sds.c b/gdb/remote-sds.c similarity index 100% rename from contrib/gdb/gdb/remote-sds.c rename to gdb/remote-sds.c diff --git a/contrib/gdb/gdb/remote-sim.c b/gdb/remote-sim.c similarity index 100% rename from contrib/gdb/gdb/remote-sim.c rename to gdb/remote-sim.c diff --git a/contrib/gdb/gdb/remote-st.c b/gdb/remote-st.c similarity index 100% rename from contrib/gdb/gdb/remote-st.c rename to gdb/remote-st.c diff --git a/contrib/gdb/gdb/remote-utils.c b/gdb/remote-utils.c similarity index 100% rename from contrib/gdb/gdb/remote-utils.c rename to gdb/remote-utils.c diff --git a/contrib/gdb/gdb/remote-utils.h b/gdb/remote-utils.h similarity index 100% rename from contrib/gdb/gdb/remote-utils.h rename to gdb/remote-utils.h diff --git a/contrib/gdb/gdb/remote-vx.c b/gdb/remote-vx.c similarity index 100% rename from contrib/gdb/gdb/remote-vx.c rename to gdb/remote-vx.c diff --git a/contrib/gdb/gdb/remote-vx68.c b/gdb/remote-vx68.c similarity index 100% rename from contrib/gdb/gdb/remote-vx68.c rename to gdb/remote-vx68.c diff --git a/contrib/gdb/gdb/remote-vxmips.c b/gdb/remote-vxmips.c similarity index 100% rename from contrib/gdb/gdb/remote-vxmips.c rename to gdb/remote-vxmips.c diff --git a/contrib/gdb/gdb/remote-vxsparc.c b/gdb/remote-vxsparc.c similarity index 100% rename from contrib/gdb/gdb/remote-vxsparc.c rename to gdb/remote-vxsparc.c diff --git a/contrib/gdb/gdb/remote.c b/gdb/remote.c similarity index 100% rename from contrib/gdb/gdb/remote.c rename to gdb/remote.c diff --git a/contrib/gdb/gdb/remote.h b/gdb/remote.h similarity index 100% rename from contrib/gdb/gdb/remote.h rename to gdb/remote.h diff --git a/contrib/gdb/gdb/reply_mig_hack.awk b/gdb/reply_mig_hack.awk similarity index 100% rename from contrib/gdb/gdb/reply_mig_hack.awk rename to gdb/reply_mig_hack.awk diff --git a/contrib/gdb/gdb/rom68k-rom.c b/gdb/rom68k-rom.c similarity index 100% rename from contrib/gdb/gdb/rom68k-rom.c rename to gdb/rom68k-rom.c diff --git a/contrib/gdb/gdb/rs6000-nat.c b/gdb/rs6000-nat.c similarity index 100% rename from contrib/gdb/gdb/rs6000-nat.c rename to gdb/rs6000-nat.c diff --git a/contrib/gdb/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c similarity index 100% rename from contrib/gdb/gdb/rs6000-tdep.c rename to gdb/rs6000-tdep.c diff --git a/contrib/gdb/gdb/s390-nat.c b/gdb/s390-nat.c similarity index 100% rename from contrib/gdb/gdb/s390-nat.c rename to gdb/s390-nat.c diff --git a/contrib/gdb/gdb/s390-tdep.c b/gdb/s390-tdep.c similarity index 100% rename from contrib/gdb/gdb/s390-tdep.c rename to gdb/s390-tdep.c diff --git a/contrib/gdb/gdb/s390-tdep.h b/gdb/s390-tdep.h similarity index 100% rename from contrib/gdb/gdb/s390-tdep.h rename to gdb/s390-tdep.h diff --git a/contrib/gdb/gdb/scm-exp.c b/gdb/scm-exp.c similarity index 100% rename from contrib/gdb/gdb/scm-exp.c rename to gdb/scm-exp.c diff --git a/contrib/gdb/gdb/scm-lang.c b/gdb/scm-lang.c similarity index 100% rename from contrib/gdb/gdb/scm-lang.c rename to gdb/scm-lang.c diff --git a/contrib/gdb/gdb/scm-lang.h b/gdb/scm-lang.h similarity index 100% rename from contrib/gdb/gdb/scm-lang.h rename to gdb/scm-lang.h diff --git a/contrib/gdb/gdb/scm-tags.h b/gdb/scm-tags.h similarity index 100% rename from contrib/gdb/gdb/scm-tags.h rename to gdb/scm-tags.h diff --git a/contrib/gdb/gdb/scm-valprint.c b/gdb/scm-valprint.c similarity index 100% rename from contrib/gdb/gdb/scm-valprint.c rename to gdb/scm-valprint.c diff --git a/contrib/gdb/gdb/sentinel-frame.c b/gdb/sentinel-frame.c similarity index 100% rename from contrib/gdb/gdb/sentinel-frame.c rename to gdb/sentinel-frame.c diff --git a/contrib/gdb/gdb/sentinel-frame.h b/gdb/sentinel-frame.h similarity index 100% rename from contrib/gdb/gdb/sentinel-frame.h rename to gdb/sentinel-frame.h diff --git a/contrib/gdb/gdb/ser-e7kpc.c b/gdb/ser-e7kpc.c similarity index 100% rename from contrib/gdb/gdb/ser-e7kpc.c rename to gdb/ser-e7kpc.c diff --git a/contrib/gdb/gdb/ser-go32.c b/gdb/ser-go32.c similarity index 100% rename from contrib/gdb/gdb/ser-go32.c rename to gdb/ser-go32.c diff --git a/contrib/gdb/gdb/ser-pipe.c b/gdb/ser-pipe.c similarity index 100% rename from contrib/gdb/gdb/ser-pipe.c rename to gdb/ser-pipe.c diff --git a/contrib/gdb/gdb/ser-tcp.c b/gdb/ser-tcp.c similarity index 100% rename from contrib/gdb/gdb/ser-tcp.c rename to gdb/ser-tcp.c diff --git a/contrib/gdb/gdb/ser-unix.c b/gdb/ser-unix.c similarity index 100% rename from contrib/gdb/gdb/ser-unix.c rename to gdb/ser-unix.c diff --git a/contrib/gdb/gdb/ser-unix.h b/gdb/ser-unix.h similarity index 100% rename from contrib/gdb/gdb/ser-unix.h rename to gdb/ser-unix.h diff --git a/contrib/gdb/gdb/serial.c b/gdb/serial.c similarity index 100% rename from contrib/gdb/gdb/serial.c rename to gdb/serial.c diff --git a/contrib/gdb/gdb/serial.h b/gdb/serial.h similarity index 100% rename from contrib/gdb/gdb/serial.h rename to gdb/serial.h diff --git a/contrib/gdb/gdb/signals/signals.c b/gdb/signals/signals.c similarity index 100% rename from contrib/gdb/gdb/signals/signals.c rename to gdb/signals/signals.c diff --git a/contrib/gdb/gdb/sim-regno.h b/gdb/sim-regno.h similarity index 100% rename from contrib/gdb/gdb/sim-regno.h rename to gdb/sim-regno.h diff --git a/contrib/gdb/gdb/sol-thread.c b/gdb/sol-thread.c similarity index 100% rename from contrib/gdb/gdb/sol-thread.c rename to gdb/sol-thread.c diff --git a/contrib/gdb/gdb/solib-legacy.c b/gdb/solib-legacy.c similarity index 100% rename from contrib/gdb/gdb/solib-legacy.c rename to gdb/solib-legacy.c diff --git a/contrib/gdb/gdb/solib-osf.c b/gdb/solib-osf.c similarity index 100% rename from contrib/gdb/gdb/solib-osf.c rename to gdb/solib-osf.c diff --git a/contrib/gdb/gdb/solib-sunos.c b/gdb/solib-sunos.c similarity index 100% rename from contrib/gdb/gdb/solib-sunos.c rename to gdb/solib-sunos.c diff --git a/contrib/gdb/gdb/solib-svr4.c b/gdb/solib-svr4.c similarity index 100% rename from contrib/gdb/gdb/solib-svr4.c rename to gdb/solib-svr4.c diff --git a/contrib/gdb/gdb/solib-svr4.h b/gdb/solib-svr4.h similarity index 100% rename from contrib/gdb/gdb/solib-svr4.h rename to gdb/solib-svr4.h diff --git a/contrib/gdb/gdb/solib.c b/gdb/solib.c similarity index 100% rename from contrib/gdb/gdb/solib.c rename to gdb/solib.c diff --git a/contrib/gdb/gdb/solib.h b/gdb/solib.h similarity index 100% rename from contrib/gdb/gdb/solib.h rename to gdb/solib.h diff --git a/contrib/gdb/gdb/solist.h b/gdb/solist.h similarity index 100% rename from contrib/gdb/gdb/solist.h rename to gdb/solist.h diff --git a/contrib/gdb/gdb/somread.c b/gdb/somread.c similarity index 100% rename from contrib/gdb/gdb/somread.c rename to gdb/somread.c diff --git a/contrib/gdb/gdb/somsolib.c b/gdb/somsolib.c similarity index 100% rename from contrib/gdb/gdb/somsolib.c rename to gdb/somsolib.c diff --git a/contrib/gdb/gdb/somsolib.h b/gdb/somsolib.h similarity index 100% rename from contrib/gdb/gdb/somsolib.h rename to gdb/somsolib.h diff --git a/contrib/gdb/gdb/source.c b/gdb/source.c similarity index 100% rename from contrib/gdb/gdb/source.c rename to gdb/source.c diff --git a/contrib/gdb/gdb/source.h b/gdb/source.h similarity index 100% rename from contrib/gdb/gdb/source.h rename to gdb/source.h diff --git a/contrib/gdb/gdb/sparc-nat.c b/gdb/sparc-nat.c similarity index 100% rename from contrib/gdb/gdb/sparc-nat.c rename to gdb/sparc-nat.c diff --git a/contrib/gdb/gdb/sparc-nat.h b/gdb/sparc-nat.h similarity index 100% rename from contrib/gdb/gdb/sparc-nat.h rename to gdb/sparc-nat.h diff --git a/contrib/gdb/gdb/sparc-sol2-nat.c b/gdb/sparc-sol2-nat.c similarity index 100% rename from contrib/gdb/gdb/sparc-sol2-nat.c rename to gdb/sparc-sol2-nat.c diff --git a/contrib/gdb/gdb/sparc-sol2-tdep.c b/gdb/sparc-sol2-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc-sol2-tdep.c rename to gdb/sparc-sol2-tdep.c diff --git a/contrib/gdb/gdb/sparc-stub.c b/gdb/sparc-stub.c similarity index 100% rename from contrib/gdb/gdb/sparc-stub.c rename to gdb/sparc-stub.c diff --git a/contrib/gdb/gdb/sparc-tdep.c b/gdb/sparc-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc-tdep.c rename to gdb/sparc-tdep.c diff --git a/contrib/gdb/gdb/sparc-tdep.h b/gdb/sparc-tdep.h similarity index 100% rename from contrib/gdb/gdb/sparc-tdep.h rename to gdb/sparc-tdep.h diff --git a/contrib/gdb/gdb/sparc64-nat.c b/gdb/sparc64-nat.c similarity index 100% rename from contrib/gdb/gdb/sparc64-nat.c rename to gdb/sparc64-nat.c diff --git a/contrib/gdb/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc64-sol2-tdep.c rename to gdb/sparc64-sol2-tdep.c diff --git a/contrib/gdb/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc64-tdep.c rename to gdb/sparc64-tdep.c diff --git a/contrib/gdb/gdb/sparc64-tdep.h b/gdb/sparc64-tdep.h similarity index 100% rename from contrib/gdb/gdb/sparc64-tdep.h rename to gdb/sparc64-tdep.h diff --git a/contrib/gdb/gdb/sparc64fbsd-nat.c b/gdb/sparc64fbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/sparc64fbsd-nat.c rename to gdb/sparc64fbsd-nat.c diff --git a/contrib/gdb/gdb/sparc64fbsd-tdep.c b/gdb/sparc64fbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc64fbsd-tdep.c rename to gdb/sparc64fbsd-tdep.c diff --git a/contrib/gdb/gdb/sparc64nbsd-nat.c b/gdb/sparc64nbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/sparc64nbsd-nat.c rename to gdb/sparc64nbsd-nat.c diff --git a/contrib/gdb/gdb/sparc64nbsd-tdep.c b/gdb/sparc64nbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc64nbsd-tdep.c rename to gdb/sparc64nbsd-tdep.c diff --git a/contrib/gdb/gdb/sparc64obsd-tdep.c b/gdb/sparc64obsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparc64obsd-tdep.c rename to gdb/sparc64obsd-tdep.c diff --git a/contrib/gdb/gdb/sparcnbsd-nat.c b/gdb/sparcnbsd-nat.c similarity index 100% rename from contrib/gdb/gdb/sparcnbsd-nat.c rename to gdb/sparcnbsd-nat.c diff --git a/contrib/gdb/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparcnbsd-tdep.c rename to gdb/sparcnbsd-tdep.c diff --git a/contrib/gdb/gdb/sparcobsd-tdep.c b/gdb/sparcobsd-tdep.c similarity index 100% rename from contrib/gdb/gdb/sparcobsd-tdep.c rename to gdb/sparcobsd-tdep.c diff --git a/contrib/gdb/gdb/srec.h b/gdb/srec.h similarity index 100% rename from contrib/gdb/gdb/srec.h rename to gdb/srec.h diff --git a/contrib/gdb/gdb/stabsread.c b/gdb/stabsread.c similarity index 100% rename from contrib/gdb/gdb/stabsread.c rename to gdb/stabsread.c diff --git a/contrib/gdb/gdb/stabsread.h b/gdb/stabsread.h similarity index 100% rename from contrib/gdb/gdb/stabsread.h rename to gdb/stabsread.h diff --git a/contrib/gdb/gdb/stack.c b/gdb/stack.c similarity index 100% rename from contrib/gdb/gdb/stack.c rename to gdb/stack.c diff --git a/contrib/gdb/gdb/stack.h b/gdb/stack.h similarity index 100% rename from contrib/gdb/gdb/stack.h rename to gdb/stack.h diff --git a/contrib/gdb/gdb/standalone.c b/gdb/standalone.c similarity index 100% rename from contrib/gdb/gdb/standalone.c rename to gdb/standalone.c diff --git a/contrib/gdb/gdb/std-regs.c b/gdb/std-regs.c similarity index 100% rename from contrib/gdb/gdb/std-regs.c rename to gdb/std-regs.c diff --git a/contrib/gdb/gdb/stop-gdb.c b/gdb/stop-gdb.c similarity index 100% rename from contrib/gdb/gdb/stop-gdb.c rename to gdb/stop-gdb.c diff --git a/contrib/gdb/gdb/sun3-nat.c b/gdb/sun3-nat.c similarity index 100% rename from contrib/gdb/gdb/sun3-nat.c rename to gdb/sun3-nat.c diff --git a/contrib/gdb/gdb/symfile.c b/gdb/symfile.c similarity index 100% rename from contrib/gdb/gdb/symfile.c rename to gdb/symfile.c diff --git a/contrib/gdb/gdb/symfile.h b/gdb/symfile.h similarity index 100% rename from contrib/gdb/gdb/symfile.h rename to gdb/symfile.h diff --git a/contrib/gdb/gdb/symmisc.c b/gdb/symmisc.c similarity index 100% rename from contrib/gdb/gdb/symmisc.c rename to gdb/symmisc.c diff --git a/contrib/gdb/gdb/symtab.c b/gdb/symtab.c similarity index 100% rename from contrib/gdb/gdb/symtab.c rename to gdb/symtab.c diff --git a/contrib/gdb/gdb/symtab.h b/gdb/symtab.h similarity index 100% rename from contrib/gdb/gdb/symtab.h rename to gdb/symtab.h diff --git a/contrib/gdb/gdb/target.c b/gdb/target.c similarity index 100% rename from contrib/gdb/gdb/target.c rename to gdb/target.c diff --git a/contrib/gdb/gdb/target.h b/gdb/target.h similarity index 100% rename from contrib/gdb/gdb/target.h rename to gdb/target.h diff --git a/contrib/gdb/gdb/terminal.h b/gdb/terminal.h similarity index 100% rename from contrib/gdb/gdb/terminal.h rename to gdb/terminal.h diff --git a/contrib/gdb/gdb/thread-db.c b/gdb/thread-db.c similarity index 100% rename from contrib/gdb/gdb/thread-db.c rename to gdb/thread-db.c diff --git a/contrib/gdb/gdb/thread.c b/gdb/thread.c similarity index 100% rename from contrib/gdb/gdb/thread.c rename to gdb/thread.c diff --git a/contrib/gdb/gdb/top.c b/gdb/top.c similarity index 100% rename from contrib/gdb/gdb/top.c rename to gdb/top.c diff --git a/contrib/gdb/gdb/top.h b/gdb/top.h similarity index 100% rename from contrib/gdb/gdb/top.h rename to gdb/top.h diff --git a/contrib/gdb/gdb/tracepoint.c b/gdb/tracepoint.c similarity index 100% rename from contrib/gdb/gdb/tracepoint.c rename to gdb/tracepoint.c diff --git a/contrib/gdb/gdb/tracepoint.h b/gdb/tracepoint.h similarity index 100% rename from contrib/gdb/gdb/tracepoint.h rename to gdb/tracepoint.h diff --git a/contrib/gdb/gdb/trad-frame.c b/gdb/trad-frame.c similarity index 100% rename from contrib/gdb/gdb/trad-frame.c rename to gdb/trad-frame.c diff --git a/contrib/gdb/gdb/trad-frame.h b/gdb/trad-frame.h similarity index 100% rename from contrib/gdb/gdb/trad-frame.h rename to gdb/trad-frame.h diff --git a/contrib/gdb/gdb/tui/tui-command.c b/gdb/tui/tui-command.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-command.c rename to gdb/tui/tui-command.c diff --git a/contrib/gdb/gdb/tui/tui-command.h b/gdb/tui/tui-command.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-command.h rename to gdb/tui/tui-command.h diff --git a/contrib/gdb/gdb/tui/tui-data.c b/gdb/tui/tui-data.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-data.c rename to gdb/tui/tui-data.c diff --git a/contrib/gdb/gdb/tui/tui-data.h b/gdb/tui/tui-data.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-data.h rename to gdb/tui/tui-data.h diff --git a/contrib/gdb/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-disasm.c rename to gdb/tui/tui-disasm.c diff --git a/contrib/gdb/gdb/tui/tui-disasm.h b/gdb/tui/tui-disasm.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-disasm.h rename to gdb/tui/tui-disasm.h diff --git a/contrib/gdb/gdb/tui/tui-file.c b/gdb/tui/tui-file.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-file.c rename to gdb/tui/tui-file.c diff --git a/contrib/gdb/gdb/tui/tui-file.h b/gdb/tui/tui-file.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-file.h rename to gdb/tui/tui-file.h diff --git a/contrib/gdb/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-hooks.c rename to gdb/tui/tui-hooks.c diff --git a/contrib/gdb/gdb/tui/tui-hooks.h b/gdb/tui/tui-hooks.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-hooks.h rename to gdb/tui/tui-hooks.h diff --git a/contrib/gdb/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-interp.c rename to gdb/tui/tui-interp.c diff --git a/contrib/gdb/gdb/tui/tui-io.c b/gdb/tui/tui-io.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-io.c rename to gdb/tui/tui-io.c diff --git a/contrib/gdb/gdb/tui/tui-io.h b/gdb/tui/tui-io.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-io.h rename to gdb/tui/tui-io.h diff --git a/contrib/gdb/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-layout.c rename to gdb/tui/tui-layout.c diff --git a/contrib/gdb/gdb/tui/tui-layout.h b/gdb/tui/tui-layout.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-layout.h rename to gdb/tui/tui-layout.h diff --git a/contrib/gdb/gdb/tui/tui-main.c b/gdb/tui/tui-main.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-main.c rename to gdb/tui/tui-main.c diff --git a/contrib/gdb/gdb/tui/tui-out.c b/gdb/tui/tui-out.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-out.c rename to gdb/tui/tui-out.c diff --git a/contrib/gdb/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-regs.c rename to gdb/tui/tui-regs.c diff --git a/contrib/gdb/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-regs.h rename to gdb/tui/tui-regs.h diff --git a/contrib/gdb/gdb/tui/tui-source.c b/gdb/tui/tui-source.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-source.c rename to gdb/tui/tui-source.c diff --git a/contrib/gdb/gdb/tui/tui-source.h b/gdb/tui/tui-source.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-source.h rename to gdb/tui/tui-source.h diff --git a/contrib/gdb/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-stack.c rename to gdb/tui/tui-stack.c diff --git a/contrib/gdb/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-stack.h rename to gdb/tui/tui-stack.h diff --git a/contrib/gdb/gdb/tui/tui-win.c b/gdb/tui/tui-win.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-win.c rename to gdb/tui/tui-win.c diff --git a/contrib/gdb/gdb/tui/tui-win.h b/gdb/tui/tui-win.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-win.h rename to gdb/tui/tui-win.h diff --git a/contrib/gdb/gdb/tui/tui-windata.c b/gdb/tui/tui-windata.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-windata.c rename to gdb/tui/tui-windata.c diff --git a/contrib/gdb/gdb/tui/tui-windata.h b/gdb/tui/tui-windata.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-windata.h rename to gdb/tui/tui-windata.h diff --git a/contrib/gdb/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-wingeneral.c rename to gdb/tui/tui-wingeneral.c diff --git a/contrib/gdb/gdb/tui/tui-wingeneral.h b/gdb/tui/tui-wingeneral.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-wingeneral.h rename to gdb/tui/tui-wingeneral.h diff --git a/contrib/gdb/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c similarity index 100% rename from contrib/gdb/gdb/tui/tui-winsource.c rename to gdb/tui/tui-winsource.c diff --git a/contrib/gdb/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h similarity index 100% rename from contrib/gdb/gdb/tui/tui-winsource.h rename to gdb/tui/tui-winsource.h diff --git a/contrib/gdb/gdb/tui/tui.c b/gdb/tui/tui.c similarity index 100% rename from contrib/gdb/gdb/tui/tui.c rename to gdb/tui/tui.c diff --git a/contrib/gdb/gdb/tui/tui.h b/gdb/tui/tui.h similarity index 100% rename from contrib/gdb/gdb/tui/tui.h rename to gdb/tui/tui.h diff --git a/contrib/gdb/gdb/typeprint.c b/gdb/typeprint.c similarity index 100% rename from contrib/gdb/gdb/typeprint.c rename to gdb/typeprint.c diff --git a/contrib/gdb/gdb/typeprint.h b/gdb/typeprint.h similarity index 100% rename from contrib/gdb/gdb/typeprint.h rename to gdb/typeprint.h diff --git a/contrib/gdb/gdb/ui-file.c b/gdb/ui-file.c similarity index 100% rename from contrib/gdb/gdb/ui-file.c rename to gdb/ui-file.c diff --git a/contrib/gdb/gdb/ui-file.h b/gdb/ui-file.h similarity index 100% rename from contrib/gdb/gdb/ui-file.h rename to gdb/ui-file.h diff --git a/contrib/gdb/gdb/ui-out.c b/gdb/ui-out.c similarity index 100% rename from contrib/gdb/gdb/ui-out.c rename to gdb/ui-out.c diff --git a/contrib/gdb/gdb/ui-out.h b/gdb/ui-out.h similarity index 100% rename from contrib/gdb/gdb/ui-out.h rename to gdb/ui-out.h diff --git a/contrib/gdb/gdb/user-regs.c b/gdb/user-regs.c similarity index 100% rename from contrib/gdb/gdb/user-regs.c rename to gdb/user-regs.c diff --git a/contrib/gdb/gdb/user-regs.h b/gdb/user-regs.h similarity index 100% rename from contrib/gdb/gdb/user-regs.h rename to gdb/user-regs.h diff --git a/contrib/gdb/gdb/utils.c b/gdb/utils.c similarity index 100% rename from contrib/gdb/gdb/utils.c rename to gdb/utils.c diff --git a/contrib/gdb/gdb/uw-thread.c b/gdb/uw-thread.c similarity index 100% rename from contrib/gdb/gdb/uw-thread.c rename to gdb/uw-thread.c diff --git a/contrib/gdb/gdb/valarith.c b/gdb/valarith.c similarity index 100% rename from contrib/gdb/gdb/valarith.c rename to gdb/valarith.c diff --git a/contrib/gdb/gdb/valops.c b/gdb/valops.c similarity index 100% rename from contrib/gdb/gdb/valops.c rename to gdb/valops.c diff --git a/contrib/gdb/gdb/valprint.c b/gdb/valprint.c similarity index 100% rename from contrib/gdb/gdb/valprint.c rename to gdb/valprint.c diff --git a/contrib/gdb/gdb/valprint.h b/gdb/valprint.h similarity index 100% rename from contrib/gdb/gdb/valprint.h rename to gdb/valprint.h diff --git a/contrib/gdb/gdb/value.h b/gdb/value.h similarity index 100% rename from contrib/gdb/gdb/value.h rename to gdb/value.h diff --git a/contrib/gdb/gdb/values.c b/gdb/values.c similarity index 100% rename from contrib/gdb/gdb/values.c rename to gdb/values.c diff --git a/contrib/gdb/gdb/varobj.c b/gdb/varobj.c similarity index 100% rename from contrib/gdb/gdb/varobj.c rename to gdb/varobj.c diff --git a/contrib/gdb/gdb/varobj.h b/gdb/varobj.h similarity index 100% rename from contrib/gdb/gdb/varobj.h rename to gdb/varobj.h diff --git a/contrib/gdb/gdb/version.h b/gdb/version.h similarity index 100% rename from contrib/gdb/gdb/version.h rename to gdb/version.h diff --git a/contrib/gdb/gdb/version.in b/gdb/version.in similarity index 100% rename from contrib/gdb/gdb/version.in rename to gdb/version.in diff --git a/contrib/gdb/gdb/win32-nat.c b/gdb/win32-nat.c similarity index 100% rename from contrib/gdb/gdb/win32-nat.c rename to gdb/win32-nat.c diff --git a/contrib/gdb/gdb/wince-stub.c b/gdb/wince-stub.c similarity index 100% rename from contrib/gdb/gdb/wince-stub.c rename to gdb/wince-stub.c diff --git a/contrib/gdb/gdb/wince-stub.h b/gdb/wince-stub.h similarity index 100% rename from contrib/gdb/gdb/wince-stub.h rename to gdb/wince-stub.h diff --git a/contrib/gdb/gdb/wince.c b/gdb/wince.c similarity index 100% rename from contrib/gdb/gdb/wince.c rename to gdb/wince.c diff --git a/contrib/gdb/gdb/wrapper.c b/gdb/wrapper.c similarity index 100% rename from contrib/gdb/gdb/wrapper.c rename to gdb/wrapper.c diff --git a/contrib/gdb/gdb/wrapper.h b/gdb/wrapper.h similarity index 100% rename from contrib/gdb/gdb/wrapper.h rename to gdb/wrapper.h diff --git a/contrib/gdb/gdb/xcoffread.c b/gdb/xcoffread.c similarity index 100% rename from contrib/gdb/gdb/xcoffread.c rename to gdb/xcoffread.c diff --git a/contrib/gdb/gdb/xcoffsolib.c b/gdb/xcoffsolib.c similarity index 100% rename from contrib/gdb/gdb/xcoffsolib.c rename to gdb/xcoffsolib.c diff --git a/contrib/gdb/gdb/xcoffsolib.h b/gdb/xcoffsolib.h similarity index 100% rename from contrib/gdb/gdb/xcoffsolib.h rename to gdb/xcoffsolib.h diff --git a/contrib/gdb/gdb/xmodem.c b/gdb/xmodem.c similarity index 100% rename from contrib/gdb/gdb/xmodem.c rename to gdb/xmodem.c diff --git a/contrib/gdb/gdb/xmodem.h b/gdb/xmodem.h similarity index 100% rename from contrib/gdb/gdb/xmodem.h rename to gdb/xmodem.h diff --git a/contrib/gdb/gettext.m4 b/gettext.m4 similarity index 100% rename from contrib/gdb/gettext.m4 rename to gettext.m4 diff --git a/contrib/gdb/include/COPYING b/include/COPYING similarity index 100% rename from contrib/gdb/include/COPYING rename to include/COPYING diff --git a/contrib/gdb/include/MAINTAINERS b/include/MAINTAINERS similarity index 100% rename from contrib/gdb/include/MAINTAINERS rename to include/MAINTAINERS diff --git a/contrib/gdb/include/alloca-conf.h b/include/alloca-conf.h similarity index 100% rename from contrib/gdb/include/alloca-conf.h rename to include/alloca-conf.h diff --git a/contrib/gdb/include/ansidecl.h b/include/ansidecl.h similarity index 100% rename from contrib/gdb/include/ansidecl.h rename to include/ansidecl.h diff --git a/contrib/gdb/include/bfdlink.h b/include/bfdlink.h similarity index 100% rename from contrib/gdb/include/bfdlink.h rename to include/bfdlink.h diff --git a/contrib/gdb/include/bin-bugs.h b/include/bin-bugs.h similarity index 100% rename from contrib/gdb/include/bin-bugs.h rename to include/bin-bugs.h diff --git a/contrib/gdb/include/bout.h b/include/bout.h similarity index 100% rename from contrib/gdb/include/bout.h rename to include/bout.h diff --git a/contrib/gdb/include/demangle.h b/include/demangle.h similarity index 100% rename from contrib/gdb/include/demangle.h rename to include/demangle.h diff --git a/contrib/gdb/include/dis-asm.h b/include/dis-asm.h similarity index 100% rename from contrib/gdb/include/dis-asm.h rename to include/dis-asm.h diff --git a/contrib/gdb/include/dyn-string.h b/include/dyn-string.h similarity index 100% rename from contrib/gdb/include/dyn-string.h rename to include/dyn-string.h diff --git a/contrib/gdb/include/fibheap.h b/include/fibheap.h similarity index 100% rename from contrib/gdb/include/fibheap.h rename to include/fibheap.h diff --git a/contrib/gdb/include/filenames.h b/include/filenames.h similarity index 100% rename from contrib/gdb/include/filenames.h rename to include/filenames.h diff --git a/contrib/gdb/include/floatformat.h b/include/floatformat.h similarity index 100% rename from contrib/gdb/include/floatformat.h rename to include/floatformat.h diff --git a/contrib/gdb/include/fnmatch.h b/include/fnmatch.h similarity index 100% rename from contrib/gdb/include/fnmatch.h rename to include/fnmatch.h diff --git a/contrib/gdb/include/fopen-bin.h b/include/fopen-bin.h similarity index 100% rename from contrib/gdb/include/fopen-bin.h rename to include/fopen-bin.h diff --git a/contrib/gdb/include/fopen-same.h b/include/fopen-same.h similarity index 100% rename from contrib/gdb/include/fopen-same.h rename to include/fopen-same.h diff --git a/contrib/gdb/include/fopen-vms.h b/include/fopen-vms.h similarity index 100% rename from contrib/gdb/include/fopen-vms.h rename to include/fopen-vms.h diff --git a/contrib/gdb/include/gdb/callback.h b/include/gdb/callback.h similarity index 100% rename from contrib/gdb/include/gdb/callback.h rename to include/gdb/callback.h diff --git a/contrib/gdb/include/gdb/fileio.h b/include/gdb/fileio.h similarity index 100% rename from contrib/gdb/include/gdb/fileio.h rename to include/gdb/fileio.h diff --git a/contrib/gdb/include/gdb/remote-sim.h b/include/gdb/remote-sim.h similarity index 100% rename from contrib/gdb/include/gdb/remote-sim.h rename to include/gdb/remote-sim.h diff --git a/contrib/gdb/include/gdb/signals.h b/include/gdb/signals.h similarity index 100% rename from contrib/gdb/include/gdb/signals.h rename to include/gdb/signals.h diff --git a/contrib/gdb/include/gdb/sim-arm.h b/include/gdb/sim-arm.h similarity index 100% rename from contrib/gdb/include/gdb/sim-arm.h rename to include/gdb/sim-arm.h diff --git a/contrib/gdb/include/gdb/sim-d10v.h b/include/gdb/sim-d10v.h similarity index 100% rename from contrib/gdb/include/gdb/sim-d10v.h rename to include/gdb/sim-d10v.h diff --git a/contrib/gdb/include/gdb/sim-frv.h b/include/gdb/sim-frv.h similarity index 100% rename from contrib/gdb/include/gdb/sim-frv.h rename to include/gdb/sim-frv.h diff --git a/contrib/gdb/include/gdb/sim-h8300.h b/include/gdb/sim-h8300.h similarity index 100% rename from contrib/gdb/include/gdb/sim-h8300.h rename to include/gdb/sim-h8300.h diff --git a/contrib/gdb/include/gdb/sim-sh.h b/include/gdb/sim-sh.h similarity index 100% rename from contrib/gdb/include/gdb/sim-sh.h rename to include/gdb/sim-sh.h diff --git a/contrib/gdb/include/gdbm.h b/include/gdbm.h similarity index 100% rename from contrib/gdb/include/gdbm.h rename to include/gdbm.h diff --git a/contrib/gdb/include/getopt.h b/include/getopt.h similarity index 100% rename from contrib/gdb/include/getopt.h rename to include/getopt.h diff --git a/contrib/gdb/include/hashtab.h b/include/hashtab.h similarity index 100% rename from contrib/gdb/include/hashtab.h rename to include/hashtab.h diff --git a/contrib/gdb/include/hp-symtab.h b/include/hp-symtab.h similarity index 100% rename from contrib/gdb/include/hp-symtab.h rename to include/hp-symtab.h diff --git a/contrib/gdb/include/ieee.h b/include/ieee.h similarity index 100% rename from contrib/gdb/include/ieee.h rename to include/ieee.h diff --git a/contrib/gdb/include/libiberty.h b/include/libiberty.h similarity index 100% rename from contrib/gdb/include/libiberty.h rename to include/libiberty.h diff --git a/contrib/gdb/include/md5.h b/include/md5.h similarity index 100% rename from contrib/gdb/include/md5.h rename to include/md5.h diff --git a/contrib/gdb/include/oasys.h b/include/oasys.h similarity index 100% rename from contrib/gdb/include/oasys.h rename to include/oasys.h diff --git a/contrib/gdb/include/objalloc.h b/include/objalloc.h similarity index 100% rename from contrib/gdb/include/objalloc.h rename to include/objalloc.h diff --git a/contrib/gdb/include/obstack.h b/include/obstack.h similarity index 100% rename from contrib/gdb/include/obstack.h rename to include/obstack.h diff --git a/contrib/gdb/include/os9k.h b/include/os9k.h similarity index 100% rename from contrib/gdb/include/os9k.h rename to include/os9k.h diff --git a/contrib/gdb/include/partition.h b/include/partition.h similarity index 100% rename from contrib/gdb/include/partition.h rename to include/partition.h diff --git a/contrib/gdb/include/progress.h b/include/progress.h similarity index 100% rename from contrib/gdb/include/progress.h rename to include/progress.h diff --git a/contrib/gdb/include/safe-ctype.h b/include/safe-ctype.h similarity index 100% rename from contrib/gdb/include/safe-ctype.h rename to include/safe-ctype.h diff --git a/contrib/gdb/include/sort.h b/include/sort.h similarity index 100% rename from contrib/gdb/include/sort.h rename to include/sort.h diff --git a/contrib/gdb/include/splay-tree.h b/include/splay-tree.h similarity index 100% rename from contrib/gdb/include/splay-tree.h rename to include/splay-tree.h diff --git a/contrib/gdb/include/symcat.h b/include/symcat.h similarity index 100% rename from contrib/gdb/include/symcat.h rename to include/symcat.h diff --git a/contrib/gdb/include/ternary.h b/include/ternary.h similarity index 100% rename from contrib/gdb/include/ternary.h rename to include/ternary.h diff --git a/contrib/gdb/include/xregex.h b/include/xregex.h similarity index 100% rename from contrib/gdb/include/xregex.h rename to include/xregex.h diff --git a/contrib/gdb/include/xregex2.h b/include/xregex2.h similarity index 100% rename from contrib/gdb/include/xregex2.h rename to include/xregex2.h diff --git a/contrib/gdb/include/xtensa-isa-internal.h b/include/xtensa-isa-internal.h similarity index 100% rename from contrib/gdb/include/xtensa-isa-internal.h rename to include/xtensa-isa-internal.h diff --git a/contrib/gdb/include/xtensa-isa.h b/include/xtensa-isa.h similarity index 100% rename from contrib/gdb/include/xtensa-isa.h rename to include/xtensa-isa.h diff --git a/contrib/gdb/install-sh b/install-sh similarity index 100% rename from contrib/gdb/install-sh rename to install-sh diff --git a/contrib/gdb/libtool.m4 b/libtool.m4 similarity index 100% rename from contrib/gdb/libtool.m4 rename to libtool.m4 diff --git a/contrib/gdb/ltcf-c.sh b/ltcf-c.sh similarity index 100% rename from contrib/gdb/ltcf-c.sh rename to ltcf-c.sh diff --git a/contrib/gdb/ltcf-cxx.sh b/ltcf-cxx.sh similarity index 100% rename from contrib/gdb/ltcf-cxx.sh rename to ltcf-cxx.sh diff --git a/contrib/gdb/ltcf-gcj.sh b/ltcf-gcj.sh similarity index 100% rename from contrib/gdb/ltcf-gcj.sh rename to ltcf-gcj.sh diff --git a/contrib/gdb/ltconfig b/ltconfig similarity index 100% rename from contrib/gdb/ltconfig rename to ltconfig diff --git a/contrib/gdb/ltmain.sh b/ltmain.sh similarity index 100% rename from contrib/gdb/ltmain.sh rename to ltmain.sh diff --git a/contrib/gdb/md5.sum b/md5.sum similarity index 100% rename from contrib/gdb/md5.sum rename to md5.sum diff --git a/contrib/gdb/missing b/missing similarity index 100% rename from contrib/gdb/missing rename to missing diff --git a/contrib/gdb/mkinstalldirs b/mkinstalldirs similarity index 100% rename from contrib/gdb/mkinstalldirs rename to mkinstalldirs diff --git a/contrib/gdb/move-if-change b/move-if-change similarity index 100% rename from contrib/gdb/move-if-change rename to move-if-change diff --git a/contrib/gdb/src-release b/src-release similarity index 100% rename from contrib/gdb/src-release rename to src-release diff --git a/contrib/gdb/symlink-tree b/symlink-tree similarity index 100% rename from contrib/gdb/symlink-tree rename to symlink-tree diff --git a/contrib/gdb/ylwrap b/ylwrap similarity index 100% rename from contrib/gdb/ylwrap rename to ylwrap From c5f282daad8b9d7350ede24c4dd63a7291f7e37d Mon Sep 17 00:00:00 2001 From: Alexey Dokuchaev Date: Fri, 23 Jan 2015 07:30:57 +0000 Subject: [PATCH 02/50] Fix usage example in kvprintf(9) and its copy in libstand(3): trailing '\n' in bitfield argument is wrong, as it will be treated as bit 10, causing any code printing >=10 bits with bit 10 on as having a trailing comma. Newline (intended one) should be part of the format string (already present in the examples). Also fix grammar and kill EOL whitespace in comment while here. PR: 195005 Approved by: bdrewery --- lib/libstand/libstand.3 | 2 +- lib/libstand/printf.c | 4 ++-- share/man/man9/printf.9 | 2 +- sys/kern/subr_prf.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/libstand/libstand.3 b/lib/libstand/libstand.3 index b42c8b5bdd7f..42289c1bce41 100644 --- a/lib/libstand/libstand.3 +++ b/lib/libstand/libstand.3 @@ -288,7 +288,7 @@ Thus printf( .Qq reg=%b\en , 3, -.Qq \e10\e2BITTWO\e1BITONE\en +.Qq \e10\e2BITTWO\e1BITONE ); .Ed .Pp diff --git a/lib/libstand/printf.c b/lib/libstand/printf.c index 157b327ead88..fef534165616 100644 --- a/lib/libstand/printf.c +++ b/lib/libstand/printf.c @@ -187,7 +187,7 @@ ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper) * the next characters (up to a control character, i.e. a character <= 32), * give the name of the register. Thus: * - * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n"); + * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE"); * * would produce output: * @@ -500,7 +500,7 @@ reswitch: switch (ch = (u_char)*fmt++) { while (percent < fmt) PCHAR(*percent++); /* - * Since we ignore an formatting argument it is no + * Since we ignore a formatting argument it is no * longer safe to obey the remaining formatting * arguments as the arguments will no longer match * the format specs. diff --git a/share/man/man9/printf.9 b/share/man/man9/printf.9 index 571e7e638c36..84ac822da023 100644 --- a/share/man/man9/printf.9 +++ b/share/man/man9/printf.9 @@ -151,7 +151,7 @@ void printf_test(void) { - printf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en"); + printf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE"); printf("out: %4D\en", "AAAA", ":"); } .Ed diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c index 814e57f47947..cc30de1f645f 100644 --- a/sys/kern/subr_prf.c +++ b/sys/kern/subr_prf.c @@ -598,7 +598,7 @@ ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper) * the next characters (up to a control character, i.e. a character <= 32), * give the name of the register. Thus: * - * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n"); + * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE"); * * would produce output: * @@ -911,7 +911,7 @@ reswitch: switch (ch = (u_char)*fmt++) { while (percent < fmt) PCHAR(*percent++); /* - * Since we ignore a formatting argument it is no + * Since we ignore a formatting argument it is no * longer safe to obey the remaining formatting * arguments as the arguments will no longer match * the format specs. From ec336f0f0c3b5a9383009306a5933de8f4d794a0 Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Fri, 23 Jan 2015 07:36:51 +0000 Subject: [PATCH 03/50] Use relocation-safe methods to determine the sizes of the exception handlers. A "size" symbol with its address set to the length of handler would be shifted forward with all other addresses when relocations are processed. Instead, just note the end and do the subtraction at runtime. --- sys/powerpc/aim/machdep.c | 69 ++++++++++++++++++++--------------- sys/powerpc/aim/trap_subr32.S | 20 +++++----- sys/powerpc/aim/trap_subr64.S | 24 ++++++------ 3 files changed, 61 insertions(+), 52 deletions(-) diff --git a/sys/powerpc/aim/machdep.c b/sys/powerpc/aim/machdep.c index 82a72328d63e..a6d254b3f145 100644 --- a/sys/powerpc/aim/machdep.c +++ b/sys/powerpc/aim/machdep.c @@ -237,14 +237,14 @@ extern void *rfid_patch, *rfi_patch1, *rfi_patch2; extern void *trapcode64; #endif -extern void *rstcode, *rstsize; -extern void *trapcode, *trapsize, *trapcode2; -extern void *slbtrap, *slbtrapsize; -extern void *alitrap, *alisize; -extern void *dsitrap, *dsisize; +extern void *rstcode, *rstcodeend; +extern void *trapcode, *trapcodeend, *trapcode2; +extern void *slbtrap, *slbtrapend; +extern void *alitrap, *aliend; +extern void *dsitrap, *dsiend; extern void *decrint, *decrsize; extern void *extint, *extsize; -extern void *dblow, *dbsize; +extern void *dblow, *dbend; extern void *imisstrap, *imisssize; extern void *dlmisstrap, *dlmisssize; extern void *dsmisstrap, *dsmisssize; @@ -255,7 +255,7 @@ powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offset_t ofentry, void *mdp) struct pcpu *pc; vm_offset_t startkernel, endkernel; void *generictrap; - size_t trap_offset; + size_t trap_offset, trapsize; void *kmdp; char *env; register_t msr, scratch; @@ -513,35 +513,44 @@ powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offset_t ofentry, void *mdp) *((register_t *)TRAP_TOCBASE) = toc; #endif - bcopy(&rstcode, (void *)(EXC_RST + trap_offset), (size_t)&rstsize); + trapsize = (size_t)&trapcodeend - (size_t)&trapcode; + + bcopy(&rstcode, (void *)(EXC_RST + trap_offset), (size_t)&rstcodeend - + (size_t)&rstcode); #ifdef KDB - bcopy(&dblow, (void *)(EXC_MCHK + trap_offset), (size_t)&dbsize); - bcopy(&dblow, (void *)(EXC_PGM + trap_offset), (size_t)&dbsize); - bcopy(&dblow, (void *)(EXC_TRC + trap_offset), (size_t)&dbsize); - bcopy(&dblow, (void *)(EXC_BPT + trap_offset), (size_t)&dbsize); + bcopy(&dblow, (void *)(EXC_MCHK + trap_offset), (size_t)&dbend - + (size_t)&dblow); + bcopy(&dblow, (void *)(EXC_PGM + trap_offset), (size_t)&dbend - + (size_t)&dblow); + bcopy(&dblow, (void *)(EXC_TRC + trap_offset), (size_t)&dbend - + (size_t)&dblow); + bcopy(&dblow, (void *)(EXC_BPT + trap_offset), (size_t)&dbend - + (size_t)&dblow); #else - bcopy(generictrap, (void *)EXC_MCHK, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_PGM, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_TRC, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_BPT, (size_t)&trapsize); + bcopy(generictrap, (void *)EXC_MCHK, trapsize); + bcopy(generictrap, (void *)EXC_PGM, trapsize); + bcopy(generictrap, (void *)EXC_TRC, trapsize); + bcopy(generictrap, (void *)EXC_BPT, trapsize); #endif - bcopy(&alitrap, (void *)(EXC_ALI + trap_offset), (size_t)&alisize); - bcopy(&dsitrap, (void *)(EXC_DSI + trap_offset), (size_t)&dsisize); - bcopy(generictrap, (void *)EXC_ISI, (size_t)&trapsize); + bcopy(&alitrap, (void *)(EXC_ALI + trap_offset), (size_t)&aliend - + (size_t)&alitrap); + bcopy(&dsitrap, (void *)(EXC_DSI + trap_offset), (size_t)&dsitrap - + (size_t)&dsitrap); + bcopy(generictrap, (void *)EXC_ISI, trapsize); #ifdef __powerpc64__ - bcopy(&slbtrap, (void *)EXC_DSE, (size_t)&slbtrapsize); - bcopy(&slbtrap, (void *)EXC_ISE, (size_t)&slbtrapsize); + bcopy(&slbtrap, (void *)EXC_DSE,(size_t)&slbtrapend - (size_t)&slbtrap); + bcopy(&slbtrap, (void *)EXC_ISE,(size_t)&slbtrapend - (size_t)&slbtrap); #endif - bcopy(generictrap, (void *)EXC_EXI, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_FPU, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_DECR, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_SC, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_FPA, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_VEC, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_PERF, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_VECAST_G4, (size_t)&trapsize); - bcopy(generictrap, (void *)EXC_VECAST_G5, (size_t)&trapsize); + bcopy(generictrap, (void *)EXC_EXI, trapsize); + bcopy(generictrap, (void *)EXC_FPU, trapsize); + bcopy(generictrap, (void *)EXC_DECR, trapsize); + bcopy(generictrap, (void *)EXC_SC, trapsize); + bcopy(generictrap, (void *)EXC_FPA, trapsize); + bcopy(generictrap, (void *)EXC_VEC, trapsize); + bcopy(generictrap, (void *)EXC_PERF, trapsize); + bcopy(generictrap, (void *)EXC_VECAST_G4, trapsize); + bcopy(generictrap, (void *)EXC_VECAST_G5, trapsize); #ifndef __powerpc64__ /* G2-specific TLB miss helper handlers */ bcopy(&imisstrap, (void *)EXC_IMISS, (size_t)&imisssize); diff --git a/sys/powerpc/aim/trap_subr32.S b/sys/powerpc/aim/trap_subr32.S index 2aae2a00abbc..7c753b541dda 100644 --- a/sys/powerpc/aim/trap_subr32.S +++ b/sys/powerpc/aim/trap_subr32.S @@ -299,10 +299,10 @@ CNAME(restorebridgesize) = .-CNAME(restorebridge) * not still hanging around in the trap handling region * once the MMU is turned on. */ - .globl CNAME(rstcode), CNAME(rstsize) + .globl CNAME(rstcode), CNAME(rstcodeend) CNAME(rstcode): ba cpu_reset -CNAME(rstsize) = . - CNAME(rstcode) +CNAME(rstcodeend): cpu_reset: bl 1f @@ -339,14 +339,14 @@ cpu_reset: * (except ISI/DSI, ALI, and the interrupts) */ - .globl CNAME(trapcode),CNAME(trapsize) + .globl CNAME(trapcode),CNAME(trapcodeend) CNAME(trapcode): mtsprg1 %r1 /* save SP */ mflr %r1 /* Save the old LR in r1 */ mtsprg2 %r1 /* And then in SPRG2 */ li %r1, 0x20 /* How to get the vector from LR */ bla generictrap /* LR & SPRG3 is exception # */ -CNAME(trapsize) = .-CNAME(trapcode) +CNAME(trapcodeend): /* * 64-bit version of trapcode. Identical, except it calls generictrap64. @@ -362,7 +362,7 @@ CNAME(trapcode64): /* * For ALI: has to save DSISR and DAR */ - .globl CNAME(alitrap),CNAME(alisize) + .globl CNAME(alitrap),CNAME(aliend) CNAME(alitrap): mtsprg1 %r1 /* save SP */ GET_CPUINFO(%r1) @@ -386,7 +386,7 @@ CNAME(alitrap): mfsrr1 %r31 mtcr %r31 bla s_trap -CNAME(alisize) = .-CNAME(alitrap) +CNAME(aliend): /* * G2 specific: instuction TLB miss. @@ -594,7 +594,7 @@ CNAME(dsmisssize) = .-CNAME(dsmisstrap) * Has to handle BAT spills * and standard pagetable spills */ - .globl CNAME(dsitrap),CNAME(dsisize) + .globl CNAME(dsitrap),CNAME(dsiend) CNAME(dsitrap): mtsprg1 %r1 /* save SP */ GET_CPUINFO(%r1) @@ -645,7 +645,7 @@ CNAME(dsitrap): 1: mflr %r28 /* save LR (SP already saved) */ bla disitrap -CNAME(dsisize) = .-CNAME(dsitrap) +CNAME(dsiend): /* * Preamble code for DSI/ISI traps @@ -883,7 +883,7 @@ CNAME(rfi_patch2): /* * In case of KDB we want a separate trap catcher for it */ - .globl CNAME(dblow),CNAME(dbsize) + .globl CNAME(dblow),CNAME(dbend) CNAME(dblow): mtsprg1 %r1 /* save SP */ mtsprg2 %r29 /* save r29 */ @@ -909,5 +909,5 @@ CNAME(dblow): stw %r31,(PC_DBSAVE+CPUSAVE_R31)(%r1) /* free r31 */ mflr %r28 /* save LR */ bla dbtrap -CNAME(dbsize) = .-CNAME(dblow) +CNAME(dbend): #endif /* KDB */ diff --git a/sys/powerpc/aim/trap_subr64.S b/sys/powerpc/aim/trap_subr64.S index a2d5bc5b1b40..de79845eded2 100644 --- a/sys/powerpc/aim/trap_subr64.S +++ b/sys/powerpc/aim/trap_subr64.S @@ -294,7 +294,7 @@ dtrace_invop_calltrap_addr: * not still hanging around in the trap handling region * once the MMU is turned on. */ - .globl CNAME(rstcode), CNAME(rstsize) + .globl CNAME(rstcode), CNAME(rstcodeend) CNAME(rstcode): /* Explicitly set MSR[SF] */ mfmsr %r9 @@ -309,7 +309,7 @@ CNAME(rstcode): mtlr %r9 blr -CNAME(rstsize) = . - CNAME(rstcode) +CNAME(rstcodeend): cpu_reset: GET_TOCBASE(%r2) @@ -350,7 +350,7 @@ cpu_reset: * (except ISI/DSI, ALI, and the interrupts). Has to fit in 8 instructions! */ - .globl CNAME(trapcode),CNAME(trapsize) + .globl CNAME(trapcode),CNAME(trapcodeend) .p2align 3 CNAME(trapcode): mtsprg1 %r1 /* save SP */ @@ -361,7 +361,7 @@ CNAME(trapcode): mtlr %r1 li %r1, 0xA0 /* How to get the vector from LR */ blrl /* Branch to generictrap */ -CNAME(trapsize) = .-CNAME(trapcode) +CNAME(trapcodeend): /* * For SLB misses: do special things for the kernel @@ -369,7 +369,7 @@ CNAME(trapsize) = .-CNAME(trapcode) * Note: SPRG1 is always safe to overwrite any time the MMU is on, which is * the only time this can be called. */ - .globl CNAME(slbtrap),CNAME(slbtrapsize) + .globl CNAME(slbtrap),CNAME(slbtrapend) .p2align 3 CNAME(slbtrap): mtsprg1 %r1 /* save SP */ @@ -404,7 +404,7 @@ CNAME(slbtrap): mtlr %r1 GET_CPUINFO(%r1) blrl /* 124 bytes -- 4 to spare */ -CNAME(slbtrapsize) = .-CNAME(slbtrap) +CNAME(slbtrapend): kern_slbtrap: std %r2,(PC_SLBSAVE+136)(%r1) /* old LR */ @@ -525,7 +525,7 @@ kern_slbtrap: /* * For ALI: has to save DSISR and DAR */ - .globl CNAME(alitrap),CNAME(alisize) + .globl CNAME(alitrap),CNAME(aliend) CNAME(alitrap): mtsprg1 %r1 /* save SP */ GET_CPUINFO(%r1) @@ -560,13 +560,13 @@ CNAME(alitrap): mfsrr1 %r31 mtcr %r31 blrl -CNAME(alisize) = .-CNAME(alitrap) +CNAME(aliend): /* * Similar to the above for DSI * Has to handle standard pagetable spills */ - .globl CNAME(dsitrap),CNAME(dsisize) + .globl CNAME(dsitrap),CNAME(dsiend) CNAME(dsitrap): mtsprg1 %r1 /* save SP */ GET_CPUINFO(%r1) @@ -587,7 +587,7 @@ CNAME(dsitrap): ld %r1,0(%r1) mtlr %r1 blrl /* Branch to generictrap */ -CNAME(dsisize) = .-CNAME(dsitrap) +CNAME(dsiend): /* * Preamble code for DSI/ISI traps @@ -830,7 +830,7 @@ dbleave: /* * In case of KDB we want a separate trap catcher for it */ - .globl CNAME(dblow),CNAME(dbsize) + .globl CNAME(dblow),CNAME(dbend) CNAME(dblow): mtsprg1 %r1 /* save SP */ mtsprg2 %r29 /* save r29 */ @@ -869,5 +869,5 @@ CNAME(dblow): ld %r1,0(%r1) mtlr %r1 blrl /* Branch to generictrap */ -CNAME(dbsize) = .-CNAME(dblow) +CNAME(dbend): #endif /* KDB */ From ffc610b221e853e3246be960bc9007de751ccf7e Mon Sep 17 00:00:00 2001 From: "Andrey V. Elsukov" Date: Fri, 23 Jan 2015 13:26:35 +0000 Subject: [PATCH 04/50] After r270929 RAW IP code assumes that all IP fields are in network byte order. Fix ping(8) to pass an IP header with converted ip_off and ip_len fields, when IP_HDRINCL socket option used. --- sbin/ping/ping.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c index aeb301430fb6..f24ecdeea0c9 100644 --- a/sbin/ping/ping.c +++ b/sbin/ping/ping.c @@ -713,7 +713,7 @@ main(int argc, char *const *argv) ip->ip_hl = sizeof(struct ip) >> 2; ip->ip_tos = tos; ip->ip_id = 0; - ip->ip_off = df ? IP_DF : 0; + ip->ip_off = htons(df ? IP_DF : 0); ip->ip_ttl = ttl; ip->ip_p = IPPROTO_ICMP; ip->ip_src.s_addr = source ? sock_in.sin_addr.s_addr : INADDR_ANY; @@ -1078,7 +1078,7 @@ pinger(void) if (options & F_HDRINCL) { cc += sizeof(struct ip); ip = (struct ip *)outpackhdr; - ip->ip_len = cc; + ip->ip_len = htons(cc); ip->ip_sum = in_cksum((u_short *)outpackhdr, cc); packet = outpackhdr; } From 369a67085766126543941e688dc91ccff073d8ca Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 14:28:12 +0000 Subject: [PATCH 05/50] When a CARP state change is caused by an ifconfig request, log it accordingly. Suggested by: glebius MFC after: 1 week MFC with: 277530 --- sys/netinet/ip_carp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index 5c449c0ddd56..b8881044f16d 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -1702,12 +1702,14 @@ carp_ioctl(struct ifreq *ifr, u_long cmd, struct thread *td) switch (carpr.carpr_state) { case BACKUP: callout_stop(&sc->sc_ad_tmo); - carp_set_state(sc, BACKUP, "SIOCSVH"); + carp_set_state(sc, BACKUP, + "user requested via ifconfig"); carp_setrun(sc, 0); carp_delroute(sc); break; case MASTER: - carp_master_down_locked(sc, "SIOCSVH"); + carp_master_down_locked(sc, + "user requested via ifconfig"); break; default: break; From bb269f3ae49724b7b1e550d6b005b152ed10d360 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 14:30:24 +0000 Subject: [PATCH 06/50] Log hardware interface up/down as "hardware" rather than just "hw". Suggested by: glebius MFC after: 1 week MFC with: 277530 --- sys/netinet/ip_carp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index b8881044f16d..524ebd8443bb 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -2001,13 +2001,13 @@ carp_sc_state(struct carp_softc *sc) #ifdef INET6 callout_stop(&sc->sc_md6_tmo); #endif - carp_set_state(sc, INIT, "hw interface down"); + carp_set_state(sc, INIT, "hardware interface down"); carp_setrun(sc, 0); if (!sc->sc_suppress) carp_demote_adj(V_carp_ifdown_adj, "interface down"); sc->sc_suppress = 1; } else { - carp_set_state(sc, INIT, "hw interface up"); + carp_set_state(sc, INIT, "hardware interface up"); carp_setrun(sc, 0); if (sc->sc_suppress) carp_demote_adj(-V_carp_ifdown_adj, "interface up"); From 128236c022a441231caf31be9fff4f0290d67ba1 Mon Sep 17 00:00:00 2001 From: Kevin Lo Date: Fri, 23 Jan 2015 15:14:30 +0000 Subject: [PATCH 07/50] Remove break after return. --- sys/dev/agp/agp_nvidia.c | 10 +++++----- sys/dev/cx/cxddk.c | 6 +++--- sys/dev/dc/if_dc.c | 5 ----- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/sys/dev/agp/agp_nvidia.c b/sys/dev/agp/agp_nvidia.c index bb153f9cc49c..a0098f0252ec 100644 --- a/sys/dev/agp/agp_nvidia.c +++ b/sys/dev/agp/agp_nvidia.c @@ -274,11 +274,11 @@ static u_int32_t agp_nvidia_get_aperture(device_t dev) { switch (pci_read_config(dev, AGP_NVIDIA_0_APSIZE, 1) & 0x0f) { - case 0: return (512 * 1024 * 1024); break; - case 8: return (256 * 1024 * 1024); break; - case 12: return (128 * 1024 * 1024); break; - case 14: return (64 * 1024 * 1024); break; - case 15: return (32 * 1024 * 1024); break; + case 0: return (512 * 1024 * 1024); + case 8: return (256 * 1024 * 1024); + case 12: return (128 * 1024 * 1024); + case 14: return (64 * 1024 * 1024); + case 15: return (32 * 1024 * 1024); default: device_printf(dev, "Invalid aperture setting 0x%x\n", pci_read_config(dev, AGP_NVIDIA_0_APSIZE, 1)); diff --git a/sys/dev/cx/cxddk.c b/sys/dev/cx/cxddk.c index bbcc904051e8..94780fb3591f 100644 --- a/sys/dev/cx/cxddk.c +++ b/sys/dev/cx/cxddk.c @@ -875,9 +875,9 @@ int cx_get_port (cx_chan_t *c) if (iftype) switch (c->type) { - case T_UNIV_V35: return 1; break; - case T_UNIV_RS449: return 2; break; - default: return -1; break; + case T_UNIV_V35: return 1; + case T_UNIV_RS449: return 2; + default: return -1; } else return 0; diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index 9458a4444307..421e326d256c 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -671,20 +671,16 @@ dc_miibus_readreg(device_t dev, int phy, int reg) * code think there's a PHY here. */ return (BMSR_MEDIAMASK); - break; case MII_PHYIDR1: if (DC_IS_PNIC(sc)) return (DC_VENDORID_LO); return (DC_VENDORID_DEC); - break; case MII_PHYIDR2: if (DC_IS_PNIC(sc)) return (DC_DEVICEID_82C168); return (DC_DEVICEID_21143); - break; default: return (0); - break; } } else return (0); @@ -748,7 +744,6 @@ dc_miibus_readreg(device_t dev, int phy, int reg) device_printf(dev, "phy_read: bad phy register %x\n", reg); return (0); - break; } rval = CSR_READ_4(sc, phy_reg) & 0x0000FFFF; From abf607ed8f5d5f5981be326d7173d48c185d8ef3 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 15:55:03 +0000 Subject: [PATCH 08/50] Print transfer times for read, write, & overall independently. Round up calculated values for iops and average time per io to avoid a shifting display if there are 1000+ (or even 10000+) iops, or if an average time per io column is 1000+ ms. Reviewed by: ken MFC after: 1 week Sponsored by: Spectra Logic MFSpectraBSD: 1089947 on 2014/09/26 1093625 on 2014/09/29 1093650 on 2014/09/29 1095662 on 2014/10/09 --- usr.sbin/iostat/iostat.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/usr.sbin/iostat/iostat.c b/usr.sbin/iostat/iostat.c index f566f39036b3..195e59c540ae 100644 --- a/usr.sbin/iostat/iostat.c +++ b/usr.sbin/iostat/iostat.c @@ -726,15 +726,17 @@ static void devstats(int perf_select, long double etime, int havelast) { int dn; - long double transfers_per_second, transfers_per_second_read, transfers_per_second_write; - long double kb_per_transfer, mb_per_second, mb_per_second_read, mb_per_second_write; + long double transfers_per_second, transfers_per_second_read; + long double transfers_per_second_write; + long double kb_per_transfer, mb_per_second, mb_per_second_read; + long double mb_per_second_write; u_int64_t total_bytes, total_transfers, total_blocks; u_int64_t total_bytes_read, total_transfers_read; u_int64_t total_bytes_write, total_transfers_write; long double busy_pct, busy_time; u_int64_t queue_len; - long double total_mb; - long double blocks_per_second, ms_per_transaction, total_duration; + long double total_mb, blocks_per_second, total_duration; + long double ms_per_other, ms_per_read, ms_per_write, ms_per_transaction; int firstline = 1; char *devname; @@ -746,8 +748,8 @@ devstats(int perf_select, long double etime, int havelast) printf(" cpu "); printf("\n"); if (Iflag == 0) { - printf("device r/s w/s kr/s kw/s qlen " - "svc_t %%b "); + printf("device r/s w/s kr/s kw/s " + " ms/r ms/w ms/o ms/t qlen %%b "); } else { printf("device r/i w/i kr/i" " kw/i qlen tsvc_t/i sb/i "); @@ -786,6 +788,9 @@ devstats(int perf_select, long double etime, int havelast) DSM_MB_PER_SECOND_WRITE, &mb_per_second_write, DSM_BLOCKS_PER_SECOND, &blocks_per_second, DSM_MS_PER_TRANSACTION, &ms_per_transaction, + DSM_MS_PER_TRANSACTION_READ, &ms_per_read, + DSM_MS_PER_TRANSACTION_WRITE, &ms_per_write, + DSM_MS_PER_TRANSACTION_OTHER, &ms_per_other, DSM_BUSY_PCT, &busy_pct, DSM_QUEUE_LENGTH, &queue_len, DSM_TOTAL_DURATION, &total_duration, @@ -820,13 +825,18 @@ devstats(int perf_select, long double etime, int havelast) mb_per_second_write > ((long double).0005)/1024 || busy_pct > 0.5) { if (Iflag == 0) - printf("%-8.8s %5.1Lf %5.1Lf %7.1Lf %7.1Lf %4" PRIu64 " %5.1Lf %3.0Lf ", - devname, transfers_per_second_read, - transfers_per_second_write, + printf("%-8.8s %5d %5d %8.1Lf " + "%8.1Lf %5d %5d %5d %5d " + "%4" PRIu64 " %3.0Lf ", + devname, + (int)transfers_per_second_read, + (int)transfers_per_second_write, mb_per_second_read * 1024, mb_per_second_write * 1024, - queue_len, - ms_per_transaction, busy_pct); + (int)ms_per_read, (int)ms_per_write, + (int)ms_per_other, + (int)ms_per_transaction, + queue_len, busy_pct); else printf("%-8.8s %11.1Lf %11.1Lf " "%12.1Lf %12.1Lf %4" PRIu64 From ca71b908cc363f80f9080974eeafdcbf9465bf69 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 16:03:02 +0000 Subject: [PATCH 09/50] Allow lists for "nooption" and "nooptions" keywords. usr.sbin/config/config.y According to config(5), the "device", "devices", "nodevice", "nodevices", "option", "options", "nooption", and "nooptions" keywords can all take a comma-separated list of values. However, the yacc code did not allow lists for "nooption" and "nooptions", only single values. This commit fixes the yacc code to allow comma separated values for all the above keywords. Submitted by: asomers MFC after: 1 week Sponsored by: Spectra Logic MFSpectraBSD: 1095296 on 2014/10/07 --- usr.sbin/config/config.y | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/usr.sbin/config/config.y b/usr.sbin/config/config.y index 81329d922afd..c7198a027bae 100644 --- a/usr.sbin/config/config.y +++ b/usr.sbin/config/config.y @@ -178,7 +178,7 @@ Config_spec: } | OPTIONS Opt_list | - NOOPTION Save_id { rmopt_schedule(&opt, $2); } | + NOOPTION NoOpt_list | MAKEOPTIONS Mkopt_list | NOMAKEOPTION Save_id { rmopt_schedule(&mkopt, $2); } | @@ -225,6 +225,11 @@ Opt_list: Option ; +NoOpt_list: + NoOpt_list COMMA NoOption + | + NoOption + ; Option: Save_id { newopt(&opt, $1, NULL, 0); @@ -236,6 +241,11 @@ Option: newopt(&opt, $1, $3, 0); } ; +NoOption: + Save_id { + rmopt_schedule(&opt, $1); + }; + Opt_value: ID { $$ = $1; } | NUMBER { From 9e8ab8f7310220748d2d759cb7fc7ced2dc0617d Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Fri, 23 Jan 2015 16:05:47 +0000 Subject: [PATCH 10/50] Add pinctrl driver support for the encoded input register config words that the linux guys made up on the fly (but didn't document) last August. This type of encoded config now appears in the imx6 fdt data. --- sys/arm/freescale/imx/imx_iomux.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/sys/arm/freescale/imx/imx_iomux.c b/sys/arm/freescale/imx/imx_iomux.c index 7786b76e0a4f..d1ac6cbc2657 100644 --- a/sys/arm/freescale/imx/imx_iomux.c +++ b/sys/arm/freescale/imx/imx_iomux.c @@ -117,10 +117,36 @@ WR4(struct iomux_softc *sc, bus_size_t off, uint32_t val) bus_write_4(sc->mem_res, off, val); } +static void +iomux_configure_input(struct iomux_softc *sc, uint32_t reg, uint32_t val) +{ + u_int select, mask, shift, width; + + /* If register and value are zero, there is nothing to configure. */ + if (reg == 0 && val == 0) + return; + + /* + * If the config value has 0xff in the high byte it is encoded: + * 31 23 15 7 0 + * | 0xff | shift | width | select | + * We need to mask out the old select value and OR in the new, using a + * mask of the given width and shifting the values up by shift. + */ + if ((val & 0xff000000) == 0xff000000) { + select = val & 0x000000ff; + width = (val & 0x0000ff00) >> 8; + shift = (val & 0x00ff0000) >> 16; + mask = ((1u << width) - 1) << shift; + val = (RD4(sc, reg) & ~mask) | (select << shift); + } + WR4(sc, reg, val); +} + static int iomux_configure_pins(device_t dev, phandle_t cfgxref) { - struct iomux_softc * sc; + struct iomux_softc *sc; struct pincfg *cfgtuples, *cfg; phandle_t cfgnode; int i, ntuples; @@ -137,8 +163,7 @@ iomux_configure_pins(device_t dev, phandle_t cfgxref) for (i = 0, cfg = cfgtuples; i < ntuples; i++, cfg++) { sion = (cfg->padconf_val & PADCONF_SION) ? PADMUX_SION : 0; WR4(sc, cfg->mux_reg, cfg->mux_val | sion); - if (cfg->input_reg != 0) - WR4(sc, cfg->input_reg, cfg->input_val); + iomux_configure_input(sc, cfg->input_reg, cfg->input_val); if ((cfg->padconf_val & PADCONF_NONE) == 0) WR4(sc, cfg->padconf_reg, cfg->padconf_val); if (bootverbose) { From 961a5dae5c11523a2bd41baee9416eed11073ca0 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 16:15:55 +0000 Subject: [PATCH 11/50] Make "vmstat -i" respect the -c and -i options together. Submitted by: asomers MFC after: 1 week Sponsored by: Spectra Logic MFSpectraBSD: 1066735 on 2014/06/04 --- usr.bin/vmstat/vmstat.c | 149 +++++++++++++++++++++++++++++----------- 1 file changed, 110 insertions(+), 39 deletions(-) diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c index 760dce835932..a54a0dd45b20 100644 --- a/usr.bin/vmstat/vmstat.c +++ b/usr.bin/vmstat/vmstat.c @@ -148,7 +148,7 @@ static void cpustats(void); static void pcpustats(int, u_long, int); static void devstats(void); static void doforkst(void); -static void dointr(void); +static void dointr(unsigned int, int); static void dosum(void); static void dovmstat(unsigned int, int); static void domemstat_malloc(void); @@ -325,7 +325,7 @@ main(int argc, char *argv[]) dotimes(); #endif if (todo & INTRSTAT) - dointr(); + dointr(interval, reps); if (todo & VMSTAT) dovmstat(interval, reps); exit(0); @@ -1165,61 +1165,132 @@ pcpustats(int ncpus, u_long cpumask, int maxid) } } -static void -dointr(void) +static unsigned int +read_intrcnts(unsigned long **intrcnts) { - unsigned long *intrcnt, uptime; - uint64_t inttotal; - size_t clen, inamlen, intrcntlen, istrnamlen; - unsigned int i, nintr; - char *intrname, *tintrname; + size_t intrcntlen; - uptime = getuptime(); if (kd != NULL) { kread(X_SINTRCNT, &intrcntlen, sizeof(intrcntlen)); - kread(X_SINTRNAMES, &inamlen, sizeof(inamlen)); - if ((intrcnt = malloc(intrcntlen)) == NULL || - (intrname = malloc(inamlen)) == NULL) + if ((*intrcnts = malloc(intrcntlen)) == NULL) err(1, "malloc()"); - kread(X_INTRCNT, intrcnt, intrcntlen); - kread(X_INTRNAMES, intrname, inamlen); + kread(X_INTRCNT, *intrcnts, intrcntlen); } else { - for (intrcnt = NULL, intrcntlen = 1024; ; intrcntlen *= 2) { - if ((intrcnt = reallocf(intrcnt, intrcntlen)) == NULL) + for (*intrcnts = NULL, intrcntlen = 1024; ; intrcntlen *= 2) { + *intrcnts = reallocf(*intrcnts, intrcntlen); + if (*intrcnts == NULL) err(1, "reallocf()"); if (mysysctl("hw.intrcnt", - intrcnt, &intrcntlen, NULL, 0) == 0) - break; - } - for (intrname = NULL, inamlen = 1024; ; inamlen *= 2) { - if ((intrname = reallocf(intrname, inamlen)) == NULL) - err(1, "reallocf()"); - if (mysysctl("hw.intrnames", - intrname, &inamlen, NULL, 0) == 0) + *intrcnts, &intrcntlen, NULL, 0) == 0) break; } } - nintr = intrcntlen / sizeof(unsigned long); - tintrname = intrname; + + return (intrcntlen / sizeof(unsigned long)); +} + +static void +print_intrcnts(unsigned long *intrcnts, unsigned long *old_intrcnts, + char *intrnames, unsigned int nintr, + size_t istrnamlen, unsigned long long period) +{ + unsigned long *intrcnt, *old_intrcnt; + uint64_t inttotal, old_inttotal, total_count, total_rate; + char* intrname; + unsigned int i; + + inttotal = 0; + old_inttotal = 0; + intrname = intrnames; + for (i = 0, intrcnt=intrcnts, old_intrcnt=old_intrcnts; i < nintr; i++) { + if (intrname[0] != '\0' && (*intrcnt != 0 || aflag)) { + unsigned long count, rate; + + count = *intrcnt - *old_intrcnt; + rate = (count * 1000 + period/2) / period; + (void)printf("%-*s %20lu %10lu\n", (int)istrnamlen, + intrname, count, rate); + } + intrname += strlen(intrname) + 1; + inttotal += *intrcnt++; + old_inttotal += *old_intrcnt++; + } + total_count = inttotal - old_inttotal; + total_rate = (total_count * 1000 + period/2) / period; + (void)printf("%-*s %20" PRIu64 " %10" PRIu64 "\n", (int)istrnamlen, + "Total", total_count, total_rate); +} + +static void +dointr(unsigned int interval, int reps) +{ + unsigned long *intrcnts; + unsigned long long uptime, period; + unsigned long *old_intrcnts = NULL; + size_t clen, inamlen, istrnamlen; + unsigned int rep; + char *intrnames, *intrname; + + uptime = getuptime(); + + /* Get the names of each interrupt source */ + if (kd != NULL) { + kread(X_SINTRNAMES, &inamlen, sizeof(inamlen)); + if ((intrnames = malloc(inamlen)) == NULL) + err(1, "malloc()"); + kread(X_INTRNAMES, intrnames, inamlen); + } else { + for (intrnames = NULL, inamlen = 1024; ; inamlen *= 2) { + if ((intrnames = reallocf(intrnames, inamlen)) == NULL) + err(1, "reallocf()"); + if (mysysctl("hw.intrnames", + intrnames, &inamlen, NULL, 0) == 0) + break; + } + } + + /* Determine the length of the longest interrupt name */ + intrname = intrnames; istrnamlen = strlen("interrupt"); - for (i = 0; i < nintr; i++) { - clen = strlen(tintrname); + while(*intrname != '\0') { + clen = strlen(intrname); if (clen > istrnamlen) istrnamlen = clen; - tintrname += clen + 1; + intrname += strlen(intrname) + 1; } (void)printf("%-*s %20s %10s\n", (int)istrnamlen, "interrupt", "total", "rate"); - inttotal = 0; - for (i = 0; i < nintr; i++) { - if (intrname[0] != '\0' && (*intrcnt != 0 || aflag)) - (void)printf("%-*s %20lu %10lu\n", (int)istrnamlen, - intrname, *intrcnt, *intrcnt / uptime); - intrname += strlen(intrname) + 1; - inttotal += *intrcnt++; + + /* + * Loop reps times printing differential interrupt counts. If reps is + * zero, then run just once, printing total counts + */ + period = uptime * 1000; + while(1) { + char *intrname; + unsigned int nintr; + + nintr = read_intrcnts(&intrcnts); + /* + * Initialize old_intrcnts to 0 for the first pass, so + * print_intrcnts will print total interrupts since boot + */ + if (old_intrcnts == NULL) { + old_intrcnts = calloc(nintr, sizeof(unsigned long)); + if (old_intrcnts == NULL) + err(1, "calloc()"); + } + + print_intrcnts(intrcnts, old_intrcnts, intrnames, nintr, + istrnamlen, period); + + free(old_intrcnts); + old_intrcnts = intrcnts; + if (reps >= 0 && --reps <= 0) + break; + usleep(interval * 1000); + period = interval; } - (void)printf("%-*s %20" PRIu64 " %10" PRIu64 "\n", (int)istrnamlen, - "Total", inttotal, inttotal / uptime); } static void From 157b158ea9e4a289663c000d02ea8037e3fd717f Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 16:18:39 +0000 Subject: [PATCH 12/50] Use CLOCK_UPTIME to get the uptime instead of CLOCK_MONOTONIC. Submitted by: asomers MFC after: 1 week Sponsored by: Spectra Logic MFSpectraBSD: 1066740 on 2014/06/04 --- usr.bin/vmstat/vmstat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c index a54a0dd45b20..925967c7f431 100644 --- a/usr.bin/vmstat/vmstat.c +++ b/usr.bin/vmstat/vmstat.c @@ -411,7 +411,7 @@ getuptime(void) { struct timespec sp; - (void)clock_gettime(CLOCK_MONOTONIC, &sp); + (void)clock_gettime(CLOCK_UPTIME, &sp); return(sp.tv_sec); } From d0fde85e656f7e841972e5c8ba2e3868c974cdf3 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 16:21:31 +0000 Subject: [PATCH 13/50] Use clock_gettime to measure the time that we spent asleep during "vmstat -i" instead of assuming it's what we asked for. Submitted by: asomers MFC after: 1 week Sponsored by: Spectra Logic MFSpectraBSD: 1066751 on 2014/06/04 --- usr.bin/vmstat/vmstat.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c index 925967c7f431..9049e442227f 100644 --- a/usr.bin/vmstat/vmstat.c +++ b/usr.bin/vmstat/vmstat.c @@ -163,7 +163,7 @@ static void printhdr(int, u_long); static void usage(void); static long pct(long, long); -static long getuptime(void); +static long long getuptime(void); static char **getdrivedata(char **); @@ -406,14 +406,15 @@ getdrivedata(char **argv) return(argv); } -static long +/* Return system uptime in nanoseconds */ +static long long getuptime(void) { struct timespec sp; (void)clock_gettime(CLOCK_UPTIME, &sp); - return(sp.tv_sec); + return((long long)sp.tv_sec * 1000000000LL + sp.tv_nsec); } static void @@ -654,7 +655,7 @@ dovmstat(unsigned int interval, int reps) u_long cpumask; int rate_adj; - uptime = getuptime(); + uptime = getuptime() / 1000000000LL; halfuptime = uptime / 2; rate_adj = 1; ncpus = 1; @@ -1192,7 +1193,7 @@ read_intrcnts(unsigned long **intrcnts) static void print_intrcnts(unsigned long *intrcnts, unsigned long *old_intrcnts, char *intrnames, unsigned int nintr, - size_t istrnamlen, unsigned long long period) + size_t istrnamlen, long long period_ms) { unsigned long *intrcnt, *old_intrcnt; uint64_t inttotal, old_inttotal, total_count, total_rate; @@ -1207,7 +1208,7 @@ print_intrcnts(unsigned long *intrcnts, unsigned long *old_intrcnts, unsigned long count, rate; count = *intrcnt - *old_intrcnt; - rate = (count * 1000 + period/2) / period; + rate = (count * 1000 + period_ms / 2) / period_ms; (void)printf("%-*s %20lu %10lu\n", (int)istrnamlen, intrname, count, rate); } @@ -1216,7 +1217,7 @@ print_intrcnts(unsigned long *intrcnts, unsigned long *old_intrcnts, old_inttotal += *old_intrcnt++; } total_count = inttotal - old_inttotal; - total_rate = (total_count * 1000 + period/2) / period; + total_rate = (total_count * 1000 + period_ms / 2) / period_ms; (void)printf("%-*s %20" PRIu64 " %10" PRIu64 "\n", (int)istrnamlen, "Total", total_count, total_rate); } @@ -1225,10 +1226,9 @@ static void dointr(unsigned int interval, int reps) { unsigned long *intrcnts; - unsigned long long uptime, period; + long long uptime, period_ms; unsigned long *old_intrcnts = NULL; size_t clen, inamlen, istrnamlen; - unsigned int rep; char *intrnames, *intrname; uptime = getuptime(); @@ -1265,10 +1265,10 @@ dointr(unsigned int interval, int reps) * Loop reps times printing differential interrupt counts. If reps is * zero, then run just once, printing total counts */ - period = uptime * 1000; + period_ms = uptime / 1000000; while(1) { - char *intrname; unsigned int nintr; + long long old_uptime; nintr = read_intrcnts(&intrcnts); /* @@ -1282,14 +1282,16 @@ dointr(unsigned int interval, int reps) } print_intrcnts(intrcnts, old_intrcnts, intrnames, nintr, - istrnamlen, period); + istrnamlen, period_ms); free(old_intrcnts); old_intrcnts = intrcnts; if (reps >= 0 && --reps <= 0) break; usleep(interval * 1000); - period = interval; + old_uptime = uptime; + uptime = getuptime(); + period_ms = (uptime - old_uptime) / 1000000; } } From 4552fccb4b3e019ad21364969278b11a04f52542 Mon Sep 17 00:00:00 2001 From: Jung-uk Kim Date: Fri, 23 Jan 2015 18:12:44 +0000 Subject: [PATCH 14/50] Revert r216942. This commit was premature and caused too many complaints. PR: 162859 MFC after: 3 days --- sys/dev/acpica/acpi_ec.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/sys/dev/acpica/acpi_ec.c b/sys/dev/acpica/acpi_ec.c index 6537e4062b4d..2261b355d9f6 100644 --- a/sys/dev/acpica/acpi_ec.c +++ b/sys/dev/acpica/acpi_ec.c @@ -620,7 +620,7 @@ EcGpeQueryHandler(void *Context) struct acpi_ec_softc *sc = (struct acpi_ec_softc *)Context; UINT8 Data; ACPI_STATUS Status; - int retry, sci_enqueued; + int retry; char qxx[5]; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); @@ -641,7 +641,6 @@ EcGpeQueryHandler(void *Context) * that may arise from running the query from causing another query * to be queued, we clear the pending flag only after running it. */ - sci_enqueued = sc->ec_sci_pend; for (retry = 0; retry < 2; retry++) { Status = EcCommand(sc, EC_COMMAND_QUERY); if (ACPI_SUCCESS(Status)) @@ -681,14 +680,6 @@ EcGpeQueryHandler(void *Context) device_printf(sc->ec_dev, "evaluation of query method %s failed: %s\n", qxx, AcpiFormatException(Status)); } - - /* Reenable runtime GPE if its execution was deferred. */ - if (sci_enqueued) { - Status = AcpiFinishGpe(sc->ec_gpehandle, sc->ec_gpebit); - if (ACPI_FAILURE(Status)) - device_printf(sc->ec_dev, "reenabling runtime GPE failed: %s\n", - AcpiFormatException(Status)); - } } /* @@ -722,10 +713,9 @@ EcGpeHandler(ACPI_HANDLE GpeDevice, UINT32 GpeNumber, void *Context) if ((EcStatus & EC_EVENT_SCI) && !sc->ec_sci_pend) { CTR0(KTR_ACPI, "ec gpe queueing query handler"); Status = AcpiOsExecute(OSL_GPE_HANDLER, EcGpeQueryHandler, Context); - if (ACPI_SUCCESS(Status)) { + if (ACPI_SUCCESS(Status)) sc->ec_sci_pend = TRUE; - return (0); - } else + else printf("EcGpeHandler: queuing GPE query handler failed\n"); } return (ACPI_REENABLE_GPE); From ae1ef64fe4714d164bfc85b64625db89bd63d2c3 Mon Sep 17 00:00:00 2001 From: Jung-uk Kim Date: Fri, 23 Jan 2015 18:55:04 +0000 Subject: [PATCH 15/50] Simplify retry loops. No functional change. --- sys/dev/acpica/acpi_ec.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/sys/dev/acpica/acpi_ec.c b/sys/dev/acpica/acpi_ec.c index 2261b355d9f6..8a8cb6ea4f3a 100644 --- a/sys/dev/acpica/acpi_ec.c +++ b/sys/dev/acpica/acpi_ec.c @@ -645,10 +645,8 @@ EcGpeQueryHandler(void *Context) Status = EcCommand(sc, EC_COMMAND_QUERY); if (ACPI_SUCCESS(Status)) break; - if (ACPI_SUCCESS(EcCheckStatus(sc, "retr_check", + if (ACPI_FAILURE(EcCheckStatus(sc, "retr_check", EC_EVENT_INPUT_BUFFER_EMPTY))) - continue; - else break; } sc->ec_sci_pend = FALSE; @@ -963,15 +961,13 @@ EcRead(struct acpi_ec_softc *sc, UINT8 Address, UINT8 *Data) gen_count = sc->ec_gencount; EC_SET_DATA(sc, Address); status = EcWaitEvent(sc, EC_EVENT_OUTPUT_BUFFER_FULL, gen_count); - if (ACPI_FAILURE(status)) { - if (ACPI_SUCCESS(EcCheckStatus(sc, "retr_check", - EC_EVENT_INPUT_BUFFER_EMPTY))) - continue; - else - break; + if (ACPI_SUCCESS(status)) { + *Data = EC_GET_DATA(sc); + return (AE_OK); } - *Data = EC_GET_DATA(sc); - return (AE_OK); + if (ACPI_FAILURE(EcCheckStatus(sc, "retr_check", + EC_EVENT_INPUT_BUFFER_EMPTY))) + break; } device_printf(sc->ec_dev, "EcRead: failed waiting to get data\n"); return (status); From c14e0e5390eff621dc857e82e5a7b294c00614bb Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Fri, 23 Jan 2015 19:33:03 +0000 Subject: [PATCH 16/50] Document r276881, libedit UTF-8 support. Sponsored by: The FreeBSD Foundation --- release/doc/en_US.ISO8859-1/relnotes/article.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release/doc/en_US.ISO8859-1/relnotes/article.xml b/release/doc/en_US.ISO8859-1/relnotes/article.xml index 4a5b4d6d28d4..1522f61da1ba 100644 --- a/release/doc/en_US.ISO8859-1/relnotes/article.xml +++ b/release/doc/en_US.ISO8859-1/relnotes/article.xml @@ -791,6 +791,11 @@ strings were switched to the versions from the ELF Tool Chain project. + The libedit library + has been updated to include UTF-8 support, + adding UTF-8 support to the &man.sh.1; + shell. + OpenSSL has been updated to version 1.0.1l. From 2950933a5a5b02c8cd3676b7c5ca1bd81b628dc9 Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Fri, 23 Jan 2015 19:33:05 +0000 Subject: [PATCH 17/50] Document r277166, ptrace(2) Altivec register support. Sponsored by: The FreeBSD Foundation --- release/doc/en_US.ISO8859-1/relnotes/article.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/release/doc/en_US.ISO8859-1/relnotes/article.xml b/release/doc/en_US.ISO8859-1/relnotes/article.xml index 1522f61da1ba..ac30f3b00a06 100644 --- a/release/doc/en_US.ISO8859-1/relnotes/article.xml +++ b/release/doc/en_US.ISO8859-1/relnotes/article.xml @@ -691,6 +691,10 @@ has been updated to support UTF-8, which additionally provides unicode support to &man.sh.1;. + The &man.ptrace.2; system + call has been updated include support for Altivec registers on + &os;/&arch.powerpc;. + <acronym>ABI</acronym> Compatibility From ee21c8b77afe9b487d16b2ad8987afb9f2c0de45 Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Fri, 23 Jan 2015 19:33:08 +0000 Subject: [PATCH 18/50] Document r277458, support for cloud hosting providers added to the Release Engineering build tools. Sponsored by: The FreeBSD Foundation --- release/doc/en_US.ISO8859-1/relnotes/article.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/release/doc/en_US.ISO8859-1/relnotes/article.xml b/release/doc/en_US.ISO8859-1/relnotes/article.xml index ac30f3b00a06..756e74a8081e 100644 --- a/release/doc/en_US.ISO8859-1/relnotes/article.xml +++ b/release/doc/en_US.ISO8859-1/relnotes/article.xml @@ -813,7 +813,10 @@ Release Engineering and Integration -   + The + Release Engineering build tools have been updated to include + support for producing virtual machine disk images for various + cloud hosting providers. From ade9ba645590607ac91b716a5b343ccfdf1e4e7d Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Fri, 23 Jan 2015 19:33:46 +0000 Subject: [PATCH 19/50] Update the latest revision. Sponsored by: The FreeBSD Foundation --- release/doc/en_US.ISO8859-1/relnotes/article.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/doc/en_US.ISO8859-1/relnotes/article.xml b/release/doc/en_US.ISO8859-1/relnotes/article.xml index 756e74a8081e..e0625f302c6e 100644 --- a/release/doc/en_US.ISO8859-1/relnotes/article.xml +++ b/release/doc/en_US.ISO8859-1/relnotes/article.xml @@ -20,7 +20,7 @@ $FreeBSD$ - + 2015 From 81be95ceb4bff64a9d3e6f0a76499b7c29bf2595 Mon Sep 17 00:00:00 2001 From: Colin Percival Date: Fri, 23 Jan 2015 20:24:13 +0000 Subject: [PATCH 20/50] Provide a recipe of "true" for building the "release" target once its prerequisites are satisfied, in order to avoid having an implicit rule triggered by the presence of release.sh. Approved by: gjb --- release/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/release/Makefile b/release/Makefile index a601921b3303..9b80f8afa8f0 100644 --- a/release/Makefile +++ b/release/Makefile @@ -279,6 +279,7 @@ ftp: packagesystem cp *.txz MANIFEST ftp release: real-release vm-release cloudware-release + @true real-release: ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj From 9d4a2eed2c6c26ecd7ad1b7a0f90d0380c2af001 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Fri, 23 Jan 2015 20:32:19 +0000 Subject: [PATCH 21/50] GDB: Fix memset thinkos. 2005-03-25 Anthony Green * remote.c (remote_store_registers): Fix memset usage. * std-regs.c (value_of_builtin_frame_reg): Ditto. (value_of_builtin_frame_fp_reg): Ditto. (value_of_builtin_frame_reg): Ditto. Sourceware commit: 170cd118a9e2169798247e70160f5a638b516661 --- gdb/remote.c | 2 +- gdb/std-regs.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gdb/remote.c b/gdb/remote.c index 36da449973d8..bf4e6d969566 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -3463,7 +3463,7 @@ remote_store_registers (int regnum) { int i; regs = alloca (rs->sizeof_g_packet); - memset (regs, rs->sizeof_g_packet, 0); + memset (regs, 0, rs->sizeof_g_packet); for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++) { struct packet_reg *r = &rs->regs[i]; diff --git a/gdb/std-regs.c b/gdb/std-regs.c index 368720dd95b0..bd134b515b38 100644 --- a/gdb/std-regs.c +++ b/gdb/std-regs.c @@ -61,7 +61,7 @@ value_of_builtin_frame_reg (struct frame_info *frame) val = allocate_value (builtin_type_frame_reg); VALUE_LVAL (val) = not_lval; buf = VALUE_CONTENTS_RAW (val); - memset (buf, TYPE_LENGTH (VALUE_TYPE (val)), 0); + memset (buf, 0, TYPE_LENGTH (VALUE_TYPE (val))); /* frame.base. */ if (frame != NULL) ADDRESS_TO_POINTER (builtin_type_void_data_ptr, buf, @@ -87,7 +87,7 @@ value_of_builtin_frame_fp_reg (struct frame_info *frame) struct value *val = allocate_value (builtin_type_void_data_ptr); char *buf = VALUE_CONTENTS_RAW (val); if (frame == NULL) - memset (buf, TYPE_LENGTH (VALUE_TYPE (val)), 0); + memset (buf, 0, TYPE_LENGTH (VALUE_TYPE (val))); else ADDRESS_TO_POINTER (builtin_type_void_data_ptr, buf, get_frame_base_address (frame)); @@ -105,7 +105,7 @@ value_of_builtin_frame_pc_reg (struct frame_info *frame) struct value *val = allocate_value (builtin_type_void_data_ptr); char *buf = VALUE_CONTENTS_RAW (val); if (frame == NULL) - memset (buf, TYPE_LENGTH (VALUE_TYPE (val)), 0); + memset (buf, 0, TYPE_LENGTH (VALUE_TYPE (val))); else ADDRESS_TO_POINTER (builtin_type_void_data_ptr, buf, get_frame_pc (frame)); From e7c9030c0d6fb04f90f1087f2eab97c1bcf6f67a Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Fri, 23 Jan 2015 21:04:59 +0000 Subject: [PATCH 22/50] When iterating through VMFORMATS, the VMBASE file is not removed or truncated to a zero-size file, which if used to create more than one disk image format, can result in accidental pollution of the target formatted disk image. Instead of using a single VMBASE image (vm.img, by default), use a single base file for each format, named as VMFORMAT.img, which produces VMBASE.VMFORMAT as the final formatted image. Reported by: cperciva MFC after: 1 month X-MFC-with: r277458, r277536 Sponsored by: The FreeBSD Foundation --- release/Makefile.vm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/Makefile.vm b/release/Makefile.vm index 17229bfb2792..fe955d30d8c1 100644 --- a/release/Makefile.vm +++ b/release/Makefile.vm @@ -50,8 +50,8 @@ vm-${_CW:tl}: .if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES) CLEANDIRS+= ${VMTARGETS} -CLEANFILES+= ${VMBASE}.img . for FORMAT in ${VMFORMATS} +CLEANFILES+= ${FORMAT}.img CLEANFILES+= ${VMBASE}.${FORMAT} . endfor .endif @@ -65,7 +65,7 @@ vm-image: env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ ${.CURDIR}/scripts/mk-vmimage.sh \ -C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \ - -i ${.OBJDIR}/${VMBASE}.img -s ${VMSIZE} -f ${FORMAT} \ + -i ${.OBJDIR}/${FORMAT}.img -s ${VMSIZE} -f ${FORMAT} \ -S ${WORLDDIR} -o ${.OBJDIR}/${VMBASE}.${FORMAT} . endfor .endif From 2205e0d1bd2813b1fad5bee39b3365ee2dc8a1ec Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Fri, 23 Jan 2015 21:07:08 +0000 Subject: [PATCH 23/50] Add futimens and utimensat system calls. The core kernel part is patch file utimes.2008.4.diff from pluknet@FreeBSD.org. I updated the code for API changes, added the manual page and added compatibility code for old kernels. There is also audit and Capsicum support. A new UTIME_* constant might allow setting birthtimes in future. Differential Revision: https://reviews.freebsd.org/D1426 Submitted by: pluknet (partially) Reviewed by: delphij, pluknet, rwatson Relnotes: yes --- bin/ln/symlink.7 | 7 +- lib/libc/include/libc_private.h | 4 + lib/libc/sys/Makefile.inc | 6 + lib/libc/sys/Symbol.map | 2 + lib/libc/sys/futimens.c | 97 +++++++++ lib/libc/sys/utimensat.2 | 292 ++++++++++++++++++++++++++ lib/libc/sys/utimensat.c | 109 ++++++++++ share/man/man4/rights.4 | 8 +- sys/compat/freebsd32/freebsd32_misc.c | 43 ++++ sys/compat/freebsd32/syscalls.master | 5 + sys/kern/capabilities.conf | 4 +- sys/kern/syscalls.master | 5 + sys/kern/vfs_syscalls.c | 126 ++++++++++- sys/sys/capsicum.h | 4 +- sys/sys/param.h | 2 +- sys/sys/stat.h | 8 + sys/sys/syscallsubr.h | 5 + usr.bin/kdump/kdump.c | 1 + 18 files changed, 717 insertions(+), 11 deletions(-) create mode 100644 lib/libc/sys/futimens.c create mode 100644 lib/libc/sys/utimensat.2 create mode 100644 lib/libc/sys/utimensat.c diff --git a/bin/ln/symlink.7 b/bin/ln/symlink.7 index 6aba773db7e5..821a3128c914 100644 --- a/bin/ln/symlink.7 +++ b/bin/ln/symlink.7 @@ -29,7 +29,7 @@ .\" @(#)symlink.7 8.3 (Berkeley) 3/31/94 .\" $FreeBSD$ .\" -.Dd December 29, 2014 +.Dd January 23, 2015 .Dt SYMLINK 7 .Os .Sh NAME @@ -147,9 +147,10 @@ unless given the .Dv AT_SYMLINK_NOFOLLOW flag: .Xr fchmodat 2 , -.Xr fchownat 2 +.Xr fchownat 2 , +.Xr fstatat 2 and -.Xr fstatat 2 . +.Xr utimensat 2 . .Pp The owner and group of an existing symbolic link can be changed by means of the diff --git a/lib/libc/include/libc_private.h b/lib/libc/include/libc_private.h index 347b46305d4b..bfcd3d060e96 100644 --- a/lib/libc/include/libc_private.h +++ b/lib/libc/include/libc_private.h @@ -357,6 +357,10 @@ int __libc_system(const char *); int __libc_tcdrain(int); int __fcntl_compat(int fd, int cmd, ...); +int __sys_futimens(int fd, const struct timespec *times) __hidden; +int __sys_utimensat(int fd, const char *path, + const struct timespec *times, int flag) __hidden; + /* execve() with PATH processing to implement posix_spawnp() */ int _execvpe(const char *, char * const *, char * const *); diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index 0a3c13f8e3b1..e8ec58e7a088 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -38,6 +38,10 @@ SRCS+= ${SYSCALL_COMPAT_SRCS} NOASM+= ${SYSCALL_COMPAT_SRCS:S/.c/.o/} .endif +SRCS+= futimens.c utimensat.c +NOASM+= futimens.o utimensat.o +PSEUDO+= _futimens.o _utimensat.o + INTERPOSED = \ accept \ accept4 \ @@ -310,6 +314,7 @@ MAN+= sctp_generic_recvmsg.2 \ umask.2 \ undelete.2 \ unlink.2 \ + utimensat.2 \ utimes.2 \ utrace.2 \ uuidgen.2 \ @@ -442,6 +447,7 @@ MLINKS+=timer_settime.2 timer_getoverrun.2 \ timer_settime.2 timer_gettime.2 MLINKS+=truncate.2 ftruncate.2 MLINKS+=unlink.2 unlinkat.2 +MLINKS+=utimensat.2 futimens.2 MLINKS+=utimes.2 futimes.2 \ utimes.2 futimesat.2 \ utimes.2 lutimes.2 diff --git a/lib/libc/sys/Symbol.map b/lib/libc/sys/Symbol.map index f1f57ba9fb79..194aa5bf0999 100644 --- a/lib/libc/sys/Symbol.map +++ b/lib/libc/sys/Symbol.map @@ -397,7 +397,9 @@ FBSD_1.3 { }; FBSD_1.4 { + futimens; ppoll; + utimensat; }; FBSDprivate_1.0 { diff --git a/lib/libc/sys/futimens.c b/lib/libc/sys/futimens.c new file mode 100644 index 000000000000..2014cc5cecf3 --- /dev/null +++ b/lib/libc/sys/futimens.c @@ -0,0 +1,97 @@ +/*- + * Copyright (c) 2015 Jilles Tjoelker + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "namespace.h" +#include + +#include +#include +#include +#include "un-namespace.h" + +#include "libc_private.h" + +int +futimens(int fd, const struct timespec times[2]) +{ + struct timeval now, tv[2], *tvp; + struct stat sb; + + if (__getosreldate() >= 1100056) + return (__sys_futimens(fd, times)); + + if (times == NULL || (times[0].tv_nsec == UTIME_NOW && + times[1].tv_nsec == UTIME_NOW)) + tvp = NULL; + else if (times[0].tv_nsec == UTIME_OMIT && + times[1].tv_nsec == UTIME_OMIT) + return (0); + else { + if ((times[0].tv_nsec < 0 || times[0].tv_nsec > 999999999) && + times[0].tv_nsec != UTIME_NOW && + times[0].tv_nsec != UTIME_OMIT) { + errno = EINVAL; + return (-1); + } + if ((times[1].tv_nsec < 0 || times[1].tv_nsec > 999999999) && + times[1].tv_nsec != UTIME_NOW && + times[1].tv_nsec != UTIME_OMIT) { + errno = EINVAL; + return (-1); + } + tv[0].tv_sec = times[0].tv_sec; + tv[0].tv_usec = times[0].tv_nsec / 1000; + tv[1].tv_sec = times[1].tv_sec; + tv[1].tv_usec = times[1].tv_nsec / 1000; + tvp = tv; + if (times[0].tv_nsec == UTIME_OMIT || + times[1].tv_nsec == UTIME_OMIT) { + if (_fstat(fd, &sb) == -1) + return (-1); + if (times[0].tv_nsec == UTIME_OMIT) { + tv[0].tv_sec = sb.st_atim.tv_sec; + tv[0].tv_usec = sb.st_atim.tv_nsec / 1000; + } + if (times[1].tv_nsec == UTIME_OMIT) { + tv[1].tv_sec = sb.st_mtim.tv_sec; + tv[1].tv_usec = sb.st_mtim.tv_nsec / 1000; + } + } + if (times[0].tv_nsec == UTIME_NOW || + times[1].tv_nsec == UTIME_NOW) { + if (gettimeofday(&now, NULL) == -1) + return (-1); + if (times[0].tv_nsec == UTIME_NOW) + tv[0] = now; + if (times[1].tv_nsec == UTIME_NOW) + tv[1] = now; + } + } + return (futimes(fd, tvp)); +} diff --git a/lib/libc/sys/utimensat.2 b/lib/libc/sys/utimensat.2 new file mode 100644 index 000000000000..0f397c6a99aa --- /dev/null +++ b/lib/libc/sys/utimensat.2 @@ -0,0 +1,292 @@ +.\" $NetBSD: utimes.2,v 1.13 1999/03/22 19:45:11 garbled Exp $ +.\" +.\" Copyright (c) 1990, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" Copyright (c) 2012, Jilles Tjoelker +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)utimes.2 8.1 (Berkeley) 6/4/93 +.\" $FreeBSD$ +.\" +.Dd January 23, 2015 +.Dt UTIMENSAT 2 +.Os +.Sh NAME +.Nm futimens , +.Nm utimensat +.Nd set file access and modification times +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In sys/stat.h +.Ft int +.Fn futimens "int fd" "const struct timespec times[2]" +.Ft int +.Fo utimensat +.Fa "int fd" +.Fa "const char *path" +.Fa "const struct timespec times[2]" +.Fa "int flag" +.Fc +.Sh DESCRIPTION +The access and modification times of the file named by +.Fa path +or referenced by +.Fa fd +are changed as specified by the argument +.Fa times . +The inode-change-time of the file is set to the current time. +.Pp +If +.Fa path +specifies a relative path, +it is relative to the current working directory if +.Fa fd +is +.Dv AT_FDCWD +and otherwise relative to the directory associated with the file descriptor +.Fa fd . +.Pp +The +.Va tv_nsec +field of a +.Vt timespec +structure +can be set to the special value +.Dv UTIME_NOW +to set the current time, or to +.Dv UTIME_OMIT +to leave the time unchanged. +In either case, the +.Va tv_sec +field is ignored. +.Pp +If +.Fa times +is +.No non- Ns Dv NULL , +it is assumed to point to an array of two timespec structures. +The access time is set to the value of the first element, and the +modification time is set to the value of the second element. +For file systems that support file birth (creation) times (such as +.Dv UFS2 ) , +the birth time will be set to the value of the second element +if the second element is older than the currently set birth time. +To set both a birth time and a modification time, +two calls are required; the first to set the birth time +and the second to set the (presumably newer) modification time. +Ideally a new system call will be added that allows the setting +of all three times at once. +If +.Fa times +is +.Dv NULL , +this is equivalent to passing +a pointer to an array of two timespec structures +with both +.Va tv_nsec +fields set to +.Dv UTIME_NOW . +.Pp +If both +.Va tv_nsec +fields are +.Dv UTIME_OMIT , +the timestamps remain unchanged and +no permissions are needed for the file itself, +although search permissions may be required for the path prefix. +The call may or may not succeed if the named file does not exist. +.Pp +If both +.Va tv_nsec +fields are +.Dv UTIME_NOW , +the caller must be the owner of the file, have permission to +write the file, or be the super-user. +.Pp +For all other values of the timestamps, +the caller must be the owner of the file or be the super-user. +.Pp +The values for the +.Fa flag +argument of the +.Fn utimensat +system call +are constructed by a bitwise-inclusive OR of flags from the following list, +defined in +.In fcntl.h : +.Bl -tag -width indent +.It Dv AT_SYMLINK_NOFOLLOW +If +.Fa path +names a symbolic link, the symbolic link's times are changed. +By default, +.Fn utimensat +changes the times of the file referenced by the symbolic link. +.El +.Sh RETURN VALUES +.Rv -std +.Sh COMPATIBILITY +If the running kernel does not support this system call, +a wrapper emulates it using +.Xr fstatat 2 , +.Xr futimesat 2 +and +.Xr lutimes 2 . +As a result, timestamps will be rounded down to the nearest microsecond, +.Dv UTIME_OMIT +is not atomic and +.Dv AT_SYMLINK_NOFOLLOW +is not available with a path relative to a file descriptor. +.Sh ERRORS +These system calls will fail if: +.Bl -tag -width Er +.It Bq Er EACCES +The +.Fa times +argument is +.Dv NULL , +or both +.Va tv_nsec +values are +.Dv UTIME_NOW , +and the effective user ID of the process does not +match the owner of the file, and is not the super-user, and write +access is denied. +.It Bq Er EFAULT +The +.Fa times +argument +points outside the process's allocated address space. +.It Bq Er EINVAL +The +.Va tv_usec +component of at least one of the values specified by the +.Fa times +argument has a value less than 0 or greater than 999999. +.It Bq Er EIO +An I/O error occurred while reading or writing the affected inode. +.It Bq Er EPERM +The +.Fa times +argument is not +.Dv NULL +nor are both +.Va tv_nsec +values +.Dv UTIME_NOW , +nor are both +.Va tv_nsec +values +.Dv UTIME_OMIT +and the calling process's effective user ID +does not match the owner of the file and is not the super-user. +.It Bq Er EPERM +The named file has its immutable or append-only flag set, see the +.Xr chflags 2 +manual page for more information. +.It Bq Er EROFS +The file system containing the file is mounted read-only. +.El +.Pp +The +.Fn futimens +system call +will fail if: +.Bl -tag -width Er +.It Bq Er EBADF +The +.Fa fd +argument +does not refer to a valid descriptor. +.El +.Pp +The +.Fn utimensat +system call +will fail if: +.Bl -tag -width Er +.It Bq Er EACCES +Search permission is denied for a component of the path prefix. +.It Bq Er EBADF +The +.Fa path +argument does not specify an absolute path and the +.Fa fd +argument is neither +.Dv AT_FDCWD +nor a valid file descriptor. +.It Bq Er EFAULT +The +.Fa path +argument +points outside the process's allocated address space. +.It Bq Er ELOOP +Too many symbolic links were encountered in translating the pathname. +.It Bq Er ENAMETOOLONG +A component of a pathname exceeded +.Dv NAME_MAX +characters, or an entire path name exceeded +.Dv PATH_MAX +characters. +.It Bq Er ENOENT +The named file does not exist. +.It Bq Er ENOTDIR +A component of the path prefix is not a directory. +.It Bq Er ENOTDIR +The +.Fa path +argument is not an absolute path and +.Fa fd +is neither +.Dv AT_FDCWD +nor a file descriptor associated with a directory. +.It Bq Er ENOTSUP +The running kernel does not support this system call and +.Dv AT_SYMLINK_NOFOLLOW +is used with a path relative to a file descriptor. +.El +.Sh SEE ALSO +.Xr chflags 2 , +.Xr stat 2 , +.Xr symlink 2 , +.Xr utimes 2 , +.Xr utime 3 , +.Xr symlink 7 +.Sh STANDARDS +The +.Fn futimens +and +.Fn utimensat +system calls are expected to conform to +.St -p1003.1-2008 . +.Sh HISTORY +The +.Fn futimens +and +.Fn utimensat +system calls appeared in +.Fx 11.0 . diff --git a/lib/libc/sys/utimensat.c b/lib/libc/sys/utimensat.c new file mode 100644 index 000000000000..67d19cb2f9ba --- /dev/null +++ b/lib/libc/sys/utimensat.c @@ -0,0 +1,109 @@ +/*- + * Copyright (c) 2015 Jilles Tjoelker + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "namespace.h" +#include + +#include +#include +#include +#include "un-namespace.h" + +#include "libc_private.h" + +int +utimensat(int fd, const char *path, const struct timespec times[2], int flag) +{ + struct timeval now, tv[2], *tvp; + struct stat sb; + + if (__getosreldate() >= 1100056) + return (__sys_utimensat(fd, path, times, flag)); + + if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) { + errno = EINVAL; + return (-1); + } + if (times == NULL || (times[0].tv_nsec == UTIME_NOW && + times[1].tv_nsec == UTIME_NOW)) + tvp = NULL; + else if (times[0].tv_nsec == UTIME_OMIT && + times[1].tv_nsec == UTIME_OMIT) + return (0); + else { + if ((times[0].tv_nsec < 0 || times[0].tv_nsec > 999999999) && + times[0].tv_nsec != UTIME_NOW && + times[0].tv_nsec != UTIME_OMIT) { + errno = EINVAL; + return (-1); + } + if ((times[1].tv_nsec < 0 || times[1].tv_nsec > 999999999) && + times[1].tv_nsec != UTIME_NOW && + times[1].tv_nsec != UTIME_OMIT) { + errno = EINVAL; + return (-1); + } + tv[0].tv_sec = times[0].tv_sec; + tv[0].tv_usec = times[0].tv_nsec / 1000; + tv[1].tv_sec = times[1].tv_sec; + tv[1].tv_usec = times[1].tv_nsec / 1000; + tvp = tv; + if (times[0].tv_nsec == UTIME_OMIT || + times[1].tv_nsec == UTIME_OMIT) { + if (fstatat(fd, path, &sb, flag) == -1) + return (-1); + if (times[0].tv_nsec == UTIME_OMIT) { + tv[0].tv_sec = sb.st_atim.tv_sec; + tv[0].tv_usec = sb.st_atim.tv_nsec / 1000; + } + if (times[1].tv_nsec == UTIME_OMIT) { + tv[1].tv_sec = sb.st_mtim.tv_sec; + tv[1].tv_usec = sb.st_mtim.tv_nsec / 1000; + } + } + if (times[0].tv_nsec == UTIME_NOW || + times[1].tv_nsec == UTIME_NOW) { + if (gettimeofday(&now, NULL) == -1) + return (-1); + if (times[0].tv_nsec == UTIME_NOW) + tv[0] = now; + if (times[1].tv_nsec == UTIME_NOW) + tv[1] = now; + } + } + if ((flag & AT_SYMLINK_NOFOLLOW) == 0) + return (futimesat(fd, path, tvp)); + else if ((flag & AT_SYMLINK_NOFOLLOW) != 0 && + (fd == AT_FDCWD || path[0] == '/')) + return (lutimes(path, tvp)); + else { + errno = ENOTSUP; + return (-1); + } +} diff --git a/share/man/man4/rights.4 b/share/man/man4/rights.4 index 476b15bad1d4..16025c179e65 100644 --- a/share/man/man4/rights.4 +++ b/share/man/man4/rights.4 @@ -32,7 +32,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 23, 2013 +.Dd January 23, 2015 .Dt RIGHTS 4 .Os .Sh NAME @@ -272,9 +272,13 @@ with the flag. .It Dv CAP_FUTIMES Permit -.Xr futimes 2 +.Xr futimens 2 and +.Xr futimes 2 , +and permit .Xr futimesat 2 +and +.Xr utimensat 2 if the .Dv CAP_LOOKUP right is also present. diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c index ffea28371043..a72612b53c1c 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -1299,6 +1299,49 @@ freebsd32_futimesat(struct thread *td, struct freebsd32_futimesat_args *uap) sp, UIO_SYSSPACE)); } +int +freebsd32_futimens(struct thread *td, struct freebsd32_futimens_args *uap) +{ + struct timespec32 ts32[2]; + struct timespec ts[2], *tsp; + int error; + + if (uap->times != NULL) { + error = copyin(uap->times, ts32, sizeof(ts32)); + if (error) + return (error); + CP(ts32[0], ts[0], tv_sec); + CP(ts32[0], ts[0], tv_nsec); + CP(ts32[1], ts[1], tv_sec); + CP(ts32[1], ts[1], tv_nsec); + tsp = ts; + } else + tsp = NULL; + return (kern_futimens(td, uap->fd, tsp, UIO_SYSSPACE)); +} + +int +freebsd32_utimensat(struct thread *td, struct freebsd32_utimensat_args *uap) +{ + struct timespec32 ts32[2]; + struct timespec ts[2], *tsp; + int error; + + if (uap->times != NULL) { + error = copyin(uap->times, ts32, sizeof(ts32)); + if (error) + return (error); + CP(ts32[0], ts[0], tv_sec); + CP(ts32[0], ts[0], tv_nsec); + CP(ts32[1], ts[1], tv_sec); + CP(ts32[1], ts[1], tv_nsec); + tsp = ts; + } else + tsp = NULL; + return (kern_utimensat(td, uap->fd, uap->path, UIO_USERSPACE, + tsp, UIO_SYSSPACE, uap->flag)); +} + int freebsd32_adjtime(struct thread *td, struct freebsd32_adjtime_args *uap) { diff --git a/sys/compat/freebsd32/syscalls.master b/sys/compat/freebsd32/syscalls.master index ce655bcfa581..91d1727a7f98 100644 --- a/sys/compat/freebsd32/syscalls.master +++ b/sys/compat/freebsd32/syscalls.master @@ -1069,3 +1069,8 @@ 545 AUE_POLL STD { int freebsd32_ppoll(struct pollfd *fds, \ u_int nfds, const struct timespec32 *ts, \ const sigset_t *set); } +546 AUE_FUTIMES STD { int freebsd32_futimens(int fd, \ + struct timespec *times); } +547 AUE_FUTIMESAT STD { int freebsd32_utimensat(int fd, \ + char *path, \ + struct timespec *times, int flag); } diff --git a/sys/kern/capabilities.conf b/sys/kern/capabilities.conf index f7a46aebce2c..d0ea97c4e831 100644 --- a/sys/kern/capabilities.conf +++ b/sys/kern/capabilities.conf @@ -220,8 +220,9 @@ fsync ftruncate ## -## Allow futimes(2), subject to capability rights. +## Allow futimens(2) and futimes(2), subject to capability rights. ## +futimens futimes ## @@ -453,6 +454,7 @@ readlinkat renameat symlinkat unlinkat +utimensat ## ## Allow entry into open(2). This system call will fail, since access to the diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index 089896b73751..09d38d40101a 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -983,5 +983,10 @@ 545 AUE_POLL STD { int ppoll(struct pollfd *fds, u_int nfds, \ const struct timespec *ts, \ const sigset_t *set); } +546 AUE_FUTIMES STD { int futimens(int fd, \ + struct timespec *times); } +547 AUE_FUTIMESAT STD { int utimensat(int fd, \ + char *path, \ + struct timespec *times, int flag); } ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 3105c2f4bcd5..0f248199d0d4 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -95,10 +95,12 @@ SDT_PROBE_DEFINE2(vfs, , stat, mode, "char *", "int"); SDT_PROBE_DEFINE2(vfs, , stat, reg, "char *", "int"); static int chroot_refuse_vdir_fds(struct filedesc *fdp); -static int getutimes(const struct timeval *, enum uio_seg, struct timespec *); static int kern_chflagsat(struct thread *td, int fd, const char *path, enum uio_seg pathseg, u_long flags, int atflag); static int setfflags(struct thread *td, struct vnode *, u_long); +static int getutimes(const struct timeval *, enum uio_seg, struct timespec *); +static int getutimens(const struct timespec *, enum uio_seg, + struct timespec *, int *); static int setutimes(struct thread *td, struct vnode *, const struct timespec *, int, int); static int vn_access(struct vnode *vp, int user_flags, struct ucred *cred, @@ -3007,7 +3009,53 @@ getutimes(usrtvp, tvpseg, tsp) } /* - * Common implementation code for utimes(), lutimes(), and futimes(). + * Common implementation code for futimens(), utimensat(). + */ +#define UTIMENS_NULL 0x1 +#define UTIMENS_EXIT 0x2 +static int +getutimens(const struct timespec *usrtsp, enum uio_seg tspseg, + struct timespec *tsp, int *retflags) +{ + struct timespec tsnow; + int error; + + vfs_timestamp(&tsnow); + *retflags = 0; + if (usrtsp == NULL) { + tsp[0] = tsnow; + tsp[1] = tsnow; + *retflags |= UTIMENS_NULL; + return (0); + } + if (tspseg == UIO_SYSSPACE) { + tsp[0] = usrtsp[0]; + tsp[1] = usrtsp[1]; + } else if ((error = copyin(usrtsp, tsp, sizeof(*tsp) * 2)) != 0) + return (error); + if (tsp[0].tv_nsec == UTIME_OMIT && tsp[1].tv_nsec == UTIME_OMIT) + *retflags |= UTIMENS_EXIT; + if (tsp[0].tv_nsec == UTIME_NOW && tsp[1].tv_nsec == UTIME_NOW) + *retflags |= UTIMENS_NULL; + if (tsp[0].tv_nsec == UTIME_OMIT) + tsp[0].tv_sec = VNOVAL; + else if (tsp[0].tv_nsec == UTIME_NOW) + tsp[0] = tsnow; + else if (tsp[0].tv_nsec < 0 || tsp[0].tv_nsec >= 1000000000L) + return (EINVAL); + if (tsp[1].tv_nsec == UTIME_OMIT) + tsp[1].tv_sec = VNOVAL; + else if (tsp[1].tv_nsec == UTIME_NOW) + tsp[1] = tsnow; + else if (tsp[1].tv_nsec < 0 || tsp[1].tv_nsec >= 1000000000L) + return (EINVAL); + + return (0); +} + +/* + * Common implementation code for utimes(), lutimes(), futimes(), futimens(), + * and utimensat(). */ static int setutimes(td, vp, ts, numtimes, nullflag) @@ -3196,6 +3244,80 @@ kern_futimes(struct thread *td, int fd, struct timeval *tptr, return (error); } +int +sys_futimens(struct thread *td, struct futimens_args *uap) +{ + + return (kern_futimens(td, uap->fd, uap->times, UIO_USERSPACE)); +} + +int +kern_futimens(struct thread *td, int fd, struct timespec *tptr, + enum uio_seg tptrseg) +{ + struct timespec ts[2]; + struct file *fp; + cap_rights_t rights; + int error, flags; + + AUDIT_ARG_FD(fd); + error = getutimens(tptr, tptrseg, ts, &flags); + if (error != 0) + return (error); + if (flags & UTIMENS_EXIT) + return (0); + error = getvnode(td->td_proc->p_fd, fd, + cap_rights_init(&rights, CAP_FUTIMES), &fp); + if (error != 0) + return (error); +#ifdef AUDIT + vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY); + AUDIT_ARG_VNODE1(fp->f_vnode); + VOP_UNLOCK(fp->f_vnode, 0); +#endif + error = setutimes(td, fp->f_vnode, ts, 2, flags & UTIMENS_NULL); + fdrop(fp, td); + return (error); +} + +int +sys_utimensat(struct thread *td, struct utimensat_args *uap) +{ + + return (kern_utimensat(td, uap->fd, uap->path, UIO_USERSPACE, + uap->times, UIO_USERSPACE, uap->flag)); +} + +int +kern_utimensat(struct thread *td, int fd, char *path, enum uio_seg pathseg, + struct timespec *tptr, enum uio_seg tptrseg, int flag) +{ + struct nameidata nd; + struct timespec ts[2]; + int error, flags; + + if (flag & ~AT_SYMLINK_NOFOLLOW) + return (EINVAL); + + if ((error = getutimens(tptr, tptrseg, ts, &flags)) != 0) + return (error); + NDINIT_AT(&nd, LOOKUP, ((flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : + FOLLOW) | AUDITVNODE1, pathseg, path, fd, td); + if ((error = namei(&nd)) != 0) + return (error); + /* + * We are allowed to call namei() regardless of 2xUTIME_OMIT. + * POSIX states: + * "If both tv_nsec fields are UTIME_OMIT... EACCESS may be detected." + * "Search permission is denied by a component of the path prefix." + */ + NDFREE(&nd, NDF_ONLY_PNBUF); + if ((flags & UTIMENS_EXIT) == 0) + error = setutimes(td, nd.ni_vp, ts, 2, flags & UTIMENS_NULL); + vrele(nd.ni_vp); + return (error); +} + /* * Truncate a file given its path name. */ diff --git a/sys/sys/capsicum.h b/sys/sys/capsicum.h index de113c62fefc..8502a967498a 100644 --- a/sys/sys/capsicum.h +++ b/sys/sys/capsicum.h @@ -146,9 +146,9 @@ #define CAP_FSTATAT (CAP_FSTAT | CAP_LOOKUP) /* Allows for fstatfs(2). */ #define CAP_FSTATFS CAPRIGHT(0, 0x0000000000100000ULL) -/* Allows for futimes(2). */ +/* Allows for futimens(2) and futimes(2). */ #define CAP_FUTIMES CAPRIGHT(0, 0x0000000000200000ULL) -/* Allows for futimes(2) and futimesat(2). */ +/* Allows for futimens(2), futimes(2), futimesat(2) and utimensat(2). */ #define CAP_FUTIMESAT (CAP_FUTIMES | CAP_LOOKUP) /* Allows for linkat(2) and renameat(2) (destination directory descriptor). */ #define CAP_LINKAT (CAP_LOOKUP | 0x0000000000400000ULL) diff --git a/sys/sys/param.h b/sys/sys/param.h index bf59b0bf7226..eea93c957abd 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1100055 /* Master, propagated to newvers */ +#define __FreeBSD_version 1100056 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, diff --git a/sys/sys/stat.h b/sys/sys/stat.h index 13dea2dc72b9..7a4370d64a27 100644 --- a/sys/sys/stat.h +++ b/sys/sys/stat.h @@ -307,6 +307,11 @@ struct nstat { #endif /* __BSD_VISIBLE */ +#if __POSIX_VISIBLE >= 200809 +#define UTIME_NOW -1 +#define UTIME_OMIT -2 +#endif + #ifndef _KERNEL __BEGIN_DECLS #if __BSD_VISIBLE @@ -322,6 +327,9 @@ int fchmod(int, mode_t); #endif #if __POSIX_VISIBLE >= 200809 int fchmodat(int, const char *, mode_t, int); +int futimens(int fd, const struct timespec times[2]); +int utimensat(int fd, const char *path, const struct timespec times[2], + int flag); #endif int fstat(int, struct stat *); #if __BSD_VISIBLE diff --git a/sys/sys/syscallsubr.h b/sys/sys/syscallsubr.h index f4131a48032b..cb6d4e36cc90 100644 --- a/sys/sys/syscallsubr.h +++ b/sys/sys/syscallsubr.h @@ -99,6 +99,8 @@ int kern_fstatfs(struct thread *td, int fd, struct statfs *buf); int kern_ftruncate(struct thread *td, int fd, off_t length); int kern_futimes(struct thread *td, int fd, struct timeval *tptr, enum uio_seg tptrseg); +int kern_futimens(struct thread *td, int fd, struct timespec *tptr, + enum uio_seg tptrseg); int kern_getdirentries(struct thread *td, int fd, char *buf, u_int count, long *basep, ssize_t *residp, enum uio_seg bufseg); int kern_getfsstat(struct thread *td, struct statfs **buf, size_t bufsize, @@ -220,6 +222,9 @@ int kern_unlinkat(struct thread *td, int fd, char *path, enum uio_seg pathseg, ino_t oldinum); int kern_utimesat(struct thread *td, int fd, char *path, enum uio_seg pathseg, struct timeval *tptr, enum uio_seg tptrseg); +int kern_utimensat(struct thread *td, int fd, char *path, + enum uio_seg pathseg, struct timespec *tptr, enum uio_seg tptrseg, + int follow); int kern_wait(struct thread *td, pid_t pid, int *status, int options, struct rusage *rup); int kern_wait6(struct thread *td, enum idtype idtype, id_t id, int *status, diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index ad29bfde74c0..0daf7373cd19 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -714,6 +714,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_int flags) case SYS_readlinkat: case SYS_renameat: case SYS_unlinkat: + case SYS_utimensat: putchar('('); atfdname(*ip, decimal); c = ','; From 2b35e6a9f21abb8dfa51968375d29826cf25e55a Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Fri, 23 Jan 2015 21:08:24 +0000 Subject: [PATCH 24/50] Run make sysent. --- sys/compat/freebsd32/freebsd32_proto.h | 16 ++++- sys/compat/freebsd32/freebsd32_syscall.h | 6 +- sys/compat/freebsd32/freebsd32_syscalls.c | 4 +- sys/compat/freebsd32/freebsd32_sysent.c | 4 +- .../freebsd32/freebsd32_systrace_args.c | 60 +++++++++++++++++++ sys/kern/init_sysent.c | 4 +- sys/kern/syscalls.c | 4 +- sys/kern/systrace_args.c | 60 +++++++++++++++++++ sys/sys/syscall.h | 6 +- sys/sys/syscall.mk | 6 +- sys/sys/sysproto.h | 16 ++++- 11 files changed, 174 insertions(+), 12 deletions(-) diff --git a/sys/compat/freebsd32/freebsd32_proto.h b/sys/compat/freebsd32/freebsd32_proto.h index 305b76c2d735..bf9253dc3471 100644 --- a/sys/compat/freebsd32/freebsd32_proto.h +++ b/sys/compat/freebsd32/freebsd32_proto.h @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -693,6 +693,16 @@ struct freebsd32_ppoll_args { char ts_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * ts; char ts_r_[PADR_(const struct timespec32 *)]; char set_l_[PADL_(const sigset_t *)]; const sigset_t * set; char set_r_[PADR_(const sigset_t *)]; }; +struct freebsd32_futimens_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char times_l_[PADL_(struct timespec *)]; struct timespec * times; char times_r_[PADR_(struct timespec *)]; +}; +struct freebsd32_utimensat_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char times_l_[PADL_(struct timespec *)]; struct timespec * times; char times_r_[PADR_(struct timespec *)]; + char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)]; +}; #if !defined(PAD64_REQUIRED) && (defined(__powerpc__) || defined(__mips__)) #define PAD64_REQUIRED #endif @@ -825,6 +835,8 @@ int freebsd32_procctl(struct thread *, struct freebsd32_procctl_args *); int freebsd32_procctl(struct thread *, struct freebsd32_procctl_args *); #endif int freebsd32_ppoll(struct thread *, struct freebsd32_ppoll_args *); +int freebsd32_futimens(struct thread *, struct freebsd32_futimens_args *); +int freebsd32_utimensat(struct thread *, struct freebsd32_utimensat_args *); #ifdef COMPAT_43 @@ -1240,6 +1252,8 @@ int freebsd7_freebsd32_shmctl(struct thread *, struct freebsd7_freebsd32_shmctl_ #define FREEBSD32_SYS_AUE_freebsd32_procctl AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_procctl AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_ppoll AUE_POLL +#define FREEBSD32_SYS_AUE_freebsd32_futimens AUE_FUTIMES +#define FREEBSD32_SYS_AUE_freebsd32_utimensat AUE_FUTIMESAT #undef PAD_ #undef PADL_ diff --git a/sys/compat/freebsd32/freebsd32_syscall.h b/sys/compat/freebsd32/freebsd32_syscall.h index 370c0706fee8..5e5bb0ad6ed7 100644 --- a/sys/compat/freebsd32/freebsd32_syscall.h +++ b/sys/compat/freebsd32/freebsd32_syscall.h @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ #define FREEBSD32_SYS_syscall 0 @@ -453,4 +453,6 @@ #define FREEBSD32_SYS_freebsd32_procctl 544 #define FREEBSD32_SYS_freebsd32_procctl 544 #define FREEBSD32_SYS_freebsd32_ppoll 545 -#define FREEBSD32_SYS_MAXSYSCALL 546 +#define FREEBSD32_SYS_freebsd32_futimens 546 +#define FREEBSD32_SYS_freebsd32_utimensat 547 +#define FREEBSD32_SYS_MAXSYSCALL 548 diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c b/sys/compat/freebsd32/freebsd32_syscalls.c index 9cad2f135f2c..143ed72107e6 100644 --- a/sys/compat/freebsd32/freebsd32_syscalls.c +++ b/sys/compat/freebsd32/freebsd32_syscalls.c @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ const char *freebsd32_syscallnames[] = { @@ -579,4 +579,6 @@ const char *freebsd32_syscallnames[] = { "freebsd32_procctl", /* 544 = freebsd32_procctl */ #endif "freebsd32_ppoll", /* 545 = freebsd32_ppoll */ + "freebsd32_futimens", /* 546 = freebsd32_futimens */ + "freebsd32_utimensat", /* 547 = freebsd32_utimensat */ }; diff --git a/sys/compat/freebsd32/freebsd32_sysent.c b/sys/compat/freebsd32/freebsd32_sysent.c index 195ee940010a..6d2a7d48bd3a 100644 --- a/sys/compat/freebsd32/freebsd32_sysent.c +++ b/sys/compat/freebsd32/freebsd32_sysent.c @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ #include "opt_compat.h" @@ -616,4 +616,6 @@ struct sysent freebsd32_sysent[] = { { AS(freebsd32_procctl_args), (sy_call_t *)freebsd32_procctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 544 = freebsd32_procctl */ #endif { AS(freebsd32_ppoll_args), (sy_call_t *)freebsd32_ppoll, AUE_POLL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 545 = freebsd32_ppoll */ + { AS(freebsd32_futimens_args), (sy_call_t *)freebsd32_futimens, AUE_FUTIMES, NULL, 0, 0, 0, SY_THR_STATIC }, /* 546 = freebsd32_futimens */ + { AS(freebsd32_utimensat_args), (sy_call_t *)freebsd32_utimensat, AUE_FUTIMESAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 547 = freebsd32_utimensat */ }; diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c b/sys/compat/freebsd32/freebsd32_systrace_args.c index 6f6b0ac97c13..a2668aa7cb05 100644 --- a/sys/compat/freebsd32/freebsd32_systrace_args.c +++ b/sys/compat/freebsd32/freebsd32_systrace_args.c @@ -3309,6 +3309,24 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 4; break; } + /* freebsd32_futimens */ + case 546: { + struct freebsd32_futimens_args *p = params; + iarg[0] = p->fd; /* int */ + uarg[1] = (intptr_t) p->times; /* struct timespec * */ + *n_args = 2; + break; + } + /* freebsd32_utimensat */ + case 547: { + struct freebsd32_utimensat_args *p = params; + iarg[0] = p->fd; /* int */ + uarg[1] = (intptr_t) p->path; /* char * */ + uarg[2] = (intptr_t) p->times; /* struct timespec * */ + iarg[3] = p->flag; /* int */ + *n_args = 4; + break; + } default: *n_args = 0; break; @@ -8873,6 +8891,38 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) break; }; break; + /* freebsd32_futimens */ + case 546: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "struct timespec *"; + break; + default: + break; + }; + break; + /* freebsd32_utimensat */ + case 547: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "char *"; + break; + case 2: + p = "struct timespec *"; + break; + case 3: + p = "int"; + break; + default: + break; + }; + break; default: break; }; @@ -10751,6 +10801,16 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) if (ndx == 0 || ndx == 1) p = "int"; break; + /* freebsd32_futimens */ + case 546: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* freebsd32_utimensat */ + case 547: + if (ndx == 0 || ndx == 1) + p = "int"; + break; default: break; }; diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c index 9d044784863b..8aefa3f7be13 100644 --- a/sys/kern/init_sysent.c +++ b/sys/kern/init_sysent.c @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/kern/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ #include "opt_compat.h" @@ -580,4 +580,6 @@ struct sysent sysent[] = { { AS(aio_mlock_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 543 = aio_mlock */ { AS(procctl_args), (sy_call_t *)sys_procctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 544 = procctl */ { AS(ppoll_args), (sy_call_t *)sys_ppoll, AUE_POLL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 545 = ppoll */ + { AS(futimens_args), (sy_call_t *)sys_futimens, AUE_FUTIMES, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 546 = futimens */ + { AS(utimensat_args), (sy_call_t *)sys_utimensat, AUE_FUTIMESAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 547 = utimensat */ }; diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c index 41f5cce8f1bd..e99ae94a2e50 100644 --- a/sys/kern/syscalls.c +++ b/sys/kern/syscalls.c @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/kern/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ const char *syscallnames[] = { @@ -553,4 +553,6 @@ const char *syscallnames[] = { "aio_mlock", /* 543 = aio_mlock */ "procctl", /* 544 = procctl */ "ppoll", /* 545 = ppoll */ + "futimens", /* 546 = futimens */ + "utimensat", /* 547 = utimensat */ }; diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c index d5c368df4d4f..c5d3b85fcd15 100644 --- a/sys/kern/systrace_args.c +++ b/sys/kern/systrace_args.c @@ -3382,6 +3382,24 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 4; break; } + /* futimens */ + case 546: { + struct futimens_args *p = params; + iarg[0] = p->fd; /* int */ + uarg[1] = (intptr_t) p->times; /* struct timespec * */ + *n_args = 2; + break; + } + /* utimensat */ + case 547: { + struct utimensat_args *p = params; + iarg[0] = p->fd; /* int */ + uarg[1] = (intptr_t) p->path; /* char * */ + uarg[2] = (intptr_t) p->times; /* struct timespec * */ + iarg[3] = p->flag; /* int */ + *n_args = 4; + break; + } default: *n_args = 0; break; @@ -9019,6 +9037,38 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) break; }; break; + /* futimens */ + case 546: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "struct timespec *"; + break; + default: + break; + }; + break; + /* utimensat */ + case 547: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "char *"; + break; + case 2: + p = "struct timespec *"; + break; + case 3: + p = "int"; + break; + default: + break; + }; + break; default: break; }; @@ -10962,6 +11012,16 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) if (ndx == 0 || ndx == 1) p = "int"; break; + /* futimens */ + case 546: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* utimensat */ + case 547: + if (ndx == 0 || ndx == 1) + p = "int"; + break; default: break; }; diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h index 42e52909fb52..54a450ff8c84 100644 --- a/sys/sys/syscall.h +++ b/sys/sys/syscall.h @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/kern/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ #define SYS_syscall 0 @@ -463,4 +463,6 @@ #define SYS_aio_mlock 543 #define SYS_procctl 544 #define SYS_ppoll 545 -#define SYS_MAXSYSCALL 546 +#define SYS_futimens 546 +#define SYS_utimensat 547 +#define SYS_MAXSYSCALL 548 diff --git a/sys/sys/syscall.mk b/sys/sys/syscall.mk index 294a1140b927..4e8e891c0d57 100644 --- a/sys/sys/syscall.mk +++ b/sys/sys/syscall.mk @@ -1,7 +1,7 @@ # FreeBSD system call names. # DO NOT EDIT-- this file is automatically generated. # $FreeBSD$ -# created from FreeBSD: head/sys/kern/syscalls.master 276654 2015-01-04 10:34:02Z dchagin +# created from FreeBSD: head/sys/kern/syscalls.master 277610 2015-01-23 21:07:08Z jilles MIASM = \ syscall.o \ exit.o \ @@ -410,4 +410,6 @@ MIASM = \ pipe2.o \ aio_mlock.o \ procctl.o \ - ppoll.o + ppoll.o \ + futimens.o \ + utimensat.o diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h index ecaaa593cdf1..71dc979fd913 100644 --- a/sys/sys/sysproto.h +++ b/sys/sys/sysproto.h @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 276654 2015-01-04 10:34:02Z dchagin + * created from FreeBSD: head/sys/kern/syscalls.master 277610 2015-01-23 21:07:08Z jilles */ #ifndef _SYS_SYSPROTO_H_ @@ -1819,6 +1819,16 @@ struct ppoll_args { char ts_l_[PADL_(const struct timespec *)]; const struct timespec * ts; char ts_r_[PADR_(const struct timespec *)]; char set_l_[PADL_(const sigset_t *)]; const sigset_t * set; char set_r_[PADR_(const sigset_t *)]; }; +struct futimens_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char times_l_[PADL_(struct timespec *)]; struct timespec * times; char times_r_[PADR_(struct timespec *)]; +}; +struct utimensat_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char times_l_[PADL_(struct timespec *)]; struct timespec * times; char times_r_[PADR_(struct timespec *)]; + char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)]; +}; int nosys(struct thread *, struct nosys_args *); void sys_sys_exit(struct thread *, struct sys_exit_args *); int sys_fork(struct thread *, struct fork_args *); @@ -2211,6 +2221,8 @@ int sys_pipe2(struct thread *, struct pipe2_args *); int sys_aio_mlock(struct thread *, struct aio_mlock_args *); int sys_procctl(struct thread *, struct procctl_args *); int sys_ppoll(struct thread *, struct ppoll_args *); +int sys_futimens(struct thread *, struct futimens_args *); +int sys_utimensat(struct thread *, struct utimensat_args *); #ifdef COMPAT_43 @@ -2917,6 +2929,8 @@ int freebsd7_shmctl(struct thread *, struct freebsd7_shmctl_args *); #define SYS_AUE_aio_mlock AUE_NULL #define SYS_AUE_procctl AUE_NULL #define SYS_AUE_ppoll AUE_POLL +#define SYS_AUE_futimens AUE_FUTIMES +#define SYS_AUE_utimensat AUE_FUTIMESAT #undef PAD_ #undef PADL_ From 27051ca14b0bf72310d5cd58f9c8e7355080a3e7 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Fri, 23 Jan 2015 21:34:08 +0000 Subject: [PATCH 25/50] Restore addr2line to cross tools Addr2line is not required for the build, and a per-arch binary is no longer required with the switch to the ELF Tool Chain. However, building these tools during the cross tools stage can be useful for developers who cross build HEAD from stable/10, and adds very little to the build time. Reviewed by: ian, imp Differential Revision: https://reviews.freebsd.org/D1583 --- Makefile.inc1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile.inc1 b/Makefile.inc1 index afa49408e688..0d0aea476918 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -1437,6 +1437,9 @@ _elftctools= lib/libelftc \ usr.bin/nm \ usr.bin/size \ usr.bin/strings +# These are not required by the build, but can be useful for developers who +# cross-build on a FreeBSD 10 host: +_elftctools+= usr.bin/addr2line .endif .endif From fda4e2154926094fb06ac910a62f7476b36b251d Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Fri, 23 Jan 2015 23:53:56 +0000 Subject: [PATCH 26/50] Fix panic in firewire and creation of invalid config ROM. (This change was supposed to be included in r277508.) sys/boot/i386/libfirewire/firewire.c: Fix configuration ROM generation count wrapping logic so that the generation count is never outside of allowed limits (0x2 -> 0xF). Submitted by: gibbs MFC after: 1 week MFC with: 277508 Sponsored by: Spectra Logic MFSpectraBSD: 1110685 on 2015/01/05 --- sys/boot/i386/libfirewire/firewire.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sys/boot/i386/libfirewire/firewire.c b/sys/boot/i386/libfirewire/firewire.c index 5edb67a4ecbe..8191a63d8b3d 100644 --- a/sys/boot/i386/libfirewire/firewire.c +++ b/sys/boot/i386/libfirewire/firewire.c @@ -233,7 +233,8 @@ fw_init_crom(struct fwohci_softc *sc) src->businfo.cyc_clk_acc = 100; src->businfo.max_rec = sc->maxrec; src->businfo.max_rom = MAXROM_4; - src->businfo.generation = 1; +#define FW_GENERATION_CHANGEABLE 2 + src->businfo.generation = FW_GENERATION_CHANGEABLE; src->businfo.link_spd = sc->speed; src->businfo.eui64.hi = sc->eui.hi; @@ -313,11 +314,14 @@ fw_crom(struct fwohci_softc *sc) src = &sc->crom_src_buf->src; crom_load(src, (uint32_t *)newrom, CROMSIZE); if (bcmp(newrom, sc->config_rom, CROMSIZE) != 0) { - /* bump generation and reload */ - src->businfo.generation ++; - /* generation must be between 0x2 and 0xF */ + /* Bump generation and reload. */ + src->businfo.generation++; + + /* Handle generation count wraps. */ if (src->businfo.generation < 2) - src->businfo.generation ++; + src->businfo.generation = 2; + + /* Recalculate CRC to account for generation change. */ crom_load(src, (uint32_t *)newrom, CROMSIZE); bcopy(newrom, (void *)sc->config_rom, CROMSIZE); } From 7cd27e6394967e11a984cf15448b6706cb6e9422 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Sat, 24 Jan 2015 00:04:34 +0000 Subject: [PATCH 27/50] Bump config(8) minor version for r277567. Config files built using this version that take advantage of the bugfix won't be buildable using older config(8). Submitted by: imp MFC after: 1 week MFC with: 277567 --- usr.sbin/config/configvers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/config/configvers.h b/usr.sbin/config/configvers.h index 56ca85cd692a..5c2937311d70 100644 --- a/usr.sbin/config/configvers.h +++ b/usr.sbin/config/configvers.h @@ -49,5 +49,5 @@ * * $FreeBSD$ */ -#define CONFIGVERS 600013 +#define CONFIGVERS 600014 #define MAJOR_VERS(x) ((x) / 100000) From e09ff1712993b61a4eb556aad094618e2b049eae Mon Sep 17 00:00:00 2001 From: Neel Natu Date: Sat, 24 Jan 2015 00:35:49 +0000 Subject: [PATCH 28/50] Add macro to identify AVIC capability (advanced virtual interrupt controller) in AMD processors. Submitted by: Dmitry Luhtionov (dmitryluhtionov@gmail.com) --- sys/amd64/vmm/amd/svm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/amd64/vmm/amd/svm.c b/sys/amd64/vmm/amd/svm.c index 31164d7c58da..bcd9efc4b200 100644 --- a/sys/amd64/vmm/amd/svm.c +++ b/sys/amd64/vmm/amd/svm.c @@ -80,6 +80,7 @@ SYSCTL_NODE(_hw_vmm, OID_AUTO, svm, CTLFLAG_RW, NULL, NULL); #define AMD_CPUID_SVM_DECODE_ASSIST BIT(7) /* Decode assist */ #define AMD_CPUID_SVM_PAUSE_INC BIT(10) /* Pause intercept filter. */ #define AMD_CPUID_SVM_PAUSE_FTH BIT(12) /* Pause filter threshold */ +#define AMD_CPUID_SVM_AVIC BIT(13) /* AVIC present */ #define VMCB_CACHE_DEFAULT (VMCB_CACHE_ASID | \ VMCB_CACHE_IOPM | \ From ff6fcf6e0bade26b80d8486a180a7775a33ce53f Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Sat, 24 Jan 2015 00:37:41 +0000 Subject: [PATCH 29/50] Add routing_test:static_ipv6_loopback_route_for_each_fib. It tests that all FIBs get a static IPv6 loopback route. Submitted by: asomers MFC after: 1 week Sponsored by: Spectra Logic MFSpectraBSD: 1048456 on 2014/03/13 1114523 on 2015/01/23 --- etc/tests/Makefile | 2 + etc/tests/rc.d/Makefile | 7 ++ etc/tests/rc.d/routing_test.sh | 138 +++++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 etc/tests/rc.d/Makefile create mode 100755 etc/tests/rc.d/routing_test.sh diff --git a/etc/tests/Makefile b/etc/tests/Makefile index 5aacd5b19e57..fd9efdaa566c 100644 --- a/etc/tests/Makefile +++ b/etc/tests/Makefile @@ -7,4 +7,6 @@ TESTSDIR= ${TESTSBASE}/etc .PATH: ${.CURDIR:H:H}/tests KYUAFILE= yes +TESTS_SUBDIRS+= rc.d + .include diff --git a/etc/tests/rc.d/Makefile b/etc/tests/rc.d/Makefile new file mode 100644 index 000000000000..368e8f4fc875 --- /dev/null +++ b/etc/tests/rc.d/Makefile @@ -0,0 +1,7 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/etc/rc.d + +ATF_TESTS_SH+= routing_test + +.include diff --git a/etc/tests/rc.d/routing_test.sh b/etc/tests/rc.d/routing_test.sh new file mode 100755 index 000000000000..693af232ea39 --- /dev/null +++ b/etc/tests/rc.d/routing_test.sh @@ -0,0 +1,138 @@ +# +# Copyright (c) 2014 Spectra Logic Corporation +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions, and the following disclaimer, +# without modification. +# 2. Redistributions in binary form must reproduce at minimum a disclaimer +# substantially similar to the "NO WARRANTY" disclaimer below +# ("Disclaimer") and any redistribution must be conditioned upon +# including a substantially similar Disclaimer requirement for further +# binary redistribution. +# +# NO WARRANTY +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGES. +# +# Authors: Alan Somers (Spectra Logic Corporation) +# +# $FreeBSD$ + +atf_test_case static_ipv6_loopback_route_for_each_fib cleanup +static_ipv6_loopback_route_for_each_fib_head() +{ + atf_set "descr" "Every FIB should have a static IPv6 loopback route" + atf_set "require.user" "root" + atf_set "require.config" "fibs" + atf_set "require.progs" "sysrc" +} +static_ipv6_loopback_route_for_each_fib_body() +{ + # Configure the TAP interface to use an RFC5737 nonrouteable address + # and a non-default fib + ADDR="192.0.2.2" + SUBNET="192.0.2.0" + MASK="24" + + # Check system configuration + if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then + atf_skip "This test requires net.add_addr_allfibs=0" + fi + + get_fibs 1 + get_tap + + # Configure a TAP interface in /etc/rc.conf. Register the sysrc + # variable for cleanup. + echo "ifconfig_${TAP}" >> "sysrc_vars_to_cleanup" + sysrc ifconfig_${TAP}="${ADDR}/${MASK} fib ${FIB0}" + + # Start the interface + service netif start ${TAP} + # Check for an IPv6 loopback route + setfib ${FIB0} netstat -rn -f inet6 | grep -q "^::1.*lo0$" + if [ 0 -eq $? ]; then + atf_pass + else + setfib ${FIB0} netstat -rn -f inet6 + atf_fail "Did not find an IPv6 loopback route" + fi +} +static_ipv6_loopback_route_for_each_fib_cleanup() +{ + cleanup_sysrc + cleanup_tap +} + +atf_init_test_cases() +{ + atf_add_test_case static_ipv6_loopback_route_for_each_fib +} + +# Looks up one or more fibs from the configuration data and validates them. +# Returns the results in the env varilables FIB0, FIB1, etc. +# parameter numfibs The number of fibs to lookup +get_fibs() +{ + NUMFIBS=$1 + net_fibs=`sysctl -n net.fibs` + i=0 + while [ $i -lt "$NUMFIBS" ]; do + fib=`atf_config_get "fibs" | \ + awk -v i=$(( i + 1 )) '{print $i}'` + echo "fib is ${fib}" + eval FIB${i}=${fib} + if [ "$fib" -ge "$net_fibs" ]; then + msg="The ${i}th configured fib is ${fub}, which is " + msg="$msg not less than net.fibs (${net_fibs})" + atf_skip "$msg" + fi + i=$(( $i + 1 )) + done +} + + +# Creates a new tap(4) interface, registers it for cleanup, and returns the +# name via the environment variable TAP +get_tap() +{ + local TAPN=0 + while ! ifconfig tap${TAPN} create > /dev/null 2>&1; do + if [ "$TAPN" -ge 8 ]; then + atf_skip "Could not create a tap(4) interface" + else + TAPN=$(($TAPN + 1)) + fi + done + local TAPD=tap${TAPN} + # Record the TAP device so we can clean it up later + echo ${TAPD} >> "tap_devices_to_cleanup" + TAP=${TAPD} +} + +cleanup_sysrc() +{ + for var in `cat "sysrc_vars_to_cleanup"`; do + sysrc -x $var + done +} + +cleanup_tap() +{ + for TAPD in `cat "tap_devices_to_cleanup"`; do + ifconfig ${TAPD} destroy + done +} From b4e360d2392414dcb3860fbbc01b23fd989fe2ce Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Sat, 24 Jan 2015 00:43:02 +0000 Subject: [PATCH 30/50] When creating or updating a node, use vfs_timestamp() for "now" instead of gethrestime(), to allow the administrator to decide the appropriate timestamp precision instead of always using nanosecond precision. --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c index 44b782096b20..d92571293325 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c @@ -794,7 +794,7 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr, gen = vap->va_nblocks; /* ditto */ } else { obj = 0; - gethrestime(&now); + vfs_timestamp(&now); gen = dmu_tx_get_txg(tx); } @@ -1426,7 +1426,7 @@ zfs_tstamp_update_setup(znode_t *zp, uint_t flag, uint64_t mtime[2], { timestruc_t now; - gethrestime(&now); + vfs_timestamp(&now); if (have_tx) { /* will sa_bulk_update happen really soon? */ zp->z_atime_dirty = 0; From 5967db8dcaf95e0be3059d487efb1e944080e8d4 Mon Sep 17 00:00:00 2001 From: Oleksandr Tymoshenko Date: Sat, 24 Jan 2015 01:53:28 +0000 Subject: [PATCH 31/50] After interrupt read value from register to make sure it reached hardware. This should fix "Spurious inteerupt" message Suggested by ian@ --- sys/arm/ti/am335x/am335x_lcd.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/arm/ti/am335x/am335x_lcd.c b/sys/arm/ti/am335x/am335x_lcd.c index ada08011b64c..4fd811cc2eac 100644 --- a/sys/arm/ti/am335x/am335x_lcd.c +++ b/sys/arm/ti/am335x/am335x_lcd.c @@ -356,6 +356,8 @@ am335x_lcd_intr(void *arg) reg = LCD_READ4(sc, LCD_IRQSTATUS); LCD_WRITE4(sc, LCD_IRQSTATUS, reg); + /* Read value back to make sure it reached the hardware */ + reg = LCD_READ4(sc, LCD_IRQSTATUS); if (reg & IRQ_SYNC_LOST) { reg = LCD_READ4(sc, LCD_RASTER_CTRL); @@ -401,6 +403,8 @@ am335x_lcd_intr(void *arg) done: LCD_WRITE4(sc, LCD_END_OF_INT_IND, 0); + /* Read value back to make sure it reached the hardware */ + reg = LCD_READ4(sc, LCD_END_OF_INT_IND); } static int From 01fc52e76db89d023c1cc762be8efc7f95ef3994 Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Sat, 24 Jan 2015 01:58:15 +0000 Subject: [PATCH 32/50] Fix typo in r277561. --- sys/powerpc/aim/machdep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/powerpc/aim/machdep.c b/sys/powerpc/aim/machdep.c index a6d254b3f145..020c07ab48f1 100644 --- a/sys/powerpc/aim/machdep.c +++ b/sys/powerpc/aim/machdep.c @@ -535,7 +535,7 @@ powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offset_t ofentry, void *mdp) #endif bcopy(&alitrap, (void *)(EXC_ALI + trap_offset), (size_t)&aliend - (size_t)&alitrap); - bcopy(&dsitrap, (void *)(EXC_DSI + trap_offset), (size_t)&dsitrap - + bcopy(&dsitrap, (void *)(EXC_DSI + trap_offset), (size_t)&dsiend - (size_t)&dsitrap); bcopy(generictrap, (void *)EXC_ISI, trapsize); #ifdef __powerpc64__ From 7cf3e8e4c353e86d04df84d38b6489b048a6cd2c Mon Sep 17 00:00:00 2001 From: Navdeep Parhar Date: Sat, 24 Jan 2015 04:41:14 +0000 Subject: [PATCH 33/50] Make sure the compiler flag to get cxgbe(4) to compile with gcc is used only when gcc is being used. This is what r277225 should have been. Suggested by: dim@ --- sys/conf/files | 2 +- sys/modules/cxgbe/if_cxgbe/Makefile | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/conf/files b/sys/conf/files index 5895cce88ab7..ee8a5381be9c 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1141,7 +1141,7 @@ dev/cxgb/sys/uipc_mvec.c optional cxgb pci \ dev/cxgb/cxgb_t3fw.c optional cxgb cxgb_t3fw \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgbe/t4_mp_ring.c optional cxgbe pci \ - compile-with "${NORMAL_C} -I$S/dev/cxgbe -fms-extensions" + compile-with "${NORMAL_C} -I$S/dev/cxgbe ${GCC_MS_EXTENSIONS}" dev/cxgbe/t4_main.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_netmap.c optional cxgbe pci \ diff --git a/sys/modules/cxgbe/if_cxgbe/Makefile b/sys/modules/cxgbe/if_cxgbe/Makefile index 9c0c857a8e98..32347f468b1e 100644 --- a/sys/modules/cxgbe/if_cxgbe/Makefile +++ b/sys/modules/cxgbe/if_cxgbe/Makefile @@ -23,6 +23,7 @@ SRCS+= t4_tracer.c # Provide the timestamp of a packet in its header mbuf. #CFLAGS+= -DT4_PKT_TIMESTAMP -CFLAGS+= -I${CXGBE} -fms-extensions +CFLAGS+= -I${CXGBE} .include +CFLAGS+= ${GCC_MS_EXTENSIONS} From 2fae2ab4c7a265561f9c2e9b22cb44e98db7cd4f Mon Sep 17 00:00:00 2001 From: Xin LI Date: Sat, 24 Jan 2015 06:06:46 +0000 Subject: [PATCH 34/50] Don't include libcapsicum headers when requested. Reported by: luigi MFC after: 14 days X-MFC-with: r276788 --- contrib/tcpdump/tcpdump.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/tcpdump/tcpdump.c b/contrib/tcpdump/tcpdump.c index 9c9609b93257..b1630818f615 100644 --- a/contrib/tcpdump/tcpdump.c +++ b/contrib/tcpdump/tcpdump.c @@ -77,12 +77,12 @@ extern int SIZE_BUF; #ifdef __FreeBSD__ #include #include +#endif /* __FreeBSD__ */ +#ifdef HAVE_CAPSICUM #include #include #include #include -#endif /* __FreeBSD__ */ -#ifdef HAVE_CAPSICUM #include #include #include @@ -966,8 +966,8 @@ main(int argc, char **argv) FILE *VFile; #ifdef HAVE_CAPSICUM cap_rights_t rights; - int cansandbox; #endif /* HAVE_CAPSICUM */ + int cansandbox; #ifdef WIN32 if(wsockinit() != 0) return 1; From f43f9c89f2599e574d5e812b916b2c46131d4a34 Mon Sep 17 00:00:00 2001 From: Luigi Rizzo Date: Sat, 24 Jan 2015 08:48:05 +0000 Subject: [PATCH 35/50] do not strip /stand This is a temporary workaround until the elftoolchain's version of strip is fixed: The previous (GNU) strip, when acting on a file with multiple links, would modify the one and only file in place (which means creating a new stripped copy, and then writing it back to the original). The new version from elftoolchain creates the new file and then unlinks the old one and renames the new. With multiple hard links, the original remains alive. In the /stand directory, this ends up creating 80+ copies of the same file. --- release/picobsd/build/picobsd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/picobsd/build/picobsd b/release/picobsd/build/picobsd index 19a983949277..728e9f4e3d68 100755 --- a/release/picobsd/build/picobsd +++ b/release/picobsd/build/picobsd @@ -734,8 +734,8 @@ populate_mfs_tree() { [ -n "${copy_files}" ] && do_copyfiles ${dst} copy_files do_copyfiles_user ${dst} || true [ -n "${links}" ] && do_links ${dst} links - strip ${dst}/libexec/* ${dst}/lib/* ${dst}/stand/* 2> /dev/null || true - + strip ${dst}/libexec/* ${dst}/lib/* 2> /dev/null || true + # strip ${dst}/stand/* 2> /dev/null || true # The 'import_files' mechanism is deprecated, as it requires # root permissions to follow the symlinks, and also does # not let you rename the entries. @@ -756,7 +756,7 @@ populate_mfs_tree() { # override the owner echo "/set uid=0 gid=0" > mtree.out mtree -ic -p ${dst} -k "" >> mtree.out - log "mtre.out at ${BUILDDIR}/mtree.out" + log "mtree.out at ${BUILDDIR}/mtree.out size ${MFS_SIZE}k" makefs -t ffs -o bsize=4096 -o fsize=512 \ -s ${MFS_SIZE}k -f 1000 -F mtree.out ${c_fs} ${dst} ls -l ${c_fs} ) From 51782e3a89a7dd45234d598ae0872ff2e9e16da7 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 24 Jan 2015 12:43:36 +0000 Subject: [PATCH 36/50] Provide individual prototype and generate macros for the red-black tree. This helps to reduce code size in statically linked applications. Submitted by: Sebastian Huber MFC after: 2 weeks --- share/man/man3/tree.3 | 71 ++++++++++++++++++++++++++++++++++- sys/sys/tree.h | 86 ++++++++++++++++++++++++++++++------------- 2 files changed, 131 insertions(+), 26 deletions(-) diff --git a/share/man/man3/tree.3 b/share/man/man3/tree.3 index 2e9c63cf751e..ea70506ea025 100644 --- a/share/man/man3/tree.3 +++ b/share/man/man3/tree.3 @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 10, 2013 +.Dd January 24, 2015 .Dt TREE 3 .Os .Sh NAME @@ -53,8 +53,26 @@ .Nm SPLAY_REMOVE , .Nm RB_PROTOTYPE , .Nm RB_PROTOTYPE_STATIC , +.Nm RB_PROTOTYPE_INSERT , +.Nm RB_PROTOTYPE_INSERT_COLOR , +.Nm RB_PROTOTYPE_REMOVE , +.Nm RB_PROTOTYPE_REMOVE_COLOR , +.Nm RB_PROTOTYPE_FIND , +.Nm RB_PROTOTYPE_NFIND , +.Nm RB_PROTOTYPE_NEXT , +.Nm RB_PROTOTYPE_PREV , +.Nm RB_PROTOTYPE_MINMAX , .Nm RB_GENERATE , .Nm RB_GENERATE_STATIC , +.Nm RB_GENERATE_INSERT , +.Nm RB_GENERATE_INSERT_COLOR , +.Nm RB_GENERATE_REMOVE , +.Nm RB_GENERATE_REMOVE_COLOR , +.Nm RB_GENERATE_FIND , +.Nm RB_GENERATE_NFIND , +.Nm RB_GENERATE_NEXT , +.Nm RB_GENERATE_PREV , +.Nm RB_GENERATE_MINMAX , .Nm RB_ENTRY , .Nm RB_HEAD , .Nm RB_INITIALIZER , @@ -111,8 +129,26 @@ .Fn SPLAY_REMOVE NAME "SPLAY_HEAD *head" "struct TYPE *elm" .Fn RB_PROTOTYPE NAME TYPE FIELD CMP .Fn RB_PROTOTYPE_STATIC NAME TYPE FIELD CMP +.Fn RB_PROTOTYPE_INSERT NAME TYPE ATTR +.Fn RB_PROTOTYPE_INSERT_COLOR NAME TYPE ATTR +.Fn RB_PROTOTYPE_REMOVE NAME TYPE ATTR +.Fn RB_PROTOTYPE_REMOVE_COLOR NAME TYPE ATTR +.Fn RB_PROTOTYPE_FIND NAME TYPE ATTR +.Fn RB_PROTOTYPE_NFIND NAME TYPE ATTR +.Fn RB_PROTOTYPE_NEXT NAME TYPE ATTR +.Fn RB_PROTOTYPE_PREV NAME TYPE ATTR +.Fn RB_PROTOTYPE_MINMAX NAME TYPE ATTR .Fn RB_GENERATE NAME TYPE FIELD CMP .Fn RB_GENERATE_STATIC NAME TYPE FIELD CMP +.Fn RB_GENERATE_INSERT NAME TYPE FIELD CMP ATTR +.Fn RB_GENERATE_INSERT_COLOR NAME TYPE FIELD ATTR +.Fn RB_GENERATE_REMOVE NAME TYPE FIELD ATTR +.Fn RB_GENERATE_REMOVE_COLOR NAME TYPE FIELD ATTR +.Fn RB_GENERATE_FIND NAME TYPE FIELD CMP ATTR +.Fn RB_GENERATE_NFIND NAME TYPE FIELD CMP ATTR +.Fn RB_GENERATE_NEXT NAME TYPE FIELD ATTR +.Fn RB_GENERATE_PREV NAME TYPE FIELD ATTR +.Fn RB_GENERATE_MINMAX NAME TYPE FIELD ATTR .Fn RB_ENTRY TYPE .Fn RB_HEAD HEADNAME TYPE .Fn RB_INITIALIZER "RB_HEAD *head" @@ -377,6 +413,27 @@ The .Fa FIELD argument is the name of the element defined by .Fn RB_ENTRY . +Individual prototypes can be declared with +.Fn RB_PROTOTYPE_INSERT , +.Fn RB_PROTOTYPE_INSERT_COLOR , +.Fn RB_PROTOTYPE_REMOVE , +.Fn RB_PROTOTYPE_REMOVE_COLOR , +.Fn RB_PROTOTYPE_FIND , +.Fn RB_PROTOTYPE_NFIND , +.Fn RB_PROTOTYPE_NEXT , +.Fn RB_PROTOTYPE_PREV , +and +.Fn RB_PROTOTYPE_MINMAX +in case not all functions are required. The individual prototype macros expect +.Fa NAME , +.Fa TYPE , +and +.Fa ATTR +arguments. The +.Fa ATTR +argument must be empty for global functions or +.Fa static +for static functions. .Pp The function bodies are generated with the .Fn RB_GENERATE @@ -388,6 +445,18 @@ These macros take the same arguments as the and .Fn RB_PROTOTYPE_STATIC macros, but should be used only once. +As an alternative individual function bodies are generated with the +.Fn RB_GENERATE_INSERT , +.Fn RB_GENERATE_INSERT_COLOR , +.Fn RB_GENERATE_REMOVE , +.Fn RB_GENERATE_REMOVE_COLOR , +.Fn RB_GENERATE_FIND , +.Fn RB_GENERATE_NFIND , +.Fn RB_GENERATE_NEXT , +.Fn RB_GENERATE_PREV , +and +.Fn RB_GENERATE_MINMAX +macros. .Pp Finally, the diff --git a/sys/sys/tree.h b/sys/sys/tree.h index 1cce727868ae..c9df686fbb13 100644 --- a/sys/sys/tree.h +++ b/sys/sys/tree.h @@ -383,16 +383,33 @@ struct { \ #define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) #define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ -attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \ -attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\ -attr struct type *name##_RB_REMOVE(struct name *, struct type *); \ -attr struct type *name##_RB_INSERT(struct name *, struct type *); \ -attr struct type *name##_RB_FIND(struct name *, struct type *); \ -attr struct type *name##_RB_NFIND(struct name *, struct type *); \ -attr struct type *name##_RB_NEXT(struct type *); \ -attr struct type *name##_RB_PREV(struct type *); \ -attr struct type *name##_RB_MINMAX(struct name *, int); \ - \ + RB_PROTOTYPE_INSERT_COLOR(name, type, attr); \ + RB_PROTOTYPE_REMOVE_COLOR(name, type, attr); \ + RB_PROTOTYPE_INSERT(name, type, attr); \ + RB_PROTOTYPE_REMOVE(name, type, attr); \ + RB_PROTOTYPE_FIND(name, type, attr); \ + RB_PROTOTYPE_NFIND(name, type, attr); \ + RB_PROTOTYPE_NEXT(name, type, attr); \ + RB_PROTOTYPE_PREV(name, type, attr); \ + RB_PROTOTYPE_MINMAX(name, type, attr); +#define RB_PROTOTYPE_INSERT_COLOR(name, type, attr) \ + attr void name##_RB_INSERT_COLOR(struct name *, struct type *) +#define RB_PROTOTYPE_REMOVE_COLOR(name, type, attr) \ + attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *) +#define RB_PROTOTYPE_REMOVE(name, type, attr) \ + attr struct type *name##_RB_REMOVE(struct name *, struct type *) +#define RB_PROTOTYPE_INSERT(name, type, attr) \ + attr struct type *name##_RB_INSERT(struct name *, struct type *) +#define RB_PROTOTYPE_FIND(name, type, attr) \ + attr struct type *name##_RB_FIND(struct name *, struct type *) +#define RB_PROTOTYPE_NFIND(name, type, attr) \ + attr struct type *name##_RB_NFIND(struct name *, struct type *) +#define RB_PROTOTYPE_NEXT(name, type, attr) \ + attr struct type *name##_RB_NEXT(struct type *) +#define RB_PROTOTYPE_PREV(name, type, attr) \ + attr struct type *name##_RB_PREV(struct type *) +#define RB_PROTOTYPE_MINMAX(name, type, attr) \ + attr struct type *name##_RB_MINMAX(struct name *, int) /* Main rb operation. * Moves node close to the key of elm to top @@ -402,6 +419,17 @@ attr struct type *name##_RB_MINMAX(struct name *, int); \ #define RB_GENERATE_STATIC(name, type, field, cmp) \ RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) #define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ + RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ + RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ + RB_GENERATE_INSERT(name, type, field, cmp, attr) \ + RB_GENERATE_REMOVE(name, type, field, attr) \ + RB_GENERATE_FIND(name, type, field, cmp, attr) \ + RB_GENERATE_NFIND(name, type, field, cmp, attr) \ + RB_GENERATE_NEXT(name, type, field, attr) \ + RB_GENERATE_PREV(name, type, field, attr) \ + RB_GENERATE_MINMAX(name, type, field, attr) + +#define RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ attr void \ name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ { \ @@ -444,8 +472,9 @@ name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ } \ } \ RB_COLOR(head->rbh_root, field) = RB_BLACK; \ -} \ - \ +} + +#define RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ attr void \ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ { \ @@ -522,8 +551,9 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) } \ if (elm) \ RB_COLOR(elm, field) = RB_BLACK; \ -} \ - \ +} + +#define RB_GENERATE_REMOVE(name, type, field, attr) \ attr struct type * \ name##_RB_REMOVE(struct name *head, struct type *elm) \ { \ @@ -590,7 +620,8 @@ color: \ name##_RB_REMOVE_COLOR(head, parent, child); \ return (old); \ } \ - \ + +#define RB_GENERATE_INSERT(name, type, field, cmp, attr) \ /* Inserts a node into the RB tree */ \ attr struct type * \ name##_RB_INSERT(struct name *head, struct type *elm) \ @@ -620,8 +651,9 @@ name##_RB_INSERT(struct name *head, struct type *elm) \ RB_ROOT(head) = elm; \ name##_RB_INSERT_COLOR(head, elm); \ return (NULL); \ -} \ - \ +} + +#define RB_GENERATE_FIND(name, type, field, cmp, attr) \ /* Finds the node with the same key as elm */ \ attr struct type * \ name##_RB_FIND(struct name *head, struct type *elm) \ @@ -638,8 +670,9 @@ name##_RB_FIND(struct name *head, struct type *elm) \ return (tmp); \ } \ return (NULL); \ -} \ - \ +} + +#define RB_GENERATE_NFIND(name, type, field, cmp, attr) \ /* Finds the first node greater than or equal to the search key */ \ attr struct type * \ name##_RB_NFIND(struct name *head, struct type *elm) \ @@ -659,8 +692,9 @@ name##_RB_NFIND(struct name *head, struct type *elm) \ return (tmp); \ } \ return (res); \ -} \ - \ +} + +#define RB_GENERATE_NEXT(name, type, field, attr) \ /* ARGSUSED */ \ attr struct type * \ name##_RB_NEXT(struct type *elm) \ @@ -681,8 +715,9 @@ name##_RB_NEXT(struct type *elm) \ } \ } \ return (elm); \ -} \ - \ +} + +#define RB_GENERATE_PREV(name, type, field, attr) \ /* ARGSUSED */ \ attr struct type * \ name##_RB_PREV(struct type *elm) \ @@ -703,8 +738,9 @@ name##_RB_PREV(struct type *elm) \ } \ } \ return (elm); \ -} \ - \ +} + +#define RB_GENERATE_MINMAX(name, type, field, attr) \ attr struct type * \ name##_RB_MINMAX(struct name *head, int val) \ { \ From 8f4548ff25674316d5b8fe06cd3423c8eb27caf5 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 24 Jan 2015 12:51:15 +0000 Subject: [PATCH 37/50] Remove Giant from /dev/mem and /dev/kmem. It is definitely not needed for i386, and from the code inspection, nothing in the arm/mips/sparc64 implementations depends on it. Discussed with: imp, nwhitehorn Sponsored by: The FreeBSD Foundation MFC after: 3 weeks --- sys/arm/arm/mem.c | 2 -- sys/dev/mem/memdev.c | 2 +- sys/i386/i386/mem.c | 4 ---- sys/mips/mips/mem.c | 2 -- sys/sparc64/sparc64/mem.c | 2 -- 5 files changed, 1 insertion(+), 11 deletions(-) diff --git a/sys/arm/arm/mem.c b/sys/arm/arm/mem.c index 460a00495101..30d4b1d8ab00 100644 --- a/sys/arm/arm/mem.c +++ b/sys/arm/arm/mem.c @@ -82,8 +82,6 @@ memrw(struct cdev *dev, struct uio *uio, int flags) int error = 0; vm_offset_t addr, eaddr; - GIANT_REQUIRED; - while (uio->uio_resid > 0 && error == 0) { iov = uio->uio_iov; if (iov->iov_len == 0) { diff --git a/sys/dev/mem/memdev.c b/sys/dev/mem/memdev.c index 37bad1538f7f..c3d1af1ac3a2 100644 --- a/sys/dev/mem/memdev.c +++ b/sys/dev/mem/memdev.c @@ -52,7 +52,7 @@ static struct cdev *memdev, *kmemdev; static struct cdevsw mem_cdevsw = { .d_version = D_VERSION, - .d_flags = D_MEM|D_NEEDGIANT, + .d_flags = D_MEM, .d_open = memopen, .d_read = memrw, .d_write = memrw, diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c index 9c83f47428f0..b036bd3ec3c7 100644 --- a/sys/i386/i386/mem.c +++ b/sys/i386/i386/mem.c @@ -86,10 +86,6 @@ memrw(struct cdev *dev, struct uio *uio, int flags) int error = 0; vm_offset_t addr; - /* XXX UPS Why ? */ - GIANT_REQUIRED; - - if (dev2unit(dev) != CDEV_MINOR_MEM && dev2unit(dev) != CDEV_MINOR_KMEM) return EIO; diff --git a/sys/mips/mips/mem.c b/sys/mips/mips/mem.c index d40c424888af..08bb6b094c4a 100644 --- a/sys/mips/mips/mem.c +++ b/sys/mips/mips/mem.c @@ -85,8 +85,6 @@ memrw(struct cdev *dev, struct uio *uio, int flags) cnt = 0; error = 0; - GIANT_REQUIRED; - pmap_page_init(&m); while (uio->uio_resid > 0 && !error) { iov = uio->uio_iov; diff --git a/sys/sparc64/sparc64/mem.c b/sys/sparc64/sparc64/mem.c index d09f6b86771e..6bd52253666c 100644 --- a/sys/sparc64/sparc64/mem.c +++ b/sys/sparc64/sparc64/mem.c @@ -99,8 +99,6 @@ memrw(struct cdev *dev, struct uio *uio, int flags) error = 0; ova = 0; - GIANT_REQUIRED; - while (uio->uio_resid > 0 && error == 0) { iov = uio->uio_iov; if (iov->iov_len == 0) { From f0583578a1f2577f999016a51f0d01fbe7851898 Mon Sep 17 00:00:00 2001 From: Ruslan Bukin Date: Sat, 24 Jan 2015 13:07:07 +0000 Subject: [PATCH 38/50] Add support for audio transmitting, include drivers for: o Digital Audio Multiplexer (AUDMUX) o Smart Direct Memory Access Controller (SDMA) o Synchronous Serial Interface (SSI) Disable by default as it depends on SDMA firmware. Sponsored by: Machdep, Inc. --- sys/arm/freescale/imx/files.imx6 | 19 + sys/arm/freescale/imx/imx6_anatop.c | 21 + sys/arm/freescale/imx/imx6_anatopreg.h | 3 + sys/arm/freescale/imx/imx6_anatopvar.h | 2 + sys/arm/freescale/imx/imx6_audmux.c | 159 +++++ sys/arm/freescale/imx/imx6_ccm.c | 54 +- sys/arm/freescale/imx/imx6_ccmreg.h | 20 + sys/arm/freescale/imx/imx6_sdma.c | 518 +++++++++++++++ sys/arm/freescale/imx/imx6_sdma.h | 245 +++++++ sys/arm/freescale/imx/imx6_ssi.c | 855 +++++++++++++++++++++++++ sys/arm/freescale/imx/imx_ccmvar.h | 1 + sys/boot/fdt/dts/arm/apalis-imx6.dts | 20 +- sys/boot/fdt/dts/arm/imx6.dtsi | 8 +- 13 files changed, 1920 insertions(+), 5 deletions(-) create mode 100644 sys/arm/freescale/imx/imx6_audmux.c create mode 100644 sys/arm/freescale/imx/imx6_sdma.c create mode 100644 sys/arm/freescale/imx/imx6_sdma.h create mode 100644 sys/arm/freescale/imx/imx6_ssi.c diff --git a/sys/arm/freescale/imx/files.imx6 b/sys/arm/freescale/imx/files.imx6 index df86ef9d596a..de1fc41000b0 100644 --- a/sys/arm/freescale/imx/files.imx6 +++ b/sys/arm/freescale/imx/files.imx6 @@ -28,6 +28,9 @@ arm/freescale/imx/imx_machdep.c standard arm/freescale/imx/imx_gpt.c standard arm/freescale/imx/imx_gpio.c optional gpio arm/freescale/imx/imx_i2c.c optional fsliic +arm/freescale/imx/imx6_sdma.c optional sdma +arm/freescale/imx/imx6_audmux.c optional sound +arm/freescale/imx/imx6_ssi.c optional sound # # Optional devices. @@ -52,3 +55,19 @@ arm/freescale/imx/imx6_usbphy.c optional ehci # Not ready yet... # #arm/freescale/imx/imx51_ipuv3.c optional sc + +# SDMA firmware +sdma_fw.c optional sdma_fw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk sdma-imx6q-to1.bin:sdma_fw -msdma -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "sdma_fw.c" +sdma-imx6q-to1.fwo optional sdma_fw \ + dependency "sdma-imx6q-to1.bin" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} sdma-imx6q-to1.bin" \ + no-implicit-rule \ + clean "sdma-imx6q-to1.fwo" +sdma-imx6q-to1.bin optional sdma_fw \ + dependency "$S/contrib/dev/imx/sdma-imx6q-to1.bin.uu" \ + compile-with "uudecode < $S/contrib/dev/imx/sdma-imx6q-to1.bin.uu" \ + no-obj no-implicit-rule \ + clean "sdma-imx6q-to1.bin" diff --git a/sys/arm/freescale/imx/imx6_anatop.c b/sys/arm/freescale/imx/imx6_anatop.c index fab28b3732bd..644ac7fa7770 100644 --- a/sys/arm/freescale/imx/imx6_anatop.c +++ b/sys/arm/freescale/imx/imx6_anatop.c @@ -710,6 +710,27 @@ imx6_anatop_attach(device_t dev) return (err); } +uint32_t +pll4_configure_output(uint32_t mfi, uint32_t mfn, uint32_t mfd) +{ + int reg; + + /* + * Audio PLL (PLL4). + * PLL output frequency = Fref * (DIV_SELECT + NUM/DENOM) + */ + + reg = (IMX6_ANALOG_CCM_PLL_AUDIO_ENABLE); + reg &= ~(IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_MASK << \ + IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_SHIFT); + reg |= (mfi << IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_SHIFT); + imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_AUDIO, reg); + imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_AUDIO_NUM, mfn); + imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_AUDIO_DENOM, mfd); + + return (0); +} + static int imx6_anatop_probe(device_t dev) { diff --git a/sys/arm/freescale/imx/imx6_anatopreg.h b/sys/arm/freescale/imx/imx6_anatopreg.h index bb75735c521b..a155249ec00d 100644 --- a/sys/arm/freescale/imx/imx6_anatopreg.h +++ b/sys/arm/freescale/imx/imx6_anatopreg.h @@ -58,6 +58,9 @@ #define IMX6_ANALOG_CCM_PLL_SYS_NUM 0x050 #define IMX6_ANALOG_CCM_PLL_SYS_DENOM 0x060 #define IMX6_ANALOG_CCM_PLL_AUDIO 0x070 +#define IMX6_ANALOG_CCM_PLL_AUDIO_ENABLE (1 << 13) +#define IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_SHIFT 0 +#define IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_MASK 0x7f #define IMX6_ANALOG_CCM_PLL_AUDIO_SET 0x074 #define IMX6_ANALOG_CCM_PLL_AUDIO_CLR 0x078 #define IMX6_ANALOG_CCM_PLL_AUDIO_TOG 0x07C diff --git a/sys/arm/freescale/imx/imx6_anatopvar.h b/sys/arm/freescale/imx/imx6_anatopvar.h index 5ede71187e6d..4ebe672dfdab 100644 --- a/sys/arm/freescale/imx/imx6_anatopvar.h +++ b/sys/arm/freescale/imx/imx6_anatopvar.h @@ -42,4 +42,6 @@ void imx6_anatop_write_4(bus_size_t _offset, uint32_t _value); uint32_t imx6_get_cpu_clock(void); +uint32_t pll4_configure_output(uint32_t mfi, uint32_t mfn, uint32_t mfd); + #endif diff --git a/sys/arm/freescale/imx/imx6_audmux.c b/sys/arm/freescale/imx/imx6_audmux.c new file mode 100644 index 000000000000..4ea21094784d --- /dev/null +++ b/sys/arm/freescale/imx/imx6_audmux.c @@ -0,0 +1,159 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * i.MX6 Digital Audio Multiplexer (AUDMUX) + * Chapter 16, i.MX 6Dual/6Quad Applications Processor Reference Manual, + * Rev. 1, 04/2013 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#define READ4(_sc, _reg) \ + bus_space_read_4(_sc->bst, _sc->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4(_sc->bst, _sc->bsh, _reg, _val) + +#define AUDMUX_PTCR(n) (0x8 * (n - 1)) /* Port Timing Control Register */ +#define PTCR_TFS_DIR (1 << 31) /* Transmit Frame Sync Direction Control */ +#define PTCR_TFSEL_S 27 /* Transmit Frame Sync Select */ +#define PTCR_TFSEL_M 0xf +#define PTCR_TCLKDIR (1 << 26) /* Transmit Clock Direction Control */ +#define PTCR_TCSEL_S 22 /* Transmit Clock Select. */ +#define PTCR_TCSEL_M 0xf +#define PTCR_RFS_DIR (1 << 21) /* Receive Frame Sync Direction Control */ +#define PTCR_SYN (1 << 11) +#define AUDMUX_PDCR(n) (0x8 * (n - 1) + 0x4) /* Port Data Control Reg */ +#define PDCR_RXDSEL_S 13 /* Receive Data Select */ +#define PDCR_RXDSEL_M 0x3 +#define PDCR_RXDSEL_PORT(n) (n - 1) + +struct audmux_softc { + struct resource *res[1]; + bus_space_tag_t bst; + bus_space_handle_t bsh; + void *ih; +}; + +static struct resource_spec audmux_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static int +audmux_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "fsl,imx6q-audmux")) + return (ENXIO); + + device_set_desc(dev, "i.MX6 Digital Audio Multiplexer"); + return (BUS_PROBE_DEFAULT); +} + +static int +audmux_configure(struct audmux_softc *sc, + int ssi_port, int audmux_port) +{ + uint32_t reg; + + /* Direction: output */ + reg = (PTCR_TFS_DIR | PTCR_TCLKDIR | PTCR_SYN); + WRITE4(sc, AUDMUX_PTCR(audmux_port), reg); + + /* Select source */ + reg = (PDCR_RXDSEL_PORT(ssi_port) << PDCR_RXDSEL_S); + WRITE4(sc, AUDMUX_PDCR(audmux_port), reg); + + return (0); +} + +static int +audmux_attach(device_t dev) +{ + struct audmux_softc *sc; + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, audmux_spec, sc->res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + /* Memory interface */ + sc->bst = rman_get_bustag(sc->res[0]); + sc->bsh = rman_get_bushandle(sc->res[0]); + + /* + * Direct SSI1 output to AUDMUX5 pins. + * TODO: dehardcore this. + */ + audmux_configure(sc, 1, 5); + + return (0); +}; + +static device_method_t audmux_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, audmux_probe), + DEVMETHOD(device_attach, audmux_attach), + { 0, 0 } +}; + +static driver_t audmux_driver = { + "audmux", + audmux_methods, + sizeof(struct audmux_softc), +}; + +static devclass_t audmux_devclass; + +DRIVER_MODULE(audmux, simplebus, audmux_driver, audmux_devclass, 0, 0); diff --git a/sys/arm/freescale/imx/imx6_ccm.c b/sys/arm/freescale/imx/imx6_ccm.c index 2c80bd9ee030..8d7f14f13076 100644 --- a/sys/arm/freescale/imx/imx6_ccm.c +++ b/sys/arm/freescale/imx/imx6_ccm.c @@ -94,7 +94,7 @@ ccm_init_gates(struct ccm_softc *sc) WR4(sc, CCM_CCGR2, 0x0fffffc0); /* ipmux & ipsync (bridges), iomux, i2c */ WR4(sc, CCM_CCGR3, 0x3ff00000); /* DDR memory controller */ WR4(sc, CCM_CCGR4, 0x0000f300); /* pl301 bus crossbar */ - WR4(sc, CCM_CCGR5, 0x0f000000); /* uarts */ + WR4(sc, CCM_CCGR5, 0x0ffc00c0); /* uarts, ssi, sdma */ WR4(sc, CCM_CCGR6, 0x000000ff); /* usdhc 1-4 */ } @@ -179,6 +179,58 @@ ccm_probe(device_t dev) return (BUS_PROBE_DEFAULT); } +void +imx_ccm_ssi_configure(device_t _ssidev) +{ + struct ccm_softc *sc; + uint32_t reg; + + sc = ccm_sc; + + /* + * Select PLL4 (Audio PLL) clock multiplexer as source. + * PLL output frequency = Fref * (DIV_SELECT + NUM/DENOM). + */ + + reg = RD4(sc, CCM_CSCMR1); + reg &= ~(SSI_CLK_SEL_M << SSI1_CLK_SEL_S); + reg |= (SSI_CLK_SEL_PLL4 << SSI1_CLK_SEL_S); + reg &= ~(SSI_CLK_SEL_M << SSI2_CLK_SEL_S); + reg |= (SSI_CLK_SEL_PLL4 << SSI2_CLK_SEL_S); + reg &= ~(SSI_CLK_SEL_M << SSI3_CLK_SEL_S); + reg |= (SSI_CLK_SEL_PLL4 << SSI3_CLK_SEL_S); + WR4(sc, CCM_CSCMR1, reg); + + /* + * Ensure we have set hardware-default values + * for pre and post dividers. + */ + + /* SSI1 and SSI3 */ + reg = RD4(sc, CCM_CS1CDR); + /* Divide by 2 */ + reg &= ~(SSI_CLK_PODF_MASK << SSI1_CLK_PODF_SHIFT); + reg &= ~(SSI_CLK_PODF_MASK << SSI3_CLK_PODF_SHIFT); + reg |= (0x1 << SSI1_CLK_PODF_SHIFT); + reg |= (0x1 << SSI3_CLK_PODF_SHIFT); + /* Divide by 4 */ + reg &= ~(SSI_CLK_PRED_MASK << SSI1_CLK_PRED_SHIFT); + reg &= ~(SSI_CLK_PRED_MASK << SSI3_CLK_PRED_SHIFT); + reg |= (0x3 << SSI1_CLK_PRED_SHIFT); + reg |= (0x3 << SSI3_CLK_PRED_SHIFT); + WR4(sc, CCM_CS1CDR, reg); + + /* SSI2 */ + reg = RD4(sc, CCM_CS2CDR); + /* Divide by 2 */ + reg &= ~(SSI_CLK_PODF_MASK << SSI2_CLK_PODF_SHIFT); + reg |= (0x1 << SSI2_CLK_PODF_SHIFT); + /* Divide by 4 */ + reg &= ~(SSI_CLK_PRED_MASK << SSI2_CLK_PRED_SHIFT); + reg |= (0x3 << SSI2_CLK_PRED_SHIFT); + WR4(sc, CCM_CS2CDR, reg); +} + void imx_ccm_usb_enable(device_t _usbdev) { diff --git a/sys/arm/freescale/imx/imx6_ccmreg.h b/sys/arm/freescale/imx/imx6_ccmreg.h index d50c190c736f..31d92caa6d4a 100644 --- a/sys/arm/freescale/imx/imx6_ccmreg.h +++ b/sys/arm/freescale/imx/imx6_ccmreg.h @@ -29,6 +29,26 @@ #ifndef IMX6_CCMREG_H #define IMX6_CCMREG_H +#define CCM_CSCMR1 0x01C +#define SSI1_CLK_SEL_S 10 +#define SSI2_CLK_SEL_S 12 +#define SSI3_CLK_SEL_S 14 +#define SSI_CLK_SEL_M 0x3 +#define SSI_CLK_SEL_508_PFD 0 +#define SSI_CLK_SEL_454_PFD 1 +#define SSI_CLK_SEL_PLL4 2 +#define CCM_CSCMR2 0x020 +#define CCM_CS1CDR 0x028 +#define SSI1_CLK_PODF_SHIFT 0 +#define SSI1_CLK_PRED_SHIFT 6 +#define SSI3_CLK_PODF_SHIFT 16 +#define SSI3_CLK_PRED_SHIFT 22 +#define SSI_CLK_PODF_MASK 0x3f +#define SSI_CLK_PRED_MASK 0x7 +#define CCM_CS2CDR 0x02C +#define SSI2_CLK_PODF_SHIFT 0 +#define SSI2_CLK_PRED_SHIFT 6 +#define CCM_CSCDR2 0x038 #define CCM_CLPCR 0x054 #define CCM_CLPCR_LPM_MASK 0x03 #define CCM_CLPCR_LPM_RUN 0x00 diff --git a/sys/arm/freescale/imx/imx6_sdma.c b/sys/arm/freescale/imx/imx6_sdma.c new file mode 100644 index 000000000000..4a4c28725504 --- /dev/null +++ b/sys/arm/freescale/imx/imx6_sdma.c @@ -0,0 +1,518 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * i.MX6 Smart Direct Memory Access Controller (sDMA) + * Chapter 41, i.MX 6Dual/6Quad Applications Processor Reference Manual, + * Rev. 1, 04/2013 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#define MAX_BD (PAGE_SIZE / sizeof(struct sdma_buffer_descriptor)) + +#define READ4(_sc, _reg) \ + bus_space_read_4(_sc->bst, _sc->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4(_sc->bst, _sc->bsh, _reg, _val) + +struct sdma_softc *sdma_sc; + +static struct resource_spec sdma_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static void +sdma_intr(void *arg) +{ + struct sdma_buffer_descriptor *bd; + struct sdma_channel *channel; + struct sdma_conf *conf; + struct sdma_softc *sc; + int pending; + int i; + int j; + + sc = arg; + + pending = READ4(sc, SDMAARM_INTR); + + /* Ack intr */ + WRITE4(sc, SDMAARM_INTR, pending); + + for (i = 0; i < SDMA_N_CHANNELS; i++) { + if ((pending & (1 << i)) == 0) + continue; + channel = &sc->channel[i]; + conf = channel->conf; + if (!conf) + continue; + for (j = 0; j < conf->num_bd; j++) { + bd = &channel->bd[j]; + bd->mode.status |= BD_DONE; + if (bd->mode.status & BD_RROR) + printf("sDMA error\n"); + } + + conf->ih(conf->ih_user, 1); + + WRITE4(sc, SDMAARM_HSTART, (1 << i)); + } +} + +static int +sdma_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "fsl,imx6q-sdma")) + return (ENXIO); + + device_set_desc(dev, "i.MX6 Smart Direct Memory Access Controller"); + return (BUS_PROBE_DEFAULT); +} + +int +sdma_start(int chn) +{ + struct sdma_softc *sc; + + sc = sdma_sc; + + WRITE4(sc, SDMAARM_HSTART, (1 << chn)); + + return (0); +} + +int +sdma_stop(int chn) +{ + struct sdma_softc *sc; + + sc = sdma_sc; + + WRITE4(sc, SDMAARM_STOP_STAT, (1 << chn)); + + return (0); +} + +int +sdma_alloc(void) +{ + struct sdma_channel *channel; + struct sdma_softc *sc; + int found; + int chn; + int i; + + sc = sdma_sc; + found = 0; + + /* Channel 0 can't be used */ + for (i = 1; i < SDMA_N_CHANNELS; i++) { + channel = &sc->channel[i]; + if (channel->in_use == 0) { + channel->in_use = 1; + found = 1; + break; + } + } + + if (!found) + return (-1); + + chn = i; + + /* Allocate area for buffer descriptors */ + channel->bd = (void *)kmem_alloc_contig(kernel_arena, + PAGE_SIZE, M_ZERO, 0, ~0, PAGE_SIZE, 0, + VM_MEMATTR_UNCACHEABLE); + + return (chn); +} + +int +sdma_free(int chn) +{ + struct sdma_channel *channel; + struct sdma_softc *sc; + + sc = sdma_sc; + + channel = &sc->channel[chn]; + channel->in_use = 0; + + kmem_free(kernel_arena, (vm_offset_t)channel->bd, + PAGE_SIZE); + + return (0); +} + +static int +sdma_overrides(struct sdma_softc *sc, int chn, + int evt, int host, int dsp) +{ + int reg; + + /* Ignore sDMA requests */ + reg = READ4(sc, SDMAARM_EVTOVR); + if (evt) + reg |= (1 << chn); + else + reg &= ~(1 << chn); + WRITE4(sc, SDMAARM_EVTOVR, reg); + + /* Ignore enable bit (HE) */ + reg = READ4(sc, SDMAARM_HOSTOVR); + if (host) + reg |= (1 << chn); + else + reg &= ~(1 << chn); + WRITE4(sc, SDMAARM_HOSTOVR, reg); + + /* Prevent sDMA channel from starting */ + reg = READ4(sc, SDMAARM_DSPOVR); + if (!dsp) + reg |= (1 << chn); + else + reg &= ~(1 << chn); + WRITE4(sc, SDMAARM_DSPOVR, reg); + + return (0); +} + +int +sdma_configure(int chn, struct sdma_conf *conf) +{ + struct sdma_buffer_descriptor *bd0; + struct sdma_buffer_descriptor *bd; + struct sdma_context_data *context; + struct sdma_channel *channel; + struct sdma_softc *sc; +#if 0 + int timeout; + int ret; +#endif + int i; + + sc = sdma_sc; + + channel = &sc->channel[chn]; + channel->conf = conf; + + /* Ensure operation has stopped */ + sdma_stop(chn); + + /* Set priority and enable the channel */ + WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1); + WRITE4(sc, SDMAARM_CHNENBL(conf->event), (1 << chn)); + + sdma_overrides(sc, chn, 0, 0, 0); + + if (conf->num_bd > MAX_BD) { + device_printf(sc->dev, "Error: too much buffer" + " descriptors requested\n"); + return (-1); + } + + for (i = 0; i < conf->num_bd; i++) { + bd = &channel->bd[i]; + bd->mode.command = conf->command; + bd->mode.status = BD_DONE | BD_EXTD | BD_CONT | BD_INTR; + if (i == (conf->num_bd - 1)) + bd->mode.status |= BD_WRAP; + bd->mode.count = conf->period; + bd->buffer_addr = conf->saddr + (conf->period * i); + bd->ext_buffer_addr = 0; + } + + sc->ccb[chn].base_bd_ptr = vtophys(channel->bd); + sc->ccb[chn].current_bd_ptr = vtophys(channel->bd); + + /* + * Load context. + * + * i.MX6 Reference Manual: Appendix A SDMA Scripts + * A.3.1.7.1 (mcu_2_app) + */ + + /* + * TODO: allow using other scripts + */ + context = sc->context; + memset(context, 0, sizeof(*context)); + context->channel_state.pc = sc->fw_scripts->mcu_2_app_addr; + + /* + * Tx FIFO 0 address (r6) + * Event_mask (r1) + * Event2_mask (r0) + * Watermark level (r7) + */ + + if (conf->event > 32) { + context->gReg[0] = (1 << (conf->event % 32)); + context->gReg[1] = 0; + } else { + context->gReg[0] = 0; + context->gReg[1] = (1 << conf->event); + } + + context->gReg[6] = conf->daddr; + context->gReg[7] = conf->word_length; + + bd0 = sc->bd0; + bd0->mode.command = C0_SETDM; + bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD; + bd0->mode.count = sizeof(*context) / 4; + bd0->buffer_addr = sc->context_phys; + bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * chn; + + WRITE4(sc, SDMAARM_HSTART, 1); + +#if 0 + /* Debug purposes */ + + timeout = 1000; + while (!(ret = READ4(sc, SDMAARM_INTR) & 1)) { + if (timeout-- <= 0) + break; + DELAY(10); + }; + + if (!ret) { + device_printf(sc->dev, "Failed to load context.\n"); + return (-1); + } + + WRITE4(sc, SDMAARM_INTR, ret); + + device_printf(sc->dev, "Context loaded successfully.\n"); +#endif + + return (0); +} + +static int +load_firmware(struct sdma_softc *sc) +{ + struct sdma_firmware_header *header; + const struct firmware *fp; + + fp = firmware_get("sdma_fw"); + if (fp == NULL) { + device_printf(sc->dev, "Can't get firmware.\n"); + return (-1); + } + + header = (struct sdma_firmware_header *)fp->data; + if (header->magic != FW_HEADER_MAGIC) { + device_printf(sc->dev, "Can't use firmware.\n"); + return (-1); + } + + sc->fw_header = header; + sc->fw_scripts = (void *)((char *)header + + header->script_addrs_start); + + return (0); +} + +static int +boot_firmware(struct sdma_softc *sc) +{ + struct sdma_buffer_descriptor *bd0; + uint32_t *ram_code; + int timeout; + int ret; + int chn; + int sz; + int i; + + ram_code = (void *)((char *)sc->fw_header + + sc->fw_header->ram_code_start); + + /* Make sure SDMA has not started yet */ + WRITE4(sc, SDMAARM_MC0PTR, 0); + + sz = SDMA_N_CHANNELS * sizeof(struct sdma_channel_control) + \ + sizeof(struct sdma_context_data); + sc->ccb = (void *)kmem_alloc_contig(kernel_arena, + sz, M_ZERO, 0, ~0, PAGE_SIZE, 0, VM_MEMATTR_UNCACHEABLE); + sc->ccb_phys = vtophys(sc->ccb); + + sc->context = (void *)((char *)sc->ccb + \ + SDMA_N_CHANNELS * sizeof(struct sdma_channel_control)); + sc->context_phys = vtophys(sc->context); + + /* Disable all the channels */ + for (i = 0; i < SDMA_N_EVENTS; i++) + WRITE4(sc, SDMAARM_CHNENBL(i), 0); + + /* All channels have priority 0 */ + for (i = 0; i < SDMA_N_CHANNELS; i++) + WRITE4(sc, SDMAARM_SDMA_CHNPRI(i), 0); + + /* Channel 0 is used for booting firmware */ + chn = 0; + + sc->bd0 = (void *)kmem_alloc_contig(kernel_arena, + PAGE_SIZE, M_ZERO, 0, ~0, PAGE_SIZE, 0, + VM_MEMATTR_UNCACHEABLE); + bd0 = sc->bd0; + sc->ccb[chn].base_bd_ptr = vtophys(bd0); + sc->ccb[chn].current_bd_ptr = vtophys(bd0); + + WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1); + + sdma_overrides(sc, chn, 1, 0, 0); + + /* XXX: not sure what is that */ + WRITE4(sc, SDMAARM_CHN0ADDR, 0x4050); + + WRITE4(sc, SDMAARM_CONFIG, 0); + WRITE4(sc, SDMAARM_MC0PTR, sc->ccb_phys); + WRITE4(sc, SDMAARM_CONFIG, CONFIG_CSM); + WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1); + + bd0->mode.command = C0_SETPM; + bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD; + bd0->mode.count = sc->fw_header->ram_code_size / 2; + bd0->buffer_addr = vtophys(ram_code); + bd0->ext_buffer_addr = sc->fw_scripts->ram_code_start_addr; + + WRITE4(sc, SDMAARM_HSTART, 1); + + timeout = 100; + while (!(ret = READ4(sc, SDMAARM_INTR) & 1)) { + if (timeout-- <= 0) + break; + DELAY(10); + }; + + if (ret == 0) { + device_printf(sc->dev, "SDMA failed to boot\n"); + return (-1); + } + + WRITE4(sc, SDMAARM_INTR, ret); + +#if 0 + device_printf(sc->dev, "SDMA booted successfully.\n"); +#endif + + /* Debug is disabled */ + WRITE4(sc, SDMAARM_ONCE_ENB, 0); + + return (0); +} + +static int +sdma_attach(device_t dev) +{ + struct sdma_softc *sc; + int err; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, sdma_spec, sc->res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + /* Memory interface */ + sc->bst = rman_get_bustag(sc->res[0]); + sc->bsh = rman_get_bushandle(sc->res[0]); + + sdma_sc = sc; + + /* Setup interrupt handler */ + err = bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + NULL, sdma_intr, sc, &sc->ih); + if (err) { + device_printf(dev, "Unable to alloc interrupt resource.\n"); + return (ENXIO); + } + + if (load_firmware(sc) == -1) + return (ENXIO); + + if (boot_firmware(sc) == -1) + return (ENXIO); + + return (0); +}; + +static device_method_t sdma_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, sdma_probe), + DEVMETHOD(device_attach, sdma_attach), + { 0, 0 } +}; + +static driver_t sdma_driver = { + "sdma", + sdma_methods, + sizeof(struct sdma_softc), +}; + +static devclass_t sdma_devclass; + +DRIVER_MODULE(sdma, simplebus, sdma_driver, sdma_devclass, 0, 0); diff --git a/sys/arm/freescale/imx/imx6_sdma.h b/sys/arm/freescale/imx/imx6_sdma.h new file mode 100644 index 000000000000..0f970de4b022 --- /dev/null +++ b/sys/arm/freescale/imx/imx6_sdma.h @@ -0,0 +1,245 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#define SDMAARM_MC0PTR 0x00 /* ARM platform Channel 0 Pointer */ +#define SDMAARM_INTR 0x04 /* Channel Interrupts */ +#define SDMAARM_STOP_STAT 0x08 /* Channel Stop/Channel Status */ +#define SDMAARM_HSTART 0x0C /* Channel Start */ +#define SDMAARM_EVTOVR 0x10 /* Channel Event Override */ +#define SDMAARM_DSPOVR 0x14 /* Channel BP Override */ +#define SDMAARM_HOSTOVR 0x18 /* Channel ARM platform Override */ +#define SDMAARM_EVTPEND 0x1C /* Channel Event Pending */ +#define SDMAARM_RESET 0x24 /* Reset Register */ +#define SDMAARM_EVTERR 0x28 /* DMA Request Error Register */ +#define SDMAARM_INTRMASK 0x2C /* Channel ARM platform Interrupt Mask */ +#define SDMAARM_PSW 0x30 /* Schedule Status */ +#define SDMAARM_EVTERRDBG 0x34 /* DMA Request Error Register */ +#define SDMAARM_CONFIG 0x38 /* Configuration Register */ +#define CONFIG_CSM 0x3 +#define SDMAARM_SDMA_LOCK 0x3C /* SDMA LOCK */ +#define SDMAARM_ONCE_ENB 0x40 /* OnCE Enable */ +#define SDMAARM_ONCE_DATA 0x44 /* OnCE Data Register */ +#define SDMAARM_ONCE_INSTR 0x48 /* OnCE Instruction Register */ +#define SDMAARM_ONCE_STAT 0x4C /* OnCE Status Register */ +#define SDMAARM_ONCE_CMD 0x50 /* OnCE Command Register */ +#define SDMAARM_ILLINSTADDR 0x58 /* Illegal Instruction Trap Address */ +#define SDMAARM_CHN0ADDR 0x5C /* Channel 0 Boot Address */ +#define SDMAARM_EVT_MIRROR 0x60 /* DMA Requests */ +#define SDMAARM_EVT_MIRROR2 0x64 /* DMA Requests 2 */ +#define SDMAARM_XTRIG_CONF1 0x70 /* Cross-Trigger Events Configuration Register 1 */ +#define SDMAARM_XTRIG_CONF2 0x74 /* Cross-Trigger Events Configuration Register 2 */ +#define SDMAARM_SDMA_CHNPRI(n) (0x100 + 0x4 * n) /* Channel Priority Registers */ +#define SDMAARM_CHNENBL(n) (0x200 + 0x4 * n) /* Channel Enable RAM */ + +/* SDMA Event Mappings */ +#define SSI1_RX_1 35 +#define SSI1_TX_1 36 +#define SSI1_RX_0 37 +#define SSI1_TX_0 38 +#define SSI2_RX_1 39 +#define SSI2_TX_1 40 +#define SSI2_RX_0 41 +#define SSI2_TX_0 42 +#define SSI3_RX_1 43 +#define SSI3_TX_1 44 +#define SSI3_RX_0 45 +#define SSI3_TX_0 46 + +#define C0_ADDR 0x01 +#define C0_LOAD 0x02 +#define C0_DUMP 0x03 +#define C0_SETCTX 0x07 +#define C0_GETCTX 0x03 +#define C0_SETDM 0x01 +#define C0_SETPM 0x04 +#define C0_GETDM 0x02 +#define C0_GETPM 0x08 + +#define BD_DONE 0x01 +#define BD_WRAP 0x02 +#define BD_CONT 0x04 +#define BD_INTR 0x08 +#define BD_RROR 0x10 +#define BD_LAST 0x20 +#define BD_EXTD 0x80 + +/* sDMA data transfer length */ +#define CMD_4BYTES 0 +#define CMD_3BYTES 3 +#define CMD_2BYTES 2 +#define CMD_1BYTES 1 + +struct sdma_firmware_header { + uint32_t magic; + uint32_t version_major; + uint32_t version_minor; + uint32_t script_addrs_start; + uint32_t num_script_addrs; + uint32_t ram_code_start; + uint32_t ram_code_size; +}; + +struct sdma_mode_count { + uint16_t count; + uint8_t status; + uint8_t command; +}; + +struct sdma_buffer_descriptor { + struct sdma_mode_count mode; + uint32_t buffer_addr; + uint32_t ext_buffer_addr; +} __packed; + +struct sdma_channel_control { + uint32_t current_bd_ptr; + uint32_t base_bd_ptr; + uint32_t unused[2]; +} __packed; + +struct sdma_state_registers { + uint32_t pc :14; + uint32_t unused1: 1; + uint32_t t : 1; + uint32_t rpc :14; + uint32_t unused0: 1; + uint32_t sf : 1; + uint32_t spc :14; + uint32_t unused2: 1; + uint32_t df : 1; + uint32_t epc :14; + uint32_t lm : 2; +} __packed; + +struct sdma_context_data { + struct sdma_state_registers channel_state; + uint32_t gReg[8]; + uint32_t mda; + uint32_t msa; + uint32_t ms; + uint32_t md; + uint32_t pda; + uint32_t psa; + uint32_t ps; + uint32_t pd; + uint32_t ca; + uint32_t cs; + uint32_t dda; + uint32_t dsa; + uint32_t ds; + uint32_t dd; + uint32_t unused[8]; +} __packed; + +/* SDMA firmware script pointers */ +struct sdma_script_start_addrs { + int32_t ap_2_ap_addr; + int32_t ap_2_bp_addr; + int32_t ap_2_ap_fixed_addr; + int32_t bp_2_ap_addr; + int32_t loopback_on_dsp_side_addr; + int32_t mcu_interrupt_only_addr; + int32_t firi_2_per_addr; + int32_t firi_2_mcu_addr; + int32_t per_2_firi_addr; + int32_t mcu_2_firi_addr; + int32_t uart_2_per_addr; + int32_t uart_2_mcu_addr; + int32_t per_2_app_addr; + int32_t mcu_2_app_addr; + int32_t per_2_per_addr; + int32_t uartsh_2_per_addr; + int32_t uartsh_2_mcu_addr; + int32_t per_2_shp_addr; + int32_t mcu_2_shp_addr; + int32_t ata_2_mcu_addr; + int32_t mcu_2_ata_addr; + int32_t app_2_per_addr; + int32_t app_2_mcu_addr; + int32_t shp_2_per_addr; + int32_t shp_2_mcu_addr; + int32_t mshc_2_mcu_addr; + int32_t mcu_2_mshc_addr; + int32_t spdif_2_mcu_addr; + int32_t mcu_2_spdif_addr; + int32_t asrc_2_mcu_addr; + int32_t ext_mem_2_ipu_addr; + int32_t descrambler_addr; + int32_t dptc_dvfs_addr; + int32_t utra_addr; + int32_t ram_code_start_addr; + int32_t mcu_2_ssish_addr; + int32_t ssish_2_mcu_addr; + int32_t hdmi_dma_addr; +}; + +#define SDMA_N_CHANNELS 32 +#define SDMA_N_EVENTS 48 +#define FW_HEADER_MAGIC 0x414d4453 + +struct sdma_channel { + struct sdma_conf *conf; + struct sdma_buffer_descriptor *bd; + uint8_t in_use; +}; + +struct sdma_softc { + struct resource *res[2]; + bus_space_tag_t bst; + bus_space_handle_t bsh; + device_t dev; + void *ih; + struct sdma_channel_control *ccb; + struct sdma_buffer_descriptor *bd0; + struct sdma_context_data *context; + struct sdma_channel channel[SDMA_N_CHANNELS]; + uint32_t num_bd; + uint32_t ccb_phys; + uint32_t context_phys; + struct sdma_firmware_header *fw_header; + struct sdma_script_start_addrs *fw_scripts; +}; + +struct sdma_conf { + bus_addr_t saddr; + bus_addr_t daddr; + uint32_t word_length; + uint32_t nbits; + uint32_t command; + uint32_t num_bd; + uint32_t event; + uint32_t period; + uint32_t (*ih)(void *, int); + void *ih_user; +}; + +int sdma_configure(int, struct sdma_conf *); +int sdma_start(int); +int sdma_stop(int); +int sdma_alloc(void); +int sdma_free(int); diff --git a/sys/arm/freescale/imx/imx6_ssi.c b/sys/arm/freescale/imx/imx6_ssi.c new file mode 100644 index 000000000000..af8a9e8f279a --- /dev/null +++ b/sys/arm/freescale/imx/imx6_ssi.c @@ -0,0 +1,855 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * i.MX6 Synchronous Serial Interface (SSI) + * + * Chapter 61, i.MX 6Dual/6Quad Applications Processor Reference Manual, + * Rev. 1, 04/2013 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#define READ4(_sc, _reg) \ + bus_space_read_4(_sc->bst, _sc->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4(_sc->bst, _sc->bsh, _reg, _val) + +#define SSI_NCHANNELS 1 + +/* i.MX6 SSI registers */ + +#define SSI_STX0 0x00 /* Transmit Data Register n */ +#define SSI_STX1 0x04 /* Transmit Data Register n */ +#define SSI_SRX0 0x08 /* Receive Data Register n */ +#define SSI_SRX1 0x0C /* Receive Data Register n */ +#define SSI_SCR 0x10 /* Control Register */ +#define SCR_I2S_MODE_S 5 /* I2S Mode Select. */ +#define SCR_I2S_MODE_M 0x3 +#define SCR_SYN (1 << 4) +#define SCR_NET (1 << 3) /* Network mode */ +#define SCR_RE (1 << 2) /* Receive Enable. */ +#define SCR_TE (1 << 1) /* Transmit Enable. */ +#define SCR_SSIEN (1 << 0) /* SSI Enable */ +#define SSI_SISR 0x14 /* Interrupt Status Register */ +#define SSI_SIER 0x18 /* Interrupt Enable Register */ +#define SIER_RDMAE (1 << 22) /* Receive DMA Enable. */ +#define SIER_RIE (1 << 21) /* Receive Interrupt Enable. */ +#define SIER_TDMAE (1 << 20) /* Transmit DMA Enable. */ +#define SIER_TIE (1 << 19) /* Transmit Interrupt Enable. */ +#define SIER_TDE0IE (1 << 12) /* Transmit Data Register Empty 0. */ +#define SIER_TUE0IE (1 << 8) /* Transmitter Underrun Error 0. */ +#define SIER_TFE0IE (1 << 0) /* Transmit FIFO Empty 0 IE. */ +#define SSI_STCR 0x1C /* Transmit Configuration Register */ +#define STCR_TXBIT0 (1 << 9) /* Transmit Bit 0 shift MSB/LSB */ +#define STCR_TFEN1 (1 << 8) /* Transmit FIFO Enable 1. */ +#define STCR_TFEN0 (1 << 7) /* Transmit FIFO Enable 0. */ +#define STCR_TFDIR (1 << 6) /* Transmit Frame Direction. */ +#define STCR_TXDIR (1 << 5) /* Transmit Clock Direction. */ +#define STCR_TSHFD (1 << 4) /* Transmit Shift Direction. */ +#define STCR_TSCKP (1 << 3) /* Transmit Clock Polarity. */ +#define STCR_TFSI (1 << 2) /* Transmit Frame Sync Invert. */ +#define STCR_TFSL (1 << 1) /* Transmit Frame Sync Length. */ +#define STCR_TEFS (1 << 0) /* Transmit Early Frame Sync. */ +#define SSI_SRCR 0x20 /* Receive Configuration Register */ +#define SSI_STCCR 0x24 /* Transmit Clock Control Register */ +#define STCCR_DIV2 (1 << 18) /* Divide By 2. */ +#define STCCR_PSR (1 << 17) /* Divide clock by 8. */ +#define WL3_WL0_S 13 +#define WL3_WL0_M 0xf +#define DC4_DC0_S 8 +#define DC4_DC0_M 0x1f +#define PM7_PM0_S 0 +#define PM7_PM0_M 0xff +#define SSI_SRCCR 0x28 /* Receive Clock Control Register */ +#define SSI_SFCSR 0x2C /* FIFO Control/Status Register */ +#define SFCSR_RFWM1_S 20 /* Receive FIFO Empty WaterMark 1 */ +#define SFCSR_RFWM1_M 0xf +#define SFCSR_TFWM1_S 16 /* Transmit FIFO Empty WaterMark 1 */ +#define SFCSR_TFWM1_M 0xf +#define SFCSR_RFWM0_S 4 /* Receive FIFO Empty WaterMark 0 */ +#define SFCSR_RFWM0_M 0xf +#define SFCSR_TFWM0_S 0 /* Transmit FIFO Empty WaterMark 0 */ +#define SFCSR_TFWM0_M 0xf +#define SSI_SACNT 0x38 /* AC97 Control Register */ +#define SSI_SACADD 0x3C /* AC97 Command Address Register */ +#define SSI_SACDAT 0x40 /* AC97 Command Data Register */ +#define SSI_SATAG 0x44 /* AC97 Tag Register */ +#define SSI_STMSK 0x48 /* Transmit Time Slot Mask Register */ +#define SSI_SRMSK 0x4C /* Receive Time Slot Mask Register */ +#define SSI_SACCST 0x50 /* AC97 Channel Status Register */ +#define SSI_SACCEN 0x54 /* AC97 Channel Enable Register */ +#define SSI_SACCDIS 0x58 /* AC97 Channel Disable Register */ + +static MALLOC_DEFINE(M_SSI, "ssi", "ssi audio"); + +uint32_t ssi_dma_intr(void *arg, int chn); + +struct ssi_rate { + uint32_t speed; + uint32_t mfi; /* PLL4 Multiplication Factor Integer */ + uint32_t mfn; /* PLL4 Multiplication Factor Numerator */ + uint32_t mfd; /* PLL4 Multiplication Factor Denominator */ + /* More dividers to configure can be added here */ +}; + +static struct ssi_rate rate_map[] = { + { 192000, 49, 152, 1000 }, /* PLL4 49.152 Mhz */ + /* TODO: add more frequences */ + { 0, 0 }, +}; + +/* + * i.MX6 example bit clock formula + * + * BCLK = 2 channels * 192000 hz * 24 bit = 9216000 hz = + * (24000000 * (49 + 152/1000.0) / 4 / 4 / 2 / 2 / 2 / 1 / 1) + * ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ + * | | | | | | | | | | | + * Fref ------/ | | | | | | | | | | + * PLL4 div select -/ | | | | | | | | | + * PLL4 num --------------/ | | | | | | | | + * PLL4 denom -------------------/ | | | | | | | + * PLL4 post div ---------------------/ | | | | | | + * CCM ssi pre div (CCM_CS1CDR) ----------/ | | | | | + * CCM ssi post div (CCM_CS1CDR) -------------/ | | | | + * SSI PM7_PM0_S ---------------------------------/ | | | + * SSI Fixed divider ---------------------------------/ | | + * SSI DIV2 ----------------------------------------------/ | + * SSI PSR (prescaler /1 or /8) ------------------------------/ + * + * MCLK (Master clock) depends on DAC, usually BCLK * 4 + */ + +struct sc_info { + struct resource *res[2]; + bus_space_tag_t bst; + bus_space_handle_t bsh; + device_t dev; + struct mtx *lock; + void *ih; + int pos; + int dma_size; + bus_dma_tag_t dma_tag; + bus_dmamap_t dma_map; + bus_addr_t buf_base_phys; + uint32_t *buf_base; + struct sdma_conf *conf; + struct ssi_rate *sr; + struct sdma_softc *sdma_sc; + int sdma_ev_rx; + int sdma_ev_tx; + int sdma_channel; +}; + +/* Channel registers */ +struct sc_chinfo { + struct snd_dbuf *buffer; + struct pcm_channel *channel; + struct sc_pcminfo *parent; + + /* Channel information */ + uint32_t dir; + uint32_t format; + + /* Flags */ + uint32_t run; +}; + +/* PCM device private data */ +struct sc_pcminfo { + device_t dev; + uint32_t (*ih)(struct sc_pcminfo *scp); + uint32_t chnum; + struct sc_chinfo chan[SSI_NCHANNELS]; + struct sc_info *sc; +}; + +static struct resource_spec ssi_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static int setup_dma(struct sc_pcminfo *scp); +static void setup_ssi(struct sc_info *); +static void ssi_configure_clock(struct sc_info *); + +/* + * Mixer interface. + */ + +static int +ssimixer_init(struct snd_mixer *m) +{ + struct sc_pcminfo *scp; + struct sc_info *sc; + int mask; + + scp = mix_getdevinfo(m); + sc = scp->sc; + + if (sc == NULL) + return -1; + + mask = SOUND_MASK_PCM; + mask |= SOUND_MASK_VOLUME; + + snd_mtxlock(sc->lock); + pcm_setflags(scp->dev, pcm_getflags(scp->dev) | SD_F_SOFTPCMVOL); + mix_setdevs(m, mask); + snd_mtxunlock(sc->lock); + + return (0); +} + +static int +ssimixer_set(struct snd_mixer *m, unsigned dev, + unsigned left, unsigned right) +{ + struct sc_pcminfo *scp; + + scp = mix_getdevinfo(m); + + /* Here we can configure hardware volume on our DAC */ + +#if 1 + device_printf(scp->dev, "ssimixer_set() %d %d\n", + left, right); +#endif + + return (0); +} + +static kobj_method_t ssimixer_methods[] = { + KOBJMETHOD(mixer_init, ssimixer_init), + KOBJMETHOD(mixer_set, ssimixer_set), + KOBJMETHOD_END +}; +MIXER_DECLARE(ssimixer); + + +/* + * Channel interface. + */ + +static void * +ssichan_init(kobj_t obj, void *devinfo, struct snd_dbuf *b, + struct pcm_channel *c, int dir) +{ + struct sc_pcminfo *scp; + struct sc_chinfo *ch; + struct sc_info *sc; + + scp = (struct sc_pcminfo *)devinfo; + sc = scp->sc; + + snd_mtxlock(sc->lock); + ch = &scp->chan[0]; + ch->dir = dir; + ch->run = 0; + ch->buffer = b; + ch->channel = c; + ch->parent = scp; + snd_mtxunlock(sc->lock); + + if (sndbuf_setup(ch->buffer, sc->buf_base, sc->dma_size) != 0) { + device_printf(scp->dev, "Can't setup sndbuf.\n"); + return NULL; + } + + return ch; +} + +static int +ssichan_free(kobj_t obj, void *data) +{ + struct sc_chinfo *ch = data; + struct sc_pcminfo *scp = ch->parent; + struct sc_info *sc = scp->sc; + +#if 0 + device_printf(scp->dev, "ssichan_free()\n"); +#endif + + snd_mtxlock(sc->lock); + /* TODO: free channel buffer */ + snd_mtxunlock(sc->lock); + + return (0); +} + +static int +ssichan_setformat(kobj_t obj, void *data, uint32_t format) +{ + struct sc_chinfo *ch = data; + + ch->format = format; + + return (0); +} + +static uint32_t +ssichan_setspeed(kobj_t obj, void *data, uint32_t speed) +{ + struct sc_pcminfo *scp; + struct sc_chinfo *ch; + struct ssi_rate *sr; + struct sc_info *sc; + int threshold; + int i; + + ch = data; + scp = ch->parent; + sc = scp->sc; + + sr = NULL; + + /* First look for equal frequency. */ + for (i = 0; rate_map[i].speed != 0; i++) { + if (rate_map[i].speed == speed) + sr = &rate_map[i]; + } + + /* If no match, just find nearest. */ + if (sr == NULL) { + for (i = 0; rate_map[i].speed != 0; i++) { + sr = &rate_map[i]; + threshold = sr->speed + ((rate_map[i + 1].speed != 0) ? + ((rate_map[i + 1].speed - sr->speed) >> 1) : 0); + if (speed < threshold) + break; + } + } + + sc->sr = sr; + + ssi_configure_clock(sc); + + return (sr->speed); +} + +static void +ssi_configure_clock(struct sc_info *sc) +{ + struct ssi_rate *sr; + + sr = sc->sr; + + pll4_configure_output(sr->mfi, sr->mfn, sr->mfd); + + /* Configure other dividers here, if any */ +} + +static uint32_t +ssichan_setblocksize(kobj_t obj, void *data, uint32_t blocksize) +{ + struct sc_chinfo *ch = data; + struct sc_pcminfo *scp = ch->parent; + struct sc_info *sc = scp->sc; + + sndbuf_resize(ch->buffer, sc->dma_size / blocksize, blocksize); + + setup_dma(scp); + + return (sndbuf_getblksz(ch->buffer)); +} + +uint32_t +ssi_dma_intr(void *arg, int chn) +{ + struct sc_pcminfo *scp; + struct sdma_conf *conf; + struct sc_chinfo *ch; + struct sc_info *sc; + int bufsize; + + scp = arg; + ch = &scp->chan[0]; + sc = scp->sc; + conf = sc->conf; + + bufsize = sndbuf_getsize(ch->buffer); + + sc->pos += conf->period; + if (sc->pos >= bufsize) + sc->pos -= bufsize; + + if (ch->run) + chn_intr(ch->channel); + + return (0); +} + +static int +find_sdma_controller(struct sc_info *sc) +{ + struct sdma_softc *sdma_sc; + phandle_t node, sdma_node; + device_t sdma_dev; + int dts_value[8]; + int len; + + if ((node = ofw_bus_get_node(sc->dev)) == -1) + return (ENXIO); + + if ((len = OF_getproplen(node, "dmas")) <= 0) + return (ENXIO); + + OF_getprop(node, "dmas", &dts_value, len); + + sc->sdma_ev_rx = fdt32_to_cpu(dts_value[1]); + sc->sdma_ev_tx = fdt32_to_cpu(dts_value[5]); + + sdma_node = OF_node_from_xref(fdt32_to_cpu(dts_value[0])); + + sdma_sc = NULL; + + sdma_dev = devclass_get_device(devclass_find("sdma"), 0); + if (sdma_dev) + sdma_sc = device_get_softc(sdma_dev); + + if (sdma_sc == NULL) { + device_printf(sc->dev, "No sDMA found. Can't operate\n"); + return (ENXIO); + }; + + sc->sdma_sc = sdma_sc; + + return (0); +}; + +static int +setup_dma(struct sc_pcminfo *scp) +{ + struct sdma_conf *conf; + struct sc_chinfo *ch; + struct sc_info *sc; + int fmt; + + ch = &scp->chan[0]; + sc = scp->sc; + conf = sc->conf; + + conf->ih = ssi_dma_intr; + conf->ih_user = scp; + conf->saddr = sc->buf_base_phys; + conf->daddr = rman_get_start(sc->res[0]) + SSI_STX0; + conf->event = sc->sdma_ev_tx; /* SDMA TX event */ + conf->period = sndbuf_getblksz(ch->buffer); + conf->num_bd = sndbuf_getblkcnt(ch->buffer); + + /* + * Word Length + * Can be 32, 24, 16 or 8 for sDMA. + * + * SSI supports 24 at max. + */ + + fmt = sndbuf_getfmt(ch->buffer); + + if (fmt & AFMT_16BIT) { + conf->word_length = 16; + conf->command = CMD_2BYTES; + } else if (fmt & AFMT_24BIT) { + conf->word_length = 24; + conf->command = CMD_3BYTES; + } else { + device_printf(sc->dev, "Unknown format\n"); + return (-1); + } + + return (0); +} + +static int +ssi_start(struct sc_pcminfo *scp) +{ + struct sc_info *sc; + int reg; + + sc = scp->sc; + + if (sdma_configure(sc->sdma_channel, sc->conf) != 0) { + device_printf(sc->dev, "Can't configure sDMA\n"); + return (-1); + } + + /* Enable DMA interrupt */ + reg = (SIER_TDMAE); + WRITE4(sc, SSI_SIER, reg); + + sdma_start(sc->sdma_channel); + + return (0); +} + +static int +ssi_stop(struct sc_pcminfo *scp) +{ + struct sc_info *sc; + int reg; + + sc = scp->sc; + + reg = READ4(sc, SSI_SIER); + reg &= ~(SIER_TDMAE); + WRITE4(sc, SSI_SIER, reg); + + sdma_stop(sc->sdma_channel); + + bzero(sc->buf_base, sc->dma_size); + + return (0); +} + +static int +ssichan_trigger(kobj_t obj, void *data, int go) +{ + struct sc_pcminfo *scp; + struct sc_chinfo *ch; + struct sc_info *sc; + + ch = data; + scp = ch->parent; + sc = scp->sc; + + snd_mtxlock(sc->lock); + + switch (go) { + case PCMTRIG_START: +#if 0 + device_printf(scp->dev, "trigger start\n"); +#endif + ch->run = 1; + + ssi_start(scp); + + break; + + case PCMTRIG_STOP: + case PCMTRIG_ABORT: +#if 0 + device_printf(scp->dev, "trigger stop or abort\n"); +#endif + ch->run = 0; + + ssi_stop(scp); + + break; + } + + snd_mtxunlock(sc->lock); + + return (0); +} + +static uint32_t +ssichan_getptr(kobj_t obj, void *data) +{ + struct sc_pcminfo *scp; + struct sc_chinfo *ch; + struct sc_info *sc; + + ch = data; + scp = ch->parent; + sc = scp->sc; + + return (sc->pos); +} + +static uint32_t ssi_pfmt[] = { + SND_FORMAT(AFMT_S24_LE, 2, 0), + 0 +}; + +static struct pcmchan_caps ssi_pcaps = {44100, 192000, ssi_pfmt, 0}; + +static struct pcmchan_caps * +ssichan_getcaps(kobj_t obj, void *data) +{ + + return (&ssi_pcaps); +} + +static kobj_method_t ssichan_methods[] = { + KOBJMETHOD(channel_init, ssichan_init), + KOBJMETHOD(channel_free, ssichan_free), + KOBJMETHOD(channel_setformat, ssichan_setformat), + KOBJMETHOD(channel_setspeed, ssichan_setspeed), + KOBJMETHOD(channel_setblocksize, ssichan_setblocksize), + KOBJMETHOD(channel_trigger, ssichan_trigger), + KOBJMETHOD(channel_getptr, ssichan_getptr), + KOBJMETHOD(channel_getcaps, ssichan_getcaps), + KOBJMETHOD_END +}; +CHANNEL_DECLARE(ssichan); + +static int +ssi_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "fsl,imx6q-ssi")) + return (ENXIO); + + device_set_desc(dev, "i.MX6 Synchronous Serial Interface (SSI)"); + return (BUS_PROBE_DEFAULT); +} + +static void +ssi_intr(void *arg) +{ + struct sc_pcminfo *scp; + struct sc_chinfo *ch; + struct sc_info *sc; + + scp = arg; + sc = scp->sc; + ch = &scp->chan[0]; + + /* We don't use SSI interrupt */ +#if 0 + device_printf(sc->dev, "SSI Intr 0x%08x\n", + READ4(sc, SSI_SISR)); +#endif +} + +static void +setup_ssi(struct sc_info *sc) +{ + int reg; + + reg = READ4(sc, SSI_STCCR); + reg &= ~(WL3_WL0_M << WL3_WL0_S); + reg |= (0xb << WL3_WL0_S); /* 24 bit */ + reg &= ~(DC4_DC0_M << DC4_DC0_S); + reg |= (1 << DC4_DC0_S); /* 2 words per frame */ + reg &= ~(STCCR_DIV2); /* Divide by 1 */ + reg &= ~(STCCR_PSR); /* Divide by 1 */ + reg &= ~(PM7_PM0_M << PM7_PM0_S); + reg |= (1 << PM7_PM0_S); /* Divide by 2 */ + WRITE4(sc, SSI_STCCR, reg); + + reg = READ4(sc, SSI_SFCSR); + reg &= ~(SFCSR_TFWM0_M << SFCSR_TFWM0_S); + reg |= (8 << SFCSR_TFWM0_S); /* empty slots */ + WRITE4(sc, SSI_SFCSR, reg); + + reg = READ4(sc, SSI_STCR); + reg |= (STCR_TFEN0); + reg &= ~(STCR_TFEN1); + reg &= ~(STCR_TSHFD); /* MSB */ + reg |= (STCR_TXBIT0); + reg |= (STCR_TXDIR | STCR_TFDIR); + reg |= (STCR_TSCKP); /* falling edge */ + reg |= (STCR_TFSI); + reg &= ~(STCR_TFSI); /* active high frame sync */ + reg &= ~(STCR_TFSL); + reg |= STCR_TEFS; + WRITE4(sc, SSI_STCR, reg); + + reg = READ4(sc, SSI_SCR); + reg &= ~(SCR_I2S_MODE_M << SCR_I2S_MODE_S); /* Not master */ + reg |= (SCR_SSIEN | SCR_TE); + reg |= (SCR_NET); + reg |= (SCR_SYN); + WRITE4(sc, SSI_SCR, reg); +} + +static void +ssi_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nseg, int err) +{ + bus_addr_t *addr; + + if (err) + return; + + addr = (bus_addr_t*)arg; + *addr = segs[0].ds_addr; +} + +static int +ssi_attach(device_t dev) +{ + char status[SND_STATUSLEN]; + struct sc_pcminfo *scp; + struct sc_info *sc; + int err; + + sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO); + sc->dev = dev; + sc->sr = &rate_map[0]; + sc->pos = 0; + sc->conf = malloc(sizeof(struct sdma_conf), M_DEVBUF, M_WAITOK | M_ZERO); + + sc->lock = snd_mtxcreate(device_get_nameunit(dev), "ssi softc"); + if (sc->lock == NULL) { + device_printf(dev, "Cant create mtx\n"); + return (ENXIO); + } + + if (bus_alloc_resources(dev, ssi_spec, sc->res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + /* Memory interface */ + sc->bst = rman_get_bustag(sc->res[0]); + sc->bsh = rman_get_bushandle(sc->res[0]); + + /* SDMA */ + if (find_sdma_controller(sc)) { + device_printf(dev, "could not find active SDMA\n"); + return (ENXIO); + } + + /* Setup PCM */ + scp = malloc(sizeof(struct sc_pcminfo), M_DEVBUF, M_NOWAIT | M_ZERO); + scp->sc = sc; + scp->dev = dev; + + /* + * Maximum possible DMA buffer. + * Will be used partialy to match 24 bit word. + */ + sc->dma_size = 131072; + + /* + * Must use dma_size boundary as modulo feature required. + * Modulo feature allows setup circular buffer. + */ + + err = bus_dma_tag_create( + bus_get_dma_tag(sc->dev), + 4, sc->dma_size, /* alignment, boundary */ + BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + sc->dma_size, 1, /* maxsize, nsegments */ + sc->dma_size, 0, /* maxsegsize, flags */ + NULL, NULL, /* lockfunc, lockarg */ + &sc->dma_tag); + + err = bus_dmamem_alloc(sc->dma_tag, (void **)&sc->buf_base, + BUS_DMA_NOWAIT | BUS_DMA_COHERENT, &sc->dma_map); + if (err) { + device_printf(dev, "cannot allocate framebuffer\n"); + return (ENXIO); + } + + err = bus_dmamap_load(sc->dma_tag, sc->dma_map, sc->buf_base, + sc->dma_size, ssi_dmamap_cb, &sc->buf_base_phys, BUS_DMA_NOWAIT); + if (err) { + device_printf(dev, "cannot load DMA map\n"); + return (ENXIO); + } + + bzero(sc->buf_base, sc->dma_size); + + /* Setup interrupt handler */ + err = bus_setup_intr(dev, sc->res[1], INTR_MPSAFE | INTR_TYPE_AV, + NULL, ssi_intr, scp, &sc->ih); + if (err) { + device_printf(dev, "Unable to alloc interrupt resource.\n"); + return (ENXIO); + } + + pcm_setflags(dev, pcm_getflags(dev) | SD_F_MPSAFE); + + err = pcm_register(dev, scp, 1, 0); + if (err) { + device_printf(dev, "Can't register pcm.\n"); + return (ENXIO); + } + + scp->chnum = 0; + pcm_addchan(dev, PCMDIR_PLAY, &ssichan_class, scp); + scp->chnum++; + + snprintf(status, SND_STATUSLEN, "at simplebus"); + pcm_setstatus(dev, status); + + mixer_init(dev, &ssimixer_class, scp); + setup_ssi(sc); + + imx_ccm_ssi_configure(dev); + + sc->sdma_channel = sdma_alloc(); + if (sc->sdma_channel < 0) { + device_printf(sc->dev, "Can't get sDMA channel\n"); + return (1); + } + + return (0); +} + +static device_method_t ssi_pcm_methods[] = { + DEVMETHOD(device_probe, ssi_probe), + DEVMETHOD(device_attach, ssi_attach), + { 0, 0 } +}; + +static driver_t ssi_pcm_driver = { + "pcm", + ssi_pcm_methods, + PCM_SOFTC_SIZE, +}; + +DRIVER_MODULE(ssi, simplebus, ssi_pcm_driver, pcm_devclass, 0, 0); +MODULE_DEPEND(ssi, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER); +MODULE_VERSION(ssi, 1); diff --git a/sys/arm/freescale/imx/imx_ccmvar.h b/sys/arm/freescale/imx/imx_ccmvar.h index 354e6163b45f..f15943791c68 100644 --- a/sys/arm/freescale/imx/imx_ccmvar.h +++ b/sys/arm/freescale/imx/imx_ccmvar.h @@ -51,5 +51,6 @@ uint32_t imx_ccm_ahb_hz(void); void imx_ccm_usb_enable(device_t _usbdev); void imx_ccm_usbphy_enable(device_t _phydev); +void imx_ccm_ssi_configure(device_t _ssidev); #endif diff --git a/sys/boot/fdt/dts/arm/apalis-imx6.dts b/sys/boot/fdt/dts/arm/apalis-imx6.dts index 0806f4e39815..b6440603c583 100644 --- a/sys/boot/fdt/dts/arm/apalis-imx6.dts +++ b/sys/boot/fdt/dts/arm/apalis-imx6.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Ruslan Bukin + * Copyright (c) 2014-2015 Ruslan Bukin * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,6 +26,8 @@ * $FreeBSD$ */ +#include "imx6q-pinfunc.h" + /dts-v1/; /include/ "imx6.dtsi" @@ -42,7 +44,20 @@ SOC: soc@00000000 { aips@02000000 { /* AIPS1 */ - iomux@020e0000 { status = "okay"; }; + iomux@020e0000 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pins_ssi>; + pins_ssi: ssi { + fsl,pins = < + MX6QDL_PAD_DISP0_DAT16__AUD5_TXC 0x130b0 + MX6QDL_PAD_DISP0_DAT17__AUD5_TXD 0x110b0 + MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS 0x130b0 + MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0 + MX6QDL_PAD_GPIO_19__CCM_CLKO1 0x130b0 + >; + }; + }; gpio@0209c000 { status = "okay"; }; gpio@020a0000 { status = "okay"; }; gpio@020a4000 { status = "okay"; }; @@ -76,6 +91,7 @@ usdhc@02198000 { status = "disabled"; }; usdhc@0219c000 { status = "disabled"; }; audmux@021d8000 { status = "okay"; }; + i2c@021a0000 { status = "okay"; }; }; }; diff --git a/sys/boot/fdt/dts/arm/imx6.dtsi b/sys/boot/fdt/dts/arm/imx6.dtsi index c24bb81a004e..db8b44e53b26 100644 --- a/sys/boot/fdt/dts/arm/imx6.dtsi +++ b/sys/boot/fdt/dts/arm/imx6.dtsi @@ -126,11 +126,12 @@ gpt: timer@02098000 { compatible = "fsl,imx6q-gpt", "fsl,imx51-gpt"; reg = <0x02098000 0x4000>; - interrupt-parent = <&gic>; interrupts = <87>; + interrupt-parent = <&gic>; + interrupts = <87>; }; iomux@020e0000 { - compatible = "fsl,imx6q-iomux"; + compatible = "fsl,imx6q-iomuxc"; reg = <0x020e0000 0x4000>; interrupt-parent = <&gic>; interrupts = <32>; @@ -311,6 +312,9 @@ compatible = "fsl,imx6q-ssi"; reg = <0x02028000 0x4000>; interrupts = < 78 >; + dmas = <&sdma 37 1 0>, + <&sdma 38 1 0>; + dma-names = "rx", "tx"; status = "disabled"; }; From 5faf2ae1601299ad5561e80c9a4647c224aae336 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sat, 24 Jan 2015 13:50:13 +0000 Subject: [PATCH 39/50] cp,mv,touch: Set timestamps with nanosecond precision. This uses utimensat(). --- bin/cp/utils.c | 11 +++--- bin/mv/mv.c | 9 +++-- usr.bin/touch/touch.c | 79 +++++++++++++++++++++---------------------- 3 files changed, 48 insertions(+), 51 deletions(-) diff --git a/bin/cp/utils.c b/bin/cp/utils.c index ad9695c08a13..e77a6c13a370 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -330,7 +330,7 @@ copy_special(struct stat *from_stat, int exists) int setfile(struct stat *fs, int fd) { - static struct timeval tv[2]; + static struct timespec tspec[2]; struct stat ts; int rval, gotstat, islink, fdval; @@ -340,10 +340,11 @@ setfile(struct stat *fs, int fd) fs->st_mode &= S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO; - TIMESPEC_TO_TIMEVAL(&tv[0], &fs->st_atim); - TIMESPEC_TO_TIMEVAL(&tv[1], &fs->st_mtim); - if (islink ? lutimes(to.p_path, tv) : utimes(to.p_path, tv)) { - warn("%sutimes: %s", islink ? "l" : "", to.p_path); + tspec[0] = fs->st_atim; + tspec[1] = fs->st_mtim; + if (utimensat(AT_FDCWD, to.p_path, tspec, + islink ? AT_SYMLINK_NOFOLLOW : 0)) { + warn("utimensat: %s", to.p_path); rval = 1; } if (fdval ? fstat(fd, &ts) : diff --git a/bin/mv/mv.c b/bin/mv/mv.c index 3e832acbfdf0..999c8fc8af4c 100644 --- a/bin/mv/mv.c +++ b/bin/mv/mv.c @@ -273,7 +273,7 @@ do_move(const char *from, const char *to) static int fastcopy(const char *from, const char *to, struct stat *sbp) { - struct timeval tval[2]; + struct timespec ts[2]; static u_int blen = MAXPHYS; static char *bp = NULL; mode_t oldmode; @@ -350,10 +350,9 @@ err: if (unlink(to)) } else warn("%s: cannot stat", to); - tval[0].tv_sec = sbp->st_atime; - tval[1].tv_sec = sbp->st_mtime; - tval[0].tv_usec = tval[1].tv_usec = 0; - if (utimes(to, tval)) + ts[0] = sbp->st_atim; + ts[1] = sbp->st_mtim; + if (utimensat(AT_FDCWD, to, ts, 0)) warn("%s: set times", to); if (close(to_fd)) { diff --git a/usr.bin/touch/touch.c b/usr.bin/touch/touch.c index 4439c07eb43d..c8bfd28d692d 100644 --- a/usr.bin/touch/touch.c +++ b/usr.bin/touch/touch.c @@ -56,10 +56,10 @@ static const char sccsid[] = "@(#)touch.c 8.1 (Berkeley) 6/6/93"; #include #include -static void stime_arg1(const char *, struct timeval *); -static void stime_arg2(const char *, int, struct timeval *); -static void stime_darg(const char *, struct timeval *); -static void stime_file(const char *, struct timeval *); +static void stime_arg1(const char *, struct timespec *); +static void stime_arg2(const char *, int, struct timespec *); +static void stime_darg(const char *, struct timespec *); +static void stime_file(const char *, struct timespec *); static int timeoffset(const char *); static void usage(const char *); @@ -67,19 +67,17 @@ int main(int argc, char *argv[]) { struct stat sb; - struct timeval tv[2]; - int (*stat_f)(const char *, struct stat *); - int (*utimes_f)(const char *, const struct timeval *); + struct timespec ts[2]; + int atflag; int Aflag, aflag, cflag, mflag, ch, fd, len, rval, timeset; char *p; char *myname; myname = basename(argv[0]); Aflag = aflag = cflag = mflag = timeset = 0; - stat_f = stat; - utimes_f = utimes; - if (gettimeofday(&tv[0], NULL) == -1) - err(1, "gettimeofday"); + atflag = 0; + if (clock_gettime(CLOCK_REALTIME, &ts[0]) == -1) + err(1, "clock_gettime(CLOCK_REALTIME)"); while ((ch = getopt(argc, argv, "A:acd:fhmr:t:")) != -1) switch(ch) { @@ -94,26 +92,25 @@ main(int argc, char *argv[]) break; case 'd': timeset = 1; - stime_darg(optarg, tv); + stime_darg(optarg, ts); break; case 'f': /* No-op for compatibility. */ break; case 'h': cflag = 1; - stat_f = lstat; - utimes_f = lutimes; + atflag = AT_SYMLINK_NOFOLLOW; break; case 'm': mflag = 1; break; case 'r': timeset = 1; - stime_file(optarg, tv); + stime_file(optarg, ts); break; case 't': timeset = 1; - stime_arg1(optarg, tv); + stime_arg1(optarg, ts); break; default: usage(myname); @@ -132,9 +129,9 @@ main(int argc, char *argv[]) * that time once and for all here. */ if (aflag) - tv[0].tv_sec += Aflag; + ts[0].tv_sec += Aflag; if (mflag) - tv[1].tv_sec += Aflag; + ts[1].tv_sec += Aflag; Aflag = 0; /* done our job */ } } else { @@ -148,11 +145,11 @@ main(int argc, char *argv[]) len = p - argv[0]; if (*p == '\0' && (len == 8 || len == 10)) { timeset = 1; - stime_arg2(*argv++, len == 10, tv); + stime_arg2(*argv++, len == 10, ts); } } /* Both times default to the same. */ - tv[1] = tv[0]; + ts[1] = ts[0]; } if (*argv == NULL) @@ -163,7 +160,7 @@ main(int argc, char *argv[]) for (rval = 0; *argv; ++argv) { /* See if the file exists. */ - if (stat_f(*argv, &sb) != 0) { + if (fstatat(AT_FDCWD, *argv, &sb, atflag) != 0) { if (errno != ENOENT) { rval = 1; warn("%s", *argv); @@ -187,9 +184,9 @@ main(int argc, char *argv[]) } if (!aflag) - TIMESPEC_TO_TIMEVAL(&tv[0], &sb.st_atim); + ts[0] = sb.st_atim; if (!mflag) - TIMESPEC_TO_TIMEVAL(&tv[1], &sb.st_mtim); + ts[1] = sb.st_mtim; /* * We're adjusting the times based on the file times, not a @@ -197,17 +194,17 @@ main(int argc, char *argv[]) */ if (Aflag) { if (aflag) { - TIMESPEC_TO_TIMEVAL(&tv[0], &sb.st_atim); - tv[0].tv_sec += Aflag; + ts[0] = sb.st_atim; + ts[0].tv_sec += Aflag; } if (mflag) { - TIMESPEC_TO_TIMEVAL(&tv[1], &sb.st_mtim); - tv[1].tv_sec += Aflag; + ts[1] = sb.st_mtim; + ts[1].tv_sec += Aflag; } } - /* Try utimes(2). */ - if (!utimes_f(*argv, tv)) + /* Try utimensat(2). */ + if (!utimensat(AT_FDCWD, *argv, ts, atflag)) continue; /* If the user specified a time, nothing else we can do. */ @@ -223,7 +220,7 @@ main(int argc, char *argv[]) * The permission checks are different, too, in that the * ability to write the file is sufficient. Take a shot. */ - if (!utimes_f(*argv, NULL)) + if (!utimensat(AT_FDCWD, *argv, NULL, atflag)) continue; rval = 1; @@ -235,7 +232,7 @@ main(int argc, char *argv[]) #define ATOI2(ar) ((ar)[0] - '0') * 10 + ((ar)[1] - '0'); (ar) += 2; static void -stime_arg1(const char *arg, struct timeval *tvp) +stime_arg1(const char *arg, struct timespec *tvp) { time_t now; struct tm *t; @@ -291,7 +288,7 @@ stime_arg1(const char *arg, struct timeval *tvp) if (tvp[0].tv_sec == -1) goto terr; - tvp[0].tv_usec = tvp[1].tv_usec = 0; + tvp[0].tv_nsec = tvp[1].tv_nsec = 0; return; terr: @@ -299,7 +296,7 @@ stime_arg1(const char *arg, struct timeval *tvp) } static void -stime_arg2(const char *arg, int year, struct timeval *tvp) +stime_arg2(const char *arg, int year, struct timespec *tvp) { time_t now; struct tm *t; @@ -325,18 +322,18 @@ stime_arg2(const char *arg, int year, struct timeval *tvp) errx(1, "out of range or illegal time specification: MMDDhhmm[yy]"); - tvp[0].tv_usec = tvp[1].tv_usec = 0; + tvp[0].tv_nsec = tvp[1].tv_nsec = 0; } static void -stime_darg(const char *arg, struct timeval *tvp) +stime_darg(const char *arg, struct timespec *tvp) { struct tm t = { .tm_sec = 0 }; const char *fmt, *colon; char *p; int val, isutc = 0; - tvp[0].tv_usec = 0; + tvp[0].tv_nsec = 0; t.tm_isdst = -1; colon = strchr(arg, ':'); if (colon == NULL || strchr(colon + 1, ':') == NULL) @@ -349,9 +346,9 @@ stime_darg(const char *arg, struct timeval *tvp) /* POSIX: must have at least one digit after dot */ if ((*p == '.' || *p == ',') && isdigit((unsigned char)p[1])) { p++; - val = 100000; + val = 100000000; while (isdigit((unsigned char)*p)) { - tvp[0].tv_usec += val * (*p - '0'); + tvp[0].tv_nsec += val * (*p - '0'); p++; val /= 10; } @@ -403,14 +400,14 @@ timeoffset(const char *arg) } static void -stime_file(const char *fname, struct timeval *tvp) +stime_file(const char *fname, struct timespec *tsp) { struct stat sb; if (stat(fname, &sb)) err(1, "%s", fname); - TIMESPEC_TO_TIMEVAL(tvp, &sb.st_atim); - TIMESPEC_TO_TIMEVAL(tvp + 1, &sb.st_mtim); + tsp[0] = sb.st_atim; + tsp[1] = sb.st_mtim; } static void From 71943c3d359adc2450d40abffbcda2ec748c4c86 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 24 Jan 2015 15:33:42 +0000 Subject: [PATCH 40/50] Avoid calling vmspace_free() while owning the process lock. Freeing of an vm space may require obtaining sleepable locks. Hold the process to keep the pointer valid, and change trylock to lock, since there is no longer two process locks owned simultaneously in vm_pageout_oom(). Note that after the process lock is dropped, process might exec, and no longer qualify as the owner of biggest vm space. In collaboration with: rstone Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/vm/vm_pageout.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index ca9d7f9a3b5b..c81290ca097d 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -1516,15 +1516,15 @@ vm_pageout_oom(int shortage) FOREACH_PROC_IN_SYSTEM(p) { int breakout; - if (PROC_TRYLOCK(p) == 0) - continue; + PROC_LOCK(p); + /* * If this is a system, protected or killed process, skip it. */ - if (p->p_state != PRS_NORMAL || - (p->p_flag & (P_INEXEC | P_PROTECTED | P_SYSTEM)) || - (p->p_pid == 1) || P_KILLED(p) || - ((p->p_pid < 48) && (swap_pager_avail != 0))) { + if (p->p_state != PRS_NORMAL || (p->p_flag & (P_INEXEC | + P_PROTECTED | P_SYSTEM | P_WEXIT)) != 0 || + p->p_pid == 1 || P_KILLED(p) || + (p->p_pid < 48 && swap_pager_avail != 0)) { PROC_UNLOCK(p); continue; } @@ -1557,11 +1557,14 @@ vm_pageout_oom(int shortage) PROC_UNLOCK(p); continue; } + _PHOLD(p); if (!vm_map_trylock_read(&vm->vm_map)) { - vmspace_free(vm); + _PRELE(p); PROC_UNLOCK(p); + vmspace_free(vm); continue; } + PROC_UNLOCK(p); size = vmspace_swap_count(vm); vm_map_unlock_read(&vm->vm_map); if (shortage == VM_OOM_MEM) @@ -1573,16 +1576,19 @@ vm_pageout_oom(int shortage) */ if (size > bigsize) { if (bigproc != NULL) - PROC_UNLOCK(bigproc); + PRELE(bigproc); bigproc = p; bigsize = size; - } else - PROC_UNLOCK(p); + } else { + PRELE(p); + } } sx_sunlock(&allproc_lock); if (bigproc != NULL) { + PROC_LOCK(bigproc); killproc(bigproc, "out of swap space"); sched_nice(bigproc, PRIO_MIN); + _PRELE(bigproc); PROC_UNLOCK(bigproc); wakeup(&vm_cnt.v_free_count); } From 117f1bc17f8c9dcee4c7256a2dddceab1954c219 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Sat, 24 Jan 2015 15:40:52 +0000 Subject: [PATCH 41/50] Fix wrong LUN reference in XCOPY block-to-block operation. This could cause data corruption due to accessing wrong LUN in case of retries on write errors. Failed writes were retried to read LUN. MFC after: 3 days --- sys/cam/ctl/ctl_tpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/ctl/ctl_tpc.c b/sys/cam/ctl/ctl_tpc.c index 4e67ce14d322..63aee278bb96 100644 --- a/sys/cam/ctl/ctl_tpc.c +++ b/sys/cam/ctl/ctl_tpc.c @@ -916,7 +916,7 @@ tpc_process_b2b(struct tpc_list *list) /*control*/ 0); tiow->io->io_hdr.retries = 3; tiow->lun = dl; - tiow->io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = tior; + tiow->io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = tiow; TAILQ_INSERT_TAIL(&tior->run, tiow, rlinks); TAILQ_INSERT_TAIL(prun, tior, rlinks); From 8dd985befefa1d755af67820b7b32461899d9852 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sat, 24 Jan 2015 15:49:40 +0000 Subject: [PATCH 42/50] Enable utimensat tests from NetBSD. As with other tests from c063, a required #include was missing. --- contrib/netbsd-tests/lib/libc/c063/t_utimensat.c | 3 +++ lib/libc/tests/c063/Makefile | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c b/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c index 9f21fd6f126a..bbfa28bd01df 100644 --- a/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c +++ b/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c @@ -40,6 +40,9 @@ __RCSID("$NetBSD: t_utimensat.c,v 1.5 2013/03/17 04:46:06 jmmv Exp $"); #include #include #include +#ifdef __FreeBSD__ +#include +#endif #include #define DIR "dir" diff --git a/lib/libc/tests/c063/Makefile b/lib/libc/tests/c063/Makefile index 0b8f3b0974fc..5f4e1ca9c31f 100644 --- a/lib/libc/tests/c063/Makefile +++ b/lib/libc/tests/c063/Makefile @@ -2,7 +2,7 @@ TESTSDIR= ${TESTSBASE}/lib/libc/c063 -#TODO: t_o_search, t_utimensat +#TODO: t_o_search NETBSD_ATF_TESTS_C= faccessat NETBSD_ATF_TESTS_C+= fchmodat @@ -18,6 +18,7 @@ NETBSD_ATF_TESTS_C+= readlinkat NETBSD_ATF_TESTS_C+= renameat NETBSD_ATF_TESTS_C+= symlinkat NETBSD_ATF_TESTS_C+= unlinkat +NETBSD_ATF_TESTS_C+= utimensat CFLAGS+= -D_INCOMPLETE_XOPEN_C063 From 423521aa33a2ca4d2846956aed7a0e0d5a0b78a6 Mon Sep 17 00:00:00 2001 From: Ryan Stone Date: Sat, 24 Jan 2015 16:59:38 +0000 Subject: [PATCH 43/50] vmspace_release() may sleep if the last reference is being released, so add a WITNESS_WARN() to catch cases where it is called with a non-sleepable lock held. MFC after: 1 month Sponsored by: Sandvine Inc. --- sys/vm/vm_map.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index b8d67bd30a3e..b7e668b928b0 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -344,6 +344,9 @@ void vmspace_free(struct vmspace *vm) { + WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, + "vmspace_free() called with non-sleepable lock held"); + if (vm->vm_refcnt == 0) panic("vmspace_free: attempt to free already freed vmspace"); From ce7e32798f0a5b337b63929c4c5dd237206862f1 Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Sat, 24 Jan 2015 17:11:11 +0000 Subject: [PATCH 44/50] Add tests/etc/rc.d to mtree. Submitted by: stefanf MFC after: 1 week MFC with: 277627 --- etc/mtree/BSD.tests.dist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index c43f1aea48dc..7ea2155d3727 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -52,6 +52,8 @@ .. .. etc + rc.d + .. .. games .. From 8311a2b8a4ee641d7ef0c46331378da0a328467b Mon Sep 17 00:00:00 2001 From: Will Andrews Date: Sat, 24 Jan 2015 17:32:45 +0000 Subject: [PATCH 45/50] Add vm.panic_on_oom sysctl, which enables those who would rather panic than kill a process, when the system runs out of memory. Defaults to off. Usually, this is most useful when the OOM condition is due to mismanagement of memory, on a system where the applications in question don't respond well to being killed. In theory, if the system is properly managed, it shouldn't be possible to hit this condition. If it does, the panic can be more desirable for some users (since it can be a good means of finding the root cause) rather than killing the largest process and continuing on its merry way. As kib@ mentions in the differential, there is also protect(1), which uses procctl(PROC_SPROTECT) to ensure that some processes are immune. However, a panic approach is still useful in some environments. This is primarily intended as a development/debugging tool. Differential Revision: D1627 Reviewed by: kib MFC after: 1 week --- sys/vm/vm_pageout.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index c81290ca097d..ecc3dabfe70f 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -180,6 +180,12 @@ static int vm_swap_enabled = 1; static int vm_swap_idle_enabled = 0; #endif +static int vm_panic_on_oom = 0; + +SYSCTL_INT(_vm, OID_AUTO, panic_on_oom, + CTLFLAG_RWTUN, &vm_panic_on_oom, 0, + "panic on out of memory instead of killing the largest process"); + SYSCTL_INT(_vm, OID_AUTO, pageout_wakeup_thresh, CTLFLAG_RW, &vm_pageout_wakeup_thresh, 0, "free page threshold for waking up the pageout daemon"); @@ -1585,6 +1591,8 @@ vm_pageout_oom(int shortage) } sx_sunlock(&allproc_lock); if (bigproc != NULL) { + if (vm_panic_on_oom != 0) + panic("out of swap space"); PROC_LOCK(bigproc); killproc(bigproc, "out of swap space"); sched_nice(bigproc, PRIO_MIN); From 70a89b8588dae5847fbdfcfc5732a246ec630463 Mon Sep 17 00:00:00 2001 From: Baptiste Daroussin Date: Sat, 24 Jan 2015 19:13:03 +0000 Subject: [PATCH 46/50] Allow negative numbers in -u and -g options PR: 196514 MFC after: 1 week --- usr.sbin/pw/pw_group.c | 6 +++++- usr.sbin/pw/pw_user.c | 5 ++++- usr.sbin/pw/tests/Makefile | 4 +++- usr.sbin/pw/tests/pw_groupshow.sh | 19 +++++++++++++++++++ usr.sbin/pw/tests/pw_usershow.sh | 19 +++++++++++++++++++ 5 files changed, 50 insertions(+), 3 deletions(-) create mode 100755 usr.sbin/pw/tests/pw_groupshow.sh create mode 100755 usr.sbin/pw/tests/pw_usershow.sh diff --git a/usr.sbin/pw/pw_group.c b/usr.sbin/pw/pw_group.c index b20ce88fb301..51166cdebca5 100644 --- a/usr.sbin/pw/pw_group.c +++ b/usr.sbin/pw/pw_group.c @@ -68,7 +68,11 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args) }; if (a_gid != NULL) { - if (strspn(a_gid->val, "0123456789") != strlen(a_gid->val)) + const char *teststr; + teststr = a_gid->val; + if (*teststr == '-') + teststr++; + if (strspn(teststr, "0123456789") != strlen(teststr)) errx(EX_USAGE, "-g expects a number"); } diff --git a/usr.sbin/pw/pw_user.c b/usr.sbin/pw/pw_user.c index 483148af4909..f146b464adb6 100644 --- a/usr.sbin/pw/pw_user.c +++ b/usr.sbin/pw/pw_user.c @@ -322,7 +322,10 @@ pw_user(struct userconf * cnf, int mode, struct cargs * args) a_name = NULL; } } else { - if (strspn(a_uid->val, "0123456789") != strlen(a_uid->val)) + const char *teststr = a_uid->val; + if (*teststr == '-') + teststr++; + if (strspn(teststr, "0123456789") != strlen(teststr)) errx(EX_USAGE, "-u expects a number"); } diff --git a/usr.sbin/pw/tests/Makefile b/usr.sbin/pw/tests/Makefile index 1283ff2a7d27..c60988418222 100644 --- a/usr.sbin/pw/tests/Makefile +++ b/usr.sbin/pw/tests/Makefile @@ -9,9 +9,11 @@ ATF_TESTS_SH= pw_etcdir \ pw_lock \ pw_groupdel \ pw_groupmod \ + pw_groupshow \ pw_useradd \ pw_userdel \ - pw_usermod + pw_usermod \ + pw_usershow .for tp in ${ATF_TESTS_SH} TEST_METADATA.${tp}+= required_user="root" diff --git a/usr.sbin/pw/tests/pw_groupshow.sh b/usr.sbin/pw/tests/pw_groupshow.sh new file mode 100755 index 000000000000..2ba53d6ff19f --- /dev/null +++ b/usr.sbin/pw/tests/pw_groupshow.sh @@ -0,0 +1,19 @@ +# $FreeBSD$ + +# Import helper functions +. $(atf_get_srcdir)/helper_functions.shin + + +# Test negative uid are still valid +# PR: 196514 +atf_test_case show_group_with_negative_number +show_group_with_negative_number_body() { + populate_etc_skel + atf_check -s exit:0 \ + -o inline:"wheel:*:0:root\n" \ + ${PW} groupshow -n wheel -g -1 +} + +atf_init_test_cases() { + atf_add_test_case show_group_with_negative_number +} diff --git a/usr.sbin/pw/tests/pw_usershow.sh b/usr.sbin/pw/tests/pw_usershow.sh new file mode 100755 index 000000000000..4703644ca36c --- /dev/null +++ b/usr.sbin/pw/tests/pw_usershow.sh @@ -0,0 +1,19 @@ +# $FreeBSD$ + +# Import helper functions +. $(atf_get_srcdir)/helper_functions.shin + + +# Test negative uid are still valid +# PR: 196514 +atf_test_case show_user_with_negative_number +show_user_with_negative_number_body() { + populate_etc_skel + atf_check -s exit:0 \ + -o inline:"root:*:0:0::0:0:Charlie &:/root:/bin/csh\n" \ + ${PW} usershow -n root -u -1 +} + +atf_init_test_cases() { + atf_add_test_case show_user_with_negative_number +} From 11c0b69c08a46625f1264b5fde253b55b152398c Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 24 Jan 2015 19:49:27 +0000 Subject: [PATCH 47/50] Change the permissions from 0660 to 0600. Otherwise people in wheel can do things with netmap, including but not limited to promisc transmit/receive. Approved by: luigi MFC after: 1 week --- sys/dev/netmap/netmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c index 9369f6cf2a24..959b2703fc8f 100644 --- a/sys/dev/netmap/netmap.c +++ b/sys/dev/netmap/netmap.c @@ -3075,10 +3075,10 @@ netmap_init(void) #ifdef __FreeBSD__ /* support for the 'eternal' flag */ netmap_dev = make_dev_credf(MAKEDEV_ETERNAL_KLD, - &netmap_cdevsw, 0, NULL, UID_ROOT, GID_WHEEL, 0660, + &netmap_cdevsw, 0, NULL, UID_ROOT, GID_WHEEL, 0600, "netmap"); #else - netmap_dev = make_dev(&netmap_cdevsw, 0, UID_ROOT, GID_WHEEL, 0660, + netmap_dev = make_dev(&netmap_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "netmap"); #endif if (!netmap_dev) From 8f228789016acf40c01a73284a7d541ba58985e5 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 24 Jan 2015 20:16:34 +0000 Subject: [PATCH 48/50] gdb: Add missing break statements 2004-05-21 Jim Blandy * dwarf2expr.c (execute_stack_op): Add 'break' statements after cases for DW_OP_div and DW_OP_shr. (Thanks to Reva Cuthbertson.) Sourceware commit 99c87dab95747d380392a3698740507a21ad3236 --- gdb/dwarf2expr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c index 50baced5f2e8..294afa06c63c 100644 --- a/gdb/dwarf2expr.c +++ b/gdb/dwarf2expr.c @@ -575,6 +575,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr, break; case DW_OP_div: binop = BINOP_DIV; + break; case DW_OP_minus: binop = BINOP_SUB; break; @@ -595,6 +596,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr, break; case DW_OP_shr: binop = BINOP_RSH; + break; case DW_OP_shra: binop = BINOP_RSH; val1 = value_from_longest (signed_address_type (), first); From 50878a7bbdbbd7b42b2101e4ca1606b974b8da20 Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Sat, 24 Jan 2015 20:18:37 +0000 Subject: [PATCH 49/50] Reimplement fdt_clock_register_provider() correctly. It turns out you can't use OF_xref_from_device() to implement the function that registers the xref association with the device. Pointy hat: ian Submitted by: loos --- sys/dev/fdt/fdt_clock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/dev/fdt/fdt_clock.c b/sys/dev/fdt/fdt_clock.c index e471523b8a2c..88c2ac4c63d8 100644 --- a/sys/dev/fdt/fdt_clock.c +++ b/sys/dev/fdt/fdt_clock.c @@ -149,7 +149,8 @@ void fdt_clock_register_provider(device_t provider) { - OF_device_register_xref(OF_xref_from_device(provider), provider); + OF_device_register_xref( + OF_xref_from_node(ofw_bus_get_node(provider)), provider); } void From 8d2edb694b0b40cfefe7372c9116efe267b1f034 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 24 Jan 2015 21:00:51 +0000 Subject: [PATCH 50/50] GDB: Replace use of sprintf. 2005-03-17 Mark Kettenis * corelow.c (get_core_register_section): Replace usage of sprintf and strcpy with xstrprintf and xstrdup. Sourceware commit: 3ecda4574edb38ad12fb491ccaf6d9b0caa3a07a --- gdb/corelow.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gdb/corelow.c b/gdb/corelow.c index 403cfa31338d..c06e6220dc8b 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -432,15 +432,16 @@ get_core_register_section (char *name, char *human_name, int required) { - char section_name[100]; + static char *section_name = NULL; struct bfd_section *section; bfd_size_type size; char *contents; + xfree (section_name); if (PIDGET (inferior_ptid)) - sprintf (section_name, "%s/%d", name, PIDGET (inferior_ptid)); + section_name = xstrprintf ("%s/%d", name, PIDGET (inferior_ptid)); else - strcpy (section_name, name); + section_name = xstrdup (name); section = bfd_get_section_by_name (core_bfd, section_name); if (! section)