Commit e7042418 authored by Wei Guangjing's avatar Wei Guangjing Committed by Hector Chu

cgo: support for mingw-w64 4.5.1 and newer

R=rsc, jp, hectorchu
CC=golang-dev
https://golang.org/cl/4962051
parent 9a8da9d4
...@@ -408,13 +408,15 @@ readsym(PeObj *obj, int i, PeSym **y) ...@@ -408,13 +408,15 @@ readsym(PeObj *obj, int i, PeSym **y)
sym = &obj->pesym[i]; sym = &obj->pesym[i];
*y = sym; *y = sym;
name = sym->name; if(sym->sclass == IMAGE_SYM_CLASS_STATIC && sym->value == 0 && sym->type == 0) // section
if(sym->sclass == IMAGE_SYM_CLASS_STATIC && sym->value == 0) // section
name = obj->sect[sym->sectnum-1].sym->name; name = obj->sect[sym->sectnum-1].sym->name;
if(strncmp(sym->name, "__imp__", 7) == 0) else {
name = &sym->name[7]; // __imp__Name => Name name = sym->name;
else if(sym->name[0] == '_') if(strncmp(name, "__imp_", 6) == 0)
name = &sym->name[1]; // _Name => Name name = &name[6]; // __imp_Name => Name
if(thechar == '8' && name[0] == '_')
name = &name[1]; // _Name => Name
}
// remove last @XXX // remove last @XXX
p = strchr(name, '@'); p = strchr(name, '@');
if(p) if(p)
...@@ -443,8 +445,8 @@ readsym(PeObj *obj, int i, PeSym **y) ...@@ -443,8 +445,8 @@ readsym(PeObj *obj, int i, PeSym **y)
if(s != nil && s->type == 0 && !(sym->sclass == IMAGE_SYM_CLASS_STATIC && sym->value == 0)) if(s != nil && s->type == 0 && !(sym->sclass == IMAGE_SYM_CLASS_STATIC && sym->value == 0))
s->type = SXREF; s->type = SXREF;
if(strncmp(sym->name, "__imp__", 7) == 0) if(strncmp(sym->name, "__imp_", 6) == 0)
s->got = -2; // flag for __imp__ s->got = -2; // flag for __imp_
sym->sym = s; sym->sym = s;
return 0; return 0;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
/* /*
* Apple still insists on underscore prefixes for C function names. * Apple still insists on underscore prefixes for C function names.
*/ */
#if defined(__APPLE__) || defined(_WIN32) #if defined(__APPLE__)
#define EXT(s) _##s #define EXT(s) _##s
#else #else
#define EXT(s) s #define EXT(s) s
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment