SHA256
1
0
forked from pool/glibc

Accepting request 321588 from home:Andreas_Schwab:Factory

- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag from
  all loaded objects on failed dlopen
- openat64-readd-o-largefile.patch: Readd O_LARGEFILE flag for openat64

OBS-URL: https://build.opensuse.org/request/show/321588
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=413
This commit is contained in:
Andreas Schwab 2015-08-10 11:50:28 +00:00 committed by Git OBS Bridge
parent aecec704c9
commit e85cac7c02
8 changed files with 62 additions and 22 deletions

View File

@ -2,7 +2,22 @@ Index: glibc-2.22/elf/dl-close.c
===================================================================
--- glibc-2.22.orig/elf/dl-close.c
+++ glibc-2.22/elf/dl-close.c
@@ -152,14 +152,6 @@ _dl_close_worker (struct link_map *map,
@@ -144,6 +144,14 @@ _dl_close_worker (struct link_map *map,
char done[nloaded];
struct link_map *maps[nloaded];
+ /* Clear DF_1_NODELETE to force object deletion. We don't need to touch
+ l_tls_dtor_count because forced object deletion only happens when an
+ error occurs during object load. Destructor registration for TLS
+ non-POD objects should not have happened till then for this
+ object. */
+ if (force)
+ map->l_flags_1 &= ~DF_1_NODELETE;
+
/* Run over the list and assign indexes to the link maps and enter
them into the MAPS array. */
int idx = 0;
@@ -152,14 +160,6 @@ _dl_close_worker (struct link_map *map,
l->l_idx = idx;
maps[idx] = l;
++idx;

View File

@ -1,8 +1,9 @@
-------------------------------------------------------------------
Thu Aug 6 15:41:01 UTC 2015 - schwab@suse.de
Mon Aug 10 09:23:57 UTC 2015 - schwab@suse.de
- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag on
failed dlopen.
- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag from
all loaded objects on failed dlopen
- openat64-readd-o-largefile.patch: Readd O_LARGEFILE flag for openat64
-------------------------------------------------------------------
Wed Aug 5 09:35:41 UTC 2015 - schwab@suse.de

View File

@ -216,8 +216,6 @@ Patch102: glibc-2.4.90-no_NO.diff
Patch103: glibc-2.4-china.diff
### Broken patches in glibc that we revert for now:
# BZ #18778
Patch200: dont-remove-nodelete-flag.patch
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
@ -246,6 +244,10 @@ Patch2003: abort-no-flush.patch
Patch2005: glibc-memset-nontemporal.diff
# PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197)
Patch2006: ibm93x-redundant-shift-si.patch
# BZ #18778
Patch2007: dont-remove-nodelete-flag.patch
# BZ #18781
Patch2008: openat64-readd-o-largefile.patch
# Non-glibc patches
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
@ -440,8 +442,6 @@ rm nscd/s-stamp
%patch102 -p1
%patch103 -p1
%patch200 -p1
%patch300 -p1
%patch301 -p1
%patch304 -p1
@ -452,6 +452,8 @@ rm nscd/s-stamp
%patch2003 -p1
%patch2005 -p1
%patch2006 -p1
%patch2007 -p1
%patch2008 -p1
%patch3000

View File

@ -1,8 +1,9 @@
-------------------------------------------------------------------
Thu Aug 6 15:41:01 UTC 2015 - schwab@suse.de
Mon Aug 10 09:23:57 UTC 2015 - schwab@suse.de
- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag on
failed dlopen.
- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag from
all loaded objects on failed dlopen
- openat64-readd-o-largefile.patch: Readd O_LARGEFILE flag for openat64
-------------------------------------------------------------------
Wed Aug 5 09:35:41 UTC 2015 - schwab@suse.de

View File

@ -215,8 +215,6 @@ Patch102: glibc-2.4.90-no_NO.diff
Patch103: glibc-2.4-china.diff
### Broken patches in glibc that we revert for now:
# BZ #18778
Patch200: dont-remove-nodelete-flag.patch
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
@ -245,6 +243,10 @@ Patch2003: abort-no-flush.patch
Patch2005: glibc-memset-nontemporal.diff
# PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197)
Patch2006: ibm93x-redundant-shift-si.patch
# BZ #18778
Patch2007: dont-remove-nodelete-flag.patch
# BZ #18781
Patch2008: openat64-readd-o-largefile.patch
# Non-glibc patches
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
@ -440,8 +442,6 @@ rm nscd/s-stamp
%patch102 -p1
%patch103 -p1
%patch200 -p1
%patch300 -p1
%patch301 -p1
%patch304 -p1
@ -452,6 +452,8 @@ rm nscd/s-stamp
%patch2003 -p1
%patch2005 -p1
%patch2006 -p1
%patch2007 -p1
%patch2008 -p1
%patch3000

View File

@ -1,8 +1,9 @@
-------------------------------------------------------------------
Thu Aug 6 15:41:01 UTC 2015 - schwab@suse.de
Mon Aug 10 09:23:57 UTC 2015 - schwab@suse.de
- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag on
failed dlopen.
- dont-remove-nodelete-flag.patch: Don't remove DF_1_NODELETE flag from
all loaded objects on failed dlopen
- openat64-readd-o-largefile.patch: Readd O_LARGEFILE flag for openat64
-------------------------------------------------------------------
Wed Aug 5 09:35:41 UTC 2015 - schwab@suse.de

View File

@ -216,8 +216,6 @@ Patch102: glibc-2.4.90-no_NO.diff
Patch103: glibc-2.4-china.diff
### Broken patches in glibc that we revert for now:
# BZ #18778
Patch200: dont-remove-nodelete-flag.patch
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
@ -246,6 +244,10 @@ Patch2003: abort-no-flush.patch
Patch2005: glibc-memset-nontemporal.diff
# PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197)
Patch2006: ibm93x-redundant-shift-si.patch
# BZ #18778
Patch2007: dont-remove-nodelete-flag.patch
# BZ #18781
Patch2008: openat64-readd-o-largefile.patch
# Non-glibc patches
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
@ -440,8 +442,6 @@ rm nscd/s-stamp
%patch102 -p1
%patch103 -p1
%patch200 -p1
%patch300 -p1
%patch301 -p1
%patch304 -p1
@ -452,6 +452,8 @@ rm nscd/s-stamp
%patch2003 -p1
%patch2005 -p1
%patch2006 -p1
%patch2007 -p1
%patch2008 -p1
%patch3000

View File

@ -0,0 +1,16 @@
Index: glibc-2.22/sysdeps/unix/sysv/linux/openat.c
===================================================================
--- glibc-2.22.orig/sysdeps/unix/sysv/linux/openat.c
+++ glibc-2.22/sysdeps/unix/sysv/linux/openat.c
@@ -68,6 +68,11 @@ __OPENAT (int fd, const char *file, int
va_end (arg);
}
+ /* We have to add the O_LARGEFILE flag for openat64. */
+#ifdef MORE_OFLAGS
+ oflag |= MORE_OFLAGS;
+#endif
+
return SYSCALL_CANCEL (openat, fd, file, oflag, mode);
}
libc_hidden_def (__OPENAT)