Work around broken scanf() implementations.
This commit is contained in:
+7
-2
@@ -228,15 +228,20 @@ void ElfLinker::preprocessSymbols(char *start, char *end)
|
|||||||
assert(nextl != NULL);
|
assert(nextl != NULL);
|
||||||
|
|
||||||
if (sscanf(start, "%x g *ABS* %x %1023s",
|
if (sscanf(start, "%x g *ABS* %x %1023s",
|
||||||
&value, &offset, symbol) == 3)
|
&value, &offset, symbol) == 3)
|
||||||
{
|
{
|
||||||
char *s = strstr(start, symbol);
|
char *s = strstr(start, symbol);
|
||||||
s[strlen(symbol)] = 0;
|
s[strlen(symbol)] = 0;
|
||||||
addSymbol(s, "*ABS*", value);
|
addSymbol(s, "*ABS*", value);
|
||||||
assert(offset == 0);
|
assert(offset == 0);
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
else if (sscanf(start, "%x%*8c %1023s %*x %1023s",
|
else if (sscanf(start, "%x%*8c %1023s %*x %1023s",
|
||||||
&offset, section, symbol) == 3)
|
#else
|
||||||
|
// work around broken scanf implementations
|
||||||
|
else if (sscanf(start, "%x%*c%*c%*c%*c%*c%*c%*c%*c %1023s %*x %1023s",
|
||||||
|
#endif
|
||||||
|
&offset, section, symbol) == 3)
|
||||||
{
|
{
|
||||||
char *s = strstr(start, symbol);
|
char *s = strstr(start, symbol);
|
||||||
s[strlen(symbol)] = 0;
|
s[strlen(symbol)] = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user