diff --git a/share/analysis-scripts/heuristic_list_functions.py b/share/analysis-scripts/heuristic_list_functions.py
index 0528bd5e7c06fbe384e5a57f059279ac37fca2fd..5caddd0a32d9dd5f2bff87d6665a3db1fbb91781 100755
--- a/share/analysis-scripts/heuristic_list_functions.py
+++ b/share/analysis-scripts/heuristic_list_functions.py
@@ -51,7 +51,7 @@ want_defs = boolish_string(sys.argv[1])
 want_decls = boolish_string(sys.argv[2])
 files = sys.argv[3:]
 
-for f in files:
+for f in sorted(files):
     with open(f, encoding="ascii", errors="ignore") as data:
         file_content = data.read()
     file_lines = file_content.splitlines(keepends=True)
diff --git a/tests/fc_script/heuristic-list-functions.t/run.t b/tests/fc_script/heuristic-list-functions.t/run.t
index a83608af084e739327a230d5429492c20c3b19a4..1c6c246c9a3e9243eb5d691f7fae42d67bb8cd30 100644
--- a/tests/fc_script/heuristic-list-functions.t/run.t
+++ b/tests/fc_script/heuristic-list-functions.t/run.t
@@ -14,23 +14,6 @@
   find-fun2.c:10:13: g (definition)
   find-fun2.c:15:17: h (definition)
   find-fun2.c:24:27: static_fun (definition)
-  list-functions.c:4:11: static_fun (definition)
-  list-functions.c:13:18: k (definition)
-  main.c:1:3: main (definition)
-  main2.c:1:3: fake_main (definition)
-  main2.c:5:7: domain (definition)
-  main2.c:9:11: main2 (definition)
-  main3.c:1:4: main (definition)
-  make-wrapper.c:1:1: defined (declaration)
-  make-wrapper.c:3:3: specified (declaration)
-  make-wrapper.c:5:5: external (declaration)
-  make-wrapper.c:7:9: large_name_to_force_line_break_in_stack_msg (definition)
-  make-wrapper.c:11:13: rec (definition)
-  make-wrapper.c:15:21: main (definition)
-  make-wrapper2.c:1:3: defined (definition)
-  make-wrapper2.c:9:9: specified (declaration)
-  make-wrapper2.c:12:12: external (declaration)
-  make-wrapper3.c:3:5: external (definition)
   heuristic-detect-recursion.i:3:5: g (definition)
   heuristic-detect-recursion.i:7:10: f (definition)
   heuristic-detect-recursion.i:12:15: h (definition)
@@ -51,3 +34,20 @@
   heuristic-detect-recursion.i:61:61: multiple_indirect1 (declaration)
   heuristic-detect-recursion.i:63:66: multiple_indirect2 (definition)
   heuristic-detect-recursion.i:68:71: multiple_indirect1 (definition)
+  list-functions.c:4:11: static_fun (definition)
+  list-functions.c:13:18: k (definition)
+  main.c:1:3: main (definition)
+  main2.c:1:3: fake_main (definition)
+  main2.c:5:7: domain (definition)
+  main2.c:9:11: main2 (definition)
+  main3.c:1:4: main (definition)
+  make-wrapper.c:1:1: defined (declaration)
+  make-wrapper.c:3:3: specified (declaration)
+  make-wrapper.c:5:5: external (declaration)
+  make-wrapper.c:7:9: large_name_to_force_line_break_in_stack_msg (definition)
+  make-wrapper.c:11:13: rec (definition)
+  make-wrapper.c:15:21: main (definition)
+  make-wrapper2.c:1:3: defined (definition)
+  make-wrapper2.c:9:9: specified (declaration)
+  make-wrapper2.c:12:12: external (declaration)
+  make-wrapper3.c:3:5: external (definition)