You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

182 lines
7.0 KiB

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