Commit ce66c24a authored by Sylvain HENRY's avatar Sylvain HENRY Committed by Ben Gamari
Browse files

Skip 64-bit symbol tables

This patch makes the RTS linker skip 64-bit symbol table entries.  See
https://mail.haskell.org/pipermail/ghc-devs/2016-November/013210.html

Test Plan: validate

Reviewers: austin, erikd, simonmar, bgamari

Reviewed By: bgamari

Subscribers: osa1, thomie

Differential Revision: https://phabricator.haskell.org/D2697

GHC Trac Issues: #12827

(cherry picked from commit 1b336d90)
parent 8008d27c
......@@ -2323,12 +2323,14 @@ static HsInt loadArchive_ (pathchar *path)
memcpy(fileName, gnuFileIndex + n, thisFileNameSize);
fileName[thisFileNameSize] = '\0';
}
else if (fileName[1] == ' ') {
/* Skip 32-bit symbol table ("/" + 15 blank characters)
and 64-bit symbol table ("/SYM64/" + 9 blank characters) */
else if (fileName[1] == ' ' || (0 == strncmp(&fileName[1], "SYM64/", 6))) {
fileName[0] = '\0';
thisFileNameSize = 0;
}
else {
barf("loadArchive: GNU-variant filename offset not found while reading filename from `%s'", path);
barf("loadArchive: invalid GNU-variant filename `%.16s' while reading filename from `%s'", fileName, path);
}
}
/* Finally, the case where the filename field actually contains
......
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