obj_int_extract: win64 does not prefix symbols
obj_int_extract was unconditionally skipping the first character in the symbol. make sure it's actually an '_' first Change-Id: Icfe527eb8a0028faeabaa1dcedf8cd8f51c92754
This commit is contained in:
parent
d0ec28b3d3
commit
2ec0cfbe99
@ -918,15 +918,23 @@ int parse_coff(unsigned __int8 *buf, size_t sz)
|
||||
char name[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
strncpy(name, ptr, 8);
|
||||
//log_msg("COFF: Parsing symbol %s\n",name);
|
||||
/* +1 to avoid printing leading underscore */
|
||||
printf("%-40s EQU ", name + 1);
|
||||
/* The 64bit Windows compiler doesn't prefix with an _.
|
||||
* Check what's there, and bump if necessary
|
||||
*/
|
||||
if (name[0] == '_')
|
||||
printf("%-40s EQU ", name + 1);
|
||||
else
|
||||
printf("%-40s EQU ", name);
|
||||
}
|
||||
else
|
||||
{
|
||||
//log_msg("COFF: Parsing symbol %s\n",
|
||||
// buf + strtab_ptr + get_le32(ptr+4));
|
||||
/* +1 to avoid printing leading underscore */
|
||||
printf("%-40s EQU ", buf + strtab_ptr + get_le32(ptr + 4) + 1);
|
||||
if ((buf + strtab_ptr + get_le32(ptr + 4))[0] == '_')
|
||||
printf("%-40s EQU ",
|
||||
buf + strtab_ptr + get_le32(ptr + 4) + 1);
|
||||
else
|
||||
printf("%-40s EQU ", buf + strtab_ptr + get_le32(ptr + 4));
|
||||
}
|
||||
|
||||
if (!(strcmp(sectionlist[section-1], ".bss")))
|
||||
|
Loading…
x
Reference in New Issue
Block a user