source: trunk/src/binutils/bfd/pc532-mach.c@ 610

Last change on this file since 610 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.3 KB
Line 
1/* BFD back-end for Mach3/532 a.out-ish binaries.
2 Copyright 1990, 1991, 1992, 1994, 1995, 2000, 2001, 2002
3 Free Software Foundation, Inc.
4
5This file is part of BFD, the Binary File Descriptor library.
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software
19Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
20
21/* Written by Ian Dall
22 * 19-Apr-94
23 *
24 * Formerly part of aout-pc532-mach.c. Split out to allow more
25 * flexibility with multiple formats.
26 *
27 */
28/* This architecture has N_TXTOFF and N_TXTADDR defined as if
29 * N_HEADER_IN_TEXT, but the a_text entry (text size) does not include the
30 * space for the header. So we have N_HEADER_IN_TEXT defined to
31 * 1 and specially define our own N_TXTSIZE
32 */
33
34#define N_HEADER_IN_TEXT(x) 1
35#define N_TXTSIZE(x) ((x).a_text)
36
37#define TEXT_START_ADDR 0x10000 /* from old ld */
38#define TARGET_PAGE_SIZE 0x1000 /* from old ld, 032 & 532 are really 512/4k */
39
40/* Use a_entry of 0 to distinguish object files from OMAGIC executables */
41#define N_TXTADDR(x) \
42 (N_MAGIC(x) == OMAGIC ? \
43 ((x).a_entry < TEXT_START_ADDR? 0: TEXT_START_ADDR): \
44 (N_MAGIC(x) == NMAGIC? TEXT_START_ADDR: \
45 TEXT_START_ADDR + EXEC_BYTES_SIZE))
46
47#define SEGMENT_SIZE TARGET_PAGE_SIZE
48
49#define N_SHARED_LIB(x) 0
50#define SEGMENT_SIZE TARGET_PAGE_SIZE
51#define DEFAULT_ARCH bfd_arch_ns32k
52
53/* Do not "beautify" the CONCAT* macro args. Traditional C will not
54 remove whitespace added here, and thus will fail to concatenate
55 the tokens. */
56#define MY(OP) CONCAT2 (pc532machaout_,OP)
57
58/* Must be the same as aout-ns32k.c */
59#define NAME(x,y) CONCAT3 (ns32kaout,_32_,y)
60
61#define TARGETNAME "a.out-pc532-mach"
62
63#include "bfd.h"
64#include "sysdep.h"
65#include "libaout.h"
66#include "libbfd.h"
67#include "aout/aout64.h"
68
69#define MY_bfd_reloc_type_lookup ns32kaout_bfd_reloc_type_lookup
70
71/* libaout doesn't use NAME for these ... */
72
73#define MY_get_section_contents aout_32_get_section_contents
74
75#define MY_text_includes_header 1
76
77#define MY_exec_header_not_counted 1
78
79reloc_howto_type *ns32kaout_bfd_reloc_type_lookup
80 PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
81
82static bfd_boolean MY(write_object_contents)
83 PARAMS ((bfd *abfd));
84
85static bfd_boolean
86MY(write_object_contents) (abfd)
87 bfd *abfd;
88{
89 struct external_exec exec_bytes;
90 struct internal_exec *execp = exec_hdr (abfd);
91
92 obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
93
94 BFD_ASSERT (bfd_get_arch (abfd) == bfd_arch_ns32k);
95 switch (bfd_get_mach (abfd))
96 {
97 case 32032:
98 N_SET_MACHTYPE (*execp, M_NS32032);
99 break;
100 case 32532:
101 default:
102 N_SET_MACHTYPE (*execp, M_NS32532);
103 break;
104 }
105 N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags);
106
107 WRITE_HEADERS(abfd, execp);
108
109 return TRUE;
110}
111
112#define MY_write_object_contents MY(write_object_contents)
113
114#include "aout-target.h"
Note: See TracBrowser for help on using the repository browser.