* config/tc-hppa.c (pa_ip): Fix thinko in 21bit range check.

This commit is contained in:
Jeff Law
1993-11-17 04:40:15 +00:00
parent 8a48c3936b
commit c5e9ccd030
2 changed files with 141 additions and 129 deletions

View File

@ -1,3 +1,13 @@
Tue Nov 16 20:38:21 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
* config/tc-hppa.c (pa_ip): Fix thinko in 21bit range check.
Sat Nov 13 18:22:48 1993 Steve Chamberlain (sac@jonny.cygnus.com)
* config/tc-sh.c (md_apply_fix): Cope with IMM16 type too.
* config/tc-z8k.c (build_bytes, md_apply_fix): Understand nDISP7
relocs.
Fri Nov 12 16:51:47 1993 Jeffrey A. Law (law@snake.cs.utah.edu) Fri Nov 12 16:51:47 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
* config/tc-hppa.[ch]: Fix assorted trivial indention problems. * config/tc-hppa.[ch]: Fix assorted trivial indention problems.
@ -8,7 +18,7 @@ Fri Nov 12 15:26:21 1993 Ken Raeburn (raeburn@cygnus.com)
* Makefile.in (VERSION): Updated following 2.2 release. * Makefile.in (VERSION): Updated following 2.2 release.
Fri Nov 12 14:52:17 1993 Jeffrey A. Law (law@snake.cs.utah.edu Fri Nov 12 14:52:17 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
* config/tc-hppa.c (hppa_fix_struct): Use a real type for the * config/tc-hppa.c (hppa_fix_struct): Use a real type for the
field selector, rather than an int. All uses of field selectors field selector, rather than an int. All uses of field selectors

View File

@ -184,17 +184,18 @@ fp_operand_format;
an EXPORT or IMPORT directive. Only SOM uses this formation an EXPORT or IMPORT directive. Only SOM uses this formation
(ELF has no need for it). */ (ELF has no need for it). */
typedef enum typedef enum
{ {
SYMBOL_TYPE_UNKNOWN, SYMBOL_TYPE_UNKNOWN,
SYMBOL_TYPE_ABSOLUTE, SYMBOL_TYPE_ABSOLUTE,
SYMBOL_TYPE_CODE, SYMBOL_TYPE_CODE,
SYMBOL_TYPE_DATA, SYMBOL_TYPE_DATA,
SYMBOL_TYPE_ENTRY, SYMBOL_TYPE_ENTRY,
SYMBOL_TYPE_MILLICODE, SYMBOL_TYPE_MILLICODE,
SYMBOL_TYPE_PLABEL, SYMBOL_TYPE_PLABEL,
SYMBOL_TYPE_PRI_PROG, SYMBOL_TYPE_PRI_PROG,
SYMBOL_TYPE_SEC_PROG, SYMBOL_TYPE_SEC_PROG,
} pa_symbol_type; }
pa_symbol_type;
/* This structure contains information needed to assemble /* This structure contains information needed to assemble
individual instructions. */ individual instructions. */
@ -489,7 +490,7 @@ struct default_space_dict
/* Extra information needed to perform fixups (relocations) on the PA. */ /* Extra information needed to perform fixups (relocations) on the PA. */
struct hppa_fix_struct struct hppa_fix_struct
{ {
/* The field selector. */ /* The field selector. */
enum hppa_reloc_field_selector_type fx_r_field; enum hppa_reloc_field_selector_type fx_r_field;
@ -504,31 +505,31 @@ struct hppa_fix_struct
/* The unwind descriptor associated with this fixup. */ /* The unwind descriptor associated with this fixup. */
char fx_unwind[8]; char fx_unwind[8];
}; };
/* Structure to hold information about predefined registers. */ /* Structure to hold information about predefined registers. */
struct pd_reg struct pd_reg
{ {
char *name; char *name;
int value; int value;
}; };
/* This structure defines the mapping from a FP condition string /* This structure defines the mapping from a FP condition string
to a condition number which can be recorded in an instruction. */ to a condition number which can be recorded in an instruction. */
struct fp_cond_map struct fp_cond_map
{ {
char *string; char *string;
int cond; int cond;
}; };
/* This structure defines a mapping from a field selector /* This structure defines a mapping from a field selector
string to a field selector type. */ string to a field selector type. */
struct selector_entry struct selector_entry
{ {
char *prefix; char *prefix;
int field_selector; int field_selector;
}; };
/* Prototypes for functions local to tc-hppa.c. */ /* Prototypes for functions local to tc-hppa.c. */
@ -586,11 +587,11 @@ static label_symbol_struct *pa_get_label PARAMS ((void));
static sd_chain_struct *create_new_space PARAMS ((char *, int, char, static sd_chain_struct *create_new_space PARAMS ((char *, int, char,
char, char, char, char, char, char,
asection *, int)); asection *, int));
static ssd_chain_struct * create_new_subspace PARAMS ((sd_chain_struct *, static ssd_chain_struct *create_new_subspace PARAMS ((sd_chain_struct *,
char *, char, char, char *, char, char,
char, char, char, char, char, char,
char, int, int, int, char, int, int, int,
int, asection *)); int, asection *));
static ssd_chain_struct *update_subspace PARAMS ((sd_chain_struct *, static ssd_chain_struct *update_subspace PARAMS ((sd_chain_struct *,
char *, char, char, char, char *, char, char, char,
char, char, char, int, char, char, char, int,
@ -599,8 +600,8 @@ static ssd_chain_struct *update_subspace PARAMS ((sd_chain_struct *,
static sd_chain_struct *is_defined_space PARAMS ((char *)); static sd_chain_struct *is_defined_space PARAMS ((char *));
static ssd_chain_struct *is_defined_subspace PARAMS ((char *)); static ssd_chain_struct *is_defined_subspace PARAMS ((char *));
static sd_chain_struct *pa_segment_to_space PARAMS ((asection *)); static sd_chain_struct *pa_segment_to_space PARAMS ((asection *));
static ssd_chain_struct * pa_subsegment_to_subspace PARAMS ((asection *, static ssd_chain_struct *pa_subsegment_to_subspace PARAMS ((asection *,
subsegT)); subsegT));
static sd_chain_struct *pa_find_space_by_number PARAMS ((int)); static sd_chain_struct *pa_find_space_by_number PARAMS ((int));
static unsigned int pa_subspace_start PARAMS ((sd_chain_struct *, int)); static unsigned int pa_subspace_start PARAMS ((sd_chain_struct *, int));
static void pa_ip PARAMS ((char *)); static void pa_ip PARAMS ((char *));
@ -646,7 +647,8 @@ static struct call_info *last_call_info;
static struct call_desc last_call_desc; static struct call_desc last_call_desc;
/* Relaxation isn't supported for the PA yet. */ /* Relaxation isn't supported for the PA yet. */
const relax_typeS md_relax_table[] = {0}; const relax_typeS md_relax_table[] =
{0};
/* Jumps are always the same size -- one instruction. */ /* Jumps are always the same size -- one instruction. */
int md_short_jump_size = 4; int md_short_jump_size = 4;
@ -1057,7 +1059,7 @@ static const struct pd_reg pre_defined_registers[] =
/* This table is sorted by order of the length of the string. This is /* This table is sorted by order of the length of the string. This is
so we check for <> before we check for <. If we had a <> and checked so we check for <> before we check for <. If we had a <> and checked
for < first, we would get a false match. */ for < first, we would get a false match. */
static const struct fp_cond_map fp_cond_map [] = static const struct fp_cond_map fp_cond_map[] =
{ {
{"false?", 0}, {"false?", 0},
{"false", 1}, {"false", 1},
@ -1329,7 +1331,7 @@ fix_new_hppa (frag, where, size, add_symbol, offset, exp, pcrel,
fixS *new_fix; fixS *new_fix;
struct hppa_fix_struct *hppa_fix = (struct hppa_fix_struct *) struct hppa_fix_struct *hppa_fix = (struct hppa_fix_struct *)
obstack_alloc (&notes, sizeof (struct hppa_fix_struct)); obstack_alloc (&notes, sizeof (struct hppa_fix_struct));
if (exp != NULL) if (exp != NULL)
new_fix = fix_new_exp (frag, where, size, exp, pcrel, r_type); new_fix = fix_new_exp (frag, where, size, exp, pcrel, r_type);
@ -1345,8 +1347,8 @@ fix_new_hppa (frag, where, size, add_symbol, offset, exp, pcrel,
bcopy (unwind_desc, hppa_fix->fx_unwind, 8); bcopy (unwind_desc, hppa_fix->fx_unwind, 8);
/* If necessary call BFD backend function to attach the /* If necessary call BFD backend function to attach the
unwind bits to the target dependent parts of a BFD symbol. unwind bits to the target dependent parts of a BFD symbol.
Yuk. */ Yuk. */
#ifdef obj_attach_unwind_info #ifdef obj_attach_unwind_info
obj_attach_unwind_info (add_symbol->bsym, unwind_desc); obj_attach_unwind_info (add_symbol->bsym, unwind_desc);
#endif #endif
@ -1431,7 +1433,7 @@ md_begin ()
while (i < NUMOPCODES) while (i < NUMOPCODES)
{ {
const char *name = pa_opcodes[i].name; const char *name = pa_opcodes[i].name;
retval = hash_insert (op_hash, name, (struct pa_opcode *)&pa_opcodes[i]); retval = hash_insert (op_hash, name, (struct pa_opcode *) &pa_opcodes[i]);
if (retval != NULL && *retval != '\0') if (retval != NULL && *retval != '\0')
{ {
as_fatal ("Internal error: can't hash `%s': %s\n", name, retval); as_fatal ("Internal error: can't hash `%s': %s\n", name, retval);
@ -1644,7 +1646,7 @@ pa_ip (str)
num = pa_get_absolute_expression (&the_insn, &s); num = pa_get_absolute_expression (&the_insn, &s);
s = expr_end; s = expr_end;
CHECK_FIELD (num, 15, -16, 0) CHECK_FIELD (num, 15, -16, 0)
low_sign_unext (num, 5, &num); low_sign_unext (num, 5, &num);
INSERT_FIELD_AND_CONTINUE (opcode, num, 0); INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
/* Handle an unsigned 5 bit immediate at 31. */ /* Handle an unsigned 5 bit immediate at 31. */
@ -2173,7 +2175,7 @@ pa_ip (str)
if (the_insn.exp.X_op == O_constant) if (the_insn.exp.X_op == O_constant)
{ {
num = evaluate_absolute (&the_insn); num = evaluate_absolute (&the_insn);
CHECK_FIELD (num, 2097151, 0, 0); CHECK_FIELD (num >> 11, 1048575, -1048576, 0);
dis_assemble_21 (num, &num); dis_assemble_21 (num, &num);
INSERT_FIELD_AND_CONTINUE (opcode, num, 0); INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
} }
@ -2231,7 +2233,7 @@ pa_ip (str)
get_expression (s); get_expression (s);
s = expr_end; s = expr_end;
the_insn.pcrel = 1; the_insn.pcrel = 1;
if (! the_insn.exp.X_add_symbol if (!the_insn.exp.X_add_symbol
|| !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), || !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol),
"L$0\001")) "L$0\001"))
{ {
@ -2251,7 +2253,7 @@ pa_ip (str)
sign_unext (num >> 2, 17, &result); sign_unext (num >> 2, 17, &result);
dis_assemble_17 (result, &w1, &w2, &w); dis_assemble_17 (result, &w1, &w2, &w);
INSERT_FIELD_AND_CONTINUE (opcode, INSERT_FIELD_AND_CONTINUE (opcode,
((w2 << 2) | (w1 << 16) | w), 0); ((w2 << 2) | (w1 << 16) | w), 0);
} }
else else
{ {
@ -2271,7 +2273,7 @@ pa_ip (str)
get_expression (s); get_expression (s);
s = expr_end; s = expr_end;
the_insn.pcrel = 0; the_insn.pcrel = 0;
if (! the_insn.exp.X_add_symbol if (!the_insn.exp.X_add_symbol
|| !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), || !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol),
"L$0\001")) "L$0\001"))
{ {
@ -2291,7 +2293,7 @@ pa_ip (str)
sign_unext (num >> 2, 17, &result); sign_unext (num >> 2, 17, &result);
dis_assemble_17 (result, &w1, &w2, &w); dis_assemble_17 (result, &w1, &w2, &w);
INSERT_FIELD_AND_CONTINUE (opcode, INSERT_FIELD_AND_CONTINUE (opcode,
((w2 << 2) | (w1 << 16) | w), 0); ((w2 << 2) | (w1 << 16) | w), 0);
} }
else else
{ {
@ -2848,7 +2850,7 @@ tc_gen_reloc (section, fixp)
case R_HPPA_COMPLEX: case R_HPPA_COMPLEX:
case R_HPPA_COMPLEX_PCREL_CALL: case R_HPPA_COMPLEX_PCREL_CALL:
case R_HPPA_COMPLEX_ABS_CALL: case R_HPPA_COMPLEX_ABS_CALL:
abort(); abort ();
break; break;
default: default:
assert (n_relocs == 1); assert (n_relocs == 1);
@ -2857,7 +2859,7 @@ tc_gen_reloc (section, fixp)
reloc->sym_ptr_ptr = &fixp->fx_addsy->bsym; reloc->sym_ptr_ptr = &fixp->fx_addsy->bsym;
reloc->howto = bfd_reloc_type_lookup (stdoutput, code); reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where ; reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
switch (code) switch (code)
{ {
@ -3038,7 +3040,7 @@ md_apply_fix_1 (fixP, val)
fmt = 0; fmt = 0;
/* Remember this value for emit_reloc. FIXME, is this braindamage /* Remember this value for emit_reloc. FIXME, is this braindamage
documented anywhere!?! */ documented anywhere!?! */
fixP->fx_addnumber = val; fixP->fx_addnumber = val;
/* Check if this is an undefined symbol. No relocation can /* Check if this is an undefined symbol. No relocation can
@ -3095,7 +3097,7 @@ md_apply_fix_1 (fixP, val)
CHECK_FIELD (new_val, 8191, -8192, 0) CHECK_FIELD (new_val, 8191, -8192, 0)
/* Mask off 11 bits to be changed. */ /* Mask off 11 bits to be changed. */
sign_unext ((new_val - 8) >> 2, 12, &result); sign_unext ((new_val - 8) >> 2, 12, &result);
bfd_put_32 (stdoutput, bfd_put_32 (stdoutput,
bfd_get_32 (stdoutput, buf) & 0xffffe002, bfd_get_32 (stdoutput, buf) & 0xffffe002,
buf); buf);
@ -3110,7 +3112,7 @@ md_apply_fix_1 (fixP, val)
/* Handle some of the opcodes with the 'W' operand type. */ /* Handle some of the opcodes with the 'W' operand type. */
case 17: case 17:
/* If a long-call stub or argument relocation stub is /* If a long-call stub or argument relocation stub is
needed, then we can not apply this relocation, instead needed, then we can not apply this relocation, instead
the linker must handle it. */ the linker must handle it. */
if (new_val > 262143 || new_val < -262144 if (new_val > 262143 || new_val < -262144
@ -4315,7 +4317,7 @@ pa_callinfo (unused)
temp = 0; temp = 0;
} }
/* callinfo is in bytes and unwind_desc is in 8 byte units. */ /* callinfo is in bytes and unwind_desc is in 8 byte units. */
last_call_info->ci_unwind.descriptor.frame_size = temp / 8; last_call_info->ci_unwind.descriptor.frame_size = temp / 8;
} }
@ -4384,7 +4386,7 @@ pa_callinfo (unused)
last_call_info->ci_unwind.descriptor.save_sp = 1; last_call_info->ci_unwind.descriptor.save_sp = 1;
} }
/* Is this an unwindable procedure. If so mark it so /* Is this an unwindable procedure. If so mark it so
in the unwind descriptor. */ in the unwind descriptor. */
else if ((strncasecmp (name, "no_unwind", 9) == 0)) else if ((strncasecmp (name, "no_unwind", 9) == 0))
{ {
p = input_line_pointer; p = input_line_pointer;
@ -4392,7 +4394,7 @@ pa_callinfo (unused)
last_call_info->ci_unwind.descriptor.cannot_unwind = 1; last_call_info->ci_unwind.descriptor.cannot_unwind = 1;
} }
/* Is this an interrupt routine. If so mark it in the /* Is this an interrupt routine. If so mark it in the
unwind descriptor. */ unwind descriptor. */
else if ((strncasecmp (name, "hpux_int", 7) == 0)) else if ((strncasecmp (name, "hpux_int", 7) == 0))
{ {
p = input_line_pointer; p = input_line_pointer;
@ -4467,9 +4469,9 @@ pa_comm (unused)
if (symbol) if (symbol)
{ {
/* It is incorrect to check S_IS_DEFINED at this point as /* It is incorrect to check S_IS_DEFINED at this point as
the symbol will *always* be defined. FIXME. How to the symbol will *always* be defined. FIXME. How to
correctly determine when this label really as been correctly determine when this label really as been
defined before. */ defined before. */
if (S_GET_VALUE (symbol)) if (S_GET_VALUE (symbol))
{ {
if (S_GET_VALUE (symbol) != size) if (S_GET_VALUE (symbol) != size)
@ -4537,7 +4539,7 @@ static void
pa_enter (unused) pa_enter (unused)
int unused; int unused;
{ {
abort(); abort ();
return; return;
} }
@ -4579,7 +4581,7 @@ pa_entry (unused)
fix_new_hppa (frag_now, where - frag_now->fr_literal, 0, fix_new_hppa (frag_now, where - frag_now->fr_literal, 0,
last_call_info->start_symbol, (offsetT) 0, NULL, last_call_info->start_symbol, (offsetT) 0, NULL,
0, R_HPPA_ENTRY, e_fsel, 0, 0, 0, R_HPPA_ENTRY, e_fsel, 0, 0,
(char *)&last_call_info->ci_unwind.descriptor); (char *) &last_call_info->ci_unwind.descriptor);
} }
#endif #endif
@ -4780,11 +4782,11 @@ pa_type_args (symbolP, is_export)
{ {
input_line_pointer += 4; input_line_pointer += 4;
/* IMPORTing/EXPORTing CODE types for functions is meaningless for SOM, /* IMPORTing/EXPORTing CODE types for functions is meaningless for SOM,
instead one should be IMPORTing/EXPORTing ENTRY types. instead one should be IMPORTing/EXPORTing ENTRY types.
Complain if one tries to EXPORT a CODE type since that's never Complain if one tries to EXPORT a CODE type since that's never
done. Both GCC and HP C still try to IMPORT CODE types, so done. Both GCC and HP C still try to IMPORT CODE types, so
silently fix them to be ENTRY types. */ silently fix them to be ENTRY types. */
if (symbolP->bsym->flags & BSF_FUNCTION) if (symbolP->bsym->flags & BSF_FUNCTION)
{ {
if (is_export) if (is_export)
@ -4923,9 +4925,9 @@ pa_import (unused)
else else
{ {
/* Sigh. To be compatable with the HP assembler and to help /* Sigh. To be compatable with the HP assembler and to help
poorly written assembly code, we assign a type based on poorly written assembly code, we assign a type based on
the the current segment. Note only BSF_FUNCTION really the the current segment. Note only BSF_FUNCTION really
matters, we do not need to set the full SYMBOL_TYPE_* info here. */ matters, we do not need to set the full SYMBOL_TYPE_* info here. */
if (now_seg == text_section) if (now_seg == text_section)
symbol->bsym->flags |= BSF_FUNCTION; symbol->bsym->flags |= BSF_FUNCTION;
@ -4975,7 +4977,7 @@ static void
pa_leave (unused) pa_leave (unused)
int unused; int unused;
{ {
abort(); abort ();
} }
/* Handle a .ORIGIN pseudo-op. */ /* Handle a .ORIGIN pseudo-op. */
@ -5198,7 +5200,7 @@ pa_parse_space_stmt (space_name, create_flag)
{ {
as_bad ("Invalid .SPACE argument"); as_bad ("Invalid .SPACE argument");
*input_line_pointer = c; *input_line_pointer = c;
if (! is_end_of_statement ()) if (!is_end_of_statement ())
input_line_pointer++; input_line_pointer++;
} }
} }
@ -5495,7 +5497,7 @@ pa_subspace (unused)
space = current_space; space = current_space;
ssd = is_defined_subspace (ss_name); ssd = is_defined_subspace (ss_name);
/* Allow user to override the builtin attributes of subspaces. But /* Allow user to override the builtin attributes of subspaces. But
only allow the attributes to be changed once! */ only allow the attributes to be changed once! */
if (ssd && SUBSPACE_DEFINED (ssd)) if (ssd && SUBSPACE_DEFINED (ssd))
{ {
subseg_set (ssd->ssd_seg, ssd->ssd_subseg); subseg_set (ssd->ssd_seg, ssd->ssd_subseg);
@ -5604,7 +5606,7 @@ pa_subspace (unused)
} }
/* Compute a reasonable set of BFD flags based on the information /* Compute a reasonable set of BFD flags based on the information
in the .subspace directive. */ in the .subspace directive. */
applicable = bfd_applicable_section_flags (stdoutput); applicable = bfd_applicable_section_flags (stdoutput);
flags = 0; flags = 0;
if (loadable) if (loadable)
@ -5622,17 +5624,17 @@ pa_subspace (unused)
applicable &= flags; applicable &= flags;
/* If this is an existing subspace, then we want to use the /* If this is an existing subspace, then we want to use the
segment already associated with the subspace. segment already associated with the subspace.
FIXME NOW! ELF BFD doesn't appear to be ready to deal with FIXME NOW! ELF BFD doesn't appear to be ready to deal with
lots of sections. It might be a problem in the PA ELF lots of sections. It might be a problem in the PA ELF
code, I do not know yet. For now avoid creating anything code, I do not know yet. For now avoid creating anything
but the "standard" sections for ELF. */ but the "standard" sections for ELF. */
if (ssd) if (ssd)
section = ssd->ssd_seg; section = ssd->ssd_seg;
else if (alias) else if (alias)
section = subseg_new (alias, 0); section = subseg_new (alias, 0);
else if (! alias && USE_ALIASES) else if (!alias && USE_ALIASES)
{ {
as_warn ("Ignoring subspace decl due to ELF BFD bugs."); as_warn ("Ignoring subspace decl due to ELF BFD bugs.");
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
@ -5665,7 +5667,7 @@ pa_subspace (unused)
code_only, common, code_only, common,
dup_common, zero, sort, dup_common, zero, sort,
access, space_index, access, space_index,
alignment, quadrant, section); alignment, quadrant, section);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
current_subspace->ssd_seg = section; current_subspace->ssd_seg = section;
@ -5695,7 +5697,7 @@ pa_spaces_begin ()
if (pa_def_spaces[i].alias && USE_ALIASES) if (pa_def_spaces[i].alias && USE_ALIASES)
name = pa_def_spaces[i].alias; name = pa_def_spaces[i].alias;
else else
name = pa_def_spaces[i].name; name = pa_def_spaces[i].name;
pa_def_spaces[i].segment = subseg_new (name, 0); pa_def_spaces[i].segment = subseg_new (name, 0);
create_new_space (pa_def_spaces[i].name, pa_def_spaces[i].spnum, create_new_space (pa_def_spaces[i].name, pa_def_spaces[i].spnum,
@ -5714,7 +5716,7 @@ pa_spaces_begin ()
sd_chain_struct *space; sd_chain_struct *space;
/* Pick the right name for the new section and pick the right /* Pick the right name for the new section and pick the right
subsegment number. */ subsegment number. */
if (pa_def_subspaces[i].alias && USE_ALIASES) if (pa_def_subspaces[i].alias && USE_ALIASES)
{ {
name = pa_def_subspaces[i].alias; name = pa_def_subspaces[i].alias;
@ -5731,8 +5733,8 @@ pa_spaces_begin ()
/* For SOM we want to replace the standard .text, .data, and .bss /* For SOM we want to replace the standard .text, .data, and .bss
sections with our own. */ sections with our own. */
if (! strcmp (pa_def_subspaces[i].name, "$CODE$") && ! USE_ALIASES) if (!strcmp (pa_def_subspaces[i].name, "$CODE$") && !USE_ALIASES)
{ {
text_section = segment; text_section = segment;
applicable = bfd_applicable_section_flags (stdoutput); applicable = bfd_applicable_section_flags (stdoutput);
@ -5742,7 +5744,7 @@ pa_spaces_begin ()
| SEC_READONLY | SEC_READONLY
| SEC_HAS_CONTENTS)); | SEC_HAS_CONTENTS));
} }
else if (! strcmp (pa_def_subspaces[i].name, "$DATA$") && ! USE_ALIASES) else if (!strcmp (pa_def_subspaces[i].name, "$DATA$") && !USE_ALIASES)
{ {
data_section = segment; data_section = segment;
applicable = bfd_applicable_section_flags (stdoutput); applicable = bfd_applicable_section_flags (stdoutput);
@ -5753,7 +5755,7 @@ pa_spaces_begin ()
} }
else if (! strcmp (pa_def_subspaces[i].name, "$BSS$") && ! USE_ALIASES) else if (!strcmp (pa_def_subspaces[i].name, "$BSS$") && !USE_ALIASES)
{ {
bss_section = segment; bss_section = segment;
applicable = bfd_applicable_section_flags (stdoutput); applicable = bfd_applicable_section_flags (stdoutput);
@ -6080,7 +6082,7 @@ static ssd_chain_struct *
is_defined_subspace (name) is_defined_subspace (name)
char *name; char *name;
{ {
sd_chain_struct*space_chain; sd_chain_struct *space_chain;
ssd_chain_struct *subspace_chain; ssd_chain_struct *subspace_chain;
/* Walk through each space. */ /* Walk through each space. */
@ -6588,10 +6590,10 @@ elf_hppa_final_processing ()
call_info_pointer = call_info_pointer->ci_next) call_info_pointer = call_info_pointer->ci_next)
{ {
elf_symbol_type *esym elf_symbol_type *esym
= (elf_symbol_type *) call_info_pointer->start_symbol->bsym; = (elf_symbol_type *) call_info_pointer->start_symbol->bsym;
esym->internal_elf_sym.st_size = esym->internal_elf_sym.st_size =
S_GET_VALUE (call_info_pointer->end_symbol) S_GET_VALUE (call_info_pointer->end_symbol)
- S_GET_VALUE (call_info_pointer->start_symbol) + 4; - S_GET_VALUE (call_info_pointer->start_symbol) + 4;
} }
} }
#endif #endif