/* If this symbol requires an entry in the global offset table, the
processor specific backend uses this field to track usage and
final offset. We use a union and two names primarily to document
- the intent of any particular piece of code. The field should be
- used as a count until size_dynamic_sections, at which point the
+ the intent of any particular piece of code. The field should be
+ used as a count until size_dynamic_sections, at which point the
contents of the .got is fixed. Afterward, if this field is -1,
then the symbol does not require a global offset table entry. */
union
struct bfd_elf_version_tree *vertree;
} verinfo;
- /* Virtual table entry use information. This array is of size
- size/sizeof(target_void_pointer), and indexed via
- offset/sizeof(void*) as well. */
+ /* Virtual table entry use information. This array is nominally of size
+ size/sizeof(target_void_pointer), though we have to be able to assume
+ and track a size while the symbol is still undefined. It is indexed
+ via offset/sizeof(target_void_pointer). */
+ size_t vtable_entries_size;
boolean *vtable_entries_used;
/* Virtual table derivation info. */
/* Symbol st_other value. */
unsigned char other;
+ /* Hash value of the name computed using the ELF hash function. */
+ unsigned long elf_hash_value;
+
/* Some flags; legal values follow. */
unsigned short elf_link_hash_flags;
/* Symbol is referenced by a non-shared object. */
#define ELF_LINK_HASH_REF_DYNAMIC 04
/* Symbol is defined by a shared object. */
#define ELF_LINK_HASH_DEF_DYNAMIC 010
+ /* Symbol has a non-weak reference from a non-shared object. */
+#define ELF_LINK_HASH_REF_REGULAR_NONWEAK 020
/* Dynamic symbol has been adjustd. */
-#define ELF_LINK_HASH_DYNAMIC_ADJUSTED 020
+#define ELF_LINK_HASH_DYNAMIC_ADJUSTED 040
/* Symbol needs a copy reloc. */
-#define ELF_LINK_HASH_NEEDS_COPY 040
+#define ELF_LINK_HASH_NEEDS_COPY 0100
/* Symbol needs a procedure linkage table entry. */
-#define ELF_LINK_HASH_NEEDS_PLT 0100
+#define ELF_LINK_HASH_NEEDS_PLT 0200
/* Symbol appears in a non-ELF input file. */
-#define ELF_LINK_NON_ELF 0200
+#define ELF_LINK_NON_ELF 0400
/* Symbol should be marked as hidden in the version information. */
-#define ELF_LINK_HIDDEN 0400
+#define ELF_LINK_HIDDEN 01000
/* Symbol was forced to local scope due to a version script file. */
-#define ELF_LINK_FORCED_LOCAL 01000
+#define ELF_LINK_FORCED_LOCAL 02000
/* Symbol was marked during garbage collection. */
-#define ELF_LINK_HASH_MARK 02000
+#define ELF_LINK_HASH_MARK 04000
};
/* ELF linker hash table. */
/* A function to set the type of the info field. Processor-specific
types should be handled here. */
- int (*elf_backend_get_symbol_type) PARAMS (( Elf_Internal_Sym *));
+ int (*elf_backend_get_symbol_type) PARAMS (( Elf_Internal_Sym *, int));
/* A function to do additional processing on the ELF section header
just before writing it out. This is used to set the flags and
unsigned int strtab_section, dynsymtab_section;
unsigned int dynversym_section, dynverdef_section, dynverref_section;
file_ptr next_file_pos;
+#if 0
+ /* we don't need these inside bfd anymore, and I think
+ these weren't used outside bfd. */
void *prstatus; /* The raw /proc prstatus structure */
void *prpsinfo; /* The raw /proc prpsinfo structure */
+#endif
bfd_vma gp; /* The gp value (MIPS only, for now) */
unsigned int gp_size; /* The gp size (MIPS only, for now) */
+ /* Information grabbed from an elf core file. */
+ int core_signal;
+ int core_pid;
+ int core_lwpid;
+ char* core_program;
+ char* core_command;
+
/* This is set to true if the object was created by the backend
linker. */
boolean linker;
should be used as a count until size_dynamic_sections, at which
point the contents of the .got is fixed. Afterward, if an entry
is -1, then the symbol does not require a global offset table entry. */
- union
+ union
{
bfd_signed_vma *refcounts;
bfd_vma *offsets;
find_nearest_line. */
struct mips_elf_find_line *find_line_info;
+ /* A place to stash dwarf1 info for this bfd. */
+ struct dwarf1_debug *dwarf1_find_line_info;
+
/* A place to stash dwarf2 info for this bfd. */
struct dwarf2_debug *dwarf2_find_line_info;
elf_linker_section_t *lsect,
int alignment));
+boolean _bfd_elfcore_section_from_phdr
+ PARAMS ((bfd *, Elf_Internal_Phdr *, int));
+
extern const bfd_target *bfd_elf32_object_p PARAMS ((bfd *));
extern const bfd_target *bfd_elf32_core_file_p PARAMS ((bfd *));
extern char *bfd_elf32_core_file_failing_command PARAMS ((bfd *));