diff options
-rw-r--r-- | llvm/lib/MC/MachObjectWriter.cpp | 3 | ||||
-rw-r--r-- | llvm/test/MC/ARM/tls-directives.s | 6 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp index f33b866e6a5..e39271949d9 100644 --- a/llvm/lib/MC/MachObjectWriter.cpp +++ b/llvm/lib/MC/MachObjectWriter.cpp @@ -471,7 +471,8 @@ void MachObjectWriter::bindIndirectSymbols(MCAssembler &Asm) { ie = Asm.indirect_symbol_end(); it != ie; ++it, ++IndirectIndex) { const MCSectionMachO &Section = cast<MCSectionMachO>(*it->Section); - if (Section.getType() != MachO::S_NON_LAZY_SYMBOL_POINTERS) + if (Section.getType() != MachO::S_NON_LAZY_SYMBOL_POINTERS && + Section.getType() != MachO::S_THREAD_LOCAL_VARIABLE_POINTERS) continue; // Initialize the section indirect symbol base, if necessary. diff --git a/llvm/test/MC/ARM/tls-directives.s b/llvm/test/MC/ARM/tls-directives.s index c0e9f6cc142..69a02689289 100644 --- a/llvm/test/MC/ARM/tls-directives.s +++ b/llvm/test/MC/ARM/tls-directives.s @@ -1,5 +1,9 @@ @ RUN: llvm-mc -triple thumbv7-apple-ios -filetype=obj -o %t %s -@ RUN: llvm-objdump -p %t | FileCheck %s +@ RUN: llvm-objdump -macho -p -indirect-symbols %t | FileCheck %s + +@ CHECK: Indirect symbols for (__DATA,__thread_ptr) +@ CHECK: 0x0000001c 5 _a + @ CHECK: sectname __thread_data @ CHECK: segname __DATA diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 71260ee8452..cc67733935b 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -343,7 +343,7 @@ static void PrintIndirectSymbolTable(MachOObjectFile *O, bool verbose, if (cputype & MachO::CPU_ARCH_ABI64) outs() << format("0x%016" PRIx64, addr + j * stride) << " "; else - outs() << format("0x%08" PRIx32, addr + j * stride) << " "; + outs() << format("0x%08" PRIx32, (uint32_t)addr + j * stride) << " "; MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand(); uint32_t indirect_symbol = O->getIndirectSymbolTableEntry(Dysymtab, n + j); if (indirect_symbol == MachO::INDIRECT_SYMBOL_LOCAL) { |