2003-09-26 Matt Thomas <matt@3am-software.com>
[deliverable/binutils-gdb.git] / gas / config / obj-elf.h
index 37004d7432396a0c77563dd25b84529f17df6f7a..641a37320dcd932f7b9348525ba3daf164c9657d 100644 (file)
@@ -1,5 +1,5 @@
 /* ELF object file format.
 /* ELF object file format.
-   Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
+   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 #include "targ-cpu.h"
 
 #ifdef TC_ALPHA
 #include "targ-cpu.h"
 
 #ifdef TC_ALPHA
-#define ECOFF_DEBUGGING alpha_flag_mdebug
+#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
 extern int alpha_flag_mdebug;
 #endif
 
 /* For now, always set ECOFF_DEBUGGING for a MIPS target.  */
 #ifdef TC_MIPS
-#ifdef MIPS_STABS_ELF
-#define ECOFF_DEBUGGING 0
-#else
-#define ECOFF_DEBUGGING 1
-#endif /* MIPS_STABS_ELF */
+#define ECOFF_DEBUGGING mips_flag_mdebug
+extern int mips_flag_mdebug;
 #endif /* TC_MIPS */
 
 #ifdef OBJ_MAYBE_ECOFF
 #endif /* TC_MIPS */
 
 #ifdef OBJ_MAYBE_ECOFF
@@ -85,6 +82,16 @@ struct elf_obj_sy
 
 #define OBJ_SYMFIELD_TYPE struct elf_obj_sy
 
 
 #define OBJ_SYMFIELD_TYPE struct elf_obj_sy
 
+/* Symbol fields used by the ELF back end.  */
+#define ELF_TARGET_SYMBOL_FIELDS int local:1;
+
+/* Don't change this; change ELF_TARGET_SYMBOL_FIELDS instead.  */
+#ifndef TARGET_SYMBOL_FIELDS
+#define TARGET_SYMBOL_FIELDS ELF_TARGET_SYMBOL_FIELDS
+#endif
+
+/* #include "targ-cpu.h" */
+
 #ifndef FALSE
 #define FALSE 0
 #define TRUE  !FALSE
 #ifndef FALSE
 #define FALSE 0
 #define TRUE  !FALSE
@@ -96,7 +103,7 @@ struct elf_obj_sy
 extern void elf_begin PARAMS ((void));
 
 /* should be conditional on address size! */
 extern void elf_begin PARAMS ((void));
 
 /* should be conditional on address size! */
-#define elf_symbol(asymbol) ((elf_symbol_type *)(&(asymbol)->the_bfd))
+#define elf_symbol(asymbol) ((elf_symbol_type *) (&(asymbol)->the_bfd))
 
 #ifndef S_GET_SIZE
 #define S_GET_SIZE(S) \
 
 #ifndef S_GET_SIZE
 #define S_GET_SIZE(S) \
@@ -127,6 +134,13 @@ int elf_s_get_other PARAMS ((symbolS *));
 
 extern asection *gdb_section;
 
 
 extern asection *gdb_section;
 
+#ifndef obj_sec_set_private_data
+#define obj_sec_set_private_data(B, S) \
+  if (! BFD_SEND ((B), _new_section_hook, ((B), (S)))) \
+    as_fatal (_("can't allocate ELF private section data: %s"),        \
+             bfd_errmsg (bfd_get_error ()))
+#endif
+
 #ifndef obj_frob_file
 #define obj_frob_file  elf_frob_file
 #endif
 #ifndef obj_frob_file
 #define obj_frob_file  elf_frob_file
 #endif
@@ -155,11 +169,13 @@ extern void obj_elf_version PARAMS ((int));
 extern void obj_elf_common PARAMS ((int));
 extern void obj_elf_data PARAMS ((int));
 extern void obj_elf_text PARAMS ((int));
 extern void obj_elf_common PARAMS ((int));
 extern void obj_elf_data PARAMS ((int));
 extern void obj_elf_text PARAMS ((int));
+extern void obj_elf_change_section
+  PARAMS ((const char *, int, int, int, const char *, int, int));
 extern struct fix *obj_elf_vtable_inherit PARAMS ((int));
 extern struct fix *obj_elf_vtable_entry PARAMS ((int));
 
 /* BFD wants to write the udata field, which is a no-no for the
 extern struct fix *obj_elf_vtable_inherit PARAMS ((int));
 extern struct fix *obj_elf_vtable_entry PARAMS ((int));
 
 /* BFD wants to write the udata field, which is a no-no for the
-   globally defined sections.  */
+   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
 #ifndef obj_sec_sym_ok_for_reloc
 #define obj_sec_sym_ok_for_reloc(SEC)  ((SEC)->owner != 0)
 #endif
@@ -174,32 +190,10 @@ void elf_obj_symbol_new_hook PARAMS ((symbolS *));
 #define obj_symbol_new_hook    elf_obj_symbol_new_hook
 #endif
 
 #define obj_symbol_new_hook    elf_obj_symbol_new_hook
 #endif
 
-/* When setting one symbol equal to another, by default we probably
-   want them to have the same "size", whatever it means in the current
-   context.  */
+void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *));
 #ifndef OBJ_COPY_SYMBOL_ATTRIBUTES
 #ifndef OBJ_COPY_SYMBOL_ATTRIBUTES
-#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST,SRC)                   \
-do                                                             \
-  {                                                            \
-    struct elf_obj_sy *srcelf = symbol_get_obj (SRC);          \
-    struct elf_obj_sy *destelf = symbol_get_obj (DEST);                \
-    if (srcelf->size)                                          \
-      {                                                                \
-       if (destelf->size == NULL)                              \
-         destelf->size =                                       \
-           (expressionS *) xmalloc (sizeof (expressionS));     \
-       *destelf->size = *srcelf->size;                         \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if (destelf->size != NULL)                              \
-         free (destelf->size);                                 \
-       destelf->size = NULL;                                   \
-      }                                                                \
-    S_SET_SIZE ((DEST), S_GET_SIZE (SRC));                     \
-    S_SET_OTHER ((DEST), S_GET_OTHER (SRC));                   \
-  }                                                            \
-while (0)
+#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \
+  (elf_copy_symbol_attributes (DEST, SRC))
 #endif
 
 #ifndef SEPARATE_STAB_SECTIONS
 #endif
 
 #ifndef SEPARATE_STAB_SECTIONS
@@ -225,7 +219,7 @@ extern void obj_elf_init_stab_section PARAMS ((segT));
 
 #undef  INIT_STAB_SECTION
 #define INIT_STAB_SECTION(seg) \
 
 #undef  INIT_STAB_SECTION
 #define INIT_STAB_SECTION(seg) \
-  ((void)(ECOFF_DEBUGGING ? 0 : (obj_elf_init_stab_section (seg), 0)))
+  ((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)         \
 
 #undef OBJ_PROCESS_STAB
 #define OBJ_PROCESS_STAB(seg, what, string, type, other, desc)         \
This page took 0.028452 seconds and 4 git commands to generate.