Index: test/tools/llvm-nm/AArch64/special-syms.test =================================================================== --- test/tools/llvm-nm/AArch64/special-syms.test +++ test/tools/llvm-nm/AArch64/special-syms.test @@ -0,0 +1,32 @@ +# RUN: yaml2obj %s > %t +# Test --special-syms flag. Currently this flag is a no-op, so outputs with and without +# this flag should be identical. GNU nm doesn't show ARM and AArch64 special symbols +# without --special-syms, so this test is to be changed when/if we decide to implement +# GNU nm-like behavior in llvm-nm + +# RUN: llvm-nm %t | FileCheck %s +# RUN: llvm-nm %t --special-syms | FileCheck %s + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AARCH64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x1000 + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_WRITE ] + Address: 0x2000 +Symbols: + - Name: $x.1 + Section: .text + - Name: $d.1 + Section: .data + +# CHECK: 2000 d $d.1 +# CHECK-NEXT: 1000 t $x.1 Index: tools/llvm-nm/llvm-nm.cpp =================================================================== --- tools/llvm-nm/llvm-nm.cpp +++ tools/llvm-nm/llvm-nm.cpp @@ -180,6 +180,9 @@ cl::alias JustSymbolNames("j", cl::desc("Alias for --just-symbol-name"), cl::aliasopt(JustSymbolName), cl::Grouping); +cl::opt SpecialSyms("special-syms", + cl::desc("No-op. Used for GNU compatibility only")); + // FIXME: This option takes exactly two strings and should be allowed anywhere // on the command line. Such that "llvm-nm -s __TEXT __text foo.o" would work. // But that does not as the CommandLine Library does not have a way to make