From 20b39b6f0590a15e228d69da89a3c7f5a2b900c4 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sun, 31 Oct 1993 08:06:11 +0000 Subject: [PATCH] * write.c (relax_and_size_seg): Correct test to determine if the section's size was rounded up. --- gas/ChangeLog | 3 +++ gas/write.c | 27 +++++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 8d60593ec3..61905dd092 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,8 @@ Sun Oct 31 00:36:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu) + * write.c (relax_and_size_seg): Correct test to determine if + the section's size was rounded up. + * config/obj-som.h (obj_set_symbol_type): Define a hook so GAS can properly set all the SOM symbol types. * config/tc-hppa.c (pa_symbol_type): New enum to represent the diff --git a/gas/write.c b/gas/write.c index 30ab74611f..0b074d59b2 100644 --- a/gas/write.c +++ b/gas/write.c @@ -116,6 +116,7 @@ fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel, fixP->fx_pcrel_adjust = 0; fixP->fx_bit_fixP = 0; fixP->fx_addnumber = 0; + fixP->tc_fix_data = NULL; #ifdef TC_something fixP->fx_bsr = 0; @@ -441,13 +442,12 @@ relax_and_size_seg (abfd, sec, xxx) x = bfd_set_section_flags (abfd, sec, flags); assert (x == true); } - size = md_section_align (sec, size); - x = bfd_set_section_size (abfd, sec, size); + newsize = md_section_align (sec, size); + x = bfd_set_section_size (abfd, sec, newsize); assert (x == true); /* If the size had to be rounded up, add some padding in the last non-empty frag. */ - newsize = bfd_get_section_size_before_reloc (sec); assert (newsize >= size); if (size != newsize) { @@ -552,7 +552,10 @@ adjust_reloc_syms (abfd, sec, xxx) the PA. */ #ifdef tc_fix_adjustable if (! tc_fix_adjustable (fixp)) - continue; + { + fixp->fx_addsy->sy_used_in_reloc = 1; + continue; + } #endif /* If the section symbol isn't going to be output, the relocs @@ -1914,15 +1917,15 @@ fixup_segment (fixP, this_segment_type) segment_name (S_GET_SEGMENT (sub_symbolP)), S_GET_NAME (sub_symbolP), buf); } -#else - else - { - seg_reloc_count++; - fixP->fx_addnumber = add_number; /* Remember value for emit_reloc */ - continue; - } /* if absolute */ -#endif } +#else + else + { + seg_reloc_count++; + fixP->fx_addnumber = add_number; /* Remember value for emit_reloc */ + continue; + } /* if absolute */ +#endif } if (add_symbolP)