Diff

Differences From Artifact [21b33f7611]:

To Artifact [44e95e05fe]:


1
2
3
4
5
6
7
8
9
10
diff -uNr tcc-0.9.26.orig/tccpe.c tcc-0.9.26-1win32useopenlibs/tccpe.c
--- tcc-0.9.26.orig/tccpe.c	2013-02-15 08:24:00.000000000 -0600
+++ tcc-0.9.26-1win32useopenlibs/tccpe.c	2014-05-04 02:16:34.590555001 -0500
@@ -38,6 +38,9 @@
 # define ADDR3264 DWORD
 #endif
 
+#ifdef TCC_IS_NATIVE
+#include <psapi.h>
+#endif


|







1
2
3
4
5
6
7
8
9
10
diff -uNr tcc-0.9.26.orig/tccpe.c tcc-0.9.26-1win32useopenlibs/tccpe.c
--- tcc-0.9.26.orig/tccpe.c	2013-02-15 08:24:00.000000000 -0600
+++ tcc-0.9.26-1win32useopenlibs/tccpe.c	2014-05-04 02:20:25.285150002 -0500
@@ -38,6 +38,9 @@
 # define ADDR3264 DWORD
 #endif
 
+#ifdef TCC_IS_NATIVE
+#include <psapi.h>
+#endif
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
+                                }
+                            }
+                        }
+                        tcc_free(modules);
                     }
                     if (!v)
                         tcc_error_noabort("undefined symbol '%s'", name);
@@ -1209,9 +1232,34 @@
 
             const char *name = symtab_section->link->data + sym->st_name;
             unsigned type = ELFW(ST_TYPE)(sym->st_info);
-            int imp_sym = pe_find_import(pe->s1, sym);
+            int imp_sym;
             struct import_symbol *is;
 







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
+                                }
+                            }
+                        }
+                        tcc_free(modules);
                     }
                     if (!v)
                         tcc_error_noabort("undefined symbol '%s'", name);
@@ -1209,9 +1232,35 @@
 
             const char *name = symtab_section->link->data + sym->st_name;
             unsigned type = ELFW(ST_TYPE)(sym->st_info);
-            int imp_sym = pe_find_import(pe->s1, sym);
+            int imp_sym;
             struct import_symbol *is;
 
67
68
69
70
71
72
73

74
75
76
77
78
+                        if (addr) {
+                            put_elf_sym( pe->s1->dynsymtab_section, (ADDR3264) addr, sizeof(addr), ELFW(ST_INFO)(STB_GLOBAL, STT_OBJECT), 0, SHN_UNDEF, symname);
+                            imp_sym = pe_find_import(pe->s1, sym);
+                            break;
+                        }
+                    }
+                }

+            }
+
             if (0 == imp_sym)
                 goto not_found;
 







>





67
68
69
70
71
72
73
74
75
76
77
78
79
+                        if (addr) {
+                            put_elf_sym( pe->s1->dynsymtab_section, (ADDR3264) addr, sizeof(addr), ELFW(ST_INFO)(STB_GLOBAL, STT_OBJECT), 0, SHN_UNDEF, symname);
+                            imp_sym = pe_find_import(pe->s1, sym);
+                            break;
+                        }
+                    }
+                }
+                tcc_free(modules);
+            }
+
             if (0 == imp_sym)
                 goto not_found;