DavidSpickett wrote:

I do this using 1 build that is a host build, with no options changed from the 
usual recipe. Then a second cross compilation build done like 
https://lldb.llvm.org/resources/build.html#example-1-cross-compiling-for-linux-arm64-on-ubuntu-host
in which I just build `ninja lldb-server`.

1. Use existing scripts to build rootfs and kernel - 
https://lldb.llvm.org/resources/qemu-testing.html#create-ubuntu-root-file-system-image-for-qemu-system-emulation-with-rootfs-sh

I did not check whether GCS requires compiler support, might want to double 
check that. I know userspace doesn't but kernel might.

3. Install shrinkwrap (for running the model) - 
https://shrinkwrap.docs.arm.com/en/latest/userguide/quickstart.html#install-shrinkwrap
4. Apply the following diff to shrinkwrap, to open ports on the model to the 
host machine:
```
diff --git a/config/FVP_Base_RevC-2xAEMvA-base.yaml 
b/config/FVP_Base_RevC-2xAEMvA-base.yaml
index 86d8cf9..443bd38 100644
--- a/config/FVP_Base_RevC-2xAEMvA-base.yaml
+++ b/config/FVP_Base_RevC-2xAEMvA-base.yaml
@@ -41,7 +41,8 @@ run:
     # enables ssh.
     -C bp.smsc_91c111.enabled: 1
     -C bp.hostbridge.userNetworking: 1
-    -C bp.hostbridge.userNetPorts: ${rtvar:LOCAL_NET_PORT}=22
+    -C bp.hostbridge.userNetPorts: 
${rtvar:LOCAL_NET_PORT}=22,1234=1234,49140=49140
+
 
     # FVP Performance tweaks.
     -C cache_state_modelled: 0                                        # 
Disable d-cache and i-cache state for all components
```
5. Build the Armv9.5-a model:
```
$ shrinkwrap build --overlay=arch/v9.5.yaml ns-edk2.yaml
```
6. Run the model (note the IP address that it prints at the start):
```
$ shrinkwrap run 
--rtvar=KERNEL=/home/davspi01/work/open_source/linux.build/arm64/arch/arm64/boot/Image
 --rtvar=ROOTFS=/home/davspi01/work/open_source/jammy-arm64-rootfs.img 
ns-edk2.yaml
<...>
Environment ip address: 172.17.0.2.
```
You will see GCS detected in early boot, or you can `cat /proc/cpuinfo` once 
logged in.

7. The rootfs is mounted read-only, for reasons I don't understand, so:
```
$ sudo mount -o remount,rw /
```
8. Copy over ldb-server:
```
$ ninja lldb-server && scp -P 8022 -i ~/.ssh/id_fm_vm ./bin/lldb-server 
davspi01@172.17.0.2:/home/davspi01/
```
9. Start platform:
```
$ ./lldb-server platform --server --listen 0.0.0.0:1234 --gdbserver-port 49140
```
10. Set test compiler in the host lldb build:
```
LLDB_TEST_COMPILER=aarch64-none-linux-gnu-gcc
```
11. Run tests:
```
$ ./bin/lldb-dotest --platform-name remote-linux --platform-url 
connect://172.17.0.2:1234 --platform-working-dir /tmp/test_lldb --arch aarch64 
-p TestAArch64LinuxGCS.py
```
The latter bits could be added to the qemu testing page, I'll see if any of it 
overlaps.

https://github.com/llvm/llvm-project/pull/117861
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to