1da0c48c4Sopenharmony_ci#! /bin/sh 2da0c48c4Sopenharmony_ci# Copyright (C) 2020 Red Hat, Inc. 3da0c48c4Sopenharmony_ci# This file is part of elfutils. 4da0c48c4Sopenharmony_ci# 5da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify 6da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by 7da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or 8da0c48c4Sopenharmony_ci# (at your option) any later version. 9da0c48c4Sopenharmony_ci# 10da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but 11da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of 12da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13da0c48c4Sopenharmony_ci# GNU General Public License for more details. 14da0c48c4Sopenharmony_ci# 15da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License 16da0c48c4Sopenharmony_ci# along with this program. If not, see <http://www.gnu.org/licenses/>. 17da0c48c4Sopenharmony_ci 18da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh 19da0c48c4Sopenharmony_ci 20da0c48c4Sopenharmony_ci# void *SYM1; 21da0c48c4Sopenharmony_ci# void *SYM2 = 0; 22da0c48c4Sopenharmony_ci# extern void *SYM3; 23da0c48c4Sopenharmony_ci# static void *SYM4; 24da0c48c4Sopenharmony_ci# 25da0c48c4Sopenharmony_ci# void *SYM6 = &SYM3; 26da0c48c4Sopenharmony_ci# static void *SYM7 = &SYM3; 27da0c48c4Sopenharmony_ci# 28da0c48c4Sopenharmony_ci# void *SYM8 __attribute__((__weak__)); 29da0c48c4Sopenharmony_ci# 30da0c48c4Sopenharmony_ci# void FUN1 (void) { } 31da0c48c4Sopenharmony_ci# static void FUN2 (void) { } 32da0c48c4Sopenharmony_ci# extern void FUN3 (void); 33da0c48c4Sopenharmony_ci# 34da0c48c4Sopenharmony_ci# void *FREF = FUN3; 35da0c48c4Sopenharmony_ci# 36da0c48c4Sopenharmony_ci# void __attribute__((__weak__)) FUN4 (void) { }; 37da0c48c4Sopenharmony_ci# 38da0c48c4Sopenharmony_ci# int NUM0 = 0; __asm__(".type NUM0,%gnu_unique_object"); 39da0c48c4Sopenharmony_ci# int __thread NUM1 = 1; 40da0c48c4Sopenharmony_ci# 41da0c48c4Sopenharmony_ci# gcc -m64 -c syms.c -o testfilesyms64 42da0c48c4Sopenharmony_ci# gcc -m32 -c syms.c -o testfilesyms32 43da0c48c4Sopenharmony_ci 44da0c48c4Sopenharmony_citestfiles testfilesyms32 testfilesyms64 45da0c48c4Sopenharmony_ci 46da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms32 <<\EOF 47da0c48c4Sopenharmony_ci00000008 D FREF 48da0c48c4Sopenharmony_ci00000000 T FUN1 49da0c48c4Sopenharmony_ci00000010 t FUN2 50da0c48c4Sopenharmony_ci U FUN3 51da0c48c4Sopenharmony_ci00000020 W FUN4 52da0c48c4Sopenharmony_ci00000008 u NUM0 53da0c48c4Sopenharmony_ci00000000 D NUM1 54da0c48c4Sopenharmony_ci00000004 C SYM1 55da0c48c4Sopenharmony_ci00000000 B SYM2 56da0c48c4Sopenharmony_ci U SYM3 57da0c48c4Sopenharmony_ci0000000c b SYM4 58da0c48c4Sopenharmony_ci00000000 D SYM6 59da0c48c4Sopenharmony_ci00000004 d SYM7 60da0c48c4Sopenharmony_ci00000004 V SYM8 61da0c48c4Sopenharmony_ci U _GLOBAL_OFFSET_TABLE_ 62da0c48c4Sopenharmony_ci00000000 T __x86.get_pc_thunk.ax 63da0c48c4Sopenharmony_ciEOF 64da0c48c4Sopenharmony_ci 65da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms32 <<\EOF 66da0c48c4Sopenharmony_ciFREF D 00000008 00000004 67da0c48c4Sopenharmony_ciFUN1 T 00000000 00000010 68da0c48c4Sopenharmony_ciFUN2 t 00000010 00000010 69da0c48c4Sopenharmony_ciFUN3 U 70da0c48c4Sopenharmony_ciFUN4 W 00000020 00000010 71da0c48c4Sopenharmony_ciNUM0 u 00000008 00000004 72da0c48c4Sopenharmony_ciNUM1 D 00000000 00000004 73da0c48c4Sopenharmony_ciSYM1 C 00000004 00000004 74da0c48c4Sopenharmony_ciSYM2 B 00000000 00000004 75da0c48c4Sopenharmony_ciSYM3 U 76da0c48c4Sopenharmony_ciSYM4 b 0000000c 00000004 77da0c48c4Sopenharmony_ciSYM6 D 00000000 00000004 78da0c48c4Sopenharmony_ciSYM7 d 00000004 00000004 79da0c48c4Sopenharmony_ciSYM8 V 00000004 00000004 80da0c48c4Sopenharmony_ci_GLOBAL_OFFSET_TABLE_ U 81da0c48c4Sopenharmony_ci__x86.get_pc_thunk.ax T 00000000 00000000 82da0c48c4Sopenharmony_ciEOF 83da0c48c4Sopenharmony_ci 84da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms32 <<\EOF 85da0c48c4Sopenharmony_ci 86da0c48c4Sopenharmony_ci 87da0c48c4Sopenharmony_ciSymbols from testfilesyms32: 88da0c48c4Sopenharmony_ci 89da0c48c4Sopenharmony_ciName Value Class Type Size Line Section 90da0c48c4Sopenharmony_ci 91da0c48c4Sopenharmony_ciFREF |00000008|GLOBAL|OBJECT |00000004| |.data.rel 92da0c48c4Sopenharmony_ciFUN1 |00000000|GLOBAL|FUNC |00000010| |.text 93da0c48c4Sopenharmony_ciFUN2 |00000010|LOCAL |FUNC |00000010| |.text 94da0c48c4Sopenharmony_ciFUN3 | |GLOBAL|NOTYPE | | |UNDEF 95da0c48c4Sopenharmony_ciFUN4 |00000020|WEAK |FUNC |00000010| |.text 96da0c48c4Sopenharmony_ciNUM0 |00000008|UNIQUE|OBJECT |00000004| |.bss 97da0c48c4Sopenharmony_ciNUM1 |00000000|GLOBAL|TLS |00000004| |.tdata 98da0c48c4Sopenharmony_ciSYM1 |00000004|GLOBAL|OBJECT |00000004| |COMMON 99da0c48c4Sopenharmony_ciSYM2 |00000000|GLOBAL|OBJECT |00000004| |.bss 100da0c48c4Sopenharmony_ciSYM3 | |GLOBAL|NOTYPE | | |UNDEF 101da0c48c4Sopenharmony_ciSYM4 |0000000c|LOCAL |OBJECT |00000004| |.bss 102da0c48c4Sopenharmony_ciSYM6 |00000000|GLOBAL|OBJECT |00000004| |.data.rel 103da0c48c4Sopenharmony_ciSYM7 |00000004|LOCAL |OBJECT |00000004| |.data.rel 104da0c48c4Sopenharmony_ciSYM8 |00000004|WEAK |OBJECT |00000004| |.bss 105da0c48c4Sopenharmony_ci_GLOBAL_OFFSET_TABLE_| |GLOBAL|NOTYPE | | |UNDEF 106da0c48c4Sopenharmony_ci__x86.get_pc_thunk.ax|00000000|GLOBAL|FUNC |00000000| |.text.__x86.get_pc_thunk.ax 107da0c48c4Sopenharmony_ciEOF 108da0c48c4Sopenharmony_ci 109da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms64 <<\EOF 110da0c48c4Sopenharmony_ci0000000000000010 D FREF 111da0c48c4Sopenharmony_ci0000000000000000 T FUN1 112da0c48c4Sopenharmony_ci0000000000000007 t FUN2 113da0c48c4Sopenharmony_ci U FUN3 114da0c48c4Sopenharmony_ci000000000000000e W FUN4 115da0c48c4Sopenharmony_ci0000000000000010 u NUM0 116da0c48c4Sopenharmony_ci0000000000000000 D NUM1 117da0c48c4Sopenharmony_ci0000000000000008 C SYM1 118da0c48c4Sopenharmony_ci0000000000000000 B SYM2 119da0c48c4Sopenharmony_ci U SYM3 120da0c48c4Sopenharmony_ci0000000000000018 b SYM4 121da0c48c4Sopenharmony_ci0000000000000000 D SYM6 122da0c48c4Sopenharmony_ci0000000000000008 d SYM7 123da0c48c4Sopenharmony_ci0000000000000008 V SYM8 124da0c48c4Sopenharmony_ciEOF 125da0c48c4Sopenharmony_ci 126da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms64 <<\EOF 127da0c48c4Sopenharmony_ciFREF D 0000000000000010 0000000000000008 128da0c48c4Sopenharmony_ciFUN1 T 0000000000000000 0000000000000007 129da0c48c4Sopenharmony_ciFUN2 t 0000000000000007 0000000000000007 130da0c48c4Sopenharmony_ciFUN3 U 131da0c48c4Sopenharmony_ciFUN4 W 000000000000000e 0000000000000007 132da0c48c4Sopenharmony_ciNUM0 u 0000000000000010 0000000000000004 133da0c48c4Sopenharmony_ciNUM1 D 0000000000000000 0000000000000004 134da0c48c4Sopenharmony_ciSYM1 C 0000000000000008 0000000000000008 135da0c48c4Sopenharmony_ciSYM2 B 0000000000000000 0000000000000008 136da0c48c4Sopenharmony_ciSYM3 U 137da0c48c4Sopenharmony_ciSYM4 b 0000000000000018 0000000000000008 138da0c48c4Sopenharmony_ciSYM6 D 0000000000000000 0000000000000008 139da0c48c4Sopenharmony_ciSYM7 d 0000000000000008 0000000000000008 140da0c48c4Sopenharmony_ciSYM8 V 0000000000000008 0000000000000008 141da0c48c4Sopenharmony_ciEOF 142da0c48c4Sopenharmony_ci 143da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms64 <<\EOF 144da0c48c4Sopenharmony_ci 145da0c48c4Sopenharmony_ci 146da0c48c4Sopenharmony_ciSymbols from testfilesyms64: 147da0c48c4Sopenharmony_ci 148da0c48c4Sopenharmony_ciName Value Class Type Size Line Section 149da0c48c4Sopenharmony_ci 150da0c48c4Sopenharmony_ciFREF |0000000000000010|GLOBAL|OBJECT |0000000000000008| |.data.rel 151da0c48c4Sopenharmony_ciFUN1 |0000000000000000|GLOBAL|FUNC |0000000000000007| |.text 152da0c48c4Sopenharmony_ciFUN2 |0000000000000007|LOCAL |FUNC |0000000000000007| |.text 153da0c48c4Sopenharmony_ciFUN3 | |GLOBAL|NOTYPE | | |UNDEF 154da0c48c4Sopenharmony_ciFUN4 |000000000000000e|WEAK |FUNC |0000000000000007| |.text 155da0c48c4Sopenharmony_ciNUM0 |0000000000000010|UNIQUE|OBJECT |0000000000000004| |.bss 156da0c48c4Sopenharmony_ciNUM1 |0000000000000000|GLOBAL|TLS |0000000000000004| |.tdata 157da0c48c4Sopenharmony_ciSYM1 |0000000000000008|GLOBAL|OBJECT |0000000000000008| |COMMON 158da0c48c4Sopenharmony_ciSYM2 |0000000000000000|GLOBAL|OBJECT |0000000000000008| |.bss 159da0c48c4Sopenharmony_ciSYM3 | |GLOBAL|NOTYPE | | |UNDEF 160da0c48c4Sopenharmony_ciSYM4 |0000000000000018|LOCAL |OBJECT |0000000000000008| |.bss 161da0c48c4Sopenharmony_ciSYM6 |0000000000000000|GLOBAL|OBJECT |0000000000000008| |.data.rel 162da0c48c4Sopenharmony_ciSYM7 |0000000000000008|LOCAL |OBJECT |0000000000000008| |.data.rel 163da0c48c4Sopenharmony_ciSYM8 |0000000000000008|WEAK |OBJECT |0000000000000008| |.bss 164da0c48c4Sopenharmony_ciEOF 165da0c48c4Sopenharmony_ci 166da0c48c4Sopenharmony_ciexit 0 167