aclements / libelfin

C++11 ELF/DWARF parser
MIT License
317 stars 99 forks source link

Fail to work on s390 in Debian #19

Closed petterreinholdtsen closed 7 years ago

petterreinholdtsen commented 7 years ago

The source build but fail to work on s390 when built for Debian. See https://buildd.debian.org/status/fetch.php?pkg=libelfin&arch=s390x&ver=0.2-5&stamp=1479224801 for the complete build log. This is the error:

PASS dump-segments golden-gcc-4.9.2/example
FAIL dump-lines golden-gcc-4.9.2/example
    ./test.sh: line 24: 24954 Aborted                 ../examples/dump-$dump golden-$compiler/$binary 1>&$output.out
    failed: exit status 134
    --- golden-gcc-4.9.2/lines  2016-09-28 18:00:31.000000000 +0000
    +++ /tmp/libelfin.iav8gPN88i.out    2016-11-15 15:46:34.004275388 +0000
    @@ -1,10 +1,2 @@
    ---- <0>
    -x/example.c                                    2            0x4004b6
    -x/example.c                                    3            0x4004c2
    -x/example.c                                    4            0x4004c8
    -x/example.c                                    5            0x4004cd
    -x/example.c                                    6            0x4004eb
    -x/example.c                                    9            0x4004f2
    -x/example.c                                   10            0x400501
    -x/example.c                                   11            0x40050b
    -
    +terminate called after throwing an instance of 'dwarf::format_error'
    +  what():  unknown compilation unit version 1024
PASS dump-syms golden-gcc-4.9.2/example
FAIL dump-tree golden-gcc-4.9.2/example
    ./test.sh: line 24: 24959 Aborted                 ../examples/dump-$dump golden-$compiler/$binary 1>&$output.out
    failed: exit status 134
    --- golden-gcc-4.9.2/tree   2016-09-28 18:00:31.000000000 +0000
    +++ /tmp/libelfin.iav8gPN88i.out    2016-11-15 15:46:34.012275388 +0000
    @@ -1,65 +1,2 @@
    ---- <0>
    -<b> DW_TAG_compile_unit
    -      DW_AT_producer GNU C 4.9.2 -mtune=generic -march=x86-64 -g -fdebug-prefix-map=/home/amthrax/r/libelfin/test=x
    -      DW_AT_language 0x1
    -      DW_AT_name example.c
    -      DW_AT_comp_dir x
    -      DW_AT_low_pc 0x4004b6
    -      DW_AT_high_pc 0x57
    -      DW_AT_stmt_list <line 0x0>
    - <2b> DW_TAG_subprogram
    -       DW_AT_external true
    -       DW_AT_name fib
    -       DW_AT_decl_file 0x1
    -       DW_AT_decl_line 0x1
    -       DW_AT_prototyped true
    -       DW_AT_type <0x59>
    -       DW_AT_low_pc 0x4004b6
    -       DW_AT_high_pc 0x3c
    -       DW_AT_frame_base <exprloc>
    -       (DW_AT)0x2116 true
    -       DW_AT_sibling <0x59>
    -  <4c> DW_TAG_formal_parameter
    -        DW_AT_name x
    -        DW_AT_decl_file 0x1
    -        DW_AT_decl_line 0x1
    -        DW_AT_type <0x59>
    -        DW_AT_location <exprloc>
    - <59> DW_TAG_base_type
    -       DW_AT_byte_size 0x4
    -       DW_AT_encoding 0x5
    -       DW_AT_name int
    - <60> DW_TAG_subprogram
    -       DW_AT_external true
    -       DW_AT_name main
    -       DW_AT_decl_file 0x1
    -       DW_AT_decl_line 0x8
    -       DW_AT_prototyped true
    -       DW_AT_type <0x59>
    -       DW_AT_low_pc 0x4004f2
    -       DW_AT_high_pc 0x1b
    -       DW_AT_frame_base <exprloc>
    -       (DW_AT)0x2116 true
    -       DW_AT_sibling <0x9e>
    -  <81> DW_TAG_formal_parameter
    -        DW_AT_name argc
    -        DW_AT_decl_file 0x1
    -        DW_AT_decl_line 0x8
    -        DW_AT_type <0x59>
    -        DW_AT_location <exprloc>
    -  <8f> DW_TAG_formal_parameter
    -        DW_AT_name argv
    -        DW_AT_decl_file 0x1
    -        DW_AT_decl_line 0x8
    -        DW_AT_type <0x9e>
    -        DW_AT_location <exprloc>
    - <9e> DW_TAG_pointer_type
    -       DW_AT_byte_size 0x8
    -       DW_AT_type <0xa4>
    - <a4> DW_TAG_pointer_type
    -       DW_AT_byte_size 0x8
    -       DW_AT_type <0xaa>
    - <aa> DW_TAG_base_type
    -       DW_AT_byte_size 0x1
    -       DW_AT_encoding 0x6
    -       DW_AT_name char
    +terminate called after throwing an instance of 'dwarf::format_error'
    +  what():  unknown compilation unit version 1024
2 test(s) failed

Thank you very much for providing the self test in the code. It avoided uploading broken binaries to Debian. :)

petterreinholdtsen commented 7 years ago

Note, it failed on at least hppa and powerpc too. See https://buildd.debian.org/status/package.php?p=libelfin&suite=unstable for a complete list. Endian problem?

petterreinholdtsen commented 7 years ago

This issue is tracked as https://bugs.debian.org/844465 in Debian.

aclements commented 7 years ago

libelf++ supports non-native byte orders, but I never implemented this for libdwarf++. I'm not sure when I'll get around to this (patches welcome). However, a helpful first step someone else could do would be to build test/example.c on a big endian machine using gcc -g -fdebug-prefix-map=$PWD=x example.c (from test/golden-gcc-4.9.2/NOTES) and post the binary and gcc -v.

petterreinholdtsen commented 7 years ago

[Austin Clements]

libelf++ supports non-native byte orders, but I never implemented this for libdwarf++. I'm not sure when I'll get around to this (patches welcome). However, a helpful first step someone else could do would be to build test/example.c on a big endian machine using gcc -g -fdebug-prefix-map=$PWD=x example.c (from test/golden-gcc-4.9.2/NOTES) and post the binary and gcc -v.

Very glad to hear that this should work. I ran the above command on the s390x porter box in Debian. This is gcc -v:

Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/s390x-linux-gnu/6/lto-wrapper Target: s390x-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 6.2.1-5' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=s390x-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libsanitizer --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-s390x/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-s390x --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-s390x --with-arch-directory=s390x --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc=auto --enable-multiarch --with-long-double-128 --enable-multilib --enable-checking=release --build=s390x-linux-gnu --host=s390x-linux-gnu --target=s390x-linux-gnu Thread model: posix gcc version 6.2.1 20161124 (Debian 6.2.1-5)

And this is the base64 encoding of elfin-example-s390x:

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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAcgAAAAAAAABsgAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAADAAAAAAAAAVg AAAAAAAAAA0AAAAAAAAIkAAAAAAAAAAZAAAAAAAAHggAAAAAAAAAGwAAAAAAAAAIAAAAAAAAABoA AAAAAAAeEAAAAAAAAAAcAAAAAAAAAAgAAAAAb//+9QAAAAAAAAKQAAAAAAAAAAUAAAAAAAADkAAA AAAAAAAGAAAAAAAAArgAAAAAAAAACgAAAAAAAACPAAAAAAAAAAsAAAAAAAAAGAAAAAAAAAAVAAAA AAAAAAAAAAAAAAAAAwAAAAAAACAAAAAAAAAAAAIAAAAAAAAAMAAAAAAAAAAUAAAAAAAAAAcAAAAA AAAAFwAAAAAAAAUwAAAAAAAAAAcAAAAAAAAEWAAAAAAAAAAIAAAAAAAAANgAAAAAAAAACQAAAAAA AAAYAAAAAG////sAAAAACAAAAAAAAABv///+AAAAAAAABDgAAAAAb////wAAAAAAAAABAAAAAG// //AAAAAAAAAEIAAAAABv///5AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4g AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXOAAAAAAAABe4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgR0NDOiAoRGViaWFuIDYuMi4x LTUpIDYuMi4xIDIwMTYxMTI0AAAAACwAAgAAAAAIAAAAAAAAAAAAAAAHaAAAAAAAAAC4AAAAAAAA AAAAAAAAAAAAAAAAAK0ABAAAAAAIAQAAAAAMAAAAQngAAAAAAAAAB2gAAAAAAAAAuAAAAAACAAAA PQEIAAAAawAAAAAAAAfgAAAAAAAAAEABnAAAAGsDAAAAMwEIAAAAawOR3H4DAAAATAEIAAAAcgOR 0H4ABAQFaW50AAUIAAAAeAUIAAAAfgYBCAAAADgHZmliAAEBAAAAawAAAAAAAAdoAAAAAAAAAHgB nAh4AAEBAAAAawOR3H4AAAERASUOEwsDDhsIEQESBxAXAAACLgE/GQMOOgs7CycZSRMRARIHQBiW QhkBEwAAAwUAAw46CzsLSRMCGAAABCQACws+CwMIAAAFDwALC0kTAAAGJAALCz4LAw4AAAcuAT8Z Awg6CzsLJxlJExEBEgdAGJZCGQAACAUAAwg6CzsLSRMCGAAAAAAAAEQAAgAAACABAfsODQABAQEB AAAAAQAAAQBleGFtcGxlLmMAAAAAAAAJAgAAAAAAAAdoEwhZu4MCPBMIIwitCCECEgABAUdOVSBD MTEgNi4yLjEgMjAxNjExMjQgLW02NCAtbXphcmNoIC1tYXJjaD16OTAwIC1nAGFyZ2MAY2hhcgBt YWluAGV4YW1wbGUuYwBhcmd2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAEAAAAA AAACOAAAAAAAAAAAAAAAAAMAAAIAAAAAAAACSAAAAAAAAAAAAAAAAAMAAAMAAAAAAAACaAAAAAAA AAAAAAAAAAMAAAQAAAAAAAACkAAAAAAAAAAAAAAAAAMAAAUAAAAAAAACuAAAAAAAAAAAAAAAAAMA AAYAAAAAAAADkAAAAAAAAAAAAAAAAAMAAAcAAAAAAAAEIAAAAAAAAAAAAAAAAAMAAAgAAAAAAAAE OAAAAAAAAAAAAAAAAAMAAAkAAAAAAAAEWAAAAAAAAAAAAAAAAAMAAAoAAAAAAAAFMAAAAAAAAAAA AAAAAAMAAAsAAAAAAAAFYAAAAAAAAAAAAAAAAAMAAAwAAAAAAAAFoAAAAAAAAAAAAAAAAAMAAA0A AAAAAAAGAAAAAAAAAAAAAAAAAAMAAA4AAAAAAAAIkAAAAAAAAAAAAAAAAAMAAA8AAAAAAAAIwAAA AAAAAAAAAAAAAAMAABAAAAAAAAAI4AAAAAAAAAAAAAAAAAMAABEAAAAAAAAJEAAAAAAAAAAAAAAA AAMAABIAAAAAAAAeCAAAAAAAAAAAAAAAAAMAABMAAAAAAAAeEAAAAAAAAAAAAAAAAAMAABQAAAAA AAAeGAAAAAAAAAAAAAAAAAMAABUAAAAAAAAeIAAAAAAAAAAAAAAAAAMAABYAAAAAAAAgAAAAAAAA AAAAAAAAAAMAABcAAAAAAAAgWAAAAAAAAAAAAAAAAAMAABgAAAAAAAAgaAAAAAAAAAAAAAAAAAMA ABkAAAAAAAAAAAAAAAAAAAAAAAAAAAMAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAMAABsAAAAAAAAA AAAAAAAAAAAAAAAAAAMAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAB0AAAAAAAAAAAAAAAAAAAAA AAAAAAMAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAQQA//EAAAAAAAAAAAAAAAAAAAAAAAAADAEAABQA AAAAAAAeGAAAAAAAAAAAAAAAGQIAAA0AAAAAAAAGSAAAAAAAAAAAAAAAGwIAAA0AAAAAAAAGgAAA AAAAAAAAAAAALgIAAA0AAAAAAAAGyAAAAAAAAAAAAAAARAEAABgAAAAAAAAgaAAAAAAAAAABAAAA UwEAABMAAAAAAAAeEAAAAAAAAAAAAAAAegIAAA0AAAAAAAAHIAAAAAAAAAAAAAAAhgEAABIAAAAA AAAeCAAAAAAAAAAAAAAApQQA//EAAAAAAAAAAAAAAAAAAAAAAAAAAQQA//EAAAAAAAAAAAAAAAAA AAAAAAAArwEAABEAAAAAAAAJ4AAAAAAAAAAAAAAAvQEAABQAAAAAAAAeGAAAAAAAAAAAAAAAAAQA //EAAAAAAAAAAAAAAAAAAAAAAAAAyQAAABIAAAAAAAAeEAAAAAAAAAAAAAAA2gEA//EAAAAAAAAe IAAAAAAAAAAAAAAA4wAAABIAAAAAAAAeCAAAAAAAAAAAAAAA9gAAABAAAAAAAAAI4AAAAAAAAAAA AAABCQEA//EAAAAAAAAgAAAAAAAAAAAAAAABHxIAAA0AAAAAAAAIiAAAAAAAAAACAAABLyIAAAAA AAAAAAAAAAAAAAAAAAAAAAABSSAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbiAAABcAAAAAAAAgWAAA AAAAAAAAAAABZRAAABcAAAAAAAAgaAAAAAAAAAAAAAABKRIAAA4AAAAAAAAIkAAAAAAAAAAAAAAB bBAAABcAAAAAAAAgWAAAAAAAAAAAAAABeSAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiBECABcAAAAA AAAgYAAAAAAAAAAAAAABlREAAA8AAAAAAAAIwAAAAAAAAAAEAAABpBIAAAAAAAAAAAAAAAAAAAAA AAAAAAABwRIAAA0AAAAAAAAIIAAAAAAAAABkAAAA1RAAABgAAAAAAAAgcAAAAAAAAAAAAAABchIA AA0AAAAAAAAGAAAAAAAAAAAAAAAB0RAAABgAAAAAAAAgaAAAAAAAAAAAAAAB3RIAAA0AAAAAAAAH 4AAAAAAAAABAAAAB4hIAAA0AAAAAAAAHaAAAAAAAAAB4AAAB5iAAAAAAAAAAAAAAAAAAAAAAAAAA AAAB+hECABcAAAAAAAAgaAAAAAAAAAAAAAACBiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByxIAAAsA AAAAAAAFYAAAAAAAAAAAAGNydHN0dWZmLmMAX19KQ1JfTElTVF9fAGRlcmVnaXN0ZXJfdG1fY2xv bmVzAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eABjb21wbGV0ZWQuNjYxNQBfX2RvX2dsb2JhbF9kdG9y c19hdXhfZmluaV9hcnJheV9lbnRyeQBmcmFtZV9kdW1teQBfX2ZyYW1lX2R1bW15X2luaXRfYXJy YXlfZW50cnkAZXhhbXBsZS5jAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5EX18AX19pbml0X2FycmF5 X2VuZABfRFlOQU1JQwBfX2luaXRfYXJyYXlfc3RhcnQAX19HTlVfRUhfRlJBTUVfSERSAF9HTE9C QUxfT0ZGU0VUX1RBQkxFXwBfX2xpYmNfY3N1X2ZpbmkAX19jeGFfZmluYWxpemVAQEdMSUJDXzIu MgBfSVRNX2RlcmVnaXN0ZXJUTUNsb25lVGFibGUAX2VkYXRhAF9fZGF0YV9zdGFydABfX2dtb25f c3RhcnRfXwBfX2Rzb19oYW5kbGUAX0lPX3N0ZGluX3VzZWQAX19saWJjX3N0YXJ0X21haW5AQEdM SUJDXzIuMgBfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBmaWIAX0p2X1JlZ2lzdGVy Q2xhc3NlcwBfX1RNQ19FTkRfXwBfSVRNX3JlZ2lzdGVyVE1DbG9uZVRhYmxlAAAuc3ltdGFiAC5z dHJ0YWIALnNoc3RydGFiAC5pbnRlcnAALm5vdGUuQUJJLXRhZwAubm90ZS5nbnUuYnVpbGQtaWQA LmdudS5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJl bGEuZHluAC5yZWxhLnBsdAAuaW5pdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZV9oZHIA LmVoX2ZyYW1lAC5pbml0X2FycmF5AC5maW5pX2FycmF5AC5qY3IALmR5bmFtaWMALmdvdAAuZGF0 YQAuYnNzAC5jb21tZW50AC5kZWJ1Z19hcmFuZ2VzAC5kZWJ1Z19pbmZvAC5kZWJ1Z19hYmJyZXYA LmRlYnVnX2xpbmUALmRlYnVnX3N0cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAIAAAAAAAACOAAA AAAAAAI4AAAAAAAAAA8AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAjAAAABwAAAAAAAAACAAAA AAAAAkgAAAAAAAACSAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAMQAAAAcAAAAA AAAAAgAAAAAAAAJoAAAAAAAAAmgAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAERv ///2AAAAAAAAAAIAAAAAAAACkAAAAAAAAAKQAAAAAAAAACQAAAAFAAAAAAAAAAAAAAAIAAAAAAAA AAAAAABOAAAACwAAAAAAAAACAAAAAAAAArgAAAAAAAACuAAAAAAAAADYAAAABgAAAAIAAAAAAAAA CAAAAAAAAAAYAAAAVgAAAAMAAAAAAAAAAgAAAAAAAAOQAAAAAAAAA5AAAAAAAAAAjwAAAAAAAAAA AAAAAAAAAAEAAAAAAAAAAAAAAF5v////AAAAAAAAAAIAAAAAAAAEIAAAAAAAAAQgAAAAAAAAABIA AAAFAAAAAAAAAAAAAAACAAAAAAAAAAIAAABrb////gAAAAAAAAACAAAAAAAABDgAAAAAAAAEOAAA AAAAAAAgAAAABgAAAAEAAAAAAAAACAAAAAAAAAAAAAAAegAAAAQAAAAAAAAAAgAAAAAAAARYAAAA AAAABFgAAAAAAAAA2AAAAAUAAAAAAAAAAAAAAAgAAAAAAAAAGAAAAIQAAAAEAAAAAAAAAEIAAAAA AAAFMAAAAAAAAAUwAAAAAAAAADAAAAAFAAAAFgAAAAAAAAAIAAAAAAAAABgAAACOAAAAAQAAAAAA AAAGAAAAAAAABWAAAAAAAAAFYAAAAAAAAABAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAiQAA AAEAAAAAAAAABgAAAAAAAAWgAAAAAAAABaAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA IAAAAJQAAAABAAAAAAAAAAYAAAAAAAAGAAAAAAAAAAYAAAAAAAAAApAAAAAAAAAAAAAAAAAAAAAI AAAAAAAAAAAAAACaAAAAAQAAAAAAAAAGAAAAAAAACJAAAAAAAAAIkAAAAAAAAAAsAAAAAAAAAAAA AAAAAAAABAAAAAAAAAAAAAAAoAAAAAEAAAAAAAAAAgAAAAAAAAjAAAAAAAAACMAAAAAAAAAAIAAA AAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAKgAAAABAAAAAAAAAAIAAAAAAAAI4AAAAAAAAAjgAAAA AAAAACwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAC2AAAAAQAAAAAAAAACAAAAAAAACRAAAAAA AAAJEAAAAAAAAADUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAwAAAAA4AAAAAAAAAAwAAAAAA AB4IAAAAAAAADggAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAMwAAAAPAAAAAAAA AAMAAAAAAAAeEAAAAAAAAA4QAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAADYAAAA AQAAAAAAAAADAAAAAAAAHhgAAAAAAAAOGAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAA AAAA3QAAAAYAAAAAAAAAAwAAAAAAAB4gAAAAAAAADiAAAAAAAAAB4AAAAAYAAAAAAAAAAAAAAAgA AAAAAAAAEAAAAOYAAAABAAAAAAAAAAMAAAAAAAAgAAAAAAAAABAAAAAAAAAAAFgAAAAAAAAAAAAA AAAAAAAIAAAAAAAAAAgAAADrAAAAAQAAAAAAAAADAAAAAAAAIFgAAAAAAAAQWAAAAAAAAAAQAAAA AAAAAAAAAAAAAAAACAAAAAAAAAAAAAAA8QAAAAgAAAAAAAAAAwAAAAAAACBoAAAAAAAAEGgAAAAA AAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAPYAAAABAAAAAAAAADAAAAAAAAAAAAAAAAAA ABBoAAAAAAAAACUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAD/AAAAAQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAQjQAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABDgAAAAEAAAAAAAAA AAAAAAAAAAAAAAAAAAAAEL0AAAAAAAAAsQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAARoAAAAB AAAAAAAAAAAAAAAAAAAAAAAAAAAAABFuAAAAAAAAAIcAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA AAEoAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR9QAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAQAA AAAAAAAAAAABNAAAAAEAAAAAAAAAMAAAAAAAAAAAAAAAAAAAEj0AAAAAAAAAUQAAAAAAAAAAAAAA AAAAAAEAAAAAAAAAAQAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKQAAAAAAAABqgAAAAg AAAAMgAAAAAAAAAIAAAAAAAAABgAAAAJAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZOAAAAAAA AAIgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA G1gAAAAAAAABPwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAA==

Please let me know if there is more I can provide.

-- Happy hacking Petter Reinholdtsen

aclements commented 7 years ago

@petterreinholdtsen, I think this should do it, but can you test on a big endian machine? I was able to confirm that my little endian machine was able to process the big endian binary, which strongly suggests that this should work, but there could still be bugs.

petterreinholdtsen commented 7 years ago

[Austin Clements]

@petterreinholdtsen, I think this should do it, but can you test on a big endian machine? I was able to confirm that my little endian machine was able to process the big endian binary, which strongly suggests that this should work, but there could still be bugs.

Thank you very much.

I can confirm that 'make check' now work on s390x:

(sid_s390x-dchroot)pere@zelenka:~/libelfin$ uname -a Linux zelenka 3.16.0-4-s390x #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) s390x GNU/Linux (sid_s390x-dchroot)pere@zelenka:~/libelfin$ make check cd test && ./test.sh PASS dump-sections golden-gcc-4.9.2/example PASS dump-sections golden-gcc-6.2.1-s390x/example PASS dump-segments golden-gcc-4.9.2/example PASS dump-segments golden-gcc-6.2.1-s390x/example PASS dump-lines golden-gcc-4.9.2/example PASS dump-lines golden-gcc-6.2.1-s390x/example PASS dump-syms golden-gcc-4.9.2/example PASS dump-syms golden-gcc-6.2.1-s390x/example PASS dump-tree golden-gcc-4.9.2/example PASS dump-tree golden-gcc-6.2.1-s390x/example (sid_s390x-dchroot)pere@zelenka:~/libelfin$

I hope you can make a new release soon with this change, and We'll get it into Debian as soon as possible after this.

-- Happy hacking Petter Reinholdtsen

petterreinholdtsen commented 7 years ago

Btw, looking at the code and the files in test/golden-gcc-*/ make me suspect the test will fail when a new compiler show up or for all architectures that do not have its own directory there. Is this correct? There are as mentioned earlier several big endian architectures in Debian, and I worry that the current fixes only make the s390x build work, while the others will keep failing.

aclements commented 7 years ago

I hope you can make a new release soon with this change, and We'll get it into Debian as soon as possible after this.

Release v0.3 created.

Btw, looking at the code and the files in test/golden-gcc-*/ make me suspect the test will fail when a new compiler show up or for all architectures that do not have its own directory there. Is this correct?

No, this shouldn't be a problem. For example, I ran the 6.2.1-s390x tests on my x86 machine that doesn't have GCC 6.2.1. Since the test binaries are already made, it doesn't matter what architecture is running them or what compilers are available.

petterreinholdtsen commented 7 years ago

[Austin Clements]

Release v0.3 created.

Thank you. It is now uploaded to Debian.

No, this shouldn't be a problem. For example, I ran the 6.2.1-s390x tests on my x86 machine that doesn't have GCC 6.2.1. Since the test binaries are already made, it doesn't matter what architecture is running them or what compilers are available.

You are absolutely right. The automatic builds confirm that the patch get the code working on all Debian architectures. You can check the status on <URL: https://tracker.debian.org/pkg/libelfin >. -- Happy hacking Petter Reinholdtsen