source: trunk/third/binutils/bfd/nlmswap.h @ 16965

Revision 16965, 6.6 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r16964, which included commits to RCS files with non-trunk default branches.
Line 
1/* NLM (NetWare Loadable Module) swapping routines for BFD.
2   Copyright 1993, 2000 Free Software Foundation, Inc.
3
4   Written by Fred Fish @ Cygnus Support, using ELF support as the
5   template.
6
7This file is part of BFD, the Binary File Descriptor library.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2 of the License, or
12(at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
22
23/* Although this is a header file, it defines functions.  It is
24   included by NLM backends to define swapping functions that vary
25   from one NLM to another.  The backend code must arrange for
26   Nlm_External_xxxx to be defined appropriately, and can then include
27   this file to get the swapping routines.
28
29   At the moment this is only needed for one structure, the fixed NLM
30   file header.  */
31
32static void nlm_swap_fixed_header_in PARAMS ((bfd *, PTR,
33                                              Nlm_Internal_Fixed_Header *));
34static void nlm_swap_fixed_header_out PARAMS ((bfd *,
35                                               Nlm_Internal_Fixed_Header *,
36                                               PTR));
37
38/* Translate an NLM fixed length file header in external format into an NLM
39   file header in internal format.  */
40
41static void
42nlm_swap_fixed_header_in (abfd, realsrc, dst)
43     bfd *abfd;
44     PTR realsrc;
45     Nlm_Internal_Fixed_Header *dst;
46{
47  Nlm_External_Fixed_Header *src = (Nlm_External_Fixed_Header *) realsrc;
48  memcpy (dst->signature, src->signature, NLM_SIGNATURE_SIZE);
49  memcpy (dst->moduleName, src->moduleName, NLM_MODULE_NAME_SIZE);
50  dst->version =
51    bfd_h_get_32 (abfd, (bfd_byte *) src->version);
52  dst->codeImageOffset =
53    bfd_h_get_32 (abfd, (bfd_byte *) src->codeImageOffset);
54  dst->codeImageSize =
55    bfd_h_get_32 (abfd, (bfd_byte *) src->codeImageSize);
56  dst->dataImageOffset =
57    bfd_h_get_32 (abfd, (bfd_byte *) src->dataImageOffset);
58  dst->dataImageSize =
59    bfd_h_get_32 (abfd, (bfd_byte *) src->dataImageSize);
60  dst->uninitializedDataSize =
61    bfd_h_get_32 (abfd, (bfd_byte *) src->uninitializedDataSize);
62  dst->customDataOffset =
63    bfd_h_get_32 (abfd, (bfd_byte *) src->customDataOffset);
64  dst->customDataSize =
65    bfd_h_get_32 (abfd, (bfd_byte *) src->customDataSize);
66  dst->moduleDependencyOffset =
67    bfd_h_get_32 (abfd, (bfd_byte *) src->moduleDependencyOffset);
68  dst->numberOfModuleDependencies =
69    bfd_h_get_32 (abfd, (bfd_byte *) src->numberOfModuleDependencies);
70  dst->relocationFixupOffset =
71    bfd_h_get_32 (abfd, (bfd_byte *) src->relocationFixupOffset);
72  dst->numberOfRelocationFixups =
73    bfd_h_get_32 (abfd, (bfd_byte *) src->numberOfRelocationFixups);
74  dst->externalReferencesOffset =
75    bfd_h_get_32 (abfd, (bfd_byte *) src->externalReferencesOffset);
76  dst->numberOfExternalReferences =
77    bfd_h_get_32 (abfd, (bfd_byte *) src->numberOfExternalReferences);
78  dst->publicsOffset =
79    bfd_h_get_32 (abfd, (bfd_byte *) src->publicsOffset);
80  dst->numberOfPublics =
81    bfd_h_get_32 (abfd, (bfd_byte *) src->numberOfPublics);
82  dst->debugInfoOffset =
83    bfd_h_get_32 (abfd, (bfd_byte *) src->debugInfoOffset);
84  dst->numberOfDebugRecords =
85    bfd_h_get_32 (abfd, (bfd_byte *) src->numberOfDebugRecords);
86  dst->codeStartOffset =
87    bfd_h_get_32 (abfd, (bfd_byte *) src->codeStartOffset);
88  dst->exitProcedureOffset =
89    bfd_h_get_32 (abfd, (bfd_byte *) src->exitProcedureOffset);
90  dst->checkUnloadProcedureOffset =
91    bfd_h_get_32 (abfd, (bfd_byte *) src->checkUnloadProcedureOffset);
92  dst->moduleType =
93    bfd_h_get_32 (abfd, (bfd_byte *) src->moduleType);
94  dst->flags =
95    bfd_h_get_32 (abfd, (bfd_byte *) src->flags);
96}
97
98/* Translate an NLM fixed length file header in internal format into
99   an NLM file header in external format.  */
100
101static void
102nlm_swap_fixed_header_out (abfd, src, realdst)
103     bfd *abfd;
104     Nlm_Internal_Fixed_Header *src;
105     PTR realdst;
106{
107  Nlm_External_Fixed_Header *dst = (Nlm_External_Fixed_Header *) realdst;
108  memset (dst, 0, sizeof *dst);
109  memcpy (dst->signature, src->signature, NLM_SIGNATURE_SIZE);
110  memcpy (dst->moduleName, src->moduleName, NLM_MODULE_NAME_SIZE);
111  bfd_h_put_32 (abfd, (bfd_vma) src->version,
112                (bfd_byte *) dst->version);
113  bfd_h_put_32 (abfd, (bfd_vma) src->codeImageOffset,
114                (bfd_byte *) dst->codeImageOffset);
115  bfd_h_put_32 (abfd, (bfd_vma) src->codeImageSize,
116                (bfd_byte *) dst->codeImageSize);
117  bfd_h_put_32 (abfd, (bfd_vma) src->dataImageOffset,
118                (bfd_byte *) dst->dataImageOffset);
119  bfd_h_put_32 (abfd, (bfd_vma) src->dataImageSize,
120                (bfd_byte *) dst->dataImageSize);
121  bfd_h_put_32 (abfd, (bfd_vma) src->uninitializedDataSize,
122                (bfd_byte *) dst->uninitializedDataSize);
123  bfd_h_put_32 (abfd, (bfd_vma) src->customDataOffset,
124                (bfd_byte *) dst->customDataOffset);
125  bfd_h_put_32 (abfd, (bfd_vma) src->customDataSize,
126                (bfd_byte *) dst->customDataSize);
127  bfd_h_put_32 (abfd, (bfd_vma) src->moduleDependencyOffset,
128                (bfd_byte *) dst->moduleDependencyOffset);
129  bfd_h_put_32 (abfd, (bfd_vma) src->numberOfModuleDependencies,
130                (bfd_byte *) dst->numberOfModuleDependencies);
131  bfd_h_put_32 (abfd, (bfd_vma) src->relocationFixupOffset,
132                (bfd_byte *) dst->relocationFixupOffset);
133  bfd_h_put_32 (abfd, (bfd_vma) src->numberOfRelocationFixups,
134                (bfd_byte *) dst->numberOfRelocationFixups);
135  bfd_h_put_32 (abfd, (bfd_vma) src->externalReferencesOffset,
136                (bfd_byte *) dst->externalReferencesOffset);
137  bfd_h_put_32 (abfd, (bfd_vma) src->numberOfExternalReferences,
138                (bfd_byte *) dst->numberOfExternalReferences);
139  bfd_h_put_32 (abfd, (bfd_vma) src->publicsOffset,
140                (bfd_byte *) dst->publicsOffset);
141  bfd_h_put_32 (abfd, (bfd_vma) src->numberOfPublics,
142                (bfd_byte *) dst->numberOfPublics);
143  bfd_h_put_32 (abfd, (bfd_vma) src->debugInfoOffset,
144                (bfd_byte *) dst->debugInfoOffset);
145  bfd_h_put_32 (abfd, (bfd_vma) src->numberOfDebugRecords,
146                (bfd_byte *) dst->numberOfDebugRecords);
147  bfd_h_put_32 (abfd, (bfd_vma) src->codeStartOffset,
148                (bfd_byte *) dst->codeStartOffset);
149  bfd_h_put_32 (abfd, (bfd_vma) src->exitProcedureOffset,
150                (bfd_byte *) dst->exitProcedureOffset);
151  bfd_h_put_32 (abfd, (bfd_vma) src->checkUnloadProcedureOffset,
152                (bfd_byte *) dst->checkUnloadProcedureOffset);
153  bfd_h_put_32 (abfd, (bfd_vma) src->moduleType,
154                (bfd_byte *) dst->moduleType);
155  bfd_h_put_32 (abfd, (bfd_vma) src->flags,
156                (bfd_byte *) dst->flags);
157}
Note: See TracBrowser for help on using the repository browser.