aboutsummaryrefslogtreecommitdiff
path: root/bfd/host-aout.c
blob: a08c78763eadb839e75ba172af5da5cea4eaa72c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* BFD backend for local host's a.out binaries
   Copyright 1990, 1991, 1992, 1994, 1995, 2001, 2007
   Free Software Foundation, Inc.
   Written by Cygnus Support.  Probably John Gilmore's fault.

   This file is part of BFD, the Binary File Descriptor library.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#include "sysdep.h"
#include "bfd.h"
#include "libbfd.h"

#define	ARCH_SIZE	32

/* When porting to a new system, you must supply:

	HOST_PAGE_SIZE		(optional)
	HOST_SEGMENT_SIZE	(optional -- defaults to page size)
	HOST_MACHINE_ARCH	(optional)
	HOST_MACHINE_MACHINE	(optional)
	HOST_TEXT_START_ADDR	(optional)
	HOST_STACK_END_ADDR	(not used, except by trad-core ???)
	HOST_BIG_ENDIAN_P	(required -- define if big-endian)

   in the ./hosts/h-systemname.h file.  */

#ifdef TRAD_HEADER
#include TRAD_HEADER
#endif

#ifdef			HOST_PAGE_SIZE
#define	TARGET_PAGE_SIZE	HOST_PAGE_SIZE
#endif

#ifdef			HOST_SEGMENT_SIZE
#define	SEGMENT_SIZE	HOST_SEGMENT_SIZE
#else
#define	SEGMENT_SIZE	TARGET_PAGE_SIZE
#endif

#ifdef			HOST_TEXT_START_ADDR
#define	TEXT_START_ADDR	HOST_TEXT_START_ADDR
#endif

#ifdef			HOST_STACK_END_ADDR
#define	STACK_END_ADDR	HOST_STACK_END_ADDR
#endif

#ifdef			HOST_BIG_ENDIAN_P
#define	TARGET_IS_BIG_ENDIAN_P
#else
#undef  TARGET_IS_BIG_ENDIAN_P
#endif

#include "libaout.h"           /* BFD a.out internal data structures */
#include "aout/aout64.h"

#ifdef HOST_MACHINE_ARCH
#ifdef HOST_MACHINE_MACHINE
#define SET_ARCH_MACH(abfd, execp) \
  bfd_default_set_arch_mach(abfd, HOST_MACHINE_ARCH, HOST_MACHINE_MACHINE)
#else
#define SET_ARCH_MACH(abfd, execp) \
  bfd_default_set_arch_mach(abfd, HOST_MACHINE_ARCH, 0)
#endif
#endif /* HOST_MACHINE_ARCH */

/* Do not "beautify" the CONCAT* macro args.  Traditional C will not
   remove whitespace added here, and thus will fail to concatenate
   the tokens.  */
#define MY(OP) CONCAT2 (host_aout_,OP)
#define TARGETNAME "a.out"

#include "aout-target.h"