Index: libcfa/prelude/bootloader.cf
===================================================================
--- libcfa/prelude/bootloader.cf	(revision 56e8cb3c451e5c9bfe29ae04065e525bc81096da)
+++ libcfa/prelude/bootloader.cf	(revision a5428bda6813c0620b4d46faf489271985cbd1f7)
@@ -1,5 +1,11 @@
 extern "C" { static inline int invoke_main(int argc, char* argv[], char* envp[]); }
+int cfa_args_argc;
+char ** cfa_args_argv;
+char ** cfa_args_envp;
 
 int main(int argc, char* argv[], char* envp[]) {
+	cfa_args_argc = argc;
+	cfa_args_argv = argv;
+	cfa_args_envp = envp;
 	return invoke_main(argc, argv, envp);
 }
Index: libcfa/src/parseargs.cfa
===================================================================
--- libcfa/src/parseargs.cfa	(revision 56e8cb3c451e5c9bfe29ae04065e525bc81096da)
+++ libcfa/src/parseargs.cfa	(revision a5428bda6813c0620b4d46faf489271985cbd1f7)
@@ -24,4 +24,8 @@
 #include "limits.hfa"
 
+extern int cfa_args_argc;
+extern char ** cfa_args_argv;
+extern char ** cfa_args_envp;
+
 void printopt(FILE * out, int width, int max, char sn, const char * ln, const char * help) {
 	int hwidth = max - (11 + width);
@@ -34,4 +38,8 @@
 		fprintf(out, "%*s%.*s\n", width + 11, "", hwidth, help);
 	}
+}
+
+void parse_args( cfa_option options[], size_t opt_count, const char * usage, char ** & left ) {
+	parse_args(cfa_args_argc, cfa_args_argv, options, opt_count, usage, left );
 }
 
Index: libcfa/src/parseargs.hfa
===================================================================
--- libcfa/src/parseargs.hfa	(revision 56e8cb3c451e5c9bfe29ae04065e525bc81096da)
+++ libcfa/src/parseargs.hfa	(revision a5428bda6813c0620b4d46faf489271985cbd1f7)
@@ -31,4 +31,5 @@
 }
 
+void parse_args( cfa_option options[], size_t opt_count, const char * usage, char ** & left );
 void parse_args( int argc, char * argv[], cfa_option options[], size_t opt_count, const char * usage, char ** & left );
 
Index: tests/.expect/declarationSpecifier.x64.txt
===================================================================
--- tests/.expect/declarationSpecifier.x64.txt	(revision 56e8cb3c451e5c9bfe29ae04065e525bc81096da)
+++ tests/.expect/declarationSpecifier.x64.txt	(revision a5428bda6813c0620b4d46faf489271985cbd1f7)
@@ -1129,7 +1129,22 @@
 static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return _X4mainFi_iPPKc__1((signed int )argc, (const char **)argv); }
 static inline signed int invoke_main(signed int argc, char **argv, char **envp);
+signed int _X13cfa_args_argci_1;
+char **_X13cfa_args_argvPPc_1;
+char **_X13cfa_args_envpPPc_1;
 signed int main(signed int _X4argci_1, char **_X4argvPPc_1, char **_X4envpPPc_1){
     __attribute__ ((unused)) signed int _X12_retval_maini_1;
     {
+        ((void)(_X13cfa_args_argci_1=_X4argci_1));
+    }
+
+    {
+        ((void)(_X13cfa_args_argvPPc_1=_X4argvPPc_1));
+    }
+
+    {
+        ((void)(_X13cfa_args_envpPPc_1=_X4envpPPc_1));
+    }
+
+    {
         signed int _tmp_cp_ret4;
         ((void)(_X12_retval_maini_1=(((void)(_tmp_cp_ret4=invoke_main(_X4argci_1, _X4argvPPc_1, _X4envpPPc_1))) , _tmp_cp_ret4)) /* ?{} */);
Index: tests/.expect/gccExtensions.x64.txt
===================================================================
--- tests/.expect/gccExtensions.x64.txt	(revision 56e8cb3c451e5c9bfe29ae04065e525bc81096da)
+++ tests/.expect/gccExtensions.x64.txt	(revision a5428bda6813c0620b4d46faf489271985cbd1f7)
@@ -321,7 +321,22 @@
 static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return _X4mainFi_iPPKc__1((signed int )argc, (const char **)argv); }
 static inline signed int invoke_main(signed int argc, char **argv, char **envp);
+signed int _X13cfa_args_argci_1;
+char **_X13cfa_args_argvPPc_1;
+char **_X13cfa_args_envpPPc_1;
 signed int main(signed int _X4argci_1, char **_X4argvPPc_1, char **_X4envpPPc_1){
     __attribute__ ((unused)) signed int _X12_retval_maini_1;
     {
+        ((void)(_X13cfa_args_argci_1=_X4argci_1));
+    }
+
+    {
+        ((void)(_X13cfa_args_argvPPc_1=_X4argvPPc_1));
+    }
+
+    {
+        ((void)(_X13cfa_args_envpPPc_1=_X4envpPPc_1));
+    }
+
+    {
         signed int _tmp_cp_ret4;
         ((void)(_X12_retval_maini_1=(((void)(_tmp_cp_ret4=invoke_main(_X4argci_1, _X4argvPPc_1, _X4envpPPc_1))) , _tmp_cp_ret4)) /* ?{} */);
Index: tests/pybin/tools.py
===================================================================
--- tests/pybin/tools.py	(revision 56e8cb3c451e5c9bfe29ae04065e525bc81096da)
+++ tests/pybin/tools.py	(revision a5428bda6813c0620b4d46faf489271985cbd1f7)
@@ -246,5 +246,5 @@
 # transform path to canonical form
 def canonical_path(path):
-	abspath = os.path.abspath(__main__.__file__)
+	abspath = os.path.abspath(os.path.realpath(__main__.__file__))
 	dname = os.path.dirname(abspath)
 	return os.path.join(dname, os.path.normpath(path) )
