diff options
author | Daniel Jacobowitz <drow@false.org> | 2009-08-07 19:30:31 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2009-08-07 19:30:31 +0000 |
commit | 940b5ce0998a436a5e414250ab8fa9a25138c839 (patch) | |
tree | 0baeacd6ca529e30c35dfab2aabfd6c9da2ffa31 | |
parent | ddd3c53c3d15eefc6edb664887eba9502eda5c44 (diff) | |
download | gdb-940b5ce0998a436a5e414250ab8fa9a25138c839.zip gdb-940b5ce0998a436a5e414250ab8fa9a25138c839.tar.gz gdb-940b5ce0998a436a5e414250ab8fa9a25138c839.tar.bz2 |
gas/
* config/tc-arm.c (marked_pr_dependency, mapstate): Delete global
variables.
(mapping_state): Use the section's mapstate.
(mapping_state_2): Likewise. Skip special sections.
(s_arm_unwind_fnend): Use the section's marked_pr_dependency.
(arm_elf_change_section): Do not set deleted globals.
* config/tc-arm.h (struct arm_segment_info_type): Document
marked_pr_dependency.
gas/testsuite/
* gas/arm/mapping2.s: Test code after .ident.
-rw-r--r-- | gas/ChangeLog | 11 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 30 | ||||
-rw-r--r-- | gas/config/tc-arm.h | 5 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mapping2.s | 1 |
5 files changed, 32 insertions, 19 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index caf0dbf..8bc0235 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +2009-08-07 Daniel Jacobowitz <dan@codesourcery.com> + + * config/tc-arm.c (marked_pr_dependency, mapstate): Delete global + variables. + (mapping_state): Use the section's mapstate. + (mapping_state_2): Likewise. Skip special sections. + (s_arm_unwind_fnend): Use the section's marked_pr_dependency. + (arm_elf_change_section): Do not set deleted globals. + * config/tc-arm.h (struct arm_segment_info_type): Document + marked_pr_dependency. + 2009-08-07 Michael Eager <eager@eagercon.com> * NEWS: Mention MicroBlaze support. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index c77e44e..20b7f2a 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -77,11 +77,6 @@ static struct unsigned sp_restored:1; } unwind; -/* Bit N indicates that an R_ARM_NONE relocation has been output for - __aeabi_unwind_cpp_prN already if set. This enables dependencies to be - emitted only once per section, to save unnecessary bloat. */ -static unsigned int marked_pr_dependency = 0; - #endif /* OBJ_ELF */ /* Results from operand parsing worker functions. */ @@ -2432,8 +2427,6 @@ s_unreq (int a ATTRIBUTE_UNUSED) Note that previously, $a and $t has type STT_FUNC (BSF_OBJECT flag), and $d has type STT_OBJECT (BSF_OBJECT flag). Now all three are untyped. */ -static enum mstate mapstate = MAP_UNDEFINED; - /* Create a new mapping symbol for the transition to STATE. */ static void @@ -2532,6 +2525,8 @@ static void mapping_state_2 (enum mstate state, int max_chars); void mapping_state (enum mstate state) { + enum mstate mapstate = seg_info (now_seg)->tc_segment_info_data.mapstate; + #define TRANSITION(from, to) (mapstate == (from) && state == (to)) if (mapstate == state) @@ -2565,12 +2560,16 @@ mapping_state (enum mstate state) static void mapping_state_2 (enum mstate state, int max_chars) { + enum mstate mapstate = seg_info (now_seg)->tc_segment_info_data.mapstate; + + if (!SEG_NORMAL (now_seg)) + return; + if (mapstate == state) /* The mapping symbol has already been emitted. There is nothing else to do. */ return; - mapstate = state; seg_info (now_seg)->tc_segment_info_data.mapstate = state; make_mapping_symbol (state, (valueT) frag_now_fix () - max_chars, frag_now); } @@ -3421,6 +3420,7 @@ s_arm_unwind_fnend (int ignored ATTRIBUTE_UNUSED) long where; char *ptr; valueT val; + unsigned int marked_pr_dependency; demand_empty_rest_of_line (); @@ -3450,6 +3450,8 @@ s_arm_unwind_fnend (int ignored ATTRIBUTE_UNUSED) /* Indicate dependency on EHABI-defined personality routines to the linker, if it hasn't been done already. */ + marked_pr_dependency + = seg_info (now_seg)->tc_segment_info_data.marked_pr_dependency; if (unwind.personality_index >= 0 && unwind.personality_index < 3 && !(marked_pr_dependency & (1 << unwind.personality_index))) { @@ -3461,9 +3463,8 @@ s_arm_unwind_fnend (int ignored ATTRIBUTE_UNUSED) }; symbolS *pr = symbol_find_or_make (name[unwind.personality_index]); fix_new (frag_now, where, 0, pr, 0, 1, BFD_RELOC_NONE); - marked_pr_dependency |= 1 << unwind.personality_index; seg_info (now_seg)->tc_segment_info_data.marked_pr_dependency - = marked_pr_dependency; + |= 1 << unwind.personality_index; } if (val) @@ -18557,19 +18558,10 @@ arm_init_frag (fragS * fragP, int max_chars) void arm_elf_change_section (void) { - segment_info_type *seginfo; - /* Link an unlinked unwind index table section to the .text section. */ if (elf_section_type (now_seg) == SHT_ARM_EXIDX && elf_linked_to_section (now_seg) == NULL) elf_linked_to_section (now_seg) = text_section; - - if (!SEG_NORMAL (now_seg)) - return; - - seginfo = seg_info (now_seg); - marked_pr_dependency = seginfo->tc_segment_info_data.marked_pr_dependency; - mapstate = seginfo->tc_segment_info_data.mapstate; } int diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h index d386770..2a85afd 100644 --- a/gas/config/tc-arm.h +++ b/gas/config/tc-arm.h @@ -272,7 +272,12 @@ void mapping_state (enum mstate); struct arm_segment_info_type { enum mstate mapstate; + + /* Bit N indicates that an R_ARM_NONE relocation has been output for + __aeabi_unwind_cpp_prN already if set. This enables dependencies to be + emitted only once per section, to save unnecessary bloat. */ unsigned int marked_pr_dependency; + struct current_it current_it; }; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 9839fe0..116493c 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-08-07 Daniel Jacobowitz <dan@codesourcery.com> + + * gas/arm/mapping2.s: Test code after .ident. + 2009-08-05 Chao-ying Fu <fu@mips.com> * gas/mips/jal-svr4pic.d, gas/mips/jal-xgot.d, diff --git a/gas/testsuite/gas/arm/mapping2.s b/gas/testsuite/gas/arm/mapping2.s index adcadc4..2629c55 100644 --- a/gas/testsuite/gas/arm/mapping2.s +++ b/gas/testsuite/gas/arm/mapping2.s @@ -17,3 +17,4 @@ foo: .size main, .-main .ident "" + nop |