On 7/19/21 11:19 AM, Sid Manning wrote:>> -----Original Message----- >> From: Brian Cain >> Sent: Monday, July 19, 2021 8:40 AM >> To: Rob Landley ; Taylor Simpson >> ; qemu-devel@nongnu.org; Sid Manning >> >> Cc: ale@rev.ng; peter.maydell@linaro.org; richard.henderson@linaro.org; >> philmd@redhat.com >> Subject: RE: [EXT] Re: [PATCH 01/20] Hexagon HVX (target/hexagon) >> README >> >> > -----Original Message----- >> > From: Rob Landley >> ... >> > On 7/12/21 8:42 AM, Brian Cain wrote: >> ... >> > > and there's also a binary hexagon-linux cross toolchain that we >> > > shared for use by kernel developers. The hexagon linux toolchain is >> > > built on Ubuntu 16.04. >> > >> > Where's that one? >> >> https://codelinaro.jfrog.io/artifactory/codelinaro-qemu/2021-05- >> 12/clang+llvm-12.0.0-cross-hexagon-unknown-linux-musl.tar.xz - >> - Built on Ubuntu 16.04, similar dynamic dependencies as >> releases.llvm.org binaries Indeed, in a "that also does not run on devuan, which is 99% stock debian" way. :( Luckily, I built a working hexagon toolchain with the attached script, as in "qemu-hexagon ran a statically linked toybox", and it even built a kernel. I'm still trimming the build script down, that clang-rt section is WAY too big, and I need to static link the binaires it produces so I can tar 'em up and use them under a different distro, and I haven't even _started_ making a native toolchain yet.[1] Next question: is there a qemu-system-hexagon anywhere? I mentioned I built a comet_defconfig kernel, ala: LLVM_IAS=1 CROSS_COMPILE=~/toybox/hexagon/ccc/cross_bin/hexagon-unknown-linux-musl- make ARCH=hexagon CC=~/toybox/hexagon/ccc/cross_bin/hexagon-unknown-linux-musl-cc Which is kinda silly because: 1) Other packages figure out that ${CROSS}cc works but Linux insists on ${CROSS}gcc, and you can't even do "CC=cc make" because then it won't add the cross compiler prefix. (And if I say LLVM=1 on the kernel command line, which I shouldn't have to do, it uses _unprefixed_ clang as the $CC name, despite cross compiling.) 2) If you don't set LLVM_IAS it tries to call the UNPREFIXED assembler, again while cross compiling. Anyway, I've got a compiler now and I (awkwardly) built a kernel and I'm sitting down to try to figure out how to get qemu to invoke it: does this arch want vmlinux or arch/hexagon/boot/$RANDOMFORMAT, is serial on console=ttyS0 or /significant/dev/prefix/ttyasparagus0 or... See https://github.com/landley/toybox/blob/master/scripts/mkroot.sh#L186 for the other architectures I've already added to toybox's mkroot, yes I have a ~250 line bash script that builds bootable Linux systems for a bunch of different architectures and adding a new architecture looks like: elif [ "$TARGET" == m68k ]; then QEMU="m68k -M q800" KARCH=m68k KARGS=ttyS0 VMLINUX=vmlinux KCONF=MMU,M68040,M68KFPU_EMU,MAC,SCSI_MAC_ESP,MACINTOSH_DRIVERS,ADB,ADB_MACII,NET_CORE,MACSONIC,SERIAL_PMACZILOG,SERIAL_PMACZILOG_TTYS,SERIAL_PMACZILOG_CONSOLE (There's a little documentation at https://landley.net/toybox/faq.html#mkroot if you're curious.) Anyway... it doesn't look like qemu-system-hexagon (softmmu) its currently in vanilla qemu? Is there a public fork that has this somewhere? Thanks, Rob [1] Why does https://llvm.org/docs/GettingStarted.html#cross-compiling-llvm talk about osx? Dear compiler writers: a compiler is conceptually the same as an html to pdf converter. It takes input files, it produces output files. Yes some of the input files are common library stuff like fonts reused by multiple input/output pairs... again like an html to pdf converter. This is not unprecedented black magic. Sure it's clever. So was Quake, which has now been genericized into a broad industry from WoW to Skyrim.