In the event that pointer sizes aren't powers of two, choose a more
suitable alignment than (unsigned)(-1), which results in HUGE file
sizes.  Ok?

Index: gcc/lto/lto-object.c
===================================================================
--- gcc/lto/lto-object.c        (revision 216287)
+++ gcc/lto/lto-object.c        (working copy)
@@ -335,13 +335,13 @@ lto_obj_begin_section (const char *name)
   lo = (struct lto_simple_object *) current_out_file;
   gcc_assert (lo != NULL
              && lo->sobj_r == NULL
              && lo->sobj_w != NULL
              && lo->section == NULL);
 
-  align = exact_log2 (POINTER_SIZE / BITS_PER_UNIT);
+  align = ceil_log2 (POINTER_SIZE_UNITS);
   lo->section = simple_object_write_create_section (lo->sobj_w, name, align,
                                                    &errmsg, &err);
   if (lo->section == NULL)
     {
       if (err == 0)
        fatal_error ("%s", errmsg);

Reply via email to