The standard objdump does not recognised the format. It works if I used an arm-linux-androideabi-objdump from the Android ndk but I am using the clang API to read binary inside my soft. This is why I was only working with llvm-objdump.> On 19 Jun 2016, at 15:03, Bruce Hoult <bruce at hoult.org> wrote: > > What happens if you use the standard bunutils objdump e.g. from macports package arm-elf-binutils (if you're on a Mac)? > > > On Mon, Jun 20, 2016 at 12:45 AM, Johan Wehrli via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > Hi Everyone, > > When I used llvm-objdump to disassemble an ELF armv7 or thumb I have this error message: > > llvm-objdump: warning: invalid instruction encoding > > This message appears directly into the output and the output is mostly wrong (the invalid instruction create a shift in the addresses) : > > > 1a6d: ff 2f e1 08 stmeq r1!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, sp} ^ > 1a71: 30 90 e5 00 rsceq r9, r5, r0, lsr r0 > 1a75: 10 a0 e1 00 rsceq r10, r1, r0, lsl r0 > 1a79: 00 53 e3 1e cdpne p3, #14, c5, c3, c0, #0 > llvm-objdump: warning: invalid instruction encoding > 1a7e: 2f 01 01 00 andeq r0, r1, pc, lsr #2 > llvm-objdump: warning: invalid instruction encoding > 1a83: e3 13 ff 2f svchs #16716771 > llvm-objdump: warning: invalid instruction encoding > > The binaries I try to read are c++ dynamic libraries for Android. > > I have used the following parameters: > > -llvm-objcdump mylib.so -d -arch=arm > -llvm-objcdump mylib.so -d -arch=armv7 > -llvm-objcdump mylib.so -d -arch=thumb > > or with the following triples: > > armv7-none-linux-android > thumbv7-none-linux-android > > Does anyone know why I have this error? Am I missing some input parameters? > > This is strange because it works great on iOS binaries (both thumb or arm). > > Greetings, > > Johan > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160620/2996daca/attachment.html>
After some digging, I found people with the same problem: https://llvm.org/bugs/show_bug.cgi?id=15795 <https://llvm.org/bugs/show_bug.cgi?id=15795> https://groups.google.com/forum/#!topic/llvm-dev/Kf3jXQLUJtM <https://groups.google.com/forum/#!topic/llvm-dev/Kf3jXQLUJtM> Does anyone know if there is a solution now? I can’t find anything.> On 20 Jun 2016, at 07:37, Johan Wehrli via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > The standard objdump does not recognised the format. > > It works if I used an arm-linux-androideabi-objdump from the Android ndk but I am using the clang API to read binary inside my soft. > > This is why I was only working with llvm-objdump. > >> On 19 Jun 2016, at 15:03, Bruce Hoult <bruce at hoult.org <mailto:bruce at hoult.org>> wrote: >> >> What happens if you use the standard bunutils objdump e.g. from macports package arm-elf-binutils (if you're on a Mac)? >> >> >> On Mon, Jun 20, 2016 at 12:45 AM, Johan Wehrli via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> Hi Everyone, >> >> When I used llvm-objdump to disassemble an ELF armv7 or thumb I have this error message: >> >> llvm-objdump: warning: invalid instruction encoding >> >> This message appears directly into the output and the output is mostly wrong (the invalid instruction create a shift in the addresses) : >> >> >> 1a6d: ff 2f e1 08 stmeq r1!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, sp} ^ >> 1a71: 30 90 e5 00 rsceq r9, r5, r0, lsr r0 >> 1a75: 10 a0 e1 00 rsceq r10, r1, r0, lsl r0 >> 1a79: 00 53 e3 1e cdpne p3, #14, c5, c3, c0, #0 >> llvm-objdump: warning: invalid instruction encoding >> 1a7e: 2f 01 01 00 andeq r0, r1, pc, lsr #2 >> llvm-objdump: warning: invalid instruction encoding >> 1a83: e3 13 ff 2f svchs #16716771 >> llvm-objdump: warning: invalid instruction encoding >> >> The binaries I try to read are c++ dynamic libraries for Android. >> >> I have used the following parameters: >> >> -llvm-objcdump mylib.so -d -arch=arm >> -llvm-objcdump mylib.so -d -arch=armv7 >> -llvm-objcdump mylib.so -d -arch=thumb >> >> or with the following triples: >> >> armv7-none-linux-android >> thumbv7-none-linux-android >> >> Does anyone know why I have this error? Am I missing some input parameters? >> >> This is strange because it works great on iOS binaries (both thumb or arm). >> >> Greetings, >> >> Johan >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> >> > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160620/56be5f2e/attachment.html>
I found the problem, my libraries contains both ARM and Thumb instructions. When I specified the triple for thumb, all the arm function where not correctly disassemble. This creates a shift that has repercussion into the thumb function. You can simply disassemble function per function and used the triple : thumbv7-unknown-unknown-macho or armv7-unknown-unknown-macho> On 20 Jun 2016, at 08:47, Johan Wehrli via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > After some digging, I found people with the same problem: > > https://llvm.org/bugs/show_bug.cgi?id=15795 <https://llvm.org/bugs/show_bug.cgi?id=15795> > https://groups.google.com/forum/#!topic/llvm-dev/Kf3jXQLUJtM <https://groups.google.com/forum/#!topic/llvm-dev/Kf3jXQLUJtM> > > Does anyone know if there is a solution now? I can’t find anything. > >> On 20 Jun 2016, at 07:37, Johan Wehrli via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> >> The standard objdump does not recognised the format. >> >> It works if I used an arm-linux-androideabi-objdump from the Android ndk but I am using the clang API to read binary inside my soft. >> >> This is why I was only working with llvm-objdump. >> >>> On 19 Jun 2016, at 15:03, Bruce Hoult <bruce at hoult.org <mailto:bruce at hoult.org>> wrote: >>> >>> What happens if you use the standard bunutils objdump e.g. from macports package arm-elf-binutils (if you're on a Mac)? >>> >>> >>> On Mon, Jun 20, 2016 at 12:45 AM, Johan Wehrli via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >>> Hi Everyone, >>> >>> When I used llvm-objdump to disassemble an ELF armv7 or thumb I have this error message: >>> >>> llvm-objdump: warning: invalid instruction encoding >>> >>> This message appears directly into the output and the output is mostly wrong (the invalid instruction create a shift in the addresses) : >>> >>> >>> 1a6d: ff 2f e1 08 stmeq r1!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, sp} ^ >>> 1a71: 30 90 e5 00 rsceq r9, r5, r0, lsr r0 >>> 1a75: 10 a0 e1 00 rsceq r10, r1, r0, lsl r0 >>> 1a79: 00 53 e3 1e cdpne p3, #14, c5, c3, c0, #0 >>> llvm-objdump: warning: invalid instruction encoding >>> 1a7e: 2f 01 01 00 andeq r0, r1, pc, lsr #2 >>> llvm-objdump: warning: invalid instruction encoding >>> 1a83: e3 13 ff 2f svchs #16716771 >>> llvm-objdump: warning: invalid instruction encoding >>> >>> The binaries I try to read are c++ dynamic libraries for Android. >>> >>> I have used the following parameters: >>> >>> -llvm-objcdump mylib.so -d -arch=arm >>> -llvm-objcdump mylib.so -d -arch=armv7 >>> -llvm-objcdump mylib.so -d -arch=thumb >>> >>> or with the following triples: >>> >>> armv7-none-linux-android >>> thumbv7-none-linux-android >>> >>> Does anyone know why I have this error? Am I missing some input parameters? >>> >>> This is strange because it works great on iOS binaries (both thumb or arm). >>> >>> Greetings, >>> >>> Johan >>> _______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> >>> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160620/7cf97e31/attachment.html>