#! /bin/sh
# Copyright (C) 2015 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

# See run-elfgetchdr.sh for testfiles.

testfiles testfile-zgnu64
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgnu64 <<\EOF
There are 9 section headers, starting at offset 0x3e0:

Section Headers:
[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
     [Compression  Size     Al]
[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
[ 1] .text                PROGBITS     0000000000400078 00000078 0000002a  0 AX     0   0  1
[ 2] .zdebug_aranges      PROGBITS     0000000000000000 00000260 00000032  0        0   0 16
     [GNU ZLIB     00000060   ]
[ 3] .zdebug_info         PROGBITS     0000000000000000 00000292 0000006f  0        0   0  1
     [GNU ZLIB     000000aa   ]
[ 4] .debug_abbrev        PROGBITS     0000000000000000 00000301 00000028  0        0   0  1
[ 5] .zdebug_line         PROGBITS     0000000000000000 00000329 0000005b  0        0   0  1
     [GNU ZLIB     0000008d   ]
[ 6] .shstrtab            STRTAB       0000000000000000 00000384 00000059  0        0   0  1
[ 7] .symtab              SYMTAB       0000000000000000 000000a8 00000168 24        8   8  8
[ 8] .strtab              STRTAB       0000000000000000 00000210 0000004b  0        0   0  1

EOF

testfiles testfile-zgnu64be
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgnu64be <<\EOF
There are 10 section headers, starting at offset 0x438:

Section Headers:
[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
     [Compression  Size     Al]
[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
[ 1] .text                PROGBITS     0000000010000078 00000078 00000074  0 AX     0   0  8
[ 2] .eh_frame            PROGBITS     00000000100000ec 000000ec 00000000  0 A      0   0  4
[ 3] .zdebug_aranges      PROGBITS     0000000000000000 000002c0 00000034  0        0   0 16
     [GNU ZLIB     00000060   ]
[ 4] .zdebug_info         PROGBITS     0000000000000000 000002f4 00000059  0        0   0  1
     [GNU ZLIB     0000007e   ]
[ 5] .debug_abbrev        PROGBITS     0000000000000000 0000034d 00000028  0        0   0  1
[ 6] .zdebug_line         PROGBITS     0000000000000000 00000375 0000005b  0        0   0  1
     [GNU ZLIB     0000008d   ]
[ 7] .shstrtab            STRTAB       0000000000000000 000003d0 00000063  0        0   0  1
[ 8] .symtab              SYMTAB       0000000000000000 000000f0 00000180 24        9   9  8
[ 9] .strtab              STRTAB       0000000000000000 00000270 00000044  0        0   0  1

EOF

testfiles testfile-zgabi64
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgabi64 <<\EOF
There are 9 section headers, starting at offset 0x400:

Section Headers:
[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
     [Compression  Size     Al]
[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
[ 1] .text                PROGBITS     0000000000400078 00000078 0000002a  0 AX     0   0  1
[ 2] .debug_aranges       PROGBITS     0000000000000000 00000260 0000003e  0 C      0   0 16
     [ELF ZLIB (1) 00000060 16]
[ 3] .debug_info          PROGBITS     0000000000000000 0000029e 0000007b  0 C      0   0  1
     [ELF ZLIB (1) 000000aa  1]
[ 4] .debug_abbrev        PROGBITS     0000000000000000 00000319 00000028  0        0   0  1
[ 5] .debug_line          PROGBITS     0000000000000000 00000341 00000067  0 C      0   0  1
     [ELF ZLIB (1) 0000008d  1]
[ 6] .shstrtab            STRTAB       0000000000000000 000003a8 00000056  0        0   0  1
[ 7] .symtab              SYMTAB       0000000000000000 000000a8 00000168 24        8   8  8
[ 8] .strtab              STRTAB       0000000000000000 00000210 0000004b  0        0   0  1

EOF

testfiles testfile-zgabi64be
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgabi64be <<\EOF
There are 10 section headers, starting at offset 0x458:

Section Headers:
[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
     [Compression  Size     Al]
[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
[ 1] .text                PROGBITS     0000000010000078 00000078 00000074  0 AX     0   0  8
[ 2] .eh_frame            PROGBITS     00000000100000ec 000000ec 00000000  0 A      0   0  4
[ 3] .debug_aranges       PROGBITS     0000000000000000 000002c0 00000040  0 C      0   0 16
     [ELF ZLIB (1) 00000060 16]
[ 4] .debug_info          PROGBITS     0000000000000000 00000300 00000065  0 C      0   0  1
     [ELF ZLIB (1) 0000007e  1]
[ 5] .debug_abbrev        PROGBITS     0000000000000000 00000365 00000028  0        0   0  1
[ 6] .debug_line          PROGBITS     0000000000000000 0000038d 00000067  0 C      0   0  1
     [ELF ZLIB (1) 0000008d  1]
[ 7] .shstrtab            STRTAB       0000000000000000 000003f4 00000060  0        0   0  1
[ 8] .symtab              SYMTAB       0000000000000000 000000f0 00000180 24        9   9  8
[ 9] .strtab              STRTAB       0000000000000000 00000270 00000044  0        0   0  1

EOF

testfiles testfile-zgnu32
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgnu32 <<\EOF
There are 9 section headers, starting at offset 0x33c:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
     [Compression  Size   Al]
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .text                PROGBITS     08048054 000054 00002a  0 AX     0   0  1
[ 2] .zdebug_aranges      PROGBITS     00000000 0001c0 000031  0        0   0  8
     [GNU ZLIB     000040   ]
[ 3] .zdebug_info         PROGBITS     00000000 0001f1 00006f  0        0   0  1
     [GNU ZLIB     00009a   ]
[ 4] .debug_abbrev        PROGBITS     00000000 000260 000028  0        0   0  1
[ 5] .zdebug_line         PROGBITS     00000000 000288 00005a  0        0   0  1
     [GNU ZLIB     000085   ]
[ 6] .shstrtab            STRTAB       00000000 0002e2 000059  0        0   0  1
[ 7] .symtab              SYMTAB       00000000 000080 0000f0 16        8   8  4
[ 8] .strtab              STRTAB       00000000 000170 00004b  0        0   0  1

EOF

testfiles testfile-zgnu32be
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgnu32be <<\EOF
There are 10 section headers, starting at offset 0x390:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
     [Compression  Size   Al]
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .text                PROGBITS     01800054 000054 000074  0 AX     0   0  1
[ 2] .eh_frame            PROGBITS     018000c8 0000c8 000000  0 A      0   0  4
[ 3] .zdebug_aranges      PROGBITS     00000000 000220 000033  0        0   0  8
     [GNU ZLIB     000040   ]
[ 4] .zdebug_info         PROGBITS     00000000 000253 000058  0        0   0  1
     [GNU ZLIB     00006e   ]
[ 5] .debug_abbrev        PROGBITS     00000000 0002ab 000028  0        0   0  1
[ 6] .zdebug_line         PROGBITS     00000000 0002d3 000059  0        0   0  1
     [GNU ZLIB     000085   ]
[ 7] .shstrtab            STRTAB       00000000 00032c 000063  0        0   0  1
[ 8] .symtab              SYMTAB       00000000 0000c8 000110 16        9   9  4
[ 9] .strtab              STRTAB       00000000 0001d8 000045  0        0   0  1

EOF

testfiles testfile-zgabi32
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgabi32 <<\EOF
There are 9 section headers, starting at offset 0x338:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
     [Compression  Size   Al]
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .text                PROGBITS     08048054 000054 00002a  0 AX     0   0  1
[ 2] .debug_aranges       PROGBITS     00000000 0001c0 000031  0 C      0   0  8
     [ELF ZLIB (1) 000040  8]
[ 3] .debug_info          PROGBITS     00000000 0001f1 00006f  0 C      0   0  1
     [ELF ZLIB (1) 00009a  1]
[ 4] .debug_abbrev        PROGBITS     00000000 000260 000028  0        0   0  1
[ 5] .debug_line          PROGBITS     00000000 000288 00005a  0 C      0   0  1
     [ELF ZLIB (1) 000085  1]
[ 6] .shstrtab            STRTAB       00000000 0002e2 000056  0        0   0  1
[ 7] .symtab              SYMTAB       00000000 000080 0000f0 16        8   8  4
[ 8] .strtab              STRTAB       00000000 000170 00004b  0        0   0  1

EOF

testfiles testfile-zgabi32be
testrun_compare ${abs_top_builddir}/src/readelf -z -S testfile-zgabi32be <<\EOF
There are 10 section headers, starting at offset 0x38c:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
     [Compression  Size   Al]
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .text                PROGBITS     01800054 000054 000074  0 AX     0   0  1
[ 2] .eh_frame            PROGBITS     018000c8 0000c8 000000  0 A      0   0  4
[ 3] .debug_aranges       PROGBITS     00000000 000220 000033  0 C      0   0  8
     [ELF ZLIB (1) 000040  8]
[ 4] .debug_info          PROGBITS     00000000 000253 000058  0 C      0   0  1
     [ELF ZLIB (1) 00006e  1]
[ 5] .debug_abbrev        PROGBITS     00000000 0002ab 000028  0        0   0  1
[ 6] .debug_line          PROGBITS     00000000 0002d3 000059  0 C      0   0  1
     [ELF ZLIB (1) 000085  1]
[ 7] .shstrtab            STRTAB       00000000 00032c 000060  0        0   0  1
[ 8] .symtab              SYMTAB       00000000 0000c8 000110 16        9   9  4
[ 9] .strtab              STRTAB       00000000 0001d8 000045  0        0   0  1

EOF

exit 0