aboutsummaryrefslogtreecommitdiff
path: root/gas/subsegs.c
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@cygnus>1994-07-13 01:48:15 +0000
committerKen Raeburn <raeburn@cygnus>1994-07-13 01:48:15 +0000
commit3c498933ab2914a93ee8383cb75d9b6c9706c0ff (patch)
treedcc5a0ec00167725b2463d0f947235696c843fd5 /gas/subsegs.c
parent6b510a40ae5bc4d08ac38932cfefad2d3e5c2e07 (diff)
downloadgdb-3c498933ab2914a93ee8383cb75d9b6c9706c0ff.zip
gdb-3c498933ab2914a93ee8383cb75d9b6c9706c0ff.tar.gz
gdb-3c498933ab2914a93ee8383cb75d9b6c9706c0ff.tar.bz2
Updated some copyrights, cleaned up some header-file comments, and:
* symbols.c (symbol_create): New function, most of the guts of the old symbol_new function. (symbol_new): Now just checks symbol_table_frozen, calls symbol_create, and enters the symbol into the symbol table. * subsegs.c (section_symbol): If EMIT_SECTION_SYMBOLS is not true, and the symbol table is frozen, call symbol_create instead of symbol_new. * symbols.h (symbol_create, symbol_table_frozen): Declare. * symbols.c (symbol_clear_list_pointers): Always a function now. * struc-symbol.h (symbol_clear_list_pointers): Deleted macro version. * symbols.c (debug_verify_symchain): New macro, defined to be verify_symbol_chain or a cast to void, depending on DEBUG_SYMS. (many functions): Invoke debug_verify_symchain unconditionally.
Diffstat (limited to 'gas/subsegs.c')
-rw-r--r--gas/subsegs.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gas/subsegs.c b/gas/subsegs.c
index 55e111e..e94dc64 100644
--- a/gas/subsegs.c
+++ b/gas/subsegs.c
@@ -145,8 +145,7 @@ subseg_change (seg, subseg)
if (! seginfo)
{
seginfo = (segment_info_type *) xmalloc (sizeof (*seginfo));
- if (! seginfo)
- abort ();
+ memset ((PTR) seginfo, 0, sizeof (*seginfo));
seginfo->fix_root = NULL;
seginfo->fix_tail = NULL;
seginfo->bfd_section = seg;
@@ -420,7 +419,7 @@ subseg_get (segname, force_new)
if (secptr->output_section != secptr)
secptr->output_section = secptr;
seginfo = (segment_info_type *) xmalloc (sizeof (*seginfo));
- memset ((char *) seginfo, 0, sizeof(seginfo));
+ memset ((PTR) seginfo, 0, sizeof (*seginfo));
seginfo->fix_root = NULL;
seginfo->fix_tail = NULL;
seginfo->bfd_section = secptr;
@@ -513,7 +512,18 @@ section_symbol (sec)
s = symbol_find (sec->name);
if (!s)
{
- s = symbol_new (sec->name, sec, 0, &zero_address_frag);
+#ifndef EMIT_SECTION_SYMBOLS
+#define EMIT_SECTION_SYMBOLS 1
+#endif
+
+ if (EMIT_SECTION_SYMBOLS
+#ifdef BFD_ASSEMBLER
+ && symbol_table_frozen
+#endif
+ )
+ s = symbol_new (sec->name, sec, 0, &zero_address_frag);
+ else
+ s = symbol_create (sec->name, sec, 0, &zero_address_frag);
S_CLEAR_EXTERNAL (s);
/* Use the BFD section symbol, if possible. */