The code in type_byte() is wrong:

type_byte:
        cmp     r0, #7
        bhi     .L22
        tbb     [pc, r0]
.L31:
        .byte   (.L23-.L31)/2
        .byte   (.L24-.L31)/2
        .byte   (.L25-.L31)/2
        .byte   (.L26-.L31)/2
        .byte   (.L32-.L31)/2
        .byte   (.L28-.L31)/2
        .byte   (.L29-.L31)/2
        .byte   (.L30-.L31)/2
.L30:
        movs    r0, #112
        bx      lr
.L22:
        push    {r4, lr}
        movw    r0, #:lower16:.LC1
        sub     sp, sp, #8
        movw    r1, #:lower16:.LC2
        movw    r3, #:lower16:.LANCHOR0
        movt    r0, #:upper16:.LC1
        movt    r1, #:upper16:.LC2
        movw    r2, #1758
        movt    r3, #:upper16:.LANCHOR0
        movs    r4, #0
        str     r4, [sp, #0]
        bl      g_assertion_message
        movs    r0, #118
        bx      lr
.L24:
        movs    r0, #115
        bx      lr
.L25:
        movs    r0, #105
        bx      lr
.L26:
        movs    r0, #102
        bx      lr
        ...

Most of the branches are fine, except the one that has the assertion.
The prologue pushes and adjusts the stack by 8 but doesn't fix it in the
epilogue.

** Attachment added: "Preprocessed source"
   
https://bugs.launchpad.net/ubuntu/+source/gconf/+bug/757427/+attachment/2038170/+files/gconf-internals.i.gz

** Tags added: shrinkwrap

** Changed in: gcc-linaro
       Status: New => Triaged

** Changed in: gcc-linaro
   Importance: Undecided => High

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/757427

Title:
  gconftool-2 segfaults on arm

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to