diff --git a/.bzrignore b/.bzrignore
index e07aa0cf86af623da1ffe6b082908189601e9650..c90b5c651abe8ceabccbecd6bd67220f2de4e2d3 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -7,6 +7,8 @@
 *.d
 *.da
 *.exe
+*.gcda
+*.gcno
 *.gcov
 *.idb
 *.la
diff --git a/BUILD/compile-pentium-gcov b/BUILD/compile-pentium-gcov
index b024bba49bf36af1930d8a4830614626b6c3d212..ca37f78e2839e7d743b91660efdcd0484e105199 100755
--- a/BUILD/compile-pentium-gcov
+++ b/BUILD/compile-pentium-gcov
@@ -14,7 +14,7 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage"
 # The  -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
 # code with profiling information used by gcov.
 # the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
-extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM"
+extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY"
 extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
 extra_configs="$extra_configs $max_configs"
 
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index bb6c2c3beeead69ed6add1afc9474aee3cfd1fc9..7237cf11fc07473744d935f7c4b51639cf2542df 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -623,4 +623,10 @@ delete from mysql.db where user='mysqltest_4';
 delete from mysql.tables_priv where user='mysqltest_4';
 flush privileges;
 drop database mysqltest;
+show full plugin;
+show warnings;
+Level	Code	Message
+Warning	1541	The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead.
+show plugin;
+show plugins;
 End of 5.1 tests
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index 2f44f4e97c5fe94f6ab4287e4d3e1e693eb4df82..94894ef50de4499c65488ef22340d3e855ebba66 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -445,4 +445,17 @@ delete from mysql.tables_priv where user='mysqltest_4';
 flush privileges;
 drop database mysqltest;
 
+#
+# Ensure that show plugin code is tested
+#
+
+--disable_result_log
+show full plugin;
+--enable_result_log
+show warnings;
+--disable_result_log
+show plugin;
+show plugins;
+--enable_result_log
+
 --echo End of 5.1 tests
diff --git a/mysys/my_handler.c b/mysys/my_handler.c
index da619a49ffd6fc28033797d43c145942c9d8871b..bfec44d57a4ed6f737c977fa1aa83b7244ad5acd 100644
--- a/mysys/my_handler.c
+++ b/mysys/my_handler.c
@@ -548,7 +548,8 @@ HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a)
     case HA_KEYTYPE_DOUBLE:
       a= end;
       break;
-    case HA_KEYTYPE_END:
+    case HA_KEYTYPE_END:                        /* purecov: inspected */
+      /* keep compiler happy */
       DBUG_ASSERT(0);
       break;
     }
diff --git a/sql/filesort.cc b/sql/filesort.cc
index e712bed9e13743e7d353f94a7904a30cd6381c08..f41d72ac07a5b902fccb24e4dabc8bc10d66a88d 100644
--- a/sql/filesort.cc
+++ b/sql/filesort.cc
@@ -688,9 +688,17 @@ static void make_sortkey(register SORTPARAM *param,
             bzero((char*) to-1,sort_field->length+1);
           else
           {
+            /* purecov: begin deadcode */
+            /*
+              This should only happen during extreme conditions if we run out
+              of memory or have an item marked not null when it can be null.
+              This code is here mainly to avoid a hard crash in this case.
+            */
+            DBUG_ASSERT(0);
             DBUG_PRINT("warning",
                        ("Got null on something that shouldn't be null"));
             bzero((char*) to,sort_field->length);	// Avoid crash
+            /* purecov: end */
           }
           break;
         }
@@ -699,7 +707,7 @@ static void make_sortkey(register SORTPARAM *param,
         diff=(int) (sort_field_length - length);
         if (diff < 0)
         {
-          diff=0;				/* purecov: inspected */
+          diff=0;
           length= sort_field_length;
         }
         if (sort_field->suffix_length)
diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc
index b18fa8ec931fe02437edd10f8c6078dbaca581ac..b88002b8529f7c2e1528f1b0339e4f44dec9455e 100644
--- a/sql/ha_ndbcluster_binlog.cc
+++ b/sql/ha_ndbcluster_binlog.cc
@@ -125,6 +125,7 @@ static TABLE_LIST binlog_tables;
 */
 
 #ifndef DBUG_OFF
+/* purecov: begin deadcode */
 static void print_records(TABLE *table, const char *record)
 {
   for (uint j= 0; j < table->s->fields; j++)
@@ -144,6 +145,7 @@ static void print_records(TABLE *table, const char *record)
     DBUG_PRINT("info",("[%u]field_ptr[0->%d]: %s", j, n, buf));
   }
 }
+/* purecov: end */
 #else
 #define print_records(a,b)
 #endif
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 7cffa5529548c85b63cbc040001a62e316179e2a..36805e0043d18a23a94fc9347ae01636bcdab313 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -5918,6 +5918,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
 
     if (col <= tsh->fields)
     {
+      /* purecov: begin inspected */
       /*
         If we get here, the number of columns in the event didn't
         match the number of columns in the table on the slave, *or*
@@ -5950,6 +5951,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
       thd->query_error= 1;
       error= ERR_BAD_TABLE_DEF;
       goto err;
+      /* purecov: end */
     }
 
     /*
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 4ab1b365f736dee5b3863f84cc163f62969e5a8f..6e57993a61acb281dd637ef373f4c9ba59b64acb 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -3223,9 +3223,11 @@ server.");
     /* fall back to the log files if tables are not present */
     if (have_csv_db == SHOW_OPTION_NO)
     {
+      /* purecov: begin inspected */
       sql_print_error("CSV engine is not present, falling back to the "
                       "log files");
       log_output_options= (log_output_options & ~LOG_TABLE) | LOG_FILE;
+      /* purecov: end */
     }
 
     logger.set_handlers(LOG_FILE, opt_slow_log ? log_output_options:LOG_NONE,
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index d82fc5eb3a2b9eacb13ad75651afdb6e58110768..232df095816228b380f0adee5e58079ee517d634 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -5209,7 +5209,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
         even if the query itself redirects the output.
       */
       if (!(result= new select_send()))
-        return 1;
+        return 1;                               /* purecov: inspected */
       thd->send_explain_fields(result);
       res= mysql_explain_union(thd, &thd->lex->unit, result);
       if (lex->describe & DESCRIBE_EXTENDED)
@@ -5228,7 +5228,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
     else
     {
       if (!result && !(result= new select_send()))
-        return 1;
+        return 1;                               /* purecov: inspected */
       query_cache_store_query(thd, all_tables);
       res= handle_select(thd, lex, result, 0);
       if (result != lex->result)