* config/tc-ppc.c (ppc_csect): Pass alignment to ppc_change_csect.
(ppc_change_csect): Add align param. Align frag at start of csect. (ppc_section, ppc_named_section): Adjust ppc_change_csect calls. (ppc_frob_section): Align vma.
This commit is contained in:
parent
9393cb0db9
commit
931e13a666
2 changed files with 37 additions and 16 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2003-06-19 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* config/tc-ppc.c (ppc_csect): Pass alignment to ppc_change_csect.
|
||||||
|
(ppc_change_csect): Add align param. Align frag at start of csect.
|
||||||
|
(ppc_section, ppc_named_section): Adjust ppc_change_csect calls.
|
||||||
|
(ppc_frob_section): Align vma.
|
||||||
|
|
||||||
2003-06-18 Jakub Jelinek <jakub@redhat.com>
|
2003-06-18 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* dw2gencfi.c (EH_FRAME_ALIGNMENT): Define if not defined.
|
* dw2gencfi.c (EH_FRAME_ALIGNMENT): Define if not defined.
|
||||||
|
@ -1595,7 +1602,7 @@
|
||||||
(s_d30v_align <ignore>): Likewise.
|
(s_d30v_align <ignore>): Likewise.
|
||||||
(build_insn): Correct format string.
|
(build_insn): Correct format string.
|
||||||
(md_apply_fix3): Likewise.
|
(md_apply_fix3): Likewise.
|
||||||
* config/tc-fr30.c (md_parse_option <c,arg>): Add ATTRIBUTE_UNUSED.
|
* config/tc-fr30.c (md_parse_option <c,arg>): Add ATTRIBUTE_UNUSED.
|
||||||
(md_undefined_symbol <name>): Likewise.
|
(md_undefined_symbol <name>): Likewise.
|
||||||
(md_convert_frag <all args>): Likewise.
|
(md_convert_frag <all args>): Likewise.
|
||||||
(md_cgen_lookup_reloc <insn>): Likewise.
|
(md_cgen_lookup_reloc <insn>): Likewise.
|
||||||
|
@ -2056,7 +2063,7 @@
|
||||||
|
|
||||||
2002-11-21 Randolph Chung <randolph@tausq.org>
|
2002-11-21 Randolph Chung <randolph@tausq.org>
|
||||||
|
|
||||||
* config/tc-hppa.h (tc_frob_symbol): Frob undefined unused symbols
|
* config/tc-hppa.h (tc_frob_symbol): Frob undefined unused symbols
|
||||||
only if they have default visibility.
|
only if they have default visibility.
|
||||||
|
|
||||||
2002-11-21 Richard Henderson <rth@redhat.com>
|
2002-11-21 Richard Henderson <rth@redhat.com>
|
||||||
|
@ -3073,14 +3080,14 @@ Thu Oct 10 14:31:30 2002 J"orn Rennecke <joern.rennecke@superh.com>
|
||||||
* tc-v850.c (v850_relax): Declare.
|
* tc-v850.c (v850_relax): Declare.
|
||||||
(v850_longcode): New routine.
|
(v850_longcode): New routine.
|
||||||
(v850_handle_align): New routine.
|
(v850_handle_align): New routine.
|
||||||
(md_pseudo_table): Add longcall and longjump.
|
(md_pseudo_table): Add longcall and longjump.
|
||||||
(md_parse_option): Check for relax option.
|
(md_parse_option): Check for relax option.
|
||||||
(tc_gen_reloc): Handle BFD_RELOC_V850_LONGCALL,
|
(tc_gen_reloc): Handle BFD_RELOC_V850_LONGCALL,
|
||||||
BFD_RELOC_V850_LONGJUMP, and BFD_RELOC_V850_ALIGN.
|
BFD_RELOC_V850_LONGJUMP, and BFD_RELOC_V850_ALIGN.
|
||||||
(md_apply_fix3): Likewise.
|
(md_apply_fix3): Likewise.
|
||||||
(v850_force_relocation): Likewise.
|
(v850_force_relocation): Likewise.
|
||||||
(v850_comm): Change the current section.
|
(v850_comm): Change the current section.
|
||||||
(md_assemble): Ensure that the correct value is put in the
|
(md_assemble): Ensure that the correct value is put in the
|
||||||
fixup.
|
fixup.
|
||||||
(v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss,
|
(v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss,
|
||||||
v850_zbss, v850_rosdata, v850_rozdata): Fix section book keeping.
|
v850_zbss, v850_rosdata, v850_rozdata): Fix section book keeping.
|
||||||
|
|
|
@ -111,7 +111,7 @@ static void ppc_ec PARAMS ((int));
|
||||||
static void ppc_ef PARAMS ((int));
|
static void ppc_ef PARAMS ((int));
|
||||||
static void ppc_es PARAMS ((int));
|
static void ppc_es PARAMS ((int));
|
||||||
static void ppc_csect PARAMS ((int));
|
static void ppc_csect PARAMS ((int));
|
||||||
static void ppc_change_csect PARAMS ((symbolS *));
|
static void ppc_change_csect PARAMS ((symbolS *, offsetT));
|
||||||
static void ppc_function PARAMS ((int));
|
static void ppc_function PARAMS ((int));
|
||||||
static void ppc_extern PARAMS ((int));
|
static void ppc_extern PARAMS ((int));
|
||||||
static void ppc_lglobl PARAMS ((int));
|
static void ppc_lglobl PARAMS ((int));
|
||||||
|
@ -3006,6 +3006,7 @@ ppc_csect (ignore)
|
||||||
char *name;
|
char *name;
|
||||||
char endc;
|
char endc;
|
||||||
symbolS *sym;
|
symbolS *sym;
|
||||||
|
offsetT align;
|
||||||
|
|
||||||
name = input_line_pointer;
|
name = input_line_pointer;
|
||||||
endc = get_symbol_end ();
|
endc = get_symbol_end ();
|
||||||
|
@ -3020,22 +3021,24 @@ ppc_csect (ignore)
|
||||||
symbol_get_tc (sym)->class = XMC_PR;
|
symbol_get_tc (sym)->class = XMC_PR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ppc_change_csect (sym);
|
align = 2;
|
||||||
|
|
||||||
if (*input_line_pointer == ',')
|
if (*input_line_pointer == ',')
|
||||||
{
|
{
|
||||||
++input_line_pointer;
|
++input_line_pointer;
|
||||||
symbol_get_tc (sym)->align = get_absolute_expression ();
|
align = get_absolute_expression ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ppc_change_csect (sym, align);
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Change to a different csect. */
|
/* Change to a different csect. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ppc_change_csect (sym)
|
ppc_change_csect (sym, align)
|
||||||
symbolS *sym;
|
symbolS *sym;
|
||||||
|
offsetT align;
|
||||||
{
|
{
|
||||||
if (S_IS_DEFINED (sym))
|
if (S_IS_DEFINED (sym))
|
||||||
subseg_set (S_GET_SEGMENT (sym), symbol_get_tc (sym)->subseg);
|
subseg_set (S_GET_SEGMENT (sym), symbol_get_tc (sym)->subseg);
|
||||||
|
@ -3045,11 +3048,14 @@ ppc_change_csect (sym)
|
||||||
int after_toc;
|
int after_toc;
|
||||||
int hold_chunksize;
|
int hold_chunksize;
|
||||||
symbolS *list;
|
symbolS *list;
|
||||||
|
int is_code;
|
||||||
|
segT sec;
|
||||||
|
|
||||||
/* This is a new csect. We need to look at the symbol class to
|
/* This is a new csect. We need to look at the symbol class to
|
||||||
figure out whether it should go in the text section or the
|
figure out whether it should go in the text section or the
|
||||||
data section. */
|
data section. */
|
||||||
after_toc = 0;
|
after_toc = 0;
|
||||||
|
is_code = 0;
|
||||||
switch (symbol_get_tc (sym)->class)
|
switch (symbol_get_tc (sym)->class)
|
||||||
{
|
{
|
||||||
case XMC_PR:
|
case XMC_PR:
|
||||||
|
@ -3064,6 +3070,7 @@ ppc_change_csect (sym)
|
||||||
symbol_get_tc (sym)->subseg = ppc_text_subsegment;
|
symbol_get_tc (sym)->subseg = ppc_text_subsegment;
|
||||||
++ppc_text_subsegment;
|
++ppc_text_subsegment;
|
||||||
list_ptr = &ppc_text_csects;
|
list_ptr = &ppc_text_csects;
|
||||||
|
is_code = 1;
|
||||||
break;
|
break;
|
||||||
case XMC_RW:
|
case XMC_RW:
|
||||||
case XMC_TC0:
|
case XMC_TC0:
|
||||||
|
@ -3091,18 +3098,24 @@ ppc_change_csect (sym)
|
||||||
hold_chunksize = chunksize;
|
hold_chunksize = chunksize;
|
||||||
chunksize = 64;
|
chunksize = 64;
|
||||||
|
|
||||||
subseg_new (segment_name (S_GET_SEGMENT (sym)),
|
sec = subseg_new (segment_name (S_GET_SEGMENT (sym)),
|
||||||
symbol_get_tc (sym)->subseg);
|
symbol_get_tc (sym)->subseg);
|
||||||
|
|
||||||
chunksize = hold_chunksize;
|
chunksize = hold_chunksize;
|
||||||
|
|
||||||
if (after_toc)
|
if (after_toc)
|
||||||
ppc_after_toc_frag = frag_now;
|
ppc_after_toc_frag = frag_now;
|
||||||
|
|
||||||
|
record_alignment (sec, align);
|
||||||
|
if (is_code)
|
||||||
|
frag_align_code (align, 0);
|
||||||
|
else
|
||||||
|
frag_align (align, 0, 0);
|
||||||
|
|
||||||
symbol_set_frag (sym, frag_now);
|
symbol_set_frag (sym, frag_now);
|
||||||
S_SET_VALUE (sym, (valueT) frag_now_fix ());
|
S_SET_VALUE (sym, (valueT) frag_now_fix ());
|
||||||
|
|
||||||
symbol_get_tc (sym)->align = 2;
|
symbol_get_tc (sym)->align = align;
|
||||||
symbol_get_tc (sym)->output = 1;
|
symbol_get_tc (sym)->output = 1;
|
||||||
symbol_get_tc (sym)->within = sym;
|
symbol_get_tc (sym)->within = sym;
|
||||||
|
|
||||||
|
@ -3140,7 +3153,7 @@ ppc_section (type)
|
||||||
|
|
||||||
sym = symbol_find_or_make (name);
|
sym = symbol_find_or_make (name);
|
||||||
|
|
||||||
ppc_change_csect (sym);
|
ppc_change_csect (sym, 2);
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
}
|
}
|
||||||
|
@ -3177,7 +3190,7 @@ ppc_named_section (ignore)
|
||||||
|
|
||||||
sym = symbol_find_or_make (real_name);
|
sym = symbol_find_or_make (real_name);
|
||||||
|
|
||||||
ppc_change_csect (sym);
|
ppc_change_csect (sym, 2);
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
}
|
}
|
||||||
|
@ -5047,8 +5060,9 @@ void
|
||||||
ppc_frob_section (sec)
|
ppc_frob_section (sec)
|
||||||
asection *sec;
|
asection *sec;
|
||||||
{
|
{
|
||||||
static bfd_size_type vma = 0;
|
static bfd_vma vma = 0;
|
||||||
|
|
||||||
|
vma = md_section_align (sec, vma);
|
||||||
bfd_set_section_vma (stdoutput, sec, vma);
|
bfd_set_section_vma (stdoutput, sec, vma);
|
||||||
vma += bfd_section_size (stdoutput, sec);
|
vma += bfd_section_size (stdoutput, sec);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue