|
Message-ID: <51018B65.5060405@univie.ac.at> Date: Thu, 24 Jan 2013 20:28:37 +0100 From: Alexander Stadler <sa.musl@...vie.ac.at> To: musl@...ts.openwall.com Subject: Re: unknown type name 'loff_t' Am 24.01.2013 20:19, schrieb Rich Felker: > On Thu, Jan 24, 2013 at 07:57:28PM +0100, Alexander Stadler wrote: >> Am 23.01.2013 18:37, schrieb Rich Felker: >>> On Wed, Jan 23, 2013 at 06:33:42PM +0100, Alexander Stadler wrote: >>>> Thanks for your fast responses. >>>> >>>> The other error I'm currently running into is >>>> >>>> make[4]: Entering directory `/space/build-trunk/trunk/build_dir/target-mips_r2_musl-0.9.8/uboot-envtools-2012.04.01' >>>> mips-openwrt-linux-musl-gcc -Wall -Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves -mno-branch-likely -fhonour-copts -Wno-error=unused-but-set-variable -msoft-float -I/space/build-trunk/trunk/staging_dir/target-mips_r2_musl-0.9.8/usr/include -I/space/build-trunk/trunk/staging_dir/target-mips_r2_musl-0.9.8/include -I/space/build-trunk/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_musl-0.9.8/usr/include -I/space/build-trunk/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_musl-0.9.8/include crc32.c fw_env.c fw_env_main.c -o fw_printenv >>>> fw_env.c:643:55: error: unknown type name 'loff_t' >>>> fw_env.c: In function 'flash_read_buf': >>>> fw_env.c:680:2: error: unknown type name 'loff_t' >>>> fw_env.c:713:3: warning: implicit declaration of function 'flash_bad_block' [-Wimplicit-function-declaration] >>>> fw_env.c: In function 'flash_write_buf': >>>> fw_env.c:777:2: error: unknown type name 'loff_t' >>>> make[4]: *** [fw_printenv] Error 1 >>>> make[4]: Leaving directory `/space/build-trunk/trunk/build_dir/target-mips_r2_musl-0.9.8/uboot-envtools-2012.04.01' >>> >>> Where is loff_t being used? It's probably the wrong type to use. The >>> only APIs loff_t is to be used with are under _GNU_SOURCE, so if you >>> don't need -D_GNU_SOURCE to get the functions, it's doubtful that >>> loff_t should be used. These functions are in fcntl.h, and it will >>> #define loff_t off_t when _GNU_SOURCE is defined, so either >>> -D_GNU_SOURCE or -Dloff_t=off_t would be a workaround, but I think the >>> issue should be investigated to determine if there's code that needs >>> to be fixed or if there are other circumstances under which loff_t >>> should be exposed by musl. >>> >>> Rich >> >> It's used in >> http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=tools/env/fw_env.c;h=37b60b80a7624566d9ecefdd04c0658134bd654d;hb=HEAD >> where (you were absolutely right) a #include <fcntl.h> exists. >> And -D_GNU_SOURCE helped. Thank you! > > It looks like some ioctl interfaces also request loff_t in their > official usage, so musl should do something to ensure it's exposed for > ioctl. I'm not sure however what the best way is. Simply adding > > #define loff_t off_t > > to sys/ioctl.h is not sufficient because off_t might not be defined, > so another header would need to be included to get off_t. Note that > sys/ioctl.h is not under the domain of any modern standard, so it > would not be a horrible offense to make it include extra junk if we > need to.. > >> Happy about that, unfortunately there will come up much more things >> I think, as seconds later the next undeclared error popped up.. > > OK, I'll take a look. > >> (when compiling mtd >> mips-openwrt-linux-musl-gcc -Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves -mno-branch-likely -fhonour-copts -Wno-error=unused-but-set-variable -msoft-float -Dtarget_ar71xx=1 -Wall -DFIS_SUPPORT=1 -I/space/build-trunk/trunk/staging_dir/target-mips_r2_musl-0.9.8/usr/include -I/space/build-trunk/trunk/staging_dir/target-mips_r2_musl-0.9.8/include -I/space/build-trunk/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_musl-0.9.8/usr/include -I/space/build-trunk/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_musl-0.9.8/include -Wall -c -o fis.o fis.c >> fis.c: In function 'fis_open': >> fis.c:80:64: error: 'MAP_LOCKED' undeclared (first use in this function) >> fis.c:80:64: note: each undeclared identifier is reported only once for each function it appears in >> >> So I wonder why uClibc? seems to include these things. But there are >> so many mman.h's and the one referenced from fis.c (sys/mman.h) >> seems not to have the define, but otheres have.. . How could a >> proper procedure look like to include these things, and on which >> side of the code this should go is what I currently don't understand >> at all. I just don't want to bother you if its bad behaviour of >> Uclibc which enabled this things to work. But than propably an >> generic workaround could be found. > > MAP_LOCKED is a Linux extension to mmap that somehow never got added > to musl when the others were added. Its definition probably varies > per-arch. I'll see if I can get somebody to find what's needed to add > it correctly for all archs. You're right, unfortunately it varies. http://lxr.free-electrons.com/ident?i=MAP_LOCKED > > Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.