diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh
index 2ba9426..14e8b9a 100644
--- a/sofort/ccenv/ccenv.sh
+++ b/sofort/ccenv/ccenv.sh
@@ -741,16 +741,26 @@ ccenv_set_cc_underscore()
 	ccenv_fn_name='ZmYaXyWbVe_UuTnSdReQrPsOcNoNrLe'
 	ccenv_fn_code='int %s(void){return 0;}'
 
-	if printf "$ccenv_fn_code" $ccenv_fn_name  \
-			| $ccenv_cc -xc - -S -o -  \
-				2>&3               \
-			| grep "^_$ccenv_fn_name:" \
-				> /dev/null; then
+	ccenv_tmpname='ccenv/c3RyaWN0X21vZGUK.c'
+
+	printf "$ccenv_fn_code" $ccenv_fn_name \
+		> "$ccenv_tmpname"
+
+	$ccenv_cc -c "$ccenv_tmpname" -o a.out \
+		> /dev/null 2>&3
+
+	if "$ccenv_nm" a.out | grep          \
+			-e "^_$ccenv_fn_name" \
+			-e " _$ccenv_fn_name"  \
+			> /dev/null; then
 		ccenv_cc_underscore='_'
 		ccenv_attr_epilog 'yes'
+	else
+		ccenv_attr_epilog 'no'
 	fi
 
-	ccenv_attr_epilog 'no'
+	rm "$ccenv_tmpname"
+	rm a.out
 
 	return 0
 }