diff --git a/llvm/test/tools/llvm-objdump/X86/adjust-vma.test b/llvm/test/tools/llvm-objdump/X86/adjust-vma.test --- a/llvm/test/tools/llvm-objdump/X86/adjust-vma.test +++ b/llvm/test/tools/llvm-objdump/X86/adjust-vma.test @@ -27,10 +27,15 @@ # ADJUST-NEXT: 7 .strtab 00000010 0000000000000000 # ADJUST-NEXT: 8 .shstrtab 0000003c 0000000000000000 -# COMMON: SYMBOL TABLE: -# COMMON-NEXT: 0000000000000001 l F .text 0000000000000000 func -# COMMON-NEXT: 0000000000000000 l .text 0000000000000000 sym -# COMMON-NEXT: 0000000000000000 l d .text 0000000000000000 .text +# NOADJUST: SYMBOL TABLE: +# NOADJUST-NEXT: 0000000000000001 l F .text 0000000000000000 func +# NOADJUST-NEXT: 0000000000000000 l .text 0000000000000000 sym +# NOADJUST-NEXT: 0000000000000000 l d .text 0000000000000000 .text + +# ADJUST: SYMBOL TABLE: +# ADJUST-NEXT: 0000000000123001 l F .text 0000000000000000 func +# ADJUST-NEXT: 0000000000123000 l .text 0000000000000000 sym +# ADJUST-NEXT: 0000000000123000 l d .text 0000000000000000 .text # NOADJUST: 0000000000000000 : # NOADJUST-NEXT: 0: {{.*}} nop diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -2400,6 +2400,9 @@ const MachOObjectFile *MachO = dyn_cast(&O); uint64_t Address = unwrapOrError(Symbol.getAddress(), FileName, ArchiveName, ArchitectureName); + section_iterator SecI = unwrapOrError(Symbol.getSection(), FileName); + if (shouldAdjustVA(*SecI)) + Address += AdjustVMA; if ((Address < StartAddress) || (Address > StopAddress)) return; SymbolRef::Type Type =