On Monday 16 December 2013 07:29:45 Rolf Eike Beer wrote:
> I try to build strace 4.8 against an old glibc (2.3.4). This breaks
> multiple times in loop.c. The failures I found so far are:
> 
> -the glibc <linux/loop.h> forbids the header to be used from glibc using
> programs, because glibc uses a 32 bit dev_t, which would cause wrong struct
> layout in loop_info. I fixed this by this before including <linux/loop.h>:

there is no "glibc linux/loop.h".  what you're describing is actually the 
kernel's loop.h, and it's from the pre-userspace sanitization days.

the kernel header linux/loop.h doesn't use dev_t, it uses __kernel_old_dev_t.  
it was fixed here:
commit 3f586c74e6b1620bb495d8a1508ec40f5d301d8e
Author: Andries E. Brouwer <[email protected]>
Date:   Fri Apr 18 03:18:49 2003 -0700

that was first released in linux-2.5.68 in Apr 2003.

so the question really is, do we care about linux systems using kernel headers 
that are more than a decade old ?  i think the sane answer is "no".

it would be easy to add a check like so though:
#include <linux/version.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
int loop_ioctl(struct tcb *tcp, long code, long arg)
{
        /* Your system is too old for us to care.  */
        return 0;
}
#else
... existing code ...
#endif
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Strace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to