glibc replace turkish buggy locale file

This commit is contained in:
aliriza committed 2022-11-25 08:39:39 +00:00
1 parent 28982e3a99
commit ca5992347a
9 files changed
+251 -7

No files matched your search

+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
/sbin/ldconfig
/bin/busybox chmod +x -R /bin
/bin/busybox chmod +x -R /sbin
/bin/busybox chmod +x -R /usr/bin
/bin/busybox chmod +x -R /usr/sbin
+145
View File
@@ -0,0 +1,145 @@
From e47de5cb2d4dbecb58f569ed241e8e95c568f03c Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Fri, 29 Apr 2022 16:37:51 +0200
Subject: [PATCH] Do not use --hash-style=both for building glibc shared
objects
The comment indicates that --hash-style=both was used to maintain
compatibility with static dlopen, but we had many internal ABI
changes since then, so this compatiblity does not add value anymore.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
---
Makeconfig | 9 +++++++++
Makerules | 7 +++++++
config.make.in | 1 +
configure | 28 ++++++++++++++++++++++++++++
configure.ac | 16 ++++++++++++++++
5 files changed, 61 insertions(+)
diff --git b/Makeconfig a/Makeconfig
index 760f14e92f..0aa5fb0099 100644
--- b/Makeconfig
+++ a/Makeconfig
@@ -362,6 +362,15 @@ relro-LDFLAGS = -Wl,-z,relro
LDFLAGS.so += $(relro-LDFLAGS)
LDFLAGS-rtld += $(relro-LDFLAGS)
+ifeq (yes,$(have-hash-style))
+# For the time being we unconditionally use 'both'. At some time we
+# should declare statically linked code as 'out of luck' and compile
+# with --hash-style=gnu only.
+hashstyle-LDFLAGS = -Wl,--hash-style=both
+LDFLAGS.so += $(hashstyle-LDFLAGS)
+LDFLAGS-rtld += $(hashstyle-LDFLAGS)
+endif
+
ifeq (no,$(build-pie-default))
pie-default = $(no-pie-ccflag)
else # build-pie-default
diff --git b/Makerules a/Makerules
index 354528b8c7..428464f092 100644
--- b/Makerules
+++ a/Makerules
@@ -557,6 +557,13 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
-Wl,--verbose 2>/dev/null | \
sed > $@T \
-e '/^=========/,/^=========/!d;/^=========/d' \
+ $(if $(filter yes,$(have-hash-style)), \
+ -e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+ -e '/^[ ]*\.hash[ ]*:.*$$/{h;d;}' \
+ -e '/DATA_SEGMENT_ALIGN/{H;g}' \
+ , \
+ -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+ ) \
-e 's/^.*\*(\.dynbss).*$$/& \
PROVIDE(__start___libc_freeres_ptrs = .); \
*(__libc_freeres_ptrs) \
diff --git b/config.make.in a/config.make.in
index fff4c78dd0..bf728c71c0 100644
--- b/config.make.in
+++ a/config.make.in
@@ -70,6 +70,7 @@ have-libcap = @have_libcap@
have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
fno-unit-at-a-time = @fno_unit_at_a_time@
bind-now = @bindnow@
+have-hash-style = @libc_cv_hashstyle@
use-default-link = @use_default_link@
have-cxx-thread_local = @libc_cv_cxx_thread_local@
have-loop-to-function = @libc_cv_cc_loop_to_function@
diff --git b/configure a/configure
index 716dc041b6..5a730dc5fc 100755
--- b/configure
+++ a/configure
@@ -622,6 +622,7 @@ libc_cv_cc_nofma
libc_cv_mtls_dialect_gnu2
fno_unit_at_a_time
libc_cv_has_glob_dat
+libc_cv_hashstyle
libc_cv_fpie
libc_cv_z_execstack
ASFLAGS_config
@@ -6193,6 +6194,33 @@ $as_echo "$libc_cv_fpie" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --hash-style option" >&5
+$as_echo_n "checking for --hash-style option... " >&6; }
+if ${libc_cv_hashstyle+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -fPIC -shared -o conftest.so conftest.c
+ -Wl,--hash-style=both -nostdlib 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_hashstyle=yes
+else
+ libc_cv_hashstyle=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hashstyle" >&5
+$as_echo "$libc_cv_hashstyle" >&6; }
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOB_DAT reloc" >&5
$as_echo_n "checking for GLOB_DAT reloc... " >&6; }
if ${libc_cv_has_glob_dat+:} false; then :
diff --git b/configure.ac a/configure.ac
index d08ad4d64e..a045f6608e 100644
--- b/configure.ac
+++ a/configure.ac
@@ -1360,6 +1360,22 @@ LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
AC_SUBST(libc_cv_fpie)
+AC_CACHE_CHECK(for --hash-style option,
+ libc_cv_hashstyle, [dnl
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -fPIC -shared -o conftest.so conftest.c
+ -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
+then
+ libc_cv_hashstyle=yes
+else
+ libc_cv_hashstyle=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_hashstyle)
+
AC_CACHE_CHECK(for GLOB_DAT reloc,
libc_cv_has_glob_dat, [dnl
cat > conftest.c <<EOF
--
2.37.1
+239
View File
@@ -0,0 +1,239 @@
comment_char %
escape_char /
% This file is part of the GNU C Library and contains locale data.
% The Free Software Foundation does not claim any copyright interest
% in the locale data contained in this file. The foregoing does not
% affect the license of the GNU C Library as a whole. It does not
% exempt you from the conditions of the license if your use would
% otherwise be governed by that license.
% Turkish Language Locale for Turkey
% Source: RAP
% Address: Sankt Jo//rgens Alle 8
% DK-1615 Ko//benhavn V, Danmark
% Contact: Keld Simonsen
% Email: Keld.Simonsen@dkuug.dk
% Tel: +45 - 31226543
% Fax: +45 - 33256543
% Language: tr
% Territory: TR
% Revision: 4.4
% Date: 1997-03-18
% Application: general
% Users: general
% Corrections by:
% 1998-01-11T15:54:39
% Onur Tolga Sehitoglu <onur@ceng.metu.edu.tr>,
% Dept. of Comp. Eng. METU/Ankara Turkey
% 2004-05-29T15:13
% Deniz Akkus Kanca <deniz@arayan.com>
% 2004-10-30T10:28:35
% Nilg<U00FC>n Belma Bug<U00FC>ner <nilgun@belgeler.org>
LC_IDENTIFICATION
title "Turkish locale for Turkey"
source "RAP"
address "Sankt J<U00F8>rgens Alle 8, DK-1615 K<U00F8>benhavn V, Danmark"
contact ""
email "bug-glibc-locales@gnu.org"
tel ""
fax ""
language "Turkish"
territory "Turkey"
revision "1.0"
date "2021-09-27"
category "i18n:2012";LC_IDENTIFICATION
category "i18n:2012";LC_CTYPE
category "i18n:2012";LC_COLLATE
category "i18n:2012";LC_TIME
category "i18n:2012";LC_NUMERIC
category "i18n:2012";LC_MONETARY
category "i18n:2012";LC_MESSAGES
category "i18n:2012";LC_PAPER
category "i18n:2012";LC_NAME
category "i18n:2012";LC_ADDRESS
category "i18n:2012";LC_TELEPHONE
category "i18n:2012";LC_MEASUREMENT
END LC_IDENTIFICATION
LC_COLLATE
copy "iso14651_t1"
% CLDR collation rules for Turkish:
% (see: https://unicode.org/cldr/trac/browser/trunk/common/collation/tr.xml)
%
% &C<ç<<<Ç
% &G<ğ<<<Ğ
% &[before 1]i<ı<<<I
% &i<<<İ
% &O<ö<<<Ö
% &S<ş<<<Ş
% &U<ü<<<Ü
%
% And CLDR also lists the following
% index characters:
% (see: https://unicode.org/cldr/trac/browser/trunk/common/main/tr.xml)
%
% <exemplarCharacters type="index">[A B C Ç D E F G H I İ J K L M N O Ö P Q R S Ş T U Ü V W X Y Z]</exemplarCharacters>
%
% The following rules implement the same order for glibc.
collating-symbol <c-cedilla>
collating-symbol <g-breve>
collating-symbol <i-dotless>
collating-symbol <i-dot>
collating-symbol <o-diaresis>
collating-symbol <s-cedilla>
collating-symbol <u-diaresis>
reorder-after <RES-1>
<CAP>
<MIN>
reorder-after <AFTER-C>
<c-cedilla>
reorder-after <AFTER-G>
<g-breve>
reorder-after <BEFORE-I>
<i-dotless>
reorder-after <AFTER-O>
<o-diaresis>
reorder-after <AFTER-S>
<s-cedilla>
reorder-after <AFTER-U>
<u-diaresis>
<U00E7> <c-cedilla>;<BASE>;<MIN>;IGNORE % ç
<U00C7> <c-cedilla>;<BASE>;<CAP>;IGNORE % Ç
<U011F> <g-breve>;<BASE>;<MIN>;IGNORE % ğ
<U011E> <g-breve>;<BASE>;<CAP>;IGNORE % Ğ
<U0131> <i-dotless>;<BASE>;<MIN>;IGNORE % ı
<U0049> <i-dotless>;<BASE>;<CAP>;IGNORE % I
<U0069> <S0069>;<BASE>;<MIN>;IGNORE % i
<U0130> <S0069>;<BASE>;<CAP>;IGNORE % İ
<U00F6> <o-diaresis>;<BASE>;<MIN>;IGNORE % ö
<U00D6> <o-diaresis>;<BASE>;<CAP>;IGNORE % Ö
<U015F> <s-cedilla>;<BASE>;<MIN>;IGNORE % ş
<U015E> <s-cedilla>;<BASE>;<CAP>;IGNORE % Ş
<U00FC> <u-diaresis>;<BASE>;<MIN>;IGNORE % ü
<U00DC> <u-diaresis>;<BASE>;<CAP>;IGNORE % Ü
reorder-end
END LC_COLLATE
LC_CTYPE
copy "en_GB"
END LC_CTYPE
LC_MESSAGES
yesexpr "^[+1yYeE]"
noexpr "^[-0nNhH]"
yesstr "evet"
nostr "hay<U0131>r"
END LC_MESSAGES
LC_MONETARY
% ISO-4217 (2004-10-25): TRY 949 2
int_curr_symbol "TRY "
% TL
currency_symbol "<U20BA>"
mon_decimal_point ","
mon_thousands_sep "."
mon_grouping 3;3
positive_sign ""
negative_sign "-"
int_frac_digits 2
frac_digits 2
p_cs_precedes 0
p_sep_by_space 1
n_cs_precedes 0
n_sep_by_space 1
p_sign_posn 1
n_sign_posn 1
END LC_MONETARY
LC_NUMERIC
decimal_point ","
thousands_sep "."
grouping 3;3
END LC_NUMERIC
LC_TIME
abday "Paz";"Pzt";"Sal";/
"<U00C7>r<U015F>";"Pr<U015F>";"Cum";"Cts"
day "Pazar";/
"Pazartesi";/
"Sal<U0131>";/
"<U00C7>ar<U015F>amba";/
"Per<U015F>embe";/
"Cuma";/
"Cumartesi"
abmon "Oca";"<U015E>ub";/
"Mar";"Nis";/
"May";"Haz";/
"Tem";"A<U011F>u";/
"Eyl";"Eki";/
"Kas";"Ara"
mon "Ocak";/
"<U015E>ubat";/
"Mart";/
"Nisan";/
"May<U0131>s";/
"Haziran";/
"Temmuz";/
"A<U011F>ustos";/
"Eyl<U00FC>l";/
"Ekim";/
"Kas<U0131>m";/
"Aral<U0131>k"
d_t_fmt "%a %d %b %Y %T"
date_fmt "%a %d %b %Y %T %Z"
d_fmt "%m//%d//%Y"
t_fmt "%T"
am_pm "<U00D6><U00D6>";"<U00D6>S"
t_fmt_ampm "%I:%M:%S %p"
week 7;19971130;1
first_weekday 2
END LC_TIME
LC_PAPER
copy "i18n"
END LC_PAPER
LC_TELEPHONE
tel_int_fmt "+%c %a %l"
int_prefix "90"
int_select "00"
END LC_TELEPHONE
LC_MEASUREMENT
copy "i18n"
END LC_MEASUREMENT
LC_NAME
name_fmt "%d%t%g%t%m%t%f"
name_gen "Say<U0131>n"
name_mr "Bay"
name_mrs "Bayan"
name_miss "Bayan"
name_ms "Bayan"
END LC_NAME
LC_ADDRESS
postal_fmt "%f%N%a%N%d%N%b%N%s %h %e %r%N%z %T%N%c%N"
country_name "T<U00FC>rkiye"
country_post "TR"
country_car "TR"
country_isbn 975
country_num 792
country_ab2 "TR"
country_ab3 "TUR"
lang_name "T<U00FC>rk<U00E7>e"
lang_term "tur"
lang_lib "tur"
lang_ab "tr"
END LC_ADDRESS