Bug 24372 - Binary locale files are not architecture independent
Summary: Binary locale files are not architecture independent
Status: RESOLVED FIXED
Alias: None
Product: glibc
Classification: Unclassified
Component: locale (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: 2.30
Assignee: dj@redhat.com
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-03-21 17:34 UTC by dj@redhat.com
Modified: 2019-10-30 13:29 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description dj@redhat.com 2019-03-21 17:34:31 UTC
Clone of Fedora bz 1311954 [1]

The localearchive.tmpl files, specifically the LC_COLLATE files within, may be different when generated on i686 vs x86-64.  The root cause is a floating point operation which determines a hash table size, which is inexact and sensitive to which FPU operations are used.

Discussion thread: https://www.sourceware.org/ml/libc-alpha/2019-03/msg00424.html

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1311954
Comment 1 Sourceware Commits 2019-03-21 17:48:35 UTC
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  ac64195ccd4f320659fd0058bc7524c6fd0b37b4 (commit)
      from  61f5e9470fb397a4c334938ac5a667427d9047df (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ac64195ccd4f320659fd0058bc7524c6fd0b37b4

commit ac64195ccd4f320659fd0058bc7524c6fd0b37b4
Author: DJ Delorie <dj@redhat.com>
Date:   Wed Mar 20 23:56:59 2019 -0400

    iconv, localedef: avoid floating point rounding differences [BZ #24372]
    
    Two cases of "int * 1.4" may result in imprecise results, which
    in at least one case resulted in i686 and x86-64 producing
    different locale files.  This replaced that floating point multiply
    with integer operations.  While the hash table margin is increased
    from 40% to 50%, testing shows only 2% increase in overall size
    of the locale archive.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1311954
    
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                    |    7 +++++++
 iconv/iconvconfig.c          |    4 ++--
 locale/programs/ld-collate.c |    4 ++--
 3 files changed, 11 insertions(+), 4 deletions(-)
Comment 2 dj@redhat.com 2019-03-21 18:38:40 UTC
Fix committed.
Comment 3 Sourceware Commits 2019-03-21 21:06:38 UTC
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  5abcddd7949270998c6e8d99fdbbba821b664f8b (commit)
      from  ac64195ccd4f320659fd0058bc7524c6fd0b37b4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5abcddd7949270998c6e8d99fdbbba821b664f8b

commit 5abcddd7949270998c6e8d99fdbbba821b664f8b
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Thu Mar 21 17:24:30 2019 -0300

    Fix parentheses error in iconvconfig.c and ld-collate.c [BZ #24372]
    
    When -Werror=parentheses is in use, iconvconfig.c builds fail with:
    
      iconvconfig.c: In function ‘write_output’:
      iconvconfig.c:1084:34: error: suggest parentheses around ‘+’ inside ‘>>’ [-Werror=parentheses]
         hash_size = next_prime (nnames + nnames >> 1);
                                 ~~~~~~~^~~~~~~~
    
    This patch adds parentheses to the expression.  Not where suggested by
    the compiler warning, but where it produces the expected result, i.e.:
    where it has the effect of multiplying nnames by 1.5.
    
    Likewise for elem_size in ld-collate.c.
    
    Tested for powerpc64le.
    
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                    |    7 +++++++
 iconv/iconvconfig.c          |    2 +-
 locale/programs/ld-collate.c |    2 +-
 3 files changed, 9 insertions(+), 2 deletions(-)