From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id HyYjNSd5CWPC3i0AWB0awg (envelope-from ) for ; Fri, 26 Aug 2022 21:53:43 -0400 Received: by simark.ca (Postfix, from userid 112) id CBAE71E4A7; Fri, 26 Aug 2022 21:53:43 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=g43tW73G; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 058991E13B for ; Fri, 26 Aug 2022 21:53:43 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 62A00382EA3D for ; Sat, 27 Aug 2022 01:53:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 62A00382EA3D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1661565222; bh=6Xz+ciGxZrCRoj2wKVcy71TFdfRX7olTS7rhQZZORt4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=g43tW73GeuII+bhhyF+27hwulJ6ADzdvKJYYwaL6I6174opNWI5bmEyG0YUUVb94r j0z6CBGTXhrf0RbT+y41dvHC2NLSrH9V0CnOV4Os2KiyGf/RnFiRcNF+vOd8S21iaG AnpKCt7t91EoQ/QCkbpYYnynxNIZm2aUJvE7OkRg= Received: from mail-sender-0.a4lg.com (mail-sender-0.a4lg.com [IPv6:2401:2500:203:30b:4000:6bfe:4757:0]) by sourceware.org (Postfix) with ESMTPS id B92D3382EA0A for ; Sat, 27 Aug 2022 01:53:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B92D3382EA0A Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id 700F8300089; Sat, 27 Aug 2022 01:53:11 +0000 (UTC) To: Tsukasa OI , Andrew Burgess , Mike Frysinger , Nelson Chu , Kito Cheng Subject: [RESEND PATCH 0/1] sim/testsuite: Trim extra path from arch Date: Sat, 27 Aug 2022 01:53:01 +0000 Message-Id: In-Reply-To: <28df7073ec5a8f601ba47c9d2f7d4a7a0ce08753.1657795051.git.research_trasio@irq.a4lg.com> References: <28df7073ec5a8f601ba47c9d2f7d4a7a0ce08753.1657795051.git.research_trasio@irq.a4lg.com> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Tsukasa OI via Gdb-patches Reply-To: Tsukasa OI Cc: gdb-patches@sourceware.org Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" Hello, The patch is a RESEND of but to the right mailing list and completely new cover letter. Because my copyright assignment is complete and I know the right place to talk, let me describe the details. I first reproduced this bug while I'm adding simulator tests to RISC-V but talking with AArch64 (with some real tests) would be better. [How to reproduce] 1. Configure Binutils with aarch64-unknown-elf and build it /src/binutils/configure \ --target=aarch64-unknown-elf \ --prefix=/opt/cross/aarch64-unknown-elf \ --enable-multilib && make 2. Run `make check-sim' and confirmed that the simulator tests "pass" 3. Intentionally try to fail the test by modifying `sim/testsuite/aarch64/pass.s' (replace the last line from "pass" to "fail") 4. Run `make check-sim' and "confirmed" that the simulator tests "pass" [Analysis] ... Yes, something is going wrong. After the test, you can see the test log in `sim/testsuite/aarch64/allinsn/testrun.log': <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Test run by builduser on Sat Aug 27 01:04:31 2022 Target is aarch64-unknown-elf Host is x86_64-pc-linux-gnu === tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /src/binutils/sim/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /src/binutils/sim/testsuite/./aarch64/allinsn.exp ... Can't find a compatible assembler Executing on host: false /src/binutils/sim/testsuite/lib/compilercheck.c -E -o testsuite/./aarch64/allinsn/compilercheck.x (timeout = 300) spawn -ignore SIGHUP false /src/binutils/sim/testsuite/lib/compilercheck.c -E -o testsuite/./aarch64/allinsn/compilercheck.x compiler exited with status 1 Can't find a compatible C compiler Testing adds.s on machine aarch64. UNTESTED: ./aarch64/adds.s [...] Testing pass.s on machine aarch64. UNTESTED: ./aarch64/pass.s [...] Testing xtn.s on machine aarch64. UNTESTED: ./aarch64/xtn.s testcase /src/binutils/sim/testsuite/./aarch64/allinsn.exp completed in 0 seconds === Summary === # of untested testcases 27 runtest completed at Sat Aug 27 01:04:31 2022 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< We clearly find that the testcase didn't find recently built assembler. That assembler (and the linker) is supposed to be used because the simulator itself (sim/Makefile) sets its configuration. Quoting `sim/site.exp' and `sim/site-sim-config.exp': set AS_FOR_TARGET_AARCH64 "/build/binutils/./gas/as-new" set LD_FOR_TARGET_AARCH64 "/build/binutils/./ld/ld-new" At last, we find `sim/testsuite/lib/sim-defs.exp'. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< proc sim_init_toolchain {} { [...] set arch [sim_arch] set ARCH [string map {- _} [string toupper $arch]] foreach var {AS LD CC} { set var_for_target "${var}_FOR_TARGET" global $var_for_target set var_for_target_arch "${var_for_target}_${ARCH}" global $var_for_target_arch if [info exists $var_for_target_arch] { set $var_for_target [set $var_for_target_arch] } else { set $var_for_target "" } [...] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< In here, it extracts {AS,LD,CC}_FOR_TARGET_AARCH64 and sets proper {AS,LD,CC}_FOR_TARGET. At least, it is supposed to do so. However, this block doesn't work because the `arch' variable returned by the `sim_arch' function is "./aarch64". That is supposed to be "aarch64". <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< proc sim_arch {} { global subdir set arch "$subdir" while { [file dirname $arch] != "." } { set arch [file dirname $arch] } return "$arch" } <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< `sim_arch' function is simple. Until the dirname part of the "arch" is not "." (current directory), it trims the filename part. For instance, if subdir is "A/B/C/D", this function returns "A". However, if subdir is "./A/B/C/D", this function returns "./A", not "A". In fact, actual subdir value here is "./aarch64" and we will get "./aarch64" for [sim_arch]. As a result, it fails to extract proper assembler/linker/compiler for given target. [Fix: Patch Details] After this patch, `sim/testsuite/aarch64/allinsn/testrun.log' will look like this: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Test run by builduser on Sat Aug 27 01:34:29 2022 Target is aarch64-unknown-elf Host is x86_64-pc-linux-gnu === tests === Schedule of variations: unix Running target unix Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. Using /src/binutils/sim/testsuite/config/default.exp as tool-and-target-specific interface file. WARNING: Assuming target board is the local machine (which is probably wrong). You may need to set your DEJAGNU environment variable. Running /src/binutils/sim/testsuite/./aarch64/allinsn.exp ... Found a compatible assembler Can't execute C compiler Testing adds.s on machine aarch64. Executing on host: /build/binutils/./gas/as-new /src/binutils/sim/testsuite/./aarch64/adds.s -I/src/binutils/sim/testsuite/./aarch64 -o testsuite/./aarch64/allinsn/adds.s.o (timeout = 300) spawn -ignore SIGHUP /build/binutils/./gas/as-new /src/binutils/sim/testsuite/./aarch64/adds.s -I/src/binutils/sim/testsuite/./aarch64 -o testsuite/./aarch64/allinsn/adds.s.o Executing on host: /build/binutils/./ld/ld-new testsuite/./aarch64/allinsn/adds.s.o -o testsuite/./aarch64/allinsn/adds.s.x (timeout = 300) spawn -ignore SIGHUP /build/binutils/./ld/ld-new testsuite/./aarch64/allinsn/adds.s.o -o testsuite/./aarch64/allinsn/adds.s.x ./aarch64/run testsuite/./aarch64/allinsn/adds.s.x spawn ./aarch64/run testsuite/./aarch64/allinsn/adds.s.x pass PASS: aarch64 adds.s [...] Testing pass.s on machine aarch64. Executing on host: /build/binutils/./gas/as-new /src/binutils/sim/testsuite/./aarch64/pass.s -I/src/binutils/sim/testsuite/./aarch64 -o testsuite/./aarch64/allinsn/pass.s.o (timeout = 300) spawn -ignore SIGHUP /build/binutils/./gas/as-new /src/binutils/sim/testsuite/./aarch64/pass.s -I/src/binutils/sim/testsuite/./aarch64 -o testsuite/./aarch64/allinsn/pass.s.o Executing on host: /build/binutils/./ld/ld-new testsuite/./aarch64/allinsn/pass.s.o -o testsuite/./aarch64/allinsn/pass.s.x (timeout = 300) spawn -ignore SIGHUP /build/binutils/./ld/ld-new testsuite/./aarch64/allinsn/pass.s.o -o testsuite/./aarch64/allinsn/pass.s.x ./aarch64/run testsuite/./aarch64/allinsn/pass.s.x spawn ./aarch64/run testsuite/./aarch64/allinsn/pass.s.x fail status: 0 output: fail pattern: pass FAIL: aarch64 pass.s (execution) [...] Testing xtn.s on machine aarch64. Executing on host: /build/binutils/./gas/as-new /src/binutils/sim/testsuite/./aarch64/xtn.s -I/src/binutils/sim/testsuite/./aarch64 -o testsuite/./aarch64/allinsn/xtn.s.o (timeout = 300) spawn -ignore SIGHUP /build/binutils/./gas/as-new /src/binutils/sim/testsuite/./aarch64/xtn.s -I/src/binutils/sim/testsuite/./aarch64 -o testsuite/./aarch64/allinsn/xtn.s.o Executing on host: /build/binutils/./ld/ld-new testsuite/./aarch64/allinsn/xtn.s.o -o testsuite/./aarch64/allinsn/xtn.s.x (timeout = 300) spawn -ignore SIGHUP /build/binutils/./ld/ld-new testsuite/./aarch64/allinsn/xtn.s.o -o testsuite/./aarch64/allinsn/xtn.s.x ./aarch64/run testsuite/./aarch64/allinsn/xtn.s.x spawn ./aarch64/run testsuite/./aarch64/allinsn/xtn.s.x pass PASS: aarch64 xtn.s testcase /src/binutils/sim/testsuite/./aarch64/allinsn.exp completed in 0 seconds === Summary === # of expected passes 26 # of unexpected failures 1 runtest completed at Sat Aug 27 01:34:29 2022 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< OK, we successfully failed. If we restore `sim/testsuite/aarch64/pass.s', it completely succeeds. This patch trims "./" part of "./arch" using the `file tail' function. Even if the subdir input is "aarch64", it returns "aarch64". With this patch, we can now successfully test the simulator. This is effectively a prerequisite of my Zmmul patchset on RISC-V because I (and another person who also submitted Zmmul patchset) accidentally broke the simulator while adding Zmmul and my Zmmul patchset contains a test case to make sure that the simulator works as expected. Thanks, Tsukasa Tsukasa OI (1): sim/testsuite: Trim extra path from arch sim/testsuite/lib/sim-defs.exp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) base-commit: 46e59b72f21029f2a863e3828cec76a03283b49d -- 2.34.1