From patchwork Thu Apr 9 21:17:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Oliva X-Patchwork-Id: 1268859 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=adacore.com Received: from sourceware.org (server2.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 (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48yvBB1pMLz9sSM for ; Fri, 10 Apr 2020 07:17:52 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 09F1D385BF81; Thu, 9 Apr 2020 21:17:50 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTP id 4BAF1385B835 for ; Thu, 9 Apr 2020 21:17:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4BAF1385B835 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oliva@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 05F6A56038; Thu, 9 Apr 2020 17:17:47 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id DF0mTUgp3SlD; Thu, 9 Apr 2020 17:17:46 -0400 (EDT) Received: from free.home (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPS id BBA2056035; Thu, 9 Apr 2020 17:17:46 -0400 (EDT) Received: from livre.home (livre.home [172.31.160.2]) by free.home (8.15.2/8.15.2) with ESMTPS id 039LHdwd830714 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 9 Apr 2020 18:17:40 -0300 From: Alexandre Oliva To: gcc-patches@gcc.gnu.org Subject: introduce target tmpnam and require it in tests relying on it Organization: Free thinker, does not speak for AdaCore Date: Thu, 09 Apr 2020 18:17:39 -0300 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 X-Spam-Status: No, score=-24.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" Some target C libraries that aren't recognized as freestanding don't have filesystem support, so calling tmpnam, fopen/open and remove/unlink fails to link. This patch introduces a tmpnam effective target to the testsuite, and requires it in the tests that call tmpnam. Tested on x86_64-linux-gnu, and with a cross to arm-eabi. Ok to install? for gcc/testsuite/ChangeLog * lib/target-supports.exp (check_effective_target_tmpnam): New. * gcc.c-torture/execute/fprintf-2.c: Require it. * gcc.c-torture/execute/printf-2.c: Likewise. * gcc.c-torture/execute/user-printf.c: Likewise. --- gcc/testsuite/gcc.c-torture/execute/fprintf-2.c | 1 + gcc/testsuite/gcc.c-torture/execute/printf-2.c | 1 + gcc/testsuite/gcc.c-torture/execute/user-printf.c | 1 + gcc/testsuite/lib/target-supports.exp | 14 ++++++++++++++ 4 files changed, 17 insertions(+) diff --git a/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c b/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c index c723867..815109b 100644 --- a/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c +++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c @@ -1,6 +1,7 @@ /* Verify that calls to fprintf don't get eliminated even if their result on success can be computed at compile time (they can fail). The calls can still be transformed into those of other functions. + { dg-require-effective-target tmpnam } { dg-prune-output "warning: warning: \[^\n\r\]* possibly used unsafely" } { dg-skip-if "requires io" { avr-*-* } } { dg-skip-if "requires io" { freestanding } } */ diff --git a/gcc/testsuite/gcc.c-torture/execute/printf-2.c b/gcc/testsuite/gcc.c-torture/execute/printf-2.c index 57f467e..02787ec1 100644 --- a/gcc/testsuite/gcc.c-torture/execute/printf-2.c +++ b/gcc/testsuite/gcc.c-torture/execute/printf-2.c @@ -2,6 +2,7 @@ result on success can be computed at compile time (they can fail). The calls can still be transformed into those of other functions. { dg-require-effective-target unwrapped } + { dg-require-effective-target tmpnam } { dg-prune-output "warning: warning: \[^\n\r\]* possibly used unsafely" } { dg-skip-if "requires io" { avr-*-* } } { dg-skip-if "requires io" { freestanding } } */ diff --git a/gcc/testsuite/gcc.c-torture/execute/user-printf.c b/gcc/testsuite/gcc.c-torture/execute/user-printf.c index 006d99e..5f40f98 100644 --- a/gcc/testsuite/gcc.c-torture/execute/user-printf.c +++ b/gcc/testsuite/gcc.c-torture/execute/user-printf.c @@ -2,6 +2,7 @@ don't get eliminated even if their result on success can be computed at compile time (they can fail). { dg-require-effective-target unwrapped } + { dg-require-effective-target tmpnam } { dg-prune-output "warning: warning: \[^\n\r\]* possibly used unsafely" } { dg-skip-if "requires io" { avr-*-* } } { dg-skip-if "requires io" { freestanding } } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index e42d0ea..8bde03a 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -751,6 +751,20 @@ proc check_effective_target_freestanding { } { return 0 } +# Check to see that tmpnam() and other I/O functions normally used +# with it are available. +proc check_effective_target_tmpnam { } { + return [check_no_compiler_messages tmpnam_available executable { +#include +int main() { + char *n = tmpnam (NULL); + FILE *f = fopen (n, "w"); + fclose (f); + remove (n); + return 0; +} } ""] +} + # Return 1 if target has packed layout of structure members by # default, 0 otherwise. Note that this is slightly different than # whether the target has "natural alignment": both attributes may be