diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs
index 1d8e5a707ed..6a940e1d7f2 100644
--- a/src/compiletest/runtest.rs
+++ b/src/compiletest/runtest.rs
@@ -700,7 +700,7 @@ fn compose_and_run_compiler(
         let abs_ab = config.aux_base.join(rel_ab.as_slice());
         let aux_props = load_props(&abs_ab);
         let aux_args =
-            make_compile_args(config, &aux_props, ~[~"--lib"] + extra_link_args,
+            make_compile_args(config, &aux_props, ~[~"--dylib"] + extra_link_args,
                               |a,b| make_lib_name(a, b, testfile), &abs_ab);
         let auxres = compose_and_run(config, &abs_ab, aux_args, ~[],
                                      config.compile_lib_path, None);
diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs
index a8eff7f0d6e..211d60f7e2d 100644
--- a/src/librustc/driver/driver.rs
+++ b/src/librustc/driver/driver.rs
@@ -716,14 +716,16 @@ pub fn build_session_options(binary: ~str,
                              demitter: @diagnostic::Emitter)
                              -> @session::Options {
     let mut outputs = ~[];
+    if matches.opt_present("lib") {
+        outputs.push(session::default_lib_output());
+    }
     if matches.opt_present("rlib") {
         outputs.push(session::OutputRlib)
     }
     if matches.opt_present("staticlib") {
         outputs.push(session::OutputStaticlib)
     }
-    // dynamic libraries are the "compiler blesssed" default library
-    if matches.opt_present("dylib") || matches.opt_present("lib") {
+    if matches.opt_present("dylib") {
         outputs.push(session::OutputDylib)
     }
     if matches.opt_present("bin") {
diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs
index b70ca03977f..5cda81836a4 100644
--- a/src/librustc/driver/session.rs
+++ b/src/librustc/driver/session.rs
@@ -422,6 +422,10 @@ pub fn building_library(options: &Options, crate: &ast::Crate) -> bool {
     }
 }
 
+pub fn default_lib_output() -> OutputStyle {
+    OutputRlib
+}
+
 pub fn collect_outputs(session: &Session,
                        attrs: &[ast::Attribute]) -> ~[OutputStyle] {
     // If we're generating a test executable, then ignore all other output
@@ -435,7 +439,7 @@ pub fn collect_outputs(session: &Session,
             match a.value_str() {
                 Some(n) if "rlib" == n => Some(OutputRlib),
                 Some(n) if "dylib" == n => Some(OutputDylib),
-                Some(n) if "lib" == n => Some(OutputDylib),
+                Some(n) if "lib" == n => Some(default_lib_output()),
                 Some(n) if "staticlib" == n => Some(OutputStaticlib),
                 Some(n) if "bin" == n => Some(OutputExecutable),
                 Some(_) => {
diff --git a/src/librustpkg/tests.rs b/src/librustpkg/tests.rs
index ea69a25ddc4..22128a668ed 100644
--- a/src/librustpkg/tests.rs
+++ b/src/librustpkg/tests.rs
@@ -353,7 +353,7 @@ fn lib_exists(repo: &Path, crate_id: &CrateId) -> bool {
     debug!("assert_lib_exists: checking whether {:?} exists", lib);
     lib.is_some() && {
         let libname = lib.get_ref();
-        libname.exists() && is_rwx(libname)
+        libname.exists()
     }
 }
 
@@ -437,7 +437,7 @@ fn built_library_exists(repo: &Path, short_name: &str) -> bool {
     let lib = built_library_in_workspace(&crate_id, repo);
     lib.is_some() && {
         let libname = lib.get_ref();
-        libname.exists() && is_rwx(libname)
+        libname.exists()
     }
 }
 
@@ -634,7 +634,6 @@ fn test_install_valid_external() {
     let lib = installed_library_in_workspace(&temp_pkg_id, temp_workspace);
     debug!("lib = {:?}", lib);
     assert!(lib.as_ref().map_or(false, |l| l.exists()));
-    assert!(lib.as_ref().map_or(false, |l| is_rwx(l)));
 
     // And that the test and bench executables aren't installed
     assert!(!target_test_in_workspace(&temp_pkg_id, temp_workspace).exists());
@@ -758,7 +757,8 @@ fn test_package_request_version() {
         Some(p) => {
             debug!("installed: {}", p.display());
             let suffix = format!("0.3{}", os::consts::DLL_SUFFIX);
-            p.as_vec().ends_with(suffix.as_bytes())
+            p.as_vec().ends_with(suffix.as_bytes()) ||
+                p.as_vec().ends_with(bytes!("0.3.rlib"))
         }
         None    => false
     });
@@ -2160,7 +2160,6 @@ fn test_installed_read_only() {
         built_library_in_workspace(&temp_pkg_id,
                                    &ws).expect("test_install_git: built lib should exist");
     assert!(built_lib.exists());
-    assert!(is_rwx(&built_lib));
 
     // Make sure sources are (a) under "build" and (b) read-only
     let temp_dir = format!("{}-{}", temp_pkg_id.path, temp_pkg_id.version_or_default());
diff --git a/src/test/run-make/bootstrap-from-c-with-green/lib.rs b/src/test/run-make/bootstrap-from-c-with-green/lib.rs
index 9a03c772f3a..452ee837d12 100644
--- a/src/test/run-make/bootstrap-from-c-with-green/lib.rs
+++ b/src/test/run-make/bootstrap-from-c-with-green/lib.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #[crate_id="boot#0.1"];
-#[crate_type="lib"];
+#[crate_type="dylib"];
 #[no_uv];
 
 extern mod rustuv;
diff --git a/src/test/run-make/bootstrap-from-c-with-native/lib.rs b/src/test/run-make/bootstrap-from-c-with-native/lib.rs
index d0639d45fa5..4f931bdb801 100644
--- a/src/test/run-make/bootstrap-from-c-with-native/lib.rs
+++ b/src/test/run-make/bootstrap-from-c-with-native/lib.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #[crate_id="boot#0.1"];
-#[crate_type="lib"];
+#[crate_type="dylib"];
 #[no_uv];
 
 extern mod native;