diff options
| -rw-r--r-- | llvm/lib/MC/MachObjectWriter.cpp | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp index afa3b5c13e1..dde1c5d9830 100644 --- a/llvm/lib/MC/MachObjectWriter.cpp +++ b/llvm/lib/MC/MachObjectWriter.cpp @@ -1050,8 +1050,10 @@ public:            FixedValue -= Layout.getSymbolOffset(SD);        } else {          // The index is the section ordinal (1-based). -        Index = SD->getFragment()->getParent()->getOrdinal() + 1; -        FixedValue += getSectionAddress(SD->getFragment()->getParent()); +        const MCSectionData &SymSD = Asm.getSectionData( +          SD->getSymbol().getSection()); +        Index = SymSD.getOrdinal() + 1; +        FixedValue += getSectionAddress(&SymSD);        }        if (IsPCRel)          FixedValue -= getSectionAddress(Fragment->getParent()); @@ -1149,8 +1151,10 @@ public:            FixedValue -= Layout.getSymbolOffset(SD);        } else {          // The index is the section ordinal (1-based). -        Index = SD->getFragment()->getParent()->getOrdinal() + 1; -        FixedValue += getSectionAddress(SD->getFragment()->getParent()); +        const MCSectionData &SymSD = Asm.getSectionData( +          SD->getSymbol().getSection()); +        Index = SymSD.getOrdinal() + 1; +        FixedValue += getSectionAddress(&SymSD);        }        if (IsPCRel)          FixedValue -= getSectionAddress(Fragment->getParent());  | 

