@@ -687,7 +687,9 @@ Rust compiler locally. See "[Targeting Fuchsia with a compiler built from source
687687for the steps to build locally.
688688
689689You'll also need to download a copy of the Fuchsia SDK. The current minimum
690- supported SDK version is [ 9.20220726.1.1] ( https://chrome-infra-packages.appspot.com/p/fuchsia/sdk/core/linux-amd64/+/version:9.20220726.1.1 ) .
690+ supported SDK version is [ 10.20221207.2.89] [ minimum_supported_sdk_version ] .
691+ 
692+ [ minimum_supported_sdk_version ] : https://chrome-infra-packages.appspot.com/p/fuchsia/sdk/core/linux-amd64/+/version:10.20221207.2.89 
691693
692694Fuchsia's test runner interacts with the Fuchsia emulator and is located at
693695` src/ci/docker/scripts/fuchsia-test-runner.py ` . We can use it to start our
@@ -697,7 +699,7 @@ test environment with:
697699src/ci/docker/scripts/fuchsia-test-runner.py start
698700 --rust ${RUST_SRC_PATH} /install
699701 --sdk ${SDK_PATH} 
700-  --target-triple  {x86_64-unknown-fuchsia| aarch64-unknown-fuchsia}
702+  --target {x86_64-unknown-fuchsia| aarch64-unknown-fuchsia}
701703``` 
702704
703705Where ` ${RUST_SRC_PATH}/install `  is the ` prefix `  set in ` config.toml `  and
@@ -717,17 +719,11 @@ run the full `tests/ui` test suite:
717719 --target x86_64-unknown-fuchsia \
718720 --run=always --jobs 1 \
719721 --test-args --target-rustcflags \
720-  --test-args -L \
721-  --test-args --target-rustcflags \
722-  --test-args ${SDK_PATH} /arch/{x64| arm64}/sysroot/lib \
723-  --test-args --target-rustcflags \
724-  --test-args -L \
722+  --test-args -Lnative=${SDK_PATH} /arch/{x64| arm64}/sysroot/lib \
725723 --test-args --target-rustcflags \
726-  --test-args ${SDK_PATH} /arch/{x64| arm64}/lib   \
724+  --test-args -Lnative= ${SDK_PATH} /arch/{x64| arm64}/lib \
727725 --test-args --target-rustcflags \
728-  --test-args -Cpanic=abort \
729-  --test-args --target-rustcflags \
730-  --test-args -Zpanic_abort_tests \
726+  --test-args -Clink-arg=--undefined-version \
731727 --test-args --remote-test-client \
732728 --test-args src/ci/docker/scripts/fuchsia-test-runner.py \
733729)
@@ -736,7 +732,18 @@ run the full `tests/ui` test suite:
736732* Note: The test suite cannot be run in parallel at the moment, so ` x.py ` 
737733must be run with ` --jobs 1 `  to ensure only one test runs at a time.* 
738734
739- When finished, the test runner can be used to stop the test environment:
735+ By default, ` x.py `  compiles test binaries with ` panic=unwind ` . If you built your
736+ Rust toolchain with ` -Cpanic=abort ` , you need to tell ` x.py `  to compile test
737+ binaries with ` panic=abort `  as well:
738+ 
739+ ``` sh 
740+  --test-args --target-rustcflags \
741+  --test-args -Cpanic=abort \
742+  --test-args --target-rustcflags \
743+  --test-args -Zpanic_abort_tests \
744+ ``` 
745+ 
746+ When finished testing, the test runner can be used to stop the test environment:
740747
741748``` sh 
742749src/ci/docker/scripts/fuchsia-test-runner.py stop
@@ -764,8 +771,9 @@ ${SDK_PATH}/tools/${ARCH}/ffx debug connect -- \
764771*  ` --symbol-path `  gets required symbol paths, which are
765772necessary for stepping through your program.
766773
767- The "[ displaying source code in ` zxdb ` ] ( #displaying-source-code-in-zxdb ) " section describes how you can
768- display Rust and/or Fuchsia source code in your debugging session.
774+ The "[ displaying source code in ` zxdb ` ] ( #displaying-source-code-in-zxdb ) "
775+ section describes how you can display Rust and/or Fuchsia source code in your
776+ debugging session.
769777
770778### Using ` zxdb `   
771779
@@ -866,6 +874,64 @@ ${SDK_PATH}/tools/${ARCH}/ffx debug connect -- \
866874 Linking to a Fuchsia checkout can help with debugging Fuchsia libraries,
867875 such as [ fdio] .
868876
877+ ### Debugging the compiler test suite  
878+ 
879+ Debugging the compiler test suite requires some special configuration:
880+ 
881+ First, we have to properly configure zxdb so it will be able to find debug
882+ symbols and source information for our test. The test runner can do this for us
883+ with:
884+ 
885+ ``` sh 
886+ src/ci/docker/scripts/fuchsia-test-runner.py debug \
887+  --rust-src ${RUST_SRC_PATH}  \
888+  --fuchsia-src ${FUCHSIA_SRC_PATH}  \
889+  --test ${TEST} 
890+ ``` 
891+ 
892+ where ` ${TEST} `  is relative to Rust's ` tests `  directory (e.g. ` ui/abi/... ` ).
893+ 
894+ This will start a zxdb session that is properly configured for the specific test
895+ being run. All three arguments are optional, so you can omit ` --fuchsia-src `  if
896+ you don't have it downloaded. Now is a good time to set any desired breakpoints,
897+ like ` b main ` .
898+ 
899+ Next, we have to tell ` x.py `  not to optimize or strip debug symbols from our
900+ test suite binaries. We can do this by passing some new arguments to ` rustc ` 
901+ through our ` x.py `  invocation. The full invocation is:
902+ 
903+ ``` sh 
904+ ( \
905+  source  config-env.sh &&  \
906+  ./x.py \
907+  --config config.toml \
908+  --stage=2 \
909+  test  tests/${TEST}  \
910+  --target x86_64-unknown-fuchsia \
911+  --run=always --jobs 1 \
912+  --test-args --target-rustcflags \
913+  --test-args -Lnative=${SDK_PATH} /arch/{x64| arm64}/sysroot/lib \
914+  --test-args --target-rustcflags \
915+  --test-args -Lnative=${SDK_PATH} /arch/{x64| arm64}/lib \
916+  --test-args --target-rustcflags \
917+  --test-args -Clink-arg=--undefined-version \
918+  --test-args --target-rustcflags \
919+  --test-args -Cdebuginfo=2 \
920+  --test-args --target-rustcflags \
921+  --test-args -Copt-level=0 \
922+  --test-args --target-rustcflags \
923+  --test-args -Cstrip=none \
924+  --test-args --remote-test-client \
925+  --test-args src/ci/docker/scripts/fuchsia-test-runner.py \
926+ )
927+ ``` 
928+ 
929+ * If you built your Rust toolchain with ` panic=abort ` , make sure to include the
930+ previous flags so your test binaries are also compiled with ` panic=abort ` .* 
931+ 
932+ Upon running this command, the test suite binary will be run and zxdb will
933+ attach and load any relevant debug symbols.
934+ 
869935[ Fuchsia team ] : https://team-api.infra.rust-lang.org/v1/teams/fuchsia.json 
870936[ Fuchsia ] : https://fuchsia.dev/ 
871937[ source tree ] : https://fuchsia.dev/fuchsia-src/get-started/learn/build 
0 commit comments