OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc1/] [newlib/] [libc/] [sys/] [linux/] [dl/] [dl-iteratephdr.c] - Blame information for rev 345

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 207 jeremybenn
/* Get loaded objects program headers.
2
   Copyright (C) 2001 Free Software Foundation, Inc.
3
   This file is part of the GNU C Library.
4
   Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
5
 
6
   The GNU C Library is free software; you can redistribute it and/or
7
   modify it under the terms of the GNU Library General Public License as
8
   published by the Free Software Foundation; either version 2 of the
9
   License, or (at your option) any later version.
10
 
11
   The GNU C Library is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
   Library General Public License for more details.
15
 
16
   You should have received a copy of the GNU Library General Public
17
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
18
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
   Boston, MA 02111-1307, USA.  */
20
 
21
#include <errno.h>
22
#include <ldsodefs.h>
23
#include <stddef.h>
24
#include <bits/libc-lock.h>
25
 
26
int
27
__dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
28
                                    size_t size, void *data), void *data)
29
{
30
  struct link_map *l;
31
  struct dl_phdr_info info;
32
  int ret = 0;
33
 
34
  /* Make sure we are alone.  */
35
#ifdef HAVE_DD_LOCK
36
    __lock_acquire(_dl_load_lock);
37
#endif
38
 
39
 
40
  for (l = _dl_loaded; l != NULL; l = l->l_next)
41
    {
42
      /* Skip the dynamic linker.  */
43
      if (l->l_phdr == NULL)
44
        continue;
45
      info.dlpi_addr = l->l_addr;
46
      info.dlpi_name = l->l_name;
47
      info.dlpi_phdr = l->l_phdr;
48
      info.dlpi_phnum = l->l_phnum;
49
      ret = callback (&info, sizeof (struct dl_phdr_info), data);
50
      if (ret)
51
        break;
52
    }
53
 
54
  /* Release the lock.  */
55
#ifdef HAVE_DD_LOCK
56
    __lock_release(_dl_load_lock);
57
#endif
58
 
59
 
60
  return ret;
61
}
62
 
63
#ifdef SHARED
64
weak_alias (__dl_iterate_phdr, dl_iterate_phdr);
65
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.