2009-09-29 Status
by Petr Machata
Last week + today
-----------------
Time spent on elfutils: ~50%
writer:
* Emit .debug_ranges
* Emit .debug_loc
* dwarfcmp ./a.out ./a.out.out now works
It's on pmachata/dwarf-writer.
Next in plan
------------
* Merge in dwarf branch.
* Make dwarfcmp work for bigger files.
* We can't optimize certain references right away. For these we now
pick the biggest form available. We could shrink these fields
afterwards. But the codebase is not ready for this, e.g. gaps have to
be able to move, size of ElfData has to be patched, etc. So work on
preparing these bits, they will be useful later.
PM
13 years, 9 months
adjusted debuginfo test script -- pack-debuginfo.sh
by Rakesh Pandit
Hello,
Just thought to report it down. I encountered this problem while
running test scripts at
git://git.fedorapeople.org/~roland/debuginfo-test-scripts.git . Had to
do some adjustments so as to eliminate all bogons it reported. This
happened in pack-debuginfo.sh do_collect method because
find usr/lib* -type f -print0 | xargs --no-run-if-empty -0 file -N -F ' ' -i
gives "usr/lib/debug/usr/bin/gtnameserv.debug
application/x-executable; charset=binary"
As you can see it has NF = 3 and $2 has ';' at end and both were
missing from awk command, so had to adjust script (though adjustments
may not be fine, as I don't have much clue about awk) so as e, d, r
and a get incremented, otherwise it was reporting everything as
bogons.
Thanks,
--
Rakesh Pandit
https://fedoraproject.org/
freedom, friends, features, first
diff --git a/pack-debuginfo.sh b/pack-debuginfo.sh
index 21432f2..840b456 100755
--- a/pack-debuginfo.sh
+++ b/pack-debuginfo.sh
@@ -30,10 +30,10 @@ do_collect()
awk -v dir="$dir" -v src="$size" '
BEGIN { e = d = r = u = a = 0 }
NF > 2 && $2 ~ "application/x-" { sub(/, .*$/, "") }
-NF == 2 && $2 == "application/x-executable" { print $1 > "exec" ; ++e; next }
-NF == 2 && $2 == "application/x-sharedlib" { print $1 > "dyn" ; ++d; next }
-NF == 2 && $2 == "application/x-object" { print $1 > "rel" ; ++r; next }
-NF == 2 && $2 == "application/x-archive" { print $1 > "archive" ; ++a; next }
+NF == 3 && $2 == "application/x-executable;" { print $1 > "exec" ; ++e; next }
+NF == 3 && $2 == "application/x-sharedlib;" { print $1 > "dyn" ; ++d; next }
+NF == 3 && $2 == "application/x-object;" { print $1 > "rel" ; ++r; next }
+NF == 3 && $2 == "application/x-archive;" { print $1 > "archive" ; ++a; next }
{ print "unexpected line from", dir ": " $0 > "/dev/stderr";
++u; print $0 > "bogon"; next }
END {
13 years, 12 months
locexpr vs. loclist 1 entry
by Petr Machata
I wonder about the following:
$ src/dwarfcmp ./a.out ./a.out.out
3d vs 57: data_member_location={locexpr} vs
data_member_location={loclist 1 entries}
It's certainly not optimal to store it this way, but aren't these two
cases actually equal? (Um, assuming there's no other difference, like
the bytecode being actually different, which I didn't check.)
PM
14 years
Don't let dwfl_linux_kernel_report_offline/find_elf go through build dir
by Mark Wielaard
Hi,
dwfl_linux_kernel_report_offline has the following comment:
/* Skip a "source" subtree, which tends to be large.
This insane hard-coding of names is what depmod does too. */
But on my installs source is just a symlink to build, and the whole
source tree is under that build (symlink) and so is still traversed by
dwfl_linux_kernel_report_offline(). And indeed depmod (from
module-init-tools-3.7-pre9) does also skip the build subtree now. So
this patch does the same for dwfl_linux_kernel_report_offline() and
dwfl_linux_kernel_find_elf(), which saves several seconds on my
slow-disk/low-mem laptop (yes, it is that slow...)
OK to commit/push?
Mark
14 years
Ginger
by Ginger Walton
1 z35t98iop5tg7y Ginger
14 years
dwarflint vs new features
by Roland McGrath
http://roland.fedorapeople.org/tmp/nfs.ko.debug.bz2 has a good sample
object for lots of newly-used and newly-kosher things that dwarflint
doesn't grok.
DW_AT_data_member_location can be class constant or class location.
When it's any DW_FORM_*data*, that means it's a constant, not a location list.
New location ops: DW_OP_stack is new, no operands, must be last in a piece
(i.e. last in expr or followed only by DW_OP_{bit_,}piece);
DW_OP_implicit_value has an "operand" of DW_FORM_block (i.e. variable sized).
You want to treat that block like other constant blocks, i.e. could have
relocs inside it.
There are many other complaints on this file and I haven't investigated
them. This is from the new GCC code, so actual new errors dwarflint is
correctly diagnosing are entirely possible.
The message "relocation is mismatched" is not very informative and in fact
I don't really know what it means at all.
Thanks,
Roland
14 years
0.143 regression failures.
by Kurt Roeckx
Hi,
0.143 returns those regression failures for me:
section [27] '.comment' has wrong flags: expected none, is MERGE|STRINGS
*** failure in ../src/addr2line
section [28] '.comment' has wrong flags: expected none, is MERGE|STRINGS
*** failure in ../src/elfcmp
section [28] '.comment' has wrong flags: expected none, is MERGE|STRINGS
*** failure in ../src/elflint
section [27] '.comment' has wrong flags: expected none, is MERGE|STRINGS
*** failure in ../src/findtextrel
section [28] '.comment' has wrong flags: expected none, is MERGE|STRINGS
[...]
Kurt
14 years
0.143 release
by Roland McGrath
Unless anyone knows of something I'm overlooking, I think we are ready for
an 0.143 release about now. I did test builds for Fedora based on 7e0aecd
and things look fine.
The systemtap folks are now holding up their pending release until 0.143
hits Fedora 12 builds, so it would be good to get this out before you leave
town.
Thanks,
Roland
14 years
2009-09-21 Status
by Petr Machata
Last 3 weeks
------------
Time spent on elfutils: ~50%
I had a couple days off, is the reason it's so low.
dwarflint:
* Check address size against the bit-ness of the ELF
* Always emit error about missing DW_LNE_end_sequence
* Fix messages: sibling mismatch reports offset of the right DIE; when
we print DW_LNS_ opcode name, we use the right formatter.
writer:
* Duplicate abbrevs are pruned.
* Emit basic .debug_line. No special opcodes are used at all, it's all
done with standard opcodes. Offset from .debug_info are back-patched.
* Several fixes for dwarf_64. I didn't even start to test that, that's
all the "aha" moments that I had when looking through the code.
* Can't use general DIE offset backpatching mechanism to emit sibling
addresses. We can meet "the same" DIE several times in the tree.
* Small stuff, organizing code.
libebl:
* Fix allocation of memory for long strings
misc:
* Poke translators about wrong translations in our codebase.
It's all on pmachata/dwarf-writer.
Next in plan
------------
* Work on making the produced data complete and well-defined enough for
consumption by libdw. Next item: .debug_ranges.
* We can't optimize certain references right away. For these we now
pick the biggest form available. We could shrink these fields
afterwards. But the codebase is not ready for this, e.g. gaps have to
be able to move, size of ElfData has to be patched, etc. So work on
preparing these bits, they will be useful later.
PM
14 years