[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