Bug#548842: Apt alignment trap.
A patch has turned up for glibc-2.9. I'm trying it on eglibc-2.10... See http://sourceware.org/ml/crossgcc/2009-11/msg8.html --- glibc-ports-2.9/sysdeps/arm/dl-machine.h.orig 2009-11-03 22:03:57.0 +0100 +++ glibc-ports-2.9/sysdeps/arm/dl-machine.h2009-11-03 22:11:45.0 +0100 @@ -568,13 +568,22 @@ } # endif +union arm_unaligned_data { + Elf32_Addr l_addr; +} __attribute__ ((packed)); + auto inline void __attribute__ ((always_inline)) elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, void *const reloc_addr_arg) { - Elf32_Addr *const reloc_addr = reloc_addr_arg; - *reloc_addr += l_addr; + if (((long)reloc_addr_arg) 0x3) { +union arm_unaligned_data *const lpdata = reloc_addr_arg; +lpdata-l_addr += l_addr; + } else { +Elf32_Addr *const reloc_addr = reloc_addr_arg; +*reloc_addr += l_addr; + } } # ifndef RTLD_BOOTSTRAP -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#548842: Apt alignment trap.
reassign 548842 gcc-4.3 4.3.4-2 thanks On 10/9/09, John Reiser ven...@bitwagon.com wrote: Some shared library has been built with an initialized pointer, where the storage for the pointer itself is not aligned on a 4-byte boundary. The problem is not in glibc(ld-linux); the problem lies in some shared library that the app requires. Debug this via setenv LD_DEBUG reloc ./my_app args... Thanks! It seems to affect any C++ program on armel, including hello.cc mar...@n2100:~$ LD_DEBUG=reloc ./a.out 6836: 6836: relocation processing: /lib/libc.so.6 (lazy) 6836: 6836: relocation processing: /lib/libgcc_s.so.1 (lazy) 6836: 6836: relocation processing: /lib/libm.so.6 (lazy) 6836: 6836: relocation processing: /usr/lib/libstdc++.so.6 (lazy) Bus error and libstdc++.so.6 seems to be provided by gcc-4.3, so I'm reassigning the bug... -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#548842: Apt alignment trap.
If you'd like to help debug this, you can echo 5 /proc/cpu/alignment and run apt-get under gdb - it will be killed with a Bus Error at the bad code. *reloc_addr += value Some shared library has been built with an initialized pointer, where the storage for the pointer itself is not aligned on a 4-byte boundary. The problem is not in glibc(ld-linux); the problem lies in some shared library that the app requires. Debug this via setenv LD_DEBUG reloc ./my_app args... or perhaps [in bash]: LD_DEBUG=reloc,files ./my_app args... Set LD_DEBUG=help to get info on other options for debugging the processing that ld-linux does. -- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org