[lld] c64277d - [ELF] Speculatively fix older MSVC after &ctx change

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 21 14:57:42 PDT 2024


Author: Fangrui Song
Date: 2024-09-21T14:57:37-07:00
New Revision: c64277d1b480cee80a1f3c25ea03dd64f5199037

URL: https://github.com/llvm/llvm-project/commit/c64277d1b480cee80a1f3c25ea03dd64f5199037
DIFF: https://github.com/llvm/llvm-project/commit/c64277d1b480cee80a1f3c25ea03dd64f5199037.diff

LOG: [ELF] Speculatively fix older MSVC after &ctx change

https://lab.llvm.org/buildbot/#/builders/107/builds/3155
```
error C2039: 'ctx': is not a member of '`anonymous-namespace'::Writer<ELFT>::fixSectionAlignments::<lambda_38c4af40b02773e966aeff2e6bd45bf2>'
```

Added: 
    

Modified: 
    lld/ELF/Writer.cpp

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index cf542b1a21cf8d..587f2e205da1ac 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -2387,7 +2387,7 @@ void Writer<ELFT>::addPhdrForSection(Partition &part, unsigned shType,
 // such section.
 template <class ELFT> void Writer<ELFT>::fixSectionAlignments() {
   const PhdrEntry *prev;
-  auto pageAlign = [&](const PhdrEntry *p) {
+  auto pageAlign = [&, &ctx = this->ctx](const PhdrEntry *p) {
     OutputSection *cmd = p->firstSec;
     if (!cmd)
       return;
@@ -2427,13 +2427,13 @@ template <class ELFT> void Writer<ELFT>::fixSectionAlignments() {
       // bug, musl (TLS Variant 1 architectures) before 1.1.23 handled TLS
       // blocks correctly. We need to keep the workaround for a while.
       else if (ctx.tlsPhdr && ctx.tlsPhdr->firstSec == p->firstSec)
-        cmd->addrExpr = [&ctx = this->ctx] {
+        cmd->addrExpr = [&ctx] {
           return alignToPowerOf2(ctx.script->getDot(), ctx.arg.maxPageSize) +
                  alignToPowerOf2(ctx.script->getDot() % ctx.arg.maxPageSize,
                                  ctx.tlsPhdr->p_align);
         };
       else
-        cmd->addrExpr = [&ctx = this->ctx] {
+        cmd->addrExpr = [&ctx] {
           return alignToPowerOf2(ctx.script->getDot(), ctx.arg.maxPageSize) +
                  ctx.script->getDot() % ctx.arg.maxPageSize;
         };


        


More information about the llvm-commits mailing list