Accepting request 62476 from Base:System
Accepted submit request 62476 from user pbaudis OBS-URL: https://build.opensuse.org/request/show/62476 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/glibc?expand=0&rev=39
This commit is contained in:
commit
1957e46dcd
82
glibc-elf-localscope.diff
Normal file
82
glibc-elf-localscope.diff
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
diff -ru elf~/dl-close.c elf/dl-close.c
|
||||||
|
--- elf~/dl-close.c 2011-02-04 00:35:03.000000000 +0100
|
||||||
|
+++ elf/dl-close.c 2011-02-22 02:16:12.367883000 +0100
|
||||||
|
@@ -180,24 +186,28 @@
|
||||||
|
/* Signal the object is still needed. */
|
||||||
|
l->l_idx = IDX_STILL_USED;
|
||||||
|
|
||||||
|
+#define mark_used(dmap) \
|
||||||
|
+ do { \
|
||||||
|
+ if ((dmap)->l_idx != IDX_STILL_USED) \
|
||||||
|
+ { \
|
||||||
|
+ assert ((dmap)->l_idx >= 0 && (dmap)->l_idx < nloaded); \
|
||||||
|
+ \
|
||||||
|
+ if (!used[(dmap)->l_idx]) \
|
||||||
|
+ { \
|
||||||
|
+ used[(dmap)->l_idx] = 1; \
|
||||||
|
+ if ((dmap)->l_idx - 1 < done_index) \
|
||||||
|
+ done_index = (dmap)->l_idx - 1; \
|
||||||
|
+ } \
|
||||||
|
+ } \
|
||||||
|
+ } while (0)
|
||||||
|
+
|
||||||
|
/* Mark all dependencies as used. */
|
||||||
|
if (l->l_initfini != NULL)
|
||||||
|
{
|
||||||
|
struct link_map **lp = &l->l_initfini[1];
|
||||||
|
while (*lp != NULL)
|
||||||
|
{
|
||||||
|
- if ((*lp)->l_idx != IDX_STILL_USED)
|
||||||
|
- {
|
||||||
|
- assert ((*lp)->l_idx >= 0 && (*lp)->l_idx < nloaded);
|
||||||
|
-
|
||||||
|
- if (!used[(*lp)->l_idx])
|
||||||
|
- {
|
||||||
|
- used[(*lp)->l_idx] = 1;
|
||||||
|
- if ((*lp)->l_idx - 1 < done_index)
|
||||||
|
- done_index = (*lp)->l_idx - 1;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
+ mark_used(*lp);
|
||||||
|
++lp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -206,19 +216,25 @@
|
||||||
|
for (unsigned int j = 0; j < l->l_reldeps->act; ++j)
|
||||||
|
{
|
||||||
|
struct link_map *jmap = l->l_reldeps->list[j];
|
||||||
|
-
|
||||||
|
- if (jmap->l_idx != IDX_STILL_USED)
|
||||||
|
- {
|
||||||
|
- assert (jmap->l_idx >= 0 && jmap->l_idx < nloaded);
|
||||||
|
-
|
||||||
|
- if (!used[jmap->l_idx])
|
||||||
|
- {
|
||||||
|
- used[jmap->l_idx] = 1;
|
||||||
|
- if (jmap->l_idx - 1 < done_index)
|
||||||
|
- done_index = jmap->l_idx - 1;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ mark_used(jmap);
|
||||||
|
}
|
||||||
|
+ /* And the same for owners of our scopes; normally, our last
|
||||||
|
+ scope provider would render us unused, but this can be
|
||||||
|
+ prevented by the NODELETE flag. */
|
||||||
|
+ if (__builtin_expect(l->l_type == lt_loaded
|
||||||
|
+ && (l->l_flags_1 & DF_1_NODELETE), 0))
|
||||||
|
+ for (size_t cnt = 0; l->l_scope[cnt] != NULL; ++cnt)
|
||||||
|
+ /* This relies on l_scope[] entries being always set either
|
||||||
|
+ to its own l_symbolic_searchlist address, or some map's
|
||||||
|
+ l_searchlist address. */
|
||||||
|
+ if (l->l_scope[cnt] != &l->l_symbolic_searchlist)
|
||||||
|
+ {
|
||||||
|
+ struct link_map *ls = (struct link_map *)
|
||||||
|
+ ((char *) l->l_scope[cnt]
|
||||||
|
+ - offsetof (struct link_map, l_searchlist));
|
||||||
|
+ assert (ls->l_ns == nsid);
|
||||||
|
+ mark_used(ls);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sort the entries. */
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Feb 22 12:57:07 CET 2011 - pbaudis@suse.cz
|
||||||
|
|
||||||
|
- Fix potential removal of required local scope from shared objects
|
||||||
|
marked as NODELETE [bnc#657627]
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Feb 4 00:46:40 CET 2011 - pbaudis@suse.cz
|
Fri Feb 4 00:46:40 CET 2011 - pbaudis@suse.cz
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ Obsoletes: glibc-32bit
|
|||||||
Provides: rtld(GNU_HASH)
|
Provides: rtld(GNU_HASH)
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Version: 2.11.3
|
Version: 2.11.3
|
||||||
Release: 4
|
Release: 3
|
||||||
Url: http://www.gnu.org/software/libc/libc.html
|
Url: http://www.gnu.org/software/libc/libc.html
|
||||||
PreReq: filesystem
|
PreReq: filesystem
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
@ -137,6 +137,7 @@ Patch48: glibc-malloc-arena-max.diff
|
|||||||
Patch49: glibc-fini-unwind.diff
|
Patch49: glibc-fini-unwind.diff
|
||||||
Patch50: glibc-gconvcache-s390.diff
|
Patch50: glibc-gconvcache-s390.diff
|
||||||
Patch51: glibc-vfprintf-positional.diff
|
Patch51: glibc-vfprintf-positional.diff
|
||||||
|
Patch52: glibc-elf-localscope.diff
|
||||||
Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff
|
Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff
|
||||||
Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff
|
Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff
|
||||||
Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff
|
Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff
|
||||||
@ -355,6 +356,7 @@ rm nscd/s-stamp
|
|||||||
%patch49
|
%patch49
|
||||||
%patch50
|
%patch50
|
||||||
%patch51 -p1
|
%patch51 -p1
|
||||||
|
%patch52
|
||||||
%ifarch %arm armv5tel armv7l
|
%ifarch %arm armv5tel armv7l
|
||||||
%patch500
|
%patch500
|
||||||
%patch501
|
%patch501
|
||||||
|
Loading…
Reference in New Issue
Block a user