[Pkg-qof-maintainers] Bug#462007: 462007

Neil Williams codehelp at debian.org
Thu Jan 24 20:09:47 UTC 2008


On Thu, 2008-01-24 at 12:40 -0500, Joey Hess wrote:
> (You forgot to CC the bug report. Please learn how to use the BTS
> correctly.)

The text I re-sent to you was already included in the bug report so
there was no point CC'ing the bug report. Please do not infer a general
lack of ability from a single instance of human error.

> Neil Williams wrote:
> > What is the problem? The description or the contents?
> 
> Run objdump on the contents and see for yourself. (See also #461339.)

Is it possible that this is actually a bug in objdump ?

$ objdump -e /usr/lib/debug/usr/lib/libglib-2.0.so.0.1400.5 
objdump: /usr/lib/debug/usr/lib/libglib-2.0.so.0.1400.5: no recognized
debugging information

$ objdump -e /usr/lib/debug/usr/lib/libqof.so.1.0.9 
objdump: /usr/lib/debug/usr/lib/libqof.so.1.0.9: no recognized debugging
information

$ objdump -e /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.1200.5
objdump: /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.1200.5: no
recognized debugging information

Something is definitely wrong with those results, so I moved on to
seeing the differences between /usr/lib and /usr/lib/debug/ :

neil at holly:qof$ objdump -s /usr/lib/libqof.so.1.0.9 > ~/stripped
neil at holly:qof$ objdump -s /usr/lib/debug/usr/lib/libqof.so.1.0.9 >
~/unstripped
neil at holly:qof$ ls -l ~/stripped 
-rw-r--r-- 1 neil neil 1145734 2008-01-24 19:42 /home/neil/stripped
neil at holly:qof$ ls -l ~/unstripped 
-rw-r--r-- 1 neil neil 3651617 2008-01-24 19:42 /home/neil/unstripped
neil at holly:qof$ diff -u /home/neil/stripped /home/neil/unstripped >
~/dbgdiff
neil at holly:qof$ ls -l ~/dbgdiff 
-rw-r--r-- 1 neil neil 2548037 2008-01-24 19:43 /home/neil/dbgdiff
neil at holly:qof$ grep section /home/neil/dbgdiff 
 Contents of section .hash:
-Contents of section .gnu_debuglink:
+Contents of section .comment:
+Contents of section .debug_aranges:
+Contents of section .debug_pubnames:
+Contents of section .debug_info:
+Contents of section .debug_abbrev:
+Contents of section .debug_line:
+Contents of section .debug_frame:
+Contents of section .debug_str:

Clearly, debug sections exist in the files installed by the -dbg
package.

I am and have always been able to debug my QOF programs in gdb (and
other debuggers) using libqof1-dbg, with full backtraces and stepping
into the functions called within libqof1 from applications like
pilot-qof and gpe-expenses. gpe-expenses also uses GTK and I have had no
problems with full backtraces or stepping into those libraries as well.
i.e. libqof1-dbg fulfils the purpose for which it is designed and
described in debian/control : it provides the debugging symbols for
libqof1. The fact that objdump gives a different result would appear, to
me, to be a bug in binutils-multiarch (which is what I have installed)
and also binutils itself.

Try this command:

$ ls /usr/lib/debug/usr/lib/*.so.*.* | xargs objdump -e
objdump: /usr/lib/debug/usr/lib/libeventdb.so.2.0.0: no recognized
debugging information
objdump: /usr/lib/debug/usr/lib/libgdk-directfb-2.0.so.0.1200.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.1200.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1200.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.1200.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libglib-2.0.so.0.1400.5: no recognized
debugging information
objdump: /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.1400.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgobject-2.0.so.0.1400.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgpeschedule.so.0.0.0: no recognized
debugging information
objdump: /usr/lib/debug/usr/lib/libgpevtype.so.1.0.0: no recognized
debugging information
objdump: /usr/lib/debug/usr/lib/libgpewidget.so.1.0.0: no recognized
debugging information
objdump: /usr/lib/debug/usr/lib/libgthread-2.0.so.0.1400.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgtk-directfb-2.0.so.0.1200.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgtkextra-x11-2.0.so.1.0.0: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.1200.5: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libqof-backend-qsf.so.0.0.7: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libqof-backend-sqlite.so.0.0.2: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libqofcashobjects.so.0.0.0: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libqofexpensesobjects.so.0.0.1: no
recognized debugging information
objdump: /usr/lib/debug/usr/lib/libqof.so.1.0.9: no recognized debugging
information

Now the output from using the original binutils version (I have
binutils-multiarch installed for cross building purposes):

$ ls /usr/lib/debug/usr/lib/*.so.*.* | xargs objdump.single -e
objdump.single: /usr/lib/debug/usr/lib/libeventdb.so.2.0.0: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgdk-directfb-2.0.so.0.1200.5:
no recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.1200.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1200.5: no recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.1200.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libglib-2.0.so.0.1400.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgmodule-2.0.so.0.1400.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgobject-2.0.so.0.1400.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgpeschedule.so.0.0.0: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgpevtype.so.1.0.0: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgpewidget.so.1.0.0: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgthread-2.0.so.0.1400.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgtk-directfb-2.0.so.0.1200.5:
no recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgtkextra-x11-2.0.so.1.0.0: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.1200.5: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libqof-backend-qsf.so.0.0.7: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libqof-backend-sqlite.so.0.0.2:
no recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libqofcashobjects.so.0.0.0: no
recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libqofexpensesobjects.so.0.0.1:
no recognized debugging information
objdump.single: /usr/lib/debug/usr/lib/libqof.so.1.0.9: no recognized
debugging information

And the output from 'file' (on this amd64 box)

$ ls /usr/lib/debug/usr/lib/*.so.*.* | xargs file
/usr/lib/debug/usr/lib/libeventdb.so.2.0.0:                ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgdk-directfb-2.0.so.0.1200.5:    ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgdk_pixbuf-2.0.so.0.1200.5:      ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgdk_pixbuf_xlib-2.0.so.0.1200.5: ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgdk-x11-2.0.so.0.1200.5:         ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libglib-2.0.so.0.1400.5:            ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgmodule-2.0.so.0.1400.5:         ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgobject-2.0.so.0.1400.5:         ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgpeschedule.so.0.0.0:            ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgpevtype.so.1.0.0:               ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgpewidget.so.1.0.0:              ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgthread-2.0.so.0.1400.5:         ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgtk-directfb-2.0.so.0.1200.5:    ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgtkextra-x11-2.0.so.1.0.0:       ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libgtk-x11-2.0.so.0.1200.5:         ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libqof-backend-qsf.so.0.0.7:        ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libqof-backend-sqlite.so.0.0.2:     ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libqofcashobjects.so.0.0.0:         ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libqofexpensesobjects.so.0.0.1:     ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped
/usr/lib/debug/usr/lib/libqof.so.1.0.9:                    ELF 64-bit
LSB shared object, x86-64, version 1 (SYSV), not stripped

This seems to indicate that something is very wrong with objdump -e - it
failed to find ANY debug info in ANY -dbg packages installed on this
system yet debugging works perfectly.

I find it hard to believe that this has gone unreported in GTK, GLib and
others. (Yes, I know a lot of the others are my own packages but then,
what else would anyone expect? I am constantly debugging my own upstream
code during development.)

Feel free to re-assign this bug to binutils but AFAICT, this is not a
bug in libqof1-dbg.

> I also don't support packages that use cdbs at all -- if you used
> debhelper, I would at least be able to look at and reason about your
> rules file. It's not at all clear to me how dh_strip is called by your
> package.

A simple scan of the build log will indicate:

dh_strip -plibqof1  --dbg-package=libqof1-dbg
dh_compress -plibqof1  
dh_fixperms -plibqof1  
dh_makeshlibs -plibqof1  
dh_strip -plibqof-dev  --dbg-package=libqof1-dbg
dh_compress -plibqof-dev  
dh_fixperms -plibqof-dev  
dh_makeshlibs -plibqof-dev  
dh_strip -plibqof-backend-qsf0  --dbg-package=libqof1-dbg
dh_compress -plibqof-backend-qsf0  
dh_fixperms -plibqof-backend-qsf0  
dh_makeshlibs -plibqof-backend-qsf0  
dh_strip -plibqof-backend-sqlite0  --dbg-package=libqof1-dbg

CDBS actually calls:
dh_strip -p$(cdbs_curpkg) --debug-package=$(cdbs_dbgpkg)

/usr/share/cdbs/1/rules/debhelper.mk

Contrary to popular misconception, CDBS does not "hide" debhelper, the
build log contains very little *but* debhelper commands. CDBS just
simplifies debian/rules and although you personally dislike it, I
personally find it superb and I would not use anything else. That does
not make me a "bad DD" or my packages of "inferior quality" - I would
like to hear about bugs in my packages that can be solely attributed to
CDBS. I do not think that this is one of those.

I cannot see how you can reconcile not supporting CDBS when CDBS does
nothing but call debhelper directly, albeit through a wrapper.

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.alioth.debian.org/pipermail/pkg-qof-maintainers/attachments/20080124/5eb9b52f/attachment-0003.pgp 


More information about the Pkg-qof-maintainers mailing list