* elf/dl-minimal.c: Likewise.
* elf/dl-misc.c: Likewise.
* elf/rtld.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
+2009-03-31 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-load.c: Remove support for systems without MAP_ANON.
+ * elf/dl-minimal.c: Likewise.
+ * elf/dl-misc.c: Likewise.
+ * elf/rtld.c: Likewise.
+ * sysdeps/generic/ldsodefs.h: Likewise.
+
2009-03-30 Ulrich Drepper <drepper@redhat.com>
* elf/do-lookup.h (do_lookup_x): Minor optimization and cleanup.
2009-03-30 Ulrich Drepper <drepper@redhat.com>
* elf/do-lookup.h (do_lookup_x): Minor optimization and cleanup.
#define STRING(x) __STRING (x)
#define STRING(x) __STRING (x)
-#ifdef MAP_ANON
-/* The fd is not examined when using MAP_ANON. */
-# define ANONFD -1
-#else
-int _dl_zerofd = -1;
-# define ANONFD _dl_zerofd
-#endif
-
/* Handle situations where we have a preferred location in memory for
the shared objects. */
#ifdef ELF_PREFERRED_ADDRESS_DATA
/* Handle situations where we have a preferred location in memory for
the shared objects. */
#ifdef ELF_PREFERRED_ADDRESS_DATA
caddr_t mapat;
mapat = __mmap ((caddr_t) zeropage, zeroend - zeropage,
c->prot, MAP_ANON|MAP_PRIVATE|MAP_FIXED,
caddr_t mapat;
mapat = __mmap ((caddr_t) zeropage, zeroend - zeropage,
c->prot, MAP_ANON|MAP_PRIVATE|MAP_FIXED,
if (__builtin_expect (mapat == MAP_FAILED, 0))
{
errstring = N_("cannot map zero-fill pages");
if (__builtin_expect (mapat == MAP_FAILED, 0))
{
errstring = N_("cannot map zero-fill pages");
/* Minimal replacements for basic facilities used in the dynamic linker.
/* Minimal replacements for basic facilities used in the dynamic linker.
- Copyright (C) 1995-1998,2000-2002,2004-2006,2007
+ Copyright (C) 1995-1998,2000-2002,2004-2006,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Free Software Foundation, Inc.
This file is part of the GNU C Library.
void * weak_function
__libc_memalign (size_t align, size_t n)
{
void * weak_function
__libc_memalign (size_t align, size_t n)
{
-#ifdef MAP_ANON
-#define _dl_zerofd (-1)
-#else
- extern int _dl_zerofd;
-
- if (_dl_zerofd == -1)
- _dl_zerofd = _dl_sysdep_open_zero_fill ();
-#define MAP_ANON 0
-#endif
-
if (alloc_end == 0)
{
/* Consume any unused space in the last page of our data segment. */
if (alloc_end == 0)
{
/* Consume any unused space in the last page of our data segment. */
nup = GLRO(dl_pagesize);
}
page = __mmap (0, nup, PROT_READ|PROT_WRITE,
nup = GLRO(dl_pagesize);
}
page = __mmap (0, nup, PROT_READ|PROT_WRITE,
- MAP_ANON|MAP_PRIVATE, _dl_zerofd, 0);
+ MAP_ANON|MAP_PRIVATE, -1, 0);
if (page == MAP_FAILED)
return NULL;
if (page != alloc_end)
if (page == MAP_FAILED)
return NULL;
if (page != alloc_end)
/* Miscellaneous support functions for dynamic linker
/* Miscellaneous support functions for dynamic linker
- Copyright (C) 1997-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-2004, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <stdio-common/_itoa.h>
#include <bits/libc-lock.h>
#include <stdio-common/_itoa.h>
#include <bits/libc-lock.h>
-#ifndef MAP_ANON
-/* This is the only dl-sysdep.c function that is actually needed at run-time
- by _dl_map_object. */
-
-int
-_dl_sysdep_open_zero_fill (void)
-{
- return __open ("/dev/zero", O_RDONLY);
-}
-#endif
-
/* Read the whole contents of FILE into new mmap'd space with given
protections. *SIZEP gets the size of the file. On error MAP_FAILED
is returned. */
/* Read the whole contents of FILE into new mmap'd space with given
protections. *SIZEP gets the size of the file. On error MAP_FAILED
is returned. */
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <sys/mman.h> /* Check if MAP_ANON is defined. */
#include <sys/param.h>
#include <sys/stat.h>
#include <ldsodefs.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <ldsodefs.h>
for (i = main_map->l_searchlist.r_nlist; i > 0; )
main_map->l_searchlist.r_list[--i]->l_global = 1;
for (i = main_map->l_searchlist.r_nlist; i > 0; )
main_map->l_searchlist.r_list[--i]->l_global = 1;
-#ifndef MAP_ANON
- /* We are done mapping things, so close the zero-fill descriptor. */
- __close (_dl_zerofd);
- _dl_zerofd = -1;
-#endif
-
/* Remove _dl_rtld_map from the chain. */
GL(dl_rtld_map).l_prev->l_next = GL(dl_rtld_map).l_next;
if (GL(dl_rtld_map).l_next != NULL)
/* Remove _dl_rtld_map from the chain. */
GL(dl_rtld_map).l_prev->l_next = GL(dl_rtld_map).l_next;
if (GL(dl_rtld_map).l_next != NULL)
/* Incremented whenever something may have been added to dl_loaded. */
EXTERN unsigned long long _dl_load_adds;
/* Incremented whenever something may have been added to dl_loaded. */
EXTERN unsigned long long _dl_load_adds;
-#ifndef MAP_ANON
- /* File descriptor referring to the zero-fill device. */
- EXTERN int _dl_zerofd;
-#endif
-
/* The object to be initialized first. */
EXTERN struct link_map *_dl_initfirst;
/* The object to be initialized first. */
EXTERN struct link_map *_dl_initfirst;