From patchwork Wed Oct 26 08:18:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 11155 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp137297wru; Wed, 26 Oct 2022 01:53:13 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6f9YtLnRy7rJJbLp3Z/0OhcLiXT7riuZflKOrkrF4ndUZoni/R+f2f7Hurx5WyZQaK/k/J X-Received: by 2002:a17:907:2bf8:b0:7a9:ec45:1697 with SMTP id gv56-20020a1709072bf800b007a9ec451697mr11007518ejc.224.1666774393736; Wed, 26 Oct 2022 01:53:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666774393; cv=none; d=google.com; s=arc-20160816; b=v2robmeKQ2tm7iA+oA3jat5owSRzo4pslQ1X1VrOmAGF0qZBFO71zXSEkUl8N5r3qX Vp2UcXXOeY+B5IPE4kwBypHyMOQ0zx5kqWWXlTdwkjaeK87Yz0HmGzHowyPQs5f6cX2P jFWzl0GonBcSRKL7zCBh6vQn1sahcO3/rjN7qEWkaj6PHiBBZfSEv5QdxABQXb6NrTWo dG6y0ru8grXnRsVxEXvEWKb4aoBbuoZqm1XTwXeP5h10sz1n8Lf0+4J1PK9ofPGuJKDM 7L1FAf3sBxUIdRk8D3xBOBifSUje9/69MoKeDlPYFTJ0lZU/ucTSY93zZfUUEYEv2SRj r5Bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:dkim-signature:dmarc-filter :delivered-to; bh=Fumbhr9KoqY5fdGOH37EHiHDTGja4/9JXjhOugW4yJ8=; b=AO1RNInS6P/rL+lT3yR0xtx/1A8NdlozT6MKAiqnWGu4lT0Zjo9enNe2L6JJKuwMIj a2Qn2idS21OqInwTJcGwcFh38hKOD7PVnfK61Targxn/hYCbbMcNYMdzio3bitNndnDb CEUWTa2fboi1+vybX1qADlJM/TLldR+vz5ksfZup8wb1eEf7NOoEmhF5O9Geq040Cspo fXp7i5dKQ7kIlp2Z9RN7g8O4R4P3Rv0WlsCTl3woDPKpLVbOf+740TBTarJWhMmfBJZm 64N+mq54HDjw8BTQrfTOTlUOfeTi6+xTKKCVALo+UdjpJgPPuW/lVklTU/luh4sKV3cP PYgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=Rz5Ts0wq; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id jo8-20020a170906f6c800b0078e1cd71067si4435011ejb.205.2022.10.26.01.53.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Oct 2022 01:53:13 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=Rz5Ts0wq; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5E0643873EE8 for ; Wed, 26 Oct 2022 08:40:18 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id D308A388457E for ; Wed, 26 Oct 2022 08:16:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D308A388457E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-wr1-x433.google.com with SMTP id k8so16391646wrh.1 for ; Wed, 26 Oct 2022 01:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=Fumbhr9KoqY5fdGOH37EHiHDTGja4/9JXjhOugW4yJ8=; b=Rz5Ts0wqHbuiuSuIEVuCvjntARGfBIPW2U+fTa3ruO687Hn6eXIFXjCmpTb4Mefauo OEAhywqerGKOQugegFIOIxL5nZftOluuEQ1VZd7+JJRV1DbJUoburP48ZWM7Z1zHQwZ9 mFsZaQDHygJJ+g9YqCNGDD7Iuj/63cze75AqHZ6pgXY4n9Wl5zie6Wo1JrZlyin3/fUK wpQEt3Rkgh1lMKodQn2dug5BNvdo9QVaKP2c748Ipsx44yHxsmuJ0m9QKz6HPf8ozIDC 43L7JUZoPGObNQ9ZxYsp0rAxCsz4SgBzmMG8cN85ECzAws5hXoT/UuCaZZD1luECtRMe 9nAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Fumbhr9KoqY5fdGOH37EHiHDTGja4/9JXjhOugW4yJ8=; b=vJQgwE548JTnY/+y8X9+QEvpMsUHM6OVAMvrUpXTmlZTYHqOtzv8eqWp/uXfispMgX ZXV4aLXSsN4fD267HlC9wiES7TuyGKIWxxLNbooxBSzFEoJBS1KjokehXJ4dngqhTzRB yXEasxwv25QdSgj9gT+vBjwoW4dCpGfihDuq2GoLgxpuXDbxiuYkWhseoUJV3Y5MF+8/ DmL4q9fJKl+W+vUSeWwToJCWH1OaQP1PYbIZLhIHkoZNQ8aS26aLwWjZKIW7TODX0Apq ZgazDH1MDGGRiueHjIDVc0jw/fUA0mIr8MHAboiBVGSFKLf9uyzR9+Lc80yHNuilbCDz hvQQ== X-Gm-Message-State: ACrzQf2mOlBgGJEiKA6WzbEXV9BX4SDhCfdRDNXwpT0OYrXOSrV9HnrY z3ea8MPCH4lFhGPRd3izPR2EvOF6q9ld1Xf/IA== X-Received: by 2002:a5d:6da7:0:b0:22e:3edb:e372 with SMTP id u7-20020a5d6da7000000b0022e3edbe372mr28467971wrs.137.1666772173870; Wed, 26 Oct 2022 01:16:13 -0700 (PDT) Received: from platypus.lan ([2001:861:5e4c:3bb0:6424:328a:1734:3249]) by smtp.googlemail.com with ESMTPSA id q16-20020a05600c46d000b003c6f426467fsm1134310wmo.40.2022.10.26.01.16.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Oct 2022 01:16:13 -0700 (PDT) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Subject: [PATCH Rust front-end v3 46/46] gccrs: Add README, CONTRIBUTING and compiler logo Date: Wed, 26 Oct 2022 10:18:11 +0200 Message-Id: <20221026081811.602573-47-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221026081811.602573-1-arthur.cohen@embecosm.com> References: <20221026081811.602573-1-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, LOTS_OF_MONEY, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: , Reply-To: arthur.cohen@embecosm.com Cc: gcc-rust@gcc.gnu.org Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747739626403169226?= X-GMAIL-MSGID: =?utf-8?q?1747739626403169226?= From: Philip Herron We still need to write out documentation section but these README's will help in the mean time. --- gcc/rust/CONTRIBUTING.md | 130 +++++++++++++++++++ gcc/rust/README.md | 264 +++++++++++++++++++++++++++++++++++++++ gcc/rust/logo.png | Bin 0 -> 70864 bytes 3 files changed, 394 insertions(+) create mode 100644 gcc/rust/CONTRIBUTING.md create mode 100644 gcc/rust/README.md create mode 100644 gcc/rust/logo.png diff --git a/gcc/rust/CONTRIBUTING.md b/gcc/rust/CONTRIBUTING.md new file mode 100644 index 00000000000..20e499c29e1 --- /dev/null +++ b/gcc/rust/CONTRIBUTING.md @@ -0,0 +1,130 @@ +## How to contribute to GCC Rust + +#### **Did you find a bug?** + +* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/Rust-GCC/gccrs/issues). + +* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/Rust-GCC/gccrs/issues/new). + Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** + or an **executable test case** demonstrating the expected behavior that is not occurring. + +#### **Do you want to submit a patch?** + +* Open a new GitHub pull request with the patch. + +* Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. + +* Before submitting, GCC development requires copyright assignment or the Developer's Certificate of Origin sign-off. + Please see the [Contributing to GCC](https://gcc.gnu.org/contribute.html) guide or [Developer's Certificate of Origin (DCO) Sign-off](https://gcc.gnu.org/dco.html) guide. + +* Patches sent to the [`gcc-rust` mailing list](https://gcc.gnu.org/mailman/listinfo/gcc-rust) are likewise welcome. +These will be imported into a GitHub PR to follow the normal review process, +and the link to the GitHub PR sent to the submitter. + +#### **Do you intend to add a new feature or change an existing one?** + +* Suggest your change in the [Zulip](https://gcc-rust.zulipchat.com/) and start writing code. + +* Do not open an issue on GitHub until you have collected positive feedback about the change. + GitHub issues are primarily intended for bug reports and fixes. + +#### **Do you have questions about the source code?** + +* Ask any question about how to use GCCRS in [Zulip](https://gcc-rust.zulipchat.com/). + +### **PR Policy** + +* The PR policy: Everything has to go through a PR + - An exception to this rule will be the merge commits of updating the repo against upstream GCC + +* Reviewers/Maintainers of the project (aka people who have bors rights) should be pinged for reviews/questions. + +* A PR can have one or several commits (split should have a technical/logical reason, ie. no fixup-ish commit) + +* Avoid PR's with merge commit unless there's a good reason + +* Where possible please add test cases to `gcc/testsuite/rust/` for all PRs. + Some issues may not be testable via dejagnu/automation such as debug dump changes. + +* Follow the [GCC coding style](https://gcc.gnu.org/codingconventions.html) (see `clang-format` below). + +* PRs won't be merged until the build and tests pass. + +* Please take the time to create good git commit messages. + See the existing format of them in the git log or refer to something like: https://chris.beams.io/posts/git-commit/ + +#### Running `clang-format` locally + +* on all files using python scripts +... corresponding to what the _Clang Format Lint_ (`.github/workflows/clang-format.yml`) +is doing, with `clang-format-10` being available locally, and avoiding the Docker overhead. + +```shell +$ wget 'https://github.com/DoozyX/clang-format-lint-action/raw/v0.11/run-clang-format.py' +$ cp contrib/clang-format .clang-format +$ python3 run-clang-format.py --clang-format-executable clang-format-10 --recursive --extensions h,cc gcc/rust/ +``` + +* on a given patch using python scripts +See the [clang-format documentation](https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting) : + + $ git diff -U0 --no-color HEAD^ | clang-format-diff.py -i -p1 + +* using `git` interface + +At least on Debian and its derivative, each `clang-format` packages also comes +with `git-clang-format` command that can be used easily. It applies on staged +changes, and any modification can be seen as unstaged changes: + +```diff +$ git diff --cached +diff --git a/gcc/rust/rust-abi.h b/gcc/rust/rust-abi.h +index bd3043295ce..9559374ce60 100644 +--- a/gcc/rust/rust-abi.h ++++ b/gcc/rust/rust-abi.h +@@ -22,10 +22,10 @@ namespace Rust { + enum ABI + { + UNKNOWN, +- RUST, ++ RUST, + INTRINSIC, + C, +- CDECL, ++ CDECL, + STDCALL, + FASTCALL, + }; + +gccrs/gcc/rust on  dkm/clang_format [$!+?] +❯ git clang-format +changed files: + gcc/rust/rust-abi.h + +gccrs/gcc/rust on  dkm/clang_format [$!+?] +$ git diff rust-abi.h +diff --git a/gcc/rust/rust-abi.h b/gcc/rust/rust-abi.h +index 9559374ce60..bd3043295ce 100644 +--- a/gcc/rust/rust-abi.h ++++ b/gcc/rust/rust-abi.h +@@ -22,10 +22,10 @@ namespace Rust { + enum ABI + { + UNKNOWN, +- RUST, ++ RUST, + INTRINSIC, + C, +- CDECL, ++ CDECL, + STDCALL, + FASTCALL, + }; +``` + +Also note that you can use a given version of `clang-format` by using `git clang-format-10` if you have +installed that particular version. + +Thanks! :heart: :heart: :heart: + +GCCRS Team diff --git a/gcc/rust/README.md b/gcc/rust/README.md new file mode 100644 index 00000000000..fe38402f27a --- /dev/null +++ b/gcc/rust/README.md @@ -0,0 +1,264 @@ +![C/C++ CI](https://github.com/Rust-GCC/gccrs/workflows/C/C++%20CI/badge.svg) +[![GCC Bootstrap Build](https://github.com/Rust-GCC/gccrs/actions/workflows/bootstrap.yml/badge.svg)](https://github.com/Rust-GCC/gccrs/actions/workflows/bootstrap.yml) +[![Build Docker image](https://github.com/Rust-GCC/gccrs/actions/workflows/docker.yml/badge.svg)](https://github.com/Rust-GCC/gccrs/actions/workflows/docker.yml) +![Docker Pulls](https://img.shields.io/docker/pulls/philberty/gccrs) +[![project chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://gcc-rust.zulipchat.com/) +[![Bors enabled](https://bors.tech/images/badge_small.svg)](https://app.bors.tech/repositories/32890) +# GCC Rust +![GCC Rust](logo.png?raw=true "GCC rust Logo") + +Please note, the compiler is in a very early stage and not usable yet for compiling real Rust programs. + +gccrs is a full alternative implementation of the Rust language ontop of GCC with the goal +to become fully upstream with the GNU toolchain. + +The origin of this project was a community effort several years ago where Rust was still at version 0.9; +the language was subject to so much change that it became difficult for a community effort to play catch up. +Now that the language is stable, it is an excellent time to create alternative compilers. The developers of +the project are keen “Rustaceans” with a desire to give back to the Rust community and to learn what GCC is capable +of when it comes to a modern language. + +## Build Farm Status + +- [Debian i386](https://builder.sourceware.org/buildbot/#/builders/gccrust-debian-i386) [![Debian i386](https://builder.sourceware.org/buildbot/badges/gccrust-debian-i386.svg)](https://builder.sourceware.org/buildbot/#/builders/gccrust-debian-i386) +- [Debian ppc64](https://builder.sourceware.org/buildbot/#/builders/gccrust-debian-ppc64) [![Debian ppc64](https://builder.sourceware.org/buildbot/badges/gccrust-debian-ppc64.svg)](https://builder.sourceware.org/buildbot/#/builders/gccrust-debian-ppc64) +- [Debian testing-x86_64](https://builder.sourceware.org/buildbot/#/builders/146) [![Debian testing-x86_64](https://builder.sourceware.org/buildbot/badges/gccrust-debian-testing-x86_64.svg)](https://builder.sourceware.org/buildbot/#/builders/146) +- [Fedora arm64](https://builder.sourceware.org/buildbot/#/builders/179) [![Fedora arm64](https://builder.sourceware.org/buildbot/badges/gccrust-fedora-arm64.svg)](https://builder.sourceware.org/buildbot/#/builders/179) +- [Fedora ppc64le](https://builder.sourceware.org/buildbot/#/builders/gccrust-fedora-ppc64le) [![Fedora ppc64le](https://builder.sourceware.org/buildbot/badges/gccrust-fedora-ppc64le.svg)](https://builder.sourceware.org/buildbot/#/builders/gccrust-fedora-ppc64le) +- [Fedora s390x](https://builder.sourceware.org/buildbot/#/builders/gccrust-fedora-s390x) [![Fedora s390x](https://builder.sourceware.org/buildbot/badges/gccrust-fedora-s390x.svg)](https://builder.sourceware.org/buildbot/#/builders/gccrust-fedora-s390x) +- [Fedora X86_64](https://builder.sourceware.org/buildbot/#/builders/gccrust-fedora-x86_64) [![Fedora X86-64](https://builder.sourceware.org/buildbot/badges/gccrust-fedora-x86_64.svg)](https://builder.sourceware.org/buildbot/#/builders/gccrust-fedora-x86_64) +- [OpenSUSE Leap X86_64](https://builder.sourceware.org/buildbot/#/builders/104) [![OpenSUSE Leap X86_64](https://builder.sourceware.org/buildbot/badges/gccrust-opensuseleap-x86_64.svg)](https://builder.sourceware.org/buildbot/#/builders/104) +- [OpenSUSE tw X86_64](https://builder.sourceware.org/buildbot/#/builders/103) [![OpenSUSE tw X86_64](https://builder.sourceware.org/buildbot/badges/gccrust-opensusetw-x86_64.svg)](https://builder.sourceware.org/buildbot/#/builders/103) +- [Rawhide X86_64](https://builder.sourceware.org/buildbot/#/builders/132) [![Rawhide X86_64](https://builder.sourceware.org/buildbot/badges/gccrust-rawhide-x86_64.svg)](https://builder.sourceware.org/buildbot/#/builders/132) + +## FAQ + +Please find the answers to frequently asked questions over on: https://github.com/Rust-GCC/gccrs/wiki/Frequently-Asked-Questions + +## Development Environment + +### Building + +Fetch dependencies for Ubuntu: + +```bash +$ apt install build-essential libgmp3-dev libmpfr-dev libmpc-dev flex bison autogen gcc-multilib dejagnu +``` + +Clone the repository + +```bash +$ git clone https://github.com/Rust-GCC/gccrs +``` + +#### Linux + +It is important to remember that GNU toolchain projects are designed to be built outside of their source directory +which is why a build directory is created. + +```bash +$ mkdir gccrs-build +$ cd gccrs-build +$ ../gccrs/configure --prefix=$HOME/gccrs-install --disable-bootstrap --enable-multilib --enable-languages=rust +$ make +``` + +#### MacOS + +The path of header dir and sysroot should be specified when you configure the project. +```bash +$ mkdir mac-build +$ cd mac-build +$ ../gccrs/configure --prefix=$HOME/gccrs-install --disable-bootstrap --enable-multilib --enable-languages=rust --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +$ make + +``` + +#### Running GCC Rust + +Running the compiler itself without make install we can simply invoke the compiler proper: + +```bash +$ ./gcc/rust1 test.rs -frust-debug -frust-dump-parse -Warray-bounds -dumpbase test.rs -mtune=generic -march=x86-64 -O0 -version -fdump-tree-gimple -o test.s -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 +``` + +To invoke the compiler driver (gccrs) we need to: + +```bash +$ make install +``` + +Then invoke the compiler from the installation directory: + +```bash +$ $HOME/gccrs-install/gccrs -g -O2 -c test.rs -o test.o +$ $HOME/gccrs-install/gccrs -o test test.o +``` + +You can also setup your shell to automatically find the installed compiler. For example for `bash`, +add the following in your `$HOME/.bashrc`: + +```bash +export PATH=$HOME/gccrs-install/bin:$PATH + +``` + +## Testsuite + +Invoke the full testsuite from the build directory (`gccrs-build` in the previous commands): + +```bash +$ make check-rust +``` + +Invoke a subset of the testsuite. For example, to only run tests that are currently known/expected to fail: + +```bash +$ make check-rust RUNTESTFLAGS="xfail.exp" +``` +There are the following sets of tests: +- `compile.exp` : compilation tests +- `execute.exp` : execution tests +- `xfail.exp` : tests that are currently known/expected to fail + +Invoke only a specific test : + +```bash +$ make check-rust RUNTESTFLAGS="--all compile.exp=continue1.rs" +``` + +Logs (with corresponding commands) can be found in : `gccrs-build/gcc/testsuite/rust/rust.log`. + +See [GCC Testing documentation](https://gcc.gnu.org/install/test.html) for more details. + +Test cases are located within [`gcc/testsuite/rust/`](gcc/testsuite/rust/). +Please contribute your specific +test cases referencing any issues on Github. + +## Debugging + +### Enabling internal checks + +GCC has several internal checks that can be enabled during configuration. In the case of `gccrs`, +you can enable the following: +```bash +$ ../gccrs/configure --prefix=$HOME/gccrs-install --disable-bootstrap --enable-multilib --enable-languages=rust --enable-checking=gimple,tree,types +``` + +### GDB +You can directly invoke `gdb` on the `rust1` compiler process (you can find the +exact command adding `--verbose` to your `gccrs` invocation): +```bash +$ gccrs test.rs -O0 -S -o arithmetic_expressions1.s --verbose +... + /some/path/../../rust1 test.rs -quiet -dumpbase arithmetic_expressions1.rs -dumpbase-ext .rs + -mtune=generic -march=x86-64 -O0 -w -version -fdiagnostics-color=never -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-urls=never -fdiagnostics-path-format=separate-events -o test.s -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu +... +$ gdb --args /some/path/../../rust1 test.rs -quiet -dumpbase arithmetic_expressions1.rs -dumpbase-ext .rs + -mtune=generic -march=x86-64 -O0 -w -version -fdiagnostics-color=never -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-urls=never -fdiagnostics-path-format=separate-events -o test.s -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu +``` + +Or simply add the `-wrapper gdb,--args` option. +This will call each subcommand in `gdb` and you simply have to break/debug in `rust1`: +```bash +$ gccrs test.rs -O0 -S -o arithmetic_expressions1.s -wrapper gdb,--args +``` + +## Docker image + +There is a docker image hosted over on: + +https://hub.docker.com/repository/docker/philberty/gccrs + +```bash +$ docker pull philberty/gccrs +``` + +Or you can build your own image: + +```bash +$ docker build . -t gccrs-dev +``` +If you want to build an object file: + +```bash +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp \ + gccrs-dev:latest gccrs -g -O2 -c \ + gcc/testsuite/rust/compile/torture/type_infer1.rs -o type_infer1.o +``` + +If you want to build an executable file: +```bash +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp \ + gccrs-dev:latest gccrs -g -O2 \ + gcc/testsuite/rust/compile/torture/type_infer1.rs -o type_infer1 +``` + +To emit assembly : +```bash +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp \ + gccrs-dev:latest gccrs -g -O2 \ + gcc/testsuite/rust/compile/torture/type_infer1.rs -S -o type_infer1.s +``` + +To emit Rust front end debug output, you may add options like `-frust-debug`, `-frust-dump-all`. + + +## Contributing + +If you want to contribute to GCC Rust, you can find more information in [CONTRIBUTING.md](https://github.com/Rust-GCC/gccrs/blob/master/CONTRIBUTING.md). + +Please be aware this project is designed to be pushed upstream to GCC when we reach some milestones, +and this means we require copyright assignment or the Developer's Certificate of Origin sign-off. +Please see the [Contributing to GCC](https://gcc.gnu.org/contribute.html) guide or [Developer's Certificate of Origin (DCO) Sign-off](https://gcc.gnu.org/dco.html) guide. + +Not all contributions must be code; we would love to see new test cases or bugs and issues to be reported. +Feel free to add any comments on open PRs + + +## Continuous Integration + +When submitting (or updating) a [GitHub Pull Request](https://github.com/Rust-GCC/gccrs/pull/), +several automated checks are run. +Generally, a "green status" is necessary before merge. + + +### Compiler Diagnostics + +That is, here, diagnostics emitted by the "initial" compiler used to build GCC/Rust. + +If building a native toolchain, +GCC by default does a 3-stage bootstrap build (). +In addition to making sure that GCC is able to reproduce itself bit-by-bit, +this also means that stages 2+ are built with `-Werror` +(turning most _warning_ into _error_ diagnostics; see `--enable-werror`, +possibly enabled by default). +This helps to catch a good number of bugs, because it enforces that GCC compiles without compiler diagnostics; +it's a requirement for upstream patch submission (). + +GCC generally is only expected to be "warning-clean" without `--disable-bootstrap` +(that is, default `--enable-bootstrap` for a native build), +and not for the initial stage where it's using the "initial" compiler -- otherwise +we're at the mercy of whatever "initial" compiler we're using. +Doing a `--disable-bootstrap` build is much faster, of course, so we're often doing that: +for example, per the instructions above, or in the standard CI. +With that, we're missing out on the aspect that _enforces that GCC compiles without compiler diagnostics_. + +To encounter that, the default CI has a [_check for new warnings_ step](https://github.com/Rust-GCC/gccrs/pull/1026) +that verifies in the CI `--disable-bootstrap` build configuration that no new warnings are introduced. +If that step fails, it usually points out a new _warning_ you've introduced erroneously, and should address. +Occasionally it means that simply the `.github/bors_log_expected_warnings` file needs to be updated, +for example if due to any kind of "environmental changes" (for example, CI "initial" compiler changes). +Unless diligently reproducing the CI configuration (in particular "initial" compiler, GCC version), +it's not really feasible to reproduce this check locally. +If in doubt, do a local `--enable-bootstrap` build, or submit your changes, and wait for the CI system's results. + + +## Community + +We can be found on all usual Rust channels such as Zulip, but we also have our own channels: + +* GCC Rust Zulip: https://gcc-rust.zulipchat.com/ +* Twitter: https://twitter.com/gcc_rust +* GCC Mailing List: https://gcc.gnu.org/mailman/listinfo/gcc-rust +* irc: irc.oftc.net - gccrust diff --git a/gcc/rust/logo.png b/gcc/rust/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b22ad646f87e9ad00427f891d2f93baaf83520 GIT binary patch literal 70864 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�hmf8C}X*9=%`8T4QS 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 E2LSsXng9R* literal 0 HcmV?d00001 -- 2.37.2