diff options
Diffstat (limited to 'include/vms/lbr.h')
-rw-r--r-- | include/vms/lbr.h | 329 |
1 files changed, 0 insertions, 329 deletions
diff --git a/include/vms/lbr.h b/include/vms/lbr.h deleted file mode 100644 index bdb436aa7..000000000 --- a/include/vms/lbr.h +++ /dev/null @@ -1,329 +0,0 @@ -/* Alpha VMS external format of Libraries. - - Copyright 2010 Free Software Foundation, Inc. - Written by Tristan Gingold <gingold@adacore.com>, AdaCore. - - 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. */ - -#ifndef _VMS_LBR_H -#define _VMS_LBR_H - -/* Libray HeaDer. */ - -/* Magic numbers. Should match the major version. */ - -#define LHD_SANEID_DCX 319232342 -#define LHD_SANEID3 233579905 -#define LHD_SANEID6 233579911 - -/* Library type. */ -#define LBR__C_TYP_UNK 0 /* Unknown / unspecified. */ -#define LBR__C_TYP_OBJ 1 /* Vax object. */ -#define LBR__C_TYP_MLB 2 /* Macro. */ -#define LBR__C_TYP_HLP 3 /* Help. */ -#define LBR__C_TYP_TXT 4 /* Text. */ -#define LBR__C_TYP_SHSTB 5 /* Vax shareable image. */ -#define LBR__C_TYP_NCS 6 /* NCS. */ -#define LBR__C_TYP_EOBJ 7 /* Alpha object. */ -#define LBR__C_TYP_ESHSTB 8 /* Alpha shareable image. */ -#define LBR__C_TYP_IOBJ 9 /* IA-64 object. */ -#define LBR__C_TYP_ISHSTB 10 /* IA-64 shareable image. */ - -struct vms_lhd -{ - /* Type of the library. See above. */ - unsigned char type; - - /* Number of indexes. Generally 1, 2 for object libraries. */ - unsigned char nindex; - - unsigned char fill_1[2]; - - /* Sanity Id. */ - unsigned char sanity[4]; - - /* Version. */ - unsigned char majorid[2]; - unsigned char minorid[2]; - - /* Tool name. */ - unsigned char lbrver[32]; - - /* Create time. */ - unsigned char credat[8]; - - /* Update time. */ - unsigned char updtim[8]; - - /* Size of the MHD. */ - unsigned char mhdusz; - - unsigned char idxblkf[2]; /* Unused. */ - unsigned char fill_2; - unsigned char closerror[2]; - - unsigned char spareword[2]; - - /* First free block, and number of free blocks. */ - unsigned char freevbn[4]; - unsigned char freeblk[4]; - - unsigned char nextrfa[6]; - unsigned char nextvbn[4]; - - /* Free pre-allocated index block. */ - unsigned char freidxblk[4]; - unsigned char freeidx[4]; - - /* Highest pre-allocated index block and in use. */ - unsigned char hipreal[4]; - unsigned char hiprusd[4]; - - /* Number of index blocks in use. */ - unsigned char idxblks[4]; - - /* Number of index entries. */ - unsigned char idxcnt[4]; - - /* Number of modules entries. */ - unsigned char modcnt[4]; - - unsigned char fill_3[2]; - - /* Number of module headers. */ - unsigned char modhdrs[4]; - - /* Overhead index pointers. */ - unsigned char idxovh[4]; - - /* Update history records. */ - unsigned char maxluhrec[2]; - unsigned char numluhrec[2]; - unsigned char begluhrfa[6]; - unsigned char endluhrfa[6]; - - /* DCX map. */ - unsigned char dcxmapvbn[4]; - - unsigned char fill_4[4 * 13]; -}; - -/* Known major ids. */ -#define LBR_MAJORID 3 /* Alpha libraries. */ -#define LBR_ELFMAJORID 6 /* Elf libraries (new index, new data). */ - -/* Offset of the first IDD. */ -#define LHD_IDXDESC 196 - -/* InDex Description. */ -struct vms_idd -{ - unsigned char flags[2]; - - /* Max length of the key. */ - unsigned char keylen[2]; - - /* First index block. */ - unsigned char vbn[4]; -}; - -/* IDD flags. */ -#define IDD__FLAGS_ASCII 1 -#define IDD__FLAGS_LOCKED 2 -#define IDD__FLAGS_VARLENIDX 4 -#define IDD__FLAGS_NOCASECMP 8 -#define IDD__FLAGS_NOCASENTR 16 -#define IDD__FLAGS_UPCASNTRY 32 - -#define IDD_LENGTH 8 - -/* Index block. */ -#define INDEXDEF__LENGTH 512 -#define INDEXDEF__BLKSIZ 500 - -struct vms_indexdef -{ - /* Number of bytes used. */ - unsigned char used[2]; - - /* VBN of the parent. */ - unsigned char parent[4]; - - unsigned char fill_1[6]; - - /* The key field contains vms_idx/vms_elfidx structures, which are - simply a key (= a string) and a rfa. */ - unsigned char keys[INDEXDEF__BLKSIZ]; -}; - -/* An offset in a file. */ - -struct vms_rfa -{ - /* Logical block number, 1 based. - 0 means that the field is absent. Block size is 512. */ - unsigned char vbn[4]; - - /* Offset within the block. */ - unsigned char offset[2]; -}; - -/* Index keys. For version 3. */ - -struct vms_idx -{ - /* Offset from the start of the vbn, so minimum should be - DATA__DATA (ie 6). */ - struct vms_rfa rfa; - - unsigned char keylen; - /* The length of this field is in fact keylen. */ - unsigned char keyname[256]; -}; - -/* Index keys, for version 4 and later. */ - -struct vms_elfidx -{ - struct vms_rfa rfa; - - unsigned char keylen[2]; - unsigned char flags; - unsigned char keyname[256]; -}; - -/* Flags of elfidx. */ - -#define ELFIDX__WEAK 0x01 /* Weak symbol. */ -#define ELFIDX__GROUP 0x02 /* Group symbol. */ -#define ELFIDX__LISTRFA 0x04 /* RFA field points to an LHS. */ -#define ELFIDX__SYMESC 0x08 /* Long symbol. */ - -#define RFADEF__C_INDEX 0xffff - -/* List head structure. That's what is pointed by rfa when LISTRFA flag - is set in elfidx. */ - -struct vms_lhs -{ - struct vms_rfa ng_g_rfa; /* Non-group global. */ - struct vms_rfa ng_wk_rfa; /* Non-group weak. */ - struct vms_rfa g_g_rfa; /* Group global. */ - struct vms_rfa g_wk_rfa; /* Group weak. */ - unsigned char flags; -}; - -/* List node structure. Fields of LHS point to this structure. */ - -struct vms_lns -{ - /* Next node in the list. */ - struct vms_rfa nxtrfa; - - /* Module associated with the key. */ - struct vms_rfa modrfa; -}; - -struct vms_datadef -{ - /* Number of records in this block. */ - unsigned char recs; - unsigned char fill_1; - - /* Next vbn. */ - unsigned char link[4]; - - /* Data. The first word is the record length, followed by record - data and a possible pad byte so that record length is always aligned. */ - unsigned char data[506]; -}; -#define DATA__LENGTH 512 -#define DATA__DATA 6 - -/* Key name block. This is used for keys longer than 128 bytes. */ - -struct vms_kbn -{ - /* Length of the key chunk. */ - unsigned char keylen[2]; - - /* RFA of the next chunk. */ - struct vms_rfa rfa; - - /* Followed by the key chunk. */ -}; - -/* Module header. */ -struct vms_mhd -{ - /* Fixed part. */ - unsigned char lbrflag; - unsigned char id; - unsigned char fill_1[2]; - unsigned char refcnt[4]; - unsigned char datim[8]; - - unsigned char objstat; - /* Ident or GSMATCH. */ - unsigned char objidlng; - unsigned char objid[31]; - - unsigned char pad1[3]; - unsigned char otherefcnt[4]; - unsigned char modsize[4]; - unsigned char pad2[4]; -}; - -#define MHD__C_MHDID 0xad /* Value for id. */ -#define MHD__C_MHDLEN 16 /* Fixed part length. */ -#define MHD__C_USRDAT 16 - -/* Flags for objstat. */ -#define MHD__M_SELSRC 0x1 /* Selective search. */ -#define MHD__M_OBJTIR 0x2 -#define MHD__M_WKSYM 0x4 - -struct vms_luh -{ - unsigned char nxtluhblk[4]; - unsigned char spare[2]; - unsigned char data[506]; -}; - -struct vms_luhdef -{ - unsigned char rechdr[2]; - unsigned char reclen[2]; -}; -#define LUH__RECHDRLEN 4 -#define LUH__RECHDRMRK 0xabba -#define LUH__DATAFLDLEN 506 - -/* Entry in the history. */ - -struct vms_leh -{ - unsigned char date[8]; - unsigned char nbr_units[2]; - unsigned char action[2]; /* 1: delete, 2: insert, 3: replaced. */ - unsigned char idlen; - /* username - modules... */ -}; - -#endif /* _VMS_LBR_H */ |