From 14cf2c5f1dee4b321005c14c36903f3dafde0f07 Mon Sep 17 00:00:00 2001
From: Andre Maroneze <andre.maroneze@cea.fr>
Date: Fri, 8 Jan 2021 13:22:44 +0100
Subject: [PATCH] [Kernel] normalize paths in some pretty-printed #include
 directives

---
 src/kernel_services/ast_printing/cil_printer.ml | 5 ++++-
 tests/syntax/anon_enum_libc.c                   | 2 +-
 tests/syntax/oracle/anon_enum_libc.res.oracle   | 2 +-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/kernel_services/ast_printing/cil_printer.ml b/src/kernel_services/ast_printing/cil_printer.ml
index eeb42506b84..93f7a11edfe 100644
--- a/src/kernel_services/ast_printing/cil_printer.ml
+++ b/src/kernel_services/ast_printing/cil_printer.ml
@@ -131,7 +131,10 @@ let print_global g =
 let print_std_includes fmt globs =
   if not (Kernel.PrintLibc.get ()) then begin
     let extract_file acc = function
-      | AStr s -> Datatype.String.Set.add s acc
+      | AStr s ->
+        (* These strings are filepaths, so we normalize and prettify them *)
+        let s = Filepath.Normalized.(to_pretty_string (of_string s)) in
+        Datatype.String.Set.add s acc
       | _ -> Kernel.warning "Unexpected attribute parameter for fc_stdlib"; acc
     in
     let add_file acc g =
diff --git a/tests/syntax/anon_enum_libc.c b/tests/syntax/anon_enum_libc.c
index 3c420cf6e6f..395f5dc1ea3 100644
--- a/tests/syntax/anon_enum_libc.c
+++ b/tests/syntax/anon_enum_libc.c
@@ -1,5 +1,5 @@
 /* run.config
-FILTER: sed -e 's|#include *"\([^/]*[/]\)*\([^/]*\)"|#include "PTESTS_DIR/\2"|'
+
 OPT: -cpp-extra-args="-I @PTEST_DIR@" -ocode @PTEST_DIR@/result/@PTEST_NAME@.c -print -then -ocode="" @PTEST_DIR@/result/@PTEST_NAME@.c -print
 */
 
diff --git a/tests/syntax/oracle/anon_enum_libc.res.oracle b/tests/syntax/oracle/anon_enum_libc.res.oracle
index 7a8098f266b..163f0857f84 100644
--- a/tests/syntax/oracle/anon_enum_libc.res.oracle
+++ b/tests/syntax/oracle/anon_enum_libc.res.oracle
@@ -1,7 +1,7 @@
 [kernel] Parsing tests/syntax/anon_enum_libc.c (with preprocessing)
 [kernel] Parsing tests/syntax/result/anon_enum_libc.c (with preprocessing)
 /* Generated by Frama-C */
-#include "PTESTS_DIR/anon_enum_libc.h"
+#include "tests/syntax/anon_enum_libc.h"
 struct __anonstruct_s1_1 {
    int x ;
    float y ;
-- 
GitLab