OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [bfd/] [elf32-qnx.h] - Blame information for rev 1181

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
/* QNX specific support for 32-bit ELF
2
   Copyright 2002  Free Software Foundation, Inc.
3
 
4
   This file is part of BFD, the Binary File Descriptor library.
5
 
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 2 of the License, or
9
   (at your option) any later version.
10
 
11
   This program 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
14
   GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with this program; if not, write to the Free Software
18
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19
 
20
  /* Returns the end address of the segment + 1.  */
21
#define SEGMENT_END(segment, start)                     \
22
  (start + (segment->p_memsz > segment->p_filesz        \
23
   ? segment->p_memsz : segment->p_filesz))
24
 
25
static boolean elf_qnx_copy_private_bfd_data_p
26
  PARAMS ((bfd *, asection *, bfd *, asection *));
27
static boolean elf_qnx_is_contained_by_filepos
28
  PARAMS ((asection *, Elf_Internal_Phdr *));
29
static void elf_qnx_set_nonloadable_filepos
30
  PARAMS ((bfd *, Elf_Internal_Phdr *));
31
 
32
static boolean
33
elf_qnx_copy_private_bfd_data_p (ibfd, isec, obfd, osec)
34
     bfd *ibfd;
35
     asection *isec;
36
     bfd *obfd;
37
     asection *osec;
38
{
39
  /* We don't use these parameters, but another target might.  */
40
  ibfd = ibfd;
41
  obfd = obfd;
42
  osec = osec;
43
 
44
  return isec->next == NULL;
45
}
46
 
47
static boolean
48
elf_qnx_is_contained_by_filepos (section, segment)
49
     asection *section;
50
     Elf_Internal_Phdr *segment;
51
{
52
  return ((bfd_vma) section->filepos >= segment->p_offset
53
          && ((bfd_vma) section->filepos + section->_raw_size
54
              <= SEGMENT_END (segment, segment->p_offset)));
55
}
56
 
57
static void
58
elf_qnx_set_nonloadable_filepos (abfd, phdrs)
59
     bfd *abfd;
60
     Elf_Internal_Phdr *phdrs;
61
{
62
  struct elf_segment_map *m;
63
  Elf_Internal_Phdr *p;
64
  file_ptr off = 0;
65
 
66
  for (m = elf_tdata (abfd)->segment_map, p = phdrs;
67
       m != NULL;
68
       m = m->next, p++)
69
    {
70
      unsigned int i;
71
      asection **secpp;
72
 
73
      for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
74
        {
75
          asection *sec;
76
 
77
          sec = *secpp;
78
 
79
          if (p->p_type == PT_LOAD)
80
            off = sec->filepos;
81
          else
82
            {
83
              if (i == 0)
84
                {
85
                  if (sec->filepos)
86
                    p->p_offset = sec->filepos;
87
                  else
88
                    p->p_offset = off;
89
                }
90
              if (!sec->filepos)
91
                {
92
                  off += sec->_raw_size;
93
                  p->p_filesz += sec->_raw_size;
94
                }
95
            }
96
        }
97
    }
98
  return;
99
}
100
 
101
#ifndef elf_backend_set_nonloadable_filepos
102
#define elf_backend_set_nonloadable_filepos elf_qnx_set_nonloadable_filepos
103
#endif
104
 
105
#ifndef elf_backend_is_contained_by_filepos
106
#define elf_backend_is_contained_by_filepos elf_qnx_is_contained_by_filepos
107
#endif
108
 
109
#ifndef elf_backend_copy_private_bfd_data_p
110
#define elf_backend_copy_private_bfd_data_p elf_qnx_copy_private_bfd_data_p
111
#endif

powered by: WebSVN 2.1.0

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