|
|
147e83 |
commit 27822ce67fbf7f2b204992a410e7da2e8c1e2607
|
|
|
147e83 |
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
|
|
147e83 |
Date: Wed Mar 26 15:37:35 2014 -0500
|
|
|
147e83 |
|
|
|
147e83 |
Define _STRING_ARCH_unaligned unconditionally
|
|
|
147e83 |
|
|
|
147e83 |
This patch defines _STRING_ARCH_unaligned to 0 on default bits/string.h
|
|
|
147e83 |
header to avoid undefined compiler warnings on platforms that do not
|
|
|
147e83 |
define it. It also make adjustments in code where tests checked if macro
|
|
|
147e83 |
existed or not.
|
|
|
147e83 |
|
|
|
147e83 |
Conflicts:
|
|
|
147e83 |
resolv/res_send.c
|
|
|
147e83 |
|
|
|
147e83 |
Conflict due to stub resolver rebase in glibc-rh677316-resolv.patch.
|
|
|
147e83 |
|
|
|
147e83 |
diff --git a/bits/string.h b/bits/string.h
|
|
|
147e83 |
index f8630d2c52a9298a..b88a6bc601803f68 100644
|
|
|
147e83 |
--- a/bits/string.h
|
|
|
147e83 |
+++ b/bits/string.h
|
|
|
147e83 |
@@ -8,5 +8,7 @@
|
|
|
147e83 |
#ifndef _BITS_STRING_H
|
|
|
147e83 |
#define _BITS_STRING_H 1
|
|
|
147e83 |
|
|
|
147e83 |
+/* Define if architecture can access unaligned multi-byte variables. */
|
|
|
147e83 |
+#define _STRING_ARCH_unaligned 0
|
|
|
147e83 |
|
|
|
147e83 |
#endif /* bits/string.h */
|
|
|
147e83 |
diff --git a/crypt/sha256.c b/crypt/sha256.c
|
|
|
147e83 |
index aea94651391f19ae..1cbd2bc8381d6778 100644
|
|
|
147e83 |
--- a/crypt/sha256.c
|
|
|
147e83 |
+++ b/crypt/sha256.c
|
|
|
147e83 |
@@ -124,7 +124,7 @@ __sha256_finish_ctx (ctx, resbuf)
|
|
|
147e83 |
memcpy (&ctx->buffer[bytes], fillbuf, pad);
|
|
|
147e83 |
|
|
|
147e83 |
/* Put the 64-bit file length in *bits* at the end of the buffer. */
|
|
|
147e83 |
-#ifdef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if _STRING_ARCH_unaligned
|
|
|
147e83 |
ctx->buffer64[(bytes + pad) / 8] = SWAP64 (ctx->total64 << 3);
|
|
|
147e83 |
#else
|
|
|
147e83 |
ctx->buffer32[(bytes + pad + 4) / 4] = SWAP (ctx->total[TOTAL64_low] << 3);
|
|
|
147e83 |
diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c
|
|
|
147e83 |
index 48932ee695083595..03fa5f2e2c771ebc 100644
|
|
|
147e83 |
--- a/iconv/gconv_simple.c
|
|
|
147e83 |
+++ b/iconv/gconv_simple.c
|
|
|
147e83 |
@@ -112,7 +112,7 @@ internal_ucs4_loop (struct __gconv_step *step,
|
|
|
147e83 |
return result;
|
|
|
147e83 |
}
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
static inline int
|
|
|
147e83 |
__attribute ((always_inline))
|
|
|
147e83 |
internal_ucs4_loop_unaligned (struct __gconv_step *step,
|
|
|
147e83 |
@@ -289,7 +289,7 @@ ucs4_internal_loop (struct __gconv_step *step,
|
|
|
147e83 |
return result;
|
|
|
147e83 |
}
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
static inline int
|
|
|
147e83 |
__attribute ((always_inline))
|
|
|
147e83 |
ucs4_internal_loop_unaligned (struct __gconv_step *step,
|
|
|
147e83 |
@@ -478,7 +478,7 @@ internal_ucs4le_loop (struct __gconv_step *step,
|
|
|
147e83 |
return result;
|
|
|
147e83 |
}
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
static inline int
|
|
|
147e83 |
__attribute ((always_inline))
|
|
|
147e83 |
internal_ucs4le_loop_unaligned (struct __gconv_step *step,
|
|
|
147e83 |
@@ -660,7 +660,7 @@ ucs4le_internal_loop (struct __gconv_step *step,
|
|
|
147e83 |
return result;
|
|
|
147e83 |
}
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
static inline int
|
|
|
147e83 |
__attribute ((always_inline))
|
|
|
147e83 |
ucs4le_internal_loop_unaligned (struct __gconv_step *step,
|
|
|
147e83 |
diff --git a/iconv/loop.c b/iconv/loop.c
|
|
|
147e83 |
index e11e86b5ecd4abd9..7b2499a3d0657265 100644
|
|
|
147e83 |
--- a/iconv/loop.c
|
|
|
147e83 |
+++ b/iconv/loop.c
|
|
|
147e83 |
@@ -63,7 +63,7 @@
|
|
|
147e83 |
representations with a fixed width of 2 or 4 bytes. But if we cannot
|
|
|
147e83 |
access unaligned memory we still have to read byte-wise. */
|
|
|
147e83 |
#undef FCTNAME2
|
|
|
147e83 |
-#if defined _STRING_ARCH_unaligned || !defined DEFINE_UNALIGNED
|
|
|
147e83 |
+#if _STRING_ARCH_unaligned || !defined DEFINE_UNALIGNED
|
|
|
147e83 |
/* We can handle unaligned memory access. */
|
|
|
147e83 |
# define get16(addr) *((const uint16_t *) (addr))
|
|
|
147e83 |
# define get32(addr) *((const uint32_t *) (addr))
|
|
|
147e83 |
@@ -342,7 +342,7 @@ FCTNAME (LOOPFCT) (struct __gconv_step *step,
|
|
|
147e83 |
|
|
|
147e83 |
/* Include the file a second time to define the function to handle
|
|
|
147e83 |
unaligned access. */
|
|
|
147e83 |
-#if !defined DEFINE_UNALIGNED && !defined _STRING_ARCH_unaligned \
|
|
|
147e83 |
+#if !defined DEFINE_UNALIGNED && !_STRING_ARCH_unaligned \
|
|
|
147e83 |
&& MIN_NEEDED_INPUT != 1 && MAX_NEEDED_INPUT % MIN_NEEDED_INPUT == 0 \
|
|
|
147e83 |
&& MIN_NEEDED_OUTPUT != 1 && MAX_NEEDED_OUTPUT % MIN_NEEDED_OUTPUT == 0
|
|
|
147e83 |
# undef get16
|
|
|
147e83 |
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
|
|
|
147e83 |
index 934b1fdde8d277df..176436a4c81f071b 100644
|
|
|
147e83 |
--- a/iconv/skeleton.c
|
|
|
147e83 |
+++ b/iconv/skeleton.c
|
|
|
147e83 |
@@ -203,7 +203,7 @@
|
|
|
147e83 |
/* Define macros which can access unaligned buffers. These macros are
|
|
|
147e83 |
supposed to be used only in code outside the inner loops. For the inner
|
|
|
147e83 |
loops we have other definitions which allow optimized access. */
|
|
|
147e83 |
-#ifdef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if _STRING_ARCH_unaligned
|
|
|
147e83 |
/* We can handle unaligned memory access. */
|
|
|
147e83 |
# define get16u(addr) *((const uint16_t *) (addr))
|
|
|
147e83 |
# define get32u(addr) *((const uint32_t *) (addr))
|
|
|
147e83 |
@@ -522,7 +522,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
|
|
147e83 |
INTERNAL, for which the subexpression evaluates to 1, but INTERNAL
|
|
|
147e83 |
buffers are always aligned correctly. */
|
|
|
147e83 |
#define POSSIBLY_UNALIGNED \
|
|
|
147e83 |
- (!defined _STRING_ARCH_unaligned \
|
|
|
147e83 |
+ (!_STRING_ARCH_unaligned \
|
|
|
147e83 |
&& (((FROM_LOOP_MIN_NEEDED_FROM != 1 \
|
|
|
147e83 |
&& FROM_LOOP_MAX_NEEDED_FROM % FROM_LOOP_MIN_NEEDED_FROM == 0) \
|
|
|
147e83 |
&& (FROM_LOOP_MIN_NEEDED_TO != 1 \
|
|
|
147e83 |
diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c
|
|
|
147e83 |
index 41488ed6c033ffcd..5fe9f2f62fa28fd4 100644
|
|
|
147e83 |
--- a/nscd/nscd_gethst_r.c
|
|
|
147e83 |
+++ b/nscd/nscd_gethst_r.c
|
|
|
147e83 |
@@ -190,7 +190,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
|
|
|
147e83 |
goto out;
|
|
|
147e83 |
}
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
/* The aliases_len array in the mapped database might very
|
|
|
147e83 |
well be unaligned. We will access it word-wise so on
|
|
|
147e83 |
platforms which do not tolerate unaligned accesses we
|
|
|
147e83 |
diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c
|
|
|
147e83 |
index acf7e22f82582dbb..5880b1bc023d1c02 100644
|
|
|
147e83 |
--- a/nscd/nscd_getserv_r.c
|
|
|
147e83 |
+++ b/nscd/nscd_getserv_r.c
|
|
|
147e83 |
@@ -140,7 +140,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
|
|
|
147e83 |
> recend, 0))
|
|
|
147e83 |
goto out;
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
/* The aliases_len array in the mapped database might very
|
|
|
147e83 |
well be unaligned. We will access it word-wise so on
|
|
|
147e83 |
platforms which do not tolerate unaligned accesses we
|
|
|
147e83 |
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
|
|
|
147e83 |
index 96fb93db768703cc..a46047b1fa0d502e 100644
|
|
|
147e83 |
--- a/nscd/nscd_helper.c
|
|
|
147e83 |
+++ b/nscd/nscd_helper.c
|
|
|
147e83 |
@@ -489,7 +489,7 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
|
|
|
147e83 |
struct hashentry *here = (struct hashentry *) (mapped->data + work);
|
|
|
147e83 |
ref_t here_key, here_packet;
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
/* Although during garbage collection when moving struct hashentry
|
|
|
147e83 |
records around we first copy from old to new location and then
|
|
|
147e83 |
adjust pointer from previous hashentry to it, there is no barrier
|
|
|
147e83 |
@@ -511,7 +511,7 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
|
|
|
147e83 |
struct datahead *dh
|
|
|
147e83 |
= (struct datahead *) (mapped->data + here_packet);
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
if ((uintptr_t) dh & (__alignof__ (*dh) - 1))
|
|
|
147e83 |
return NULL;
|
|
|
147e83 |
#endif
|
|
|
147e83 |
@@ -535,7 +535,7 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
|
|
|
147e83 |
struct hashentry *trailelem;
|
|
|
147e83 |
trailelem = (struct hashentry *) (mapped->data + trail);
|
|
|
147e83 |
|
|
|
147e83 |
-#ifndef _STRING_ARCH_unaligned
|
|
|
147e83 |
+#if !_STRING_ARCH_unaligned
|
|
|
147e83 |
/* We have to redo the checks. Maybe the data changed. */
|
|
|
147e83 |
if ((uintptr_t) trailelem & (__alignof__ (*trailelem) - 1))
|
|
|
147e83 |
return NULL;
|