packages: glibc/glibc-arm-alignment-fix.patch (NEW) - initial from fedora

tommat tommat at pld-linux.org
Sun Jun 27 10:59:05 CEST 2010


Author: tommat                       Date: Sun Jun 27 08:59:05 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- initial from fedora

---- Files affected:
packages/glibc:
   glibc-arm-alignment-fix.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/glibc/glibc-arm-alignment-fix.patch
diff -u /dev/null packages/glibc/glibc-arm-alignment-fix.patch:1.1
--- /dev/null	Sun Jun 27 10:59:05 2010
+++ packages/glibc/glibc-arm-alignment-fix.patch	Sun Jun 27 10:59:00 2010
@@ -0,0 +1,28 @@
+diff -dur glibc-2.11.backup/ports/sysdeps/arm/dl-machine.h glibc-2.11/ports/sysdeps/arm/dl-machine.h
+--- glibc-2.11.backup/ports/sysdeps/arm/dl-machine.h	2009-11-10 08:12:18.000000000 +0100
++++ glibc-2.11/ports/sysdeps/arm/dl-machine.h	2009-11-11 10:07:48.030872826 +0100
+@@ -585,13 +585,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
================================================================


More information about the pld-cvs-commit mailing list