about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorIrina Popa <irinagpopa@gmail.com>2017-12-08 21:18:21 +0200
committerIrina Popa <irinagpopa@gmail.com>2018-04-26 16:39:44 +0300
commit38e964077b5a163fc7e4c825d23f4c7cf0625d4c (patch)
tree2e949808d9742e89b9270f2738577f871167738a /src
parent6f03b80020907a2ac3d3559fcab5516ef870f46b (diff)
downloadrust-38e964077b5a163fc7e4c825d23f4c7cf0625d4c.tar.gz
rust-38e964077b5a163fc7e4c825d23f4c7cf0625d4c.zip
Rename rustc_back::target to rustc_target::spec.
Diffstat (limited to 'src')
-rw-r--r--src/Cargo.lock34
-rw-r--r--src/librustc/Cargo.toml2
-rw-r--r--src/librustc/ich/impls_misc.rs2
-rw-r--r--src/librustc/lib.rs2
-rw-r--r--src/librustc/middle/cstore.rs2
-rw-r--r--src/librustc/middle/dependency_format.rs2
-rw-r--r--src/librustc/middle/weak_lang_items.rs2
-rw-r--r--src/librustc/session/config.rs13
-rw-r--r--src/librustc/session/mod.rs4
-rw-r--r--src/librustc/ty/maps/mod.rs2
-rw-r--r--src/librustc_back/README.md6
-rw-r--r--src/librustc_driver/Cargo.toml2
-rw-r--r--src/librustc_driver/lib.rs4
-rw-r--r--src/librustc_metadata/Cargo.toml2
-rw-r--r--src/librustc_metadata/creader.rs3
-rw-r--r--src/librustc_metadata/cstore.rs2
-rw-r--r--src/librustc_metadata/lib.rs2
-rw-r--r--src/librustc_metadata/locator.rs2
-rw-r--r--src/librustc_metadata/schema.rs3
-rw-r--r--src/librustc_mir/Cargo.toml2
-rw-r--r--src/librustc_mir/build/mod.rs2
-rw-r--r--src/librustc_mir/lib.rs2
-rw-r--r--src/librustc_target/Cargo.toml (renamed from src/librustc_back/Cargo.toml)4
-rw-r--r--src/librustc_target/README.md6
-rw-r--r--src/librustc_target/build.rs (renamed from src/librustc_back/build.rs)0
-rw-r--r--src/librustc_target/lib.rs (renamed from src/librustc_back/lib.rs)4
-rw-r--r--src/librustc_target/spec/aarch64_apple_ios.rs (renamed from src/librustc_back/target/aarch64_apple_ios.rs)2
-rw-r--r--src/librustc_target/spec/aarch64_linux_android.rs (renamed from src/librustc_back/target/aarch64_linux_android.rs)2
-rw-r--r--src/librustc_target/spec/aarch64_unknown_cloudabi.rs (renamed from src/librustc_back/target/aarch64_unknown_cloudabi.rs)2
-rw-r--r--src/librustc_target/spec/aarch64_unknown_freebsd.rs (renamed from src/librustc_back/target/aarch64_unknown_freebsd.rs)2
-rw-r--r--src/librustc_target/spec/aarch64_unknown_fuchsia.rs (renamed from src/librustc_back/target/aarch64_unknown_fuchsia.rs)2
-rw-r--r--src/librustc_target/spec/aarch64_unknown_linux_gnu.rs (renamed from src/librustc_back/target/aarch64_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/aarch64_unknown_linux_musl.rs (renamed from src/librustc_back/target/aarch64_unknown_linux_musl.rs)2
-rw-r--r--src/librustc_target/spec/android_base.rs (renamed from src/librustc_back/target/android_base.rs)2
-rw-r--r--src/librustc_target/spec/apple_base.rs (renamed from src/librustc_back/target/apple_base.rs)2
-rw-r--r--src/librustc_target/spec/apple_ios_base.rs (renamed from src/librustc_back/target/apple_ios_base.rs)2
-rw-r--r--src/librustc_target/spec/arm_base.rs (renamed from src/librustc_back/target/arm_base.rs)0
-rw-r--r--src/librustc_target/spec/arm_linux_androideabi.rs (renamed from src/librustc_back/target/arm_linux_androideabi.rs)2
-rw-r--r--src/librustc_target/spec/arm_unknown_linux_gnueabi.rs (renamed from src/librustc_back/target/arm_unknown_linux_gnueabi.rs)2
-rw-r--r--src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs (renamed from src/librustc_back/target/arm_unknown_linux_gnueabihf.rs)2
-rw-r--r--src/librustc_target/spec/arm_unknown_linux_musleabi.rs (renamed from src/librustc_back/target/arm_unknown_linux_musleabi.rs)2
-rw-r--r--src/librustc_target/spec/arm_unknown_linux_musleabihf.rs (renamed from src/librustc_back/target/arm_unknown_linux_musleabihf.rs)2
-rw-r--r--src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs (renamed from src/librustc_back/target/armv4t_unknown_linux_gnueabi.rs)2
-rw-r--r--src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs (renamed from src/librustc_back/target/armv5te_unknown_linux_gnueabi.rs)2
-rw-r--r--src/librustc_target/spec/armv7_apple_ios.rs (renamed from src/librustc_back/target/armv7_apple_ios.rs)2
-rw-r--r--src/librustc_target/spec/armv7_linux_androideabi.rs (renamed from src/librustc_back/target/armv7_linux_androideabi.rs)2
-rw-r--r--src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs (renamed from src/librustc_back/target/armv7_unknown_cloudabi_eabihf.rs)2
-rw-r--r--src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs (renamed from src/librustc_back/target/armv7_unknown_linux_gnueabihf.rs)2
-rw-r--r--src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs (renamed from src/librustc_back/target/armv7_unknown_linux_musleabihf.rs)2
-rw-r--r--src/librustc_target/spec/armv7s_apple_ios.rs (renamed from src/librustc_back/target/armv7s_apple_ios.rs)2
-rw-r--r--src/librustc_target/spec/asmjs_unknown_emscripten.rs (renamed from src/librustc_back/target/asmjs_unknown_emscripten.rs)0
-rw-r--r--src/librustc_target/spec/bitrig_base.rs (renamed from src/librustc_back/target/bitrig_base.rs)2
-rw-r--r--src/librustc_target/spec/cloudabi_base.rs (renamed from src/librustc_back/target/cloudabi_base.rs)2
-rw-r--r--src/librustc_target/spec/dragonfly_base.rs (renamed from src/librustc_back/target/dragonfly_base.rs)2
-rw-r--r--src/librustc_target/spec/freebsd_base.rs (renamed from src/librustc_back/target/freebsd_base.rs)2
-rw-r--r--src/librustc_target/spec/fuchsia_base.rs (renamed from src/librustc_back/target/fuchsia_base.rs)2
-rw-r--r--src/librustc_target/spec/haiku_base.rs (renamed from src/librustc_back/target/haiku_base.rs)2
-rw-r--r--src/librustc_target/spec/i386_apple_ios.rs (renamed from src/librustc_back/target/i386_apple_ios.rs)2
-rw-r--r--src/librustc_target/spec/i586_pc_windows_msvc.rs (renamed from src/librustc_back/target/i586_pc_windows_msvc.rs)2
-rw-r--r--src/librustc_target/spec/i586_unknown_linux_gnu.rs (renamed from src/librustc_back/target/i586_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/i586_unknown_linux_musl.rs (renamed from src/librustc_back/target/i586_unknown_linux_musl.rs)2
-rw-r--r--src/librustc_target/spec/i686_apple_darwin.rs (renamed from src/librustc_back/target/i686_apple_darwin.rs)2
-rw-r--r--src/librustc_target/spec/i686_linux_android.rs (renamed from src/librustc_back/target/i686_linux_android.rs)2
-rw-r--r--src/librustc_target/spec/i686_pc_windows_gnu.rs (renamed from src/librustc_back/target/i686_pc_windows_gnu.rs)2
-rw-r--r--src/librustc_target/spec/i686_pc_windows_msvc.rs (renamed from src/librustc_back/target/i686_pc_windows_msvc.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_cloudabi.rs (renamed from src/librustc_back/target/i686_unknown_cloudabi.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_dragonfly.rs (renamed from src/librustc_back/target/i686_unknown_dragonfly.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_freebsd.rs (renamed from src/librustc_back/target/i686_unknown_freebsd.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_haiku.rs (renamed from src/librustc_back/target/i686_unknown_haiku.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_linux_gnu.rs (renamed from src/librustc_back/target/i686_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_linux_musl.rs (renamed from src/librustc_back/target/i686_unknown_linux_musl.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_netbsd.rs (renamed from src/librustc_back/target/i686_unknown_netbsd.rs)2
-rw-r--r--src/librustc_target/spec/i686_unknown_openbsd.rs (renamed from src/librustc_back/target/i686_unknown_openbsd.rs)2
-rw-r--r--src/librustc_target/spec/l4re_base.rs (renamed from src/librustc_back/target/l4re_base.rs)2
-rw-r--r--src/librustc_target/spec/linux_base.rs (renamed from src/librustc_back/target/linux_base.rs)2
-rw-r--r--src/librustc_target/spec/linux_musl_base.rs (renamed from src/librustc_back/target/linux_musl_base.rs)2
-rw-r--r--src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs (renamed from src/librustc_back/target/mips64_unknown_linux_gnuabi64.rs)2
-rw-r--r--src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs (renamed from src/librustc_back/target/mips64el_unknown_linux_gnuabi64.rs)2
-rw-r--r--src/librustc_target/spec/mips_unknown_linux_gnu.rs (renamed from src/librustc_back/target/mips_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/mips_unknown_linux_musl.rs (renamed from src/librustc_back/target/mips_unknown_linux_musl.rs)2
-rw-r--r--src/librustc_target/spec/mips_unknown_linux_uclibc.rs (renamed from src/librustc_back/target/mips_unknown_linux_uclibc.rs)2
-rw-r--r--src/librustc_target/spec/mipsel_unknown_linux_gnu.rs (renamed from src/librustc_back/target/mipsel_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/mipsel_unknown_linux_musl.rs (renamed from src/librustc_back/target/mipsel_unknown_linux_musl.rs)2
-rw-r--r--src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs (renamed from src/librustc_back/target/mipsel_unknown_linux_uclibc.rs)2
-rw-r--r--src/librustc_target/spec/mod.rs (renamed from src/librustc_back/target/mod.rs)0
-rw-r--r--src/librustc_target/spec/msp430_none_elf.rs (renamed from src/librustc_back/target/msp430_none_elf.rs)2
-rw-r--r--src/librustc_target/spec/netbsd_base.rs (renamed from src/librustc_back/target/netbsd_base.rs)2
-rw-r--r--src/librustc_target/spec/openbsd_base.rs (renamed from src/librustc_back/target/openbsd_base.rs)2
-rw-r--r--src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs (renamed from src/librustc_back/target/powerpc64_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs (renamed from src/librustc_back/target/powerpc64le_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/powerpc_unknown_linux_gnu.rs (renamed from src/librustc_back/target/powerpc_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs (renamed from src/librustc_back/target/powerpc_unknown_linux_gnuspe.rs)3
-rw-r--r--src/librustc_target/spec/powerpc_unknown_netbsd.rs (renamed from src/librustc_back/target/powerpc_unknown_netbsd.rs)3
-rw-r--r--src/librustc_target/spec/redox_base.rs (renamed from src/librustc_back/target/redox_base.rs)2
-rw-r--r--src/librustc_target/spec/s390x_unknown_linux_gnu.rs (renamed from src/librustc_back/target/s390x_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/solaris_base.rs (renamed from src/librustc_back/target/solaris_base.rs)2
-rw-r--r--src/librustc_target/spec/sparc64_unknown_linux_gnu.rs (renamed from src/librustc_back/target/sparc64_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/sparc64_unknown_netbsd.rs (renamed from src/librustc_back/target/sparc64_unknown_netbsd.rs)2
-rw-r--r--src/librustc_target/spec/sparc_unknown_linux_gnu.rs (renamed from src/librustc_back/target/sparc_unknown_linux_gnu.rs)3
-rw-r--r--src/librustc_target/spec/sparcv9_sun_solaris.rs (renamed from src/librustc_back/target/sparcv9_sun_solaris.rs)2
-rw-r--r--src/librustc_target/spec/thumb_base.rs (renamed from src/librustc_back/target/thumb_base.rs)2
-rw-r--r--src/librustc_target/spec/thumbv6m_none_eabi.rs (renamed from src/librustc_back/target/thumbv6m_none_eabi.rs)2
-rw-r--r--src/librustc_target/spec/thumbv7em_none_eabi.rs (renamed from src/librustc_back/target/thumbv7em_none_eabi.rs)2
-rw-r--r--src/librustc_target/spec/thumbv7em_none_eabihf.rs (renamed from src/librustc_back/target/thumbv7em_none_eabihf.rs)2
-rw-r--r--src/librustc_target/spec/thumbv7m_none_eabi.rs (renamed from src/librustc_back/target/thumbv7m_none_eabi.rs)2
-rw-r--r--src/librustc_target/spec/wasm32_experimental_emscripten.rs (renamed from src/librustc_back/target/wasm32_experimental_emscripten.rs)0
-rw-r--r--src/librustc_target/spec/wasm32_unknown_emscripten.rs (renamed from src/librustc_back/target/wasm32_unknown_emscripten.rs)0
-rw-r--r--src/librustc_target/spec/wasm32_unknown_unknown.rs (renamed from src/librustc_back/target/wasm32_unknown_unknown.rs)0
-rw-r--r--src/librustc_target/spec/windows_base.rs (renamed from src/librustc_back/target/windows_base.rs)2
-rw-r--r--src/librustc_target/spec/windows_msvc_base.rs (renamed from src/librustc_back/target/windows_msvc_base.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_apple_darwin.rs (renamed from src/librustc_back/target/x86_64_apple_darwin.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_apple_ios.rs (renamed from src/librustc_back/target/x86_64_apple_ios.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_linux_android.rs (renamed from src/librustc_back/target/x86_64_linux_android.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_pc_windows_gnu.rs (renamed from src/librustc_back/target/x86_64_pc_windows_gnu.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_pc_windows_msvc.rs (renamed from src/librustc_back/target/x86_64_pc_windows_msvc.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_rumprun_netbsd.rs (renamed from src/librustc_back/target/x86_64_rumprun_netbsd.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_sun_solaris.rs (renamed from src/librustc_back/target/x86_64_sun_solaris.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_bitrig.rs (renamed from src/librustc_back/target/x86_64_unknown_bitrig.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_cloudabi.rs (renamed from src/librustc_back/target/x86_64_unknown_cloudabi.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_dragonfly.rs (renamed from src/librustc_back/target/x86_64_unknown_dragonfly.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_freebsd.rs (renamed from src/librustc_back/target/x86_64_unknown_freebsd.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_fuchsia.rs (renamed from src/librustc_back/target/x86_64_unknown_fuchsia.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_haiku.rs (renamed from src/librustc_back/target/x86_64_unknown_haiku.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_l4re_uclibc.rs (renamed from src/librustc_back/target/x86_64_unknown_l4re_uclibc.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_linux_gnu.rs (renamed from src/librustc_back/target/x86_64_unknown_linux_gnu.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_linux_gnux32.rs (renamed from src/librustc_back/target/x86_64_unknown_linux_gnux32.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_linux_musl.rs (renamed from src/librustc_back/target/x86_64_unknown_linux_musl.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_netbsd.rs (renamed from src/librustc_back/target/x86_64_unknown_netbsd.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_openbsd.rs (renamed from src/librustc_back/target/x86_64_unknown_openbsd.rs)2
-rw-r--r--src/librustc_target/spec/x86_64_unknown_redox.rs (renamed from src/librustc_back/target/x86_64_unknown_redox.rs)2
-rw-r--r--src/librustc_trans/Cargo.toml6
-rw-r--r--src/librustc_trans/back/command.rs2
-rw-r--r--src/librustc_trans/back/link.rs3
-rw-r--r--src/librustc_trans/back/linker.rs2
-rw-r--r--src/librustc_trans/base.rs2
-rw-r--r--src/librustc_trans/callee.rs2
-rw-r--r--src/librustc_trans/declare.rs2
-rw-r--r--src/librustc_trans/lib.rs2
-rw-r--r--src/librustc_trans/metadata.rs2
-rw-r--r--src/librustc_trans/type_of.rs2
-rw-r--r--src/librustc_trans_utils/Cargo.toml2
-rw-r--r--src/librustc_trans_utils/lib.rs2
-rw-r--r--src/librustc_trans_utils/trans_crate.rs2
-rw-r--r--src/librustdoc/core.rs2
-rw-r--r--src/librustdoc/lib.rs3
-rw-r--r--src/rustc/Cargo.toml4
146 files changed, 171 insertions, 179 deletions
diff --git a/src/Cargo.lock b/src/Cargo.lock
index b265ee5765a..cc21e394e1d 100644
--- a/src/Cargo.lock
+++ b/src/Cargo.lock
@@ -1728,10 +1728,10 @@ dependencies = [
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "proc_macro 0.0.0",
  "rustc_apfloat 0.0.0",
- "rustc_back 0.0.0",
  "rustc_const_math 0.0.0",
  "rustc_data_structures 0.0.0",
  "rustc_errors 0.0.0",
+ "rustc_target 0.0.0",
  "serialize 0.0.0",
  "syntax 0.0.0",
  "syntax_pos 0.0.0",
@@ -1818,8 +1818,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 name = "rustc-main"
 version = "0.0.0"
 dependencies = [
- "rustc_back 0.0.0",
  "rustc_driver 0.0.0",
+ "rustc_target 0.0.0",
 ]
 
 [[package]]
@@ -1858,16 +1858,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "rustc_back"
-version = "0.0.0"
-dependencies = [
- "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "serialize 0.0.0",
- "syntax 0.0.0",
-]
-
-[[package]]
 name = "rustc_borrowck"
 version = "0.0.0"
 dependencies = [
@@ -1921,7 +1911,6 @@ dependencies = [
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc 0.0.0",
  "rustc_allocator 0.0.0",
- "rustc_back 0.0.0",
  "rustc_borrowck 0.0.0",
  "rustc_data_structures 0.0.0",
  "rustc_errors 0.0.0",
@@ -1934,6 +1923,7 @@ dependencies = [
  "rustc_privacy 0.0.0",
  "rustc_resolve 0.0.0",
  "rustc_save_analysis 0.0.0",
+ "rustc_target 0.0.0",
  "rustc_traits 0.0.0",
  "rustc_trans_utils 0.0.0",
  "rustc_typeck 0.0.0",
@@ -2011,9 +2001,9 @@ dependencies = [
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "proc_macro 0.0.0",
  "rustc 0.0.0",
- "rustc_back 0.0.0",
  "rustc_data_structures 0.0.0",
  "rustc_errors 0.0.0",
+ "rustc_target 0.0.0",
  "serialize 0.0.0",
  "syntax 0.0.0",
  "syntax_ext 0.0.0",
@@ -2032,10 +2022,10 @@ dependencies = [
  "log_settings 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc 0.0.0",
  "rustc_apfloat 0.0.0",
- "rustc_back 0.0.0",
  "rustc_const_math 0.0.0",
  "rustc_data_structures 0.0.0",
  "rustc_errors 0.0.0",
+ "rustc_target 0.0.0",
  "serialize 0.0.0",
  "syntax 0.0.0",
  "syntax_pos 0.0.0",
@@ -2122,6 +2112,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustc_target"
+version = "0.0.0"
+dependencies = [
+ "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serialize 0.0.0",
+ "syntax 0.0.0",
+]
+
+[[package]]
 name = "rustc_traits"
 version = "0.0.0"
 dependencies = [
@@ -2150,7 +2150,6 @@ dependencies = [
  "rustc-demangle 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc_allocator 0.0.0",
  "rustc_apfloat 0.0.0",
- "rustc_back 0.0.0",
  "rustc_const_math 0.0.0",
  "rustc_data_structures 0.0.0",
  "rustc_errors 0.0.0",
@@ -2158,6 +2157,7 @@ dependencies = [
  "rustc_llvm 0.0.0",
  "rustc_mir 0.0.0",
  "rustc_platform_intrinsics 0.0.0",
+ "rustc_target 0.0.0",
  "rustc_trans_utils 0.0.0",
  "serialize 0.0.0",
  "syntax 0.0.0",
@@ -2173,10 +2173,10 @@ dependencies = [
  "flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc 0.0.0",
- "rustc_back 0.0.0",
  "rustc_data_structures 0.0.0",
  "rustc_incremental 0.0.0",
  "rustc_mir 0.0.0",
+ "rustc_target 0.0.0",
  "syntax 0.0.0",
  "syntax_pos 0.0.0",
 ]
diff --git a/src/librustc/Cargo.toml b/src/librustc/Cargo.toml
index 2aae0f24d48..357ebb89fb6 100644
--- a/src/librustc/Cargo.toml
+++ b/src/librustc/Cargo.toml
@@ -18,7 +18,7 @@ lazy_static = "1.0.0"
 log = { version = "0.4", features = ["release_max_level_info", "std"] }
 proc_macro = { path = "../libproc_macro" }
 rustc_apfloat = { path = "../librustc_apfloat" }
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_const_math = { path = "../librustc_const_math" }
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_errors = { path = "../librustc_errors" }
diff --git a/src/librustc/ich/impls_misc.rs b/src/librustc/ich/impls_misc.rs
index ba22e09cb31..db404179175 100644
--- a/src/librustc/ich/impls_misc.rs
+++ b/src/librustc/ich/impls_misc.rs
@@ -20,7 +20,7 @@ impl_stable_hash_for!(enum ::session::search_paths::PathKind {
     All
 });
 
-impl_stable_hash_for!(enum ::rustc_back::target::PanicStrategy {
+impl_stable_hash_for!(enum ::rustc_target::spec::PanicStrategy {
     Abort,
     Unwind
 });
diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs
index bb495049483..f85d0a9bf0c 100644
--- a/src/librustc/lib.rs
+++ b/src/librustc/lib.rs
@@ -81,7 +81,7 @@ extern crate graphviz;
 #[macro_use] extern crate lazy_static;
 #[cfg(windows)]
 extern crate libc;
-extern crate rustc_back;
+extern crate rustc_target;
 #[macro_use] extern crate rustc_data_structures;
 extern crate serialize;
 extern crate rustc_const_math;
diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs
index 60e197e614a..4400ebc294f 100644
--- a/src/librustc/middle/cstore.rs
+++ b/src/librustc/middle/cstore.rs
@@ -37,7 +37,7 @@ use syntax::ast;
 use syntax::ext::base::SyntaxExtension;
 use syntax::symbol::Symbol;
 use syntax_pos::Span;
-use rustc_back::target::Target;
+use rustc_target::spec::Target;
 use rustc_data_structures::sync::{MetadataRef, Lrc};
 
 pub use self::NativeLibraryKind::*;
diff --git a/src/librustc/middle/dependency_format.rs b/src/librustc/middle/dependency_format.rs
index 3b005689ca4..4996a6acff8 100644
--- a/src/librustc/middle/dependency_format.rs
+++ b/src/librustc/middle/dependency_format.rs
@@ -69,7 +69,7 @@ use ty::TyCtxt;
 use middle::cstore::{self, DepKind};
 use middle::cstore::LinkagePreference::{self, RequireStatic, RequireDynamic};
 use util::nodemap::FxHashMap;
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 
 /// A list of dependencies for a certain crate type.
 ///
diff --git a/src/librustc/middle/weak_lang_items.rs b/src/librustc/middle/weak_lang_items.rs
index fdb804e1cce..42e4d3861ba 100644
--- a/src/librustc/middle/weak_lang_items.rs
+++ b/src/librustc/middle/weak_lang_items.rs
@@ -13,7 +13,7 @@
 use session::config;
 use middle::lang_items;
 
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 use syntax::ast;
 use syntax::symbol::Symbol;
 use syntax_pos::Span;
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 72dcc392980..ab703d423c6 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -22,8 +22,8 @@ use session::{early_error, early_warn, Session};
 use session::search_paths::SearchPaths;
 
 use ich::StableHashingContext;
-use rustc_back::target::{LinkerFlavor, PanicStrategy, RelroLevel};
-use rustc_back::target::{Target, TargetTriple};
+use rustc_target::spec::{LinkerFlavor, PanicStrategy, RelroLevel};
+use rustc_target::spec::{Target, TargetTriple};
 use rustc_data_structures::stable_hasher::ToStableHashKey;
 use lint;
 use middle::cstore;
@@ -770,7 +770,7 @@ macro_rules! options {
         pub const parse_sanitizer: Option<&'static str> =
             Some("one of: `address`, `leak`, `memory` or `thread`");
         pub const parse_linker_flavor: Option<&'static str> =
-            Some(::rustc_back::target::LinkerFlavor::one_of());
+            Some(::rustc_target::spec::LinkerFlavor::one_of());
         pub const parse_optimization_fuel: Option<&'static str> =
             Some("crate=integer");
         pub const parse_unpretty: Option<&'static str> =
@@ -782,7 +782,7 @@ macro_rules! options {
     #[allow(dead_code)]
     mod $mod_set {
         use super::{$struct_name, Passes, SomePasses, AllPasses, Sanitizer, Lto};
-        use rustc_back::target::{LinkerFlavor, PanicStrategy, RelroLevel};
+        use rustc_target::spec::{LinkerFlavor, PanicStrategy, RelroLevel};
         use std::path::PathBuf;
 
         $(
@@ -2323,8 +2323,7 @@ mod dep_tracking {
     use super::{CrateType, DebugInfoLevel, ErrorOutputType, Lto, OptLevel, OutputTypes,
                 Passes, Sanitizer};
     use syntax::feature_gate::UnstableFeatures;
-    use rustc_back::target::{PanicStrategy, RelroLevel};
-    use rustc_back::target::TargetTriple;
+    use rustc_target::spec::{PanicStrategy, RelroLevel, TargetTriple};
     use syntax::edition::Edition;
 
     pub trait DepTrackingHash {
@@ -2456,7 +2455,7 @@ mod tests {
     use std::iter::FromIterator;
     use std::path::PathBuf;
     use super::{Externs, OutputType, OutputTypes};
-    use rustc_back::target::{PanicStrategy, RelroLevel};
+    use rustc_target::spec::{PanicStrategy, RelroLevel};
     use syntax::symbol::Symbol;
     use syntax::edition::{Edition, DEFAULT_EDITION};
     use syntax;
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index e21ed9eefde..a0f11443425 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -41,8 +41,8 @@ use syntax::{ast, codemap};
 use syntax::feature_gate::AttributeType;
 use syntax_pos::{MultiSpan, Span};
 
-use rustc_back::target::{LinkerFlavor, PanicStrategy};
-use rustc_back::target::{Target, TargetTriple};
+use rustc_target::spec::{LinkerFlavor, PanicStrategy};
+use rustc_target::spec::{Target, TargetTriple};
 use rustc_data_structures::flock;
 use jobserver::Client;
 
diff --git a/src/librustc/ty/maps/mod.rs b/src/librustc/ty/maps/mod.rs
index d0783e1a4b8..f5cb3643de8 100644
--- a/src/librustc/ty/maps/mod.rs
+++ b/src/librustc/ty/maps/mod.rs
@@ -45,7 +45,7 @@ use util::nodemap::{DefIdSet, DefIdMap, ItemLocalSet};
 use util::common::{profq_msg, ErrorReported, ProfileQueriesMsg};
 
 use rustc_data_structures::indexed_set::IdxSetBuf;
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 use rustc_data_structures::indexed_vec::IndexVec;
 use rustc_data_structures::fx::{FxHashMap, FxHashSet};
 use rustc_data_structures::stable_hasher::StableVec;
diff --git a/src/librustc_back/README.md b/src/librustc_back/README.md
deleted file mode 100644
index 3c01692c12b..00000000000
--- a/src/librustc_back/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-`librustc_back` contains some very low-level details that are
-specific to different LLVM targets and so forth.
-
-For more information about how trans works, see the [rustc guide].
-
-[rustc guide]: https://rust-lang-nursery.github.io/rustc-guide/trans.html
diff --git a/src/librustc_driver/Cargo.toml b/src/librustc_driver/Cargo.toml
index 3bff79ed3a6..5aae1bcad89 100644
--- a/src/librustc_driver/Cargo.toml
+++ b/src/librustc_driver/Cargo.toml
@@ -15,7 +15,7 @@ log = "0.4"
 env_logger = { version = "0.5", default-features = false }
 rustc = { path = "../librustc" }
 rustc_allocator = { path = "../librustc_allocator" }
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_borrowck = { path = "../librustc_borrowck" }
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_errors = { path = "../librustc_errors" }
diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs
index fb333ec38fb..b203f387e46 100644
--- a/src/librustc_driver/lib.rs
+++ b/src/librustc_driver/lib.rs
@@ -35,7 +35,7 @@ extern crate env_logger;
 extern crate libc;
 extern crate rustc;
 extern crate rustc_allocator;
-extern crate rustc_back;
+extern crate rustc_target;
 extern crate rustc_borrowck;
 extern crate rustc_data_structures;
 extern crate rustc_errors as errors;
@@ -1021,7 +1021,7 @@ impl RustcDefaultCalls {
         for req in &sess.opts.prints {
             match *req {
                 TargetList => {
-                    let mut targets = rustc_back::target::get_targets().collect::<Vec<String>>();
+                    let mut targets = rustc_target::spec::get_targets().collect::<Vec<String>>();
                     targets.sort();
                     println!("{}", targets.join("\n"));
                 },
diff --git a/src/librustc_metadata/Cargo.toml b/src/librustc_metadata/Cargo.toml
index a2dcf7f3f83..338824d5efe 100644
--- a/src/librustc_metadata/Cargo.toml
+++ b/src/librustc_metadata/Cargo.toml
@@ -13,7 +13,7 @@ flate2 = "1.0"
 log = "0.4"
 proc_macro = { path = "../libproc_macro" }
 rustc = { path = "../librustc" }
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_errors = { path = "../librustc_errors" }
 serialize = { path = "../libserialize" }
diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs
index 397605eeee2..d0237071a60 100644
--- a/src/librustc_metadata/creader.rs
+++ b/src/librustc_metadata/creader.rs
@@ -21,8 +21,7 @@ use rustc::middle::allocator::AllocatorKind;
 use rustc::middle::cstore::DepKind;
 use rustc::session::{Session, CrateDisambiguator};
 use rustc::session::config::{Sanitizer, self};
-use rustc_back::target::PanicStrategy;
-use rustc_back::target::TargetTriple;
+use rustc_target::spec::{PanicStrategy, TargetTriple};
 use rustc::session::search_paths::PathKind;
 use rustc::middle;
 use rustc::middle::cstore::{validate_crate_name, ExternCrate, ExternCrateSource};
diff --git a/src/librustc_metadata/cstore.rs b/src/librustc_metadata/cstore.rs
index 30175907605..64bbcf436cb 100644
--- a/src/librustc_metadata/cstore.rs
+++ b/src/librustc_metadata/cstore.rs
@@ -18,7 +18,7 @@ use rustc::hir::map::definitions::DefPathTable;
 use rustc::hir::svh::Svh;
 use rustc::middle::cstore::{DepKind, ExternCrate, MetadataLoader};
 use rustc::session::{Session, CrateDisambiguator};
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 use rustc_data_structures::indexed_vec::IndexVec;
 use rustc::util::nodemap::{FxHashMap, NodeMap};
 
diff --git a/src/librustc_metadata/lib.rs b/src/librustc_metadata/lib.rs
index 9ecb3fd6cdd..a99e0a32e66 100644
--- a/src/librustc_metadata/lib.rs
+++ b/src/librustc_metadata/lib.rs
@@ -38,7 +38,7 @@ extern crate proc_macro;
 
 #[macro_use]
 extern crate rustc;
-extern crate rustc_back;
+extern crate rustc_target;
 #[macro_use]
 extern crate rustc_data_structures;
 
diff --git a/src/librustc_metadata/locator.rs b/src/librustc_metadata/locator.rs
index f553c55ae56..9b1b48efca5 100644
--- a/src/librustc_metadata/locator.rs
+++ b/src/librustc_metadata/locator.rs
@@ -236,7 +236,7 @@ use rustc::util::nodemap::FxHashMap;
 use errors::DiagnosticBuilder;
 use syntax::symbol::Symbol;
 use syntax_pos::Span;
-use rustc_back::target::{Target, TargetTriple};
+use rustc_target::spec::{Target, TargetTriple};
 
 use std::cmp;
 use std::collections::HashSet;
diff --git a/src/librustc_metadata/schema.rs b/src/librustc_metadata/schema.rs
index 506fefd93cf..c9949389ace 100644
--- a/src/librustc_metadata/schema.rs
+++ b/src/librustc_metadata/schema.rs
@@ -19,8 +19,7 @@ use rustc::middle::lang_items;
 use rustc::mir;
 use rustc::session::CrateDisambiguator;
 use rustc::ty::{self, Ty, ReprOptions};
-use rustc_back::target::PanicStrategy;
-use rustc_back::target::TargetTriple;
+use rustc_target::spec::{PanicStrategy, TargetTriple};
 
 use rustc_serialize as serialize;
 use syntax::{ast, attr};
diff --git a/src/librustc_mir/Cargo.toml b/src/librustc_mir/Cargo.toml
index 90a0f18aba3..a1b348774b1 100644
--- a/src/librustc_mir/Cargo.toml
+++ b/src/librustc_mir/Cargo.toml
@@ -15,7 +15,7 @@ graphviz = { path = "../libgraphviz" }
 log = "0.4"
 log_settings = "0.1.1"
 rustc = { path = "../librustc" }
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_const_math = { path = "../librustc_const_math" }
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_errors = { path = "../librustc_errors" }
diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs
index 216a6a23f08..1dcf1e80041 100644
--- a/src/librustc_mir/build/mod.rs
+++ b/src/librustc_mir/build/mod.rs
@@ -20,7 +20,7 @@ use rustc::mir::visit::{MutVisitor, TyContext};
 use rustc::ty::{self, Ty, TyCtxt};
 use rustc::ty::subst::Substs;
 use rustc::util::nodemap::NodeMap;
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 use rustc_data_structures::indexed_vec::{IndexVec, Idx};
 use shim;
 use std::mem;
diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs
index a47b3cacc51..399892522a3 100644
--- a/src/librustc_mir/lib.rs
+++ b/src/librustc_mir/lib.rs
@@ -49,7 +49,7 @@ extern crate rustc_errors;
 #[macro_use]
 extern crate syntax;
 extern crate syntax_pos;
-extern crate rustc_back;
+extern crate rustc_target;
 extern crate rustc_const_math;
 extern crate core; // for NonZero
 extern crate log_settings;
diff --git a/src/librustc_back/Cargo.toml b/src/librustc_target/Cargo.toml
index 4c5b1417a2f..54c13258ef2 100644
--- a/src/librustc_back/Cargo.toml
+++ b/src/librustc_target/Cargo.toml
@@ -1,10 +1,10 @@
 [package]
 authors = ["The Rust Project Developers"]
-name = "rustc_back"
+name = "rustc_target"
 version = "0.0.0"
 
 [lib]
-name = "rustc_back"
+name = "rustc_target"
 path = "lib.rs"
 crate-type = ["dylib"]
 
diff --git a/src/librustc_target/README.md b/src/librustc_target/README.md
new file mode 100644
index 00000000000..f5b1acb1921
--- /dev/null
+++ b/src/librustc_target/README.md
@@ -0,0 +1,6 @@
+`librustc_target` contains some very low-level details that are
+specific to different compilation targets and so forth.
+
+For more information about how rustc works, see the [rustc guide].
+
+[rustc guide]: https://rust-lang-nursery.github.io/rustc-guide/
diff --git a/src/librustc_back/build.rs b/src/librustc_target/build.rs
index 6f6fde1e9e7..6f6fde1e9e7 100644
--- a/src/librustc_back/build.rs
+++ b/src/librustc_target/build.rs
diff --git a/src/librustc_back/lib.rs b/src/librustc_target/lib.rs
index 5a2b3d31386..05d9061da89 100644
--- a/src/librustc_back/lib.rs
+++ b/src/librustc_target/lib.rs
@@ -11,7 +11,7 @@
 //! Some stuff used by rustc that doesn't have many dependencies
 //!
 //! Originally extracted from rustc::back, which was nominally the
-//! compiler 'backend', though LLVM is rustc's backend, so rustc_back
+//! compiler 'backend', though LLVM is rustc's backend, so rustc_target
 //! is really just odds-and-ends relating to code gen and linking.
 //! This crate mostly exists to make rustc smaller, so we might put
 //! more 'stuff' here in the future.  It does not have a dependency on
@@ -36,4 +36,4 @@ extern crate serialize;
 
 extern crate serialize as rustc_serialize; // used by deriving
 
-pub mod target;
+pub mod spec;
diff --git a/src/librustc_back/target/aarch64_apple_ios.rs b/src/librustc_target/spec/aarch64_apple_ios.rs
index 5bded7c9ff3..90f8cd90c66 100644
--- a/src/librustc_back/target/aarch64_apple_ios.rs
+++ b/src/librustc_target/spec/aarch64_apple_ios.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 use super::apple_ios_base::{opts, Arch};
 
 pub fn target() -> TargetResult {
diff --git a/src/librustc_back/target/aarch64_linux_android.rs b/src/librustc_target/spec/aarch64_linux_android.rs
index 38ddb3d2878..afd67112f0d 100644
--- a/src/librustc_back/target/aarch64_linux_android.rs
+++ b/src/librustc_target/spec/aarch64_linux_android.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 // See https://developer.android.com/ndk/guides/abis.html#arm64-v8a
 // for target ABI requirements.
diff --git a/src/librustc_back/target/aarch64_unknown_cloudabi.rs b/src/librustc_target/spec/aarch64_unknown_cloudabi.rs
index 81de7ec529a..ffdb7decd0b 100644
--- a/src/librustc_back/target/aarch64_unknown_cloudabi.rs
+++ b/src/librustc_target/spec/aarch64_unknown_cloudabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::cloudabi_base::opts();
diff --git a/src/librustc_back/target/aarch64_unknown_freebsd.rs b/src/librustc_target/spec/aarch64_unknown_freebsd.rs
index 3dc77efb8f9..48177b8c79a 100644
--- a/src/librustc_back/target/aarch64_unknown_freebsd.rs
+++ b/src/librustc_target/spec/aarch64_unknown_freebsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::freebsd_base::opts();
diff --git a/src/librustc_back/target/aarch64_unknown_fuchsia.rs b/src/librustc_target/spec/aarch64_unknown_fuchsia.rs
index d4fc211e019..4da6724ef62 100644
--- a/src/librustc_back/target/aarch64_unknown_fuchsia.rs
+++ b/src/librustc_target/spec/aarch64_unknown_fuchsia.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::fuchsia_base::opts();
diff --git a/src/librustc_back/target/aarch64_unknown_linux_gnu.rs b/src/librustc_target/spec/aarch64_unknown_linux_gnu.rs
index e84b4a88adb..2351d014692 100644
--- a/src/librustc_back/target/aarch64_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/aarch64_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/aarch64_unknown_linux_musl.rs b/src/librustc_target/spec/aarch64_unknown_linux_musl.rs
index d6207ac141a..5ab55a076f4 100644
--- a/src/librustc_back/target/aarch64_unknown_linux_musl.rs
+++ b/src/librustc_target/spec/aarch64_unknown_linux_musl.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/android_base.rs b/src/librustc_target/spec/android_base.rs
index c2f7eeddcf8..7e27e8aa9a7 100644
--- a/src/librustc_back/target/android_base.rs
+++ b/src/librustc_target/spec/android_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, TargetOptions};
+use spec::{LinkerFlavor, TargetOptions};
 
 pub fn opts() -> TargetOptions {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/apple_base.rs b/src/librustc_target/spec/apple_base.rs
index 480de9ff486..4b66891e36f 100644
--- a/src/librustc_back/target/apple_base.rs
+++ b/src/librustc_target/spec/apple_base.rs
@@ -10,7 +10,7 @@
 
 use std::env;
 
-use target::{LinkArgs, TargetOptions};
+use spec::{LinkArgs, TargetOptions};
 
 pub fn opts() -> TargetOptions {
     // ELF TLS is only available in macOS 10.7+. If you try to compile for 10.6
diff --git a/src/librustc_back/target/apple_ios_base.rs b/src/librustc_target/spec/apple_ios_base.rs
index 74aa955432c..acbbab313fe 100644
--- a/src/librustc_back/target/apple_ios_base.rs
+++ b/src/librustc_target/spec/apple_ios_base.rs
@@ -10,7 +10,7 @@
 
 use std::io;
 use std::process::Command;
-use target::{LinkArgs, LinkerFlavor, TargetOptions};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions};
 
 use self::Arch::*;
 
diff --git a/src/librustc_back/target/arm_base.rs b/src/librustc_target/spec/arm_base.rs
index 416e5a0e13a..416e5a0e13a 100644
--- a/src/librustc_back/target/arm_base.rs
+++ b/src/librustc_target/spec/arm_base.rs
diff --git a/src/librustc_back/target/arm_linux_androideabi.rs b/src/librustc_target/spec/arm_linux_androideabi.rs
index 535b15f246c..ffd242b2bc2 100644
--- a/src/librustc_back/target/arm_linux_androideabi.rs
+++ b/src/librustc_target/spec/arm_linux_androideabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::android_base::opts();
diff --git a/src/librustc_back/target/arm_unknown_linux_gnueabi.rs b/src/librustc_target/spec/arm_unknown_linux_gnueabi.rs
index 6a734d643fc..c67a25e8bc2 100644
--- a/src/librustc_back/target/arm_unknown_linux_gnueabi.rs
+++ b/src/librustc_target/spec/arm_unknown_linux_gnueabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs b/src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs
index 055fef0760d..ed0049a932e 100644
--- a/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs
+++ b/src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/arm_unknown_linux_musleabi.rs b/src/librustc_target/spec/arm_unknown_linux_musleabi.rs
index d20daa7fb37..c34093fbab9 100644
--- a/src/librustc_back/target/arm_unknown_linux_musleabi.rs
+++ b/src/librustc_target/spec/arm_unknown_linux_musleabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/arm_unknown_linux_musleabihf.rs b/src/librustc_target/spec/arm_unknown_linux_musleabihf.rs
index 6d11181e898..967873b3201 100644
--- a/src/librustc_back/target/arm_unknown_linux_musleabihf.rs
+++ b/src/librustc_target/spec/arm_unknown_linux_musleabihf.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/armv4t_unknown_linux_gnueabi.rs b/src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs
index fce45c0cebf..fb99dffeddd 100644
--- a/src/librustc_back/target/armv4t_unknown_linux_gnueabi.rs
+++ b/src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let base = super::linux_base::opts();
diff --git a/src/librustc_back/target/armv5te_unknown_linux_gnueabi.rs b/src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs
index d9ceafede29..810f0912472 100644
--- a/src/librustc_back/target/armv5te_unknown_linux_gnueabi.rs
+++ b/src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let base = super::linux_base::opts();
diff --git a/src/librustc_back/target/armv7_apple_ios.rs b/src/librustc_target/spec/armv7_apple_ios.rs
index c3c8f27a883..da7cbb918bd 100644
--- a/src/librustc_back/target/armv7_apple_ios.rs
+++ b/src/librustc_target/spec/armv7_apple_ios.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 use super::apple_ios_base::{opts, Arch};
 
 pub fn target() -> TargetResult {
diff --git a/src/librustc_back/target/armv7_linux_androideabi.rs b/src/librustc_target/spec/armv7_linux_androideabi.rs
index 900026d2393..cfdc5cddcfb 100644
--- a/src/librustc_back/target/armv7_linux_androideabi.rs
+++ b/src/librustc_target/spec/armv7_linux_androideabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 // See https://developer.android.com/ndk/guides/abis.html#v7a
 // for target ABI requirements.
diff --git a/src/librustc_back/target/armv7_unknown_cloudabi_eabihf.rs b/src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs
index 017376444ba..393c45e434e 100644
--- a/src/librustc_back/target/armv7_unknown_cloudabi_eabihf.rs
+++ b/src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::cloudabi_base::opts();
diff --git a/src/librustc_back/target/armv7_unknown_linux_gnueabihf.rs b/src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs
index 1353eac4a1a..14e8fa9dc02 100644
--- a/src/librustc_back/target/armv7_unknown_linux_gnueabihf.rs
+++ b/src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let base = super::linux_base::opts();
diff --git a/src/librustc_back/target/armv7_unknown_linux_musleabihf.rs b/src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs
index 95c27f89f42..6e71cb307b9 100644
--- a/src/librustc_back/target/armv7_unknown_linux_musleabihf.rs
+++ b/src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/armv7s_apple_ios.rs b/src/librustc_target/spec/armv7s_apple_ios.rs
index ea55ee0646b..c0c577c3b8c 100644
--- a/src/librustc_back/target/armv7s_apple_ios.rs
+++ b/src/librustc_target/spec/armv7s_apple_ios.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 use super::apple_ios_base::{opts, Arch};
 
 pub fn target() -> TargetResult {
diff --git a/src/librustc_back/target/asmjs_unknown_emscripten.rs b/src/librustc_target/spec/asmjs_unknown_emscripten.rs
index e2cf714f0ea..e2cf714f0ea 100644
--- a/src/librustc_back/target/asmjs_unknown_emscripten.rs
+++ b/src/librustc_target/spec/asmjs_unknown_emscripten.rs
diff --git a/src/librustc_back/target/bitrig_base.rs b/src/librustc_target/spec/bitrig_base.rs
index 45ceb2d5a60..e0cbfcdcef0 100644
--- a/src/librustc_back/target/bitrig_base.rs
+++ b/src/librustc_target/spec/bitrig_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{TargetOptions, RelroLevel};
+use spec::{TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/cloudabi_base.rs b/src/librustc_target/spec/cloudabi_base.rs
index 2f283cf3e40..2ffa74e737f 100644
--- a/src/librustc_back/target/cloudabi_base.rs
+++ b/src/librustc_target/spec/cloudabi_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
 
 pub fn opts() -> TargetOptions {
     let mut args = LinkArgs::new();
diff --git a/src/librustc_back/target/dragonfly_base.rs b/src/librustc_target/spec/dragonfly_base.rs
index fc0fb4950e7..32eac8663af 100644
--- a/src/librustc_back/target/dragonfly_base.rs
+++ b/src/librustc_target/spec/dragonfly_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/freebsd_base.rs b/src/librustc_target/spec/freebsd_base.rs
index 19f5bf3f6c4..04b8a6e7060 100644
--- a/src/librustc_back/target/freebsd_base.rs
+++ b/src/librustc_target/spec/freebsd_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/fuchsia_base.rs b/src/librustc_target/spec/fuchsia_base.rs
index 1a09d16cc91..19a66b693f2 100644
--- a/src/librustc_back/target/fuchsia_base.rs
+++ b/src/librustc_target/spec/fuchsia_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/haiku_base.rs b/src/librustc_target/spec/haiku_base.rs
index a1ccb632cab..bf62b49f914 100644
--- a/src/librustc_back/target/haiku_base.rs
+++ b/src/librustc_target/spec/haiku_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{TargetOptions, RelroLevel};
+use spec::{TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/i386_apple_ios.rs b/src/librustc_target/spec/i386_apple_ios.rs
index 3a17ae484af..9eb0327f625 100644
--- a/src/librustc_back/target/i386_apple_ios.rs
+++ b/src/librustc_target/spec/i386_apple_ios.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 use super::apple_ios_base::{opts, Arch};
 
 pub fn target() -> TargetResult {
diff --git a/src/librustc_back/target/i586_pc_windows_msvc.rs b/src/librustc_target/spec/i586_pc_windows_msvc.rs
index 9b88cde5989..9a20b854e0f 100644
--- a/src/librustc_back/target/i586_pc_windows_msvc.rs
+++ b/src/librustc_target/spec/i586_pc_windows_msvc.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::TargetResult;
+use spec::TargetResult;
 
 pub fn target() -> TargetResult {
     let mut base = super::i686_pc_windows_msvc::target()?;
diff --git a/src/librustc_back/target/i586_unknown_linux_gnu.rs b/src/librustc_target/spec/i586_unknown_linux_gnu.rs
index 40fb4a67acd..35bca76af47 100644
--- a/src/librustc_back/target/i586_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/i586_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::TargetResult;
+use spec::TargetResult;
 
 pub fn target() -> TargetResult {
     let mut base = super::i686_unknown_linux_gnu::target()?;
diff --git a/src/librustc_back/target/i586_unknown_linux_musl.rs b/src/librustc_target/spec/i586_unknown_linux_musl.rs
index 416eacf475b..ba23e1d6860 100644
--- a/src/librustc_back/target/i586_unknown_linux_musl.rs
+++ b/src/librustc_target/spec/i586_unknown_linux_musl.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::TargetResult;
+use spec::TargetResult;
 
 pub fn target() -> TargetResult {
     let mut base = super::i686_unknown_linux_musl::target()?;
diff --git a/src/librustc_back/target/i686_apple_darwin.rs b/src/librustc_target/spec/i686_apple_darwin.rs
index 0341684a359..06ea1e4649b 100644
--- a/src/librustc_back/target/i686_apple_darwin.rs
+++ b/src/librustc_target/spec/i686_apple_darwin.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::apple_base::opts();
diff --git a/src/librustc_back/target/i686_linux_android.rs b/src/librustc_target/spec/i686_linux_android.rs
index bbc50c7d418..171e0899595 100644
--- a/src/librustc_back/target/i686_linux_android.rs
+++ b/src/librustc_target/spec/i686_linux_android.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 // See https://developer.android.com/ndk/guides/abis.html#x86
 // for target ABI requirements.
diff --git a/src/librustc_back/target/i686_pc_windows_gnu.rs b/src/librustc_target/spec/i686_pc_windows_gnu.rs
index f93998ab7eb..867d04ec3f2 100644
--- a/src/librustc_back/target/i686_pc_windows_gnu.rs
+++ b/src/librustc_target/spec/i686_pc_windows_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_base::opts();
diff --git a/src/librustc_back/target/i686_pc_windows_msvc.rs b/src/librustc_target/spec/i686_pc_windows_msvc.rs
index 1607330f813..3570f379c30 100644
--- a/src/librustc_back/target/i686_pc_windows_msvc.rs
+++ b/src/librustc_target/spec/i686_pc_windows_msvc.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_msvc_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_cloudabi.rs b/src/librustc_target/spec/i686_unknown_cloudabi.rs
index 511c9a78c81..335105bb1a8 100644
--- a/src/librustc_back/target/i686_unknown_cloudabi.rs
+++ b/src/librustc_target/spec/i686_unknown_cloudabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::cloudabi_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_dragonfly.rs b/src/librustc_target/spec/i686_unknown_dragonfly.rs
index 995f00b5a62..cb0c471353b 100644
--- a/src/librustc_back/target/i686_unknown_dragonfly.rs
+++ b/src/librustc_target/spec/i686_unknown_dragonfly.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::dragonfly_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_freebsd.rs b/src/librustc_target/spec/i686_unknown_freebsd.rs
index fe2044e631d..3838a157d10 100644
--- a/src/librustc_back/target/i686_unknown_freebsd.rs
+++ b/src/librustc_target/spec/i686_unknown_freebsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::freebsd_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_haiku.rs b/src/librustc_target/spec/i686_unknown_haiku.rs
index 0561138bbb1..98f0787beba 100644
--- a/src/librustc_back/target/i686_unknown_haiku.rs
+++ b/src/librustc_target/spec/i686_unknown_haiku.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::haiku_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_linux_gnu.rs b/src/librustc_target/spec/i686_unknown_linux_gnu.rs
index fc12d399de7..c3ff347882d 100644
--- a/src/librustc_back/target/i686_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/i686_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_linux_musl.rs b/src/librustc_target/spec/i686_unknown_linux_musl.rs
index afc66650db3..c02076c071a 100644
--- a/src/librustc_back/target/i686_unknown_linux_musl.rs
+++ b/src/librustc_target/spec/i686_unknown_linux_musl.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_netbsd.rs b/src/librustc_target/spec/i686_unknown_netbsd.rs
index f4cee8026fd..d60ed988599 100644
--- a/src/librustc_back/target/i686_unknown_netbsd.rs
+++ b/src/librustc_target/spec/i686_unknown_netbsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::netbsd_base::opts();
diff --git a/src/librustc_back/target/i686_unknown_openbsd.rs b/src/librustc_target/spec/i686_unknown_openbsd.rs
index c3aef580a2c..79c059c8f95 100644
--- a/src/librustc_back/target/i686_unknown_openbsd.rs
+++ b/src/librustc_target/spec/i686_unknown_openbsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::openbsd_base::opts();
diff --git a/src/librustc_back/target/l4re_base.rs b/src/librustc_target/spec/l4re_base.rs
index 05e3d0b1f4f..4ebc930d48b 100644
--- a/src/librustc_back/target/l4re_base.rs
+++ b/src/librustc_target/spec/l4re_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, PanicStrategy, TargetOptions};
+use spec::{LinkArgs, LinkerFlavor, PanicStrategy, TargetOptions};
 use std::default::Default;
 //use std::process::Command;
 
diff --git a/src/librustc_back/target/linux_base.rs b/src/librustc_target/spec/linux_base.rs
index a993590733e..4a9cd9e2f32 100644
--- a/src/librustc_back/target/linux_base.rs
+++ b/src/librustc_target/spec/linux_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/linux_musl_base.rs b/src/librustc_target/spec/linux_musl_base.rs
index ec0641bb719..293f23eab38 100644
--- a/src/librustc_back/target/linux_musl_base.rs
+++ b/src/librustc_target/spec/linux_musl_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, TargetOptions};
+use spec::{LinkerFlavor, TargetOptions};
 
 pub fn opts() -> TargetOptions {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/mips64_unknown_linux_gnuabi64.rs b/src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs
index 7fe7d7a79b2..1f60d918908 100644
--- a/src/librustc_back/target/mips64_unknown_linux_gnuabi64.rs
+++ b/src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/mips64el_unknown_linux_gnuabi64.rs b/src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs
index 097b286426c..e42fde8d403 100644
--- a/src/librustc_back/target/mips64el_unknown_linux_gnuabi64.rs
+++ b/src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/mips_unknown_linux_gnu.rs b/src/librustc_target/spec/mips_unknown_linux_gnu.rs
index e7f7abe6ed8..59e15137cf4 100644
--- a/src/librustc_back/target/mips_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/mips_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/mips_unknown_linux_musl.rs b/src/librustc_target/spec/mips_unknown_linux_musl.rs
index f55f9d07d37..8ee399ba56c 100644
--- a/src/librustc_back/target/mips_unknown_linux_musl.rs
+++ b/src/librustc_target/spec/mips_unknown_linux_musl.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/mips_unknown_linux_uclibc.rs b/src/librustc_target/spec/mips_unknown_linux_uclibc.rs
index a6f13eea45b..384ab1e4131 100644
--- a/src/librustc_back/target/mips_unknown_linux_uclibc.rs
+++ b/src/librustc_target/spec/mips_unknown_linux_uclibc.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/mipsel_unknown_linux_gnu.rs b/src/librustc_target/spec/mipsel_unknown_linux_gnu.rs
index cb23611c72b..edd29164cac 100644
--- a/src/librustc_back/target/mipsel_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/mipsel_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/mipsel_unknown_linux_musl.rs b/src/librustc_target/spec/mipsel_unknown_linux_musl.rs
index a45ce590ca6..1d9378ca1b8 100644
--- a/src/librustc_back/target/mipsel_unknown_linux_musl.rs
+++ b/src/librustc_target/spec/mipsel_unknown_linux_musl.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/mipsel_unknown_linux_uclibc.rs b/src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs
index 75c554ebd6b..a1db1791bb7 100644
--- a/src/librustc_back/target/mipsel_unknown_linux_uclibc.rs
+++ b/src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_target/spec/mod.rs
index bfee274262f..bfee274262f 100644
--- a/src/librustc_back/target/mod.rs
+++ b/src/librustc_target/spec/mod.rs
diff --git a/src/librustc_back/target/msp430_none_elf.rs b/src/librustc_target/spec/msp430_none_elf.rs
index c21161e89b9..ce42a908b0e 100644
--- a/src/librustc_back/target/msp430_none_elf.rs
+++ b/src/librustc_target/spec/msp430_none_elf.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/netbsd_base.rs b/src/librustc_target/spec/netbsd_base.rs
index 397205a8afe..8b6bb5dec91 100644
--- a/src/librustc_back/target/netbsd_base.rs
+++ b/src/librustc_target/spec/netbsd_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/openbsd_base.rs b/src/librustc_target/spec/openbsd_base.rs
index fda8f2feaf4..90ab1135c54 100644
--- a/src/librustc_back/target/openbsd_base.rs
+++ b/src/librustc_target/spec/openbsd_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions, RelroLevel};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/powerpc64_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
index ca3b1c6d2e0..19598711613 100644
--- a/src/librustc_back/target/powerpc64_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult, RelroLevel};
+use spec::{LinkerFlavor, Target, TargetResult, RelroLevel};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/powerpc64le_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs
index a8a3e49efa1..39840692dff 100644
--- a/src/librustc_back/target/powerpc64le_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/powerpc_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc_unknown_linux_gnu.rs
index f5ccf79910a..c05b110a75d 100644
--- a/src/librustc_back/target/powerpc_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/powerpc_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/powerpc_unknown_linux_gnuspe.rs b/src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs
index ffcc321749b..c76c3119c87 100644
--- a/src/librustc_back/target/powerpc_unknown_linux_gnuspe.rs
+++ b/src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs
@@ -8,8 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use LinkerFlavor;
-use target::{Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/powerpc_unknown_netbsd.rs b/src/librustc_target/spec/powerpc_unknown_netbsd.rs
index 2c78dbd2061..c05e40b9c25 100644
--- a/src/librustc_back/target/powerpc_unknown_netbsd.rs
+++ b/src/librustc_target/spec/powerpc_unknown_netbsd.rs
@@ -8,8 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use LinkerFlavor;
-use target::{Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::netbsd_base::opts();
diff --git a/src/librustc_back/target/redox_base.rs b/src/librustc_target/spec/redox_base.rs
index 06a6443de38..c28746a9363 100644
--- a/src/librustc_back/target/redox_base.rs
+++ b/src/librustc_target/spec/redox_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/s390x_unknown_linux_gnu.rs b/src/librustc_target/spec/s390x_unknown_linux_gnu.rs
index 92e6f7aba68..c9a9625ebab 100644
--- a/src/librustc_back/target/s390x_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/s390x_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/solaris_base.rs b/src/librustc_target/spec/solaris_base.rs
index 41323c9c26b..c14cc3f5bc3 100644
--- a/src/librustc_back/target/solaris_base.rs
+++ b/src/librustc_target/spec/solaris_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::TargetOptions;
+use spec::TargetOptions;
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/sparc64_unknown_linux_gnu.rs b/src/librustc_target/spec/sparc64_unknown_linux_gnu.rs
index a79e314d503..f68b5fd24bf 100644
--- a/src/librustc_back/target/sparc64_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/sparc64_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/sparc64_unknown_netbsd.rs b/src/librustc_target/spec/sparc64_unknown_netbsd.rs
index 07e1efa3063..1c1bca9b2b8 100644
--- a/src/librustc_back/target/sparc64_unknown_netbsd.rs
+++ b/src/librustc_target/spec/sparc64_unknown_netbsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::netbsd_base::opts();
diff --git a/src/librustc_back/target/sparc_unknown_linux_gnu.rs b/src/librustc_target/spec/sparc_unknown_linux_gnu.rs
index a03e6937b2c..4e352374f90 100644
--- a/src/librustc_back/target/sparc_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/sparc_unknown_linux_gnu.rs
@@ -8,8 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use LinkerFlavor;
-use target::{Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/sparcv9_sun_solaris.rs b/src/librustc_target/spec/sparcv9_sun_solaris.rs
index 65eb61d7dbd..7dea1b75a3c 100644
--- a/src/librustc_back/target/sparcv9_sun_solaris.rs
+++ b/src/librustc_target/spec/sparcv9_sun_solaris.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::solaris_base::opts();
diff --git a/src/librustc_back/target/thumb_base.rs b/src/librustc_target/spec/thumb_base.rs
index 9db4104607b..fdaf1dc6110 100644
--- a/src/librustc_back/target/thumb_base.rs
+++ b/src/librustc_target/spec/thumb_base.rs
@@ -36,7 +36,7 @@
 // build scripts / gcc flags.
 
 use std::default::Default;
-use target::{PanicStrategy, TargetOptions};
+use spec::{PanicStrategy, TargetOptions};
 
 pub fn opts() -> TargetOptions {
     // See rust-lang/rfcs#1645 for a discussion about these defaults
diff --git a/src/librustc_back/target/thumbv6m_none_eabi.rs b/src/librustc_target/spec/thumbv6m_none_eabi.rs
index 0b95573aa0c..9fea07c36f4 100644
--- a/src/librustc_back/target/thumbv6m_none_eabi.rs
+++ b/src/librustc_target/spec/thumbv6m_none_eabi.rs
@@ -10,7 +10,7 @@
 
 // Targets the Cortex-M0, Cortex-M0+ and Cortex-M1 processors (ARMv6-M architecture)
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/thumbv7em_none_eabi.rs b/src/librustc_target/spec/thumbv7em_none_eabi.rs
index 0931e6261d2..ab85c97b1b5 100644
--- a/src/librustc_back/target/thumbv7em_none_eabi.rs
+++ b/src/librustc_target/spec/thumbv7em_none_eabi.rs
@@ -19,7 +19,7 @@
 // To opt-in to hardware accelerated floating point operations, you can use, for example,
 // `-C target-feature=+vfp4` or `-C target-cpu=cortex-m4`.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/thumbv7em_none_eabihf.rs b/src/librustc_target/spec/thumbv7em_none_eabihf.rs
index 0b7a9bfb611..4e62f29134e 100644
--- a/src/librustc_back/target/thumbv7em_none_eabihf.rs
+++ b/src/librustc_target/spec/thumbv7em_none_eabihf.rs
@@ -18,7 +18,7 @@
 //
 // To opt into double precision hardware support, use the `-C target-feature=-fp-only-sp` flag.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/thumbv7m_none_eabi.rs b/src/librustc_target/spec/thumbv7m_none_eabi.rs
index c35ac4b5685..10dc503388a 100644
--- a/src/librustc_back/target/thumbv7m_none_eabi.rs
+++ b/src/librustc_target/spec/thumbv7m_none_eabi.rs
@@ -10,7 +10,7 @@
 
 // Targets the Cortex-M3 processor (ARMv7-M)
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
diff --git a/src/librustc_back/target/wasm32_experimental_emscripten.rs b/src/librustc_target/spec/wasm32_experimental_emscripten.rs
index 164df20f84f..164df20f84f 100644
--- a/src/librustc_back/target/wasm32_experimental_emscripten.rs
+++ b/src/librustc_target/spec/wasm32_experimental_emscripten.rs
diff --git a/src/librustc_back/target/wasm32_unknown_emscripten.rs b/src/librustc_target/spec/wasm32_unknown_emscripten.rs
index 5077abf1e0e..5077abf1e0e 100644
--- a/src/librustc_back/target/wasm32_unknown_emscripten.rs
+++ b/src/librustc_target/spec/wasm32_unknown_emscripten.rs
diff --git a/src/librustc_back/target/wasm32_unknown_unknown.rs b/src/librustc_target/spec/wasm32_unknown_unknown.rs
index 56170bbb869..56170bbb869 100644
--- a/src/librustc_back/target/wasm32_unknown_unknown.rs
+++ b/src/librustc_target/spec/wasm32_unknown_unknown.rs
diff --git a/src/librustc_back/target/windows_base.rs b/src/librustc_target/spec/windows_base.rs
index eac23e599b4..176df9f1325 100644
--- a/src/librustc_back/target/windows_base.rs
+++ b/src/librustc_target/spec/windows_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/windows_msvc_base.rs b/src/librustc_target/spec/windows_msvc_base.rs
index 231fbdee0b5..1f00e690cd3 100644
--- a/src/librustc_back/target/windows_msvc_base.rs
+++ b/src/librustc_target/spec/windows_msvc_base.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkArgs, LinkerFlavor, TargetOptions};
+use spec::{LinkArgs, LinkerFlavor, TargetOptions};
 use std::default::Default;
 
 pub fn opts() -> TargetOptions {
diff --git a/src/librustc_back/target/x86_64_apple_darwin.rs b/src/librustc_target/spec/x86_64_apple_darwin.rs
index 56de517b04a..a4efd7e0066 100644
--- a/src/librustc_back/target/x86_64_apple_darwin.rs
+++ b/src/librustc_target/spec/x86_64_apple_darwin.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::apple_base::opts();
diff --git a/src/librustc_back/target/x86_64_apple_ios.rs b/src/librustc_target/spec/x86_64_apple_ios.rs
index a7897a364d2..eeb53d72fe8 100644
--- a/src/librustc_back/target/x86_64_apple_ios.rs
+++ b/src/librustc_target/spec/x86_64_apple_ios.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
 use super::apple_ios_base::{opts, Arch};
 
 pub fn target() -> TargetResult {
diff --git a/src/librustc_back/target/x86_64_linux_android.rs b/src/librustc_target/spec/x86_64_linux_android.rs
index 1ca8ae5addd..06abe916784 100644
--- a/src/librustc_back/target/x86_64_linux_android.rs
+++ b/src/librustc_target/spec/x86_64_linux_android.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::android_base::opts();
diff --git a/src/librustc_back/target/x86_64_pc_windows_gnu.rs b/src/librustc_target/spec/x86_64_pc_windows_gnu.rs
index a9c0cfc2c9c..8d2f702bc4a 100644
--- a/src/librustc_back/target/x86_64_pc_windows_gnu.rs
+++ b/src/librustc_target/spec/x86_64_pc_windows_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_base::opts();
diff --git a/src/librustc_back/target/x86_64_pc_windows_msvc.rs b/src/librustc_target/spec/x86_64_pc_windows_msvc.rs
index 2de8dcfe9cc..ab610ea94ae 100644
--- a/src/librustc_back/target/x86_64_pc_windows_msvc.rs
+++ b/src/librustc_target/spec/x86_64_pc_windows_msvc.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::windows_msvc_base::opts();
diff --git a/src/librustc_back/target/x86_64_rumprun_netbsd.rs b/src/librustc_target/spec/x86_64_rumprun_netbsd.rs
index 77848ae8c6c..ed15cfd9036 100644
--- a/src/librustc_back/target/x86_64_rumprun_netbsd.rs
+++ b/src/librustc_target/spec/x86_64_rumprun_netbsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::netbsd_base::opts();
diff --git a/src/librustc_back/target/x86_64_sun_solaris.rs b/src/librustc_target/spec/x86_64_sun_solaris.rs
index c208c386114..e84f21c5006 100644
--- a/src/librustc_back/target/x86_64_sun_solaris.rs
+++ b/src/librustc_target/spec/x86_64_sun_solaris.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::solaris_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_bitrig.rs b/src/librustc_target/spec/x86_64_unknown_bitrig.rs
index 9d59e143712..21ec6dffcbb 100644
--- a/src/librustc_back/target/x86_64_unknown_bitrig.rs
+++ b/src/librustc_target/spec/x86_64_unknown_bitrig.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::bitrig_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_cloudabi.rs b/src/librustc_target/spec/x86_64_unknown_cloudabi.rs
index 4baf8733af3..8dc8bd7a7fa 100644
--- a/src/librustc_back/target/x86_64_unknown_cloudabi.rs
+++ b/src/librustc_target/spec/x86_64_unknown_cloudabi.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::cloudabi_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_dragonfly.rs b/src/librustc_target/spec/x86_64_unknown_dragonfly.rs
index c7059feab65..50b2871c2ee 100644
--- a/src/librustc_back/target/x86_64_unknown_dragonfly.rs
+++ b/src/librustc_target/spec/x86_64_unknown_dragonfly.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::dragonfly_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_freebsd.rs b/src/librustc_target/spec/x86_64_unknown_freebsd.rs
index 372587a8f2a..f0aa81ed459 100644
--- a/src/librustc_back/target/x86_64_unknown_freebsd.rs
+++ b/src/librustc_target/spec/x86_64_unknown_freebsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::freebsd_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_fuchsia.rs b/src/librustc_target/spec/x86_64_unknown_fuchsia.rs
index 5831c898341..a510ec8eb34 100644
--- a/src/librustc_back/target/x86_64_unknown_fuchsia.rs
+++ b/src/librustc_target/spec/x86_64_unknown_fuchsia.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::fuchsia_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_haiku.rs b/src/librustc_target/spec/x86_64_unknown_haiku.rs
index 1ba1e0097f7..1e78461861a 100644
--- a/src/librustc_back/target/x86_64_unknown_haiku.rs
+++ b/src/librustc_target/spec/x86_64_unknown_haiku.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::haiku_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_l4re_uclibc.rs b/src/librustc_target/spec/x86_64_unknown_l4re_uclibc.rs
index 016e68fe0ee..f1179c18294 100644
--- a/src/librustc_back/target/x86_64_unknown_l4re_uclibc.rs
+++ b/src/librustc_target/spec/x86_64_unknown_l4re_uclibc.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::l4re_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_linux_gnu.rs b/src/librustc_target/spec/x86_64_unknown_linux_gnu.rs
index eb0f9487fca..56559661b03 100644
--- a/src/librustc_back/target/x86_64_unknown_linux_gnu.rs
+++ b/src/librustc_target/spec/x86_64_unknown_linux_gnu.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_linux_gnux32.rs b/src/librustc_target/spec/x86_64_unknown_linux_gnux32.rs
index 5cf9a6fad89..72b5bd27c7d 100644
--- a/src/librustc_back/target/x86_64_unknown_linux_gnux32.rs
+++ b/src/librustc_target/spec/x86_64_unknown_linux_gnux32.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_linux_musl.rs b/src/librustc_target/spec/x86_64_unknown_linux_musl.rs
index 77cdbc207e3..f1924efcf98 100644
--- a/src/librustc_back/target/x86_64_unknown_linux_musl.rs
+++ b/src/librustc_target/spec/x86_64_unknown_linux_musl.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::linux_musl_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_netbsd.rs b/src/librustc_target/spec/x86_64_unknown_netbsd.rs
index ed35ea11f10..6e8ca6b9e19 100644
--- a/src/librustc_back/target/x86_64_unknown_netbsd.rs
+++ b/src/librustc_target/spec/x86_64_unknown_netbsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::netbsd_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_openbsd.rs b/src/librustc_target/spec/x86_64_unknown_openbsd.rs
index 97da4d41fd0..c60b7c86680 100644
--- a/src/librustc_back/target/x86_64_unknown_openbsd.rs
+++ b/src/librustc_target/spec/x86_64_unknown_openbsd.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::openbsd_base::opts();
diff --git a/src/librustc_back/target/x86_64_unknown_redox.rs b/src/librustc_target/spec/x86_64_unknown_redox.rs
index 3c930ac40ac..548dfb06109 100644
--- a/src/librustc_back/target/x86_64_unknown_redox.rs
+++ b/src/librustc_target/spec/x86_64_unknown_redox.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use target::{LinkerFlavor, Target, TargetResult};
+use spec::{LinkerFlavor, Target, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::redox_base::opts();
diff --git a/src/librustc_trans/Cargo.toml b/src/librustc_trans/Cargo.toml
index 176fd86f29d..26d1d2e2c86 100644
--- a/src/librustc_trans/Cargo.toml
+++ b/src/librustc_trans/Cargo.toml
@@ -21,7 +21,7 @@ rustc = { path = "../librustc" }
 rustc-demangle = "0.1.4"
 rustc_allocator = { path = "../librustc_allocator" }
 rustc_apfloat = { path = "../librustc_apfloat" }
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_const_math = { path = "../librustc_const_math" }
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_errors = { path = "../librustc_errors" }
@@ -40,9 +40,9 @@ tempdir = "0.3"
 env_logger = { version = "0.5", default-features = false }
 
 [features]
-# Used to communicate the feature to `rustc_back` in the same manner that the
+# Used to communicate the feature to `rustc_target` in the same manner that the
 # `rustc` driver script communicate this.
-jemalloc = ["rustc_back/jemalloc"]
+jemalloc = ["rustc_target/jemalloc"]
 
 # This is used to convince Cargo to separately cache builds of `rustc_trans`
 # when this option is enabled or not. That way we can build two, cache two
diff --git a/src/librustc_trans/back/command.rs b/src/librustc_trans/back/command.rs
index 7fdf40480c7..9ebbdd7c3c9 100644
--- a/src/librustc_trans/back/command.rs
+++ b/src/librustc_trans/back/command.rs
@@ -17,7 +17,7 @@ use std::io;
 use std::mem;
 use std::process::{self, Output};
 
-use rustc_back::target::LldFlavor;
+use rustc_target::spec::LldFlavor;
 
 #[derive(Clone)]
 pub struct Command {
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
index bf80caadd75..92f9a9e8ba9 100644
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
@@ -29,8 +29,7 @@ use rustc::util::common::time;
 use rustc::util::fs::fix_windows_verbatim_for_gcc;
 use rustc::hir::def_id::CrateNum;
 use tempdir::TempDir;
-use rustc_back::target::{PanicStrategy, RelroLevel, LinkerFlavor};
-use rustc_back::target::TargetTriple;
+use rustc_target::spec::{PanicStrategy, RelroLevel, LinkerFlavor, TargetTriple};
 use rustc_data_structures::fx::FxHashSet;
 use context::get_reloc_model;
 use llvm;
diff --git a/src/librustc_trans/back/linker.rs b/src/librustc_trans/back/linker.rs
index 16716c51bc9..f9a8473464d 100644
--- a/src/librustc_trans/back/linker.rs
+++ b/src/librustc_trans/back/linker.rs
@@ -23,7 +23,7 @@ use rustc::middle::dependency_format::Linkage;
 use rustc::session::Session;
 use rustc::session::config::{self, CrateType, OptLevel, DebugInfoLevel};
 use rustc::ty::TyCtxt;
-use rustc_back::target::{LinkerFlavor, LldFlavor};
+use rustc_target::spec::{LinkerFlavor, LldFlavor};
 use serialize::{json, Encoder};
 
 /// For all the linkers we support, and information they might
diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs
index a4e1b7f2925..2323ec3ef11 100644
--- a/src/librustc_trans/base.rs
+++ b/src/librustc_trans/base.rs
@@ -74,7 +74,7 @@ use type_of::LayoutLlvmExt;
 use rustc::util::nodemap::{FxHashMap, FxHashSet, DefIdSet};
 use CrateInfo;
 use rustc_data_structures::sync::Lrc;
-use rustc_back::target::TargetTriple;
+use rustc_target::spec::TargetTriple;
 
 use std::any::Any;
 use std::collections::BTreeMap;
diff --git a/src/librustc_trans/callee.rs b/src/librustc_trans/callee.rs
index c7eaa7b866f..5849437758a 100644
--- a/src/librustc_trans/callee.rs
+++ b/src/librustc_trans/callee.rs
@@ -26,7 +26,7 @@ use rustc::hir::def_id::DefId;
 use rustc::ty::{self, TypeFoldable};
 use rustc::ty::layout::LayoutOf;
 use rustc::ty::subst::Substs;
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 
 /// Translates a reference to a fn/method item, monomorphizing and
 /// inlining as it goes.
diff --git a/src/librustc_trans/declare.rs b/src/librustc_trans/declare.rs
index b77471fb0e6..200c4c270e7 100644
--- a/src/librustc_trans/declare.rs
+++ b/src/librustc_trans/declare.rs
@@ -24,7 +24,7 @@ use llvm::{self, ValueRef};
 use llvm::AttributePlace::Function;
 use rustc::ty::{self, Ty};
 use rustc::session::config::Sanitizer;
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 use abi::{Abi, FnType};
 use attributes;
 use context::CodegenCx;
diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs
index 49d0f638f20..8fcc849b060 100644
--- a/src/librustc_trans/lib.rs
+++ b/src/librustc_trans/lib.rs
@@ -43,7 +43,7 @@ extern crate num_cpus;
 extern crate rustc_mir;
 extern crate rustc_allocator;
 extern crate rustc_apfloat;
-extern crate rustc_back;
+extern crate rustc_target;
 extern crate rustc_const_math;
 #[macro_use] extern crate rustc_data_structures;
 extern crate rustc_demangle;
diff --git a/src/librustc_trans/metadata.rs b/src/librustc_trans/metadata.rs
index 9483420f2f0..144baa65c1b 100644
--- a/src/librustc_trans/metadata.rs
+++ b/src/librustc_trans/metadata.rs
@@ -10,7 +10,7 @@
 
 use rustc::util::common;
 use rustc::middle::cstore::MetadataLoader;
-use rustc_back::target::Target;
+use rustc_target::spec::Target;
 use llvm;
 use llvm::{False, ObjectFile, mk_section_iter};
 use llvm::archive_ro::ArchiveRO;
diff --git a/src/librustc_trans/type_of.rs b/src/librustc_trans/type_of.rs
index 7d7e52ecef5..7cad0e73db2 100644
--- a/src/librustc_trans/type_of.rs
+++ b/src/librustc_trans/type_of.rs
@@ -13,7 +13,7 @@ use common::*;
 use rustc::hir;
 use rustc::ty::{self, Ty, TypeFoldable};
 use rustc::ty::layout::{self, Align, LayoutOf, Size, TyLayout};
-use rustc_back::target::PanicStrategy;
+use rustc_target::spec::PanicStrategy;
 use trans_item::DefPathBasedNames;
 use type_::Type;
 
diff --git a/src/librustc_trans_utils/Cargo.toml b/src/librustc_trans_utils/Cargo.toml
index 7a01b6d261a..323d9d1ceda 100644
--- a/src/librustc_trans_utils/Cargo.toml
+++ b/src/librustc_trans_utils/Cargo.toml
@@ -17,7 +17,7 @@ log = "0.4"
 syntax = { path = "../libsyntax" }
 syntax_pos = { path = "../libsyntax_pos" }
 rustc = { path = "../librustc" }
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_data_structures = { path = "../librustc_data_structures" }
 rustc_mir = { path = "../librustc_mir" }
 rustc_incremental = { path = "../librustc_incremental" }
diff --git a/src/librustc_trans_utils/lib.rs b/src/librustc_trans_utils/lib.rs
index 0c6bc9e246b..b91f4e4dffb 100644
--- a/src/librustc_trans_utils/lib.rs
+++ b/src/librustc_trans_utils/lib.rs
@@ -30,7 +30,7 @@ extern crate log;
 
 #[macro_use]
 extern crate rustc;
-extern crate rustc_back;
+extern crate rustc_target;
 extern crate rustc_mir;
 extern crate rustc_incremental;
 extern crate syntax;
diff --git a/src/librustc_trans_utils/trans_crate.rs b/src/librustc_trans_utils/trans_crate.rs
index b7895631c60..7b585d1060f 100644
--- a/src/librustc_trans_utils/trans_crate.rs
+++ b/src/librustc_trans_utils/trans_crate.rs
@@ -43,7 +43,7 @@ use rustc::ty::maps::Providers;
 use rustc::middle::cstore::EncodedMetadata;
 use rustc::middle::cstore::MetadataLoader;
 use rustc::dep_graph::DepGraph;
-use rustc_back::target::Target;
+use rustc_target::spec::Target;
 use rustc_data_structures::fx::FxHashMap;
 use rustc_mir::monomorphize::collector;
 use link::{build_link_meta, out_filename};
diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs
index 2bd1e72f0eb..d423203b996 100644
--- a/src/librustdoc/core.rs
+++ b/src/librustdoc/core.rs
@@ -23,7 +23,7 @@ use rustc::util::nodemap::{FxHashMap, FxHashSet};
 use rustc_resolve as resolve;
 use rustc_metadata::creader::CrateLoader;
 use rustc_metadata::cstore::CStore;
-use rustc_back::target::TargetTriple;
+use rustc_target::spec::TargetTriple;
 
 use syntax::ast::NodeId;
 use syntax::codemap;
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs
index 60b713f2995..a60db29c2f9 100644
--- a/src/librustdoc/lib.rs
+++ b/src/librustdoc/lib.rs
@@ -35,7 +35,6 @@ extern crate rustc_trans_utils;
 extern crate rustc_driver;
 extern crate rustc_resolve;
 extern crate rustc_lint;
-extern crate rustc_back;
 extern crate rustc_metadata;
 extern crate rustc_typeck;
 extern crate serialize;
@@ -66,7 +65,7 @@ use externalfiles::ExternalHtml;
 use rustc::session::search_paths::SearchPaths;
 use rustc::session::config::{ErrorOutputType, RustcOptGroup, Externs, CodegenOptions};
 use rustc::session::config::{nightly_options, build_codegen_options};
-use rustc_back::target::TargetTriple;
+use rustc_target::spec::TargetTriple;
 
 #[macro_use]
 pub mod externalfiles;
diff --git a/src/rustc/Cargo.toml b/src/rustc/Cargo.toml
index bbc4c2ee43e..9986e0b512a 100644
--- a/src/rustc/Cargo.toml
+++ b/src/rustc/Cargo.toml
@@ -8,8 +8,8 @@ name = "rustc"
 path = "rustc.rs"
 
 [dependencies]
-rustc_back = { path = "../librustc_back" }
+rustc_target = { path = "../librustc_target" }
 rustc_driver = { path = "../librustc_driver" }
 
 [features]
-jemalloc = ["rustc_back/jemalloc"]
+jemalloc = ["rustc_target/jemalloc"]