Index: org.jacoco.agent.rt/src/org/jacoco/agent/rt/CoverageTransformer.java
===================================================================
--- org.jacoco.agent.rt/src/org/jacoco/agent/rt/CoverageTransformer.java	(revision 1612)
+++ org.jacoco.agent.rt/src/org/jacoco/agent/rt/CoverageTransformer.java	(working copy)
@@ -44,6 +44,8 @@
 
 	private final WildcardMatcher exclClassloader;
 
+	private final boolean includeBootclasspath;
+
 	public CoverageTransformer(IRuntime runtime, AgentOptions options,
 			final IExceptionLogger logger) {
 		this.instrumenter = new Instrumenter(runtime);
@@ -52,6 +54,7 @@
 		includes = new WildcardMatcher(toWildcard(toVMName(options.getIncludes())));
 		excludes = new WildcardMatcher(toWildcard(toVMName(options.getExcludes())));
 		exclClassloader = new WildcardMatcher(toWildcard(options.getExclClassloader()));
+		includeBootclasspath = options.getIncludeBootclasspath();
 	}
 
 	public byte[] transform(ClassLoader loader, String classname,
@@ -81,14 +84,16 @@
 	 *            loader for the class
 	 * @return <code>true</code> if the class should be instrumented
 	 */
-	protected boolean filter(ClassLoader loader, String classname) {
-		// Don't instrument classes of the bootstrap loader:
-		return loader != null &&
+	protected boolean filter(final ClassLoader loader, final String classname) {
+		if (loader == null) {
+			if (!includeBootclasspath) {
+				return false;
+			}
+		} else if (exclClassloader.matches(loader.getClass().getName())) {
+			return false;
+		}
+		return !classname.startsWith(AGENT_PREFIX) &&
 
-		!classname.startsWith(AGENT_PREFIX) &&
-
-		!exclClassloader.matches(loader.getClass().getName()) &&
-
 		includes.matches(classname) &&
 
 		!excludes.matches(classname);
Index: org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java
===================================================================
--- org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java	(revision 1612)
+++ org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java	(working copy)
@@ -80,6 +80,8 @@
 	 */
 	public static final String DUMPONEXIT = "dumponexit";
 
+	public static final String INCLUDEBOOTCLASSPATH = "bootclasspath";
+
 	/**
 	 * Specifies the output mode. Default is
 	 * <code>{@link OutputMode#file}</code>.
@@ -150,7 +152,7 @@
 
 	private static final Collection<String> VALID_OPTIONS = Arrays.asList(
 			DESTFILE, APPEND, INCLUDES, EXCLUDES, EXCLCLASSLOADER, SESSIONID,
-			DUMPONEXIT, OUTPUT, ADDRESS, PORT);
+			DUMPONEXIT, OUTPUT, ADDRESS, PORT, INCLUDEBOOTCLASSPATH);
 
 	private final Map<String, String> options;
 
@@ -341,6 +343,14 @@
 		setOption(DUMPONEXIT, dumpOnExit);
 	}
 
+	public boolean getIncludeBootclasspath() {
+		return getOption(INCLUDEBOOTCLASSPATH, false);
+	}
+
+	public void setIncludeBootclasspath(final boolean includeBootclasspath) {
+		setOption(INCLUDEBOOTCLASSPATH, includeBootclasspath);
+	}
+
 	/**
 	 * Returns the port on which to listen to when the output is
 	 * <code>tcpserver</code> or the port to connect to when output is
