Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5190 → Rev 5191

/contrib/toolchain/binutils/include/nlm/ChangeLog
0,0 → 1,119
2010-04-15 Nick Clifton <nickc@redhat.com>
 
* alpha-ext.h: Update copyright notice to use GPLv3.
* common.h: Likewise.
* external.h: Likewise.
* i386-ext.h: Likewise.
* internal.h: Likewise.
* ppc-ext.h: Likewise.
* sparc32-ext.h: Likewise.
 
2005-05-10 Nick Clifton <nickc@redhat.com>
 
* Update the address and phone number of the FSF organization in
the GPL notices in the following files:
alpha-ext.h, common.h, external.h, i386-ext.h, internal.h,
ppc-ext.h, sparc32-ext.h
 
2003-08-07 Alan Modra <amodra@bigpond.net.au>
 
* internal.h (Nlm_Internal_Custom_Header): Replace PTR with void *.
 
2001-10-02 Alan Modra <amodra@bigpond.net.au>
 
* common.h (NLM_CAT, NLM_CAT3): Don't define.
(NLM_CAT4): Update conditions under which this is defined. Document
why CONCAT4 can't be used.
 
1994-05-06 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* external.h (nlmNAME(External_Custom_Header)): Add length,
dataOffset, and dataStamp field.
(nlmNAME(External_Cygnus_Ext_Header)): Remove.
* internal.h (Nlm_Internal_Custom_Header): Add hdrLength,
dataOffset, dataStamp and hdr fields.
 
1994-04-22 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* external.h (struct nlmNAME(external_cygnus_ext_header)): Rename
from nlmNAME(external_cygnus_section_header). Change stamp field
to 8 bytes. Add bytes field.
* internal.h (nlm_internal_cygnus_ext_header): Rename from
nlm_internal_cygnus_section_header. Change stamp field to 8
bytes.
 
1994-04-21 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* internal.h (struct nlm_internal_cygnus_section_header): Define.
* external.h (struct nlmNAME(external_cygnus_section_header):
Define.
 
1994-04-20 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* internal.h (struct nlm_internal_custom_header): Remove
debugRecOffset and debugRecLength fields. Add data field.
* external.h (struct nlmNAME(external_custom_header)): Remove
debugRecOffset and debugRecLength fields.
 
1994-02-07 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* internal.h: Change HOST_64_BIT to BFD_HOST_64_BIT.
 
1993-12-02 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* alpha-ext.h: New file describing formats of information in Alpha
NetWare files.
* common.h: Define some non-external Alpha information.
 
1993-11-17 Sean Eric Fagan (sef@cygnus.com)
 
* external.h: Don't define external_fixed_header here.
* i386-ext.h, sparc32-ext.h: New header files to define
external_fixed_header for particular CPU's.
 
1993-10-27 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* internal.h (Nlm_Internal_Extended_Header): Added fields
sharedDebugRecordOffset and sharedDebugRecordCount.
* external.h (NlmNAME(External_Extended_Header)): Likewise.
 
* common.h (NLM_SIGNATURE): Do not define (it's different for each
backend).
 
1993-08-31 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* internal.h: Change length fields of type char to type unsigned
char.
 
1993-07-31 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* common.h (NLM_HIBIT, NLM_HEADER_VERSION): Define.
 
1993-07-22 Fred Fish (fnf@deneb.cygnus.com)
 
* common.h (NLM_CAT*, NLM_ARCH_SIZE, NLM_TARGET_LONG_SIZE,
NLM_TARGET_ADDRESS_SIZE, NLM_NAME, NlmNAME, nlmNAME): New
macros.
* external.h (TARGET_LONG_SIZE, TARGET_ADDRESS_SIZE): Remove
macros, convert usages to NLM_ equivalents.
* external.h: Use nlmNAME and NlmNAME macros to derive both
32 and 64 bit versions.
 
1993-07-20 Fred Fish (fnf@deneb.cygnus.com)
 
* (common.h, external.h, internal.h): New files for NLM/NetWare
support.
 
Copyright (C) 1993-2012 Free Software Foundation, Inc.
 
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
 
Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
/contrib/toolchain/binutils/include/nlm/alpha-ext.h
0,0 → 1,167
/* Alpha NLM (NetWare Loadable Module) support for BFD.
Copyright 1993, 2005, 2010 Free Software Foundation, Inc.
By Ian Lance Taylor, Cygnus Support
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
/* An Alpha NLM starts with an instance of this structure. */
 
struct nlm32_alpha_external_prefix_header
{
/* Magic number. Must be NLM32_ALPHA_MAGIC. */
unsigned char magic[4];
/* Format descriptor. Current value is 2. */
unsigned char format[4];
/* Size of prefix header. */
unsigned char size[4];
/* Padding. */
unsigned char pad1[4];
/* More fields may be added later, supposedly. */
};
 
/* The external format of an Alpha NLM reloc. This is the same as an
Alpha ECOFF reloc. */
 
struct nlm32_alpha_external_reloc
{
unsigned char r_vaddr[8];
unsigned char r_symndx[4];
unsigned char r_bits[4];
};
 
/* Constants to unpack the r_bits field of a reloc. */
 
#define RELOC_BITS0_TYPE_LITTLE 0xff
#define RELOC_BITS0_TYPE_SH_LITTLE 0
 
#define RELOC_BITS1_EXTERN_LITTLE 0x01
 
#define RELOC_BITS1_OFFSET_LITTLE 0x7e
#define RELOC_BITS1_OFFSET_SH_LITTLE 1
 
#define RELOC_BITS1_RESERVED_LITTLE 0x80
#define RELOC_BITS1_RESERVED_SH_LITTLE 7
#define RELOC_BITS2_RESERVED_LITTLE 0xff
#define RELOC_BITS2_RESERVED_SH_LEFT_LITTLE 1
#define RELOC_BITS3_RESERVED_LITTLE 0x03
#define RELOC_BITS3_RESERVED_SH_LEFT_LITTLE 9
 
#define RELOC_BITS3_SIZE_LITTLE 0xfc
#define RELOC_BITS3_SIZE_SH_LITTLE 2
 
/* The external format of the fixed header. */
 
typedef struct nlm32_alpha_external_fixed_header
{
 
/* The signature field identifies the file as an NLM. It must contain
the signature string, which depends upon the NLM target. */
 
unsigned char signature[24];
 
/* The version of the header. At this time, the highest version number
is 4. */
 
unsigned char version[4];
 
/* The name of the module, which must be a DOS name (1-8 characters followed
by a period and a 1-3 character extension). The first byte is the byte
length of the name and the last byte is a null terminator byte. This
field is fixed length, and any unused bytes should be null bytes. The
value is set by the OUTPUT keyword to NLMLINK. */
 
unsigned char moduleName[14];
 
/* Padding to make it come out correct. */
 
unsigned char pad1[2];
 
/* The byte offset of the code image from the start of the file. */
 
unsigned char codeImageOffset[4];
 
/* The size of the code image, in bytes. */
 
unsigned char codeImageSize[4];
 
/* The byte offset of the data image from the start of the file. */
 
unsigned char dataImageOffset[4];
 
/* The size of the data image, in bytes. */
 
unsigned char dataImageSize[4];
 
/* The size of the uninitialized data region that the loader is to be
allocated at load time. Uninitialized data follows the initialized
data in the NLM address space. */
 
unsigned char uninitializedDataSize[4];
 
/* The byte offset of the custom data from the start of the file. The
custom data is set by the CUSTOM keyword to NLMLINK. It is possible
for this to be EOF if there is no custom data. */
 
unsigned char customDataOffset[4];
 
/* The size of the custom data, in bytes. */
 
unsigned char customDataSize[4];
 
/* The byte offset of the module dependencies from the start of the file.
The module dependencies are determined by the MODULE keyword in
NLMLINK. */
 
unsigned char moduleDependencyOffset[4];
 
/* The number of module dependencies at the moduleDependencyOffset. */
 
unsigned char numberOfModuleDependencies[4];
 
/* The byte offset of the relocation fixup data from the start of the file */
unsigned char relocationFixupOffset[4];
 
unsigned char numberOfRelocationFixups[4];
 
unsigned char externalReferencesOffset[4];
 
unsigned char numberOfExternalReferences[4];
 
unsigned char publicsOffset[4];
 
unsigned char numberOfPublics[4];
 
/* The byte offset of the internal debug info from the start of the file.
It is possible for this to be EOF if there is no debug info. */
 
unsigned char debugInfoOffset[4];
 
unsigned char numberOfDebugRecords[4];
 
unsigned char codeStartOffset[4];
 
unsigned char exitProcedureOffset[4];
 
unsigned char checkUnloadProcedureOffset[4];
 
unsigned char moduleType[4];
 
unsigned char flags[4];
 
} Nlm32_alpha_External_Fixed_Header;
/contrib/toolchain/binutils/include/nlm/common.h
0,0 → 1,123
/* NLM (NetWare Loadable Module) support for BFD.
Copyright 1993, 2001, 2005, 2010 Free Software Foundation, Inc.
 
Written by Fred Fish @ Cygnus Support
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
/* This file is part of NLM support for BFD, and contains the portions
that are common to both the internal and external representations. */
 
/* If NLM_ARCH_SIZE is not defined, default to 32. NLM_ARCH_SIZE is
optionally defined by the application. */
 
#ifndef NLM_ARCH_SIZE
# define NLM_ARCH_SIZE 32
#endif
 
/* Due to horrible details of ANSI macro expansion, we can't use CONCAT4
for NLM_NAME. CONCAT2 is used in BFD_JUMP_TABLE macros, and some of
them will expand to tokens that themselves are macros defined in terms
of NLM_NAME. If NLM_NAME were defined using CONCAT4 (which is itself
defined in bfd-in.h using CONCAT2), ANSI preprocessor rules say that
the CONCAT2 within NLM_NAME should not be expanded.
So use another name. */
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#ifdef SABER
#define NLM_CAT4(a,b,c,d) a##b##c##d
#else
/* This hack is to avoid a problem with some strict ANSI C preprocessors.
The problem is, "32_" is not a valid preprocessing token, and we don't
want extra underscores (e.g., "nlm_32_"). The NLM_XCAT2 macro will
cause the inner CAT2 macros to be evaluated first, producing
still-valid pp-tokens. Then the final concatenation can be done. */
#define NLM_CAT2(a,b) a##b
#define NLM_XCAT2(a,b) NLM_CAT2(a,b)
#define NLM_CAT4(a,b,c,d) NLM_XCAT2(NLM_CAT2(a,b),NLM_CAT2(c,d))
#endif
#else
#define NLM_CAT4(a,b,c,d) a/**/b/**/c/**/d
#endif
 
#if NLM_ARCH_SIZE == 32
# define NLM_TARGET_LONG_SIZE 4
# define NLM_TARGET_ADDRESS_SIZE 4
# define NLM_NAME(x,y) NLM_CAT4(x,32,_,y)
# define NLM_HIBIT (((bfd_vma) 1) << 31)
#endif
#if NLM_ARCH_SIZE == 64
# define NLM_TARGET_LONG_SIZE 8
# define NLM_TARGET_ADDRESS_SIZE 8
# define NLM_NAME(x,y) NLM_CAT4(x,64,_,y)
# define NLM_HIBIT (((bfd_vma) 1) << 63)
#endif
 
#define NlmNAME(X) NLM_NAME(Nlm,X)
#define nlmNAME(X) NLM_NAME(nlm,X)
 
/* Give names to things that should not change. */
 
#define NLM_MAX_DESCRIPTION_LENGTH 127
#define NLM_MAX_SCREEN_NAME_LENGTH 71
#define NLM_MAX_THREAD_NAME_LENGTH 71
#define NLM_MAX_COPYRIGHT_MESSAGE_LENGTH 255
#define NLM_OTHER_DATA_LENGTH 400 /* FIXME */
#define NLM_OLD_THREAD_NAME_LENGTH 5
#define NLM_SIGNATURE_SIZE 24
#define NLM_HEADER_VERSION 4
#define NLM_MODULE_NAME_SIZE 14
#define NLM_DEFAULT_STACKSIZE (8 * 1024)
/* Alpha information. This should probably be in a separate Alpha
header file, but it can't go in alpha-ext.h because some of it is
needed by nlmconv.c. */
 
/* Magic number in Alpha prefix header. */
#define NLM32_ALPHA_MAGIC (0x83561840)
 
/* The r_type field in an Alpha reloc is one of the following values. */
#define ALPHA_R_IGNORE 0
#define ALPHA_R_REFLONG 1
#define ALPHA_R_REFQUAD 2
#define ALPHA_R_GPREL32 3
#define ALPHA_R_LITERAL 4
#define ALPHA_R_LITUSE 5
#define ALPHA_R_GPDISP 6
#define ALPHA_R_BRADDR 7
#define ALPHA_R_HINT 8
#define ALPHA_R_SREL16 9
#define ALPHA_R_SREL32 10
#define ALPHA_R_SREL64 11
#define ALPHA_R_OP_PUSH 12
#define ALPHA_R_OP_STORE 13
#define ALPHA_R_OP_PSUB 14
#define ALPHA_R_OP_PRSHIFT 15
#define ALPHA_R_GPVALUE 16
#define ALPHA_R_NW_RELOC 250
 
/* A local reloc, other than ALPHA_R_GPDISP or ALPHA_R_IGNORE, must be
against one of these symbol indices. */
#define ALPHA_RELOC_SECTION_TEXT 1
#define ALPHA_RELOC_SECTION_DATA 3
 
/* An ALPHA_R_NW_RELOC has one of these values in the size field. If
it is SETGP, the r_vaddr field holds the GP value to use. If it is
LITA, the r_vaddr field holds the address of the .lita section and
the r_symndx field holds the size of the .lita section. */
#define ALPHA_R_NW_RELOC_SETGP 1
#define ALPHA_R_NW_RELOC_LITA 2
/contrib/toolchain/binutils/include/nlm/external.h
0,0 → 1,172
/* NLM (NetWare Loadable Module) support for BFD.
Copyright 1993, 1994, 2005, 2010 Free Software Foundation, Inc.
 
Written by Fred Fish @ Cygnus Support
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
/* This file is part of NLM support for BFD, and contains the portions
that describe how NLM is represented externally by the BFD library.
I.E. it describes the in-file representation of NLM. It requires
the nlm/common.h file which contains the portions that are common to
both the internal and external representations.
 
Note that an NLM header consists of three parts:
 
(1) A fixed length header that has specific fields of known length,
at specific offsets in the file.
 
(2) A variable length header that has specific fields in a specific
order, but some fields may be variable length.
 
(3) A auxiliary header that has various optional fields in no specific
order. There is no way to identify the end of the auxiliary headers
except by finding a header without a recognized 'stamp'.
 
The exact format of the fixed length header unfortunately varies
from one NLM target to another, due to padding. Each target
defines the correct external format in a separate header file. */
/* NLM Header. */
 
/* The version header is one of the optional auxiliary headers and
follows the fixed length and variable length NLM headers. */
 
typedef struct nlmNAME(external_version_header)
{
 
/* The header is recognized by "VeRsIoN#" in the stamp field. */
char stamp[8];
 
unsigned char majorVersion[NLM_TARGET_LONG_SIZE];
 
unsigned char minorVersion[NLM_TARGET_LONG_SIZE];
 
unsigned char revision[NLM_TARGET_LONG_SIZE];
 
unsigned char year[NLM_TARGET_LONG_SIZE];
 
unsigned char month[NLM_TARGET_LONG_SIZE];
 
unsigned char day[NLM_TARGET_LONG_SIZE];
 
} NlmNAME(External_Version_Header);
 
 
typedef struct nlmNAME(external_copyright_header)
{
 
/* The header is recognized by "CoPyRiGhT=" in the stamp field. */
 
char stamp[10];
 
unsigned char copyrightMessageLength[1];
 
/* There is a variable length field here called 'copyrightMessage'
that is the length specified by copyrightMessageLength. */
 
} NlmNAME(External_Copyright_Header);
 
 
typedef struct nlmNAME(external_extended_header)
{
 
/* The header is recognized by "MeSsAgEs" in the stamp field. */
 
char stamp[8];
 
unsigned char languageID[NLM_TARGET_LONG_SIZE];
 
unsigned char messageFileOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char messageFileLength[NLM_TARGET_LONG_SIZE];
 
unsigned char messageCount[NLM_TARGET_LONG_SIZE];
 
unsigned char helpFileOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char helpFileLength[NLM_TARGET_LONG_SIZE];
 
unsigned char RPCDataOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char RPCDataLength[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedCodeOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedCodeLength[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedDataOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedDataLength[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedRelocationFixupOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedRelocationFixupCount[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedExternalReferenceOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedExternalReferenceCount[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedPublicsOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedPublicsCount[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedDebugRecordOffset[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedDebugRecordCount[NLM_TARGET_LONG_SIZE];
 
unsigned char sharedInitializationOffset[NLM_TARGET_ADDRESS_SIZE];
 
unsigned char SharedExitProcedureOffset[NLM_TARGET_ADDRESS_SIZE];
 
unsigned char productID[NLM_TARGET_LONG_SIZE];
 
unsigned char reserved0[NLM_TARGET_LONG_SIZE];
 
unsigned char reserved1[NLM_TARGET_LONG_SIZE];
 
unsigned char reserved2[NLM_TARGET_LONG_SIZE];
 
unsigned char reserved3[NLM_TARGET_LONG_SIZE];
 
unsigned char reserved4[NLM_TARGET_LONG_SIZE];
 
unsigned char reserved5[NLM_TARGET_LONG_SIZE];
 
} NlmNAME(External_Extended_Header);
 
 
typedef struct nlmNAME(external_custom_header)
{
 
/* The header is recognized by "CuStHeAd" in the stamp field. */
char stamp[8];
 
/* Length of this header. */
unsigned char length[NLM_TARGET_LONG_SIZE];
 
/* Offset to data. */
unsigned char dataOffset[NLM_TARGET_LONG_SIZE];
 
/* Length of data. */
unsigned char dataLength[NLM_TARGET_LONG_SIZE];
 
/* Stamp for this customer header--we recognize "CyGnUsEx". */
char dataStamp[8];
 
} NlmNAME(External_Custom_Header);
/contrib/toolchain/binutils/include/nlm/i386-ext.h
0,0 → 1,117
/* i386 NLM (NetWare Loadable Module) support for BFD.
Copyright 1993, 2005, 2010 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
/* The external format of the fixed header. */
 
typedef struct nlm32_i386_external_fixed_header
{
 
/* The signature field identifies the file as an NLM. It must contain
the signature string, which depends upon the NLM target. */
 
unsigned char signature[24];
 
/* The version of the header. At this time, the highest version number
is 4. */
 
unsigned char version[4];
 
/* The name of the module, which must be a DOS name (1-8 characters followed
by a period and a 1-3 character extension). The first byte is the byte
length of the name and the last byte is a null terminator byte. This
field is fixed length, and any unused bytes should be null bytes. The
value is set by the OUTPUT keyword to NLMLINK. */
 
unsigned char moduleName[14];
 
/* The byte offset of the code image from the start of the file. */
 
unsigned char codeImageOffset[4];
 
/* The size of the code image, in bytes. */
 
unsigned char codeImageSize[4];
 
/* The byte offset of the data image from the start of the file. */
 
unsigned char dataImageOffset[4];
 
/* The size of the data image, in bytes. */
 
unsigned char dataImageSize[4];
 
/* The size of the uninitialized data region that the loader is to be
allocated at load time. Uninitialized data follows the initialized
data in the NLM address space. */
 
unsigned char uninitializedDataSize[4];
 
/* The byte offset of the custom data from the start of the file. The
custom data is set by the CUSTOM keyword to NLMLINK. It is possible
for this to be EOF if there is no custom data. */
 
unsigned char customDataOffset[4];
 
/* The size of the custom data, in bytes. */
 
unsigned char customDataSize[4];
 
/* The byte offset of the module dependencies from the start of the file.
The module dependencies are determined by the MODULE keyword in
NLMLINK. */
 
unsigned char moduleDependencyOffset[4];
 
/* The number of module dependencies at the moduleDependencyOffset. */
 
unsigned char numberOfModuleDependencies[4];
 
/* The byte offset of the relocation fixup data from the start of the file */
unsigned char relocationFixupOffset[4];
 
unsigned char numberOfRelocationFixups[4];
 
unsigned char externalReferencesOffset[4];
 
unsigned char numberOfExternalReferences[4];
 
unsigned char publicsOffset[4];
 
unsigned char numberOfPublics[4];
 
/* The byte offset of the internal debug info from the start of the file.
It is possible for this to be EOF if there is no debug info. */
 
unsigned char debugInfoOffset[4];
 
unsigned char numberOfDebugRecords[4];
 
unsigned char codeStartOffset[4];
 
unsigned char exitProcedureOffset[4];
 
unsigned char checkUnloadProcedureOffset[4];
 
unsigned char moduleType[4];
 
unsigned char flags[4];
 
} Nlm32_i386_External_Fixed_Header;
/contrib/toolchain/binutils/include/nlm/internal.h
0,0 → 1,309
/* NLM (NetWare Loadable Module) support for BFD.
Copyright 1993, 1994, 2003, 2005, 2010 Free Software Foundation, Inc.
 
Written by Fred Fish @ Cygnus Support.
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
/* This file is part of NLM support for BFD, and contains the portions
that describe how NLM is represented internally in the BFD library.
I.E. it describes the in-memory representation of NLM. It requires
the nlm/common.h file which contains the portions that are common to
both the internal and external representations. */
#if 0
 
/* Types used by various structures, functions, etc. */
 
typedef unsigned long Nlm32_Addr; /* Unsigned program address */
typedef unsigned long Nlm32_Off; /* Unsigned file offset */
typedef long Nlm32_Sword; /* Signed large integer */
typedef unsigned long Nlm32_Word; /* Unsigned large integer */
typedef unsigned short Nlm32_Half; /* Unsigned medium integer */
typedef unsigned char Nlm32_Char; /* Unsigned tiny integer */
 
#ifdef BFD_HOST_64_BIT
typedef unsigned BFD_HOST_64_BIT Nlm64_Addr;
typedef unsigned BFD_HOST_64_BIT Nlm64_Off;
typedef BFD_HOST_64_BIT Nlm64_Sxword;
typedef unsigned BFD_HOST_64_BIT Nlm64_Xword;
#endif
typedef long Nlm64_Sword;
typedef unsigned long Nlm64_Word;
typedef unsigned short Nlm64_Half;
 
#endif /* 0 */
 
/* This structure contains the internal form of the portion of the NLM
header that is fixed length. */
 
typedef struct nlm_internal_fixed_header
{
/* The signature field identifies the file as an NLM. It must contain
the signature string, which depends upon the NLM target. */
 
char signature[NLM_SIGNATURE_SIZE];
 
/* The version of the header. At this time, the highest version number
is 4. */
 
long version;
 
/* The name of the module, which must be a DOS name (1-8 characters followed
by a period and a 1-3 character extension. The first byte is the byte
length of the name and the last byte is a null terminator byte. This
field is fixed length, and any unused bytes should be null bytes. The
value is set by the OUTPUT keyword to NLMLINK. */
 
char moduleName[NLM_MODULE_NAME_SIZE];
 
/* The byte offset of the code image from the start of the file. */
 
file_ptr codeImageOffset;
 
/* The size of the code image, in bytes. */
 
bfd_size_type codeImageSize;
 
/* The byte offset of the data image from the start of the file. */
 
file_ptr dataImageOffset;
 
/* The size of the data image, in bytes. */
 
bfd_size_type dataImageSize;
 
/* The size of the uninitialized data region that the loader is to be
allocated at load time. Uninitialized data follows the initialized
data in the NLM address space. */
 
bfd_size_type uninitializedDataSize;
 
/* The byte offset of the custom data from the start of the file. The
custom data is set by the CUSTOM keyword to NLMLINK. */
 
file_ptr customDataOffset;
 
/* The size of the custom data, in bytes. */
 
bfd_size_type customDataSize;
 
/* The byte offset of the module dependencies from the start of the file.
The module dependencies are determined by the MODULE keyword in
NLMLINK. */
 
file_ptr moduleDependencyOffset;
 
/* The number of module dependencies at the moduleDependencyOffset. */
 
long numberOfModuleDependencies;
 
/* The byte offset of the relocation fixup data from the start of the file */
 
file_ptr relocationFixupOffset;
long numberOfRelocationFixups;
file_ptr externalReferencesOffset;
long numberOfExternalReferences;
file_ptr publicsOffset;
long numberOfPublics;
file_ptr debugInfoOffset;
long numberOfDebugRecords;
file_ptr codeStartOffset;
file_ptr exitProcedureOffset;
file_ptr checkUnloadProcedureOffset;
long moduleType;
long flags;
} Nlm_Internal_Fixed_Header;
 
#define nlm32_internal_fixed_header nlm_internal_fixed_header
#define Nlm32_Internal_Fixed_Header Nlm_Internal_Fixed_Header
#define nlm64_internal_fixed_header nlm_internal_fixed_header
#define Nlm64_Internal_Fixed_Header Nlm_Internal_Fixed_Header
 
/* This structure contains the portions of the NLM header that are either
variable in size in the external representation, or else are not at a
fixed offset relative to the start of the NLM header due to preceding
variable sized fields.
 
Note that all the fields must exist in the external header, and in
the order used here (the same order is used in the internal form
for consistency, not out of necessity). */
 
typedef struct nlm_internal_variable_header
{
 
/* The descriptionLength field contains the length of the text in
descriptionText, excluding the null terminator. The descriptionText
field contains the NLM description obtained from the DESCRIPTION
keyword in NLMLINK plus the null byte terminator. The descriptionText
can be up to NLM_MAX_DESCRIPTION_LENGTH characters. */
unsigned char descriptionLength;
char descriptionText[NLM_MAX_DESCRIPTION_LENGTH + 1];
 
/* The stackSize field contains the size of the stack in bytes, as
specified by the STACK or STACKSIZE keyword in NLMLINK. If no size
is specified, the default is NLM_DEFAULT_STACKSIZE. */
long stackSize;
 
/* The reserved field is included only for completeness. It should contain
zero. */
 
long reserved;
 
/* This field is fixed length, should contain " LONG" (note leading
space), and is unused. */
 
char oldThreadName[NLM_OLD_THREAD_NAME_LENGTH];
 
/* The screenNameLength field contains the length of the actual text stored
in the screenName field, excluding the null byte terminator. The
screenName field contains the screen name as specified by the SCREENNAME
keyword in NLMLINK, and can be up to NLM_MAX_SCREEN_NAME_LENGTH
characters. */
 
unsigned char screenNameLength;
char screenName[NLM_MAX_SCREEN_NAME_LENGTH + 1];
 
/* The threadNameLength field contains the length of the actual text stored
in the threadName field, excluding the null byte terminator. The
threadName field contains the thread name as specified by the THREADNAME
keyword in NLMLINK, and can be up to NLM_MAX_THREAD_NAME_LENGTH
characters. */
 
unsigned char threadNameLength;
char threadName[NLM_MAX_THREAD_NAME_LENGTH + 1];
 
} Nlm_Internal_Variable_Header;
 
#define nlm32_internal_variable_header nlm_internal_variable_header
#define Nlm32_Internal_Variable_Header Nlm_Internal_Variable_Header
#define nlm64_internal_variable_header nlm_internal_variable_header
#define Nlm64_Internal_Variable_Header Nlm_Internal_Variable_Header
 
/* The version header is one of the optional auxiliary headers and
follows the fixed length and variable length NLM headers. */
 
typedef struct nlm_internal_version_header
{
/* The header is recognized by "VeRsIoN#" in the stamp field. */
char stamp[8];
long majorVersion;
long minorVersion;
long revision;
long year;
long month;
long day;
} Nlm_Internal_Version_Header;
 
#define nlm32_internal_version_header nlm_internal_version_header
#define Nlm32_Internal_Version_Header Nlm_Internal_Version_Header
#define nlm64_internal_version_header nlm_internal_version_header
#define Nlm64_Internal_Version_Header Nlm_Internal_Version_Header
 
typedef struct nlm_internal_copyright_header
{
/* The header is recognized by "CoPyRiGhT=" in the stamp field. */
char stamp[10];
unsigned char copyrightMessageLength;
char copyrightMessage[NLM_MAX_COPYRIGHT_MESSAGE_LENGTH];
} Nlm_Internal_Copyright_Header;
 
#define nlm32_internal_copyright_header nlm_internal_copyright_header
#define Nlm32_Internal_Copyright_Header Nlm_Internal_Copyright_Header
#define nlm64_internal_copyright_header nlm_internal_copyright_header
#define Nlm64_Internal_Copyright_Header Nlm_Internal_Copyright_Header
 
typedef struct nlm_internal_extended_header
{
/* The header is recognized by "MeSsAgEs" in the stamp field. */
char stamp[8];
long languageID;
file_ptr messageFileOffset;
bfd_size_type messageFileLength;
long messageCount;
file_ptr helpFileOffset;
bfd_size_type helpFileLength;
file_ptr RPCDataOffset;
bfd_size_type RPCDataLength;
file_ptr sharedCodeOffset;
bfd_size_type sharedCodeLength;
file_ptr sharedDataOffset;
bfd_size_type sharedDataLength;
file_ptr sharedRelocationFixupOffset;
long sharedRelocationFixupCount;
file_ptr sharedExternalReferenceOffset;
long sharedExternalReferenceCount;
file_ptr sharedPublicsOffset;
long sharedPublicsCount;
file_ptr sharedDebugRecordOffset;
long sharedDebugRecordCount;
bfd_vma SharedInitializationOffset;
bfd_vma SharedExitProcedureOffset;
long productID;
long reserved0;
long reserved1;
long reserved2;
long reserved3;
long reserved4;
long reserved5;
} Nlm_Internal_Extended_Header;
 
#define nlm32_internal_extended_header nlm_internal_extended_header
#define Nlm32_Internal_Extended_Header Nlm_Internal_Extended_Header
#define nlm64_internal_extended_header nlm_internal_extended_header
#define Nlm64_Internal_Extended_Header Nlm_Internal_Extended_Header
 
/* The format of a custom header as stored internally is different
from the external format. This is how we store a custom header
which we do not recognize. */
 
typedef struct nlm_internal_custom_header
{
/* The header is recognized by "CuStHeAd" in the stamp field. */
char stamp[8];
bfd_size_type hdrLength;
file_ptr dataOffset;
bfd_size_type dataLength;
char dataStamp[8];
void *hdr;
} Nlm_Internal_Custom_Header;
 
#define nlm32_internal_custom_header nlm_internal_custom_header
#define Nlm32_Internal_Custom_Header Nlm_Internal_Custom_Header
#define nlm64_internal_custom_header nlm_internal_custom_header
#define Nlm64_Internal_Custom_Header Nlm_Internal_Custom_Header
 
/* The internal Cygnus header is written out externally as a custom
header. We don't try to replicate that structure here. */
 
typedef struct nlm_internal_cygnus_ext_header
{
/* The header is recognized by "CyGnUsEx" in the stamp field. */
char stamp[8];
/* File location of debugging information. */
file_ptr offset;
/* Length of debugging information. */
bfd_size_type length;
} Nlm_Internal_Cygnus_Ext_Header;
 
#define nlm32_internal_cygnus_ext_header nlm_internal_cygnus_ext_header
#define Nlm32_Internal_Cygnus_Ext_Header Nlm_Internal_Cygnus_Ext_Header
#define nlm64_internal_cygnus_ext_header nlm_internal_cygnus_ext_header
#define Nlm64_Internal_Cygnus_Ext_Header Nlm_Internal_Cygnus_Ext_Header
/contrib/toolchain/binutils/include/nlm/ppc-ext.h
0,0 → 1,164
/* PowerPC NLM (NetWare Loadable Module) support for BFD.
Copyright (C) 1994, 2005, 2010 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
#ifdef OLDFORMAT
 
/* The format of a PowerPC NLM changed. These structures are only
used in the old format. */
 
/* A PowerPC NLM starts with an instance of this structure. */
 
struct nlm32_powerpc_external_prefix_header
{
/* Signature. Must be "AppleNLM". */
char signature[8];
/* Version number. Current value is 1. */
unsigned char headerVersion[4];
/* ??. Should be set to 0. */
unsigned char origins[4];
/* File creation date in standard Unix time format (seconds since
1/1/70). */
unsigned char date[4];
};
 
#define NLM32_POWERPC_SIGNATURE "AppleNLM"
#define NLM32_POWERPC_HEADER_VERSION 1
 
/* The external format of a PowerPC NLM reloc. This is the same as an
XCOFF dynamic reloc. */
 
struct nlm32_powerpc_external_reloc
{
/* Address. */
unsigned char l_vaddr[4];
/* Symbol table index. This is 0 for .text and 1 for .data. 2
means .bss, but I don't know if it is used. In XCOFF, larger
numbers are indices into the dynamic symbol table, but they are
presumably not used in an NLM. */
unsigned char l_symndx[4];
/* Relocation type. */
unsigned char l_rtype[2];
/* Section number being relocated. */
unsigned char l_rsecnm[2];
};
 
#endif /* OLDFORMAT */
 
/* The external format of the fixed header. */
 
typedef struct nlm32_powerpc_external_fixed_header
{
 
/* The signature field identifies the file as an NLM. It must contain
the signature string, which depends upon the NLM target. */
 
unsigned char signature[24];
 
/* The version of the header. At this time, the highest version number
is 4. */
 
unsigned char version[4];
 
/* The name of the module, which must be a DOS name (1-8 characters followed
by a period and a 1-3 character extension). The first byte is the byte
length of the name and the last byte is a null terminator byte. This
field is fixed length, and any unused bytes should be null bytes. The
value is set by the OUTPUT keyword to NLMLINK. */
 
unsigned char moduleName[14];
 
/* Padding to make it come out correct. */
 
unsigned char pad1[2];
 
/* The byte offset of the code image from the start of the file. */
 
unsigned char codeImageOffset[4];
 
/* The size of the code image, in bytes. */
 
unsigned char codeImageSize[4];
 
/* The byte offset of the data image from the start of the file. */
 
unsigned char dataImageOffset[4];
 
/* The size of the data image, in bytes. */
 
unsigned char dataImageSize[4];
 
/* The size of the uninitialized data region that the loader is to be
allocated at load time. Uninitialized data follows the initialized
data in the NLM address space. */
 
unsigned char uninitializedDataSize[4];
 
/* The byte offset of the custom data from the start of the file. The
custom data is set by the CUSTOM keyword to NLMLINK. It is possible
for this to be EOF if there is no custom data. */
 
unsigned char customDataOffset[4];
 
/* The size of the custom data, in bytes. */
 
unsigned char customDataSize[4];
 
/* The byte offset of the module dependencies from the start of the file.
The module dependencies are determined by the MODULE keyword in
NLMLINK. */
 
unsigned char moduleDependencyOffset[4];
 
/* The number of module dependencies at the moduleDependencyOffset. */
 
unsigned char numberOfModuleDependencies[4];
 
/* The byte offset of the relocation fixup data from the start of the file */
unsigned char relocationFixupOffset[4];
 
unsigned char numberOfRelocationFixups[4];
 
unsigned char externalReferencesOffset[4];
 
unsigned char numberOfExternalReferences[4];
 
unsigned char publicsOffset[4];
 
unsigned char numberOfPublics[4];
 
/* The byte offset of the internal debug info from the start of the file.
It is possible for this to be EOF if there is no debug info. */
 
unsigned char debugInfoOffset[4];
 
unsigned char numberOfDebugRecords[4];
 
unsigned char codeStartOffset[4];
 
unsigned char exitProcedureOffset[4];
 
unsigned char checkUnloadProcedureOffset[4];
 
unsigned char moduleType[4];
 
unsigned char flags[4];
 
} Nlm32_powerpc_External_Fixed_Header;
/contrib/toolchain/binutils/include/nlm/sparc32-ext.h
0,0 → 1,121
/* SPARC NLM (NetWare Loadable Module) support for BFD.
Copyright 1993, 2005, 2010 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
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. */
 
/* The external format of the fixed header. */
 
typedef struct nlm32_sparc_external_fixed_header
{
 
/* The signature field identifies the file as an NLM. It must contain
the signature string, which depends upon the NLM target. */
 
unsigned char signature[24];
 
/* The version of the header. At this time, the highest version number
is 4. */
 
unsigned char version[4];
 
/* The name of the module, which must be a DOS name (1-8 characters followed
by a period and a 1-3 character extension). The first byte is the byte
length of the name and the last byte is a null terminator byte. This
field is fixed length, and any unused bytes should be null bytes. The
value is set by the OUTPUT keyword to NLMLINK. */
 
unsigned char moduleName[14];
 
/* Padding to make it come out correct. */
 
unsigned char pad1[2];
 
/* The byte offset of the code image from the start of the file. */
 
unsigned char codeImageOffset[4];
 
/* The size of the code image, in bytes. */
 
unsigned char codeImageSize[4];
 
/* The byte offset of the data image from the start of the file. */
 
unsigned char dataImageOffset[4];
 
/* The size of the data image, in bytes. */
 
unsigned char dataImageSize[4];
 
/* The size of the uninitialized data region that the loader is to be
allocated at load time. Uninitialized data follows the initialized
data in the NLM address space. */
 
unsigned char uninitializedDataSize[4];
 
/* The byte offset of the custom data from the start of the file. The
custom data is set by the CUSTOM keyword to NLMLINK. It is possible
for this to be EOF if there is no custom data. */
 
unsigned char customDataOffset[4];
 
/* The size of the custom data, in bytes. */
 
unsigned char customDataSize[4];
 
/* The byte offset of the module dependencies from the start of the file.
The module dependencies are determined by the MODULE keyword in
NLMLINK. */
 
unsigned char moduleDependencyOffset[4];
 
/* The number of module dependencies at the moduleDependencyOffset. */
 
unsigned char numberOfModuleDependencies[4];
 
/* The byte offset of the relocation fixup data from the start of the file */
unsigned char relocationFixupOffset[4];
 
unsigned char numberOfRelocationFixups[4];
 
unsigned char externalReferencesOffset[4];
 
unsigned char numberOfExternalReferences[4];
 
unsigned char publicsOffset[4];
 
unsigned char numberOfPublics[4];
 
/* The byte offset of the internal debug info from the start of the file.
It is possible for this to be EOF if there is no debug info. */
 
unsigned char debugInfoOffset[4];
 
unsigned char numberOfDebugRecords[4];
 
unsigned char codeStartOffset[4];
 
unsigned char exitProcedureOffset[4];
 
unsigned char checkUnloadProcedureOffset[4];
 
unsigned char moduleType[4];
 
unsigned char flags[4];
 
} Nlm32_sparc_External_Fixed_Header;