Commit Graph

5 Commits

Author SHA1 Message Date
Arnaldo Carvalho de Melo ac7778099a pahole: Introduce --fixup_silly_bitfields
$ pahole -C acpi_device_perf_flags ac.o
struct acpi_device_perf_flags {
	u8          reserved:8;           /*     0: 0  1 */

	/* size: 1, cachelines: 1, members: 1 */
	/* last cacheline: 1 bytes */
};
$ pahole --fixup_silly_bitfields -C acpi_device_perf_flags ac.o
struct acpi_device_perf_flags {
	u8          reserved;             /*     0     1 */

	/* size: 1, cachelines: 1, members: 1 */
	/* last cacheline: 1 bytes */
};
$

Used in ctfdwdiff as in CTF land we can't express such sillyness.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2009-03-20 13:54:04 -03:00
Arnaldo Carvalho de Melo 56f4fc831a pahole: Introduce --show_private_classes
By default pahole doesn't prints structs/classes that are only defined
inside functions, so add a knob to aks for that.

This is for the benefit of ctfdwdiff, as in CTF we don't have
expressiveness to tell that a struct is only defined inside a function,
its all in the global table.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2009-03-20 11:37:22 -03:00
Arnaldo Carvalho de Melo 57127d45fc pahole: Introduce --flat_array
CTF doesn't have support for multiple array dimensions, so it flattens
the arrays.

This caused a large number of false positives in ctfdwdiff, so introduce
this conf_fprintf option, use it in pahole and ctfdwdiff.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2009-03-20 10:29:50 -03:00
Arnaldo Carvalho de Melo 01c4fa3114 ctfdwdiff: Make it more bulk test friendly
So that I can run it with:

find . -type d | while read dir ; do cd $dir ; ls *.o 2> /dev/null |
while read file ; do ctfdwdiff $file ; done ; cd - ; done

for instance.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2009-03-20 10:11:47 -03:00
Arnaldo Carvalho de Melo 82d5dbe637 ctfdwdiff: Simple shell script for testing the CTF encoder/decoder
First it gets a file with DWARF info, converts that to CTF and adds
a ".SUNW_ctf" ELF section to the file with DWARF info. Double debugging
foo! Pay for one, take two!

For tcp_input.o for instance, the result is:

[acme@doppio pahole]$ cat /tmp/tcp_input.o.diff
--- /tmp/tcp_input.o.ctf.c	2009-03-19 19:48:23.000000000 -0300
+++ /tmp/tcp_input.o.dwarf.c	2009-03-19 19:48:23.000000000 -0300
@@ -1811,7 +1811,7 @@

 	/* XXX 6 bytes hole, try to pack */

-	void (*call)(const struct marker *, void *);	  /* 24  8 */
+	void (*call)(const struct marker *, void *, ...); /* 24  8 */
 	struct marker_probe_closure single;		  /* 32 16 */
 	struct marker_probe_closure * multi;		  /* 48  8 */
 	const char  *               tp_name;		  /* 56  8 */
[acme@doppio pahole]$

Now back to figuring out how to encode a VARARGS marker in CTF...

Ah, to use the script just do:

./ctfdwdiff foo.o

Some will crash, but we're working hard for fuller customer
satisfaction.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2009-03-19 19:50:09 -03:00