* config/obj-elf.c: Convert to C90, remove unneeded prototypes and
casts. Formatting. * config/obj-elf.h: Remove PARAMS.
This commit is contained in:
parent
13c5698440
commit
dbe2df79e9
3 changed files with 142 additions and 214 deletions
|
@ -1,5 +1,9 @@
|
|||
2003-12-13 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* config/obj-elf.c: Convert to C90, remove unneeded prototypes and
|
||||
casts. Formatting.
|
||||
* config/obj-elf.h: Remove PARAMS.
|
||||
|
||||
* read.c (s_lcomm_internal): Make global.
|
||||
* read.h (s_lcomm_internal): Declare.
|
||||
* config/obj-elf.c (elf_pseudo_table): Handle lcomm.
|
||||
|
|
|
@ -53,38 +53,17 @@
|
|||
#include "elf/i370.h"
|
||||
#endif
|
||||
|
||||
static bfd_vma elf_s_get_size PARAMS ((symbolS *));
|
||||
static void elf_s_set_size PARAMS ((symbolS *, bfd_vma));
|
||||
static bfd_vma elf_s_get_align PARAMS ((symbolS *));
|
||||
static void elf_s_set_align PARAMS ((symbolS *, bfd_vma));
|
||||
static void elf_s_set_other PARAMS ((symbolS *, int));
|
||||
static int elf_sec_sym_ok_for_reloc PARAMS ((asection *));
|
||||
static void adjust_stab_sections PARAMS ((bfd *, asection *, PTR));
|
||||
static void build_group_lists PARAMS ((bfd *, asection *, PTR));
|
||||
static int elf_separate_stab_sections PARAMS ((void));
|
||||
static void elf_init_stab_section PARAMS ((segT));
|
||||
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
static bfd_boolean elf_get_extr PARAMS ((asymbol *, EXTR *));
|
||||
static void elf_set_index PARAMS ((asymbol *, bfd_size_type));
|
||||
#endif
|
||||
|
||||
static void obj_elf_line PARAMS ((int));
|
||||
void obj_elf_version PARAMS ((int));
|
||||
static void obj_elf_size PARAMS ((int));
|
||||
static void obj_elf_type PARAMS ((int));
|
||||
static void obj_elf_ident PARAMS ((int));
|
||||
static void obj_elf_weak PARAMS ((int));
|
||||
static void obj_elf_local PARAMS ((int));
|
||||
static void obj_elf_visibility PARAMS ((int));
|
||||
static int obj_elf_parse_section_letters PARAMS ((char *, size_t));
|
||||
static int obj_elf_section_word PARAMS ((char *, size_t));
|
||||
static char *obj_elf_section_name PARAMS ((void));
|
||||
static int obj_elf_section_type PARAMS ((char *, size_t));
|
||||
static void obj_elf_symver PARAMS ((int));
|
||||
static void obj_elf_subsection PARAMS ((int));
|
||||
static void obj_elf_popsection PARAMS ((int));
|
||||
static void obj_elf_tls_common PARAMS ((int));
|
||||
static void obj_elf_line (int);
|
||||
static void obj_elf_size (int);
|
||||
static void obj_elf_type (int);
|
||||
static void obj_elf_ident (int);
|
||||
static void obj_elf_weak (int);
|
||||
static void obj_elf_local (int);
|
||||
static void obj_elf_visibility (int);
|
||||
static void obj_elf_symver (int);
|
||||
static void obj_elf_subsection (int);
|
||||
static void obj_elf_popsection (int);
|
||||
static void obj_elf_tls_common (int);
|
||||
static void obj_elf_lcomm (int);
|
||||
|
||||
static const pseudo_typeS elf_pseudo_table[] =
|
||||
|
@ -121,15 +100,15 @@ static const pseudo_typeS elf_pseudo_table[] =
|
|||
{"subsection", obj_elf_subsection, 0},
|
||||
|
||||
/* These are GNU extensions to aid in garbage collecting C++ vtables. */
|
||||
{"vtable_inherit", (void (*) PARAMS ((int))) &obj_elf_vtable_inherit, 0},
|
||||
{"vtable_entry", (void (*) PARAMS ((int))) &obj_elf_vtable_entry, 0},
|
||||
{"vtable_inherit", (void (*) (int)) &obj_elf_vtable_inherit, 0},
|
||||
{"vtable_entry", (void (*) (int)) &obj_elf_vtable_entry, 0},
|
||||
|
||||
/* These are used for dwarf. */
|
||||
{"2byte", cons, 2},
|
||||
{"4byte", cons, 4},
|
||||
{"8byte", cons, 8},
|
||||
/* These are used for dwarf2. */
|
||||
{ "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
|
||||
{ "file", (void (*) (int)) dwarf2_directive_file, 0 },
|
||||
{ "loc", dwarf2_directive_loc, 0 },
|
||||
|
||||
/* We need to trap the section changing calls to handle .previous. */
|
||||
|
@ -193,19 +172,21 @@ static const pseudo_typeS ecoff_debug_pseudo_table[] =
|
|||
/* This is called when the assembler starts. */
|
||||
|
||||
void
|
||||
elf_begin ()
|
||||
elf_begin (void)
|
||||
{
|
||||
asection *s;
|
||||
|
||||
/* Add symbols for the known sections to the symbol table. */
|
||||
symbol_table_insert (section_symbol (bfd_get_section_by_name (stdoutput,
|
||||
TEXT_SECTION_NAME)));
|
||||
symbol_table_insert (section_symbol (bfd_get_section_by_name (stdoutput,
|
||||
DATA_SECTION_NAME)));
|
||||
symbol_table_insert (section_symbol (bfd_get_section_by_name (stdoutput,
|
||||
BSS_SECTION_NAME)));
|
||||
s = bfd_get_section_by_name (stdoutput, TEXT_SECTION_NAME);
|
||||
symbol_table_insert (section_symbol (s));
|
||||
s = bfd_get_section_by_name (stdoutput, DATA_SECTION_NAME);
|
||||
symbol_table_insert (section_symbol (s));
|
||||
s = bfd_get_section_by_name (stdoutput, BSS_SECTION_NAME);
|
||||
symbol_table_insert (section_symbol (s));
|
||||
}
|
||||
|
||||
void
|
||||
elf_pop_insert ()
|
||||
elf_pop_insert (void)
|
||||
{
|
||||
pop_insert (elf_pseudo_table);
|
||||
if (ECOFF_DEBUGGING)
|
||||
|
@ -213,64 +194,53 @@ elf_pop_insert ()
|
|||
}
|
||||
|
||||
static bfd_vma
|
||||
elf_s_get_size (sym)
|
||||
symbolS *sym;
|
||||
elf_s_get_size (symbolS *sym)
|
||||
{
|
||||
return S_GET_SIZE (sym);
|
||||
}
|
||||
|
||||
static void
|
||||
elf_s_set_size (sym, sz)
|
||||
symbolS *sym;
|
||||
bfd_vma sz;
|
||||
elf_s_set_size (symbolS *sym, bfd_vma sz)
|
||||
{
|
||||
S_SET_SIZE (sym, sz);
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
elf_s_get_align (sym)
|
||||
symbolS *sym;
|
||||
elf_s_get_align (symbolS *sym)
|
||||
{
|
||||
return S_GET_ALIGN (sym);
|
||||
}
|
||||
|
||||
static void
|
||||
elf_s_set_align (sym, align)
|
||||
symbolS *sym;
|
||||
bfd_vma align;
|
||||
elf_s_set_align (symbolS *sym, bfd_vma align)
|
||||
{
|
||||
S_SET_ALIGN (sym, align);
|
||||
}
|
||||
|
||||
int
|
||||
elf_s_get_other (sym)
|
||||
symbolS *sym;
|
||||
elf_s_get_other (symbolS *sym)
|
||||
{
|
||||
return elf_symbol (symbol_get_bfdsym (sym))->internal_elf_sym.st_other;
|
||||
}
|
||||
|
||||
static void
|
||||
elf_s_set_other (sym, other)
|
||||
symbolS *sym;
|
||||
int other;
|
||||
elf_s_set_other (symbolS *sym, int other)
|
||||
{
|
||||
S_SET_OTHER (sym, other);
|
||||
}
|
||||
|
||||
static int
|
||||
elf_sec_sym_ok_for_reloc (sec)
|
||||
asection *sec;
|
||||
elf_sec_sym_ok_for_reloc (asection *sec)
|
||||
{
|
||||
return obj_sec_sym_ok_for_reloc (sec);
|
||||
}
|
||||
|
||||
void
|
||||
elf_file_symbol (s)
|
||||
const char *s;
|
||||
elf_file_symbol (const char *s)
|
||||
{
|
||||
symbolS *sym;
|
||||
|
||||
sym = symbol_new (s, absolute_section, (valueT) 0, (struct frag *) 0);
|
||||
sym = symbol_new (s, absolute_section, 0, NULL);
|
||||
symbol_set_frag (sym, &zero_address_frag);
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_FILE;
|
||||
|
||||
|
@ -364,8 +334,7 @@ elf_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP, addressT size)
|
|||
}
|
||||
|
||||
void
|
||||
obj_elf_common (is_common)
|
||||
int is_common;
|
||||
obj_elf_common (int is_common)
|
||||
{
|
||||
if (flag_mri && is_common)
|
||||
s_mri_common (0);
|
||||
|
@ -374,8 +343,7 @@ obj_elf_common (is_common)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_tls_common (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_tls_common (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
symbolS *symbolP = s_comm_internal (0, elf_common_parse);
|
||||
|
||||
|
@ -393,8 +361,7 @@ obj_elf_lcomm (int ignore ATTRIBUTE_UNUSED)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_local (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_local (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
int c;
|
||||
|
@ -422,8 +389,7 @@ obj_elf_local (ignore)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_weak (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_weak (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
int c;
|
||||
|
@ -451,8 +417,7 @@ obj_elf_weak (ignore)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_visibility (visibility)
|
||||
int visibility;
|
||||
obj_elf_visibility (int visibility)
|
||||
{
|
||||
char *name;
|
||||
int c;
|
||||
|
@ -523,14 +488,13 @@ static struct section_stack *section_stack;
|
|||
BFD doesn't really let us set the section type. */
|
||||
|
||||
void
|
||||
obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push)
|
||||
const char *name;
|
||||
int type;
|
||||
int attr;
|
||||
int entsize;
|
||||
const char *group_name;
|
||||
int linkonce;
|
||||
int push;
|
||||
obj_elf_change_section (const char *name,
|
||||
int type,
|
||||
int attr,
|
||||
int entsize,
|
||||
const char *group_name,
|
||||
int linkonce,
|
||||
int push)
|
||||
{
|
||||
asection *old_sec;
|
||||
segT sec;
|
||||
|
@ -691,9 +655,7 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push)
|
|||
}
|
||||
|
||||
static int
|
||||
obj_elf_parse_section_letters (str, len)
|
||||
char *str;
|
||||
size_t len;
|
||||
obj_elf_parse_section_letters (char *str, size_t len)
|
||||
{
|
||||
int attr = 0;
|
||||
|
||||
|
@ -754,9 +716,7 @@ obj_elf_parse_section_letters (str, len)
|
|||
}
|
||||
|
||||
static int
|
||||
obj_elf_section_word (str, len)
|
||||
char *str;
|
||||
size_t len;
|
||||
obj_elf_section_word (char *str, size_t len)
|
||||
{
|
||||
if (len == 5 && strncmp (str, "write", 5) == 0)
|
||||
return SHF_WRITE;
|
||||
|
@ -780,9 +740,7 @@ obj_elf_section_word (str, len)
|
|||
}
|
||||
|
||||
static int
|
||||
obj_elf_section_type (str, len)
|
||||
char *str;
|
||||
size_t len;
|
||||
obj_elf_section_type (char *str, size_t len)
|
||||
{
|
||||
if (len == 8 && strncmp (str, "progbits", 8) == 0)
|
||||
return SHT_PROGBITS;
|
||||
|
@ -805,7 +763,7 @@ obj_elf_section_type (str, len)
|
|||
|
||||
/* Get name of section. */
|
||||
static char *
|
||||
obj_elf_section_name ()
|
||||
obj_elf_section_name (void)
|
||||
{
|
||||
char *name;
|
||||
|
||||
|
@ -847,8 +805,7 @@ obj_elf_section_name ()
|
|||
}
|
||||
|
||||
void
|
||||
obj_elf_section (push)
|
||||
int push;
|
||||
obj_elf_section (int push)
|
||||
{
|
||||
char *name, *group_name, *beg;
|
||||
int type, attr, dummy;
|
||||
|
@ -1006,8 +963,7 @@ obj_elf_section (push)
|
|||
/* Change to the .data section. */
|
||||
|
||||
void
|
||||
obj_elf_data (i)
|
||||
int i;
|
||||
obj_elf_data (int i)
|
||||
{
|
||||
#ifdef md_flush_pending_output
|
||||
md_flush_pending_output ();
|
||||
|
@ -1025,8 +981,7 @@ obj_elf_data (i)
|
|||
/* Change to the .text section. */
|
||||
|
||||
void
|
||||
obj_elf_text (i)
|
||||
int i;
|
||||
obj_elf_text (int i)
|
||||
{
|
||||
#ifdef md_flush_pending_output
|
||||
md_flush_pending_output ();
|
||||
|
@ -1042,8 +997,7 @@ obj_elf_text (i)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_subsection (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_subsection (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
register int temp;
|
||||
|
||||
|
@ -1067,15 +1021,14 @@ obj_elf_subsection (ignore)
|
|||
sections. */
|
||||
|
||||
void
|
||||
obj_elf_section_change_hook ()
|
||||
obj_elf_section_change_hook (void)
|
||||
{
|
||||
previous_section = now_seg;
|
||||
previous_subsection = now_subseg;
|
||||
}
|
||||
|
||||
void
|
||||
obj_elf_previous (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_previous (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
segT new_section;
|
||||
int new_subsection;
|
||||
|
@ -1102,8 +1055,7 @@ obj_elf_previous (ignore)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_popsection (xxx)
|
||||
int xxx ATTRIBUTE_UNUSED;
|
||||
obj_elf_popsection (int xxx ATTRIBUTE_UNUSED)
|
||||
{
|
||||
struct section_stack *top = section_stack;
|
||||
|
||||
|
@ -1129,12 +1081,11 @@ obj_elf_popsection (xxx)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_line (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_line (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* Assume delimiter is part of expression. BSD4.2 as fails with
|
||||
delightful bug, so we are not being incompatible here. */
|
||||
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
|
||||
new_logical_line (NULL, get_absolute_expression ());
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
|
@ -1145,8 +1096,7 @@ obj_elf_line (ignore)
|
|||
with the same value as the symbol NAME. */
|
||||
|
||||
static void
|
||||
obj_elf_symver (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_symver (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
char c;
|
||||
|
@ -1216,8 +1166,7 @@ obj_elf_symver (ignore)
|
|||
syntax is ".vtable_inherit CHILDNAME, PARENTNAME". */
|
||||
|
||||
struct fix *
|
||||
obj_elf_vtable_inherit (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_vtable_inherit (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *cname, *pname;
|
||||
symbolS *csym, *psym;
|
||||
|
@ -1288,8 +1237,7 @@ obj_elf_vtable_inherit (ignore)
|
|||
".vtable_entry tablename, offset". */
|
||||
|
||||
struct fix *
|
||||
obj_elf_vtable_entry (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_vtable_entry (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
symbolS *sym;
|
||||
|
@ -1325,7 +1273,7 @@ obj_elf_vtable_entry (ignore)
|
|||
}
|
||||
|
||||
void
|
||||
elf_obj_read_begin_hook ()
|
||||
elf_obj_read_begin_hook (void)
|
||||
{
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
if (ECOFF_DEBUGGING)
|
||||
|
@ -1334,8 +1282,7 @@ elf_obj_read_begin_hook ()
|
|||
}
|
||||
|
||||
void
|
||||
elf_obj_symbol_new_hook (symbolP)
|
||||
symbolS *symbolP;
|
||||
elf_obj_symbol_new_hook (symbolS *symbolP)
|
||||
{
|
||||
struct elf_obj_sy *sy_obj;
|
||||
|
||||
|
@ -1354,16 +1301,14 @@ elf_obj_symbol_new_hook (symbolP)
|
|||
context. */
|
||||
|
||||
void
|
||||
elf_copy_symbol_attributes (dest, src)
|
||||
symbolS *dest, *src;
|
||||
elf_copy_symbol_attributes (symbolS *dest, symbolS *src)
|
||||
{
|
||||
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 = xmalloc (sizeof (expressionS));
|
||||
*destelf->size = *srcelf->size;
|
||||
}
|
||||
else
|
||||
|
@ -1379,8 +1324,7 @@ elf_copy_symbol_attributes (dest, src)
|
|||
}
|
||||
|
||||
void
|
||||
obj_elf_version (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_version (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
unsigned int c;
|
||||
|
@ -1389,7 +1333,7 @@ obj_elf_version (ignore)
|
|||
subsegT subseg = now_subseg;
|
||||
Elf_Internal_Note i_note;
|
||||
Elf_External_Note e_note;
|
||||
asection *note_secp = (asection *) NULL;
|
||||
asection *note_secp = NULL;
|
||||
int len;
|
||||
|
||||
SKIP_WHITESPACE ();
|
||||
|
@ -1420,11 +1364,11 @@ obj_elf_version (ignore)
|
|||
i_note.descsz = 0; /* no description */
|
||||
i_note.type = NT_VERSION;
|
||||
p = frag_more (sizeof (e_note.namesz));
|
||||
md_number_to_chars (p, (valueT) i_note.namesz, sizeof (e_note.namesz));
|
||||
md_number_to_chars (p, i_note.namesz, sizeof (e_note.namesz));
|
||||
p = frag_more (sizeof (e_note.descsz));
|
||||
md_number_to_chars (p, (valueT) i_note.descsz, sizeof (e_note.descsz));
|
||||
md_number_to_chars (p, i_note.descsz, sizeof (e_note.descsz));
|
||||
p = frag_more (sizeof (e_note.type));
|
||||
md_number_to_chars (p, (valueT) i_note.type, sizeof (e_note.type));
|
||||
md_number_to_chars (p, i_note.type, sizeof (e_note.type));
|
||||
p = frag_more (len + 1);
|
||||
strcpy (p, name);
|
||||
|
||||
|
@ -1440,8 +1384,7 @@ obj_elf_version (ignore)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_size (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_size (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name = input_line_pointer;
|
||||
char c = get_symbol_end ();
|
||||
|
@ -1482,8 +1425,7 @@ obj_elf_size (ignore)
|
|||
}
|
||||
else
|
||||
{
|
||||
symbol_get_obj (sym)->size =
|
||||
(expressionS *) xmalloc (sizeof (expressionS));
|
||||
symbol_get_obj (sym)->size = xmalloc (sizeof (expressionS));
|
||||
*symbol_get_obj (sym)->size = exp;
|
||||
}
|
||||
demand_empty_rest_of_line ();
|
||||
|
@ -1505,8 +1447,7 @@ obj_elf_size (ignore)
|
|||
*/
|
||||
|
||||
static void
|
||||
obj_elf_type (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_type (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
char c;
|
||||
|
@ -1566,8 +1507,7 @@ obj_elf_type (ignore)
|
|||
}
|
||||
|
||||
static void
|
||||
obj_elf_ident (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
obj_elf_ident (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static segT comment_section;
|
||||
segT old_section = now_seg;
|
||||
|
@ -1597,8 +1537,7 @@ obj_elf_ident (ignore)
|
|||
/* The first entry in a .stabs section is special. */
|
||||
|
||||
void
|
||||
obj_elf_init_stab_section (seg)
|
||||
segT seg;
|
||||
obj_elf_init_stab_section (segT seg)
|
||||
{
|
||||
char *file;
|
||||
char *p;
|
||||
|
@ -1613,8 +1552,8 @@ obj_elf_init_stab_section (seg)
|
|||
p = frag_more (12);
|
||||
/* Zero it out. */
|
||||
memset (p, 0, 12);
|
||||
as_where (&file, (unsigned int *) NULL);
|
||||
stabstr_name = (char *) xmalloc (strlen (segment_name (seg)) + 4);
|
||||
as_where (&file, NULL);
|
||||
stabstr_name = xmalloc (strlen (segment_name (seg)) + 4);
|
||||
strcpy (stabstr_name, segment_name (seg));
|
||||
strcat (stabstr_name, "str");
|
||||
stroff = get_stab_string_offset (file, stabstr_name);
|
||||
|
@ -1628,10 +1567,7 @@ obj_elf_init_stab_section (seg)
|
|||
/* Fill in the counts in the first entry in a .stabs section. */
|
||||
|
||||
static void
|
||||
adjust_stab_sections (abfd, sec, xxx)
|
||||
bfd *abfd;
|
||||
asection *sec;
|
||||
PTR xxx ATTRIBUTE_UNUSED;
|
||||
adjust_stab_sections (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
asection *strsec;
|
||||
|
@ -1643,7 +1579,7 @@ adjust_stab_sections (abfd, sec, xxx)
|
|||
if (!strcmp ("str", sec->name + strlen (sec->name) - 3))
|
||||
return;
|
||||
|
||||
name = (char *) alloca (strlen (sec->name) + 4);
|
||||
name = alloca (strlen (sec->name) + 4);
|
||||
strcpy (name, sec->name);
|
||||
strcat (name, "str");
|
||||
strsec = bfd_get_section_by_name (abfd, name);
|
||||
|
@ -1656,8 +1592,8 @@ adjust_stab_sections (abfd, sec, xxx)
|
|||
p = seg_info (sec)->stabu.p;
|
||||
assert (p != 0);
|
||||
|
||||
bfd_h_put_16 (abfd, (bfd_vma) nsyms, (bfd_byte *) p + 6);
|
||||
bfd_h_put_32 (abfd, (bfd_vma) strsz, (bfd_byte *) p + 8);
|
||||
bfd_h_put_16 (abfd, nsyms, p + 6);
|
||||
bfd_h_put_32 (abfd, strsz, p + 8);
|
||||
}
|
||||
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
|
@ -1669,11 +1605,9 @@ adjust_stab_sections (abfd, sec, xxx)
|
|||
in the symbol. */
|
||||
|
||||
void
|
||||
elf_ecoff_set_ext (sym, ext)
|
||||
symbolS *sym;
|
||||
struct ecoff_extr *ext;
|
||||
elf_ecoff_set_ext (symbolS *sym, struct ecoff_extr *ext)
|
||||
{
|
||||
symbol_get_bfdsym (sym)->udata.p = (PTR) ext;
|
||||
symbol_get_bfdsym (sym)->udata.p = ext;
|
||||
}
|
||||
|
||||
/* This function is called by bfd_ecoff_debug_externals. It is
|
||||
|
@ -1681,9 +1615,7 @@ elf_ecoff_set_ext (sym, ext)
|
|||
whether the symbol should be used at all. */
|
||||
|
||||
static bfd_boolean
|
||||
elf_get_extr (sym, ext)
|
||||
asymbol *sym;
|
||||
EXTR *ext;
|
||||
elf_get_extr (asymbol *sym, EXTR *ext)
|
||||
{
|
||||
if (sym->udata.p == NULL)
|
||||
return FALSE;
|
||||
|
@ -1695,18 +1627,15 @@ elf_get_extr (sym, ext)
|
|||
nothing to do for ELF. */
|
||||
|
||||
static void
|
||||
elf_set_index (sym, indx)
|
||||
asymbol *sym ATTRIBUTE_UNUSED;
|
||||
bfd_size_type indx ATTRIBUTE_UNUSED;
|
||||
elf_set_index (asymbol *sym ATTRIBUTE_UNUSED,
|
||||
bfd_size_type indx ATTRIBUTE_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* NEED_ECOFF_DEBUG */
|
||||
|
||||
void
|
||||
elf_frob_symbol (symp, puntp)
|
||||
symbolS *symp;
|
||||
int *puntp;
|
||||
elf_frob_symbol (symbolS *symp, int *puntp)
|
||||
{
|
||||
struct elf_obj_sy *sy_obj;
|
||||
|
||||
|
@ -1773,14 +1702,14 @@ elf_frob_symbol (symp, puntp)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (p [1] == ELF_VER_CHR && p [2] == ELF_VER_CHR)
|
||||
if (p[1] == ELF_VER_CHR && p[2] == ELF_VER_CHR)
|
||||
{
|
||||
size_t l;
|
||||
|
||||
/* The @@@ syntax is a special case. It renames the
|
||||
symbol name to versioned_name with one `@' removed. */
|
||||
l = strlen (&p[3]) + 1;
|
||||
memmove (&p [2], &p[3], l);
|
||||
memmove (&p[2], &p[3], l);
|
||||
S_SET_NAME (symp, sy_obj->versioned_name);
|
||||
}
|
||||
else
|
||||
|
@ -1872,12 +1801,9 @@ struct group_list
|
|||
each list. */
|
||||
|
||||
static void
|
||||
build_group_lists (abfd, sec, inf)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
asection *sec;
|
||||
PTR inf;
|
||||
build_group_lists (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf)
|
||||
{
|
||||
struct group_list *list = (struct group_list *) inf;
|
||||
struct group_list *list = inf;
|
||||
const char *group_name = elf_group_name (sec);
|
||||
unsigned int i;
|
||||
|
||||
|
@ -1913,18 +1839,18 @@ build_group_lists (abfd, sec, inf)
|
|||
}
|
||||
|
||||
void
|
||||
elf_frob_file ()
|
||||
elf_frob_file (void)
|
||||
{
|
||||
struct group_list list;
|
||||
unsigned int i;
|
||||
|
||||
bfd_map_over_sections (stdoutput, adjust_stab_sections, (PTR) 0);
|
||||
bfd_map_over_sections (stdoutput, adjust_stab_sections, NULL);
|
||||
|
||||
/* Go find section groups. */
|
||||
list.num_group = 0;
|
||||
list.head = NULL;
|
||||
list.elt_count = NULL;
|
||||
bfd_map_over_sections (stdoutput, build_group_lists, (PTR) &list);
|
||||
bfd_map_over_sections (stdoutput, build_group_lists, &list);
|
||||
|
||||
/* Make the SHT_GROUP sections that describe each section group. We
|
||||
can't set up the section contents here yet, because elf section
|
||||
|
@ -1991,7 +1917,7 @@ elf_frob_file ()
|
|||
/* It removes any unneeded versioned symbols from the symbol table. */
|
||||
|
||||
void
|
||||
elf_frob_file_before_adjust ()
|
||||
elf_frob_file_before_adjust (void)
|
||||
{
|
||||
if (symbol_rootP)
|
||||
{
|
||||
|
@ -2011,10 +1937,10 @@ elf_frob_file_before_adjust ()
|
|||
p = strchr (symbol_get_obj (symp)->versioned_name,
|
||||
ELF_VER_CHR);
|
||||
know (p != NULL);
|
||||
if (p [1] == ELF_VER_CHR && p [2] == ELF_VER_CHR)
|
||||
if (p[1] == ELF_VER_CHR && p[2] == ELF_VER_CHR)
|
||||
{
|
||||
size_t l = strlen (&p[3]) + 1;
|
||||
memmove (&p [1], &p[3], l);
|
||||
memmove (&p[1], &p[3], l);
|
||||
}
|
||||
if (symbol_used_p (symp) == 0
|
||||
&& symbol_used_in_reloc_p (symp) == 0)
|
||||
|
@ -2038,7 +1964,7 @@ elf_frob_file_before_adjust ()
|
|||
have generated the relocation section. */
|
||||
|
||||
void
|
||||
elf_frob_file_after_relocs ()
|
||||
elf_frob_file_after_relocs (void)
|
||||
{
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
if (ECOFF_DEBUGGING)
|
||||
|
@ -2051,7 +1977,7 @@ elf_frob_file_after_relocs ()
|
|||
|
||||
debug_swap
|
||||
= get_elf_backend_data (stdoutput)->elf_backend_ecoff_debug_swap;
|
||||
know (debug_swap != (const struct ecoff_debug_swap *) NULL);
|
||||
know (debug_swap != NULL);
|
||||
ecoff_build_debug (&debug.symbolic_header, &buf, debug_swap);
|
||||
|
||||
/* Set up the pointers in debug. */
|
||||
|
@ -2059,14 +1985,14 @@ elf_frob_file_after_relocs ()
|
|||
debug.ptr = (type) (buf + debug.symbolic_header.offset)
|
||||
|
||||
SET (line, cbLineOffset, unsigned char *);
|
||||
SET (external_dnr, cbDnOffset, PTR);
|
||||
SET (external_pdr, cbPdOffset, PTR);
|
||||
SET (external_sym, cbSymOffset, PTR);
|
||||
SET (external_opt, cbOptOffset, PTR);
|
||||
SET (external_dnr, cbDnOffset, void *);
|
||||
SET (external_pdr, cbPdOffset, void *);
|
||||
SET (external_sym, cbSymOffset, void *);
|
||||
SET (external_opt, cbOptOffset, void *);
|
||||
SET (external_aux, cbAuxOffset, union aux_ext *);
|
||||
SET (ss, cbSsOffset, char *);
|
||||
SET (external_fdr, cbFdOffset, PTR);
|
||||
SET (external_rfd, cbRfdOffset, PTR);
|
||||
SET (external_fdr, cbFdOffset, void *);
|
||||
SET (external_rfd, cbRfdOffset, void *);
|
||||
/* ssext and external_ext are set up just below. */
|
||||
|
||||
#undef SET
|
||||
|
@ -2094,8 +2020,7 @@ elf_frob_file_after_relocs ()
|
|||
eventually become a call to fwrite, and ISO C prohibits
|
||||
passing a NULL pointer to a stdio function even if the
|
||||
pointer will not be used. */
|
||||
if (! bfd_set_section_contents (stdoutput, sec, (PTR) buf,
|
||||
(file_ptr) 0, (bfd_size_type) 0))
|
||||
if (! bfd_set_section_contents (stdoutput, sec, buf, 0, 0))
|
||||
as_fatal (_("can't start writing .mdebug section: %s"),
|
||||
bfd_errmsg (bfd_get_error ()));
|
||||
|
||||
|
@ -2141,7 +2066,7 @@ elf_frob_file_after_relocs ()
|
|||
#define SCO_MINOR_VERSION 0x1
|
||||
|
||||
void
|
||||
sco_id ()
|
||||
sco_id (void)
|
||||
{
|
||||
|
||||
char *name;
|
||||
|
@ -2152,7 +2077,7 @@ sco_id ()
|
|||
subsegT subseg = now_subseg;
|
||||
Elf_Internal_Note i_note;
|
||||
Elf_External_Note e_note;
|
||||
asection *note_secp = (asection *) NULL;
|
||||
asection *note_secp = NULL;
|
||||
int i, len;
|
||||
|
||||
/* create the .note section */
|
||||
|
@ -2169,13 +2094,13 @@ sco_id ()
|
|||
i_note.type = NT_VERSION; /* Contains a version string */
|
||||
|
||||
p = frag_more (sizeof (i_note.namesz));
|
||||
md_number_to_chars (p, (valueT) i_note.namesz, 4);
|
||||
md_number_to_chars (p, i_note.namesz, 4);
|
||||
|
||||
p = frag_more (sizeof (i_note.descsz));
|
||||
md_number_to_chars (p, (valueT) i_note.descsz, 4);
|
||||
md_number_to_chars (p, i_note.descsz, 4);
|
||||
|
||||
p = frag_more (sizeof (i_note.type));
|
||||
md_number_to_chars (p, (valueT) i_note.type, 4);
|
||||
md_number_to_chars (p, i_note.type, 4);
|
||||
|
||||
p = frag_more (4);
|
||||
strcpy (p, "SCO");
|
||||
|
@ -2208,7 +2133,7 @@ sco_id ()
|
|||
#endif /* SCO_ELF */
|
||||
|
||||
static int
|
||||
elf_separate_stab_sections ()
|
||||
elf_separate_stab_sections (void)
|
||||
{
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
return (!ECOFF_DEBUGGING);
|
||||
|
@ -2218,8 +2143,7 @@ elf_separate_stab_sections ()
|
|||
}
|
||||
|
||||
static void
|
||||
elf_init_stab_section (seg)
|
||||
segT seg;
|
||||
elf_init_stab_section (segT seg)
|
||||
{
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
if (!ECOFF_DEBUGGING)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* ELF object file format.
|
||||
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
|
@ -100,7 +100,7 @@ struct elf_obj_sy
|
|||
#ifndef obj_begin
|
||||
#define obj_begin() elf_begin ()
|
||||
#endif
|
||||
extern void elf_begin PARAMS ((void));
|
||||
extern void elf_begin (void);
|
||||
|
||||
/* should be conditional on address size! */
|
||||
#define elf_symbol(asymbol) ((elf_symbol_type *) (&(asymbol)->the_bfd))
|
||||
|
@ -123,7 +123,7 @@ extern void elf_begin PARAMS ((void));
|
|||
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value = (V))
|
||||
#endif
|
||||
|
||||
int elf_s_get_other PARAMS ((symbolS *));
|
||||
int elf_s_get_other (symbolS *);
|
||||
#ifndef S_GET_OTHER
|
||||
#define S_GET_OTHER(S) (elf_s_get_other (S))
|
||||
#endif
|
||||
|
@ -144,35 +144,35 @@ extern asection *gdb_section;
|
|||
#ifndef obj_frob_file
|
||||
#define obj_frob_file elf_frob_file
|
||||
#endif
|
||||
extern void elf_frob_file PARAMS ((void));
|
||||
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 PARAMS ((void));
|
||||
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 PARAMS ((void));
|
||||
extern void elf_frob_file_after_relocs (void);
|
||||
|
||||
#ifndef obj_app_file
|
||||
#define obj_app_file elf_file_symbol
|
||||
#endif
|
||||
extern void elf_file_symbol PARAMS ((const char *));
|
||||
extern void elf_file_symbol (const char *);
|
||||
|
||||
extern void obj_elf_section_change_hook PARAMS ((void));
|
||||
extern void obj_elf_section_change_hook (void);
|
||||
|
||||
extern void obj_elf_section PARAMS ((int));
|
||||
extern void obj_elf_previous PARAMS ((int));
|
||||
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_section (int);
|
||||
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
|
||||
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));
|
||||
(const char *, int, int, int, const char *, int, int);
|
||||
extern struct fix *obj_elf_vtable_inherit (int);
|
||||
extern struct fix *obj_elf_vtable_entry (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. */
|
||||
|
@ -180,17 +180,17 @@ extern struct fix *obj_elf_vtable_entry PARAMS ((int));
|
|||
#define obj_sec_sym_ok_for_reloc(SEC) ((SEC)->owner != 0)
|
||||
#endif
|
||||
|
||||
void elf_obj_read_begin_hook PARAMS ((void));
|
||||
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 PARAMS ((symbolS *));
|
||||
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 PARAMS ((symbolS *, symbolS *));
|
||||
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))
|
||||
|
@ -207,7 +207,7 @@ void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *));
|
|||
|
||||
/* We need 12 bytes at the start of the section to hold some initial
|
||||
information. */
|
||||
extern void obj_elf_init_stab_section PARAMS ((segT));
|
||||
extern void obj_elf_init_stab_section (segT);
|
||||
#define INIT_STAB_SECTION(seg) obj_elf_init_stab_section (seg)
|
||||
|
||||
#ifdef ECOFF_DEBUGGING
|
||||
|
@ -229,12 +229,12 @@ extern void obj_elf_init_stab_section PARAMS ((segT));
|
|||
|
||||
#endif /* SEPARATE_STAB_SECTIONS not defined. */
|
||||
|
||||
extern void elf_frob_symbol PARAMS ((symbolS *, int *));
|
||||
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 PARAMS ((void));
|
||||
extern void elf_pop_insert (void);
|
||||
#ifndef obj_pop_insert
|
||||
#define obj_pop_insert() elf_pop_insert()
|
||||
#endif
|
||||
|
@ -244,7 +244,7 @@ extern void elf_pop_insert PARAMS ((void));
|
|||
#ifdef ANSI_PROTOTYPES
|
||||
struct ecoff_extr;
|
||||
#endif
|
||||
extern void elf_ecoff_set_ext PARAMS ((symbolS *, struct ecoff_extr *));
|
||||
extern void elf_ecoff_set_ext (symbolS *, struct ecoff_extr *);
|
||||
#endif
|
||||
|
||||
#endif /* _OBJ_ELF_H */
|
||||
|
|
Loading…
Reference in a new issue