You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.4 KiB
167 lines
5.4 KiB
#! /bin/sh
|
|
# Copyright (C) 2020 Red Hat, Inc.
|
|
# This file is part of elfutils.
|
|
#
|
|
# This file is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# elfutils is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
. $srcdir/test-subr.sh
|
|
|
|
# void *SYM1;
|
|
# void *SYM2 = 0;
|
|
# extern void *SYM3;
|
|
# static void *SYM4;
|
|
#
|
|
# void *SYM6 = &SYM3;
|
|
# static void *SYM7 = &SYM3;
|
|
#
|
|
# void *SYM8 __attribute__((__weak__));
|
|
#
|
|
# void FUN1 (void) { }
|
|
# static void FUN2 (void) { }
|
|
# extern void FUN3 (void);
|
|
#
|
|
# void *FREF = FUN3;
|
|
#
|
|
# void __attribute__((__weak__)) FUN4 (void) { };
|
|
#
|
|
# int NUM0 = 0; __asm__(".type NUM0,%gnu_unique_object");
|
|
# int __thread NUM1 = 1;
|
|
#
|
|
# gcc -m64 -c syms.c -o testfilesyms64
|
|
# gcc -m32 -c syms.c -o testfilesyms32
|
|
|
|
testfiles testfilesyms32 testfilesyms64
|
|
|
|
testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms32 <<\EOF
|
|
00000008 D FREF
|
|
00000000 T FUN1
|
|
00000010 t FUN2
|
|
U FUN3
|
|
00000020 W FUN4
|
|
00000008 u NUM0
|
|
00000000 D NUM1
|
|
00000004 C SYM1
|
|
00000000 B SYM2
|
|
U SYM3
|
|
0000000c b SYM4
|
|
00000000 D SYM6
|
|
00000004 d SYM7
|
|
00000004 V SYM8
|
|
U _GLOBAL_OFFSET_TABLE_
|
|
00000000 T __x86.get_pc_thunk.ax
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms32 <<\EOF
|
|
FREF D 00000008 00000004
|
|
FUN1 T 00000000 00000010
|
|
FUN2 t 00000010 00000010
|
|
FUN3 U
|
|
FUN4 W 00000020 00000010
|
|
NUM0 u 00000008 00000004
|
|
NUM1 D 00000000 00000004
|
|
SYM1 C 00000004 00000004
|
|
SYM2 B 00000000 00000004
|
|
SYM3 U
|
|
SYM4 b 0000000c 00000004
|
|
SYM6 D 00000000 00000004
|
|
SYM7 d 00000004 00000004
|
|
SYM8 V 00000004 00000004
|
|
_GLOBAL_OFFSET_TABLE_ U
|
|
__x86.get_pc_thunk.ax T 00000000 00000000
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms32 <<\EOF
|
|
|
|
|
|
Symbols from testfilesyms32:
|
|
|
|
Name Value Class Type Size Line Section
|
|
|
|
FREF |00000008|GLOBAL|OBJECT |00000004| |.data.rel
|
|
FUN1 |00000000|GLOBAL|FUNC |00000010| |.text
|
|
FUN2 |00000010|LOCAL |FUNC |00000010| |.text
|
|
FUN3 | |GLOBAL|NOTYPE | | |UNDEF
|
|
FUN4 |00000020|WEAK |FUNC |00000010| |.text
|
|
NUM0 |00000008|UNIQUE|OBJECT |00000004| |.bss
|
|
NUM1 |00000000|GLOBAL|TLS |00000004| |.tdata
|
|
SYM1 |00000004|GLOBAL|OBJECT |00000004| |COMMON
|
|
SYM2 |00000000|GLOBAL|OBJECT |00000004| |.bss
|
|
SYM3 | |GLOBAL|NOTYPE | | |UNDEF
|
|
SYM4 |0000000c|LOCAL |OBJECT |00000004| |.bss
|
|
SYM6 |00000000|GLOBAL|OBJECT |00000004| |.data.rel
|
|
SYM7 |00000004|LOCAL |OBJECT |00000004| |.data.rel
|
|
SYM8 |00000004|WEAK |OBJECT |00000004| |.bss
|
|
_GLOBAL_OFFSET_TABLE_| |GLOBAL|NOTYPE | | |UNDEF
|
|
__x86.get_pc_thunk.ax|00000000|GLOBAL|FUNC |00000000| |.text.__x86.get_pc_thunk.ax
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms64 <<\EOF
|
|
0000000000000010 D FREF
|
|
0000000000000000 T FUN1
|
|
0000000000000007 t FUN2
|
|
U FUN3
|
|
000000000000000e W FUN4
|
|
0000000000000010 u NUM0
|
|
0000000000000000 D NUM1
|
|
0000000000000008 C SYM1
|
|
0000000000000000 B SYM2
|
|
U SYM3
|
|
0000000000000018 b SYM4
|
|
0000000000000000 D SYM6
|
|
0000000000000008 d SYM7
|
|
0000000000000008 V SYM8
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms64 <<\EOF
|
|
FREF D 0000000000000010 0000000000000008
|
|
FUN1 T 0000000000000000 0000000000000007
|
|
FUN2 t 0000000000000007 0000000000000007
|
|
FUN3 U
|
|
FUN4 W 000000000000000e 0000000000000007
|
|
NUM0 u 0000000000000010 0000000000000004
|
|
NUM1 D 0000000000000000 0000000000000004
|
|
SYM1 C 0000000000000008 0000000000000008
|
|
SYM2 B 0000000000000000 0000000000000008
|
|
SYM3 U
|
|
SYM4 b 0000000000000018 0000000000000008
|
|
SYM6 D 0000000000000000 0000000000000008
|
|
SYM7 d 0000000000000008 0000000000000008
|
|
SYM8 V 0000000000000008 0000000000000008
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms64 <<\EOF
|
|
|
|
|
|
Symbols from testfilesyms64:
|
|
|
|
Name Value Class Type Size Line Section
|
|
|
|
FREF |0000000000000010|GLOBAL|OBJECT |0000000000000008| |.data.rel
|
|
FUN1 |0000000000000000|GLOBAL|FUNC |0000000000000007| |.text
|
|
FUN2 |0000000000000007|LOCAL |FUNC |0000000000000007| |.text
|
|
FUN3 | |GLOBAL|NOTYPE | | |UNDEF
|
|
FUN4 |000000000000000e|WEAK |FUNC |0000000000000007| |.text
|
|
NUM0 |0000000000000010|UNIQUE|OBJECT |0000000000000004| |.bss
|
|
NUM1 |0000000000000000|GLOBAL|TLS |0000000000000004| |.tdata
|
|
SYM1 |0000000000000008|GLOBAL|OBJECT |0000000000000008| |COMMON
|
|
SYM2 |0000000000000000|GLOBAL|OBJECT |0000000000000008| |.bss
|
|
SYM3 | |GLOBAL|NOTYPE | | |UNDEF
|
|
SYM4 |0000000000000018|LOCAL |OBJECT |0000000000000008| |.bss
|
|
SYM6 |0000000000000000|GLOBAL|OBJECT |0000000000000008| |.data.rel
|
|
SYM7 |0000000000000008|LOCAL |OBJECT |0000000000000008| |.data.rel
|
|
SYM8 |0000000000000008|WEAK |OBJECT |0000000000000008| |.bss
|
|
EOF
|
|
|
|
exit 0
|