OLD | NEW |
1 /* BFD back-end for IBM RS/6000 "XCOFF" files. | 1 /* BFD back-end for IBM RS/6000 "XCOFF" files. |
2 Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, | 2 Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
3 2008, 2009, 2010, 2011 | 3 2008, 2009, 2010, 2011, 2012 |
4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
5 Written by Metin G. Ozisik, Mimi Phuong-Thao Vo, and John Gilmore. | 5 Written by Metin G. Ozisik, Mimi Phuong-Thao Vo, and John Gilmore. |
6 Archive support from Damon A. Permezel. | 6 Archive support from Damon A. Permezel. |
7 Contributed by IBM Corporation and Cygnus Support. | 7 Contributed by IBM Corporation and Cygnus Support. |
8 | 8 |
9 This file is part of BFD, the Binary File Descriptor library. | 9 This file is part of BFD, the Binary File Descriptor library. |
10 | 10 |
11 This program is free software; you can redistribute it and/or modify | 11 This program is free software; you can redistribute it and/or modify |
12 it under the terms of the GNU General Public License as published by | 12 it under the terms of the GNU General Public License as published by |
13 the Free Software Foundation; either version 3 of the License, or | 13 the Free Software Foundation; either version 3 of the License, or |
(...skipping 19 matching lines...) Expand all Loading... |
33 #include "libcoff.h" | 33 #include "libcoff.h" |
34 #include "libxcoff.h" | 34 #include "libxcoff.h" |
35 | 35 |
36 extern bfd_boolean _bfd_xcoff_mkobject (bfd *); | 36 extern bfd_boolean _bfd_xcoff_mkobject (bfd *); |
37 extern bfd_boolean _bfd_xcoff_copy_private_bfd_data (bfd *, bfd *); | 37 extern bfd_boolean _bfd_xcoff_copy_private_bfd_data (bfd *, bfd *); |
38 extern bfd_boolean _bfd_xcoff_is_local_label_name (bfd *, const char *); | 38 extern bfd_boolean _bfd_xcoff_is_local_label_name (bfd *, const char *); |
39 extern reloc_howto_type *_bfd_xcoff_reloc_type_lookup | 39 extern reloc_howto_type *_bfd_xcoff_reloc_type_lookup |
40 (bfd *, bfd_reloc_code_real_type); | 40 (bfd *, bfd_reloc_code_real_type); |
41 extern bfd_boolean _bfd_xcoff_slurp_armap (bfd *); | 41 extern bfd_boolean _bfd_xcoff_slurp_armap (bfd *); |
42 extern const bfd_target *_bfd_xcoff_archive_p (bfd *); | 42 extern const bfd_target *_bfd_xcoff_archive_p (bfd *); |
43 extern PTR _bfd_xcoff_read_ar_hdr (bfd *); | 43 extern void * _bfd_xcoff_read_ar_hdr (bfd *); |
44 extern bfd *_bfd_xcoff_openr_next_archived_file (bfd *, bfd *); | 44 extern bfd *_bfd_xcoff_openr_next_archived_file (bfd *, bfd *); |
45 extern int _bfd_xcoff_stat_arch_elt (bfd *, struct stat *); | 45 extern int _bfd_xcoff_stat_arch_elt (bfd *, struct stat *); |
46 extern bfd_boolean _bfd_xcoff_write_armap | 46 extern bfd_boolean _bfd_xcoff_write_armap |
47 (bfd *, unsigned int, struct orl *, unsigned int, int); | 47 (bfd *, unsigned int, struct orl *, unsigned int, int); |
48 extern bfd_boolean _bfd_xcoff_write_archive_contents (bfd *); | 48 extern bfd_boolean _bfd_xcoff_write_archive_contents (bfd *); |
49 extern int _bfd_xcoff_sizeof_headers (bfd *, struct bfd_link_info *); | 49 extern int _bfd_xcoff_sizeof_headers (bfd *, struct bfd_link_info *); |
50 extern void _bfd_xcoff_swap_sym_in (bfd *, PTR, PTR); | 50 extern void _bfd_xcoff_swap_sym_in (bfd *, void *, void *); |
51 extern unsigned int _bfd_xcoff_swap_sym_out (bfd *, PTR, PTR); | 51 extern unsigned int _bfd_xcoff_swap_sym_out (bfd *, void *, void *); |
52 extern void _bfd_xcoff_swap_aux_in (bfd *, PTR, int, int, int, int, PTR); | 52 extern void _bfd_xcoff_swap_aux_in (bfd *, void *, int, int, int, int, void *); |
53 extern unsigned int _bfd_xcoff_swap_aux_out | 53 extern unsigned int _bfd_xcoff_swap_aux_out |
54 (bfd *, PTR, int, int, int, int, PTR); | 54 (bfd *, void *, int, int, int, int, void *); |
55 static void xcoff_swap_reloc_in (bfd *, PTR, PTR); | 55 static void xcoff_swap_reloc_in (bfd *, void *, void *); |
56 static unsigned int xcoff_swap_reloc_out (bfd *, PTR, PTR); | 56 static unsigned int xcoff_swap_reloc_out (bfd *, void *, void *); |
57 | 57 |
58 /* Forward declare xcoff_rtype2howto for coffcode.h macro. */ | 58 /* Forward declare xcoff_rtype2howto for coffcode.h macro. */ |
59 void xcoff_rtype2howto (arelent *, struct internal_reloc *); | 59 void xcoff_rtype2howto (arelent *, struct internal_reloc *); |
60 | 60 |
61 /* coffcode.h needs these to be defined. */ | 61 /* coffcode.h needs these to be defined. */ |
62 #define RS6000COFF_C 1 | 62 #define RS6000COFF_C 1 |
63 | 63 |
64 #define SELECT_RELOC(internal, howto) \ | 64 #define SELECT_RELOC(internal, howto) \ |
65 { \ | 65 { \ |
66 internal.r_type = howto->type; \ | 66 internal.r_type = howto->type; \ |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 | 122 |
123 /* The main body of code is in coffcode.h. */ | 123 /* The main body of code is in coffcode.h. */ |
124 | 124 |
125 static const char *normalize_filename (bfd *); | 125 static const char *normalize_filename (bfd *); |
126 static bfd_boolean xcoff_write_armap_old | 126 static bfd_boolean xcoff_write_armap_old |
127 (bfd *, unsigned int, struct orl *, unsigned int, int); | 127 (bfd *, unsigned int, struct orl *, unsigned int, int); |
128 static bfd_boolean xcoff_write_armap_big | 128 static bfd_boolean xcoff_write_armap_big |
129 (bfd *, unsigned int, struct orl *, unsigned int, int); | 129 (bfd *, unsigned int, struct orl *, unsigned int, int); |
130 static bfd_boolean xcoff_write_archive_contents_old (bfd *); | 130 static bfd_boolean xcoff_write_archive_contents_old (bfd *); |
131 static bfd_boolean xcoff_write_archive_contents_big (bfd *); | 131 static bfd_boolean xcoff_write_archive_contents_big (bfd *); |
132 static void xcoff_swap_ldhdr_in (bfd *, const PTR, struct internal_ldhdr *); | 132 static void xcoff_swap_ldhdr_in (bfd *, const void *, struct internal_ldhdr *); |
133 static void xcoff_swap_ldhdr_out (bfd *, const struct internal_ldhdr *, PTR); | 133 static void xcoff_swap_ldhdr_out (bfd *, const struct internal_ldhdr *, void *); |
134 static void xcoff_swap_ldsym_in (bfd *, const PTR, struct internal_ldsym *); | 134 static void xcoff_swap_ldsym_in (bfd *, const void *, struct internal_ldsym *); |
135 static void xcoff_swap_ldsym_out (bfd *, const struct internal_ldsym *, PTR); | 135 static void xcoff_swap_ldsym_out (bfd *, const struct internal_ldsym *, void *); |
136 static void xcoff_swap_ldrel_in (bfd *, const PTR, struct internal_ldrel *); | 136 static void xcoff_swap_ldrel_in (bfd *, const void *, struct internal_ldrel *); |
137 static void xcoff_swap_ldrel_out (bfd *, const struct internal_ldrel *, PTR); | 137 static void xcoff_swap_ldrel_out (bfd *, const struct internal_ldrel *, void *); |
138 static bfd_boolean xcoff_ppc_relocate_section | 138 static bfd_boolean xcoff_ppc_relocate_section |
139 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, | 139 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, |
140 struct internal_reloc *, struct internal_syment *, asection **); | 140 struct internal_reloc *, struct internal_syment *, asection **); |
141 static bfd_boolean _bfd_xcoff_put_ldsymbol_name | 141 static bfd_boolean _bfd_xcoff_put_ldsymbol_name |
142 (bfd *, struct xcoff_loader_info *, struct internal_ldsym *, const char *); | 142 (bfd *, struct xcoff_loader_info *, struct internal_ldsym *, const char *); |
143 static asection *xcoff_create_csect_from_smclas | 143 static asection *xcoff_create_csect_from_smclas |
144 (bfd *, union internal_auxent *, const char *); | 144 (bfd *, union internal_auxent *, const char *); |
145 static bfd_boolean xcoff_is_lineno_count_overflow (bfd *, bfd_vma); | 145 static bfd_boolean xcoff_is_lineno_count_overflow (bfd *, bfd_vma); |
146 static bfd_boolean xcoff_is_reloc_count_overflow (bfd *, bfd_vma); | 146 static bfd_boolean xcoff_is_reloc_count_overflow (bfd *, bfd_vma); |
147 static bfd_vma xcoff_loader_symbol_offset (bfd *, struct internal_ldhdr *); | 147 static bfd_vma xcoff_loader_symbol_offset (bfd *, struct internal_ldhdr *); |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 bfd_vma offset, | 441 bfd_vma offset, |
442 const char **filename_ptr, | 442 const char **filename_ptr, |
443 const char **functionname_ptr, | 443 const char **functionname_ptr, |
444 unsigned int *line_ptr) | 444 unsigned int *line_ptr) |
445 { | 445 { |
446 return coff_find_nearest_line_with_names (abfd, xcoff_debug_sections, | 446 return coff_find_nearest_line_with_names (abfd, xcoff_debug_sections, |
447 section, symbols, offset, | 447 section, symbols, offset, |
448 filename_ptr, functionname_ptr, | 448 filename_ptr, functionname_ptr, |
449 line_ptr); | 449 line_ptr); |
450 } | 450 } |
error: old chunk mismatch |
None
OLD | NEW |