forked from Imagelibrary/binutils-gdb
binutils/testsuite/
* binutils-all/arm/thumb2-cond.s: Use instructions instead of .short. gas/ * config/obj-elf.c (obj_elf_ident): Notify section change to the hook. * config/tc-arm.c (make_mapping_symbol): New function, from mapping_state. Save mapping symbols in the frag. (insert_data_mapping_symbol): New. (mapping_state): Use make_mapping_symbol, improve state transitions. (mapping_state_2): New. Provide dummy definition. (opcode_select): Do not call mapping_state. (s_bss): Call md_elf_section_change_hook instead of mapping_state. (output_inst): Update use of tc_frag_data. (new_automatic_it_block): Call mapping_state before emitting the IT instruction. (md_assemble): Move mapping_state to just before outputting the new instruction. (arm_handle_align): Update use of tc_frag_data. Call insert_data_mapping_symbol. (arm_init_frag): Update use of tc_frag_data. Call mapping_state_2. (arm_elf_change_section): Always update the mapping symbol FSM state. (check_mapping_symbols): New function. (arm_adjust_symtab): Use check_mapping_symbols. * config/tc-arm.h (struct arm_frag_type): New. (TC_FRAG_TYPE): Change to struct arm_frag_type. (TC_FRAG_INIT): Pass max_chars. (arm_init_frag): Update prototype. gas/testsuite/ * gas/arm/mapdir.d, gas/arm/mapdir.s: New files. * gas/arm/mapping.d: Adapted to new symbols generation. * gas/arm/mapping2.d: New test case. * gas/arm/mapping2.s: New file. * gas/arm/mapping3.d: New test case. * gas/arm/mapping3.s: New file. * gas/arm/mapping4.d: New test case. * gas/arm/mapping4.s: New file. * gas/arm/mapshort-eabi.d: Adapted to new symbols generation. * gas/elf/section2.e-armeabi: Adapted to new symbols generation.
This commit is contained in:
@@ -199,8 +199,21 @@ void arm_copy_symbol_attributes (symbolS *, symbolS *);
|
||||
/* For frags in code sections we need to record whether they contain
|
||||
ARM code or THUMB code. This is that if they have to be aligned,
|
||||
they can contain the correct type of no-op instruction. */
|
||||
#define TC_FRAG_TYPE int
|
||||
#define TC_FRAG_INIT(fragp) arm_init_frag (fragp)
|
||||
struct arm_frag_type
|
||||
{
|
||||
int thumb_mode;
|
||||
#ifdef OBJ_ELF
|
||||
/* If there is a mapping symbol at offset 0 in this frag,
|
||||
it will be saved in FIRST_MAP. If there are any mapping
|
||||
symbols in this frag, the last one will be saved in
|
||||
LAST_MAP. */
|
||||
symbolS *first_map, *last_map;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define TC_FRAG_TYPE struct arm_frag_type
|
||||
/* NOTE: max_chars is a local variable from frag_var / frag_variant. */
|
||||
#define TC_FRAG_INIT(fragp) arm_init_frag (fragp, max_chars)
|
||||
#define HANDLE_ALIGN(fragp) arm_handle_align (fragp)
|
||||
|
||||
#define md_do_align(N, FILL, LEN, MAX, LABEL) \
|
||||
@@ -307,7 +320,7 @@ extern char * arm_canonicalize_symbol_name (char *);
|
||||
extern void arm_adjust_symtab (void);
|
||||
extern void armelf_frob_symbol (symbolS *, int *);
|
||||
extern void cons_fix_new_arm (fragS *, int, int, expressionS *);
|
||||
extern void arm_init_frag (struct frag *);
|
||||
extern void arm_init_frag (struct frag *, int);
|
||||
extern void arm_handle_align (struct frag *);
|
||||
extern bfd_boolean arm_fix_adjustable (struct fix *);
|
||||
extern int arm_elf_section_type (const char *, size_t);
|
||||
|
||||
Reference in New Issue
Block a user