source: branches/libc-0.6/src/binutils/include/aout/hp300hpux.h

Last change on this file 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: 4.3 KB
Line 
1/* Special version of <a.out.h> for use under hp-ux.
2 Copyright 1988, 1993, 1995, 2001 Free Software Foundation, Inc. */
3
4struct hp300hpux_exec_bytes
5{
6 unsigned char e_info[4]; /* a_machtype/a_magic */
7 unsigned char e_spare1[4];
8 unsigned char e_spare2[4];
9 unsigned char e_text[4]; /* length of text, in bytes */
10 unsigned char e_data[4]; /* length of data, in bytes */
11 unsigned char e_bss[4]; /* length of uninitialized data area , in bytes */
12 unsigned char e_trsize[4]; /* length of relocation info for text, in bytes*/
13 unsigned char e_drsize[4]; /* length of relocation info for data, in bytes*/
14 unsigned char e_passize[4];/* HP = pascal interface size */
15 unsigned char e_syms[4]; /* HP = symbol table size */
16 unsigned char e_spare5[4]; /* HP = debug name table size */
17 unsigned char e_entry[4]; /* start address */
18 unsigned char e_spare6[4]; /* HP = source line table size */
19 unsigned char e_supsize[4];/* HP = value table size */
20 unsigned char e_drelocs[4];
21 unsigned char e_extension[4]; /* file offset of extension */
22};
23#define EXEC_BYTES_SIZE 64
24
25struct hp300hpux_nlist_bytes
26 {
27 unsigned char e_value[4];
28 unsigned char e_type[1];
29 unsigned char e_length[1]; /* length of ascii symbol name */
30 unsigned char e_almod[2]; /* alignment mod */
31 unsigned char e_shlib[2]; /* info about dynamic linking */
32 };
33#define EXTERNAL_NLIST_SIZE 10
34
35struct hp300hpux_reloc
36 {
37 unsigned char r_address[4];/* offset of of data to relocate */
38 unsigned char r_index[2]; /* symbol table index of symbol */
39 unsigned char r_type[1]; /* relocation type */
40 unsigned char r_length[1]; /* length of item to reloc */
41 };
42
43struct hp300hpux_header_extension
44{
45 unsigned char e_syms[4];
46 unsigned char unique_headers[12*4];
47 unsigned char e_header[2]; /* type of header */
48 unsigned char e_version[2]; /* version */
49 unsigned char e_size[4]; /* bytes following*/
50 unsigned char e_extension[4];/* file offset of next extension */
51};
52#define EXTERNAL_EXTENSION_HEADER_SIZE (16*4)
53
54/* hpux separates object files (0x106) and impure executables (0x107) */
55/* but the bfd code does not distinguish between them. Since we want to*/
56/* read hpux .o files, we add an special define and use it below in */
57/* offset and address calculations. */
58
59#define HPUX_DOT_O_MAGIC 0x106
60#define OMAGIC 0x107 /* object file or impure executable. */
61#define NMAGIC 0x108 /* Code indicating pure executable. */
62#define ZMAGIC 0x10B /* demand-paged executable. */
63
64#define N_HEADER_IN_TEXT(x) 0
65
66#if 0 /* libaout.h only uses the lower 8 bits */
67#define HP98x6_ID 0x20A
68#define HP9000S200_ID 0x20C
69#endif
70#define HP98x6_ID 0x0A
71#define HP9000S200_ID 0x0C
72
73#define N_BADMAG(x) ((_N_BADMAG (x)) || (_N_BADMACH (x)))
74
75#define N_DATADDR(x) \
76 ((N_MAGIC (x) == OMAGIC || N_MAGIC (x) == HPUX_DOT_O_MAGIC) \
77 ? (N_TXTADDR (x) + N_TXTSIZE (x)) \
78 : (N_SEGSIZE (x) + ((N_TXTADDR (x) + N_TXTSIZE (x) - 1) \
79 & ~ (bfd_vma) (N_SEGSIZE (x) - 1))))
80
81#define _N_BADMACH(x) \
82 (((N_MACHTYPE (x)) != HP9000S200_ID) && ((N_MACHTYPE (x)) != HP98x6_ID))
83
84#define _N_BADMAG(x) (N_MAGIC(x) != HPUX_DOT_O_MAGIC \
85 && N_MAGIC(x) != OMAGIC \
86 && N_MAGIC(x) != NMAGIC \
87 && N_MAGIC(x) != ZMAGIC )
88
89#undef _N_HDROFF
90#define _N_HDROFF(x) (SEGMENT_SIZE - (sizeof (struct exec)))
91
92#undef N_DATOFF
93#undef N_PASOFF
94#undef N_SYMOFF
95#undef N_SUPOFF
96#undef N_TRELOFF
97#undef N_DRELOFF
98#undef N_STROFF
99
100#define N_DATOFF(x) ( N_TXTOFF(x) + N_TXTSIZE(x) )
101#define N_PASOFF(x) ( N_DATOFF(x) + (x).a_data)
102#define N_SYMOFF(x) ( N_PASOFF(x) /* + (x).a_passize*/ )
103#define N_SUPOFF(x) ( N_SYMOFF(x) + (x).a_syms )
104#define N_TRELOFF(x) ( N_SUPOFF(x) /* + 0 (x).a_supsize*/ )
105#define N_DRELOFF(x) ( N_TRELOFF(x) + (x).a_trsize )
106#define N_EXTHOFF(x) ( N_DRELOFF(x) /* + 0 (x).a_drsize */)
107#define N_STROFF(x) ( 0 /* no string table */ )
108
109/* use these when the file has gnu symbol tables */
110#define N_GNU_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
111#define N_GNU_DRELOFF(x) (N_GNU_TRELOFF(x) + (x).a_trsize)
112#define N_GNU_SYMOFF(x) (N_GNU_DRELOFF(x) + (x).a_drsize)
113
114#define TARGET_PAGE_SIZE 0x1000
115#define SEGMENT_SIZE 0x1000
116#define TEXT_START_ADDR 0
117
118#undef N_SHARED_LIB
119#define N_SHARED_LIB(x) ( 0 /* no shared libraries */ )
Note: See TracBrowser for help on using the repository browser.