*** empty log message ***
[deliverable/binutils-gdb.git] / include / aout / hp300hpux.h
index a49bd3c2e6b0a98edf7d31e4cdbcf54974352da5..97a3eb58f528da625fb37056d3601e061ef6a59b 100644 (file)
@@ -1,5 +1,21 @@
-/* Special version of <a.out.h> for use under hp-ux.
-   Copyright (C) 1988,1993 Free Software Foundation, Inc. */
+/* Special version of <a.out.h> for use under HP-UX.
+   Copyright 1988, 1993, 1995, 2001, 2009, 2010
+   Free Software Foundation, Inc.
+
+   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.  */
 
 struct hp300hpux_exec_bytes
 {
@@ -51,10 +67,17 @@ struct hp300hpux_header_extension
 };
 #define EXTERNAL_EXTENSION_HEADER_SIZE (16*4)
 
-#define OMAGIC 0x106
-#define NMAGIC 0x107
-#define ZMAGIC 0x10B
-#define SHAREMAGIC 0x108
+/* hpux separates object files (0x106) and impure executables (0x107)  */
+/* but the bfd code does not distinguish between them. Since we want to*/
+/* read hpux .o files, we add an special define and use it below in    */
+/* offset and address calculations.                                    */
+
+#define HPUX_DOT_O_MAGIC 0x106
+#define OMAGIC 0x107       /* object file or impure executable.  */
+#define NMAGIC 0x108       /* Code indicating pure executable.   */
+#define ZMAGIC 0x10B       /* demand-paged executable.           */
+
+#define N_HEADER_IN_TEXT(x) 0
 
 #if 0 /* libaout.h only uses the lower 8 bits */
 #define HP98x6_ID 0x20A
@@ -65,14 +88,19 @@ struct hp300hpux_header_extension
 
 #define N_BADMAG(x) ((_N_BADMAG (x)) || (_N_BADMACH (x)))
 
-#define _N_BADMACH(x)                                                   \
-(((N_MACHTYPE (x)) != HP9000S200_ID) &&                                 \
- ((N_MACHTYPE (x)) != HP98x6_ID))
+#define N_DATADDR(x) \
+  ((N_MAGIC (x) == OMAGIC || N_MAGIC (x) == HPUX_DOT_O_MAGIC)          \
+   ? (N_TXTADDR (x) + N_TXTSIZE (x))                                   \
+   : (N_SEGSIZE (x) + ((N_TXTADDR (x) + N_TXTSIZE (x) - 1)             \
+                      & ~ (bfd_vma) (N_SEGSIZE (x) - 1))))
+
+#define _N_BADMACH(x) \
+  (((N_MACHTYPE (x)) != HP9000S200_ID) && ((N_MACHTYPE (x)) != HP98x6_ID))
 
-#define _N_BADMAG(x)     (N_MAGIC(x) != OMAGIC         \
+#define _N_BADMAG(x)     (N_MAGIC(x) != HPUX_DOT_O_MAGIC \
+                        && N_MAGIC(x) != OMAGIC                \
                        && N_MAGIC(x) != NMAGIC         \
-                       && N_MAGIC(x) != ZMAGIC         \
-                        && N_MAGIC(x) != SHAREMAGIC)
+                       && N_MAGIC(x) != ZMAGIC )
 
 #undef _N_HDROFF
 #define _N_HDROFF(x) (SEGMENT_SIZE - (sizeof (struct exec)))
@@ -99,6 +127,6 @@ struct hp300hpux_header_extension
 #define N_GNU_DRELOFF(x) (N_GNU_TRELOFF(x) + (x).a_trsize)
 #define N_GNU_SYMOFF(x)  (N_GNU_DRELOFF(x) + (x).a_drsize)
 
-#define PAGE_SIZE 0x1000
+#define TARGET_PAGE_SIZE 0x1000
 #define SEGMENT_SIZE 0x1000
 #define TEXT_START_ADDR 0
This page took 0.023926 seconds and 4 git commands to generate.