Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Feb 2011 20:14:31 +0100
From:      Roman Divacky <rdivacky@freebsd.org>
To:        Alexander Best <arundel@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:  <20110222191431.GA40313@freebsd.org>
In-Reply-To: <20110222183015.GA37986@freebsd.org>
References:  <20110219010136.GA92824@freebsd.org> <4D63FCC1.4040108@bsdimp.com> <20110222183015.GA37986@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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

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"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110222191431.GA40313>