Date: Thu, 25 Jul 2013 08:11:31 +0200 From: Hans Petter Selasky <hps@bitfrost.no> To: Damjan Jovanovic <damjan.jov@gmail.com> Cc: freebsd-usb@freebsd.org Subject: Re: COMPAT_32BIT libusb ABI problem Message-ID: <51F0C193.4000104@bitfrost.no> In-Reply-To: <CAJm2B-mfidBre0tCwJg=6OirBtdgvxCTrGGVX-3kqQ8vYf1kFw@mail.gmail.com> References: <CAJm2B-mfidBre0tCwJg=6OirBtdgvxCTrGGVX-3kqQ8vYf1kFw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 07/24/13 22:09, Damjan Jovanovic wrote: > Hi > > The ioctl: > #define USB_FS_INIT _IOW ('U', 195, struct usb_fs_init) > when used by a COMPAT_32BIT libusb on amd64, fails (causing > libusb_open() to fail) due to: > > freebsd32_ioctl(0x6,0x800c55c3,0xffffc710,0x0,0x0,0x0) ERR#25 > 'Inappropriate ioctl for device' > but when hacked a bit: > freebsd32_ioctl(0x6,0x801055c3,0xffffc710,0x0,0x0,0x0) = 0 (0x0) > > because sizeof(struct usb_fs_init) is 12 bytes on i386, and 16 bytes on amd64. > > But the failure of even libusb_open() - a fundamental libusb function > - must mean that the COMPAT_32BIT libusb never worked. Can we please > take this opportunity to kill it and do a real 32 bit compatibility > layer in the kernel that will work from 32 bit chroots and statically > linked 32 bit binaries? I'll help. Hi, How did you compile it? Is the structure the same size, compiled with GCC and LLVM? The LIB32 for USB has been tested. I did a quick test and found on 9-stable: cc -m32 -I . -L /usr/lib32 -lusb usbconfig.c dump.c env LD_PRELOAD=/usr/lib32/libusb.so ./a.out ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) ... Your approach requires much more code. It is not just about some structures, but also about code accessing those structures. Feel free to submit a patch however. I would rather fix this by adding the proper __aligned() to the structures in question. --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51F0C193.4000104>