Arnaldo Carvalho de Melo
d385563a53
[LIB]: Make the function methods return and receive a struct tag
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 15:47:26 -02:00
Arnaldo Carvalho de Melo
458e7d6867
[LIB]: Call enumeration__print in tag__print
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 15:24:41 -02:00
Arnaldo Carvalho de Melo
18703f8d3c
[LIB]: Call typedef__print in tag__print
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 15:13:38 -02:00
Arnaldo Carvalho de Melo
bc58353565
[LIB]: Pass prefix and suffix to class__snprintf in class__print
...
Fixing a regression introduced when doing the class__snprintf introduction out
of class__print, namely this one:
--- ctracer_sock.c.old 2007-01-12 14:57:56.000000000 -0200
+++ ctracer.c 2007-01-12 15:00:21.000000000 -0200
@@ -1668,7 +1668,7 @@
};
/* /pub/scm/linux/kernel/git/acme/linux-2.6/include/linux/fs.h:1050 */
-struct {
+typedef struct {
size_t written; /* 0 4 */
size_t count; /* 4 4 */
union {
@@ -1676,7 +1676,7 @@
void * data; /* 4 */
} arg; /* 8 4 */
int error; /* 12 4 */
-}; /* size: 16, cachelines: 1 */
+} read_descriptor_t; /* size: 16, cachelines: 1 */
/* last cacheline: 16 bytes */
typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t);
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 15:03:59 -02:00
Arnaldo Carvalho de Melo
0661f26f9f
[LIB]: Call cus__emit_ftype_definitions for DW_TAG_subroutine_type in cus__emit_tag_definitions
...
Thus emitting definitions/forward declarations for the types of function
pointers, not just for the return type of the function pointer.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 14:39:26 -02:00
Arnaldo Carvalho de Melo
0905197862
[LIB]: Create typedef__print out of cus__emit_typedef_definitions
...
This way cus__emit_typedef_definitions first looks for definitions in the
typedef that will be emitted, emits those definitions, then prints the typedef.
With this it'll be possible to make tag__print to print typedefs, when we know
that the definitions it needs were already previously emitted/printed.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 13:04:05 -02:00
Arnaldo Carvalho de Melo
a1f5422656
[LIB]: Add support for DW_TAG_reference_type
...
One more C++ feature supported:
[acme@newtoy examples]$ pahole qsettings.o QConfFileSettingsPrivate
/* io/qsettings_p.h:233 */
struct QConfFileSettingsPrivate {
struct QSettingsPrivate (null); /* 0 76 */
/* --- cacheline 2 boundary (64 bytes) was 12 bytes ago --- */
class QConfFile * confFiles[4]; /* 76 16 */
enum Format format; /* 92 4 */
/* --- cacheline 3 boundary (96 bytes) --- */
bool (*readFunc)(class QIODevice &, class QMap<QString,QVariant> &); /* 96 4 */
bool (*writeFunc)(class QIODevice &, const class QMap<QString,QVariant> &); /* 100 4 */
struct QString extension; /* 104 4 */
>>>ERROR: type for caseSensitivity not found!
}; /* size: 112, cachelines: 4 */
/* padding: 5 */
/* last cacheline: 16 bytes */
/* BRAIN FART ALERT! 112 != 108 + 0(holes), diff = 4 */
[acme@newtoy examples]$
Now to see the problem with caseSensitivity type, probably was defined inside
some DW_TAG_namespace, that is not yet supported.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-12 11:06:59 -02:00
Arnaldo Carvalho de Melo
0ad467a321
[LIB]: Replace type not found asserts by an error message
...
So that we can continue and see what was the problem, investigate using readelf
-wi and proceed to fix it, normally its just references to not yet supported
tags, so far the ones I know are not supported are DW_TAG_reference_type &
DW_TAG_namespace, i.e. tags not present in the C language, only on C++ and
other object oriented routines with such concepts.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-11 23:09:06 -02:00
Arnaldo Carvalho de Melo
30b6aa2f73
[LIB]: Rename classes.[ch] to dwarves.[ch]
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2007-01-11 16:07:05 -02:00