From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 104837 invoked by alias); 16 Mar 2019 14:15:57 -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 104681 invoked by uid 89); 16 Mar 2019 14:15:46 -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=-25.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,SPF_PASS autolearn=ham version=3.3.1 spammy= X-Spam-Status: No, score=-25.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,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 Subject: Re: [PATCH] Add pr24171.sh test-case To: Jakub Jelinek Cc: dwz@sourceware.org References: <20190316022518.GA25300@delia> <20190316082634.GO7611@tucnak> From: Tom de Vries Message-ID: <422aa896-9317-4a9c-a9ec-7a24d378637d@suse.de> Date: Tue, 01 Jan 2019 00:00:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0 MIME-Version: 1.0 In-Reply-To: <20190316082634.GO7611@tucnak> Content-Type: multipart/mixed; boundary="------------3E7F9093FD7ADFAEA812FF29" Content-Language: en-US X-SW-Source: 2019-q1/txt/msg00132.txt.bz2 This is a multi-part message in MIME format. --------------3E7F9093FD7ADFAEA812FF29 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 957 On 16-03-19 09:26, Jakub Jelinek wrote: > On Sat, Mar 16, 2019 at 03:25:19AM +0100, Tom de Vries wrote: >> Hi, >> >> Add test-case for PR24171, using dw2-restrict.S from binutils-gdb repo. >> >> OK for trunk? >> >> Thanks, >> - Tom >> >> Add pr24171.sh test-case >> >> 2019-03-16 Tom de Vries >> >> * Makefile (TEST_EXECS): Add dw2-restrict. >> (dw2-restrict): New target. >> * dw2-restrict.S: New file, copied from binutils-gdb repo. >> * testsuite/dwz.tests/dwz-tests.exp: Require dw2-restrict for >> pr24171.sh. >> * testsuite/dwz.tests/pr24171.sh: New test. > > I just wonder if the test shouldn't be either in testsuite/dwz.tests/ > or testsuite/dwz.tests/pr24171/ subdirectory. It would be better > if the toplevel directory contained just the sources and whatever is needed > to build them, plus testsuite subdirectory. > I've moved it to testsuite/dwz.tests. > Otherwise LGTM. Committed as attached. Thanks, - Tom --------------3E7F9093FD7ADFAEA812FF29 Content-Type: text/x-patch; name="0002-Add-pr24171.sh-test-case.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0002-Add-pr24171.sh-test-case.patch" Content-length: 19090 Add pr24171.sh test-case Add test-case for PR24171, using dw2-restrict.S from binutils-gdb repo. 2019-03-16 Tom de Vries * Makefile (TEST_EXECS): Add dw2-restrict. (dw2-restrict): New target. * testsuite/dwz.tests/dw2-restrict.S: New file, copied from binutils-gdb repo. * testsuite/dwz.tests/dwz-tests.exp: Require dw2-restrict for pr24171.sh. * testsuite/dwz.tests/pr24171.sh: New test. --- Makefile | 5 +- testsuite/dwz.tests/dw2-restrict.S | 427 +++++++++++++++++++++++++++++++++++++ testsuite/dwz.tests/dwz-tests.exp | 17 ++ testsuite/dwz.tests/pr24171.sh | 15 ++ 4 files changed, 463 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d4e14de..1aa208f 100644 --- a/Makefile +++ b/Makefile @@ -18,11 +18,14 @@ clean: PWD:=$(shell pwd -P) TEST_SRC = $(PWD)/testsuite/dwz.tests -TEST_EXECS = hello +TEST_EXECS = hello dw2-restrict hello: $(CC) $(TEST_SRC)/hello.c -o $@ -g +dw2-restrict: + $(CC) $(TEST_SRC)/dw2-restrict.S -o $@ || touch $@ + check: dwz $(TEST_EXECS) mkdir -p testsuite-bin cd testsuite-bin; ln -sf $(PWD)/dwz . diff --git a/testsuite/dwz.tests/dw2-restrict.S b/testsuite/dwz.tests/dw2-restrict.S new file mode 100644 index 0000000..0789e72 --- /dev/null +++ b/testsuite/dwz.tests/dw2-restrict.S @@ -0,0 +1,427 @@ +/* Copyright (C) 2012-2019 Free Software Foundation, Inc. + + This program 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. + + This program 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 . + + This was created using clang -g -S dw2-restrict.c. + + This was copied from the git://sourceware.org/git/binutils-gdb.git repository, + file gdb/testsuite/gdb.dwarf2/dw2-restrict.S. */ + + .file "dw2-restrict.c" + .section .debug_frame,"",@progbits +.Lsection_debug_frame: + .section .debug_info,"",@progbits +.Lsection_info: + .section .debug_abbrev,"",@progbits +.Lsection_abbrev: + .section .debug_aranges,"",@progbits + .section .debug_macinfo,"",@progbits + .section .debug_line,"",@progbits +.Lsection_line: + .section .debug_loc,"",@progbits + .section .debug_pubnames,"",@progbits + .section .debug_pubtypes,"",@progbits + .section .debug_str,"",@progbits +.Lsection_str: + .section .debug_ranges,"",@progbits +.Ldebug_range: + .section .debug_loc,"",@progbits +.Lsection_debug_loc: + .text +.Ltext_begin: + .data + .file 1 "dw2-restrict.c" + .text + .globl f + .align 16, 0x90 + .type f,@function +f: # @f +.Leh_func_begin0: +.Lfunc_begin0: + .loc 1 19 0 +.Ltmp0: +# BB#0: + movq %rdi, -8(%rsp) + .loc 1 20 3 +.Ltmp1: + movq -8(%rsp), %rdi # dw2-restrict.c:20:3 + movsbl (%rdi), %eax # dw2-restrict.c:20:3 + ret # dw2-restrict.c:20:3 +.Ltmp2: +.Ltmp3: + .size f, .Ltmp3-f +.Lfunc_end0: +.Leh_func_end0: + + .globl main + .align 16, 0x90 + .type main,@function +main: # @main +.Leh_func_begin1: +.Lfunc_begin1: + .loc 1 24 0 +.Ltmp7: +# BB#0: + pushq %rbp +.Ltmp4: + movq %rsp, %rbp +.Ltmp5: + subq $16, %rsp +.Ltmp6: + leaq .L.str, %rdi + movl $0, -4(%rbp) + .loc 1 25 3 +.Ltmp8: + callq f # dw2-restrict.c:25:3 + addq $16, %rsp # dw2-restrict.c:25:3 + popq %rbp # dw2-restrict.c:25:3 + ret # dw2-restrict.c:25:3 +.Ltmp9: +.Ltmp10: + .size main, .Ltmp10-main +.Lfunc_end1: +.Leh_func_end1: + + .type .L.str,@object # @.str + .section .rodata.str1.1,"aMS",@progbits,1 +.L.str: + .asciz "hi bob" + .size .L.str, 7 + + .section .eh_frame,"a",@progbits +.LEH_frame0: +.Lsection_eh_frame0: +.Leh_frame_common0: +.Lset0 = .Leh_frame_common_end0-.Leh_frame_common_begin0 # Length of Common Information Entry + .long .Lset0 +.Leh_frame_common_begin0: + .long 0 # CIE Identifier Tag + .byte 1 # DW_CIE_VERSION + .asciz "zR" # CIE Augmentation + .byte 1 # CIE Code Alignment Factor + .byte 120 # CIE Data Alignment Factor + .byte 16 # CIE Return Address Column + .byte 1 # Augmentation Size + .byte 3 # FDE Encoding = udata4 + .byte 12 # DW_CFA_def_cfa + .byte 7 # Register + .byte 8 # Offset + .byte 144 # DW_CFA_offset + Reg (16) + .byte 1 # Offset + .align 8 +.Leh_frame_common_end0: +.Lf.eh: +.Lset1 = .Leh_frame_end0-.Leh_frame_begin0 # Length of Frame Information Entry + .long .Lset1 +.Leh_frame_begin0: +.Lset2 = .Leh_frame_begin0-.Leh_frame_common0 # FDE CIE offset + .long .Lset2 + .long .Leh_func_begin0 # FDE initial location +.Lset3 = .Leh_func_end0-.Leh_func_begin0 # FDE address range + .long .Lset3 + .byte 0 # Augmentation size + .align 8 +.Leh_frame_end0: + +.Lmain.eh: +.Lset4 = .Leh_frame_end1-.Leh_frame_begin1 # Length of Frame Information Entry + .long .Lset4 +.Leh_frame_begin1: +.Lset5 = .Leh_frame_begin1-.Leh_frame_common0 # FDE CIE offset + .long .Lset5 + .long .Leh_func_begin1 # FDE initial location +.Lset6 = .Leh_func_end1-.Leh_func_begin1 # FDE address range + .long .Lset6 + .byte 0 # Augmentation size + .byte 4 # DW_CFA_advance_loc4 +.Lset7 = .Ltmp4-.Leh_func_begin1 + .long .Lset7 + .byte 14 # DW_CFA_def_cfa_offset + .byte 16 # Offset + .byte 134 # DW_CFA_offset + Reg (6) + .byte 2 # Offset + .byte 4 # DW_CFA_advance_loc4 +.Lset8 = .Ltmp5-.Ltmp4 + .long .Lset8 + .byte 13 # DW_CFA_def_cfa_register + .byte 6 # Register + .align 8 +.Leh_frame_end1: + + .text +.Ltext_end: + .data +.Ldata_end: + .text +.Lsection_end1: + .section .debug_frame,"",@progbits +.Ldebug_frame_common: +.Lset9 = .Ldebug_frame_common_end-.Ldebug_frame_common_begin # Length of Common Information Entry + .long .Lset9 +.Ldebug_frame_common_begin: + .long -1 # CIE Identifier Tag + .byte 1 # CIE Version + .byte 0 # CIE Augmentation + .byte 1 # CIE Code Alignment Factor + .byte 120 # CIE Data Alignment Factor + .byte 16 # CIE RA Column + .byte 12 # DW_CFA_def_cfa + .byte 7 # Register + .byte 8 # Offset + .byte 144 # DW_CFA_offset + Reg (16) + .byte 1 # Offset + .align 4 +.Ldebug_frame_common_end: +.Lset10 = .Ldebug_frame_end0-.Ldebug_frame_begin0 # Length of Frame Information Entry + .long .Lset10 +.Ldebug_frame_begin0: + .long .Ldebug_frame_common # FDE CIE offset + .quad .Lfunc_begin0 # FDE initial location +.Lset11 = .Lfunc_end0-.Lfunc_begin0 # FDE address range + .quad .Lset11 + .align 4 +.Ldebug_frame_end0: +.Lset12 = .Ldebug_frame_end1-.Ldebug_frame_begin1 # Length of Frame Information Entry + .long .Lset12 +.Ldebug_frame_begin1: + .long .Ldebug_frame_common # FDE CIE offset + .quad .Lfunc_begin1 # FDE initial location +.Lset13 = .Lfunc_end1-.Lfunc_begin1 # FDE address range + .quad .Lset13 + .byte 4 # DW_CFA_advance_loc4 +.Lset14 = .Ltmp4-.Lfunc_begin1 + .long .Lset14 + .byte 14 # DW_CFA_def_cfa_offset + .byte 16 # Offset + .byte 134 # DW_CFA_offset + Reg (6) + .byte 2 # Offset + .byte 4 # DW_CFA_advance_loc4 +.Lset15 = .Ltmp5-.Ltmp4 + .long .Lset15 + .byte 13 # DW_CFA_def_cfa_register + .byte 6 # Register + .align 4 +.Ldebug_frame_end1: + .section .debug_info,"",@progbits +.Linfo_begin1: + .long 197 # Length of Compilation Unit Info + .short 2 # DWARF version number + .long .Labbrev_begin # Offset Into Abbrev. Section + .byte 8 # Address Size (in bytes) + .byte 1 # Abbrev [1] 0xb:0xba DW_TAG_compile_unit + .ascii "clang version 2.9 (tags/RELEASE_29/final)" # DW_AT_producer + .byte 0 + .short 12 # DW_AT_language + .ascii "dw2-restrict.c" # DW_AT_name + .byte 0 + .quad 0 # DW_AT_entry_pc + .quad .Lsection_line # DW_AT_stmt_list + .ascii "/tmp" # DW_AT_comp_dir + .byte 0 + .byte 2 # Abbrev [2] 0x5c:0x7 DW_TAG_base_type + .byte 5 # DW_AT_encoding + .ascii "int" # DW_AT_name + .byte 0 + .byte 4 # DW_AT_byte_size + .byte 3 # Abbrev [3] 0x63:0x2f DW_TAG_subprogram + .long 146 # DW_AT_sibling + .byte 102 # DW_AT_name + .byte 0 + .byte 1 # DW_AT_decl_file + .byte 19 # DW_AT_decl_line + .byte 1 # DW_AT_prototyped + .long 92 # DW_AT_type + .byte 1 # DW_AT_external + .quad .Lfunc_begin0 # DW_AT_low_pc + .quad .Lfunc_end0 # DW_AT_high_pc + .byte 1 # DW_AT_frame_base + .byte 87 + .byte 1 # DW_AT_APPLE_omit_frame_ptr + .byte 4 # Abbrev [4] 0x85:0xc DW_TAG_formal_parameter + .byte 120 # DW_AT_name + .byte 0 + .byte 1 # DW_AT_decl_file + .byte 18 # DW_AT_decl_line + .long 191 # DW_AT_type + .byte 2 # DW_AT_location + .byte 145 + .byte 120 + .byte 0 # End Of Children Mark + .byte 5 # Abbrev [5] 0x92:0x1f DW_TAG_subprogram + .ascii "main" # DW_AT_name + .byte 0 + .byte 1 # DW_AT_decl_file + .byte 24 # DW_AT_decl_line + .long 92 # DW_AT_type + .byte 1 # DW_AT_external + .quad .Lfunc_begin1 # DW_AT_low_pc + .quad .Lfunc_end1 # DW_AT_high_pc + .byte 1 # DW_AT_frame_base + .byte 86 + .byte 2 # Abbrev [2] 0xb1:0x8 DW_TAG_base_type + .byte 6 # DW_AT_encoding + .ascii "char" # DW_AT_name + .byte 0 + .byte 1 # DW_AT_byte_size + .byte 6 # Abbrev [6] 0xb9:0x6 DW_TAG_pointer_type + .long 177 # DW_AT_type + .byte 8 # DW_AT_byte_size + .byte 7 # Abbrev [7] 0xbf:0x5 DW_TAG_restrict_type + .long 185 # DW_AT_type + .byte 0 # End Of Children Mark + .byte 0 # 4 extra padding bytes for GDB + .byte 0 + .byte 0 + .byte 0 +.Linfo_end1: + .section .debug_abbrev,"",@progbits +.Labbrev_begin: + .byte 1 # Abbreviation Code + .byte 17 # DW_TAG_compile_unit + .byte 1 # DW_CHILDREN_yes + .byte 37 # DW_AT_producer + .byte 8 # DW_FORM_string + .byte 19 # DW_AT_language + .byte 5 # DW_FORM_data2 + .byte 3 # DW_AT_name + .byte 8 # DW_FORM_string + .byte 82 # DW_AT_entry_pc + .byte 1 # DW_FORM_addr + .byte 16 # DW_AT_stmt_list + .byte 1 # DW_FORM_addr + .byte 27 # DW_AT_comp_dir + .byte 8 # DW_FORM_string + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 2 # Abbreviation Code + .byte 36 # DW_TAG_base_type + .byte 0 # DW_CHILDREN_no + .byte 62 # DW_AT_encoding + .byte 11 # DW_FORM_data1 + .byte 3 # DW_AT_name + .byte 8 # DW_FORM_string + .byte 11 # DW_AT_byte_size + .byte 11 # DW_FORM_data1 + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 3 # Abbreviation Code + .byte 46 # DW_TAG_subprogram + .byte 1 # DW_CHILDREN_yes + .byte 1 # DW_AT_sibling + .byte 19 # DW_FORM_ref4 + .byte 3 # DW_AT_name + .byte 8 # DW_FORM_string + .byte 58 # DW_AT_decl_file + .byte 11 # DW_FORM_data1 + .byte 59 # DW_AT_decl_line + .byte 11 # DW_FORM_data1 + .byte 39 # DW_AT_prototyped + .byte 12 # DW_FORM_flag + .byte 73 # DW_AT_type + .byte 19 # DW_FORM_ref4 + .byte 63 # DW_AT_external + .byte 12 # DW_FORM_flag + .byte 17 # DW_AT_low_pc + .byte 1 # DW_FORM_addr + .byte 18 # DW_AT_high_pc + .byte 1 # DW_FORM_addr + .byte 64 # DW_AT_frame_base + .byte 10 # DW_FORM_block1 + .ascii "\347\177" # DW_AT_APPLE_omit_frame_ptr + .byte 12 # DW_FORM_flag + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 4 # Abbreviation Code + .byte 5 # DW_TAG_formal_parameter + .byte 0 # DW_CHILDREN_no + .byte 3 # DW_AT_name + .byte 8 # DW_FORM_string + .byte 58 # DW_AT_decl_file + .byte 11 # DW_FORM_data1 + .byte 59 # DW_AT_decl_line + .byte 11 # DW_FORM_data1 + .byte 73 # DW_AT_type + .byte 19 # DW_FORM_ref4 + .byte 2 # DW_AT_location + .byte 10 # DW_FORM_block1 + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 5 # Abbreviation Code + .byte 46 # DW_TAG_subprogram + .byte 0 # DW_CHILDREN_no + .byte 3 # DW_AT_name + .byte 8 # DW_FORM_string + .byte 58 # DW_AT_decl_file + .byte 11 # DW_FORM_data1 + .byte 59 # DW_AT_decl_line + .byte 11 # DW_FORM_data1 + .byte 73 # DW_AT_type + .byte 19 # DW_FORM_ref4 + .byte 63 # DW_AT_external + .byte 12 # DW_FORM_flag + .byte 17 # DW_AT_low_pc + .byte 1 # DW_FORM_addr + .byte 18 # DW_AT_high_pc + .byte 1 # DW_FORM_addr + .byte 64 # DW_AT_frame_base + .byte 10 # DW_FORM_block1 + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 6 # Abbreviation Code + .byte 15 # DW_TAG_pointer_type + .byte 0 # DW_CHILDREN_no + .byte 73 # DW_AT_type + .byte 19 # DW_FORM_ref4 + .byte 11 # DW_AT_byte_size + .byte 11 # DW_FORM_data1 + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 7 # Abbreviation Code + .byte 55 # DW_TAG_restrict_type + .byte 0 # DW_CHILDREN_no + .byte 73 # DW_AT_type + .byte 19 # DW_FORM_ref4 + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 0 # EOM(3) +.Labbrev_end: + .section .debug_pubnames,"",@progbits +.Lset16 = .Lpubnames_end1-.Lpubnames_begin1 # Length of Public Names Info + .long .Lset16 +.Lpubnames_begin1: + .short 2 # DWARF Version + .long .Linfo_begin1 # Offset of Compilation Unit Info +.Lset17 = .Linfo_end1-.Linfo_begin1 # Compilation Unit Length + .long .Lset17 + .long 146 # DIE offset + .asciz "main" # External Name + .long 99 # DIE offset + .asciz "f" # External Name + .long 0 # End Mark +.Lpubnames_end1: + .section .debug_pubtypes,"",@progbits +.Lset18 = .Lpubtypes_end1-.Lpubtypes_begin1 # Length of Public Types Info + .long .Lset18 +.Lpubtypes_begin1: + .short 2 # DWARF Version + .long .Linfo_begin1 # Offset of Compilation Unit Info +.Lset19 = .Linfo_end1-.Linfo_begin1 # Compilation Unit Length + .long .Lset19 + .long 0 # End Mark +.Lpubtypes_end1: + .section .debug_aranges,"",@progbits + .section .debug_ranges,"",@progbits + .section .debug_macinfo,"",@progbits + + .section ".note.GNU-stack","",@progbits diff --git a/testsuite/dwz.tests/dwz-tests.exp b/testsuite/dwz.tests/dwz-tests.exp index f8326dd..d46dce7 100644 --- a/testsuite/dwz.tests/dwz-tests.exp +++ b/testsuite/dwz.tests/dwz-tests.exp @@ -13,6 +13,23 @@ foreach test $tests { continue } + set required_execs [] + if { $basename == "pr24171.sh" } { + lappend required_execs "dw2-restrict" + } + + set unsupported 0 + foreach required_exec $required_execs { + set size [file size $required_exec] + if { $size == 0 } { + set unsupported 1 + } + } + if { $unsupported == 1 } { + unsupported "$test" + continue + } + set dir $pwd/tmp.$basename exec rm -Rf $dir exec mkdir $dir diff --git a/testsuite/dwz.tests/pr24171.sh b/testsuite/dwz.tests/pr24171.sh new file mode 100644 index 0000000..5e1e9a8 --- /dev/null +++ b/testsuite/dwz.tests/pr24171.sh @@ -0,0 +1,15 @@ +cp ../dw2-restrict 1 +cp ../dw2-restrict 2 + +if dwz -m 3 1 2 2>dwz.err; status=$?; then + true +fi + +if ! grep -q "DW_AT_stmt_list not DW_FORM_sec_offset or DW_FORM_data4" dwz.err; then + cat dwz.err + exit 1 +fi + +[ $status -eq 0 ] + +rm -f 1 2 dwz.err --------------3E7F9093FD7ADFAEA812FF29--