Blame include/aout/dynix3.h

Packit bbfece
/* a.out specifics for Sequent Symmetry running Dynix 3.x
Packit bbfece
Packit bbfece
   Copyright (C) 2001-2018 Free Software Foundation, Inc.
Packit bbfece
Packit bbfece
   This program is free software; you can redistribute it and/or modify
Packit bbfece
   it under the terms of the GNU General Public License as published by
Packit bbfece
   the Free Software Foundation; either version 3 of the License, or
Packit bbfece
   (at your option) any later version.
Packit bbfece
Packit bbfece
   This program is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
   GNU General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU General Public License
Packit bbfece
   along with this program; if not, write to the Free Software
Packit bbfece
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
Packit bbfece
   MA 02110-1301, USA.  */
Packit bbfece
Packit bbfece
#ifndef A_OUT_DYNIX3_H
Packit bbfece
#define A_OUT_DYNIX3_H
Packit bbfece
Packit bbfece
#define external_exec dynix_external_exec
Packit bbfece
Packit bbfece
/* struct exec for Dynix 3
Packit bbfece
 
Packit bbfece
   a_gdtbl and a_bootstrap are only for standalone binaries.
Packit bbfece
   Shared data fields are not supported by the kernel as of Dynix 3.1,
Packit bbfece
   but are supported by Dynix compiler programs.  */
Packit bbfece
struct dynix_external_exec
Packit bbfece
  {
Packit bbfece
    unsigned char e_info[4];
Packit bbfece
    unsigned char e_text[4];
Packit bbfece
    unsigned char e_data[4];
Packit bbfece
    unsigned char e_bss[4];
Packit bbfece
    unsigned char e_syms[4];
Packit bbfece
    unsigned char e_entry[4];
Packit bbfece
    unsigned char e_trsize[4];
Packit bbfece
    unsigned char e_drsize[4];
Packit bbfece
    unsigned char e_g_code[8];
Packit bbfece
    unsigned char e_g_data[8];
Packit bbfece
    unsigned char e_g_desc[8];
Packit bbfece
    unsigned char e_shdata[4];
Packit bbfece
    unsigned char e_shbss[4];
Packit bbfece
    unsigned char e_shdrsize[4];
Packit bbfece
    unsigned char e_bootstrap[44];
Packit bbfece
    unsigned char e_reserved[12];
Packit bbfece
    unsigned char e_version[4];
Packit bbfece
  };
Packit bbfece
Packit bbfece
#define	EXEC_BYTES_SIZE	(128)
Packit bbfece
Packit bbfece
/* All executables under Dynix are demand paged with read-only text,
Packit bbfece
   Thus no NMAGIC.
Packit bbfece
  
Packit bbfece
   ZMAGIC has a page of 0s at virtual 0,
Packit bbfece
   XMAGIC has an invalid page at virtual 0.  */
Packit bbfece
#define OMAGIC	0x12eb		/* .o */
Packit bbfece
#define ZMAGIC	0x22eb		/* zero @ 0, demand load */
Packit bbfece
#define XMAGIC	0x32eb		/* invalid @ 0, demand load */
Packit bbfece
#define SMAGIC	0x42eb		/* standalone, not supported here */
Packit bbfece
Packit bbfece
#define N_BADMAG(x) ((OMAGIC != N_MAGIC(x)) && \
Packit bbfece
		     (ZMAGIC != N_MAGIC(x)) && \
Packit bbfece
		     (XMAGIC != N_MAGIC(x)) && \
Packit bbfece
		     (SMAGIC != N_MAGIC(x)))
Packit bbfece
Packit bbfece
#define N_ADDRADJ(x) ((ZMAGIC == N_MAGIC(x) || XMAGIC == N_MAGIC(x)) ? 0x1000 : 0)
Packit bbfece
Packit bbfece
#define N_TXTOFF(x) (EXEC_BYTES_SIZE)
Packit bbfece
#define N_DATOFF(x) (N_TXTOFF(x) + N_TXTSIZE(x))
Packit bbfece
#define N_SHDATOFF(x) (N_DATOFF(x) + (x)->a_data)
Packit bbfece
#define N_TRELOFF(x) (N_SHDATOFF(x) + (x)->a_shdata)
Packit bbfece
#define N_DRELOFF(x) (N_TRELOFF(x) + (x)->a_trsize)
Packit bbfece
#define N_SHDRELOFF(x) (N_DRELOFF(x) + (x)->a_drsize)
Packit bbfece
#define N_SYMOFF(x) (N_SHDRELOFF(x) + (x)->a_shdrsize)
Packit bbfece
#define N_STROFF(x) (N_SYMOFF(x) + (x)->a_syms)
Packit bbfece
Packit bbfece
#define N_TXTADDR(x) \
Packit bbfece
	(((OMAGIC == N_MAGIC(x)) || (SMAGIC == N_MAGIC(x))) ? 0 \
Packit bbfece
	 : TEXT_START_ADDR + EXEC_BYTES_SIZE)
Packit bbfece
Packit bbfece
#define N_TXTSIZE(x) \
Packit bbfece
	(((OMAGIC == N_MAGIC(x)) || (SMAGIC == N_MAGIC(x))) ? ((x)->a_text) \
Packit bbfece
	 : ((x)->a_text - N_ADDRADJ(x) - EXEC_BYTES_SIZE))
Packit bbfece
Packit bbfece
#endif /* A_OUT_DYNIX3_H */