Re: [PATCH 2.6.17-rc6 7/9] Remove some of the kmemleak false positives

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 24/07/06, Ingo Molnar <[email protected]> wrote:
update: there's also a neat gcc extension trick suggested by Arjan:
__builtin_classify_type(). This converts types into integers!

It's not really reliable as it doesn't distinguish well between types.
All the structures, no matter what they contain, have the same id
(which I think only refers to the fact that it is built-in type,
pointer or structure, without differentiation).

The attached code gives the following results:

typeof(a) = 12, sizeof(a) = 136
typeof(b) = 12, sizeof(b) = 8
typeof(c) = 1, sizeof(c) = 4
typeof(d) = 1, sizeof(d) = 4
typeof(e) = 1, sizeof(e) = 4
typeof(f) = 1, sizeof(f) = 1
typeof(g) = 5, sizeof(g) = 4
typeof(h) = 5, sizeof(h) = 4

--
Catalin
#include <stdio.h>

struct A {
	void *a;
	long b;
	char c[128];
};

struct B {
	long a;
	void *b;
};

enum C {
	a,
	b
};

#define PRINT_TYPE(val)							\
	printf("typeof(" #val ") = %d, sizeof(" #val ") = %d\n",	\
			__builtin_classify_type(val),			\
			sizeof(val))

int main()
{
	struct A a;
	struct B b;
	enum C c;
	int d;
	long e;
	char f;
	int *g;
	char *h;

	PRINT_TYPE(a);
	PRINT_TYPE(b);
	PRINT_TYPE(c);
	PRINT_TYPE(d);
	PRINT_TYPE(e);
	PRINT_TYPE(f);
	PRINT_TYPE(g);
	PRINT_TYPE(h);

	return 0;
}

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux