URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-old/binutils-2.18.50/include/nlm
- from Rev 156 to Rev 816
- ↔ Reverse comparison
Rev 156 → Rev 816
/sparc32-ext.h
0,0 → 1,120
/* SPARC NLM (NetWare Loadable Module) support for BFD. |
Copyright 1993 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 2 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; |
/internal.h
0,0 → 1,309
/* NLM (NetWare Loadable Module) support for BFD. |
Copyright 1993, 1994, 2003 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 2 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 |
/ppc-ext.h
0,0 → 1,163
/* PowerPC NLM (NetWare Loadable Module) support for BFD. |
Copyright (C) 1994 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 2 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; |
/ChangeLog
0,0 → 1,100
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. |
|
|
Local Variables: |
version-control: never |
End: |
/external.h
0,0 → 1,174
/* NLM (NetWare Loadable Module) support for BFD. |
Copyright 1993, 1994 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 2 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); |
/alpha-ext.h
0,0 → 1,166
/* Alpha NLM (NetWare Loadable Module) support for BFD. |
Copyright 1993 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 2 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; |
/i386-ext.h
0,0 → 1,116
/* i386 NLM (NetWare Loadable Module) support for BFD. |
Copyright 1993 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 2 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; |
/common.h
0,0 → 1,123
/* NLM (NetWare Loadable Module) support for BFD. |
Copyright 1993, 2001 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 2 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 |