From 975569d0d953fb8940d23af83ce9f9765b2b07ae Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 3 Oct 2013 21:51:32 +0000 Subject: Remove locale file dependence on int32_t alignment. --- locale/programs/ld-collate.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) (limited to 'locale/programs') diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index e610389..31e2d05 100644 --- a/locale/programs/ld-collate.c +++ b/locale/programs/ld-collate.c @@ -2154,11 +2154,11 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, ++i; } /* And align the output. */ - i = (nrules * i) % __alignof__ (int32_t); + i = (nrules * i) % LOCFILE_ALIGN; if (i > 0) do obstack_1grow (&weightpool, '\0'); - while (++i < __alignof__ (int32_t)); + while (++i < LOCFILE_ALIGN); add_locale_raw_obstack (&file, &weightpool); @@ -2204,8 +2204,7 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, struct element_t *runp = collate->mbheads[ch]; struct element_t *lastp; - assert ((obstack_object_size (&extrapool) - & (__alignof__ (int32_t) - 1)) == 0); + assert (LOCFILE_ALIGNED_P (obstack_object_size (&extrapool))); tablemb[ch] = -obstack_object_size (&extrapool); @@ -2230,11 +2229,9 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, struct element_t *curp; /* Compute how much space we will need. */ - added = ((sizeof (int32_t) + 1 + 2 * (runp->nmbs - 1) - + __alignof__ (int32_t) - 1) - & ~(__alignof__ (int32_t) - 1)); - assert ((obstack_object_size (&extrapool) - & (__alignof__ (int32_t) - 1)) == 0); + added = LOCFILE_ALIGN_UP (sizeof (int32_t) + 1 + + 2 * (runp->nmbs - 1)); + assert (LOCFILE_ALIGNED_P (obstack_object_size (&extrapool))); obstack_make_room (&extrapool, added); /* More than one consecutive entry. We mark this by having @@ -2291,11 +2288,9 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, /* Output the weight info. */ weightidx = output_weight (&weightpool, collate, runp); - added = ((sizeof (int32_t) + 1 + runp->nmbs - 1 - + __alignof__ (int32_t) - 1) - & ~(__alignof__ (int32_t) - 1)); - assert ((obstack_object_size (&extrapool) - & (__alignof__ (int32_t) - 1)) == 0); + added = LOCFILE_ALIGN_UP (sizeof (int32_t) + 1 + + runp->nmbs - 1); + assert (LOCFILE_ALIGNED_P (obstack_object_size (&extrapool))); obstack_make_room (&extrapool, added); obstack_int32_grow_fast (&extrapool, weightidx); @@ -2307,8 +2302,7 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, } /* Add alignment bytes if necessary. */ - while ((obstack_object_size (&extrapool) - & (__alignof__ (int32_t) - 1)) != 0) + while (!LOCFILE_ALIGNED_P (obstack_object_size (&extrapool))) obstack_1grow_fast (&extrapool, '\0'); /* Next entry. */ @@ -2317,15 +2311,13 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, } while (runp != NULL); - assert ((obstack_object_size (&extrapool) - & (__alignof__ (int32_t) - 1)) == 0); + assert (LOCFILE_ALIGNED_P (obstack_object_size (&extrapool))); /* If the final entry in the list is not a single character we add an UNDEFINED entry here. */ if (lastp->nmbs != 1) { - int added = ((sizeof (int32_t) + 1 + 1 + __alignof__ (int32_t) - 1) - & ~(__alignof__ (int32_t) - 1)); + int added = LOCFILE_ALIGN_UP (sizeof (int32_t) + 1 + 1); obstack_make_room (&extrapool, added); obstack_int32_grow_fast (&extrapool, 0); @@ -2335,15 +2327,13 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, obstack_1grow_fast (&extrapool, 0); /* Add alignment bytes if necessary. */ - while ((obstack_object_size (&extrapool) - & (__alignof__ (int32_t) - 1)) != 0) + while (!LOCFILE_ALIGNED_P (obstack_object_size (&extrapool))) obstack_1grow_fast (&extrapool, '\0'); } } /* Add padding to the tables if necessary. */ - while ((obstack_object_size (&weightpool) & (__alignof__ (int32_t) - 1)) - != 0) + while (!LOCFILE_ALIGNED_P (obstack_object_size (&weightpool))) obstack_1grow (&weightpool, 0); /* Now add the four tables. */ -- cgit v1.1