All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support
@ 2014-05-05 12:09 Christopher Horler
  2014-05-05 15:39 ` Peter Maydell
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Christopher Horler @ 2014-05-05 12:09 UTC (permalink / raw)
  To: qemu-devel

Public bug reported:

I was reading the mailing list and saw NEON support in QEmu was making
progress.

Is it not supported in user mode?  or am I running into something else
here?  (I've tried to include some what may be useful information)

using qemu from git (last commits as below):
fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

(for completeness I should point out this is not actually
libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
qemu: unhandled CPU exception 0x2 - aborting
R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
PSR=00000010 ---- A usr32
qemu: uncaught target signal 6 (Aborted) - core dumped
Aborted


chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_CPU_unaligned_access: v6
  Tag_DIV_use: Not allowed


chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
..
Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
(gdb) list main.c:685
680
681         for(;;) {
682             cpu_exec_start(cs);
683             trapnr = cpu_arm_exec(env);
684             cpu_exec_end(cs);
685             switch(trapnr) {
686             case EXCP_UDEF:
687                 {
688                     TaskState *ts = cs->opaque;
689                     uint32_t opcode;
(gdb) break main.c:685
Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
(gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
685             switch(trapnr) {
(gdb) print trapnr
$1 = 2
(gdb) n
762                     if (trapnr == EXCP_BKPT) {
(gdb) n
760                     env->eabi = 1;
(gdb) n
762                     if (trapnr == EXCP_BKPT) {
(gdb) n
775                         if (env->thumb) {
(gdb) n
777                             get_user_code_u16(insn, env->regs[15] - 2,
(gdb) n
775                         if (env->thumb) {
(gdb) n
782                             get_user_code_u32(insn, env->regs[15] - 4,
(gdb) n
784                             n = insn & 0xffffff;
(gdb) n
788                     if (n == ARM_NR_cacheflush) {
(gdb) print n
$2 = 587775
(gdb) n
790                     } else if (n == ARM_NR_semihosting
(gdb) n
793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
(gdb) n
872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
(gdb) n
qemu: unhandled CPU exception 0x2 - aborting
874                 cpu_dump_state(cs, stderr, fprintf, 0);
(gdb) print env
$3 = (CPUARMState *) 0x6255e650
(gdb) print *env
$4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
  spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
  NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
    c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
    pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
    c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
    c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
    c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
      0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
    syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
    vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
      floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
      float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
      default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
    cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
(gdb) quit
A debugging session is active.

        Inferior 1 [process 13185] will be killed.

Quit anyway? (y or n) y

** Affects: qemu
     Importance: Undecided
         Status: New


** Tags: neon qemu-arm

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  New

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support
  2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
@ 2014-05-05 15:39 ` Peter Maydell
  2014-05-05 16:06 ` [Qemu-devel] [Bug 1316115] " Christopher Horler
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2014-05-05 15:39 UTC (permalink / raw)
  To: Bug 1316115; +Cc: QEMU Developers

On 5 May 2014 13:09, Christopher Horler <cshorler@googlemail.com> wrote:
> Public bug reported:
>
> I was reading the mailing list and saw NEON support in QEmu was making
> progress.
>
> Is it not supported in user mode?  or am I running into something else
> here?  (I've tried to include some what may be useful information)

Neon in the 32-bit CPUs has been supported for several releases now;
what you're seeing is probably something else.

> using qemu from git (last commits as below):
> fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
> e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
> c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging
>
> (for completeness I should point out this is not actually
> libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).
>
> chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2

Are you trying to execute a DLL on purpose?

> qemu: unhandled CPU exception 0x2 - aborting
> R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
> R04=00000000 R05=00000000 R06=00000000 R07=00000000
> R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
> R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
> PSR=00000010 ---- A usr32
> qemu: uncaught target signal 6 (Aborted) - core dumped
> Aborted

This means your guest program tried to execute an SWI
instruction which didn't have a sensible immediate value
in it to be a Linux system call. This seems to me to be
likely because we're trying to execute garbage because
you've tried to execute a DLL rather than an executable.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [Bug 1316115] Re: linux-user qemu-arm NEON support
  2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
  2014-05-05 15:39 ` Peter Maydell
@ 2014-05-05 16:06 ` Christopher Horler
  2014-05-05 16:28 ` Christopher Horler
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Christopher Horler @ 2014-05-05 16:06 UTC (permalink / raw)
  To: qemu-devel

> Are you trying to execute a DLL on purpose?

Yes - it's executable and should print out something like this (this
from my host system):

chorler@linux-foxtrot:~> /usr/lib64/libQt5Core.so.5
This is the QtCore library version 5.1.1
Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
Contact: http://www.qt-project.org/legal

Build date:          2014-01-22
Installation prefix: /usr
Library path:        /usr/lib64
Include path:        /usr/include/qt5
Processor features:  sse2[required] sse3 ssse3
chorler@linux-foxtrot:~>

For an earlier version of the Shared Library that I've compiled myself it works:
chorler@linux-foxtrot:~/projects/src/buildroot> qemu-arm -L ./output/target ./output/target/usr/lib/libQtCore.so.4.8.5 
This is the QtCore library version 4.8.5
Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
Contact: http://www.qt-project.org/legal

Build key:           arm linux g++-4 full-config
Compat build key:    | armv6 linux g++-4 full-config |
Build date:          2013-10-14
Installation prefix: /usr
Library path:        /usr/lib
Include path:        /usr/include
Processor features:  neon
chorler@linux-foxtrot:~/projects/src/buildroot> arm-linux-gnueabihf-readelf -A ./output/target/usr/lib/libQtCore.so.4.8.5 
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_CPU_unaligned_access: v6
  Tag_DIV_use: Not allowed


If this is more likely to be a problem with the library rather than qemu, I can build Qt5 myself for comparison (at the moment I'm just trying to execute a third party's work).

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  New

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [Bug 1316115] Re: linux-user qemu-arm NEON support
  2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
  2014-05-05 15:39 ` Peter Maydell
  2014-05-05 16:06 ` [Qemu-devel] [Bug 1316115] " Christopher Horler
@ 2014-05-05 16:28 ` Christopher Horler
  2014-05-08 19:54 ` Christopher Horler
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Christopher Horler @ 2014-05-05 16:28 UTC (permalink / raw)
  To: qemu-devel

Now I look at the two sets of architecture specific information for the
two versions of the library it's almost certain this has nothing to do
with NEON.

I'll build a version of Qt5 of my own to test, if that works then from
my perspective it's not a qemu bug.

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  New

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [Bug 1316115] Re: linux-user qemu-arm NEON support
  2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
                   ` (2 preceding siblings ...)
  2014-05-05 16:28 ` Christopher Horler
@ 2014-05-08 19:54 ` Christopher Horler
  2014-05-08 20:24   ` Peter Maydell
  2014-05-09  6:39 ` Christopher Horler
  2015-01-10 12:10 ` Christopher Horler
  5 siblings, 1 reply; 8+ messages in thread
From: Christopher Horler @ 2014-05-08 19:54 UTC (permalink / raw)
  To: qemu-devel

I built Qt5 myself, and tested and it crashed again.

I think the entry point getting set in the ELF header is probably
invalid and leading to the crash - I'm going to try and fix that - but
it's almost certainly not a qemu bug.

I suggest closing the bug report.

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  New

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Bug 1316115] Re: linux-user qemu-arm NEON support
  2014-05-08 19:54 ` Christopher Horler
@ 2014-05-08 20:24   ` Peter Maydell
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2014-05-08 20:24 UTC (permalink / raw)
  To: Bug 1316115; +Cc: QEMU Developers

On 8 May 2014 20:54, Christopher Horler <cshorler@googlemail.com> wrote:
> I built Qt5 myself, and tested and it crashed again.
>
> I think the entry point getting set in the ELF header is probably
> invalid and leading to the crash - I'm going to try and fix that - but
> it's almost certainly not a qemu bug.

Does the same ARM binary work on real hardware?

thanks
-- PMM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [Bug 1316115] Re: linux-user qemu-arm NEON support
  2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
                   ` (3 preceding siblings ...)
  2014-05-08 19:54 ` Christopher Horler
@ 2014-05-09  6:39 ` Christopher Horler
  2015-01-10 12:10 ` Christopher Horler
  5 siblings, 0 replies; 8+ messages in thread
From: Christopher Horler @ 2014-05-09  6:39 UTC (permalink / raw)
  To: qemu-devel

I didn't test it on real hardware yet - but I resolved the issue and
found the root cause last night:

This perhaps should have been more obvious to me in the beginning, but "readelf -l" shows a program header similar to this:
  INTERP         0x0000000000394600 0x0000000000394600 0x0000000000394600
                 0x000000000000001c 0x000000000000001c  R      10
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]


This triggered a 9 month old memory of me fixing the Qt4.8 project file (used to create the Makefile) to ensure the correct loader (program interpreter).

Meanwhile, upstream made this patch in Qt5 - which I don't want, when I
revert it and implement what I had before I get the expected result
under qemu - it runs.

https://qt.gitorious.org/qt/qtbase/commit/b2a45e02a23fcbc9db29d700e2abaf627a1fdedf

(the !cross_compile causes the variables not to be set, my own patch for
Qt 4.8 was setting these from buildroot / patch)

In the default unpatched case for a cross-compiled build, the shared
library is not directly executable because the entry point and
interpreter define never get set (eliminating the code that outputs the
desired specific version information!)

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  New

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [Bug 1316115] Re: linux-user qemu-arm NEON support
  2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
                   ` (4 preceding siblings ...)
  2014-05-09  6:39 ` Christopher Horler
@ 2015-01-10 12:10 ` Christopher Horler
  5 siblings, 0 replies; 8+ messages in thread
From: Christopher Horler @ 2015-01-10 12:10 UTC (permalink / raw)
  To: qemu-devel

** Changed in: qemu
       Status: New => Invalid

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  Invalid

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  chorler@linux-foxtrot:~/projects/src/CustomFirmware> qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  chorler@linux-foxtrot:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  chorler@linux-foxtrot:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file /home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root ./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (env=env@entry=0x6255e650) at /home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 <repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-01-10 12:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-05 12:09 [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support Christopher Horler
2014-05-05 15:39 ` Peter Maydell
2014-05-05 16:06 ` [Qemu-devel] [Bug 1316115] " Christopher Horler
2014-05-05 16:28 ` Christopher Horler
2014-05-08 19:54 ` Christopher Horler
2014-05-08 20:24   ` Peter Maydell
2014-05-09  6:39 ` Christopher Horler
2015-01-10 12:10 ` Christopher Horler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.