[RFC] code changes/removal in boot2.c and ufsread.c so clang can compile boot2

Alexander Best arundel at freebsd.org
Sun Feb 20 04:11:07 UTC 2011


On Sat Feb 19 11, Roman Divacky wrote:
> On Sat, Feb 19, 2011 at 01:01:36AM +0000, 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.
>  
> no, just copying it to /boot is not enough. you have to run bsdlabel -B to
> actually install it
> 
> > the patchset (against a recent HEAD) can be found here:
> > http://people.freebsd.org/~arundel/patches/boot2.c.diff2
> 
> the patch is wrong - you cant remove a.out support as "loader" still uses that
> 
> I like the int -> unsigned parts of the patch and also the memsize() removal
> may be interesting.

here's an updated patchset:
http://people.freebsd.org/~arundel/patches/boot2.c.diff3

maybe we could somehow get rid of the last printf() in ufsread.c:

        while ((n = fsread(*ino, buf, DEV_BSIZE)) > 0)
                for (s = buf; s < buf + DEV_BSIZE;) {
                        d = (void *)s;
                        if (ls)
                                printf("%s ", d->d_name);
                        else if (!strcmp(name, d->d_name)) {
                                *ino = d->d_ino;
                                return d->d_type;
                        }
                        s += d->d_reclen;
                }
        if (n != -1 && ls)
                printf("\n");
        return 0;

this would us gain another 26 bytes.

cheers.
alex

> 
> roman

-- 
a13x


More information about the freebsd-toolchain mailing list