On Thu, Jan 28, 2010 at 09:19:48AM +0100, Daniel Baumann wrote:
squashfs-tools neither builds with warnings enabled (-Wall) by default nor respects CFLAGS, so I patched the Makefile. The warnings (see below) don't point to any alignment issue, though. I also needed to modify the Makefile again (as -g wasn't used) to make squashfs-tools-dbg actually useful.lacking an arm machine, i'm relaying on the buildd log: https://buildd.debian.org/fetch.cgi?pkg=squashfs-tools;ver=1%3A4.0-6;arch=armel;stamp=1259913213
=== Begin gdb snippet === (gdb) run -l /media/cdrom0/LiveOS/osmin.img Starting program: /usr/bin/unsquashfs -l /media/cdrom0/LiveOS/osmin.img [Thread debugging using libthread_db enabled] [New Thread 0x40ace470 (LWP 14276)] [New Thread 0x412ce470 (LWP 14277)] [New Thread 0x41ace470 (LWP 14278)] [New Thread 0x422ce470 (LWP 14279)] Parallel unsquashfs: Using 1 processor Program received signal SIGBUS, Bus error.squashfs_opendir_4 (block_start=<value optimized out>, offset=<value optimized out>, i=<value optimized out>) at unsquash-4.c:282
warning: Source file is more recent than executable.282 memcpy(dire->name, directory_table + bytes,
(gdb) where#0 squashfs_opendir_4 (block_start=<value optimized out>, offset=<value optimized out>, i=<value optimized out>) at unsquash-4.c:282 #1 0x0000a6bc in pre_scan (parent_name=0x1738c "squashfs-root", start_block=0, offset=56, paths=0x0) at unsquashfs.c:1251
#2 0x0000e758 in main (argc=3, argv=0xbeea77c4) at unsquashfs.c:2155
(gdb)
=== End gdb snippet ===
The problematic part is right at the start of the function:
char buffer[sizeof(squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
squashfs_dir_entry *dire = (squashfs_dir_entry *) buffer;
buffer is only 8bit aligned, but squashfs_dir_entry contains 16bit
members (which need to be 16bit aligned).
One way to solve this is to replace the above two lines by:squashfs_dir_entry dire[SQUASHFS_NAME_LEN/sizeof(squashfs_dir_entry) + 2];
That change makes unsquashfs work in my test case, but there are probably other code paths that need to be fixed before this bug can be closed.
=== Begin warnings during build ===cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o mksquashfs.o mksquashfs.c
mksquashfs.c: In function ?generic_write_table?: mksquashfs.c:1827: warning: unused variable ?obytes? mksquashfs.c: In function ?dir_scan2?:mksquashfs.c:3402: warning: type defaults to ?int? in declaration of ?pseudo_ino?
mksquashfs.c: In function ?add_pending_fragment?: mksquashfs.c:1761: warning: control reaches end of non-void functioncc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o read_fs.o read_fs.c
read_fs.c: In function ?read_fragment_table?: read_fs.c:561: warning: unused variable ?length? read_fs.c: In function ?read_inode_lookup_table?: read_fs.c:597: warning: unused variable ?length?cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o sort.o sort.c cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o swap.o swap.c cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o pseudo.o pseudo.c
pseudo.c: In function ?add_pseudo?: pseudo.c:102: warning: unused variable ?error? pseudo.c: At top level: pseudo.c:59: warning: ?dump_pseudo? defined but not usedcc mksquashfs.o read_fs.o sort.o swap.o pseudo.o -lz -lpthread -lm -o mksquashfs cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o unsquashfs.o unsquashfs.c
unsquashfs.c: In function ?read_super?: unsquashfs.c:1481: warning: unused variable ?d? unsquashfs.c:1481: warning: unused variable ?s? unsquashfs.c:1481: warning: unused variable ?val? unsquashfs.c:1481: warning: unused variable ?b_pos? unsquashfs.c:1481: warning: unused variable ?bits? unsquashfs.c: In function ?initialise_threads?:unsquashfs.c:1814: warning: implicit declaration of function ?get_nprocs?
unsquashfs.c: In function ?main?: unsquashfs.c:1947: warning: unused variable ?winsize?cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o unsquash-1.o unsquash-1.c
unsquash-1.c: In function ?read_block_list_1?: unsquash-1.c:38: warning: unused variable ?d? unsquash-1.c:38: warning: unused variable ?s? unsquash-1.c:38: warning: unused variable ?val? unsquash-1.c:38: warning: unused variable ?b_pos? unsquash-1.c:38: warning: unused variable ?bits? unsquash-1.c: In function ?read_inode_1?: unsquash-1.c:73: warning: unused variable ?d? unsquash-1.c:73: warning: unused variable ?s? unsquash-1.c:73: warning: unused variable ?val? unsquash-1.c:73: warning: unused variable ?b_pos? unsquash-1.c:73: warning: unused variable ?bits? unsquash-1.c:86: warning: unused variable ?d? unsquash-1.c:86: warning: unused variable ?s? unsquash-1.c:86: warning: unused variable ?val? unsquash-1.c:86: warning: unused variable ?b_pos? unsquash-1.c:86: warning: unused variable ?bits? unsquash-1.c:116: warning: unused variable ?d? unsquash-1.c:116: warning: unused variable ?s? unsquash-1.c:116: warning: unused variable ?val? unsquash-1.c:116: warning: unused variable ?b_pos? unsquash-1.c:116: warning: unused variable ?bits? unsquash-1.c:133: warning: unused variable ?d? unsquash-1.c:133: warning: unused variable ?s? unsquash-1.c:133: warning: unused variable ?val? unsquash-1.c:133: warning: unused variable ?b_pos? unsquash-1.c:133: warning: unused variable ?bits? unsquash-1.c:157: warning: unused variable ?d? unsquash-1.c:157: warning: unused variable ?s? unsquash-1.c:157: warning: unused variable ?val? unsquash-1.c:157: warning: unused variable ?b_pos? unsquash-1.c:157: warning: unused variable ?bits? unsquash-1.c:180: warning: unused variable ?d? unsquash-1.c:180: warning: unused variable ?s? unsquash-1.c:180: warning: unused variable ?val? unsquash-1.c:180: warning: unused variable ?b_pos? unsquash-1.c:180: warning: unused variable ?bits? unsquash-1.c: In function ?squashfs_opendir_1?: unsquash-1.c:251: warning: unused variable ?d? unsquash-1.c:251: warning: unused variable ?s? unsquash-1.c:251: warning: unused variable ?val? unsquash-1.c:251: warning: unused variable ?b_pos? unsquash-1.c:251: warning: unused variable ?bits? unsquash-1.c:265: warning: unused variable ?d? unsquash-1.c:265: warning: unused variable ?s? unsquash-1.c:265: warning: unused variable ?val? unsquash-1.c:265: warning: unused variable ?b_pos? unsquash-1.c:265: warning: unused variable ?bits? unsquash-1.c: In function ?read_uids_guids_1?: unsquash-1.c:329: warning: unused variable ?d? unsquash-1.c:329: warning: unused variable ?s? unsquash-1.c:329: warning: unused variable ?val? unsquash-1.c:329: warning: unused variable ?b_pos? unsquash-1.c:329: warning: unused variable ?bits?cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o unsquash-2.o unsquash-2.c
unsquash-2.c: In function ?read_block_list_2?: unsquash-2.c:36: warning: unused variable ?d? unsquash-2.c:36: warning: unused variable ?s? unsquash-2.c:36: warning: unused variable ?val? unsquash-2.c:36: warning: unused variable ?b_pos? unsquash-2.c:36: warning: unused variable ?bits? unsquash-2.c: In function ?read_fragment_table_2?: unsquash-2.c:71: warning: unused variable ?d? unsquash-2.c:71: warning: unused variable ?s? unsquash-2.c:71: warning: unused variable ?val? unsquash-2.c:71: warning: unused variable ?b_pos? unsquash-2.c:71: warning: unused variable ?bits? unsquash-2.c:100: warning: unused variable ?d? unsquash-2.c:100: warning: unused variable ?s? unsquash-2.c:100: warning: unused variable ?val? unsquash-2.c:100: warning: unused variable ?b_pos? unsquash-2.c:100: warning: unused variable ?bits? unsquash-2.c: In function ?read_inode_2?: unsquash-2.c:139: warning: unused variable ?d? unsquash-2.c:139: warning: unused variable ?s? unsquash-2.c:139: warning: unused variable ?val? unsquash-2.c:139: warning: unused variable ?b_pos? unsquash-2.c:139: warning: unused variable ?bits? unsquash-2.c:159: warning: unused variable ?d? unsquash-2.c:159: warning: unused variable ?s? unsquash-2.c:159: warning: unused variable ?val? unsquash-2.c:159: warning: unused variable ?b_pos? unsquash-2.c:159: warning: unused variable ?bits? unsquash-2.c:177: warning: unused variable ?d? unsquash-2.c:177: warning: unused variable ?s? unsquash-2.c:177: warning: unused variable ?val? unsquash-2.c:177: warning: unused variable ?b_pos? unsquash-2.c:177: warning: unused variable ?bits? unsquash-2.c:195: warning: unused variable ?d? unsquash-2.c:195: warning: unused variable ?s? unsquash-2.c:195: warning: unused variable ?val? unsquash-2.c:195: warning: unused variable ?b_pos? unsquash-2.c:195: warning: unused variable ?bits? unsquash-2.c:222: warning: unused variable ?d? unsquash-2.c:222: warning: unused variable ?s? unsquash-2.c:222: warning: unused variable ?val? unsquash-2.c:222: warning: unused variable ?b_pos? unsquash-2.c:222: warning: unused variable ?bits? unsquash-2.c:245: warning: unused variable ?d? unsquash-2.c:245: warning: unused variable ?s? unsquash-2.c:245: warning: unused variable ?val? unsquash-2.c:245: warning: unused variable ?b_pos? unsquash-2.c:245: warning: unused variable ?bits?cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o unsquash-3.o unsquash-3.c
unsquash-3.c: In function ?read_fragment_table_3?:unsquash-3.c:39: warning: ?return? with no value, in function returning non-void
unsquash-3.c:57: warning: unused variable ?d? unsquash-3.c:57: warning: unused variable ?s? unsquash-3.c:57: warning: unused variable ?val? unsquash-3.c:57: warning: unused variable ?b_pos? unsquash-3.c:57: warning: unused variable ?bits? unsquash-3.c:86: warning: unused variable ?d? unsquash-3.c:86: warning: unused variable ?s? unsquash-3.c:86: warning: unused variable ?val? unsquash-3.c:86: warning: unused variable ?b_pos? unsquash-3.c:86: warning: unused variable ?bits? unsquash-3.c: In function ?read_inode_3?: unsquash-3.c:125: warning: unused variable ?d? unsquash-3.c:125: warning: unused variable ?s? unsquash-3.c:125: warning: unused variable ?val? unsquash-3.c:125: warning: unused variable ?b_pos? unsquash-3.c:125: warning: unused variable ?bits? unsquash-3.c:145: warning: unused variable ?d? unsquash-3.c:145: warning: unused variable ?s? unsquash-3.c:145: warning: unused variable ?val? unsquash-3.c:145: warning: unused variable ?b_pos? unsquash-3.c:145: warning: unused variable ?bits? unsquash-3.c:161: warning: unused variable ?d? unsquash-3.c:161: warning: unused variable ?s? unsquash-3.c:161: warning: unused variable ?val? unsquash-3.c:161: warning: unused variable ?b_pos? unsquash-3.c:161: warning: unused variable ?bits? unsquash-3.c:178: warning: unused variable ?d? unsquash-3.c:178: warning: unused variable ?s? unsquash-3.c:178: warning: unused variable ?val? unsquash-3.c:178: warning: unused variable ?b_pos? unsquash-3.c:178: warning: unused variable ?bits? unsquash-3.c:203: warning: unused variable ?d? unsquash-3.c:203: warning: unused variable ?s? unsquash-3.c:203: warning: unused variable ?val? unsquash-3.c:203: warning: unused variable ?b_pos? unsquash-3.c:203: warning: unused variable ?bits? unsquash-3.c:229: warning: unused variable ?d? unsquash-3.c:229: warning: unused variable ?s? unsquash-3.c:229: warning: unused variable ?val? unsquash-3.c:229: warning: unused variable ?b_pos? unsquash-3.c:229: warning: unused variable ?bits? unsquash-3.c:252: warning: unused variable ?d? unsquash-3.c:252: warning: unused variable ?s? unsquash-3.c:252: warning: unused variable ?val? unsquash-3.c:252: warning: unused variable ?b_pos? unsquash-3.c:252: warning: unused variable ?bits? unsquash-3.c: In function ?squashfs_opendir_3?: unsquash-3.c:323: warning: unused variable ?d? unsquash-3.c:323: warning: unused variable ?s? unsquash-3.c:323: warning: unused variable ?val? unsquash-3.c:323: warning: unused variable ?b_pos? unsquash-3.c:323: warning: unused variable ?bits? unsquash-3.c:337: warning: unused variable ?d? unsquash-3.c:337: warning: unused variable ?s? unsquash-3.c:337: warning: unused variable ?val? unsquash-3.c:337: warning: unused variable ?b_pos? unsquash-3.c:337: warning: unused variable ?bits?cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2 -Wall -c -o unsquash-4.o unsquash-4.c cc unsquashfs.o unsquash-1.o unsquash-2.o unsquash-3.o unsquash-4.o swap.o -lz -lpthread -lm -o unsquashfs
=== End warnings during build === CU Sascha -- http://sascha.silbe.org/ http://www.infra-silbe.de/
signature.asc
Description: Digital signature

