bfd/
2010-04-30 Tristan Gingold <gingold@adacore.com> * vms-lib.c (struct lib_tdata): Field artdata added, fields nbr_syms and syms removed. (struct carsym_mem): New structure. (vms_add_index): New function. (vms_add_indexes_from_list): New function. (vms_traverse_index): Parameter carsym changed to carsym_mem. Code adjusted to handle elfidx. (vms_lib_read_index): Adjusted for vms_traverse_index changes. Parameter NBREL is now a pointer. (_bfd_vms_lib_archive_p): Adjust for above change. Handle ia64 archives. (_bfd_vms_lib_mkarchive): Adjusted for changes in struct lib_tdata. (_bfd_vms_lib_find_symbol): Ditto. (vms_lib_bopen): Fix two typos: return FALSE in case of error, check MHD id. * vms-alpha.c (alpha_vms_link_add_archive_symbols): Adjust for changes of _bfd_vms_lib_find_symbol. include/vms 2010-04-30 Tristan Gingold <gingold@adacore.com> * lbr.h (LBR__C_TYP_ISHSTB): Added. (LHD_SANEID4): Renamed to ... (LHD_SANEID6): ... this. (LBR_MAJORID, LBR_ELFMAJORID): New macros. (struct vms_rfa): New structure. (struct vms_idxdef): Renamed to ... (struct vms_idx): ... this. (struct vms_idxdef2): Renamed to ... (struct vms_elfidx): ... this. (ELFIDX__WEAK, ELFIDX__GROUP, ELFIDX__LISTRFA, ELFIDX__SYMESC): New macros. (struct vms_lhs, struct vms_lns): New structures. (struct vms_mhd): Add missing fields. (MHD__C_MHDLEN): New macro.
This commit is contained in:
		| @@ -1,3 +1,20 @@ | |||||||
|  | 2010-04-30  Tristan Gingold  <gingold@adacore.com> | ||||||
|  |  | ||||||
|  | 	* lbr.h (LBR__C_TYP_ISHSTB): Added. | ||||||
|  | 	(LHD_SANEID4): Renamed to ... | ||||||
|  | 	(LHD_SANEID6): ...  this. | ||||||
|  | 	(LBR_MAJORID, LBR_ELFMAJORID): New macros. | ||||||
|  | 	(struct vms_rfa): New structure. | ||||||
|  | 	(struct vms_idxdef): Renamed to ... | ||||||
|  | 	(struct vms_idx): ... this. | ||||||
|  | 	(struct vms_idxdef2): Renamed to ... | ||||||
|  | 	(struct vms_elfidx): ... this. | ||||||
|  | 	(ELFIDX__WEAK, ELFIDX__GROUP, ELFIDX__LISTRFA, ELFIDX__SYMESC): New | ||||||
|  | 	macros. | ||||||
|  | 	(struct vms_lhs, struct vms_lns): New structures. | ||||||
|  | 	(struct vms_mhd): Add missing fields. | ||||||
|  | 	(MHD__C_MHDLEN): New macro. | ||||||
|  |  | ||||||
| 2010-03-31  Tristan Gingold  <gingold@adacore.com> | 2010-03-31  Tristan Gingold  <gingold@adacore.com> | ||||||
|  |  | ||||||
| 	* dcx.h: New file. | 	* dcx.h: New file. | ||||||
|   | |||||||
| @@ -25,9 +25,11 @@ | |||||||
|  |  | ||||||
| /* Libray HeaDer.  */ | /* Libray HeaDer.  */ | ||||||
|  |  | ||||||
|  | /* Magic numbers.  Should match the major version.  */ | ||||||
|  |  | ||||||
| #define LHD_SANEID_DCX 319232342 | #define LHD_SANEID_DCX 319232342 | ||||||
| #define LHD_SANEID3 233579905 | #define LHD_SANEID3 233579905 | ||||||
| #define LHD_SANEID4 233579911 | #define LHD_SANEID6 233579911 | ||||||
|  |  | ||||||
| /* Library type.  */ | /* Library type.  */ | ||||||
| #define LBR__C_TYP_UNK    0	/* Unknown / unspecified.  */ | #define LBR__C_TYP_UNK    0	/* Unknown / unspecified.  */ | ||||||
| @@ -40,6 +42,7 @@ | |||||||
| #define LBR__C_TYP_EOBJ   7	/* Alpha object.  */ | #define LBR__C_TYP_EOBJ   7	/* Alpha object.  */ | ||||||
| #define LBR__C_TYP_ESHSTB 8	/* Alpha shareable image.  */ | #define LBR__C_TYP_ESHSTB 8	/* Alpha shareable image.  */ | ||||||
| #define LBR__C_TYP_IOBJ   9	/* IA-64 object.  */ | #define LBR__C_TYP_IOBJ   9	/* IA-64 object.  */ | ||||||
|  | #define LBR__C_TYP_ISHSTB 10	/* IA-64 shareable image.  */ | ||||||
|  |  | ||||||
| struct vms_lhd | struct vms_lhd | ||||||
| { | { | ||||||
| @@ -120,6 +123,10 @@ struct vms_lhd | |||||||
|   unsigned char fill_4[4 * 13]; |   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.  */ | /* Offset of the first IDD.  */ | ||||||
| #define LHD_IDXDESC 196 | #define LHD_IDXDESC 196 | ||||||
|  |  | ||||||
| @@ -158,34 +165,80 @@ struct vms_indexdef | |||||||
|   unsigned char parent[4]; |   unsigned char parent[4]; | ||||||
|  |  | ||||||
|   unsigned char fill_1[6]; |   unsigned char fill_1[6]; | ||||||
|  |  | ||||||
|  |   /* The key field contains vms_idxdef/vms_idxdef2 structures, which are | ||||||
|  |      simply a key (= a string) and a rfa.  */ | ||||||
|   unsigned char keys[INDEXDEF__BLKSIZ]; |   unsigned char keys[INDEXDEF__BLKSIZ]; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* Index keys.  */ | /* An offset in a file.  */ | ||||||
| struct vms_idxdef |  | ||||||
| { |  | ||||||
|   unsigned char vbn[4]; |  | ||||||
|   unsigned char offset[2]; |  | ||||||
|  |  | ||||||
|   unsigned char keylen; | struct vms_rfa | ||||||
|   unsigned char keyname[256]; | { | ||||||
|  |   /* 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]; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct vms_idxdef2 | /* Index keys.  For version 3.  */ | ||||||
| { |  | ||||||
|   unsigned char vbn[4]; |  | ||||||
|  |  | ||||||
|  | struct vms_idx | ||||||
|  | { | ||||||
|   /* Offset from the start of the vbn, so minimum should be |   /* Offset from the start of the vbn, so minimum should be | ||||||
|      DATA__DATA (ie 6).  */ |      DATA__DATA (ie 6).  */ | ||||||
|   unsigned char offset[2]; |   struct vms_rfa rfa; | ||||||
|  |  | ||||||
|   unsigned char keylen[2]; |   unsigned char keylen; | ||||||
|   unsigned char fill_1; |   /* The length of this field is in fact keylen.  */ | ||||||
|   unsigned char keyname[256]; |   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 | #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 | struct vms_datadef | ||||||
| { | { | ||||||
|   /* Number of records in this block.  */ |   /* Number of records in this block.  */ | ||||||
| @@ -216,9 +269,15 @@ struct vms_mhd | |||||||
|   /* Ident or GSMATCH.  */ |   /* Ident or GSMATCH.  */ | ||||||
|   unsigned char objidlng; |   unsigned char objidlng; | ||||||
|   unsigned char objid[31]; |   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_MHDID 0xad	/* Value for id.  */ | ||||||
|  | #define MHD__C_MHDLEN 16	/* Fixed part length.  */ | ||||||
| #define MHD__C_USRDAT 16 | #define MHD__C_USRDAT 16 | ||||||
| #define MHD__M_SELSRC 0x1 | #define MHD__M_SELSRC 0x1 | ||||||
| #define MHD__M_OBJTIR 0x2 | #define MHD__M_OBJTIR 0x2 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user