]> git.pld-linux.org Git - packages/glibc.git/blob - glibc-arm-alignment-fix.patch
- rel 10; update from upstream
[packages/glibc.git] / glibc-arm-alignment-fix.patch
1 diff -dur glibc-2.11.backup/sysdeps/arm/dl-machine.h glibc-2.11/sysdeps/arm/dl-machine.h
2 --- glibc-2.11.backup/sysdeps/arm/dl-machine.h  2009-11-10 08:12:18.000000000 +0100
3 +++ glibc-2.11/sysdeps/arm/dl-machine.h 2009-11-11 10:07:48.030872826 +0100
4 @@ -585,13 +585,22 @@
5  }
6  # endif
7  
8 +union arm_unaligned_data {
9 +  Elf32_Addr l_addr;
10 +} __attribute__ ((packed));
11 +
12  auto inline void
13  __attribute__ ((always_inline))
14  elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
15                           void *const reloc_addr_arg)
16  {
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;
22 +  } else {
23 +    Elf32_Addr *const reloc_addr = reloc_addr_arg;
24 +    *reloc_addr += l_addr;
25 +  }
26  }
27  
28  # ifndef RTLD_BOOTSTRAP
This page took 0.02195 seconds and 3 git commands to generate.