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