Re: Latest Debian package online (including sources)

Bas van Schaik <[email protected]> Mon, 03 Jul 2006 20:52:49 +0200
Newsgroups gmane.linux.enbd.general
Message-ID <[email protected]>
Peter T. Breuer wrote:
> "Also sprach Bas van Schaik:"
> [Charset ISO-8859-1 unsupported, filtering to ASCII...]
> 
>>>debian:/var/cache/apt/archives# modprobe enbd
>>>FATAL: Error inserting enbd (/lib/modules/2.6.16-2-686/enbd/enbd.ko): Unknown symbol in module, or unknown parameter (see dmesg)
>>
>>And dmesg says:
>>
>>>enbd: Unknown symbol strcpy
> 
> 
> strcpy is not used in my code.
> 
>   % find kernel/linux-2.6.x/ -type f | xargs grep strcpy
>   betty:/usr/oboe/ptb/lang/c/nbd/nbd-2.4.33% 
> 
> 
>>Don't have time to investigate it right now, but please tell me the
>>solution when you know!
> 
> 
> If it's been introduced, you'll have to tell me how. Show me the
> compile lines used for compiling the enbd.ko components and I'll tell
> you what to do next. Or, anyway, you can do something like nm
> --print-file-name *.o | grep -w strcpy in the place where the .o files
> are compiled to see what component has had the strcpy introduced into
> it. Then show me the compile line for that.
I didn't introduce it, and indeed, I can't find the string "strcpy" in
the module sources.

Here's the compile output (just a make "module"):
> /bin/sh: line 0: [: -lt: unary operator expected
> make[1]: Entering directory `/usr/src/linux-headers-2.6.16-2-686'
> *** Warning: Overriding SUBDIRS on the command line can cause
> ***          inconsistencies
> mkdir -p /tmp/linux-2.6.x/.tmp_versions
> make -f /usr/src/linux-headers-2.6.16-2-686/scripts/Makefile.build obj=/tmp/linux-2.6.x/drivers/block/enbd
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_base.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_base)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_base.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_base.c
> /tmp/linux-2.6.x/drivers/block/enbd/enbd_base.c: In function 'enbd_ioctl':
> /tmp/linux-2.6.x/drivers/block/enbd/enbd_base.c:4520: warning: pointer targets in passing argument 1 of 'remote_ioctl->convert_inplace' differ in signedness
> /tmp/linux-2.6.x/drivers/block/enbd/enbd_base.c: At top level:
> /tmp/linux-2.6.x/drivers/block/enbd/enbd_base.c:4628: warning: 'enbd_read_block_0' defined but not used
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_ioctl_stub.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_ioctl_stub)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_ioctl_stub.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl_stub.c
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_seqno.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_seqno)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_seqno.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_seqno.c
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_md.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_md)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_md.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_md.c
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_speed.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_speed)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_speed.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_speed.c
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_proc.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_proc)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_proc.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_proc.c
>   ld -m elf_i386  -r -o /tmp/linux-2.6.x/drivers/block/enbd/enbd.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_base.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl_stub.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_seqno.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_md.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_speed.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_proc.o
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_ioctl.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement   -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_ioctl)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd_ioctl)" -c -o /tmp/linux-2.6.x/drivers/block/enbd/.tmp_enbd_ioctl.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.c
>   Building modules, stage 2.
> make -rR -f /usr/src/linux-headers-2.6.16-2-686/scripts/Makefile.modpost VPATH=/usr/src/linux-headers-2.6.16-2-686
>   scripts/mod/modpost -m  -o /tmp/Module.symvers /tmp/linux-2.6.x/drivers/block/enbd/enbd.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.o
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd.mod.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd)" -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -c -o /tmp/linux-2.6.x/drivers/block/enbd/enbd.mod.o /tmp/linux-2.6.x/drivers/block/enbd/enbd.mod.c
>   ld -m elf_i386 -r -o /tmp/linux-2.6.x/drivers/block/enbd/enbd.ko /tmp/linux-2.6.x/drivers/block/enbd/enbd.o /tmp/linux-2.6.x/drivers/block/enbd/enbd.mod.o
>   gcc -I/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include -Wp,-MD,/tmp/linux-2.6.x/drivers/block/enbd/.enbd_ioctl.mod.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float   -march=i686 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(enbd_ioctl)"  -D"KBUILD_MODNAME=KBUILD_STR(enbd_ioctl)" -DMODULE -I"/home/bas/temp/modules/enbd-module/kernel/linux-2.6.x/include" -c -o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.mod.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.mod.c
>   ld -m elf_i386 -r -o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.ko /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.o /tmp/linux-2.6.x/drivers/block/enbd/enbd_ioctl.mod.o
> make[1]: Leaving directory `/usr/src/linux-headers-2.6.16-2-686'

I've noticed the weird "unary operator expected" error, but can't find
the cause of it. There's only line in your code (somewhere in
kernel/Makefile) which contains the "-lt" test, but the error keeps
appearing even if this line is commented out. I've also noticed the
build warnings, but I don't think those can cause the "unknown
symbol"-error. I hope you can tell me what to do, because I really don't
know...

I'v executed nm ask you requested:
> $ nm -l --debug-syms --print-file-name /tmp/*.ko | grep strcpy
> /tmp/enbd.ko:         U strcpy  enbd_proc.c:0

Note that I didn't change anything in the upstream sources!

-- Bas