diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2018-02-16 19:10:49 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2018-02-16 19:10:49 +0000 |
| commit | c5bd7e5db0e0dbe86cffb7611e2037c8cc6fe668 (patch) | |
| tree | 4ec2bdb272fa200c73283ef5bfd666d15dde799c /ELF/InputFiles.cpp | |
| parent | 168413e17e6af13d756e080b505d1a668f48c0fb (diff) | |
Notes
Diffstat (limited to 'ELF/InputFiles.cpp')
| -rw-r--r-- | ELF/InputFiles.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ELF/InputFiles.cpp b/ELF/InputFiles.cpp index f514870ca84a..ccf4b3d7673f 100644 --- a/ELF/InputFiles.cpp +++ b/ELF/InputFiles.cpp @@ -856,6 +856,14 @@ template <class ELFT> void SharedFile<ELFT>::parseRest() { continue; } + if (Config->EMachine == EM_MIPS) { + // FIXME: MIPS BFD linker puts _gp_disp symbol into DSO files + // and incorrectly assigns VER_NDX_LOCAL to this section global + // symbol. Here is a workaround for this bug. + if (Versym && VersymIndex == VER_NDX_LOCAL && Name == "_gp_disp") + continue; + } + const Elf_Verdef *Ver = nullptr; if (VersymIndex != VER_NDX_GLOBAL) { if (VersymIndex >= Verdefs.size() || VersymIndex == VER_NDX_LOCAL) { |
