]> sourceware.org Git - glibc.git/commitdiff
tile BZ #15759: Fix bug in _dl_unmap
authorChris Metcalf <cmetcalf@tilera.com>
Mon, 22 Jul 2013 15:46:44 +0000 (11:46 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Mon, 22 Jul 2013 15:56:36 +0000 (11:56 -0400)
We returned without calling __munmap if not in the simulator.
Now we call a separate sim_dlclose() function to make the
control flow work correctly.

NEWS
ports/ChangeLog.tile
ports/sysdeps/tile/dl-runtime.c

diff --git a/NEWS b/NEWS
index 4b2d5ca6d64187ae5fa184270bc1860d6bbb2487..a67e40b082bc018b0e868069ebf016df65837e97 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -21,7 +21,8 @@ Version 2.18
   15395, 15405, 15406, 15409, 15416, 15418, 15419, 15423, 15424, 15426,
   15429, 15431, 15432, 15441, 15442, 15448, 15465, 15480, 15485, 15488,
   15490, 15492, 15493, 15497, 15506, 15529, 15536, 15553, 15577, 15583,
-  15618, 15627, 15631, 15654, 15655, 15666, 15667, 15674, 15711, 15755.
+  15618, 15627, 15631, 15654, 15655, 15666, 15667, 15674, 15711, 15755,
+  15759.
 
 * CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
   has been fixed by disabling the use of pt_chown (Bugzilla #15755).
index dd3d4f47599b5b553401fee75ae81bda5de105ed..a2ec5e18cb8f7a24186352fa4abe8fcbe64710f1 100644 (file)
@@ -1,3 +1,9 @@
+2013-07-22  Chris Metcalf  <cmetcalf@tilera.com>
+
+       [BZ #15759]
+       * sysdeps/tile/dl-runtime.c (sim_dlclose): New function.
+       (_dl_unmap): Call sim_dlclose().
+
 2013-07-19  Chris Metcalf  <cmetcalf@tilera.com>
 
        * sysdeps/unix/sysv/linux/tile/sys/ptrace.h
index 84b5a5af5a6f7a525774b7835df5e54061c108aa..42f0ab3ac20459d9493a82e37c64e92c142943c8 100644 (file)
@@ -127,8 +127,8 @@ _dl_after_load (struct link_map *l)
 }
 
 /* Support notifying the simulator about removed objects prior to munmap().  */
-void internal_function
-_dl_unmap (struct link_map *l)
+static void
+sim_dlclose (ElfW(Addr) map_start)
 {
   int shift;
 
@@ -144,9 +144,15 @@ _dl_unmap (struct link_map *l)
   DLPUTC ('0');
   DLPUTC ('x');
   for (shift = (int) sizeof (unsigned long) * 8 - 4; shift >= 0; shift -= 4)
-    DLPUTC ("0123456789abcdef"[(l->l_map_start >> shift) & 0xF]);
+    DLPUTC ("0123456789abcdef"[(map_start >> shift) & 0xF]);
   DLPUTC ('\0');
+
 #undef DLPUTC
+}
 
+void internal_function
+_dl_unmap (struct link_map *l)
+{
+  sim_dlclose (l->l_map_start);
   __munmap ((void *) l->l_map_start, l->l_map_end - l->l_map_start);
 }
This page took 0.047234 seconds and 5 git commands to generate.