(dl_open_worker): Use l_map_start and l_map_end to test for pointer in
authordrepper <drepper>
Thu, 4 May 2000 15:47:12 +0000 (15:47 +0000)
committerdrepper <drepper>
Thu, 4 May 2000 15:47:12 +0000 (15:47 +0000)
range of DSO address space.

elf/dl-open.c

index 9467759..76c36cf 100644 (file)
@@ -110,9 +110,14 @@ dl_open_worker (void *a)
       for (l = _dl_loaded; l; l = l->l_next)
        if (l->l_addr != 0 /* Make sure we do not currently set this map up
                              in this moment.  */
       for (l = _dl_loaded; l; l = l->l_next)
        if (l->l_addr != 0 /* Make sure we do not currently set this map up
                              in this moment.  */
-           && caller >= (const void *) l->l_addr
-           && (call_map == NULL || call_map->l_addr < l->l_addr))
-         call_map = l;
+           && caller >= (const void *) l->l_map_start
+           && caller < (const void *) l->l_map_end)
+         {
+           /* There must be exactly one DSO for the range of the virtual
+              memory.  Otherwise something is really broken.  */
+           call_map = l;
+           break;
+         }
 
       if (call_map == NULL)
        /* In this case we assume this is the main application.  */
 
       if (call_map == NULL)
        /* In this case we assume this is the main application.  */