80 lines
2.5 KiB
C++
80 lines
2.5 KiB
C++
|
/* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
|
||
|
#if __SC__ || __RCC__
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifndef __SCNHDR_H
|
||
|
#define __SCNHDR_H 1
|
||
|
|
||
|
/* Used when dealing with COFF files. */
|
||
|
|
||
|
#if __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
struct scnhdr
|
||
|
{
|
||
|
char s_name[8]; /* Section name, (.text, .data, .bss). */
|
||
|
long s_paddr; /* Physical address. */
|
||
|
long s_vaddr; /* Virtual address. */
|
||
|
long s_size; /* Section size. */
|
||
|
long s_scnptr; /* File ptr to raw data for section. */
|
||
|
long s_relptr; /* File ptr to relocation. */
|
||
|
long s_lnnoptr; /* File ptr to line numbers. */
|
||
|
unsigned short s_nreloc; /* Number of relocation entries. */
|
||
|
unsigned short s_nlnno; /* Number of line number entries. */
|
||
|
long s_flags; /* Type and content. */
|
||
|
};
|
||
|
|
||
|
#define SCNHDR struct scnhdr
|
||
|
#define SCNHSZ sizeof(SCNHDR)
|
||
|
|
||
|
/* Constants for names of special sections. */
|
||
|
#define _BSS ".bss"
|
||
|
#define _DATA ".data"
|
||
|
#define _FINI ".fini"
|
||
|
#define _INIT ".init"
|
||
|
#define _TEXT ".text"
|
||
|
#define _TV ".tv"
|
||
|
#define _COMM ".comment"
|
||
|
|
||
|
/* Section numbers for main sections */
|
||
|
#define COFF_TEXT 1
|
||
|
#define COFF_DATA 2
|
||
|
#define COFF_BSS 3
|
||
|
#define COFF_COMMENT 4
|
||
|
#define COFF_STIDATA 5 /* For static constructor function pointers */
|
||
|
#define COFF_STDDATA 6 /* For static destructors function pointers */
|
||
|
#define COFF_MAX_SCNS 6 /* Total number of possible sections */
|
||
|
|
||
|
/* s_flags -- The lower 2 bytes are the section type, upper 2 bytes are
|
||
|
section handling. */
|
||
|
#define STYP_REG 0x00 /* regular section: allocated, relocated, */
|
||
|
/* loaded */
|
||
|
#define STYP_DSECT 0x01 /* dummy section: not allocated, relocated, */
|
||
|
/* not loaded */
|
||
|
#define STYP_NOLOAD 0x02 /* noload section: allocated, relocated, */
|
||
|
/* not loaded */
|
||
|
#define STYP_GROUP 0x04 /* grouped section: formed of input sections */
|
||
|
#define STYP_PAD 0x08 /* padding section: not allocated, not */
|
||
|
/* relocated, loaded */
|
||
|
#define STYP_COPY 0x10 /* copy section: for decision function used */
|
||
|
/* by field update; not allocated, not */
|
||
|
/* relocated, loaded; reloc & lineno entries */
|
||
|
/* processed normally */
|
||
|
#define STYP_TEXT 0x20 /* text only */
|
||
|
#define STYP_DATA 0x40 /* data only */
|
||
|
#define STYP_BSS 0x80 /* bss only */
|
||
|
#define STYP_INFO 0x200 /* comment section : not allocated not */
|
||
|
/* relocated, not loaded */
|
||
|
#define STYP_LIB 0x800 /* for .lib section : same as INFO */
|
||
|
#define STYP_OVER 0x400 /* overlay section : relocated not allocated */
|
||
|
/* or loaded */
|
||
|
|
||
|
#if __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|