[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r15226 - in /branches/eglibc-2_13: libc/ libc/elf/ ports/ ports/sysdeps/unix/sysv/linux/mips/mips64/n64/
- To: commits@xxxxxxxxxx
- Subject: [commits] r15226 - in /branches/eglibc-2_13: libc/ libc/elf/ ports/ ports/sysdeps/unix/sysv/linux/mips/mips64/n64/
- From: joseph@xxxxxxxxxx
- Date: Tue, 06 Sep 2011 15:19:06 -0000
Author: joseph
Date: Tue Sep 6 08:19:04 2011
New Revision: 15226
Log:
Merge changes between r14663 and r15225 from /fsf/glibc-2_13-branch.
Added:
branches/eglibc-2_13/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c
- copied unchanged from r15225, fsf/glibc-2_13-branch/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c
branches/eglibc-2_13/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c
- copied unchanged from r15225, fsf/glibc-2_13-branch/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c
Modified:
branches/eglibc-2_13/libc/ChangeLog
branches/eglibc-2_13/libc/NEWS
branches/eglibc-2_13/libc/elf/dl-deps.c
branches/eglibc-2_13/libc/elf/dl-fini.c
branches/eglibc-2_13/ports/ChangeLog.mips
branches/eglibc-2_13/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list
Modified: branches/eglibc-2_13/libc/ChangeLog
==============================================================================
--- branches/eglibc-2_13/libc/ChangeLog (original)
+++ branches/eglibc-2_13/libc/ChangeLog Tue Sep 6 08:19:04 2011
@@ -1,3 +1,13 @@
+2011-05-30 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #12454]
+ * elf/dl-deps.c (_dl_map_object_deps): Run initializer sorting only
+ when there are multiple maps.
+ * elf/dl-fini.c (_dl_sort_fini): Check for list of one.
+ (_dl_fini): Remove test here.
+
+ * elf/rtld.c (dl_main): Don't allow the loader to load itself.
+
2011-02-06 Mike Frysinger <vapier@xxxxxxxxxx>
[BZ #12653]
Modified: branches/eglibc-2_13/libc/NEWS
==============================================================================
--- branches/eglibc-2_13/libc/NEWS (original)
+++ branches/eglibc-2_13/libc/NEWS Tue Sep 6 08:19:04 2011
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2011-1-19
+GNU C Library NEWS -- history of user-visible changes. 2011-5-30
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -13,7 +13,7 @@
11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005,
12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140,
12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378,
- 12394, 12397, 12489, 12653
+ 12394, 12397, 12489, 12653, 12454
* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
Modified: branches/eglibc-2_13/libc/elf/dl-deps.c
==============================================================================
--- branches/eglibc-2_13/libc/elf/dl-deps.c (original)
+++ branches/eglibc-2_13/libc/elf/dl-deps.c Tue Sep 6 08:19:04 2011
@@ -613,61 +613,64 @@
map->l_searchlist.r_list[i]->l_reserved = 0;
}
- /* Now determine the order in which the initialization has to happen. */
+ /* Sort the initializer list to take dependencies into account. The binary
+ itself will always be initialize last. */
memcpy (l_initfini, map->l_searchlist.r_list,
nlist * sizeof (struct link_map *));
-
- /* We can skip looking for the binary itself which is at the front
- of the search list. */
- assert (nlist > 1);
- i = 1;
- bool seen[nlist];
- memset (seen, false, nlist * sizeof (seen[0]));
- while (1)
- {
- /* Keep track of which object we looked at this round. */
- seen[i] = true;
- struct link_map *thisp = l_initfini[i];
-
- /* Find the last object in the list for which the current one is
- a dependency and move the current object behind the object
- with the dependency. */
- unsigned int k = nlist - 1;
- while (k > i)
+ if (__builtin_expect (nlist > 1, 1))
+ {
+ /* We can skip looking for the binary itself which is at the front
+ of the search list. */
+ i = 1;
+ bool seen[nlist];
+ memset (seen, false, nlist * sizeof (seen[0]));
+ while (1)
{
- struct link_map **runp = l_initfini[k]->l_initfini;
- if (runp != NULL)
- /* Look through the dependencies of the object. */
- while (*runp != NULL)
- if (__builtin_expect (*runp++ == thisp, 0))
- {
- /* Move the current object to the back past the last
- object with it as the dependency. */
- memmove (&l_initfini[i], &l_initfini[i + 1],
- (k - i) * sizeof (l_initfini[0]));
- l_initfini[k] = thisp;
-
- if (seen[i + 1])
+ /* Keep track of which object we looked at this round. */
+ seen[i] = true;
+ struct link_map *thisp = l_initfini[i];
+
+ /* Find the last object in the list for which the current one is
+ a dependency and move the current object behind the object
+ with the dependency. */
+ unsigned int k = nlist - 1;
+ while (k > i)
+ {
+ struct link_map **runp = l_initfini[k]->l_initfini;
+ if (runp != NULL)
+ /* Look through the dependencies of the object. */
+ while (*runp != NULL)
+ if (__builtin_expect (*runp++ == thisp, 0))
{
- ++i;
- goto next_clear;
+ /* Move the current object to the back past the last
+ object with it as the dependency. */
+ memmove (&l_initfini[i], &l_initfini[i + 1],
+ (k - i) * sizeof (l_initfini[0]));
+ l_initfini[k] = thisp;
+
+ if (seen[i + 1])
+ {
+ ++i;
+ goto next_clear;
+ }
+
+ memmove (&seen[i], &seen[i + 1],
+ (k - i) * sizeof (seen[0]));
+ seen[k] = true;
+
+ goto next;
}
- memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0]));
- seen[k] = true;
-
- goto next;
- }
-
- --k;
+ --k;
+ }
+
+ if (++i == nlist)
+ break;
+ next_clear:
+ memset (&seen[i], false, (nlist - i) * sizeof (seen[0]));
+
+ next:;
}
-
- if (++i == nlist)
- break;
- next_clear:
- memset (&seen[i], false, (nlist - i) * sizeof (seen[0]));
-
- next:;
}
/* Terminate the list of dependencies. */
Modified: branches/eglibc-2_13/libc/elf/dl-fini.c
==============================================================================
--- branches/eglibc-2_13/libc/elf/dl-fini.c (original)
+++ branches/eglibc-2_13/libc/elf/dl-fini.c Tue Sep 6 08:19:04 2011
@@ -33,9 +33,12 @@
_dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps,
char *used, Lmid_t ns)
{
+ /* A list of one element need not be sorted. */
+ if (nmaps == 1)
+ return;
+
/* We can skip looking for the binary itself which is at the front
of the search list for the main namespace. */
- assert (nmaps > 1);
unsigned int i = ns == LM_ID_BASE;
bool seen[nmaps];
memset (seen, false, nmaps * sizeof (seen[0]));
@@ -195,9 +198,8 @@
assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1);
nmaps = i;
- if (nmaps > 1)
- /* Now we have to do the sorting. */
- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns);
+ /* Now we have to do the sorting. */
+ _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns);
/* We do not rely on the linked list of loaded object anymore from
this point on. We have our own list here (maps). The various
Modified: branches/eglibc-2_13/ports/ChangeLog.mips
==============================================================================
--- branches/eglibc-2_13/ports/ChangeLog.mips (original)
+++ branches/eglibc-2_13/ports/ChangeLog.mips Tue Sep 6 08:19:04 2011
@@ -1,3 +1,11 @@
+2011-09-06 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ [BZ #13109]
+ * sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (fstatfs)
+ (statfs): New.
+ * sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c,
+ sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c: New.
+
2011-04-01 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
* sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list: Add
Modified: branches/eglibc-2_13/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list
==============================================================================
--- branches/eglibc-2_13/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (original)
+++ branches/eglibc-2_13/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list Tue Sep 6 08:19:04 2011
@@ -5,3 +5,6 @@
prlimit EXTRA prlimit64 i:iipp prlimit prlimit64
fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark
+
+fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64
+statfs - statfs i:sp __statfs statfs statfs64 __statfs64