Arnaldo Carvalho de Melo
6497bcae21
[CLASSES]: Handle typedef opaque types
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 14:29:08 -02:00
Arnaldo Carvalho de Melo
baadeeb7c0
[CLASSES]: Add a hack for the parm lists in function pointer struct members
...
To "fix" this:
/* include/linux/timer.h:10 */
struct timer_list {
<SNIP>
void (*function)(); /* 12 4 */
<SNIP>
ctracer.c:3077: warning: function declaration isn't a prototype
Doing this for now:
struct timer_list {
<SNIP>
void (*function)(void /* FIXME: add parm list */); /* 12 4 */
<SNIP>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 14:06:48 -02:00
Arnaldo Carvalho de Melo
9de459007b
[CLASSES]: Handle alternative function typedefs
...
Now we handle:
typedef void (dio_iodone_t)(void /* FIXME: add parm list */);
In addition to:
typedef int (*kprobe_pre_handler_t)(void /* FIXME: add parm list */);
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 14:00:16 -02:00
Arnaldo Carvalho de Melo
8716a7e2a7
[CLASSES]: Handle arrays in cus__emit_tag_definitions
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 13:52:28 -02:00
Arnaldo Carvalho de Melo
4587fc886a
[CLASSES]: Handle 'const' and 'volatile' in cus__emit_tag_definitions
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 13:51:01 -02:00
Arnaldo Carvalho de Melo
c9ccd3bb04
[CTRACER]: Add helper functions to emit struct definitions and fwd declarations
...
[acme@newtoy pahole]$ codiff build/ctracer.before build/ctracer
/home/acme/pahole/ctracer.c:
emit_module_preamble | -188
1 function changed, 188 bytes removed
/home/acme/pahole/ctracer.c:
emit_struct_defs | +74
emit_class_fwd_decl | +58
2 functions changed, 132 bytes added
build/ctracer:
3 functions changed, 132 bytes added, 188 bytes removed
[acme@newtoy pahole]$
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 13:36:13 -02:00
Arnaldo Carvalho de Melo
ef4fe6ebac
[CODIFF]: Find structs that were removed
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 13:35:21 -02:00
Arnaldo Carvalho de Melo
349463c0ca
[CODIFF]: Handle new functions
...
[acme@newtoy pahole]$ codiff build/ctracer.before build/ctracer
/home/acme/pahole/ctracer.c:
emit_module_preamble | -188
1 function changed, 188 bytes removed
/home/acme/pahole/ctracer.c:
emit_struct_defs | +74
emit_class_fwd_decl | +58
2 functions changed, 132 bytes added
build/ctracer:
3 functions changed, 132 bytes added, 188 bytes removed
[acme@newtoy pahole]$
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 13:03:33 -02:00
Arnaldo Carvalho de Melo
7483c767f4
[CLASSES]: 'type' is also a Dwarf_Off
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 12:18:14 -02:00
Arnaldo Carvalho de Melo
45c40e4b8d
[CLASSES]: Use Dwarf_Off type for the cu_offset derived variables/members
...
This is part of a cleanup process were I'm revisiting the types used for
the various abstractions, using the correct libdw.h types.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 12:07:41 -02:00
Arnaldo Carvalho de Melo
30128e9d11
[CLASSES]: Use uint32_t for the cu id
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 12:00:07 -02:00
Arnaldo Carvalho de Melo
3ca40af1fd
[CLASSES]: Add support for enums
...
Be it named enums such as:
/* include/linux/pid.h:7 */
enum pid_type {
PIDTYPE_PID = 0,
PIDTYPE_PGID = 1,
PIDTYPE_SID = 2,
PIDTYPE_MAX = 3,
};
Or nameless enums inside structs:
/* include/linux/journal-head.h:14 */
typedef struct transaction_s {
journal_t * t_journal; /* 0 4 */
tid_t t_tid; /* 4 4 */
enum {
T_RUNNING = 0,
T_LOCKED = 1,
T_RUNDOWN = 2,
T_FLUSH = 3,
T_COMMIT = 4,
T_FINISHED = 5,
} t_state; /* 8 4 */
long unsigned int t_log_start; /* 12 4 */
<SNIP>
} transaction_t; /* size: 84, cachelines: 3 */
/* last cacheline: 20 bytes */
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-24 11:56:59 -02:00
Arnaldo Carvalho de Melo
ff9c2b79cd
[CTRACER]: Emit kretprobes too
...
Now we get this using 'ctracer vmlinux sk_buff', for just one ping packet:
[14402.349410] -> ne2k_pci_block_input: skb=cea97c00
[14402.351310] <- ne2k_pci_block_input
[14402.352712] -> eth_type_trans: skb=cea97c00
[14402.353909] <- eth_type_trans
[14402.354721] -> netif_rx: skb=cea97c00
[14402.355682] <- netif_rx
[14402.356691] -> netif_receive_skb: skb=cea97c00
[14402.358007] -> arp_rcv: skb=cea97c00
[14402.359023] -> arp_process: skb=cea97c00
[14402.360152] -> ip_route_input: skb=cea97c00
[14402.361980] <- ip_route_input
[14402.369199] -> eth_header: skb=cea97b40
[14402.370336] <- eth_header
[14402.371159] -> arp_xmit: skb=cea97b40
[14402.372580] -> dev_queue_xmit: skb=cea97b40
[14402.373742] -> pfifo_fast_enqueue: skb=cea97b40
[14402.374849] <- pfifo_fast_enqueue
[14402.375827] -> dev_hard_start_xmit: skb=cea97b40
[14402.377021] -> ei_start_xmit: skb=cea97b40
[14402.378759] -> kfree_skb: skb=cea97b40
[14402.379783] -> __kfree_skb: skb=cea97b40
[14402.380854] -> kfree_skbmem: skb=cea97b40
[14402.382675] -> ne2k_pci_block_input: skb=cea97a80
[14402.383816] <- ne2k_pci_block_input
[14402.384656] -> eth_type_trans: skb=cea97a80
[14402.385632] <- eth_type_trans
[14402.386366] -> netif_rx: skb=cea97a80
[14402.387220] <- netif_rx
[14402.387949] -> skb_release_data: skb=cea97b40
[14402.389069] <- skb_release_data
[14402.389856] <- kfree_skbmem
[14402.390715] <- __kfree_skb
[14402.391761] <- kfree_skb
[14402.392875] <- ei_start_xmit
[14402.393594] <- dev_hard_start_xmit
[14402.394459] <- dev_queue_xmit
[14402.395169] <- arp_xmit
[14402.395852] -> kfree_skb: skb=cea97c00
[14402.396764] -> __kfree_skb: skb=cea97c00
[14402.397717] -> kfree_skbmem: skb=cea97c00
[14402.398677] -> skb_release_data: skb=cea97c00
[14402.399909] <- skb_release_data
[14402.400637] <- kfree_skbmem
[14402.401267] <- __kfree_skb
[14402.401875] <- kfree_skb
[14402.402489] <- arp_process
[14402.403156] <- arp_rcv
[14402.403757] <- netif_receive_skb
[14402.404674] -> netif_receive_skb: skb=cea97a80
[14402.405789] -> ip_rcv: skb=cea97a80
[14402.406837] -> ip_route_input: skb=cea97a80
[14402.407845] <- ip_route_input
[14402.408654] -> ip_local_deliver: skb=cea97a80
[14402.410031] -> icmp_rcv: skb=cea97a80
[14402.411105] -> __skb_checksum_complete: skb=cea97a80
[14402.412397] <- __skb_checksum_complete
[14402.413512] -> icmp_echo: skb=cea97a80
[14402.414584] -> icmp_reply: skb=cea97a80
[14402.415665] -> ip_options_echo: skb=cea97a80
[14402.416827] <- ip_options_echo
[14402.418188] -> dummy_xfrm_decode_session: skb=cea97a80
[14402.419426] <- dummy_xfrm_decode_session
[14402.422520] -> icmp_glue_bits: skb=cea97c00
[14402.424001] <- icmp_glue_bits
[14402.426607] -> ip_output: skb=cea97c00
[14402.428314] -> neigh_resolve_output: skb=cea97c00
[14402.429559] -> __neigh_event_send: skb=cea97c00
[14402.430747] <- __neigh_event_send
[14402.432143] -> eth_header: skb=cea97c00
[14402.433059] <- eth_header
[14402.433754] -> dev_queue_xmit: skb=cea97c00
[14402.434763] -> pfifo_fast_enqueue: skb=cea97c00
[14402.435782] <- pfifo_fast_enqueue
[14402.437177] -> dev_hard_start_xmit: skb=cea97c00
[14402.438281] -> ei_start_xmit: skb=cea97c00
[14402.439634] -> kfree_skb: skb=cea97c00
[14402.440543] -> __kfree_skb: skb=cea97c00
[14402.441530] -> sock_wfree: skb=cea97c00
[14402.442730] <- sock_wfree
[14402.443433] -> kfree_skbmem: skb=cea97c00
[14402.444383] -> skb_release_data: skb=cea97c00
[14402.445628] <- skb_release_data
[14402.446370] <- kfree_skbmem
[14402.447004] <- __kfree_skb
[14402.447613] <- kfree_skb
[14402.448207] <- ei_start_xmit
[14402.448862] <- dev_hard_start_xmit
[14402.449627] <- dev_queue_xmit
[14402.450328] <- neigh_resolve_output
[14402.451159] <- ip_output
[14402.451987] <- icmp_reply
[14402.452639] <- icmp_echo
[14402.453326] -> kfree_skb: skb=cea97a80
[14402.454220] -> __kfree_skb: skb=cea97a80
[14402.601772] -> kfree_skbmem: skb=cea97a80
[14402.602809] -> skb_release_data: skb=cea97a80
[14402.603762] <- skb_release_data
[14402.604479] <- kfree_skbmem
[14402.605072] <- __kfree_skb
[14402.605646] <- kfree_skb
[14402.606392] <- icmp_rcv
[14402.606996] <- ip_local_deliver
[14402.607694] <- ip_rcv
[14402.608236] <- netif_receive_skb
[14408.809296] -> arp_solicit: skb=00000000
[14408.811051] -> eth_header: skb=cea97a80
[14408.811977] <- eth_header
[14408.812845] -> arp_xmit: skb=cea97a80
[14408.813765] -> dev_queue_xmit: skb=cea97a80
[14408.814760] -> pfifo_fast_enqueue: skb=cea97a80
[14408.815763] <- pfifo_fast_enqueue
[14408.816657] -> dev_hard_start_xmit: skb=cea97a80
[14408.817730] -> ei_start_xmit: skb=cea97a80
[14408.818989] -> kfree_skb: skb=cea97a80
[14408.819892] -> __kfree_skb: skb=cea97a80
[14408.821529] -> ne2k_pci_block_input: skb=cea97c00
[14408.822605] <- ne2k_pci_block_input
[14408.823442] -> eth_type_trans: skb=cea97c00
[14408.824454] <- eth_type_trans
[14408.825198] -> netif_rx: skb=cea97c00
[14408.826049] <- netif_rx
[14408.826732] -> kfree_skbmem: skb=cea97a80
[14408.827681] -> skb_release_data: skb=cea97a80
[14408.828755] <- skb_release_data
[14408.829482] <- kfree_skbmem
[14408.830111] <- __kfree_skb
[14408.830720] <- kfree_skb
[14408.831312] <- ei_start_xmit
[14408.835039] <- dev_hard_start_xmit
[14408.835864] <- dev_queue_xmit
[14408.836495] <- arp_xmit
[14408.837114] <- arp_solicit
[14408.837889] -> netif_receive_skb: skb=cea97c00
[14408.838897] -> arp_rcv: skb=cea97c00
[14408.839933] -> arp_process: skb=cea97c00
[14408.841326] -> kfree_skb: skb=cea97c00
[14408.842194] -> __kfree_skb: skb=cea97c00
[14408.843070] -> kfree_skbmem: skb=cea97c00
[14408.844025] -> skb_release_data: skb=cea97c00
[14408.844932] <- skb_release_data
[14408.845595] <- kfree_skbmem
[14408.846181] <- __kfree_skb
[14408.846749] <- kfree_skb
[14408.847299] <- arp_process
[14408.847944] <- arp_rcv
[14408.848473] <- netif_receive_skb
Now we're getting to the point where a better, non printk based relaying module
is in demand, will look at blktrace relayfs stuff.
Getting access to the traced parameter at kretprobes time is badly needed, so
that we can correlate the exit calls with the entry ones.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
[14385.224958] ctracer: registered 331 entry probes
[14385.248000] ctracer: registered 331 exit probes
2006-12-23 23:42:39 -02:00
Arnaldo Carvalho de Melo
ca50c1a52f
[CLASSES]: Make cus__emit_struct_definitions register what it defines
...
So that we don't get duplicates.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 23:34:42 -02:00
Arnaldo Carvalho de Melo
82692a819d
[CLASSES]: Export cus__emit_fwd_decl
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 23:33:37 -02:00
Arnaldo Carvalho de Melo
8cecc52959
[CLASSES]: Look for nameless classes in cus__find_definition
...
structs typedef'ed...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 22:35:38 -02:00
Arnaldo Carvalho de Melo
297d7b3f8f
[CLASSES]: Handle cases where fwd decls and definitions can happen
...
If a definition is being emitted and there was already a forward declaration,
remove the class from the fwd_decl list before adding it to the declarations
list, in the reverse case just don't add it to the fwd_decl list.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 22:28:40 -02:00
Arnaldo Carvalho de Melo
2d7ec7cd35
[CLASSES]: Set ->{fwd_decl_emitted,visited} to speed up lookups
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 21:44:55 -02:00
Arnaldo Carvalho de Melo
bbac253ab0
[CLASSES]: Just move class__subroutine_ptr_mask before class_member__names
...
So that we can use it there.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 20:39:24 -02:00
Arnaldo Carvalho de Melo
6276810a8a
[CTRACER]: Group open coded function definition in a helper function
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 20:37:23 -02:00
Arnaldo Carvalho de Melo
d1a6c173b9
[CTRACER]: Print the number of registered probes at module load time
...
vmlinux sk_buff example:
[ 1933.122713] ctracer: registered 331 probes
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 20:22:40 -02:00
Arnaldo Carvalho de Melo
4c08435f55
[CTRACER]: Introduce emit_module_license
...
Its needed after all, if we want to use EXPORT_SYMBOL_GPL'ed symbols such as
register_jprobe, etc :-)
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 20:09:02 -02:00
Arnaldo Carvalho de Melo
a9d9241e48
[CLASSES]: Emit module_{exit,init} directly
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 19:58:00 -02:00
Arnaldo Carvalho de Melo
149f4f81ed
[CLASSES]: Introduce functions to rebuild structs, typedefs, etc
...
So that we can build a module that doesn't uses #includes to get these
definitions.
More work to be done for enums, etc, but this already is enough for
ctracer to handle tracing the sk_buff methods in vmlinux.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 19:29:27 -02:00
Arnaldo Carvalho de Melo
f7a934cf0a
[CLASSES]: Add _add and _find functions for definitions and fwd decls
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:53:25 -02:00
Arnaldo Carvalho de Melo
af9adf0b9a
[CLASSES]: Introduce cus__find_function_by_name
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:46:05 -02:00
Arnaldo Carvalho de Melo
7d581ce17c
[CLASSES]: Introduce list heads for definitions and forward declarations
...
In struct cus, that will be used when rebuilding class definitions for
enums, struct pointers, struct definitions, etc, in ctracer for a start.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:30:48 -02:00
Arnaldo Carvalho de Melo
86e083e47b
[CTRACER]: No need to use MODULE_{AUTHOR,LICENSE}
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:28:03 -02:00
Arnaldo Carvalho de Melo
64bf0272da
[CTRACER]: Use expanded forms of __init and __exit
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:24:25 -02:00
Arnaldo Carvalho de Melo
2e2cd691da
[CTRACER]: Don't emit 'NULL', just (void *)0
...
Again for not having to emit any "#include" in the ctracer generated module
source file.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:14:37 -02:00
Arnaldo Carvalho de Melo
c883f688cc
[CTRACER]: Use expanded form of JPROBE_ENTRY() macro
...
So that we don't need to include any header in the ctracer generated
module source file.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:12:41 -02:00
Arnaldo Carvalho de Melo
66ef6a39ba
[CLASSES]: Add optional prefix and suffix parameters to class__print
...
That will be used when typedefs are being emitted, etc.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 18:09:47 -02:00
Arnaldo Carvalho de Melo
79206c3a22
[CMAKE]: Move the debug setting to the right place
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-23 13:16:30 -02:00
Arnaldo Carvalho de Melo
3288e28168
[CTRACER]: Use parameter__names and add a little hack for enums
...
Now ctracer manages vmlinux at least for struct sk_buff, more to come as tests
are made with other classes (structs).
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 20:41:46 -02:00
Arnaldo Carvalho de Melo
27af1f615b
[CLASSES]: Introduce parameter__names
...
Some rework is needed to make class_member__names and parameter__names to share
more code, but there are things like bitfields that are exclusive to
class_member entries, etc.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 20:40:13 -02:00
Arnaldo Carvalho de Melo
f793f83a6d
[CTRACER]: struct function has a list of struct parameter
...
Not struct class_member, that was not much of a problem, as the
initial layout is the same (struct tag).
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 20:09:49 -02:00
Arnaldo Carvalho de Melo
b3dab6396c
[CTRACER]: Emit forward declarations for the return and parameter types
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 14:27:28 -02:00
Arnaldo Carvalho de Melo
973d243189
[CLASSES]: Introduce tag__fwd_decl
...
To emit forward declarations for types, used in ctracer.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 14:10:07 -02:00
Arnaldo Carvalho de Melo
c372555a6c
[CLASSES]: Return NULL in cu__find_class_by_id if tag.type == 0
...
I.e. if the type is void, avoiding looking the whole list for something
that is not there.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 14:02:05 -02:00
Arnaldo Carvalho de Melo
e15d528941
[CLASSES]: Add a 'visited' flag to struct class
...
So that tools can mark it as being processed already, such as when ctracer
needs to emit forward declarations for types in function parameters or return
types.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 13:49:51 -02:00
Arnaldo Carvalho de Melo
4d98e6f80b
[CTRACER]: Fix handling of multi-object files
...
In cu_emit_kprobes_table_iterator we were defining the jprobes[] table for each
object file, do it surrounding the cu__for_each_cu call.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 13:24:32 -02:00
Arnaldo Carvalho de Melo
5d1d846e62
[CTRACER]: Return 0 on the cu iterators
...
This way we process not just the first object file in a multi-object
file such as vmlinux.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 13:18:29 -02:00
Arnaldo Carvalho de Melo
a5147a7785
[CTRACER]: function->name couldn't possibly be NULL
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 13:10:31 -02:00
Arnaldo Carvalho de Melo
3e7e387ddb
[CLASSES]: Move passing the object file name from cus__new to cus__load
...
So that we can load many object files, that is what the next csets will
do, to recursively look for files with debug info in a build tree, such
as the kernel one.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 12:35:45 -02:00
Arnaldo Carvalho de Melo
a4f099385b
[CTRACER]: New tool
...
A class tracer, it looks for non-inline functions that receive as one of its
parameters a pointer to the specified "class" (a struct) and will generate a
kprobes kernel module, see the whole sequence in the README.ctracer file.
Next steps involve supporting kretprobes, inserting kprobes at each inline
"method" expansion, using relayfs, and eventually uprobes to make this useful
for userspace as well.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 12:16:16 -02:00
Arnaldo Carvalho de Melo
4a015cf738
[CLASSES]: Add list nodes to struct cu and function to be used by tools
...
Any tool can use it, first one will be ctracer, the class tracer.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 12:07:09 -02:00
Arnaldo Carvalho de Melo
5cb0779231
[CLASSES]: Pass the cookie to the filter in cu__for_each_function
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 12:05:29 -02:00
Arnaldo Carvalho de Melo
5484abff49
[CLASSES]: Move function__has_parameter_of_type from pfunct to libclasses
...
Will be used by a new tool, ctracer.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 12:03:12 -02:00
Arnaldo Carvalho de Melo
770dbc59ee
[README]: Add information about packages required to build
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 10:28:44 -02:00
KOVACS Krisztian
9276e7d7f4
[CMAKE]: Fix build on debian unstable
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-20 10:16:45 -02:00