/* This file is aout_gnu.h
- Copyright (C) 1987-1992 Free Software Foundation, Inc.
+ Copyright (C) 1987-2015 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS 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 2, or (at your option)
+ the Free Software Foundation; either version 3, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ the Free Software Foundation, 51 Franklin Street - Fifth Floor,
+ Boston, MA 02110-1301, USA. */
#ifndef __A_OUT_GNU_H__
#define __A_OUT_GNU_H__
relocations, and one which uses extended relocations.
Today, the extended reloc uses are
- TC_SPARC, TC_A29K
+ TC_SPARC
each must define the enum reloc_type
*/
-#define USE_EXTENDED_RELOC (defined(TC_SPARC) || defined(TC_A29K))
+#define USE_EXTENDED_RELOC defined(TC_SPARC)
-#if defined(TC_SPARC) || defined(TC_A29K)
+#if defined(TC_SPARC)
enum reloc_type
{
RELOC_8, RELOC_16, RELOC_32,/* simple relocations */
NO_RELOC
};
-#endif /* TC_SPARC or TC_A29K */
-
+#endif /* TC_SPARC */
#define __GNU_EXEC_MACROS__
M_386 = 100,
M_29K = 101,
M_RS6000 = 102, /* IBM RS/6000 */
+ M_VAX4K_NETBSD = 150,
/* HP/BSD formats */
M_HP200 = 200, /* hp200 (68010) BSD binary */
M_HP300 = 300, /* hp300 (68020+68881) BSD binary */
M_HPUX23 = 0x020C /* hp200/300 HPUX binary */
};
-#define N_MAGIC(exec) ((exec).a_info & 0xffff)
-#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
-#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-#define N_SET_INFO(exec, magic, type, flags) \
- ((exec).a_info = ((magic) & 0xffff) \
+#define N_MAGIC(execp) ((execp)->a_info & 0xffff)
+#define N_MACHTYPE(execp) ((enum machine_type)(((execp)->a_info >> 16) & 0xff))
+#define N_FLAGS(execp) (((execp)->a_info >> 24) & 0xff)
+#define N_SET_INFO(execp, magic, type, flags) \
+ ((execp)->a_info = ((magic) & 0xffff) \
| (((int)(type) & 0xff) << 16) \
| (((flags) & 0xff) << 24))
-#define N_SET_MAGIC(exec, magic) \
- ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
+#define N_SET_MAGIC(execp, magic) \
+ ((execp)->a_info = (((execp)->a_info & 0xffff0000) | ((magic) & 0xffff)))
-#define N_SET_MACHTYPE(exec, machtype) \
- ((exec).a_info = \
- ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
+#define N_SET_MACHTYPE(execp, machtype) \
+ ((execp)->a_info = \
+ ((execp)->a_info & 0xff00ffff) | ((((int) (machtype)) & 0xff) << 16))
-#define N_SET_FLAGS(exec, flags) \
- ((exec).a_info = \
- ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
+#define N_SET_FLAGS(execp, flags) \
+ ((execp)->a_info = \
+ ((execp)->a_info & 0x00ffffff) | (((flags) & 0xff) << 24))
/* Code indicating object file or impure executable. */
#ifndef OMAGIC
sizeof (struct exec))
#endif
-
#ifndef N_DATOFF
-#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text )
+#define N_DATOFF(x) ( N_TXTOFF(x) + (x)->a_text )
#endif
#ifndef N_TRELOFF
-#define N_TRELOFF(x) ( N_DATOFF(x) + (x).a_data )
+#define N_TRELOFF(x) ( N_DATOFF(x) + (x)->a_data )
#endif
#ifndef N_DRELOFF
-#define N_DRELOFF(x) ( N_TRELOFF(x) + (x).a_trsize )
+#define N_DRELOFF(x) ( N_TRELOFF(x) + (x)->a_trsize )
#endif
#ifndef N_SYMOFF
-#define N_SYMOFF(x) ( N_DRELOFF(x) + (x).a_drsize )
+#define N_SYMOFF(x) ( N_DRELOFF(x) + (x)->a_drsize )
#endif
#ifndef N_STROFF
-#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms )
+#define N_STROFF(x) ( N_SYMOFF(x) + (x)->a_syms )
#endif
/* Address of text segment in memory after it is loaded. */
#ifndef N_DATADDR
#define N_DATADDR(x) \
- (N_MAGIC(x)==OMAGIC? (N_TXTADDR(x)+(x).a_text) \
- : (N_SEGSIZE(x) + ((N_TXTADDR(x)+(x).a_text-1) & ~(N_SEGSIZE(x)-1))))
+ (N_MAGIC(x)==OMAGIC? (N_TXTADDR(x)+(x)->a_text) \
+ : (N_SEGSIZE(x) + ((N_TXTADDR(x)+(x)->a_text-1) & ~(N_SEGSIZE(x)-1))))
#endif
/* Address of bss segment in memory after it is loaded. */
-#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
+#define N_BSSADDR(x) (N_DATADDR(x) + (x)->a_data)
\f
struct nlist
{
unsigned char r_addend[4];
};
-
#define RELOC_EXT_BITS_EXTERN_BIG 0x80
#define RELOC_EXT_BITS_EXTERN_LITTLE 0x01
/* The standard, old-fashioned, Berkeley compatible relocation struct */
-
-
#ifdef TC_I860
/* NOTE: three bits max, see struct reloc_info_i860.r_type */
enum i860_reloc_type
NO_SPEC = 0, PAIR, HIGH, HIGHADJ,
};
-
struct reloc_info_i860
{
unsigned long r_address;
#endif /* TC_I860 */
-
struct reloc_std_bytes
{
unsigned char r_address[4];