On 9/10/21 10:30 PM, i...@bsdimp.com wrote: > From: Warner Losh <i...@bsdimp.com> > > The following changes since commit a61c30b8c8c3c8619847cfaa289233cc696f5689: > > Merge remote-tracking branch 'remotes/mjt/tags/patch-fetch' into staging > (2021-09-07 10:15:48 +0100) > > are available in the Git repository at: > > https://gitlab.com/bsdimp/qemu.git tags/pull-bsd-user-20210910
Well done, chapeau! > for you to fetch changes up to be04f210f954bed8663943a94ece50c2ca410231: > > bsd-user: Update mapping to handle reserved and starting conditions > (2021-09-10 14:13:06 -0600) > > ---------------------------------------------------------------- > This series of patches gets me to the point that I can run "Hello World" on > i386 > and x86_64. This is for static binaries only, that are relatively small, but > it's better than the 100% instant mmap failre that is the current state of all > things bsd-user in upstream qemu. Future patch sets will refine this, add > the missing system calls, fix bugs preventing more sophisticated programms > from running and add a bunch of new architecture support. > > There's three large themes in these patches, though the changes that > represent them are interrelated making it hard to separate out further. > 1. Reorganization to support multiple OS and architectures (though I've only > tested FreeBSD, other BSDs might not even compile yet). > 2. Diff reduction with the bsd-user fork for several files. These diffs > include > changes that borrowed from linux-user as well as changes to make things > work > on FreeBSD. The records keeping when this was done, however, was poor at > best, so many of the specific borrowings are going unacknowledged here, > apart > from this general ack. These diffs also include some minor code shuffling. > Some of the changes are done specifically to make it easier to rebase > the bsd-user fork's changes when these land in the tree (a number of > changes > have been pushed there to make this more possible). > 3. Filling in the missing pieces to make things work. There's many changes to > elfload to make it load things in the right places, to find the interpreter > better, etc. There's changes to mmap.c to make the mappings work better and > there's changes to main.c that were inspired, at least, by now-ancient > changes > to linux-user's main.c. > > I ran checkpatch.pl on this, and there's 350-odd errors it identifies (the > vast > majoirty come from BSD's fetish for tabs), so there will need to be a V2 to > fix > this at the very least. In addition, the change set is big (about > +~4.5k/-~2.5k > lines), so I anticipate some iteration as well just based on its sheer > size. I've tried to keep each set small to make it easy to review in > isolation, > but I've also allowed some interrelated ones to get a little bigger than I'd > normally like. I've not done the customary documentation of the expected > checkpatch.pl output because it is large, and because I wanted to get review > of the other parts rolling to get this project unstuck. Future versions of the > patch will document the expected output. > > In addition, I noticed a number of places where I could modernize to make the > code match things like linux-user better. I've resisted the urge to do these > at > this time, since it would complicate merging the other ~30k lines of diff that > remains after this batch. Future batches should generally be smaller once this > one has landed since they are, by and large, either a bunch of new files to > support armv7, aarch64, riscv64, mips, mipsel, mips64, ppc, ppc64 and ppc64le, > or are adding system calls, which can be done individually or small groups. > I've > removed sparc and sparc64 support as they've been removed from FreeBSD and > have been near totally busted for years. > > Stacey Son did the bulk of this work originally, but since I had to move > things > around so much and/or retool that work in non-trivial ways, I've kept myself > as > author, and added his signed-off-by line. I'm unsure of the qemu standard > practice for this, but am happy to learn if this is too far outside its > current > mainstream. For a while Sean Bruno did the merges from upstream, and he's > credited using his signed-off-by in appropriate places, though for this patch > set there's only a few. I've tried to ensure that others who have work in > individual patches that I've aggregated together also are reflected in their > signed-off-by. Given the chaotic stat of the upstream repo for its early > history, this may be the best that can be reconstructed at this late date. > Most > of these files are 'foundational' so have existed from the earliest days when > record keeping wasn't quite what I'd wish for in hindsight. There was only > really one change that I could easily cherry-pick (Colin's), so I did that. > > ---------------------------------------------------------------- > Colin Percival (1): > bsd-user: Add '-0 argv0' option to bsd-user/main.c > > Warner Losh (41): > bsd-user: remove sparc and sparc64 > bsd-user: add copyright header to elfload.c > bsd-user: Add Stacey's copyright to main.c > bsd-user: add license to bsdload.c ...