1 diff -dur glibc-2.11.backup/ports/sysdeps/arm/dl-machine.h glibc-2.11/ports/sysdeps/arm/dl-machine.h
2 --- glibc-2.11.backup/ports/sysdeps/arm/dl-machine.h 2009-11-10 08:12:18.000000000 +0100
3 +++ glibc-2.11/ports/sysdeps/arm/dl-machine.h 2009-11-11 10:07:48.030872826 +0100
8 +union arm_unaligned_data {
10 +} __attribute__ ((packed));
13 __attribute__ ((always_inline))
14 elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
15 void *const reloc_addr_arg)
17 - Elf32_Addr *const reloc_addr = reloc_addr_arg;
18 - *reloc_addr += l_addr;
19 + if (((long)reloc_addr_arg) & 0x3) {
20 + union arm_unaligned_data *const lpdata = reloc_addr_arg;
21 + lpdata->l_addr += l_addr;
23 + Elf32_Addr *const reloc_addr = reloc_addr_arg;
24 + *reloc_addr += l_addr;
28 # ifndef RTLD_BOOTSTRAP