From 50dc43d90d5bb1bb61d42a0facd3272f124e5d0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Mon, 25 Feb 2019 14:28:59 +0100
Subject: [PATCH] [obfuscator] Do not obfuscate functions with attribute
 FC_BUILTIN or fc_stdlib.

Instead of all functons with no definition.
---
 src/plugins/obfuscator/obfuscate.ml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/plugins/obfuscator/obfuscate.ml b/src/plugins/obfuscator/obfuscate.ml
index 5eb3a8bf65f..1226530bf22 100644
--- a/src/plugins/obfuscator/obfuscate.ml
+++ b/src/plugins/obfuscator/obfuscate.ml
@@ -87,7 +87,9 @@ class visitor = object
       if Cil.isFunctionType vi.vtype then
         try
           if vi.vname <> "main"
-          && Kernel_function.is_definition (Globals.Functions.get vi) then
+          && not (Cil.is_builtin vi)
+          && not (Cil.is_special_builtin vi.vname)
+          && not (Cil.hasAttribute "fc_stdlib" vi.vattr) then
             vi.vname <- Dictionary.fresh Obfuscator_kind.Function vi.vname
         with Not_found -> assert false
       else begin
-- 
GitLab