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);