summaryrefslogtreecommitdiff
path: root/tests/run-readelf-discr.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-readelf-discr.sh')
-rwxr-xr-xtests/run-readelf-discr.sh337
1 files changed, 337 insertions, 0 deletions
diff --git a/tests/run-readelf-discr.sh b/tests/run-readelf-discr.sh
new file mode 100755
index 00000000..dc84d827
--- /dev/null
+++ b/tests/run-readelf-discr.sh
@@ -0,0 +1,337 @@
+#! /bin/sh
+# Copyright (C) 2019 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
+
+# = rng.ads =
+# package Rng is
+#
+# type Rec (I : Integer) is record
+# case I is
+# when Positive =>
+# case I is
+# when 1..15 | 17 | 23 =>
+# null;
+# when others =>
+# J : Integer;
+# end case;
+# when -52..-1 =>
+# Q: Integer;
+# when -64 =>
+# R: Boolean;
+# when others =>
+# null;
+# end case;
+# end record;
+#
+# R : Rec (1);
+#
+# end Rng;
+
+# = urng.ads =
+#
+# package Urng is
+#
+# type Unsigned is mod 65536;
+# type Rec (U : Unsigned) is record
+# case U is
+# when 17 | 23 | 32768..65535 =>
+# null;
+# when 256 =>
+# B: Boolean;
+# when others =>
+# I : Integer;
+# end case;
+# end record;
+#
+# R : Rec (1);
+#
+# end Urng;
+
+# gcc -c -g -fgnat-encodings=minimal -gstrict-dwarf rng.ads
+# eu-strip -g -f rng.debug rng.o
+# gcc -c -g -fgnat-encodings=minimal -gstrict-dwarf urng.ads
+# eu-strip -g -f urng.debug urng.o
+
+testfiles testfile-rng.debug testfile-urng.debug
+
+testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-rng.debug testfile-urng.debug <<EOF
+
+testfile-rng.debug:
+
+
+DWARF section [ 5] '.debug_info' at offset 0x40:
+ [Offset]
+ Compilation unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ [ b] compile_unit abbrev: 1
+ producer (strp) "GNU Ada 9.1.1 20190503 (Red Hat 9.1.1-1) -g -fgnat-encodings=minimal -gstrict-dwarf -mtune=generic -march=x86-64"
+ language (data1) Ada95 (13)
+ name (strp) "rng.ads"
+ comp_dir (strp) "/home/mark"
+ low_pc (addr) 000000000000000000
+ high_pc (data8) 2016 (0x00000000000007e0)
+ stmt_list (sec_offset) 0
+ [ 2d] structure_type abbrev: 2
+ name (strp) "rng__rec"
+ byte_size (exprloc)
+ [ 0] push_object_address
+ [ 1] deref_size 4
+ [ 3] call4 [ c6]
+ [ 8] plus_uconst 7
+ [10] const1s -4
+ [12] and
+ decl_file (data1) rng.ads (1)
+ decl_line (data1) 3
+ decl_column (data1) 9
+ sibling (ref4) [ ab]
+ [ 47] member abbrev: 3
+ name (string) "i"
+ decl_file (data1) rng.ads (1)
+ decl_line (data1) 3
+ decl_column (data1) 14
+ type (ref4) [ fe]
+ data_member_location (data1) 0
+ [ 52] variant_part abbrev: 4
+ discr (ref4) [ 47]
+ [ 57] variant abbrev: 5
+ discr_list (block1) range 1..2147483647
+ sibling (ref4) [ 81]
+ [ 64] variant_part abbrev: 4
+ discr (ref4) [ 47]
+ [ 69] variant abbrev: 6
+ discr_list (block1) range 1..15, label 17, label 23
+ [ 72] variant abbrev: 7
+ [ 73] member abbrev: 3
+ name (string) "j"
+ decl_file (data1) rng.ads (1)
+ decl_line (data1) 10
+ decl_column (data1) 19
+ type (ref4) [ fe]
+ data_member_location (data1) 4
+ [ 81] variant abbrev: 5
+ discr_list (block1) range -52..-1
+ sibling (ref4) [ 96]
+ [ 8a] member abbrev: 3
+ name (string) "q"
+ decl_file (data1) rng.ads (1)
+ decl_line (data1) 13
+ decl_column (data1) 13
+ type (ref4) [ fe]
+ data_member_location (data1) 4
+ [ 96] variant abbrev: 8
+ discr_value (sdata) -64
+ sibling (ref4) [ a8]
+ [ 9c] member abbrev: 3
+ name (string) "r"
+ decl_file (data1) rng.ads (1)
+ decl_line (data1) 15
+ decl_column (data1) 13
+ type (ref4) [ 105]
+ data_member_location (data1) 4
+ [ a8] variant abbrev: 9
+ [ ab] dwarf_procedure abbrev: 10
+ location (exprloc)
+ [ 0] dup
+ [ 1] lit0
+ [ 2] gt
+ [ 3] over
+ [ 4] lit15
+ [ 5] le
+ [ 6] and
+ [ 7] over
+ [ 8] lit17
+ [ 9] eq
+ [10] or
+ [11] over
+ [12] lit23
+ [13] eq
+ [14] or
+ [15] bra 22
+ [18] lit4
+ [19] skip 23
+ [22] lit0
+ [23] swap
+ [24] drop
+ [ c6] dwarf_procedure abbrev: 10
+ location (exprloc)
+ [ 0] dup
+ [ 1] lit0
+ [ 2] gt
+ [ 3] bra 36
+ [ 6] dup
+ [ 7] const1s -52
+ [ 9] lt
+ [10] over
+ [11] lit0
+ [12] ge
+ [13] or
+ [14] bra 21
+ [17] lit4
+ [18] skip 33
+ [21] dup
+ [22] const1s -64
+ [24] eq
+ [25] bra 32
+ [28] lit0
+ [29] skip 33
+ [32] lit4
+ [33] skip 52
+ [36] dup
+ [37] call4 [ ab]
+ [42] plus_uconst 3
+ [44] const1s -4
+ [46] and
+ [47] plus_uconst 3
+ [49] const1s -4
+ [51] and
+ [52] swap
+ [53] drop
+ [ fe] base_type abbrev: 11
+ byte_size (data1) 4
+ encoding (data1) signed (5)
+ name (strp) "integer"
+ artificial (flag_present) yes
+ [ 105] base_type abbrev: 12
+ byte_size (data1) 1
+ encoding (data1) boolean (2)
+ name (strp) "boolean"
+ [ 10c] variable abbrev: 13
+ name (strp) "rng__r"
+ decl_file (data1) rng.ads (1)
+ decl_line (data1) 21
+ decl_column (data1) 4
+ type (ref4) [ 2d]
+ external (flag_present) yes
+ location (exprloc)
+ [ 0] addr 0x7e4
+ [ 122] subprogram abbrev: 14
+ external (flag_present) yes
+ name (strp) "rng___elabs"
+ artificial (flag_present) yes
+ low_pc (addr) 0x0000000000000734
+ high_pc (data8) 22 (0x000000000000074a)
+ frame_base (exprloc)
+ [ 0] call_frame_cfa
+
+testfile-urng.debug:
+
+
+DWARF section [ 5] '.debug_info' at offset 0x40:
+ [Offset]
+ Compilation unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ [ b] compile_unit abbrev: 1
+ producer (strp) "GNU Ada 9.1.1 20190503 (Red Hat 9.1.1-1) -g -fgnat-encodings=minimal -gstrict-dwarf -mtune=generic -march=x86-64"
+ language (data1) Ada95 (13)
+ name (strp) "urng.ads"
+ comp_dir (strp) "/home/mark"
+ low_pc (addr) 000000000000000000
+ high_pc (data8) 977 (0x00000000000003d1)
+ stmt_list (sec_offset) 0
+ [ 2d] base_type abbrev: 2
+ byte_size (data1) 2
+ encoding (data1) unsigned (7)
+ name (strp) "urng__unsigned"
+ [ 34] structure_type abbrev: 3
+ name (strp) "urng__rec"
+ byte_size (exprloc)
+ [ 0] push_object_address
+ [ 1] deref_size 2
+ [ 3] call4 [ 8d]
+ [ 8] plus_uconst 7
+ [10] const1s -4
+ [12] and
+ decl_file (data1) urng.ads (1)
+ decl_line (data1) 4
+ decl_column (data1) 9
+ sibling (ref4) [ 8d]
+ [ 4e] member abbrev: 4
+ name (string) "u"
+ decl_file (data1) urng.ads (1)
+ decl_line (data1) 4
+ decl_column (data1) 14
+ type (ref4) [ 2d]
+ data_member_location (data1) 0
+ [ 59] variant_part abbrev: 5
+ discr (ref4) [ 4e]
+ [ 5e] variant abbrev: 6
+ discr_list (block1) label 17, label 23, range 32768..65535
+ [ 6b] variant abbrev: 7
+ discr_value (udata) 256
+ sibling (ref4) [ 7e]
+ [ 72] member abbrev: 4
+ name (string) "b"
+ decl_file (data1) urng.ads (1)
+ decl_line (data1) 9
+ decl_column (data1) 13
+ type (ref4) [ a4]
+ data_member_location (data1) 4
+ [ 7e] variant abbrev: 8
+ [ 7f] member abbrev: 4
+ name (string) "i"
+ decl_file (data1) urng.ads (1)
+ decl_line (data1) 11
+ decl_column (data1) 13
+ type (ref4) [ ab]
+ data_member_location (data1) 4
+ [ 8d] dwarf_procedure abbrev: 9
+ location (exprloc)
+ [ 0] dup
+ [ 1] lit17
+ [ 2] ne
+ [ 3] over
+ [ 4] lit23
+ [ 5] ne
+ [ 6] and
+ [ 7] over
+ [ 8] lit0
+ [ 9] ge
+ [10] and
+ [11] bra 18
+ [14] lit0
+ [15] skip 19
+ [18] lit4
+ [19] swap
+ [20] drop
+ [ a4] base_type abbrev: 2
+ byte_size (data1) 1
+ encoding (data1) boolean (2)
+ name (strp) "boolean"
+ [ ab] base_type abbrev: 10
+ byte_size (data1) 4
+ encoding (data1) signed (5)
+ name (strp) "integer"
+ artificial (flag_present) yes
+ [ b2] variable abbrev: 11
+ name (strp) "urng__r"
+ decl_file (data1) urng.ads (1)
+ decl_line (data1) 15
+ decl_column (data1) 4
+ type (ref4) [ 34]
+ external (flag_present) yes
+ location (exprloc)
+ [ 0] addr 0x3d8
+ [ c8] subprogram abbrev: 12
+ external (flag_present) yes
+ name (strp) "urng___elabs"
+ artificial (flag_present) yes
+ low_pc (addr) 0x0000000000000386
+ high_pc (data8) 22 (0x000000000000039c)
+ frame_base (exprloc)
+ [ 0] call_frame_cfa
+EOF