Date: Tue, 22 Feb 2011 19:23:13 +0000 From: Alexander Best <arundel@freebsd.org> To: Roman Divacky <rdivacky@freebsd.org> Cc: freebsd-toolchain@freebsd.org Subject: Re: [RFC] code changes/removal in boot2.c and ufsread.c so clang can compile boot2 Message-ID: <20110222192313.GA44517@freebsd.org> In-Reply-To: <20110222191431.GA40313@freebsd.org> References: <20110219010136.GA92824@freebsd.org> <4D63FCC1.4040108@bsdimp.com> <20110222183015.GA37986@freebsd.org> <20110222191431.GA40313@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue Feb 22 11, Roman Divacky wrote: > fwiw, this is what I have: > > http://lev.vlakno.cz/~rdivacky/boot2-diet.patch > > with some llvm changed (-mrtd implementation + earlycse at the > end of -O2) I am still at -113 bytes short on UFS1+UFS2 boot2 i was wondering...could we get rid of all the PATH_CONFIG and PATH_KERNEL stuff? i tried this the other day with gptboot (which is pretty much identical to boot2) and it seems booting a kernel directly got broken a long time ago. so since invoking the loader is mandatory we could dump the kernel loading code and the code that looks for entries in /boot.config completely. you should be able to verify this by hitting a key before boot2 comes up and enter the path to your kernel directly. for me it failed loading the kernel (that's on amd64) with some btx error. cheers. alex > > this is with latest llvm, with the one in fbsd it was at roughly -80 > (stack alignment changes) > > On Tue, Feb 22, 2011 at 06:30:16PM +0000, Alexander Best wrote: > > On Tue Feb 22 11, Warner Losh wrote: > > > On 02/18/2011 18:01, Alexander Best wrote: > > > >hi everybody, > > > > > > > >r218745 triggered quite a discussion about dead code in boot2.c. i talked > > > >to > > > >roman (rdivacky@) and we were trying to improve the situation so that boot2 > > > >would build with clang 2.8 (base) and the latest development version of > > > >clang (trunk). a lot of the ideas came from Bruce (bde@). > > > > > > > >i'd really appreciate, if somebody could have a look at this patchset. for > > > >me > > > >it strips down the boot2 code so clang is able to compile it just fine. > > > >please > > > >bear in mind that this has to work with boot2 supporting UFS1 *and* UFS2. > > > >so > > > >please be sure not to override BOOT2_UFS in your src.conf or some place > > > >else. > > > > > > > >you should be able to test the (hopefully sucessfully) compiled boot2 > > > >binary > > > >by copying it to /boot. please be sure to keep a backup of your existing > > > >boot2 > > > >file in case something breaks. > > > > > > > >the patchset (against a recent HEAD) can be found here: > > > >http://people.freebsd.org/~arundel/patches/boot2.c.diff2 > > > > > > > >cheers. > > > >alex > > > > > > > > > > Here's some comments: > > > > > > @@ -88,7 +97,7 @@ static ino_t lookup(const char *); > > > static ssize_t fsread(ino_t, void *, size_t); > > > > > > static int ls, dsk_meta; > > > -static uint32_t fs_off; > > > +static uint32_t fs_off = 0; > > > > > > static __inline int > > > fsfind(const char *name, ino_t * ino) > > > @@ -98,7 +107,6 @@ fsfind(const char *name, ino_t * ino) > > > char *s; > > > ssize_t n; > > > > > > - fs_off = 0; > > > while ((n = fsread(*ino, buf, DEV_BSIZE))> 0) > > > for (s = buf; s< buf + DEV_BSIZE;) { > > > d = (void *)s; > > > > > > How does the first part of this diff change things? bss gets the > > > uninitialized and the data initialized to 0. > > > > > > but we also have this later: > > > > > > @@ -238,7 +245,6 @@ fsread(ino_t inode, void *buf, size_t nbyte) > > > > > > #endif > > > inomap = inode; > > > - fs_off = 0; > > > blkmap = indmap = 0; > > > } > > > s = buf; > > > > > > > > > - if (N_GETMAGIC(hdr.ex) == ZMAGIC) > > > - fmt = 0; > > > - else if (IS_ELF(hdr.eh)) > > > + if (IS_ELF(eh)) > > > fmt = 1; > > > > > > > > > Doesn't this remove a.out support? > > > > indeed i removed that part from the newest patch: > > > > http://people.freebsd.org/~arundel/patches/boot2.c.diff3 > > > > > > > > Warner > > > > -- > > a13x > > _______________________________________________ > > freebsd-toolchain@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain > > To unsubscribe, send any mail to "freebsd-toolchain-unsubscribe@freebsd.org" -- a13x
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110222192313.GA44517>