From 680bff1439d4080edf1bea2375187e0e81be0832 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Mon, 8 Sep 2014 12:32:01 +0530 Subject: [PATCH] Sync with upstream master --- glibc-rh1119128.patch | 199 ----------------------------- glibc-rh1133134-i386-tlsinit.patch | 19 --- glibc.spec | 15 +-- sources | 2 +- 4 files changed, 7 insertions(+), 228 deletions(-) delete mode 100644 glibc-rh1119128.patch delete mode 100644 glibc-rh1133134-i386-tlsinit.patch diff --git a/glibc-rh1119128.patch b/glibc-rh1119128.patch deleted file mode 100644 index 12b9949..0000000 --- a/glibc-rh1119128.patch +++ /dev/null @@ -1,199 +0,0 @@ -2014-08-21 Florian Weimer - - [BZ #17187] - * iconv/gconv_trans.c (struct known_trans, search_tree, lock, - trans_compare, open_translit, __gconv_translit_find): - Remove module loading code. - -diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c -index 1e25854..d71c029 100644 ---- a/iconv/gconv_trans.c -+++ b/iconv/gconv_trans.c -@@ -238,181 +238,11 @@ __gconv_transliterate (struct __gconv_step *step, - return __GCONV_ILLEGAL_INPUT; - } - -- --/* Structure to represent results of found (or not) transliteration -- modules. */ --struct known_trans --{ -- /* This structure must remain the first member. */ -- struct trans_struct info; -- -- char *fname; -- void *handle; -- int open_count; --}; -- -- --/* Tree with results of previous calls to __gconv_translit_find. */ --static void *search_tree; -- --/* We modify global data. */ --__libc_lock_define_initialized (static, lock); -- -- --/* Compare two transliteration entries. */ --static int --trans_compare (const void *p1, const void *p2) --{ -- const struct known_trans *s1 = (const struct known_trans *) p1; -- const struct known_trans *s2 = (const struct known_trans *) p2; -- -- return strcmp (s1->info.name, s2->info.name); --} -- -- --/* Open (maybe reopen) the module named in the struct. Get the function -- and data structure pointers we need. */ --static int --open_translit (struct known_trans *trans) --{ -- __gconv_trans_query_fct queryfct; -- -- trans->handle = __libc_dlopen (trans->fname); -- if (trans->handle == NULL) -- /* Not available. */ -- return 1; -- -- /* Find the required symbol. */ -- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context"); -- if (queryfct == NULL) -- { -- /* We cannot live with that. */ -- close_and_out: -- __libc_dlclose (trans->handle); -- trans->handle = NULL; -- return 1; -- } -- -- /* Get the context. */ -- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames) -- != 0) -- goto close_and_out; -- -- /* Of course we also have to have the actual function. */ -- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans"); -- if (trans->info.trans_fct == NULL) -- goto close_and_out; -- -- /* Now the optional functions. */ -- trans->info.trans_init_fct = -- __libc_dlsym (trans->handle, "gconv_trans_init"); -- trans->info.trans_context_fct = -- __libc_dlsym (trans->handle, "gconv_trans_context"); -- trans->info.trans_end_fct = -- __libc_dlsym (trans->handle, "gconv_trans_end"); -- -- trans->open_count = 1; -- -- return 0; --} -- -- - int - internal_function - __gconv_translit_find (struct trans_struct *trans) - { -- struct known_trans **found; -- const struct path_elem *runp; -- int res = 1; -- -- /* We have to have a name. */ -- assert (trans->name != NULL); -- -- /* Acquire the lock. */ -- __libc_lock_lock (lock); -- -- /* See whether we know this module already. */ -- found = __tfind (trans, &search_tree, trans_compare); -- if (found != NULL) -- { -- /* Is this module available? */ -- if ((*found)->handle != NULL) -- { -- /* Maybe we have to reopen the file. */ -- if ((*found)->handle != (void *) -1) -- /* The object is not unloaded. */ -- res = 0; -- else if (open_translit (*found) == 0) -- { -- /* Copy the data. */ -- *trans = (*found)->info; -- (*found)->open_count++; -- res = 0; -- } -- } -- } -- else -- { -- size_t name_len = strlen (trans->name) + 1; -- int need_so = 0; -- struct known_trans *newp; -- -- /* We have to continue looking for the module. */ -- if (__gconv_path_elem == NULL) -- __gconv_get_path (); -- -- /* See whether we have to append .so. */ -- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0) -- need_so = 1; -- -- /* Create a new entry. */ -- newp = (struct known_trans *) malloc (sizeof (struct known_trans) -- + (__gconv_max_path_elem_len -- + name_len + 3) -- + name_len); -- if (newp != NULL) -- { -- char *cp; -- -- /* Clear the struct. */ -- memset (newp, '\0', sizeof (struct known_trans)); -- -- /* Store a copy of the module name. */ -- newp->info.name = cp = (char *) (newp + 1); -- cp = __mempcpy (cp, trans->name, name_len); -- -- newp->fname = cp; -- -- /* Search in all the directories. */ -- for (runp = __gconv_path_elem; runp->name != NULL; ++runp) -- { -- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name), -- trans->name, name_len); -- if (need_so) -- memcpy (cp, ".so", sizeof (".so")); -- -- if (open_translit (newp) == 0) -- { -- /* We found a module. */ -- res = 0; -- break; -- } -- } -- -- if (res) -- newp->fname = NULL; -- -- /* In any case we'll add the entry to our search tree. */ -- if (__tsearch (newp, &search_tree, trans_compare) == NULL) -- { -- /* Yickes, this should not happen. Unload the object. */ -- res = 1; -- /* XXX unload here. */ -- } -- } -- } -- -- __libc_lock_unlock (lock); -- -- return res; -+ /* This function always fails. Transliteration module loading is -+ not implemented. */ -+ return 1; - } --- -1.9.3 - diff --git a/glibc-rh1133134-i386-tlsinit.patch b/glibc-rh1133134-i386-tlsinit.patch deleted file mode 100644 index 648c527..0000000 --- a/glibc-rh1133134-i386-tlsinit.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/sysdeps/i386/nptl/tls.h b/sysdeps/i386/nptl/tls.h -index ac9c9a2..052ea64 100644 ---- a/sysdeps/i386/nptl/tls.h -+++ b/sysdeps/i386/nptl/tls.h -@@ -231,12 +231,8 @@ tls_fill_user_desc (union user_desc_init *desc, - tls_fill_user_desc (&_segdescr, -1, _thrdescr); \ - \ - /* Install the TLS. */ \ -- asm volatile (TLS_LOAD_EBX \ -- "int $0x80\n\t" \ -- TLS_LOAD_EBX \ -- : "=a" (_result), "=m" (_segdescr.desc.entry_number) \ -- : "0" (__NR_set_thread_area), \ -- TLS_EBX_ARG (&_segdescr.desc), "m" (_segdescr.desc)); \ -+ INTERNAL_SYSCALL_DECL (err); \ -+ _result = INTERNAL_SYSCALL (set_thread_area, err, 1, &_segdescr.desc); \ - \ - if (_result == 0) \ - /* We know the index in the GDT, now load the segment register. \ diff --git a/glibc.spec b/glibc.spec index 74b022c..d25aa22 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,6 +1,6 @@ -%define glibcsrcdir glibc-2.19-886-gdd763fd -%define glibcversion 2.19.90 -%define glibcrelease 36%{?dist} +%define glibcsrcdir glibc-2.20-3-g645a0e9 +%define glibcversion 2.20.90 +%define glibcrelease 1%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # @@ -185,10 +185,6 @@ Patch0046: %{name}-rh1013801.patch Patch0047: %{name}-nscd-sysconfig.patch -Patch0048: %{name}-rh1133134-i386-tlsinit.patch - -Patch0049: %{name}-rh1119128.patch - # Allow up to 32 libraries to use static TLS. Should go upstream after # more testing. Patch0050: %{name}-rh1124987.patch @@ -563,8 +559,6 @@ package or when debugging this package. %patch2033 -p1 %patch2034 -p1 %patch2035 -p1 -%patch0048 -p1 -%patch0049 -p1 %patch0050 -p1 ############################################################################## @@ -1673,6 +1667,9 @@ rm -f *.filelist* %endif %changelog +* Mon Sep 08 2014 Siddhesh Poyarekar - 2.20.90-1 +- Sync with upstream master. + * Thu Sep 4 2014 Carlos O'Donell - 2.19.90-36 - Allow up to 32 dlopened modules to use static TLS (#1124987). - Run glibc tests in %%check section of RPM spec file. diff --git a/sources b/sources index f0a7ec7..265211a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6b7d687c4bf371fc6fd5b100b9ded870 glibc-2.19-886-gdd763fd.tar.gz +335a04fc28b73fe52256026c4f25a9bb glibc-2.20-3-g645a0e9.tar.gz