diff options
Diffstat (limited to 'lld/ELF/Writer.cpp')
-rw-r--r-- | lld/ELF/Writer.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 980d629b3e9..5eb9120d1b8 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -8,6 +8,7 @@ #include "Writer.h" #include "AArch64ErrataFix.h" +#include "ARMErrataFix.h" #include "CallGraphSort.h" #include "Config.h" #include "LinkerScript.h" @@ -1532,6 +1533,7 @@ template <class ELFT> void Writer<ELFT>::resolveShfLinkOrder() { template <class ELFT> void Writer<ELFT>::finalizeAddressDependentContent() { ThunkCreator tc; AArch64Err843419Patcher a64p; + ARMErr657417Patcher a32p; script->assignAddresses(); int assignPasses = 0; @@ -1550,6 +1552,11 @@ template <class ELFT> void Writer<ELFT>::finalizeAddressDependentContent() { script->assignAddresses(); changed |= a64p.createFixes(); } + if (config->fixCortexA8) { + if (changed) + script->assignAddresses(); + changed |= a32p.createFixes(); + } if (in.mipsGot) in.mipsGot->updateAllocSize(); |