This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
ld-collate.c requires an alignment of 4 when previous items where only
aligned at __alignof__ (int32_t). The latter is 2 on m68k-linux, thus the
assertion may fail.
2000-09-26 Andreas Schwab <schwab@suse.de>
* locale/programs/ld-collate.c (collate_output): Only require
alignment on __alignof__ (int32_t) instead of 4.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* string/strcoll.c: Likewise.
Index: locale/loadlocale.c
===================================================================
RCS file: /cvs/glibc/libc/locale/loadlocale.c,v
retrieving revision 1.37
diff -u -a -u -r1.37 locale/loadlocale.c
--- locale/loadlocale.c 2000/09/01 02:23:48 1.37
+++ locale/loadlocale.c 2000/09/26 11:43:30
@@ -217,7 +217,7 @@
}
if (__builtin_expect (_nl_value_types[category][cnt] == word, 0))
{
- assert (idx % 4 == 0);
+ assert (idx % __alignof__ (u_int32_t) == 0);
newdata->values[cnt].word =
*((u_int32_t *) (newdata->filedata + idx));
}
Index: locale/programs/ld-collate.c
===================================================================
RCS file: /cvs/glibc/libc/locale/programs/ld-collate.c,v
retrieving revision 1.86
diff -u -a -u -r1.86 locale/programs/ld-collate.c
--- locale/programs/ld-collate.c 2000/09/11 20:32:13 1.86
+++ locale/programs/ld-collate.c 2000/09/26 11:43:46
@@ -2204,21 +2204,21 @@
iov[2 + cnt].iov_base = NULL;
iov[2 + cnt].iov_len = 0;
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_GAP2));
iov[2 + cnt].iov_base = NULL;
iov[2 + cnt].iov_len = 0;
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_GAP3));
iov[2 + cnt].iov_base = NULL;
iov[2 + cnt].iov_len = 0;
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
/* Since we are using the sign of an integer to mark indirection the
@@ -2368,7 +2368,7 @@
iov[2 + cnt].iov_len = tablewc.result_size;
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
assert (iov[2 + cnt].iov_len % sizeof (int32_t) == 0);
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_WEIGHTWC));
@@ -2376,7 +2376,7 @@
iov[2 + cnt].iov_base = obstack_finish (&weightpool);
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
assert (iov[2 + cnt].iov_len % sizeof (int32_t) == 0);
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_EXTRAWC));
@@ -2384,7 +2384,7 @@
iov[2 + cnt].iov_base = obstack_finish (&extrapool);
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
assert (iov[2 + cnt].iov_len % sizeof (int32_t) == 0);
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_INDIRECTWC));
@@ -2392,7 +2392,7 @@
iov[2 + cnt].iov_base = obstack_finish (&indirectpool);
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
assert (iov[2 + cnt].iov_len % sizeof (int32_t) == 0);
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
@@ -2493,14 +2493,14 @@
iov[2 + cnt].iov_base = &elem_size;
iov[2 + cnt].iov_len = sizeof (int32_t);
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_SYMB_TABLEMB));
iov[2 + cnt].iov_base = elem_table;
iov[2 + cnt].iov_len = elem_size * 2 * sizeof (int32_t);
idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_SYMB_EXTRAMB));
@@ -2518,7 +2518,7 @@
assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_COLLSEQWC));
iov[2 + cnt].iov_base = collate->wcseqorder.result;
iov[2 + cnt].iov_len = collate->wcseqorder.result_size;
- assert (idx[cnt] % 4 == 0);
+ assert (idx[cnt] % __alignof__ (int32_t) == 0);
++cnt;
assert (cnt == _NL_ITEM_INDEX (_NL_NUM_LC_COLLATE));
Index: string/strcoll.c
===================================================================
RCS file: /cvs/glibc/libc/string/strcoll.c,v
retrieving revision 1.23
diff -u -a -u -r1.23 string/strcoll.c
--- string/strcoll.c 2000/09/01 19:24:53 1.23
+++ string/strcoll.c 2000/09/26 13:15:46
@@ -127,10 +127,10 @@
#endif
use_malloc = 0;
- assert (((uintptr_t) table) % sizeof (table[0]) == 0);
- assert (((uintptr_t) weights) % sizeof (weights[0]) == 0);
- assert (((uintptr_t) extra) % sizeof (extra[0]) == 0);
- assert (((uintptr_t) indirect) % sizeof (indirect[0]) == 0);
+ assert (((uintptr_t) table) % __alignof__ (table[0]) == 0);
+ assert (((uintptr_t) weights) % __alignof__ (weights[0]) == 0);
+ assert (((uintptr_t) extra) % __alignof__ (extra[0]) == 0);
+ assert (((uintptr_t) indirect) % __alignof__ (indirect[0]) == 0);
/* We need this a few times. */
s1len = STRLEN (s1);
--
Andreas Schwab "And now for something
SuSE Labs completely different."
Andreas.Schwab@suse.de
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |