From 150bafb8d027d7486656d0daabe1bb8bbeebf1a9 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Sat, 10 Sep 2022 11:23:24 -0500 Subject: [PATCH] "symbol names" => ABI ABI is more general and gives a better idea of what goes wrong. --- src/building/bootstrapping.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/building/bootstrapping.md b/src/building/bootstrapping.md index 7f2ede4f..75b64405 100644 --- a/src/building/bootstrapping.md +++ b/src/building/bootstrapping.md @@ -73,9 +73,12 @@ In theory, the stage1 compiler is functionally identical to the stage2 compiler, but in practice there are subtle differences. In particular, the stage1 compiler itself was built by stage0 and hence not by the source in your working directory. -This means that the symbol names used in the compiler source -may not match the symbol names that would have been made by the stage1 compiler, -which can cause problems for dynamic libraries and tests. +This means that the ABI generated by the stage0 compiler may not match the ABI that would have been +made by the stage1 compiler, which can cause problems for dynamic libraries, tests, and tools using +`rustc_private`. + +Note that the `proc_macro` crate avoids this issue with a C FFI layer called `proc_macro::bridge`, +allowing it to be used with stage 1. The `stage2` compiler is the one distributed with `rustup` and all other install methods. However, it takes a very long time to build