Package: diffoscope Version: 117 Severity: important Dear Maintainer,
When comparing Debian debug packages, diffoscope ends up showing hexdump diffs, when it could, in fact, output much nicer diffs. The two attached files are a small .debug file from two jenkins.debian.net firefox debug package builds, that differ because of missing -fdebug-prefix-map flags. When comparing them, the output looks like: --- /tmp/41aa9e49143d7d5d4fb5e05623976b644573b2.debug +++ /tmp/b70f29bd619ba23d3879579b19209fda75ea3b.debug │┄ Command `readelf --wide --debug-dump=frames /tmp/41aa9e49143d7d5d4fb5e05623976b644573b2.debug` exited with 1. Output: │┄ <none> @@ -30,161 +30,161 @@ 000001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001f0: 0000 0000 0000 0000 1000 0000 0000 0000 ................ 00000200: 52e5 7464 0400 0000 d00d 0000 0000 0000 R.td............ 00000210: d03d 0000 0000 0000 d03d 0000 0000 0000 .=.......=...... 00000220: 0000 0000 0000 0000 3002 0000 0000 0000 ........0....... 00000230: 0100 0000 0000 0000 0400 0000 1400 0000 ................ -00000240: 0300 0000 474e 5500 3341 aa9e 4914 3d7d ....GNU.3A..I.=} -00000250: 5d4f b5e0 5623 976b 6445 73b2 4743 433a ]O..V#.kdEs.GCC: +00000240: 0300 0000 474e 5500 a8b7 0f29 bd61 9ba2 ....GNU....).a.. +00000250: 3d38 7957 9b19 209f da75 ea3b 4743 433a =8yW.. ..u.;GCC: 00000260: 2028 4465 6269 616e 2038 2e33 2e30 2d31 (Debian 8.3.0-1 00000270: 3929 2038 2e33 2e30 0001 0000 0000 0000 9) 8.3.0........ 00000280: 00f0 0000 0000 0000 0001 0000 0000 0000 ................ 00000290: 0078 9c7b c3c0 c0c0 c400 021c 6032 4000 .x.{........`2@. 000002a0: 4c31 0842 2886 4434 7e11 1abf 198d 3f05 L1.B(.D4~.....?. etc. First, there's the problem that diffoscope only displays readelf's stdout, and its stderr is lost, which it contains the most important information: section '.eh_frame' has the NOBITS type - its contents are unreliable. Second, this skips everything else that diffoscope would normally do, instead of falling back to a hexdump diff of the concerned section only. With a readelf wrapper that always exits 0, this is what the output looks like: --- /tmp/41aa9e49143d7d5d4fb5e05623976b644573b2.debug +++ /tmp/b70f29bd619ba23d3879579b19209fda75ea3b.debug ├ readelf --wide --sections {} │ @@ -23,19 +23,19 @@ │ [18] .dynamic NOBITS 0000000000003de0 000dd0 000200 10 WA 4 0 8 │ [19] .got NOBITS 0000000000003fe0 000dd0 000020 08 WA 0 0 8 │ [20] .got.plt NOBITS 0000000000004000 000dd0 000020 08 WA 0 0 8 │ [21] .data NOBITS 0000000000004020 000dd0 000008 00 WA 0 0 8 │ [22] .bss NOBITS 0000000000004028 000dd0 000008 00 WA 0 0 1 │ [23] .comment PROGBITS 0000000000000000 00025c 00001d 01 MS 0 0 1 │ [24] .debug_aranges PROGBITS 0000000000000000 000279 00005a 00 C 0 0 1 │ - [25] .debug_info PROGBITS 0000000000000000 0002d3 000330 00 C 0 0 1 │ - [26] .debug_abbrev PROGBITS 0000000000000000 000603 0000da 00 C 0 0 1 │ - [27] .debug_line PROGBITS 0000000000000000 0006dd 000176 00 C 0 0 1 │ - [28] .debug_str PROGBITS 0000000000000000 000853 0002c3 01 MSC 0 0 1 │ - [29] .debug_ranges PROGBITS 0000000000000000 000b16 00004e 00 C 0 0 1 │ + [25] .debug_info PROGBITS 0000000000000000 0002d3 00032e 00 C 0 0 1 │ + [26] .debug_abbrev PROGBITS 0000000000000000 000601 0000da 00 C 0 0 1 │ + [27] .debug_line PROGBITS 0000000000000000 0006db 000176 00 C 0 0 1 │ + [28] .debug_str PROGBITS 0000000000000000 000851 0002c4 01 MSC 0 0 1 │ + [29] .debug_ranges PROGBITS 0000000000000000 000b15 00004e 00 C 0 0 1 │ [30] .symtab SYMTAB 0000000000000000 000b68 000690 18 31 49 8 │ [31] .strtab STRTAB 0000000000000000 0011f8 0002ca 00 0 0 1 │ [32] .shstrtab STRTAB 0000000000000000 0014c2 000137 00 0 0 1 │ Key to Flags: │ W (write), A (alloc), X (execute), M (merge), S (strings), I (info), │ L (link order), O (extra OS processing required), G (group), T (TLS), │ C (compressed), x (unknown), o (OS specific), E (exclude), ├ readelf --wide --notes {} │ @@ -1,4 +1,4 @@ │ │ Displaying notes found in: .note.gnu.build-id │ Owner Data size Description │ - GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) Build ID: 3341aa9e9143d7d5d4fb5e05623976b644573b2 │ + GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) Build ID: a8b70f29d619ba23d3879579b19209fda75ea3b ├ readelf --wide --debug-dump=rawline {} │ @@ -21,19 +21,19 @@ │ Opcode 8 has 0 args │ Opcode 9 has 1 arg │ Opcode 10 has 0 args │ Opcode 11 has 0 args │ Opcode 12 has 1 arg │ │ The Directory Table (offset 0x1b): │ - 1 /build/1st/firefox-68.0/widget/gtk/mozgtk │ + 1 /build/firefox-68.0/2nd/widget/gtk/mozgtk │ 2 /usr/lib/gcc/x86_64-linux-gnu/8/include │ 3 /usr/include/x86_64-linux-gnu/bits etc. Chances are this is involved in the firefox diffs timing out https://tests.reproducible-builds.org/debian/dbd/unstable/amd64/firefox_68.0-1.diffoscope.html Mike _______________________________________________ Reproducible-builds mailing list Reproducible-builds@alioth-lists.debian.net https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/reproducible-builds