From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 109242 invoked by alias); 16 Mar 2019 17:26:26 -0000 Mailing-List: contact dwz-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: dwz-owner@sourceware.org Received: (qmail 109232 invoked by uid 89); 16 Mar 2019 17:26:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.100.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy=sk:dw_at_d, sk:DW_AT_d, Pad X-Spam-Status: No, score=-24.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on sourceware.org X-Spam-Level: X-HELO: mx1.suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Date: Tue, 01 Jan 2019 00:00:00 -0000 From: Tom de Vries To: dwz@sourceware.org, jakub@redhat.com Subject: [PATCH] Add pr24173.sh Message-ID: <20190316172705.GA28957@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-SW-Source: 2019-q1/txt/msg00137.txt.bz2 Hi, Add test-case for PR24173, using py-section-script.s generated from gdb/testsuite/gdb.python/py-section-script.c in binutils-gdb repo. I'm not sure if and which license text is needed for py-section-script.s, so it's without atm. OK for trunk? Thanks, - Tom Add pr24173.sh 2019-03-16 Tom de Vries * Makefile (TEST_EXECS): Add py-section-script. (py-section-script): New target. * testsuite/dwz.tests/dwz-tests.exp: Require py-section-script for pr24173.sh. * testsuite/dwz.tests/pr24173.sh: New test. * testsuite/dwz.tests/py-section-script.s: New test. --- Makefile | 5 +- testsuite/dwz.tests/dwz-tests.exp | 3 + testsuite/dwz.tests/pr24173.sh | 16 ++ testsuite/dwz.tests/py-section-script.s | 393 ++++++++++++++++++++++++++++++++ 4 files changed, 416 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1aa208f..3510e54 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ clean: PWD:=$(shell pwd -P) TEST_SRC = $(PWD)/testsuite/dwz.tests -TEST_EXECS = hello dw2-restrict +TEST_EXECS = hello dw2-restrict py-section-script hello: $(CC) $(TEST_SRC)/hello.c -o $@ -g @@ -26,6 +26,9 @@ hello: dw2-restrict: $(CC) $(TEST_SRC)/dw2-restrict.S -o $@ || touch $@ +py-section-script: + $(CC) $(TEST_SRC)/py-section-script.s -o $@ -g || touch $@ + check: dwz $(TEST_EXECS) mkdir -p testsuite-bin cd testsuite-bin; ln -sf $(PWD)/dwz . diff --git a/testsuite/dwz.tests/dwz-tests.exp b/testsuite/dwz.tests/dwz-tests.exp index d46dce7..983d323 100644 --- a/testsuite/dwz.tests/dwz-tests.exp +++ b/testsuite/dwz.tests/dwz-tests.exp @@ -17,6 +17,9 @@ foreach test $tests { if { $basename == "pr24171.sh" } { lappend required_execs "dw2-restrict" } + if { $basename == "pr24173.sh" } { + lappend required_execs "py-section-script" + } set unsupported 0 foreach required_exec $required_execs { diff --git a/testsuite/dwz.tests/pr24173.sh b/testsuite/dwz.tests/pr24173.sh new file mode 100644 index 0000000..5ac78ee --- /dev/null +++ b/testsuite/dwz.tests/pr24173.sh @@ -0,0 +1,16 @@ +cp ../py-section-script 1 + +eu-strip -g -f 1.debug 1 + +if dwz 1.debug 2>dwz.err; status=$?; then + true +fi + +if ! grep -q "Found empty .debug_gdb_scripts section, not attempting dwz compression" dwz.err; then + cat dwz.err + exit 1 +fi + +[ $status -eq 1 ] + +rm -f 1 1.debug dwz.err diff --git a/testsuite/dwz.tests/py-section-script.s b/testsuite/dwz.tests/py-section-script.s new file mode 100644 index 0000000..1f5efc7 --- /dev/null +++ b/testsuite/dwz.tests/py-section-script.s @@ -0,0 +1,393 @@ +# Generated using gdb/testsuite/gdb.python/py-section-script.c from repo +# git://sourceware.org/git/binutils-gdb.git. + + .file "py-section-script.c" + .text +.Ltext0: +#APP + .pushsection ".debug_gdb_scripts", "S",%progbits +.byte 1 +.asciz "py-section-script.py" +.popsection + + .pushsection ".debug_gdb_scripts", "S",%progbits +.byte 1 +.asciz "py-section-script.py" +.popsection + + .pushsection ".debug_gdb_scripts", "S",%progbits +.byte 4 +.ascii "gdb.inlined-script\n" +.ascii "class test_cmd (gdb.Command):\n" +.ascii " def __init__ (self):\n" +.ascii " super (test_cmd, self).__init__ (\"test-cmd\", gdb.COMMAND_OBSCURE)\n" +.ascii " def invoke (self, arg, from_tty):\n" +.ascii " print (\"test-cmd output, arg = %s\" % arg)\n" +.ascii "test_cmd ()\n" +.byte 0 +.popsection + + .pushsection ".debug_gdb_scripts", "S",%progbits +.byte 4 +.ascii "gdb.inlined-script\n" +.ascii "class test_cmd (gdb.Command):\n" +.ascii " def __init__ (self):\n" +.ascii " super (test_cmd, self).__init__ (\"test-cmd\", gdb.COMMAND_OBSCURE)\n" +.ascii " def invoke (self, arg, from_tty):\n" +.ascii " print (\"test-cmd output, arg = %s\" % arg)\n" +.ascii "test_cmd ()\n" +.byte 0 +.popsection + +#NO_APP + .globl init_ss + .type init_ss, @function +init_ss: +.LFB0: + .file 1 "py-section-script.c" + # py-section-script.c:76 + .loc 1 76 0 + .cfi_startproc +# BLOCK 2 seq:0 +# PRED: ENTRY (FALLTHRU) + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + movl %esi, -12(%rbp) + movl %edx, -16(%rbp) + # py-section-script.c:77 + .loc 1 77 0 + movq -8(%rbp), %rax + movl -12(%rbp), %edx + movl %edx, (%rax) + # py-section-script.c:78 + .loc 1 78 0 + movq -8(%rbp), %rax + movl -16(%rbp), %edx + movl %edx, 4(%rax) + # py-section-script.c:79 + .loc 1 79 0 + nop + popq %rbp + .cfi_def_cfa 7, 8 +# SUCC: EXIT [100.0%] + ret + .cfi_endproc +.LFE0: + .size init_ss, .-init_ss + .globl main + .type main, @function +main: +.LFB1: + # py-section-script.c:83 + .loc 1 83 0 + .cfi_startproc +# BLOCK 2 seq:0 +# PRED: ENTRY (FALLTHRU) + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp + # py-section-script.c:86 + .loc 1 86 0 + leaq -8(%rbp), %rax + movl $2, %edx + movl $1, %esi + movq %rax, %rdi + call init_ss + # py-section-script.c:88 + .loc 1 88 0 + movl $0, %eax + # py-section-script.c:89 + .loc 1 89 0 + leave + .cfi_def_cfa 7, 8 +# SUCC: EXIT [100.0%] + ret + .cfi_endproc +.LFE1: + .size main, .-main +.Letext0: + .section .debug_info,"",@progbits +.Ldebug_info0: + .long 0xc8 # Length of Compilation Unit Info + .value 0x4 # DWARF version number + .long .Ldebug_abbrev0 # Offset Into Abbrev. Section + .byte 0x8 # Pointer Size (in bytes) + .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit) + .long .LASF2 # DW_AT_producer: "GNU C11 7.3.1 20180323 [gcc-7-branch revision 258812] -mtune=generic -march=x86-64 -g" + .byte 0xc # DW_AT_language + .long .LASF3 # DW_AT_name: "py-section-script.c" + .long .LASF4 # DW_AT_comp_dir: "/home/vries/gdb_versions/devel" + .quad .Ltext0 # DW_AT_low_pc + .quad .Letext0-.Ltext0 # DW_AT_high_pc + .long .Ldebug_line0 # DW_AT_stmt_list + .uleb128 0x2 # (DIE (0x2d) DW_TAG_structure_type) + .ascii "ss\0" # DW_AT_name + .byte 0x8 # DW_AT_byte_size + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x44 # DW_AT_decl_line + .long 0x4d # DW_AT_sibling + .uleb128 0x3 # (DIE (0x38) DW_TAG_member) + .ascii "a\0" # DW_AT_name + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x46 # DW_AT_decl_line + .long 0x4d # DW_AT_type + .byte 0 # DW_AT_data_member_location + .uleb128 0x3 # (DIE (0x42) DW_TAG_member) + .ascii "b\0" # DW_AT_name + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x47 # DW_AT_decl_line + .long 0x4d # DW_AT_type + .byte 0x4 # DW_AT_data_member_location + .byte 0 # end of children of DIE 0x2d + .uleb128 0x4 # (DIE (0x4d) DW_TAG_base_type) + .byte 0x4 # DW_AT_byte_size + .byte 0x5 # DW_AT_encoding + .ascii "int\0" # DW_AT_name + .uleb128 0x5 # (DIE (0x54) DW_TAG_subprogram) + # DW_AT_external + .long .LASF0 # DW_AT_name: "main" + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x52 # DW_AT_decl_line + .long 0x4d # DW_AT_type + .quad .LFB1 # DW_AT_low_pc + .quad .LFE1-.LFB1 # DW_AT_high_pc + .uleb128 0x1 # DW_AT_frame_base + .byte 0x9c # DW_OP_call_frame_cfa + # DW_AT_GNU_all_tail_call_sites + .long 0x83 # DW_AT_sibling + .uleb128 0x6 # (DIE (0x75) DW_TAG_variable) + .ascii "ss\0" # DW_AT_name + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x54 # DW_AT_decl_line + .long 0x2d # DW_AT_type + .uleb128 0x2 # DW_AT_location + .byte 0x91 # DW_OP_fbreg + .sleb128 -24 + .byte 0 # end of children of DIE 0x54 + .uleb128 0x7 # (DIE (0x83) DW_TAG_subprogram) + # DW_AT_external + .long .LASF1 # DW_AT_name: "init_ss" + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x4b # DW_AT_decl_line + # DW_AT_prototyped + .quad .LFB0 # DW_AT_low_pc + .quad .LFE0-.LFB0 # DW_AT_high_pc + .uleb128 0x1 # DW_AT_frame_base + .byte 0x9c # DW_OP_call_frame_cfa + # DW_AT_GNU_all_call_sites + .long 0xc5 # DW_AT_sibling + .uleb128 0x8 # (DIE (0xa0) DW_TAG_formal_parameter) + .ascii "s\0" # DW_AT_name + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x4b # DW_AT_decl_line + .long 0xc5 # DW_AT_type + .uleb128 0x2 # DW_AT_location + .byte 0x91 # DW_OP_fbreg + .sleb128 -24 + .uleb128 0x8 # (DIE (0xac) DW_TAG_formal_parameter) + .ascii "a\0" # DW_AT_name + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x4b # DW_AT_decl_line + .long 0x4d # DW_AT_type + .uleb128 0x2 # DW_AT_location + .byte 0x91 # DW_OP_fbreg + .sleb128 -28 + .uleb128 0x8 # (DIE (0xb8) DW_TAG_formal_parameter) + .ascii "b\0" # DW_AT_name + .byte 0x1 # DW_AT_decl_file (py-section-script.c) + .byte 0x4b # DW_AT_decl_line + .long 0x4d # DW_AT_type + .uleb128 0x2 # DW_AT_location + .byte 0x91 # DW_OP_fbreg + .sleb128 -32 + .byte 0 # end of children of DIE 0x83 + .uleb128 0x9 # (DIE (0xc5) DW_TAG_pointer_type) + .byte 0x8 # DW_AT_byte_size + .long 0x2d # DW_AT_type + .byte 0 # end of children of DIE 0xb + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 # (abbrev code) + .uleb128 0x11 # (TAG: DW_TAG_compile_unit) + .byte 0x1 # DW_children_yes + .uleb128 0x25 # (DW_AT_producer) + .uleb128 0xe # (DW_FORM_strp) + .uleb128 0x13 # (DW_AT_language) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3 # (DW_AT_name) + .uleb128 0xe # (DW_FORM_strp) + .uleb128 0x1b # (DW_AT_comp_dir) + .uleb128 0xe # (DW_FORM_strp) + .uleb128 0x11 # (DW_AT_low_pc) + .uleb128 0x1 # (DW_FORM_addr) + .uleb128 0x12 # (DW_AT_high_pc) + .uleb128 0x7 # (DW_FORM_data8) + .uleb128 0x10 # (DW_AT_stmt_list) + .uleb128 0x17 # (DW_FORM_sec_offset) + .byte 0 + .byte 0 + .uleb128 0x2 # (abbrev code) + .uleb128 0x13 # (TAG: DW_TAG_structure_type) + .byte 0x1 # DW_children_yes + .uleb128 0x3 # (DW_AT_name) + .uleb128 0x8 # (DW_FORM_string) + .uleb128 0xb # (DW_AT_byte_size) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3a # (DW_AT_decl_file) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3b # (DW_AT_decl_line) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x1 # (DW_AT_sibling) + .uleb128 0x13 # (DW_FORM_ref4) + .byte 0 + .byte 0 + .uleb128 0x3 # (abbrev code) + .uleb128 0xd # (TAG: DW_TAG_member) + .byte 0 # DW_children_no + .uleb128 0x3 # (DW_AT_name) + .uleb128 0x8 # (DW_FORM_string) + .uleb128 0x3a # (DW_AT_decl_file) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3b # (DW_AT_decl_line) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x49 # (DW_AT_type) + .uleb128 0x13 # (DW_FORM_ref4) + .uleb128 0x38 # (DW_AT_data_member_location) + .uleb128 0xb # (DW_FORM_data1) + .byte 0 + .byte 0 + .uleb128 0x4 # (abbrev code) + .uleb128 0x24 # (TAG: DW_TAG_base_type) + .byte 0 # DW_children_no + .uleb128 0xb # (DW_AT_byte_size) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3e # (DW_AT_encoding) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3 # (DW_AT_name) + .uleb128 0x8 # (DW_FORM_string) + .byte 0 + .byte 0 + .uleb128 0x5 # (abbrev code) + .uleb128 0x2e # (TAG: DW_TAG_subprogram) + .byte 0x1 # DW_children_yes + .uleb128 0x3f # (DW_AT_external) + .uleb128 0x19 # (DW_FORM_flag_present) + .uleb128 0x3 # (DW_AT_name) + .uleb128 0xe # (DW_FORM_strp) + .uleb128 0x3a # (DW_AT_decl_file) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3b # (DW_AT_decl_line) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x49 # (DW_AT_type) + .uleb128 0x13 # (DW_FORM_ref4) + .uleb128 0x11 # (DW_AT_low_pc) + .uleb128 0x1 # (DW_FORM_addr) + .uleb128 0x12 # (DW_AT_high_pc) + .uleb128 0x7 # (DW_FORM_data8) + .uleb128 0x40 # (DW_AT_frame_base) + .uleb128 0x18 # (DW_FORM_exprloc) + .uleb128 0x2116 # (DW_AT_GNU_all_tail_call_sites) + .uleb128 0x19 # (DW_FORM_flag_present) + .uleb128 0x1 # (DW_AT_sibling) + .uleb128 0x13 # (DW_FORM_ref4) + .byte 0 + .byte 0 + .uleb128 0x6 # (abbrev code) + .uleb128 0x34 # (TAG: DW_TAG_variable) + .byte 0 # DW_children_no + .uleb128 0x3 # (DW_AT_name) + .uleb128 0x8 # (DW_FORM_string) + .uleb128 0x3a # (DW_AT_decl_file) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3b # (DW_AT_decl_line) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x49 # (DW_AT_type) + .uleb128 0x13 # (DW_FORM_ref4) + .uleb128 0x2 # (DW_AT_location) + .uleb128 0x18 # (DW_FORM_exprloc) + .byte 0 + .byte 0 + .uleb128 0x7 # (abbrev code) + .uleb128 0x2e # (TAG: DW_TAG_subprogram) + .byte 0x1 # DW_children_yes + .uleb128 0x3f # (DW_AT_external) + .uleb128 0x19 # (DW_FORM_flag_present) + .uleb128 0x3 # (DW_AT_name) + .uleb128 0xe # (DW_FORM_strp) + .uleb128 0x3a # (DW_AT_decl_file) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3b # (DW_AT_decl_line) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x27 # (DW_AT_prototyped) + .uleb128 0x19 # (DW_FORM_flag_present) + .uleb128 0x11 # (DW_AT_low_pc) + .uleb128 0x1 # (DW_FORM_addr) + .uleb128 0x12 # (DW_AT_high_pc) + .uleb128 0x7 # (DW_FORM_data8) + .uleb128 0x40 # (DW_AT_frame_base) + .uleb128 0x18 # (DW_FORM_exprloc) + .uleb128 0x2117 # (DW_AT_GNU_all_call_sites) + .uleb128 0x19 # (DW_FORM_flag_present) + .uleb128 0x1 # (DW_AT_sibling) + .uleb128 0x13 # (DW_FORM_ref4) + .byte 0 + .byte 0 + .uleb128 0x8 # (abbrev code) + .uleb128 0x5 # (TAG: DW_TAG_formal_parameter) + .byte 0 # DW_children_no + .uleb128 0x3 # (DW_AT_name) + .uleb128 0x8 # (DW_FORM_string) + .uleb128 0x3a # (DW_AT_decl_file) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x3b # (DW_AT_decl_line) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x49 # (DW_AT_type) + .uleb128 0x13 # (DW_FORM_ref4) + .uleb128 0x2 # (DW_AT_location) + .uleb128 0x18 # (DW_FORM_exprloc) + .byte 0 + .byte 0 + .uleb128 0x9 # (abbrev code) + .uleb128 0xf # (TAG: DW_TAG_pointer_type) + .byte 0 # DW_children_no + .uleb128 0xb # (DW_AT_byte_size) + .uleb128 0xb # (DW_FORM_data1) + .uleb128 0x49 # (DW_AT_type) + .uleb128 0x13 # (DW_FORM_ref4) + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .long 0x2c # Length of Address Ranges Info + .value 0x2 # DWARF Version + .long .Ldebug_info0 # Offset of Compilation Unit Info + .byte 0x8 # Size of Address + .byte 0 # Size of Segment Descriptor + .value 0 # Pad to 16 byte boundary + .value 0 + .quad .Ltext0 # Address + .quad .Letext0-.Ltext0 # Length + .quad 0 + .quad 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF2: + .string "GNU C11 7.3.1 20180323 [gcc-7-branch revision 258812] -mtune=generic -march=x86-64 -g" +.LASF3: + .string "py-section-script.c" +.LASF0: + .string "main" +.LASF4: + .string "/home/vries/gdb_versions/devel" +.LASF1: + .string "init_ss" + .ident "GCC: (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]" + .section .note.GNU-stack,"",@progbits