SHA256
1
0
forked from pool/glibc

Accepting request 144726 from home:a_jaeger:my-factory-packages

Update to current git head.

OBS-URL: https://build.opensuse.org/request/show/144726
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=245
This commit is contained in:
Andreas Jaeger 2012-12-08 20:14:46 +00:00 committed by Git OBS Bridge
parent eff14db743
commit 8ebaf69bf2
5 changed files with 21 additions and 222 deletions

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3bbe236fe37232839b0232f826b4cbadd09d688cabc63530a6d124a9039d2378
size 11132824

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f470c705a84e326a17e07c600897bd7ad9a5a23a7a42c8c640cf7399a35f6390
size 11157404

View File

@ -1,198 +0,0 @@
This reverts the following patch from upstream PR 12724,
which can cause surprising changes in fclose behaviour when multiple
file handles refer to the same file (fclose on one changes file position
on the other).
See bnc #711829.
git diff -R 'fcabc0f8b185f9e0a9289720be5ede6c39b3bf21^!'
2011-05-13 Ulrich Drepper <drepper@gmail.com>
[BZ #12724]
* libio/fileops.c (_IO_new_file_close_it): Always flush when
currently writing and seek to current position when not.
* libio/Makefile (tests): Add bug-fclose1.
* libio/bug-fclose1.c: New file.
2011-05-12 Ulrich Drepper <drepper@gmail.com>
[BZ #12511]
Index: glibc-2.16.90/libio/Makefile
===================================================================
--- glibc-2.16.90.orig/libio/Makefile
+++ glibc-2.16.90/libio/Makefile
@@ -59,7 +59,7 @@ tests = tst_swprintf tst_wprintf tst_sws
tst-memstream1 tst-memstream2 \
tst-wmemstream1 tst-wmemstream2 \
bug-memstream1 bug-wmemstream1 \
- tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos bug-fclose1 tst-fseek \
+ tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos tst-fseek \
tst-fwrite-error
ifeq (yes,$(build-shared))
# Add test-fopenloc only if shared library is enabled since it depends on
Index: glibc-2.16.90/libio/bug-fclose1.c
===================================================================
--- glibc-2.16.90.orig/libio/bug-fclose1.c
+++ /dev/null
@@ -1,132 +0,0 @@
-// BZ #12724
-
-static void do_prepare (void);
-#define PREPARE(argc, argv) do_prepare ()
-static int do_test (void);
-#define TEST_FUNCTION do_test()
-#include "../test-skeleton.c"
-
-
-static int fd;
-
-
-static void
-do_prepare (void)
-{
- fd = create_temp_file ("bug-fclose1.", NULL);
- if (fd == -1)
- {
- printf ("cannot create temporary file: %m\n");
- exit (1);
- }
-}
-
-
-static int
-do_test (void)
-{
- static const char pattern[] = "hello world";
-
- /* Prepare a seekable file. */
- if (write (fd, pattern, sizeof pattern) != sizeof pattern)
- {
- printf ("cannot write pattern: %m\n");
- return 1;
- }
- if (lseek (fd, 1, SEEK_SET) != 1)
- {
- printf ("cannot seek after write: %m\n");
- return 1;
- }
-
- /* Create an output stream visiting the file; when it is closed, all
- other file descriptors visiting the file must see the new file
- position. */
- int fd2 = dup (fd);
- if (fd2 < 0)
- {
- printf ("cannot duplicate descriptor for writing: %m\n");
- return 1;
- }
- FILE *f = fdopen (fd2, "w");
- if (f == NULL)
- {
- printf ("first fdopen failed: %m\n");
- return 1;
- }
- if (fputc (pattern[1], f) != pattern[1])
- {
- printf ("fputc failed: %m\n");
- return 1;
- }
- if (fclose (f) != 0)
- {
- printf ("first fclose failed: %m\n");
- return 1;
- }
- errno = 0;
- if (lseek (fd2, 0, SEEK_CUR) != -1)
- {
- printf ("lseek after fclose after write did not fail\n");
- return 1;
- }
- if (errno != EBADF)
- {
- printf ("lseek after fclose after write did not fail with EBADF: %m\n");
- return 1;
- }
- off_t o = lseek (fd, 0, SEEK_CUR);
- if (o != 2)
- {
- printf ("\
-lseek on original descriptor after first fclose returned %ld, expected 2\n",
- (long int) o);
- return 1;
- }
-
- /* Likewise for an input stream. */
- fd2 = dup (fd);
- if (fd2 < 0)
- {
- printf ("cannot duplicate descriptor for reading: %m\n");
- return 1;
- }
- f = fdopen (fd2, "r");
- if (f == NULL)
- {
- printf ("second fdopen failed: %m\n");
- return 1;
- }
- char c = fgetc (f);
- if (c != pattern[2])
- {
- printf ("getc returned %c, expected %c\n", c, pattern[2]);
- return 1;
- }
- if (fclose (f) != 0)
- {
- printf ("second fclose failed: %m\n");
- return 1;
- }
- errno = 0;
- if (lseek (fd2, 0, SEEK_CUR) != -1)
- {
- printf ("lseek after fclose after read did not fail\n");
- return 1;
- }
- if (errno != EBADF)
- {
- printf ("lseek after fclose after read did not fail with EBADF: %m\n");
- return 1;
- }
- o = lseek (fd, 0, SEEK_CUR);
- if (o != 3)
- {
- printf ("\
-lseek on original descriptor after second fclose returned %ld, expected 3\n",
- (long int) o);
- return 1;
- }
-
- return 0;
-}
Index: glibc-2.16.90/libio/fileops.c
===================================================================
--- glibc-2.16.90.orig/libio/fileops.c
+++ glibc-2.16.90/libio/fileops.c
@@ -155,21 +155,13 @@ int
_IO_new_file_close_it (fp)
_IO_FILE *fp;
{
+ int write_status;
if (!_IO_file_is_open (fp))
return EOF;
- int write_status;
- if (_IO_in_put_mode (fp))
+ if ((fp->_flags & _IO_NO_WRITES) == 0
+ && (fp->_flags & _IO_CURRENTLY_PUTTING) != 0)
write_status = _IO_do_flush (fp);
- else if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
- && !_IO_in_backup (fp))
- {
- off64_t o = _IO_SEEKOFF (fp, 0, _IO_seek_cur, 0);
- if (o == WEOF)
- write_status = EOF;
- else
- write_status = _IO_SYSSEEK (fp, o, SEEK_SET) < 0 ? EOF : 0;
- }
else
write_status = 0;

View File

@ -1,3 +1,19 @@
-------------------------------------------------------------------
Sat Dec 8 18:55:53 UTC 2012 - aj@suse.de
- Update to 56e7d3ad5c2f:
* Bugfixes
* Fix warnings building glibc
- Remove upstreamed patch glibc-revert-fseek-on-fclose.diff
-------------------------------------------------------------------
Mon Dec 3 15:45:08 UTC 2012 - aj@suse.de
- Remove nosegneg i686 library, it's only used for a 32-bit Xen
hypervisor (not for a 32-bit guest running under 64-bit hypervisor),
and since the 32-bit Xen hypervisor is not part of openSUSE anymore,
it is unneeded (bnc#789607).
-------------------------------------------------------------------
Mon Dec 3 14:47:22 UTC 2012 - schwab@suse.de

View File

@ -123,7 +123,7 @@ Provides: ld-linux.so.3(GLIBC_2.4)
Version: 2.16.90
Release: 0
%define glibc_major_version 2.16.90
%define git_id f638872ab422
%define git_id 56e7d3ad5c2f
Url: http://www.gnu.org/software/libc/libc.html
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: glibc-%{version}-%{git_id}.tar.xz
@ -215,8 +215,7 @@ Patch102: glibc-2.4.90-no_NO.diff
Patch103: glibc-2.4-china.diff
### Broken patches in glibc that we revert for now:
# PATCH-FIX-OPENSUSE revert seeking on fclose for now bnc#711829 matz@suse.de
Patch201: glibc-revert-fseek-on-fclose.diff
# None
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
@ -451,8 +450,6 @@ rm nscd/s-stamp
%patch102 -p1
%patch103 -p1
%patch201 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1
@ -559,11 +556,6 @@ add_ons=",libidn"
%ifarch hppa
BuildFlags="$BuildFlags -mpa-risc-1-1 -fstrict-aliasing"
%endif
%ifarch i386 i486 i586
# Add this to avoid performance penalty on Xen for 32-bit x86
# Note on i686 we build a special library
BuildFlags="$BuildFlags -mno-tls-direct-seg-refs"
%endif
# Add flags for all plattforms except AXP
%ifnarch alpha
BuildFlags="$BuildFlags -g"
@ -634,9 +626,6 @@ configure_and_build_glibc() {
# Build base glibc
#
configure_and_build_glibc base "$BuildFlags" "$add_ons"
%ifarch i686
configure_and_build_glibc nosegneg "$BuildFlags -mno-tls-direct-seg-refs" "$add_ons"
%endif
%else
#
# Build POWER-optimized glibc
@ -785,10 +774,6 @@ do
done
cd ..
}
# Install i686 glibc for Xen
%ifarch i686
install_optimized_variant nosegneg i686/nosegneg "../.."
%endif
# Install power-optimized glibc
%if %{optimize_power}
@ -1113,10 +1098,6 @@ exit 0
/%{_lib}/%1/libthread_db-1.0.so\
/%{_lib}/%1/libthread_db.so.1
%ifarch i686
%dir %attr(0755,root,root) /%{_lib}/i686
%{optimized_libs i686/nosegneg}
%endif
%if %{optimize_power}
%if %{powerpc_optimize_cpu_power4}
%{optimized_libs power4}