[RFC] code changes/removal in boot2.c and ufsread.c so clang
can compile boot2
Warner Losh
imp at bsdimp.com
Tue Feb 22 18:17:05 UTC 2011
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?
Warner
More information about the freebsd-toolchain
mailing list