#! /bin/sh
# Copyright (C) 2018 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 tests/testfile-dwarf-45.source
testfiles testfile-splitdwarf-4 testfile-splitdwarf-5

# DWARF4 GNU DebugFission No real table header.
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=addr testfile-splitdwarf-4<<\EOF

DWARF section [33] '.debug_addr' at offset 0x3671:
Table at offset 0 for CU [     b]:

 Length:              152
 DWARF version:         4
 Address size:          8
 Segment size:          0

 Addresses start at offset 0x0:
 [ 0] 0x000000000040116a <foo+0xa>
 [ 1] 0x0000000000401189 <foo+0x29>
 [ 2] 0x000000000040118d <foo+0x2d>
 [ 3] 0x0000000000401194
 [ 4] 0x0000000000401181 <foo+0x21>
 [ 5] 0x00000000004011af <baz+0xf>
 [ 6] 0x00000000004011b1
 [ 7] 0x00000000004011a0 <baz>
 [ 8] 0x0000000000401160 <foo>
 [ 9] 0x00000000004011a0 <baz>
 [10] 0x000000000040117b <foo+0x1b>
 [11] 0x000000000040117b <foo+0x1b>
 [12] 0x0000000000401181 <foo+0x21>
 [13] 0x0000000000401181 <foo+0x21>
 [14] 0x000000000040118d <foo+0x2d>
 [15] 0x0000000000401160 <foo>
 [16] 0x0000000000401060 <main>
 [17] 0x000000000040117b <foo+0x1b>
 [18] 0x0000000000404038 <m>

Table at offset 98 for CU [    3f]:

 Length:              136
 DWARF version:         4
 Address size:          8
 Segment size:          0

 Addresses start at offset 0x98:
 [ 0] 0x00000000004011df <calc+0x1f>
 [ 1] 0x00000000004011e4 <calc+0x24>
 [ 2] 0x0000000000401060 <main>
 [ 3] 0x0000000000401071 <main+0x11>
 [ 4] 0x0000000000401074 <main+0x14>
 [ 5] 0x0000000000401079 <main+0x19>
 [ 6] 0x00000000004011d3 <calc+0x13>
 [ 7] 0x0000000000401078 <main+0x18>
 [ 8] 0x00000000004011a0 <baz>
 [ 9] 0x0000000000401040
 [10] 0x0000000000401080 <_start>
 [11] 0x00000000004011c0 <calc>
 [12] 0x0000000000401060 <main>
 [13] 0x00000000004011c0 <calc>
 [14] 0x00000000004011c8 <calc+0x8>
 [15] 0x00000000004011d8 <calc+0x18>
 [16] 0x00000000004011da <calc+0x1a>

EOF

# DWARF5 Real table header.
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=addr testfile-splitdwarf-5<<\EOF

DWARF section [32] '.debug_addr' at offset 0x365e:
Table at offset 0 for CU [    14]:

 Length:              156
 DWARF version:         5
 Address size:          8
 Segment size:          0

 Addresses start at offset 0x8:
 [ 0] 0x000000000040116a <foo+0xa>
 [ 1] 0x0000000000401189 <foo+0x29>
 [ 2] 0x000000000040118d <foo+0x2d>
 [ 3] 0x0000000000401194
 [ 4] 0x0000000000401181 <foo+0x21>
 [ 5] 0x00000000004011af <baz+0xf>
 [ 6] 0x00000000004011b1
 [ 7] 0x00000000004011a0 <baz>
 [ 8] 0x0000000000401160 <foo>
 [ 9] 0x00000000004011a0 <baz>
 [10] 0x000000000040117b <foo+0x1b>
 [11] 0x000000000040117b <foo+0x1b>
 [12] 0x0000000000401181 <foo+0x21>
 [13] 0x0000000000401181 <foo+0x21>
 [14] 0x000000000040118d <foo+0x2d>
 [15] 0x0000000000401160 <foo>
 [16] 0x0000000000401060 <main>
 [17] 0x000000000040117b <foo+0x1b>
 [18] 0x0000000000404038 <m>

Table at offset a0 for CU [    49]:

 Length:              140
 DWARF version:         5
 Address size:          8
 Segment size:          0

 Addresses start at offset 0xa8:
 [ 0] 0x00000000004011df <calc+0x1f>
 [ 1] 0x00000000004011e4 <calc+0x24>
 [ 2] 0x0000000000401060 <main>
 [ 3] 0x0000000000401071 <main+0x11>
 [ 4] 0x0000000000401074 <main+0x14>
 [ 5] 0x0000000000401079 <main+0x19>
 [ 6] 0x00000000004011d3 <calc+0x13>
 [ 7] 0x0000000000401078 <main+0x18>
 [ 8] 0x00000000004011a0 <baz>
 [ 9] 0x0000000000401040
 [10] 0x0000000000401080 <_start>
 [11] 0x00000000004011c0 <calc>
 [12] 0x0000000000401060 <main>
 [13] 0x00000000004011c0 <calc>
 [14] 0x00000000004011c8 <calc+0x8>
 [15] 0x00000000004011d8 <calc+0x18>
 [16] 0x00000000004011da <calc+0x1a>

EOF

exit 0