From: Meador Inge Date: Wed, 23 Nov 2016 20:17:20 +0000 (+0000) Subject: llvm-nm: Print correct symbol types for init and fini sections X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=882017a7cb5ff43dd29610b051657fb42b6361a3;p=llvm llvm-nm: Print correct symbol types for init and fini sections This patch fixes a small bug where symbols defined in the INIT and FINI sections were incorrectly getting a type of 'n'. Differential Revision: https://reviews.llvm.org/D26937 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287803 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/llvm-nm/X86/Inputs/init-fini.out.elf-x86_64 b/test/tools/llvm-nm/X86/Inputs/init-fini.out.elf-x86_64 new file mode 100755 index 00000000000..b5c74f234c6 Binary files /dev/null and b/test/tools/llvm-nm/X86/Inputs/init-fini.out.elf-x86_64 differ diff --git a/test/tools/llvm-nm/X86/init-fini.test b/test/tools/llvm-nm/X86/init-fini.test new file mode 100644 index 00000000000..86afc711c4e --- /dev/null +++ b/test/tools/llvm-nm/X86/init-fini.test @@ -0,0 +1,8 @@ +# RUN: llvm-nm -B -S %p/Inputs/init-fini.out.elf-x86_64 | FileCheck --match-full-lines %s + +CHECK: 00000000006000c2 0000000000000000 T __bss_start +CHECK: 00000000006000c2 0000000000000000 t __init_array_end +CHECK: 00000000006000ba 0000000000000000 t __init_array_start +CHECK: 00000000006000c2 0000000000000000 T _edata +CHECK: 00000000006000c8 0000000000000000 T _end +CHECK: 00000000004000b0 0000000000000000 T _start diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index e89d1d31048..8c6fa4ecec7 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -778,6 +778,9 @@ static char getSymbolNMTypeChar(ELFObjectFileBase &Obj, break; case ELF::SHT_NOBITS: return 'b'; + case ELF::SHT_INIT_ARRAY: + case ELF::SHT_FINI_ARRAY: + return 't'; } }