Blame tests/run-readelf-loc.sh

Packit Service 97d2fb
#! /bin/sh
Packit Service 97d2fb
# Copyright (C) 2013 Red Hat, Inc.
Packit Service 97d2fb
# This file is part of elfutils.
Packit Service 97d2fb
#
Packit Service 97d2fb
# This file is free software; you can redistribute it and/or modify
Packit Service 97d2fb
# it under the terms of the GNU General Public License as published by
Packit Service 97d2fb
# the Free Software Foundation; either version 3 of the License, or
Packit Service 97d2fb
# (at your option) any later version.
Packit Service 97d2fb
#
Packit Service 97d2fb
# elfutils is distributed in the hope that it will be useful, but
Packit Service 97d2fb
# WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 97d2fb
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 97d2fb
# GNU General Public License for more details.
Packit Service 97d2fb
#
Packit Service 97d2fb
# You should have received a copy of the GNU General Public License
Packit Service 97d2fb
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 97d2fb
Packit Service 97d2fb
. $srcdir/test-subr.sh
Packit Service 97d2fb
Packit Service 97d2fb
# - hello.c
Packit Service 97d2fb
# int say (const char *prefix);
Packit Service 97d2fb
#
Packit Service 97d2fb
# static char *
Packit Service 97d2fb
# subject (char *word, int count)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   return count > 0 ? word : (word + count);
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# int
Packit Service 97d2fb
# main (int argc, char **argv)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#    return say (subject (argv[0], argc));
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# - world.c
Packit Service 97d2fb
# static int
Packit Service 97d2fb
# sad (char c)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   return c > 0 ? c : c + 1;
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# static int
Packit Service 97d2fb
# happy (const char *w)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   return sad (w[1]);
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# int
Packit Service 97d2fb
# say (const char *prefix)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   const char *world = "World";
Packit Service 97d2fb
#   return prefix ? sad (prefix[0]) : happy (world);
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# gcc -g -O2 -c hello.c
Packit Service 97d2fb
# gcc -g -O2 -c world.c
Packit Service 97d2fb
# gcc -g -o testfileloc hello.o world.o
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfileloc
Packit Service 97d2fb
Packit Service 97d2fb
# Process values as offsets from base addresses and resolve to symbols.
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --debug-dump=ranges \
Packit Service 97d2fb
  testfileloc<<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [33] '.debug_loc' at offset 0xd2a:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400480 <main>
Packit Service 97d2fb
 [     0] range 0, d
Packit Service 97d2fb
          0x0000000000400480 <main>..
Packit Service 97d2fb
          0x000000000040048c <main+0xc>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    23] range 5, d
Packit Service 97d2fb
          0x0000000000400485 <main+0x5>..
Packit Service 97d2fb
          0x000000000040048c <main+0xc>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    e0] base: 0x00000000004004a0 <say>
Packit Service 97d2fb
 [    46] range 12, 1a
Packit Service 97d2fb
          0x00000000004004b2 <say+0x12>..
Packit Service 97d2fb
          0x00000000004004b9 <say+0x19>
Packit Service 97d2fb
           [ 0] breg5 0
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [34] '.debug_ranges' at offset 0xd94:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400480 <main>
Packit Service 97d2fb
 [     0] range 0, 2
Packit Service 97d2fb
          0x0000000000400480 <main>..
Packit Service 97d2fb
          0x0000000000400481 <main+0x1>
Packit Service 97d2fb
          range 5, d
Packit Service 97d2fb
          0x0000000000400485 <main+0x5>..
Packit Service 97d2fb
          0x000000000040048c <main+0xc>
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    e0] base: 0x00000000004004a0 <say>
Packit Service 97d2fb
 [    30] range d, f
Packit Service 97d2fb
          0x00000000004004ad <say+0xd>..
Packit Service 97d2fb
          0x00000000004004ae <say+0xe>
Packit Service 97d2fb
          range 12, 1a
Packit Service 97d2fb
          0x00000000004004b2 <say+0x12>..
Packit Service 97d2fb
          0x00000000004004b9 <say+0x19>
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# Don't resolve addresses to symbols.
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -N --debug-dump=loc --debug-dump=ranges \
Packit Service 97d2fb
  testfileloc<<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [33] '.debug_loc' at offset 0xd2a:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400480
Packit Service 97d2fb
 [     0] range 0, d
Packit Service 97d2fb
          0x0000000000400480..
Packit Service 97d2fb
          0x000000000040048c
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    23] range 5, d
Packit Service 97d2fb
          0x0000000000400485..
Packit Service 97d2fb
          0x000000000040048c
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    e0] base: 0x00000000004004a0
Packit Service 97d2fb
 [    46] range 12, 1a
Packit Service 97d2fb
          0x00000000004004b2..
Packit Service 97d2fb
          0x00000000004004b9
Packit Service 97d2fb
           [ 0] breg5 0
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [34] '.debug_ranges' at offset 0xd94:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400480
Packit Service 97d2fb
 [     0] range 0, 2
Packit Service 97d2fb
          0x0000000000400480..
Packit Service 97d2fb
          0x0000000000400481
Packit Service 97d2fb
          range 5, d
Packit Service 97d2fb
          0x0000000000400485..
Packit Service 97d2fb
          0x000000000040048c
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    e0] base: 0x00000000004004a0
Packit Service 97d2fb
 [    30] range d, f
Packit Service 97d2fb
          0x00000000004004ad..
Packit Service 97d2fb
          0x00000000004004ae
Packit Service 97d2fb
          range 12, 1a
Packit Service 97d2fb
          0x00000000004004b2..
Packit Service 97d2fb
          0x00000000004004b9
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# Produce "raw" unprocessed content.
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc --debug-dump=ranges \
Packit Service 97d2fb
  testfileloc<<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [33] '.debug_loc' at offset 0xd2a:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400480
Packit Service 97d2fb
 [     0] range 0, d
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    23] range 5, d
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    e0] base: 0x00000000004004a0
Packit Service 97d2fb
 [    46] range 12, 1a
Packit Service 97d2fb
           [ 0] breg5 0
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [34] '.debug_ranges' at offset 0xd94:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400480
Packit Service 97d2fb
 [     0] range 0, 2
Packit Service 97d2fb
          range 5, d
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    e0] base: 0x00000000004004a0
Packit Service 97d2fb
 [    30] range d, f
Packit Service 97d2fb
          range 12, 1a
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# .debug_rnglists (DWARF5), see tests/testfile-dwarf-45.source
Packit Service 97d2fb
testfiles testfile-dwarf-5
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc testfile-dwarf-5<<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [31] '.debug_loclists' at offset 0x1c0c:
Packit Service 97d2fb
Table at Offset 0x0:
Packit Service 97d2fb
Packit Service 97d2fb
 Length:               96
Packit Service 97d2fb
 DWARF version:         5
Packit Service 97d2fb
 Address size:          8
Packit Service 97d2fb
 Segment size:          0
Packit Service 97d2fb
 Offset entries:        0
Packit Service 97d2fb
 CU [     c] base: 0x0000000000400510 <foo>
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: c, Index: 0
Packit Service 97d2fb
    offset_pair 0, a
Packit Service 97d2fb
      0x0000000000400510 <foo>..
Packit Service 97d2fb
      0x0000000000400519 <foo+0x9>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair a, 34
Packit Service 97d2fb
      0x000000000040051a <foo+0xa>..
Packit Service 97d2fb
      0x0000000000400543 <foo+0x33>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 1a, Index: e
Packit Service 97d2fb
    offset_pair 1b, 2d
Packit Service 97d2fb
      0x000000000040052b <foo+0x1b>..
Packit Service 97d2fb
      0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
        [ 0] addr 0x601038 <m>
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 28, Index: 1c
Packit Service 97d2fb
    offset_pair 1b, 21
Packit Service 97d2fb
      0x000000000040052b <foo+0x1b>..
Packit Service 97d2fb
      0x0000000000400530 <foo+0x20>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 2e, Index: 22
Packit Service 97d2fb
    offset_pair 1b, 27
Packit Service 97d2fb
      0x000000000040052b <foo+0x1b>..
Packit Service 97d2fb
      0x0000000000400536 <foo+0x26>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair 29, 2d
Packit Service 97d2fb
      0x0000000000400539 <foo+0x29>..
Packit Service 97d2fb
      0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 39, Index: 2d
Packit Service 97d2fb
    offset_pair 21, 27
Packit Service 97d2fb
      0x0000000000400531 <foo+0x21>..
Packit Service 97d2fb
      0x0000000000400536 <foo+0x26>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair 29, 2d
Packit Service 97d2fb
      0x0000000000400539 <foo+0x29>..
Packit Service 97d2fb
      0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 44, Index: 38
Packit Service 97d2fb
    offset_pair 21, 2d
Packit Service 97d2fb
      0x0000000000400531 <foo+0x21>..
Packit Service 97d2fb
      0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 4a, Index: 3e
Packit Service 97d2fb
    offset_pair 2d, 33
Packit Service 97d2fb
      0x000000000040053d <foo+0x2d>..
Packit Service 97d2fb
      0x0000000000400542 <foo+0x32>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 50, Index: 44
Packit Service 97d2fb
    offset_pair 40, 4f
Packit Service 97d2fb
      0x0000000000400550 <baz>..
Packit Service 97d2fb
      0x000000000040055e <baz+0xe>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair 4f, 51
Packit Service 97d2fb
      0x000000000040055f <baz+0xf>..
Packit Service 97d2fb
      0x0000000000400560 <baz+0x10>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 5e, Index: 52
Packit Service 97d2fb
    offset_pair 40, 50
Packit Service 97d2fb
      0x0000000000400550 <baz>..
Packit Service 97d2fb
      0x000000000040055f <baz+0xf>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
Table at Offset 0x64:
Packit Service 97d2fb
Packit Service 97d2fb
 Length:              159
Packit Service 97d2fb
 DWARF version:         5
Packit Service 97d2fb
 Address size:          8
Packit Service 97d2fb
 Segment size:          0
Packit Service 97d2fb
 Offset entries:        0
Packit Service 97d2fb
 CU [   218] base: 000000000000000000
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 70, Index: 0
Packit Service 97d2fb
    base_address 0x400410
Packit Service 97d2fb
      0x0000000000400410 <main>
Packit Service 97d2fb
    offset_pair 0, 14
Packit Service 97d2fb
      0x0000000000400410 <main>..
Packit Service 97d2fb
      0x0000000000400423 <main+0x13>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair 14, 20
Packit Service 97d2fb
      0x0000000000400424 <main+0x14>..
Packit Service 97d2fb
      0x000000000040042f <main+0x1f>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 87, Index: 17
Packit Service 97d2fb
    base_address 0x400410
Packit Service 97d2fb
      0x0000000000400410 <main>
Packit Service 97d2fb
    offset_pair 0, 18
Packit Service 97d2fb
      0x0000000000400410 <main>..
Packit Service 97d2fb
      0x0000000000400427 <main+0x17>
Packit Service 97d2fb
        [ 0] reg4
Packit Service 97d2fb
    offset_pair 18, 20
Packit Service 97d2fb
      0x0000000000400428 <main+0x18>..
Packit Service 97d2fb
      0x000000000040042f <main+0x1f>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg4
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 9e, Index: 2e
Packit Service 97d2fb
    start_length 0x400421, 7
Packit Service 97d2fb
      0x0000000000400421 <main+0x11>..
Packit Service 97d2fb
      0x0000000000400427 <main+0x17>
Packit Service 97d2fb
        [ 0] reg0
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: ab, Index: 3b
Packit Service 97d2fb
    base_address 0x400570
Packit Service 97d2fb
      0x0000000000400570 <calc>
Packit Service 97d2fb
    offset_pair 0, 8
Packit Service 97d2fb
      0x0000000000400570 <calc>..
Packit Service 97d2fb
      0x0000000000400577 <calc+0x7>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair 8, 2b
Packit Service 97d2fb
      0x0000000000400578 <calc+0x8>..
Packit Service 97d2fb
      0x000000000040059a <calc+0x2a>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: c2, Index: 52
Packit Service 97d2fb
    start_length 0x400588, b
Packit Service 97d2fb
      0x0000000000400588 <calc+0x18>..
Packit Service 97d2fb
      0x0000000000400592 <calc+0x22>
Packit Service 97d2fb
        [ 0] reg0
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: cf, Index: 5f
Packit Service 97d2fb
    base_address 0x400588
Packit Service 97d2fb
      0x0000000000400588 <calc+0x18>
Packit Service 97d2fb
    offset_pair 0, 2
Packit Service 97d2fb
      0x0000000000400588 <calc+0x18>..
Packit Service 97d2fb
      0x0000000000400589 <calc+0x19>
Packit Service 97d2fb
        [ 0] reg1
Packit Service 97d2fb
    offset_pair 2, 7
Packit Service 97d2fb
      0x000000000040058a <calc+0x1a>..
Packit Service 97d2fb
      0x000000000040058e <calc+0x1e>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    offset_pair 7, b
Packit Service 97d2fb
      0x000000000040058f <calc+0x1f>..
Packit Service 97d2fb
      0x0000000000400592 <calc+0x22>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] deref_size 1
Packit Service 97d2fb
        [ 5] const1u 56
Packit Service 97d2fb
        [ 7] shl
Packit Service 97d2fb
        [ 8] const1u 56
Packit Service 97d2fb
        [10] shra
Packit Service 97d2fb
        [11] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: f3, Index: 83
Packit Service 97d2fb
    base_address 0x400588
Packit Service 97d2fb
      0x0000000000400588 <calc+0x18>
Packit Service 97d2fb
    offset_pair 0, 2
Packit Service 97d2fb
      0x0000000000400588 <calc+0x18>..
Packit Service 97d2fb
      0x0000000000400589 <calc+0x19>
Packit Service 97d2fb
        [ 0] reg1
Packit Service 97d2fb
    offset_pair 2, b
Packit Service 97d2fb
      0x000000000040058a <calc+0x1a>..
Packit Service 97d2fb
      0x0000000000400592 <calc+0x22>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# Same as above, but for DWARF4, note completely different encoding, but
Packit Service 97d2fb
# the information is the same (check with diff -uwb).
Packit Service 97d2fb
testfiles testfile-dwarf-4
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc testfile-dwarf-4<<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [31] '.debug_loc' at offset 0x1c86:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000400510 <foo>
Packit Service 97d2fb
 [     0] range 0, a
Packit Service 97d2fb
          0x0000000000400510 <foo>..
Packit Service 97d2fb
          0x0000000000400519 <foo+0x9>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range a, 34
Packit Service 97d2fb
          0x000000000040051a <foo+0xa>..
Packit Service 97d2fb
          0x0000000000400543 <foo+0x33>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [    39] range 1b, 2d
Packit Service 97d2fb
          0x000000000040052b <foo+0x1b>..
Packit Service 97d2fb
          0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
           [ 0] addr 0x601038 <m>
Packit Service 97d2fb
 [    64] range 1b, 21
Packit Service 97d2fb
          0x000000000040052b <foo+0x1b>..
Packit Service 97d2fb
          0x0000000000400530 <foo+0x20>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    87] range 1b, 27
Packit Service 97d2fb
          0x000000000040052b <foo+0x1b>..
Packit Service 97d2fb
          0x0000000000400536 <foo+0x26>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 29, 2d
Packit Service 97d2fb
          0x0000000000400539 <foo+0x29>..
Packit Service 97d2fb
          0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    bd] range 21, 27
Packit Service 97d2fb
          0x0000000000400531 <foo+0x21>..
Packit Service 97d2fb
          0x0000000000400536 <foo+0x26>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 29, 2d
Packit Service 97d2fb
          0x0000000000400539 <foo+0x29>..
Packit Service 97d2fb
          0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    f3] range 21, 2d
Packit Service 97d2fb
          0x0000000000400531 <foo+0x21>..
Packit Service 97d2fb
          0x000000000040053c <foo+0x2c>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [   116] range 2d, 33
Packit Service 97d2fb
          0x000000000040053d <foo+0x2d>..
Packit Service 97d2fb
          0x0000000000400542 <foo+0x32>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [   139] range 40, 4f
Packit Service 97d2fb
          0x0000000000400550 <baz>..
Packit Service 97d2fb
          0x000000000040055e <baz+0xe>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 4f, 51
Packit Service 97d2fb
          0x000000000040055f <baz+0xf>..
Packit Service 97d2fb
          0x0000000000400560 <baz+0x10>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [   172] range 40, 50
Packit Service 97d2fb
          0x0000000000400550 <baz>..
Packit Service 97d2fb
          0x000000000040055f <baz+0xf>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
Packit Service 97d2fb
 CU [   21c] base: 000000000000000000
Packit Service 97d2fb
 [   195] range 400410, 400424
Packit Service 97d2fb
          0x0000000000400410 <main>..
Packit Service 97d2fb
          0x0000000000400423 <main+0x13>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 400424, 400430
Packit Service 97d2fb
          0x0000000000400424 <main+0x14>..
Packit Service 97d2fb
          0x000000000040042f <main+0x1f>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [   1ce] range 400410, 400428
Packit Service 97d2fb
          0x0000000000400410 <main>..
Packit Service 97d2fb
          0x0000000000400427 <main+0x17>
Packit Service 97d2fb
           [ 0] reg4
Packit Service 97d2fb
          range 400428, 400430
Packit Service 97d2fb
          0x0000000000400428 <main+0x18>..
Packit Service 97d2fb
          0x000000000040042f <main+0x1f>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg4
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [   207] range 400421, 400428
Packit Service 97d2fb
          0x0000000000400421 <main+0x11>..
Packit Service 97d2fb
          0x0000000000400427 <main+0x17>
Packit Service 97d2fb
           [ 0] reg0
Packit Service 97d2fb
 [   22a] range 400570, 400578
Packit Service 97d2fb
          0x0000000000400570 <calc>..
Packit Service 97d2fb
          0x0000000000400577 <calc+0x7>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 400578, 40059b
Packit Service 97d2fb
          0x0000000000400578 <calc+0x8>..
Packit Service 97d2fb
          0x000000000040059a <calc+0x2a>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [   263] range 400588, 400593
Packit Service 97d2fb
          0x0000000000400588 <calc+0x18>..
Packit Service 97d2fb
          0x0000000000400592 <calc+0x22>
Packit Service 97d2fb
           [ 0] reg0
Packit Service 97d2fb
 [   286] range 400588, 40058a
Packit Service 97d2fb
          0x0000000000400588 <calc+0x18>..
Packit Service 97d2fb
          0x0000000000400589 <calc+0x19>
Packit Service 97d2fb
           [ 0] reg1
Packit Service 97d2fb
          range 40058a, 40058f
Packit Service 97d2fb
          0x000000000040058a <calc+0x1a>..
Packit Service 97d2fb
          0x000000000040058e <calc+0x1e>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 40058f, 400593
Packit Service 97d2fb
          0x000000000040058f <calc+0x1f>..
Packit Service 97d2fb
          0x0000000000400592 <calc+0x22>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] deref_size 1
Packit Service 97d2fb
           [ 5] const1u 56
Packit Service 97d2fb
           [ 7] shl
Packit Service 97d2fb
           [ 8] const1u 56
Packit Service 97d2fb
           [10] shra
Packit Service 97d2fb
           [11] stack_value
Packit Service 97d2fb
 [   2da] range 400588, 40058a
Packit Service 97d2fb
          0x0000000000400588 <calc+0x18>..
Packit Service 97d2fb
          0x0000000000400589 <calc+0x19>
Packit Service 97d2fb
           [ 0] reg1
Packit Service 97d2fb
          range 40058a, 400593
Packit Service 97d2fb
          0x000000000040058a <calc+0x1a>..
Packit Service 97d2fb
          0x0000000000400592 <calc+0x22>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# Split DWARF5 variant. Note that the .debug_loclists moved to the .dwo file
Packit Service 97d2fb
# and now uses an index and addrx indirections.
Packit Service 97d2fb
testfiles testfile-splitdwarf-5 testfile-hello5.dwo testfile-world5.dwo
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --dwarf-skeleton=testfile-splitdwarf-5 testfile-hello5.dwo testfile-world5.dwo <<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
testfile-hello5.dwo:
Packit Service 97d2fb
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [ 3] '.debug_loclists.dwo' at offset 0x236:
Packit Service 97d2fb
Table at Offset 0x0:
Packit Service 97d2fb
Packit Service 97d2fb
 Length:              125
Packit Service 97d2fb
 DWARF version:         5
Packit Service 97d2fb
 Address size:          8
Packit Service 97d2fb
 Segment size:          0
Packit Service 97d2fb
 Offset entries:        9
Packit Service 97d2fb
 CU [    14] base: 0x0000000000401160 <foo>
Packit Service 97d2fb
Packit Service 97d2fb
  Offsets starting at 0xc:
Packit Service 97d2fb
   [     0] 0x24
Packit Service 97d2fb
   [     1] 0x32
Packit Service 97d2fb
   [     2] 0x39
Packit Service 97d2fb
   [     3] 0x3f
Packit Service 97d2fb
   [     4] 0x4a
Packit Service 97d2fb
   [     5] 0x55
Packit Service 97d2fb
   [     6] 0x5b
Packit Service 97d2fb
   [     7] 0x61
Packit Service 97d2fb
   [     8] 0x6f
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 30, Index: 24
Packit Service 97d2fb
    startx_length f, a
Packit Service 97d2fb
      0x0000000000401160 <foo>..
Packit Service 97d2fb
      0x0000000000401169 <foo+0x9>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length 0, 2a
Packit Service 97d2fb
      0x000000000040116a <foo+0xa>..
Packit Service 97d2fb
      0x0000000000401193 <foo+0x33>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 3e, Index: 32
Packit Service 97d2fb
    startx_length 11, 12
Packit Service 97d2fb
      0x000000000040117b <foo+0x1b>..
Packit Service 97d2fb
      0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
        [ 0] addrx [18] 0x404038 <m>
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 45, Index: 39
Packit Service 97d2fb
    startx_length 11, 6
Packit Service 97d2fb
      0x000000000040117b <foo+0x1b>..
Packit Service 97d2fb
      0x0000000000401180 <foo+0x20>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 4b, Index: 3f
Packit Service 97d2fb
    startx_length 11, c
Packit Service 97d2fb
      0x000000000040117b <foo+0x1b>..
Packit Service 97d2fb
      0x0000000000401186 <foo+0x26>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length 1, 4
Packit Service 97d2fb
      0x0000000000401189 <foo+0x29>..
Packit Service 97d2fb
      0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 56, Index: 4a
Packit Service 97d2fb
    startx_length 4, 6
Packit Service 97d2fb
      0x0000000000401181 <foo+0x21>..
Packit Service 97d2fb
      0x0000000000401186 <foo+0x26>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length 1, 4
Packit Service 97d2fb
      0x0000000000401189 <foo+0x29>..
Packit Service 97d2fb
      0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 61, Index: 55
Packit Service 97d2fb
    startx_length 4, c
Packit Service 97d2fb
      0x0000000000401181 <foo+0x21>..
Packit Service 97d2fb
      0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 67, Index: 5b
Packit Service 97d2fb
    startx_length 2, 6
Packit Service 97d2fb
      0x000000000040118d <foo+0x2d>..
Packit Service 97d2fb
      0x0000000000401192 <foo+0x32>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 6d, Index: 61
Packit Service 97d2fb
    startx_length 9, f
Packit Service 97d2fb
      0x00000000004011a0 <baz>..
Packit Service 97d2fb
      0x00000000004011ae <baz+0xe>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length 5, 2
Packit Service 97d2fb
      0x00000000004011af <baz+0xf>..
Packit Service 97d2fb
      0x00000000004011b0 <baz+0x10>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 7b, Index: 6f
Packit Service 97d2fb
    startx_length 9, 10
Packit Service 97d2fb
      0x00000000004011a0 <baz>..
Packit Service 97d2fb
      0x00000000004011af <baz+0xf>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
Packit Service 97d2fb
testfile-world5.dwo:
Packit Service 97d2fb
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [ 3] '.debug_loclists.dwo' at offset 0x217:
Packit Service 97d2fb
Table at Offset 0x0:
Packit Service 97d2fb
Packit Service 97d2fb
 Length:              128
Packit Service 97d2fb
 DWARF version:         5
Packit Service 97d2fb
 Address size:          8
Packit Service 97d2fb
 Segment size:          0
Packit Service 97d2fb
 Offset entries:        7
Packit Service 97d2fb
 CU [    14] base: 000000000000000000
Packit Service 97d2fb
Packit Service 97d2fb
  Offsets starting at 0xc:
Packit Service 97d2fb
   [     0] 0x1c
Packit Service 97d2fb
   [     1] 0x2a
Packit Service 97d2fb
   [     2] 0x38
Packit Service 97d2fb
   [     3] 0x3e
Packit Service 97d2fb
   [     4] 0x4c
Packit Service 97d2fb
   [     5] 0x52
Packit Service 97d2fb
   [     6] 0x6d
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 28, Index: 1c
Packit Service 97d2fb
    startx_length 2, 14
Packit Service 97d2fb
      0x0000000000401060 <main>..
Packit Service 97d2fb
      0x0000000000401073 <main+0x13>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length 4, c
Packit Service 97d2fb
      0x0000000000401074 <main+0x14>..
Packit Service 97d2fb
      0x000000000040107f <main+0x1f>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 36, Index: 2a
Packit Service 97d2fb
    startx_length 2, 18
Packit Service 97d2fb
      0x0000000000401060 <main>..
Packit Service 97d2fb
      0x0000000000401077 <main+0x17>
Packit Service 97d2fb
        [ 0] reg4
Packit Service 97d2fb
    startx_length 7, 6
Packit Service 97d2fb
      0x0000000000401078 <main+0x18>..
Packit Service 97d2fb
      0x000000000040107d <main+0x1d>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg4
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 44, Index: 38
Packit Service 97d2fb
    startx_length 3, 7
Packit Service 97d2fb
      0x0000000000401071 <main+0x11>..
Packit Service 97d2fb
      0x0000000000401077 <main+0x17>
Packit Service 97d2fb
        [ 0] reg0
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 4a, Index: 3e
Packit Service 97d2fb
    startx_length d, 8
Packit Service 97d2fb
      0x00000000004011c0 <calc>..
Packit Service 97d2fb
      0x00000000004011c7 <calc+0x7>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length e, 23
Packit Service 97d2fb
      0x00000000004011c8 <calc+0x8>..
Packit Service 97d2fb
      0x00000000004011ea <calc+0x2a>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 58, Index: 4c
Packit Service 97d2fb
    startx_length f, b
Packit Service 97d2fb
      0x00000000004011d8 <calc+0x18>..
Packit Service 97d2fb
      0x00000000004011e2 <calc+0x22>
Packit Service 97d2fb
        [ 0] reg0
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 5e, Index: 52
Packit Service 97d2fb
    startx_length f, 2
Packit Service 97d2fb
      0x00000000004011d8 <calc+0x18>..
Packit Service 97d2fb
      0x00000000004011d9 <calc+0x19>
Packit Service 97d2fb
        [ 0] reg1
Packit Service 97d2fb
    startx_length 10, 5
Packit Service 97d2fb
      0x00000000004011da <calc+0x1a>..
Packit Service 97d2fb
      0x00000000004011de <calc+0x1e>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    startx_length 0, 4
Packit Service 97d2fb
      0x00000000004011df <calc+0x1f>..
Packit Service 97d2fb
      0x00000000004011e2 <calc+0x22>
Packit Service 97d2fb
        [ 0] entry_value:
Packit Service 97d2fb
             [ 0] reg5
Packit Service 97d2fb
        [ 3] deref_size 1
Packit Service 97d2fb
        [ 5] const1u 56
Packit Service 97d2fb
        [ 7] shl
Packit Service 97d2fb
        [ 8] const1u 56
Packit Service 97d2fb
        [10] shra
Packit Service 97d2fb
        [11] stack_value
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
  Offset: 79, Index: 6d
Packit Service 97d2fb
    startx_length f, 2
Packit Service 97d2fb
      0x00000000004011d8 <calc+0x18>..
Packit Service 97d2fb
      0x00000000004011d9 <calc+0x19>
Packit Service 97d2fb
        [ 0] reg1
Packit Service 97d2fb
    startx_length 10, 9
Packit Service 97d2fb
      0x00000000004011da <calc+0x1a>..
Packit Service 97d2fb
      0x00000000004011e2 <calc+0x22>
Packit Service 97d2fb
        [ 0] reg5
Packit Service 97d2fb
    end_of_list
Packit Service 97d2fb
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# GNU DebugFission split-dwarf variant. Still uses .debug_loc, but now in
Packit Service 97d2fb
# .dwo file, with somewhat similar, but different encoding from DWARF5.
Packit Service 97d2fb
testfiles testfile-splitdwarf-4 testfile-hello4.dwo testfile-world4.dwo
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --dwarf-skeleton=testfile-splitdwarf-4 testfile-hello4.dwo testfile-world4.dwo <<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
testfile-hello4.dwo:
Packit Service 97d2fb
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [ 3] '.debug_loc.dwo' at offset 0x253:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 0x0000000000401160 <foo>
Packit Service 97d2fb
 [     0] range 401160, 40116a
Packit Service 97d2fb
          0x0000000000401160 <foo>..
Packit Service 97d2fb
          0x0000000000401169 <foo+0x9>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 40116a, 401194
Packit Service 97d2fb
          0x000000000040116a <foo+0xa>..
Packit Service 97d2fb
          0x0000000000401193 <foo+0x33>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [    16] range 40117b, 40118d
Packit Service 97d2fb
          0x000000000040117b <foo+0x1b>..
Packit Service 97d2fb
          0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
           [ 0] GNU_addr_index [18] 0x404038 <m>
Packit Service 97d2fb
 [    21] range 40117b, 401181
Packit Service 97d2fb
          0x000000000040117b <foo+0x1b>..
Packit Service 97d2fb
          0x0000000000401180 <foo+0x20>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    2b] range 40117b, 401187
Packit Service 97d2fb
          0x000000000040117b <foo+0x1b>..
Packit Service 97d2fb
          0x0000000000401186 <foo+0x26>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 401189, 40118d
Packit Service 97d2fb
          0x0000000000401189 <foo+0x29>..
Packit Service 97d2fb
          0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    3e] range 401181, 401187
Packit Service 97d2fb
          0x0000000000401181 <foo+0x21>..
Packit Service 97d2fb
          0x0000000000401186 <foo+0x26>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 401189, 40118d
Packit Service 97d2fb
          0x0000000000401189 <foo+0x29>..
Packit Service 97d2fb
          0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    51] range 401181, 40118d
Packit Service 97d2fb
          0x0000000000401181 <foo+0x21>..
Packit Service 97d2fb
          0x000000000040118c <foo+0x2c>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    5b] range 40118d, 401193
Packit Service 97d2fb
          0x000000000040118d <foo+0x2d>..
Packit Service 97d2fb
          0x0000000000401192 <foo+0x32>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    65] range 4011a0, 4011af
Packit Service 97d2fb
          0x00000000004011a0 <baz>..
Packit Service 97d2fb
          0x00000000004011ae <baz+0xe>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 4011af, 4011b1
Packit Service 97d2fb
          0x00000000004011af <baz+0xf>..
Packit Service 97d2fb
          0x00000000004011b0 <baz+0x10>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [    7b] range 4011a0, 4011b0
Packit Service 97d2fb
          0x00000000004011a0 <baz>..
Packit Service 97d2fb
          0x00000000004011af <baz+0xf>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
Packit Service 97d2fb
testfile-world4.dwo:
Packit Service 97d2fb
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [ 3] '.debug_loc.dwo' at offset 0x225:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 000000000000000000
Packit Service 97d2fb
 [     0] range 401060, 401074
Packit Service 97d2fb
          0x0000000000401060 <main>..
Packit Service 97d2fb
          0x0000000000401073 <main+0x13>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 401074, 401080
Packit Service 97d2fb
          0x0000000000401074 <main+0x14>..
Packit Service 97d2fb
          0x000000000040107f <main+0x1f>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [    16] range 401060, 401078
Packit Service 97d2fb
          0x0000000000401060 <main>..
Packit Service 97d2fb
          0x0000000000401077 <main+0x17>
Packit Service 97d2fb
           [ 0] reg4
Packit Service 97d2fb
          range 401078, 40107e
Packit Service 97d2fb
          0x0000000000401078 <main+0x18>..
Packit Service 97d2fb
          0x000000000040107d <main+0x1d>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg4
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [    2c] range 401071, 401078
Packit Service 97d2fb
          0x0000000000401071 <main+0x11>..
Packit Service 97d2fb
          0x0000000000401077 <main+0x17>
Packit Service 97d2fb
           [ 0] reg0
Packit Service 97d2fb
 [    36] range 4011c0, 4011c8
Packit Service 97d2fb
          0x00000000004011c0 <calc>..
Packit Service 97d2fb
          0x00000000004011c7 <calc+0x7>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 4011c8, 4011eb
Packit Service 97d2fb
          0x00000000004011c8 <calc+0x8>..
Packit Service 97d2fb
          0x00000000004011ea <calc+0x2a>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
 [    4c] range 4011d8, 4011e3
Packit Service 97d2fb
          0x00000000004011d8 <calc+0x18>..
Packit Service 97d2fb
          0x00000000004011e2 <calc+0x22>
Packit Service 97d2fb
           [ 0] reg0
Packit Service 97d2fb
 [    56] range 4011d8, 4011da
Packit Service 97d2fb
          0x00000000004011d8 <calc+0x18>..
Packit Service 97d2fb
          0x00000000004011d9 <calc+0x19>
Packit Service 97d2fb
           [ 0] reg1
Packit Service 97d2fb
          range 4011da, 4011df
Packit Service 97d2fb
          0x00000000004011da <calc+0x1a>..
Packit Service 97d2fb
          0x00000000004011de <calc+0x1e>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 4011df, 4011e3
Packit Service 97d2fb
          0x00000000004011df <calc+0x1f>..
Packit Service 97d2fb
          0x00000000004011e2 <calc+0x22>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] deref_size 1
Packit Service 97d2fb
           [ 5] const1u 56
Packit Service 97d2fb
           [ 7] shl
Packit Service 97d2fb
           [ 8] const1u 56
Packit Service 97d2fb
           [10] shra
Packit Service 97d2fb
           [11] stack_value
Packit Service 97d2fb
 [    7d] range 4011d8, 4011da
Packit Service 97d2fb
          0x00000000004011d8 <calc+0x18>..
Packit Service 97d2fb
          0x00000000004011d9 <calc+0x19>
Packit Service 97d2fb
           [ 0] reg1
Packit Service 97d2fb
          range 4011da, 4011e3
Packit Service 97d2fb
          0x00000000004011da <calc+0x1a>..
Packit Service 97d2fb
          0x00000000004011e2 <calc+0x22>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# Partial dwarf-4 and partial GNU DebugFission split-dwarf.
Packit Service 97d2fb
#
Packit Service 97d2fb
# = popcount.c =
Packit Service 97d2fb
#
Packit Service 97d2fb
# int popcount (unsigned char u)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   int c = 0;
Packit Service 97d2fb
#   while (u != 0)
Packit Service 97d2fb
#     {
Packit Service 97d2fb
#       if ((u & 1) == 1)
Packit Service 97d2fb
#         c++;
Packit Service 97d2fb
#       u >>= 1;
Packit Service 97d2fb
#     }
Packit Service 97d2fb
#   return c;
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# = splitdwarf4-not-split4.c =
Packit Service 97d2fb
#
Packit Service 97d2fb
# extern int popcount (unsigned char);
Packit Service 97d2fb
#
Packit Service 97d2fb
# int main (int argc, char **argv)
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   int i;
Packit Service 97d2fb
#   int p = argc;
Packit Service 97d2fb
#   for (i = 0; i < argc;  ++i)
Packit Service 97d2fb
#     p += popcount (argv[i][0]);
Packit Service 97d2fb
#   i += p;
Packit Service 97d2fb
#   return i;
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# gcc -gdwarf-4 -O2 -c popcount.c
Packit Service 97d2fb
# gcc -gdwarf-4 -gsplit-dwarf -O2 -c splitdwarf4-not-split4.c
Packit Service 97d2fb
# gcc -o testfile-splitdwarf4-not-split4 splitdwarf4-not-split4.o popcount.o
Packit Service 97d2fb
# eu-strip -f testfile-splitdwarf4-not-split4.debug \
Packit Service 97d2fb
#   testfile-splitdwarf4-not-split4
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfile-splitdwarf4-not-split4.debug
Packit Service 97d2fb
testfiles splitdwarf4-not-split4.dwo
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info+ --debug-dump=loc testfile-splitdwarf4-not-split4.debug <<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [28] '.debug_info' at offset 0x330:
Packit Service 97d2fb
 [Offset]
Packit Service 97d2fb
 Compilation unit at offset 0:
Packit Service 97d2fb
 Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
Packit Service 97d2fb
 Unit type: skeleton (4), Unit id: 0x3d909d7bd0e69c0b
Packit Service 97d2fb
 [     b]  compile_unit         abbrev: 1
Packit Service 97d2fb
           ranges               (sec_offset) range list [     0]
Packit Service 97d2fb
           low_pc               (addr) 000000000000000000
Packit Service 97d2fb
           stmt_list            (sec_offset) 0
Packit Service 97d2fb
           GNU_dwo_name         (strp) "splitdwarf4-not-split4.dwo"
Packit Service 97d2fb
           comp_dir             (strp) "/tmp"
Packit Service 97d2fb
           GNU_pubnames         (flag_present) yes
Packit Service 97d2fb
           GNU_addr_base        (sec_offset) address base [     0]
Packit Service 97d2fb
           GNU_dwo_id           (data8) 0x3d909d7bd0e69c0b
Packit Service 97d2fb
           GNU_ranges_base      (sec_offset) 0
Packit Service 97d2fb
 Split compilation unit at offset 0:
Packit Service 97d2fb
 Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
Packit Service 97d2fb
 Unit type: skeleton (4), Unit id: 0x3d909d7bd0e69c0b
Packit Service 97d2fb
 {     b}  compile_unit         abbrev: 1
Packit Service 97d2fb
           producer             (GNU_str_index) "GNU C17 9.0.0 20180528 (experimental) -mtune=generic -march=x86-64 -gdwarf-4 -gsplit-dwarf -O2"
Packit Service 97d2fb
           language             (data1) C99 (12)
Packit Service 97d2fb
           name                 (GNU_str_index) "splitdwarf4-not-split4.c"
Packit Service 97d2fb
           comp_dir             (GNU_str_index) "/tmp"
Packit Service 97d2fb
           GNU_dwo_id           (data8) 0x3d909d7bd0e69c0b
Packit Service 97d2fb
 {    18}    subprogram           abbrev: 2
Packit Service 97d2fb
             external             (flag_present) yes
Packit Service 97d2fb
             name                 (GNU_str_index) "main"
Packit Service 97d2fb
             decl_file            (data1) splitdwarf4-not-split4.c (1)
Packit Service 97d2fb
             decl_line            (data1) 3
Packit Service 97d2fb
             decl_column          (data1) 5
Packit Service 97d2fb
             prototyped           (flag_present) yes
Packit Service 97d2fb
             type                 (ref4) {    6d}
Packit Service 97d2fb
             low_pc               (GNU_addr_index) [4] 0x0000000000401050 <main>
Packit Service 97d2fb
             high_pc              (data8) 76 (0x000000000040109c <_start>)
Packit Service 97d2fb
             frame_base           (exprloc) 
Packit Service 97d2fb
              [ 0] call_frame_cfa
Packit Service 97d2fb
             GNU_all_call_sites   (flag_present) yes
Packit Service 97d2fb
             sibling              (ref4) {    6d}
Packit Service 97d2fb
 {    30}      formal_parameter     abbrev: 3
Packit Service 97d2fb
               name                 (GNU_str_index) "argc"
Packit Service 97d2fb
               decl_file            (data1) splitdwarf4-not-split4.c (1)
Packit Service 97d2fb
               decl_line            (data1) 3
Packit Service 97d2fb
               decl_column          (data1) 15
Packit Service 97d2fb
               type                 (ref4) {    6d}
Packit Service 97d2fb
               location             (sec_offset) location list [     0]
Packit Service 97d2fb
 {    3d}      formal_parameter     abbrev: 3
Packit Service 97d2fb
               name                 (GNU_str_index) "argv"
Packit Service 97d2fb
               decl_file            (data1) splitdwarf4-not-split4.c (1)
Packit Service 97d2fb
               decl_line            (data1) 3
Packit Service 97d2fb
               decl_column          (data1) 28
Packit Service 97d2fb
               type                 (ref4) {    74}
Packit Service 97d2fb
               location             (sec_offset) location list [    28]
Packit Service 97d2fb
 {    4a}      variable             abbrev: 4
Packit Service 97d2fb
               name                 (string) "i"
Packit Service 97d2fb
               decl_file            (data1) splitdwarf4-not-split4.c (1)
Packit Service 97d2fb
               decl_line            (data1) 5
Packit Service 97d2fb
               decl_column          (data1) 7
Packit Service 97d2fb
               type                 (ref4) {    6d}
Packit Service 97d2fb
               location             (sec_offset) location list [    47]
Packit Service 97d2fb
 {    58}      variable             abbrev: 4
Packit Service 97d2fb
               name                 (string) "p"
Packit Service 97d2fb
               decl_file            (data1) splitdwarf4-not-split4.c (1)
Packit Service 97d2fb
               decl_line            (data1) 6
Packit Service 97d2fb
               decl_column          (data1) 7
Packit Service 97d2fb
               type                 (ref4) {    6d}
Packit Service 97d2fb
               location             (sec_offset) location list [    73]
Packit Service 97d2fb
 {    66}      GNU_call_site        abbrev: 5
Packit Service 97d2fb
               low_pc               (GNU_addr_index) [1] 0x000000000040107f <main+0x2f>
Packit Service 97d2fb
               abstract_origin      (ref4) {    84}
Packit Service 97d2fb
 {    6d}    base_type            abbrev: 6
Packit Service 97d2fb
             byte_size            (data1) 4
Packit Service 97d2fb
             encoding             (data1) signed (5)
Packit Service 97d2fb
             name                 (string) "int"
Packit Service 97d2fb
 {    74}    pointer_type         abbrev: 7
Packit Service 97d2fb
             byte_size            (data1) 8
Packit Service 97d2fb
             type                 (ref4) {    7a}
Packit Service 97d2fb
 {    7a}    pointer_type         abbrev: 7
Packit Service 97d2fb
             byte_size            (data1) 8
Packit Service 97d2fb
             type                 (ref4) {    80}
Packit Service 97d2fb
 {    80}    base_type            abbrev: 8
Packit Service 97d2fb
             byte_size            (data1) 1
Packit Service 97d2fb
             encoding             (data1) signed_char (6)
Packit Service 97d2fb
             name                 (GNU_str_index) "char"
Packit Service 97d2fb
 {    84}    subprogram           abbrev: 9
Packit Service 97d2fb
             external             (flag_present) yes
Packit Service 97d2fb
             declaration          (flag_present) yes
Packit Service 97d2fb
             linkage_name         (GNU_str_index) "popcount"
Packit Service 97d2fb
             name                 (GNU_str_index) "popcount"
Packit Service 97d2fb
             decl_file            (data1) splitdwarf4-not-split4.c (1)
Packit Service 97d2fb
             decl_line            (data1) 1
Packit Service 97d2fb
             decl_column          (data1) 12
Packit Service 97d2fb
 Compilation unit at offset 52:
Packit Service 97d2fb
 Version: 4, Abbreviation section offset: 29, Address size: 8, Offset size: 4
Packit Service 97d2fb
 [    3f]  compile_unit         abbrev: 1
Packit Service 97d2fb
           producer             (strp) "GNU C17 9.0.0 20180528 (experimental) -mtune=generic -march=x86-64 -gdwarf-4 -O2"
Packit Service 97d2fb
           language             (data1) C99 (12)
Packit Service 97d2fb
           name                 (strp) "popcount.c"
Packit Service 97d2fb
           comp_dir             (strp) "/tmp"
Packit Service 97d2fb
           low_pc               (addr) 0x0000000000401180 <popcount>
Packit Service 97d2fb
           high_pc              (data8) 33 (0x00000000004011a1)
Packit Service 97d2fb
           stmt_list            (sec_offset) 145
Packit Service 97d2fb
 [    61]    subprogram           abbrev: 2
Packit Service 97d2fb
             external             (flag_present) yes
Packit Service 97d2fb
             name                 (strp) "popcount"
Packit Service 97d2fb
             decl_file            (data1) popcount.c (1)
Packit Service 97d2fb
             decl_line            (data1) 1
Packit Service 97d2fb
             decl_column          (data1) 5
Packit Service 97d2fb
             prototyped           (flag_present) yes
Packit Service 97d2fb
             type                 (ref4) [    a0]
Packit Service 97d2fb
             low_pc               (addr) 0x0000000000401180 <popcount>
Packit Service 97d2fb
             high_pc              (data8) 33 (0x00000000004011a1)
Packit Service 97d2fb
             frame_base           (exprloc) 
Packit Service 97d2fb
              [ 0] call_frame_cfa
Packit Service 97d2fb
             GNU_all_call_sites   (flag_present) yes
Packit Service 97d2fb
             sibling              (ref4) [    a0]
Packit Service 97d2fb
 [    83]      formal_parameter     abbrev: 3
Packit Service 97d2fb
               name                 (string) "u"
Packit Service 97d2fb
               decl_file            (data1) popcount.c (1)
Packit Service 97d2fb
               decl_line            (data1) 1
Packit Service 97d2fb
               decl_column          (data1) 29
Packit Service 97d2fb
               type                 (ref4) [    a7]
Packit Service 97d2fb
               location             (sec_offset) location list [     0]
Packit Service 97d2fb
 [    91]      variable             abbrev: 4
Packit Service 97d2fb
               name                 (string) "c"
Packit Service 97d2fb
               decl_file            (data1) popcount.c (1)
Packit Service 97d2fb
               decl_line            (data1) 3
Packit Service 97d2fb
               decl_column          (data1) 7
Packit Service 97d2fb
               type                 (ref4) [    a0]
Packit Service 97d2fb
               location             (sec_offset) location list [    60]
Packit Service 97d2fb
 [    a0]    base_type            abbrev: 5
Packit Service 97d2fb
             byte_size            (data1) 4
Packit Service 97d2fb
             encoding             (data1) signed (5)
Packit Service 97d2fb
             name                 (string) "int"
Packit Service 97d2fb
 [    a7]    base_type            abbrev: 6
Packit Service 97d2fb
             byte_size            (data1) 1
Packit Service 97d2fb
             encoding             (data1) unsigned_char (8)
Packit Service 97d2fb
             name                 (strp) "unsigned char"
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [32] '.debug_loc' at offset 0x5ef:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [    3f] base: 0x0000000000401180 <popcount>
Packit Service 97d2fb
 [     0] range 0, 9
Packit Service 97d2fb
          0x0000000000401180 <popcount>..
Packit Service 97d2fb
          0x0000000000401188 <popcount+0x8>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 9, 1b
Packit Service 97d2fb
          0x0000000000401189 <popcount+0x9>..
Packit Service 97d2fb
          0x000000000040119a <popcount+0x1a>
Packit Service 97d2fb
           [ 0] reg1
Packit Service 97d2fb
          range 1b, 1d
Packit Service 97d2fb
          0x000000000040119b <popcount+0x1b>..
Packit Service 97d2fb
          0x000000000040119c <popcount+0x1c>
Packit Service 97d2fb
           [ 0] breg1 0
Packit Service 97d2fb
           [ 2] lit1
Packit Service 97d2fb
           [ 3] shr
Packit Service 97d2fb
           [ 4] stack_value
Packit Service 97d2fb
          range 1d, 21
Packit Service 97d2fb
          0x000000000040119d <popcount+0x1d>..
Packit Service 97d2fb
          0x00000000004011a0 <popcount+0x20>
Packit Service 97d2fb
           [ 0] reg1
Packit Service 97d2fb
 [    60] range 0, 9
Packit Service 97d2fb
          0x0000000000401180 <popcount>..
Packit Service 97d2fb
          0x0000000000401188 <popcount+0x8>
Packit Service 97d2fb
           [ 0] lit0
Packit Service 97d2fb
           [ 1] stack_value
Packit Service 97d2fb
          range 9, 20
Packit Service 97d2fb
          0x0000000000401189 <popcount+0x9>..
Packit Service 97d2fb
          0x000000000040119f <popcount+0x1f>
Packit Service 97d2fb
           [ 0] reg0
Packit Service 97d2fb
          range 20, 21
Packit Service 97d2fb
          0x00000000004011a0 <popcount+0x20>..
Packit Service 97d2fb
          0x00000000004011a0 <popcount+0x20>
Packit Service 97d2fb
           [ 0] lit0
Packit Service 97d2fb
           [ 1] stack_value
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf --dwarf-skeleton=testfile-splitdwarf4-not-split4.debug --debug-dump=loc splitdwarf4-not-split4.dwo <<\EOF
Packit Service 97d2fb
Packit Service 97d2fb
DWARF section [ 3] '.debug_loc.dwo' at offset 0x15b:
Packit Service 97d2fb
Packit Service 97d2fb
 CU [     b] base: 000000000000000000
Packit Service 97d2fb
 [     0] range 401050, 40106e
Packit Service 97d2fb
          0x0000000000401050 <main>..
Packit Service 97d2fb
          0x000000000040106d <main+0x1d>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 40106e, 401086
Packit Service 97d2fb
          0x000000000040106e <main+0x1e>..
Packit Service 97d2fb
          0x0000000000401085 <main+0x35>
Packit Service 97d2fb
           [ 0] reg12
Packit Service 97d2fb
          range 401086, 401095
Packit Service 97d2fb
          0x0000000000401086 <main+0x36>..
Packit Service 97d2fb
          0x0000000000401094 <main+0x44>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg5
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
          range 401095, 40109c
Packit Service 97d2fb
          0x0000000000401095 <main+0x45>..
Packit Service 97d2fb
          0x000000000040109b <main+0x4b>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
 [    28] range 401050, 40106e
Packit Service 97d2fb
          0x0000000000401050 <main>..
Packit Service 97d2fb
          0x000000000040106d <main+0x1d>
Packit Service 97d2fb
           [ 0] reg4
Packit Service 97d2fb
          range 40106e, 401095
Packit Service 97d2fb
          0x000000000040106e <main+0x1e>..
Packit Service 97d2fb
          0x0000000000401094 <main+0x44>
Packit Service 97d2fb
           [ 0] GNU_entry_value:
Packit Service 97d2fb
                [ 0] reg4
Packit Service 97d2fb
           [ 3] stack_value
Packit Service 97d2fb
          range 401095, 40109c
Packit Service 97d2fb
          0x0000000000401095 <main+0x45>..
Packit Service 97d2fb
          0x000000000040109b <main+0x4b>
Packit Service 97d2fb
           [ 0] reg4
Packit Service 97d2fb
 [    47] range 401050, 40106e
Packit Service 97d2fb
          0x0000000000401050 <main>..
Packit Service 97d2fb
          0x000000000040106d <main+0x1d>
Packit Service 97d2fb
           [ 0] lit0
Packit Service 97d2fb
           [ 1] stack_value
Packit Service 97d2fb
          range 401086, 40108e
Packit Service 97d2fb
          0x0000000000401086 <main+0x36>..
Packit Service 97d2fb
          0x000000000040108d <main+0x3d>
Packit Service 97d2fb
           [ 0] breg12 0
Packit Service 97d2fb
           [ 2] breg6 0
Packit Service 97d2fb
           [ 4] plus
Packit Service 97d2fb
           [ 5] stack_value
Packit Service 97d2fb
          range 40108e, 401095
Packit Service 97d2fb
          0x000000000040108e <main+0x3e>..
Packit Service 97d2fb
          0x0000000000401094 <main+0x44>
Packit Service 97d2fb
           [ 0] reg0
Packit Service 97d2fb
          range 401095, 40109c
Packit Service 97d2fb
          0x0000000000401095 <main+0x45>..
Packit Service 97d2fb
          0x000000000040109b <main+0x4b>
Packit Service 97d2fb
           [ 0] lit0
Packit Service 97d2fb
           [ 1] stack_value
Packit Service 97d2fb
 [    73] range 401050, 40106e
Packit Service 97d2fb
          0x0000000000401050 <main>..
Packit Service 97d2fb
          0x000000000040106d <main+0x1d>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
          range 40106e, 401090
Packit Service 97d2fb
          0x000000000040106e <main+0x1e>..
Packit Service 97d2fb
          0x000000000040108f <main+0x3f>
Packit Service 97d2fb
           [ 0] reg6
Packit Service 97d2fb
          range 401095, 40109c
Packit Service 97d2fb
          0x0000000000401095 <main+0x45>..
Packit Service 97d2fb
          0x000000000040109b <main+0x4b>
Packit Service 97d2fb
           [ 0] reg5
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
exit 0