68d2067666
PR 22823 bfd Fix compile time warnings generated by gcc version 8. * libbfd-in.h: Remove extraneous text from prototypes. Add prototypes for bfd_false_any, bfd_true_any, bfd_nullvoidptr_any, bfd_0_any, bfd_0u_any, bfd_0l_any, bfd_n1_any, bfd_void_any. (_bfd_generic_bfd_copy_private_bfd_data): Use vararg based dummy function. (_bfd_generic_bfd_merge_private_bfd_data): Likewise. (_bfd_generic_bfd_set_private_flags): Likewise. (_bfd_generic_bfd_copy_private_section_data): Likewise. (_bfd_generic_bfd_copy_private_symbol_data): Likewise. (_bfd_generic_bfd_copy_private_header_data): Likewise. (_bfd_generic_bfd_print_private_bfd_data): Likewise. (_bfd_noarchive_construct_extended_name_table): Likewise. (_bfd_noarchive_truncate_arname): Likewise. (_bfd_noarchive_write_ar_hdr): Likewise. (_bfd_noarchive_get_elt_at_index): Likewise. (_bfd_nosymbols_canonicalize_symtab): Likewise. (_bfd_nosymbols_print_symbol): Likewise. (_bfd_nosymbols_get_symbol_info): Likewise. (_bfd_nosymbols_get_symbol_version_string): Likewise. (_bfd_nosymbols_bfd_is_local_label_name): Likewise. (_bfd_nosymbols_bfd_is_target_special_symbol): Likewise. (_bfd_nosymbols_get_lineno): Likewise. (_bfd_nosymbols_find_nearest_line): Likewise. (_bfd_nosymbols_find_line): Likewise. (_bfd_nosymbols_find_inliner_info): Likewise. (_bfd_nosymbols_bfd_make_debug_symbol): Likewise. (_bfd_nosymbols_read_minisymbols): Likewise. (_bfd_nosymbols_minisymbol_to_symbol): Likewise. (_bfd_norelocs_bfd_reloc_type_lookup): Likewise. (_bfd_norelocs_bfd_reloc_name_lookup): Likewise. (_bfd_nowrite_set_arch_mach): Likewise. (_bfd_nowrite_set_section_contents): Likewise. (_bfd_nolink_sizeof_headers): Likewise. (_bfd_nolink_bfd_get_relocated_section_contents): Likewise. (_bfd_nolink_bfd_relax_section): Likewise. (_bfd_nolink_bfd_gc_sections): Likewise. (_bfd_nolink_bfd_lookup_section_flags): Likewise. (_bfd_nolink_bfd_merge_sections): Likewise. (_bfd_nolink_bfd_is_group_section): Likewise. (_bfd_nolink_bfd_discard_group): Likewise. (_bfd_nolink_bfd_link_hash_table_create): Likewise. (_bfd_nolink_bfd_link_add_symbols): Likewise. (_bfd_nolink_bfd_link_just_syms): Likewise. (_bfd_nolink_bfd_copy_link_hash_symbol_type): Likewise. (_bfd_nolink_bfd_final_link): Likewise. (_bfd_nolink_bfd_link_split_section): Likewise. (_bfd_nolink_section_already_linked): Likewise. (_bfd_nolink_bfd_define_common_symbol): Likewise. (_bfd_nolink_bfd_define_start_stop): Likewise. (_bfd_nodynamic_canonicalize_dynamic_symtab): Likewise. (_bfd_nodynamic_get_synthetic_symtab): Likewise. (_bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_): Likewise. (_bfd_nodynamic_canonicalize_dynamic_reloc): Likewise. * libbfd.c (bfd_false_any): New function. Like bfd_false but accepts one or more arguments. (bfd_true_any): Likewise. (bfd_nullvoidptr_any): Likewise. (bfd_0_any): Likewise. (bfd_0u_any): Likewise. (bfd_0l_any): Likewise. (_bfd_n1_any): Likewise. (bfd_void_any): Likewise. * libbfd.h (extern): Regenerate * aout-target.h (MY_bfd_is_target_special_symbol): Use vararg based dummy function. * aout-tic30.c (tic30_aout_set_arch_mach): Likewise. * binary.c (binary_get_symbol_info): Likewise. * coff-alpha.c (alpha_ecoff_backend_data): Likewise. * coff-mips.c (mips_ecoff_backend_data): Likewise. * coffcode.h (coff_set_alignment_hook): Likewise. (symname_in_debug_hook): Likewise. (bfd_coff_backend_data bigobj_swap_table): Likewise. * elf-m10300.c (elf_backend_omit_section_dynsym): Likewise. * elf32-cr16.c (elf_backend_omit_section_dynsym): Likewise. * elf32-lm32.c (elf_backend_omit_section_dynsym): Likewise. * elf32-m32r.c (elf_backend_omit_section_dynsym): Likewise. * elf32-metag.c (elf_backend_omit_section_dynsym): Likewise. * elf32-score.c (elf_backend_omit_section_dynsym): Likewise. * elf32-score7.c (elf_backend_omit_section_dynsym): Likewise. * elf32-xstormy16.c (elf_backend_omit_section_dynsym): Likewise. * elf32-xtensa.c (elf_backend_omit_section_dynsym): Likewise. * elf64-alpha.c (elf_backend_omit_section_dynsym): Likewise. * elf64-hppa.c (elf_backend_omit_section_dynsym): Likewise. * elf64-ia64-vms.c (elf_backend_omit_section_dynsym): Likewise. * elf64-mmix.c (elf_backend_omit_section_dynsym): Likewise. * elf64-sh64.c (elf_backend_omit_section_dynsym): Likewise. * elfnn-ia64.c (elf_backend_omit_section_dynsym): Likewise. * elfxx-target.h (bfd_elfNN_bfd_debug_info_accumulate): Likewise. (bfd_elfNN_bfd_make_debug_symbol): Likewise. (bfd_elfNN_bfd_merge_private_bfd_data): Likewise. (bfd_elfNN_bfd_set_private_flags): Likewise. (bfd_elfNN_bfd_is_target_special_symbol): Likewise. (elf_backend_init_index_section): Likewise. (elf_backend_allow_non_load_phdr): Likewise. * elfxx-x86.h (elf_backend_omit_section_dynsym): Likewise. * i386msdos.c (msdos_bfd_is_target_special_symbol): Likewise. * ieee.c (ieee_construct_extended_name_table): Likewise. (ieee_write_armap): Likewise. (ieee_write_ar_hdr): Likewise. (ieee_bfd_is_target_special_symbol): Likewise. * ihex.c (ihex_canonicalize_symtab): Likewise. (ihex_bfd_is_target_special_symbol): Likewise. * libaout.h (aout_32_bfd_is_target_special_symbol): Likewise. * libecoff.h (_bfd_ecoff_bfd_is_target_special_symbol): Likewise. (_bfd_ecoff_set_alignment_hook): Likewise. * mach-o-target.c (bfd_mach_o_bfd_is_target_special_symbol): Likewise. * mmo.c (mmo_bfd_is_target_special_symbol): Likewise. * nlm-target.h (nlm_bfd_is_target_special_symbol): Likewise. * oasys.c (oasys_construct_extended_name_table): Likewise. (oasys_write_armap): Likewise. (oasys_write_ar_hdr): Likewise. (oasys_bfd_is_target_special_symbol): Likewise. * pef.c (bfd_pef_bfd_is_target_special_symbol): Likewise. * plugin.c (bfd_plugin_bfd_is_target_special_symbol): Likewise. * ppcboot.c (ppcboot_bfd_is_target_special_symbol): Likewise. * som.c (som_bfd_is_target_special_symbol): Likewise. * srec.c (srec_bfd_is_target_special_symbol): Likewise. * tekhex.c (tekhex_bfd_is_target_special_symbol): Likewise. * verilog.c (verilog_bfd_is_target_special_symbol): Likewise. * versados.c (versados_bfd_is_target_special_symbol): Likewise. (versados_bfd_reloc_name_lookup): Likewise. * vms-alpha.c (vms_bfd_is_target_special_symbol): Likewise. (vms_bfd_define_start_stop): Likewise. (alpha_vms_bfd_is_target_special_symbol): Likewise. * wasm-module.c (wasm_bfd_is_target_special_symbol): Likewise. * xsym.c (bfd_sym_bfd_is_target_special_symbol): Likewise. * elf32-arc.c (get_replace_function): Assign replacement function to func pointer. * elf32-i370.c (i370_noop): Update prototype. gas * config/obj-elf.c (elf_pseudo_table): Remove now redundant casts. (obj_elf_vtable_inherit): Rename to obj_elf_get_vtable_inherit. (obj_elf_vtable_inherit): New stub function that calls obj_elf_get_vtable_inherit. (obj_elf_vtable_entry): Rename to obj_elf_get_vtable_entry. (obj_elf_vtable_entry): New stub function that calls obj_elf_get_vtable_entry. * config/obj-elf.h (obj_elf_vtable_inherit): Update prototype. (obj_elf_vtable_entry) Likewise. (obj_elf_get_vtable_inherit) Likewise. (obj_elf_get_vtable_entry) Likewise. * config/tc-arm.c (md_pseudo_table): Remove now redundant cast. * config/tc-i386c (md_pseudo_table): Likewise. * config/tc-hppa.c (pa_vtable_entry): Call obj_elf_get_vtable_entry. (pa_vtable_inherit): Call obj_elf_get_vtable_inherit. * config/tc-mips.c (s_mips_file): Replace call to dwarf2_get_file with call to dwarf2_get_filename. * dwarf2dbg.c (dwarf2_directive_file): Rename to dwarf2_directive_filename. (dwarf2_directive_file): New stub function that calls dwarf2_directive_filename. * dwarf2dbg.h: Prototype dwarf2_directive_filename. opcodes * metag-dis.c (print_fmmov): Double buffer size to avoid warning about truncation of printing.
256 lines
7.3 KiB
C
256 lines
7.3 KiB
C
/* ELF object file format.
|
|
Copyright (C) 1992-2018 Free Software Foundation, Inc.
|
|
|
|
This file is part of GAS, the GNU Assembler.
|
|
|
|
GAS 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, or (at your option)
|
|
any later version.
|
|
|
|
GAS 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 GAS; see the file COPYING. If not, write to the Free
|
|
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
|
02110-1301, USA. */
|
|
|
|
/* HP PA-RISC support was contributed by the Center for Software Science
|
|
at the University of Utah. */
|
|
|
|
#ifndef _OBJ_ELF_H
|
|
#define _OBJ_ELF_H
|
|
|
|
#define OBJ_ELF 1
|
|
|
|
/* Note that all macros in this file should be wrapped in #ifndef, for
|
|
sake of obj-multi.h which includes this file. */
|
|
|
|
#ifndef OUTPUT_FLAVOR
|
|
#define OUTPUT_FLAVOR bfd_target_elf_flavour
|
|
#endif
|
|
|
|
#define BYTES_IN_WORD 4 /* for now */
|
|
#include "bfd/elf-bfd.h"
|
|
|
|
#include "targ-cpu.h"
|
|
|
|
#ifdef TC_ALPHA
|
|
#define ECOFF_DEBUGGING (alpha_flag_mdebug > 0)
|
|
extern int alpha_flag_mdebug;
|
|
#endif
|
|
|
|
/* For now, always set ECOFF_DEBUGGING for a MIPS target. */
|
|
#ifdef TC_MIPS
|
|
#define ECOFF_DEBUGGING mips_flag_mdebug
|
|
extern int mips_flag_mdebug;
|
|
#endif /* TC_MIPS */
|
|
|
|
#ifdef OBJ_MAYBE_ECOFF
|
|
#ifndef ECOFF_DEBUGGING
|
|
#define ECOFF_DEBUGGING 1
|
|
#endif
|
|
#endif
|
|
|
|
/* Additional information we keep for each symbol. */
|
|
struct elf_obj_sy
|
|
{
|
|
/* Whether the symbol has been marked as local. */
|
|
int local;
|
|
|
|
/* Use this to keep track of .size expressions that involve
|
|
differences that we can't compute yet. */
|
|
expressionS *size;
|
|
|
|
/* The name specified by the .symver directive. */
|
|
char *versioned_name;
|
|
|
|
#ifdef ECOFF_DEBUGGING
|
|
/* If we are generating ECOFF debugging information, we need some
|
|
additional fields for each symbol. */
|
|
struct efdr *ecoff_file;
|
|
struct localsym *ecoff_symbol;
|
|
valueT ecoff_extern_size;
|
|
#endif
|
|
};
|
|
|
|
#define OBJ_SYMFIELD_TYPE struct elf_obj_sy
|
|
|
|
#ifndef FALSE
|
|
#define FALSE 0
|
|
#define TRUE !FALSE
|
|
#endif
|
|
|
|
#ifndef obj_begin
|
|
#define obj_begin() elf_begin ()
|
|
#endif
|
|
extern void elf_begin (void);
|
|
|
|
#ifndef LOCAL_LABEL_PREFIX
|
|
#define LOCAL_LABEL_PREFIX '.'
|
|
#endif
|
|
|
|
/* should be conditional on address size! */
|
|
#define elf_symbol(asymbol) ((elf_symbol_type *) (&(asymbol)->the_bfd))
|
|
|
|
#ifndef S_GET_SIZE
|
|
#define S_GET_SIZE(S) \
|
|
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_size)
|
|
#endif
|
|
#ifndef S_SET_SIZE
|
|
#define S_SET_SIZE(S,V) \
|
|
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_size = (V))
|
|
#endif
|
|
|
|
#ifndef S_GET_ALIGN
|
|
#define S_GET_ALIGN(S) \
|
|
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value)
|
|
#endif
|
|
#ifndef S_SET_ALIGN
|
|
#define S_SET_ALIGN(S,V) \
|
|
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value = (V))
|
|
#endif
|
|
|
|
int elf_s_get_other (symbolS *);
|
|
#ifndef S_GET_OTHER
|
|
#define S_GET_OTHER(S) (elf_s_get_other (S))
|
|
#endif
|
|
#ifndef S_SET_OTHER
|
|
#define S_SET_OTHER(S,V) \
|
|
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_other = (V))
|
|
#endif
|
|
|
|
extern asection *gdb_section;
|
|
|
|
#ifndef obj_frob_file
|
|
#define obj_frob_file elf_frob_file
|
|
#endif
|
|
extern void elf_frob_file (void);
|
|
|
|
#ifndef obj_frob_file_before_adjust
|
|
#define obj_frob_file_before_adjust elf_frob_file_before_adjust
|
|
#endif
|
|
extern void elf_frob_file_before_adjust (void);
|
|
|
|
#ifndef obj_frob_file_after_relocs
|
|
#define obj_frob_file_after_relocs elf_frob_file_after_relocs
|
|
#endif
|
|
extern void elf_frob_file_after_relocs (void);
|
|
|
|
/* If the target doesn't have special processing for labels, take care of
|
|
dwarf2 output at the object file level. */
|
|
#ifndef tc_frob_label
|
|
#include "dwarf2dbg.h"
|
|
#define obj_frob_label dwarf2_emit_label
|
|
#endif
|
|
|
|
#ifndef obj_app_file
|
|
#define obj_app_file elf_file_symbol
|
|
#endif
|
|
extern void elf_file_symbol (const char *, int);
|
|
|
|
extern void obj_elf_section_change_hook (void);
|
|
|
|
extern void obj_elf_section (int);
|
|
extern const char * obj_elf_section_name (void);
|
|
extern void obj_elf_previous (int);
|
|
extern void obj_elf_version (int);
|
|
extern void obj_elf_common (int);
|
|
extern void obj_elf_data (int);
|
|
extern void obj_elf_text (int);
|
|
extern void obj_elf_change_section
|
|
(const char *, unsigned int, unsigned int, bfd_vma, int, const char *,
|
|
int, int);
|
|
extern void obj_elf_vtable_inherit (int);
|
|
extern void obj_elf_vtable_entry (int);
|
|
extern struct fix * obj_elf_get_vtable_inherit (void);
|
|
extern struct fix * obj_elf_get_vtable_entry (void);
|
|
extern bfd_boolean obj_elf_seen_attribute
|
|
(int, unsigned int);
|
|
extern int obj_elf_vendor_attribute (int);
|
|
|
|
/* BFD wants to write the udata field, which is a no-no for the
|
|
predefined section symbols in bfd/section.c. They are read-only. */
|
|
#ifndef obj_sec_sym_ok_for_reloc
|
|
#define obj_sec_sym_ok_for_reloc(SEC) ((SEC)->owner != 0)
|
|
#endif
|
|
|
|
void elf_obj_read_begin_hook (void);
|
|
#ifndef obj_read_begin_hook
|
|
#define obj_read_begin_hook elf_obj_read_begin_hook
|
|
#endif
|
|
|
|
void elf_obj_symbol_new_hook (symbolS *);
|
|
#ifndef obj_symbol_new_hook
|
|
#define obj_symbol_new_hook elf_obj_symbol_new_hook
|
|
#endif
|
|
|
|
void elf_copy_symbol_attributes (symbolS *, symbolS *);
|
|
#ifndef OBJ_COPY_SYMBOL_ATTRIBUTES
|
|
#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \
|
|
(elf_copy_symbol_attributes (DEST, SRC))
|
|
#endif
|
|
|
|
void elf_adjust_symtab (void);
|
|
#ifndef obj_adjust_symtab
|
|
#define obj_adjust_symtab elf_adjust_symtab
|
|
#endif
|
|
|
|
#ifndef SEPARATE_STAB_SECTIONS
|
|
/* Avoid ifndef each separate macro setting by wrapping the whole of the
|
|
stab group on the assumption that whoever sets SEPARATE_STAB_SECTIONS
|
|
caters to ECOFF_DEBUGGING and the right setting of INIT_STAB_SECTIONS
|
|
and OBJ_PROCESS_STAB too, without needing the tweaks below. */
|
|
|
|
/* Stabs go in a separate section. */
|
|
#define SEPARATE_STAB_SECTIONS 1
|
|
|
|
/* We need 12 bytes at the start of the section to hold some initial
|
|
information. */
|
|
extern void obj_elf_init_stab_section (segT);
|
|
#define INIT_STAB_SECTION(seg) obj_elf_init_stab_section (seg)
|
|
|
|
#ifdef ECOFF_DEBUGGING
|
|
/* We smuggle stabs in ECOFF rather than using a separate section.
|
|
The Irix linker can not handle a separate stabs section. */
|
|
|
|
#undef SEPARATE_STAB_SECTIONS
|
|
#define SEPARATE_STAB_SECTIONS (!ECOFF_DEBUGGING)
|
|
|
|
#undef INIT_STAB_SECTION
|
|
#define INIT_STAB_SECTION(seg) \
|
|
((void) (ECOFF_DEBUGGING ? 0 : (obj_elf_init_stab_section (seg), 0)))
|
|
|
|
#undef OBJ_PROCESS_STAB
|
|
#define OBJ_PROCESS_STAB(seg, what, string, type, other, desc) \
|
|
if (ECOFF_DEBUGGING) \
|
|
ecoff_stab ((seg), (what), (string), (type), (other), (desc))
|
|
#endif /* ECOFF_DEBUGGING */
|
|
|
|
#endif /* SEPARATE_STAB_SECTIONS not defined. */
|
|
|
|
extern void elf_frob_symbol (symbolS *, int *);
|
|
#ifndef obj_frob_symbol
|
|
#define obj_frob_symbol(symp, punt) elf_frob_symbol (symp, &punt)
|
|
#endif
|
|
|
|
extern void elf_pop_insert (void);
|
|
#ifndef obj_pop_insert
|
|
#define obj_pop_insert() elf_pop_insert()
|
|
#endif
|
|
|
|
#ifndef OBJ_MAYBE_ELF
|
|
/* If OBJ_MAYBE_ELF then obj-multi.h will define obj_ecoff_set_ext. */
|
|
#define obj_ecoff_set_ext elf_ecoff_set_ext
|
|
struct ecoff_extr;
|
|
extern void elf_ecoff_set_ext (symbolS *, struct ecoff_extr *);
|
|
#endif
|
|
extern asection *elf_com_section_ptr;
|
|
extern symbolS * elf_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP,
|
|
addressT size);
|
|
|
|
#endif /* _OBJ_ELF_H */
|