diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass
index 8f7cc1f..270b4f3 100644
--- a/meta/classes/native.bbclass
+++ b/meta/classes/native.bbclass
@@ -138,8 +138,9 @@ python native_virtclass_handler () {
         if not prov.endswith("-native"):
             provides = provides.replace(prov, prov + "-native")
     e.data.setVar("PROVIDES", provides)
-
-    e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-native")
+    overrides = e.data.getVar("OVERRIDES", False);
+    overrides = oe_filter_out('libc-uclibc|libc-glibc', overrides, ':')
+    e.data.setVar("OVERRIDES",overrides + ":virtclass-native")
 }
 
 addhandler native_virtclass_handler
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index e6204c0..0f897a9 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -65,8 +65,9 @@ python nativesdk_virtclass_handler () {
     pn = e.data.getVar("PN", True)
     if not pn.endswith("-nativesdk"):
         return
-
-    e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-nativesdk")
+    overrides = e.data.getVar("OVERRIDES", False)
+    oe_filter_out('libc-uclibc|libc-glibc', overrides, ':')
+    e.data.setVar("OVERRIDES",overrides + ":virtclass-nativesdk")
 }
 
 python () {
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index 103fa9a..6311017 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -32,11 +32,11 @@ def base_both_contain(variable1, variable2, checkvalue, d):
 def base_prune_suffix(var, suffixes, d):
     return oe.utils.prune_suffix(var, suffixes, d)
 
-def oe_filter(f, str, d):
-    return oe.utils.str_filter(f, str, d)
+def oe_filter(f, str, sep = None):
+    return oe.utils.str_filter(f, str, sep)
 
-def oe_filter_out(f, str, d):
-    return oe.utils.str_filter_out(f, str, d)
+def oe_filter_out(f, str, sep = None):
+    return oe.utils.str_filter_out(f, str, sep)
 
 def machine_paths(d):
     """List any existing machine specific filespath directories"""
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 95daace..3e321fc 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -66,13 +66,19 @@ def prune_suffix(var, suffixes, d):
 
     return var
 
-def str_filter(f, str, d):
+def str_filter(f, str, sep = None):
     from re import match
-    return " ".join(filter(lambda x: match(f, x, 0), str.split()))
+    if sep is None or sep is '':
+	return " ".join(filter(lambda x: match(f, x, 0), str.split()))
+    else:
+	return sep.join(filter(lambda x: match(f, x, 0), str.split(sep)))
 
-def str_filter_out(f, str, d):
+def str_filter_out(f, str, sep = None):
     from re import match
-    return " ".join(filter(lambda x: not match(f, x, 0), str.split()))
+    if sep is None or sep is '':
+	return " ".join(filter(lambda x: not match(f, x, 0), str.split()))
+    else:
+	return sep.join(filter(lambda x: not match(f, x, 0), str.split(sep)))
 
 def param_bool(cfg, field, dflt = None):
     """Lookup <field> in <cfg> map and convert it to a boolean; take
diff --git a/meta/recipes-core/uclibc/uclibc.inc b/meta/recipes-core/uclibc/uclibc.inc
index 92157bd..5845519 100644
--- a/meta/recipes-core/uclibc/uclibc.inc
+++ b/meta/recipes-core/uclibc/uclibc.inc
@@ -112,9 +112,9 @@ export V="2"
 # -O<n> -fno-omit-frame-pointer ends up with GCC ICE on thumb as reported
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44860
 #
-CFLAGS_arm := "${@oe_filter_out('-fno-omit-frame-pointer', '${CFLAGS}', d)}"
-UCLIBC_EXTRA_CFLAGS  := "${@oe_filter_out('(-I\S+|-i\S+)', '${CFLAGS}', d)}"
-UCLIBC_EXTRA_LDFLAGS := "${@oe_filter_out('(-L\S+|-l\S+)', '${LDFLAGS}', d)}"
+CFLAGS_arm := "${@oe_filter_out('-fno-omit-frame-pointer', '${CFLAGS}')}"
+UCLIBC_EXTRA_CFLAGS  := "${@oe_filter_out('(-I\S+|-i\S+)', '${CFLAGS}')}"
+UCLIBC_EXTRA_LDFLAGS := "${@oe_filter_out('(-L\S+|-l\S+)', '${LDFLAGS}')}"
 do_compile_prepend () {
   unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
 }
diff --git a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
index 34bfaeb..5b19ec9 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
@@ -1,6 +1,6 @@
 require gcc-configure-common.inc
 
-CXXFLAGS := "${@oe_filter_out('-fvisibility-inlines-hidden', '${CXXFLAGS}', d)}"
+CXXFLAGS := "${@oe_filter_out('-fvisibility-inlines-hidden', '${CXXFLAGS}')}"
 
 EXTRA_OECONF_PATHS = " \
     --with-local-prefix=${STAGING_DIR_TARGET}${prefix} \
