Don't special case current directory relative paths.
diff --git a/lib/paths.bzl b/lib/paths.bzl
index ed74a60..9758151 100644
--- a/lib/paths.bzl
+++ b/lib/paths.bzl
@@ -162,7 +162,8 @@
   will fail if `path` is not beneath `start` (rather than use parent segments to
   walk up to the common file system root).
 
-  Relativizing paths that start with parent directory references is not allowed.
+  Relativizing paths that start with parent directory references only works if
+  the path both start with the same initial parent references.
 
   Args:
     path: The path to relativize.
@@ -176,9 +177,6 @@
     start_segments = []
   start_length = len(start_segments)
 
-  if (path.startswith("..") or start.startswith("..")):
-    fail("Cannot relativize paths above the current (unknown) directory")
-
   if (path.startswith("/") != start.startswith("/") or
       len(segments) < start_length):
     fail("Path '%s' is not beneath '%s'" % (path, start))
diff --git a/tests/paths_tests.bzl b/tests/paths_tests.bzl
index 5765916..c11473d 100644
--- a/tests/paths_tests.bzl
+++ b/tests/paths_tests.bzl
@@ -195,6 +195,10 @@
   # Try a case where a parent directory is normalized away.
   asserts.equals(env, "baz", paths.relativize("foo/bar/../baz", "foo"))
 
+  # Relative paths work, as long as they share a common start.
+  asserts.equals(env, "file", paths.relativize("../foo/bar/baz/file", "../foo/bar/baz"))
+  asserts.equals(env, "baz/file", paths.relativize("../foo/bar/baz/file", "../foo/bar"))
+
   # TODO(allevato): Test failure cases, once that is possible.
 
   unittest.end(env)