* read.c (s_lcomm_internal): Make global.
* read.h (s_lcomm_internal): Declare. * config/obj-elf.c (elf_pseudo_table): Handle lcomm. (obj_elf_lcomm): New function.
This commit is contained in:
parent
e13bab5a71
commit
13c5698440
4 changed files with 31 additions and 12 deletions
|
@ -1,3 +1,10 @@
|
|||
2003-12-13 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* read.c (s_lcomm_internal): Make global.
|
||||
* read.h (s_lcomm_internal): Declare.
|
||||
* config/obj-elf.c (elf_pseudo_table): Handle lcomm.
|
||||
(obj_elf_lcomm): New function.
|
||||
|
||||
2003-12-13 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* read.c: Remove unneeded prototypes.
|
||||
|
|
|
@ -85,12 +85,14 @@ 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_lcomm (int);
|
||||
|
||||
static const pseudo_typeS elf_pseudo_table[] =
|
||||
{
|
||||
{"comm", obj_elf_common, 0},
|
||||
{"common", obj_elf_common, 1},
|
||||
{"ident", obj_elf_ident, 0},
|
||||
{"lcomm", obj_elf_lcomm, 0},
|
||||
{"local", obj_elf_local, 0},
|
||||
{"previous", obj_elf_previous, 0},
|
||||
{"section", obj_elf_section, 0},
|
||||
|
@ -381,6 +383,15 @@ obj_elf_tls_common (ignore)
|
|||
symbol_get_bfdsym (symbolP)->flags |= BSF_THREAD_LOCAL;
|
||||
}
|
||||
|
||||
static void
|
||||
obj_elf_lcomm (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
symbolS *symbolP = s_comm_internal (0, s_lcomm_internal);
|
||||
|
||||
if (symbolP)
|
||||
symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT;
|
||||
}
|
||||
|
||||
static void
|
||||
obj_elf_local (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
|
@ -640,7 +651,7 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push)
|
|||
|
||||
/* Prevent SEC_HAS_CONTENTS from being inadvertently set. */
|
||||
if (type == SHT_NOBITS)
|
||||
seg_info (sec)->bss = 1;
|
||||
seg_info (sec)->bss = 1;
|
||||
|
||||
if (linkonce)
|
||||
flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
|
||||
|
@ -654,7 +665,7 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push)
|
|||
if (secsym != NULL)
|
||||
symbol_set_bfdsym (secsym, sec->symbol);
|
||||
else
|
||||
symbol_table_insert (section_symbol (sec));
|
||||
symbol_table_insert (section_symbol (sec));
|
||||
}
|
||||
else if (attr != 0)
|
||||
{
|
||||
|
@ -1738,9 +1749,9 @@ elf_frob_symbol (symp, puntp)
|
|||
|
||||
/* This symbol was given a new name with the .symver directive.
|
||||
|
||||
If this is an external reference, just rename the symbol to
|
||||
include the version string. This will make the relocs be
|
||||
against the correct versioned symbol.
|
||||
If this is an external reference, just rename the symbol to
|
||||
include the version string. This will make the relocs be
|
||||
against the correct versioned symbol.
|
||||
|
||||
If this is a definition, add an alias. FIXME: Using an alias
|
||||
will permit the debugging information to refer to the right
|
||||
|
@ -1750,8 +1761,8 @@ elf_frob_symbol (symp, puntp)
|
|||
if (! S_IS_DEFINED (symp))
|
||||
{
|
||||
/* Verify that the name isn't using the @@ syntax--this is
|
||||
reserved for definitions of the default version to link
|
||||
against. */
|
||||
reserved for definitions of the default version to link
|
||||
against. */
|
||||
if (p[1] == ELF_VER_CHR)
|
||||
{
|
||||
as_bad (_("invalid attempt to declare external version name as default in symbol `%s'"),
|
||||
|
@ -2080,9 +2091,9 @@ elf_frob_file_after_relocs ()
|
|||
sec->_raw_size = bfd_ecoff_debug_size (stdoutput, &debug, debug_swap);
|
||||
|
||||
/* Pass BUF to bfd_set_section_contents because this will
|
||||
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. */
|
||||
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))
|
||||
as_fatal (_("can't start writing .mdebug section: %s"),
|
||||
|
@ -2121,7 +2132,7 @@ elf_frob_file_after_relocs ()
|
|||
int_32 version = (major ver # << 16) | version of tools ;
|
||||
int_32 source = (tool_id << 16 ) | 1 ;
|
||||
int_32 info = 0 ; These are set by the SCO tools, but we
|
||||
don't know enough about the source
|
||||
don't know enough about the source
|
||||
environment to set them. SCO ld currently
|
||||
ignores them, and recommends we set them
|
||||
to zero. */
|
||||
|
|
|
@ -2022,7 +2022,7 @@ parse_align (int align_bytes)
|
|||
(alignment as a power of 2), or 2 if this was a ".bss" directive
|
||||
with alignment in bytes. */
|
||||
|
||||
static symbolS *
|
||||
symbolS *
|
||||
s_lcomm_internal (int needs_align, symbolS *symbolP, addressT size)
|
||||
{
|
||||
addressT align = 0;
|
||||
|
|
|
@ -142,6 +142,7 @@ extern void s_align_ptwo (int);
|
|||
extern void bss_alloc (symbolS *, addressT, int);
|
||||
extern offsetT parse_align (int);
|
||||
extern symbolS *s_comm_internal (int, symbolS *(*) (int, symbolS *, addressT));
|
||||
extern symbolS *s_lcomm_internal (int, symbolS *, addressT);
|
||||
extern void s_app_file_string (char *);
|
||||
extern void s_app_file (int);
|
||||
extern void s_app_line (int);
|
||||
|
|
Loading…
Reference in a new issue