]> git.pld-linux.org Git - packages/glibc.git/blame - glibc-arm-alignment-fix.patch
Rel 8; fixes from upstream
[packages/glibc.git] / glibc-arm-alignment-fix.patch
CommitLineData
c0c7ef32
AM
1diff -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
fb4d8577 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.051732 seconds and 4 git commands to generate.