From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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) From: Tsukasa OI To: Tsukasa OI , Andrew Burgess , Mike Frysinger , Nelson Chu , Kito Cheng Cc: gdb-patches@sourceware.org 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-Spam-Status: No, score=-6.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, KAM_ASCII_DIVIDERS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: , X-List-Received-Date: Sat, 27 Aug 2022 01:53:21 -0000 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