2011-04-07 Paul Carroll<pcarroll@codesourcery.com>
opcodes/ * arm-dis.c (print_insn): init vars moved into private_data structure. binutils/testsuite/ * binutils-all/arm/simple.s: Demo issue with objdump with multiple input files * binutils-all/arm/objdump.exp: added new ARM test case code
This commit is contained in:
parent
33b5443119
commit
1fbaefec00
|
@ -1,3 +1,9 @@
|
||||||
|
2011-04-07 Paul Carroll<pcarroll@codesourcery.com>
|
||||||
|
|
||||||
|
* binutils-all/arm/simple.s: Demo issue with objdump with
|
||||||
|
multiple input files
|
||||||
|
* binutils-all/arm/objdump.exp: added new ARM test case code
|
||||||
|
|
||||||
2011-04-06 Joseph Myers <joseph@codesourcery.com>
|
2011-04-06 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* binutils-all/objcopy.exp (*arm*-*-coff): Change to arm*-*-coff.
|
* binutils-all/objcopy.exp (*arm*-*-coff): Change to arm*-*-coff.
|
||||||
|
|
|
@ -61,3 +61,29 @@ if [regexp $want $got] then {
|
||||||
} else {
|
} else {
|
||||||
fail "thumb2-cond test2"
|
fail "thumb2-cond test2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Set up the test of multiple disassemblies
|
||||||
|
###########################
|
||||||
|
|
||||||
|
if {![binutils_assemble $srcdir/$subdir/simple.s tmpdir/simple.o]} then {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if [is_remote host] {
|
||||||
|
set objfile [remote_download host tmpdir/simple.o]
|
||||||
|
} else {
|
||||||
|
set objfile tmpdir/simple.o
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure multiple disassemblies come out the same
|
||||||
|
|
||||||
|
set got [binutils_run $OBJDUMP "-dr $objfile $objfile"]
|
||||||
|
|
||||||
|
set want "$objfile:\[ \]*file format.*$objfile:\[ \]*file format.*push.*add.*sub.*str.*add.*pop"
|
||||||
|
|
||||||
|
if [regexp $want $got] then {
|
||||||
|
pass "multiple input files"
|
||||||
|
} else {
|
||||||
|
fail "multiple input files"
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
.cpu arm7tdmi-s
|
||||||
|
.fpu softvfp
|
||||||
|
.file "y.c"
|
||||||
|
.bss
|
||||||
|
.align 2
|
||||||
|
l:
|
||||||
|
.space 4
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global f1
|
||||||
|
.type f1, %function
|
||||||
|
f1:
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.align 2
|
||||||
|
.word l
|
||||||
|
.size f1, .-f1
|
||||||
|
.align 2
|
||||||
|
.global main
|
||||||
|
.type main, %function
|
||||||
|
main:
|
||||||
|
stmfd sp!, {fp, lr}
|
||||||
|
add fp, sp, #4
|
||||||
|
bx lr
|
||||||
|
.align 2
|
||||||
|
.word 1717986919
|
||||||
|
.word -1840700269
|
||||||
|
.word l
|
||||||
|
.size main, .-main
|
||||||
|
.ident "GCC: (Sourcery G++ 2011.03) 4.5.1"
|
|
@ -1,3 +1,7 @@
|
||||||
|
2011-04-07 Paul Carroll<pcarroll@codesourcery.com>
|
||||||
|
|
||||||
|
* arm-dis.c (print_insn): init vars moved into private_data structure.
|
||||||
|
|
||||||
2011-03-24 Mike Frysinger <vapier@gentoo.org>
|
2011-03-24 Mike Frysinger <vapier@gentoo.org>
|
||||||
|
|
||||||
* bfin-dis.c (decode_dsp32mac_0): Move MM zeroing down to MAC0 logic.
|
* bfin-dis.c (decode_dsp32mac_0): Move MM zeroing down to MAC0 logic.
|
||||||
|
|
|
@ -45,6 +45,14 @@
|
||||||
#define NUM_ELEM(a) (sizeof (a) / sizeof (a)[0])
|
#define NUM_ELEM(a) (sizeof (a) / sizeof (a)[0])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Cached mapping symbol state. */
|
||||||
|
enum map_type
|
||||||
|
{
|
||||||
|
MAP_ARM,
|
||||||
|
MAP_THUMB,
|
||||||
|
MAP_DATA
|
||||||
|
};
|
||||||
|
|
||||||
struct arm_private_data
|
struct arm_private_data
|
||||||
{
|
{
|
||||||
/* The features to use when disassembling optional instructions. */
|
/* The features to use when disassembling optional instructions. */
|
||||||
|
@ -53,6 +61,13 @@ struct arm_private_data
|
||||||
/* Whether any mapping symbols are present in the provided symbol
|
/* Whether any mapping symbols are present in the provided symbol
|
||||||
table. -1 if we do not know yet, otherwise 0 or 1. */
|
table. -1 if we do not know yet, otherwise 0 or 1. */
|
||||||
int has_mapping_symbols;
|
int has_mapping_symbols;
|
||||||
|
|
||||||
|
/* Track the last type (although this doesn't seem to be useful) */
|
||||||
|
enum map_type last_type;
|
||||||
|
|
||||||
|
/* Tracking symbol table information */
|
||||||
|
int last_mapping_sym;
|
||||||
|
bfd_vma last_mapping_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct opcode32
|
struct opcode32
|
||||||
|
@ -1642,18 +1657,6 @@ static unsigned int ifthen_next_state;
|
||||||
static bfd_vma ifthen_address;
|
static bfd_vma ifthen_address;
|
||||||
#define IFTHEN_COND ((ifthen_state >> 4) & 0xf)
|
#define IFTHEN_COND ((ifthen_state >> 4) & 0xf)
|
||||||
|
|
||||||
/* Cached mapping symbol state. */
|
|
||||||
enum map_type
|
|
||||||
{
|
|
||||||
MAP_ARM,
|
|
||||||
MAP_THUMB,
|
|
||||||
MAP_DATA
|
|
||||||
};
|
|
||||||
|
|
||||||
enum map_type last_type;
|
|
||||||
int last_mapping_sym = -1;
|
|
||||||
bfd_vma last_mapping_addr = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions. */
|
/* Functions. */
|
||||||
int
|
int
|
||||||
|
@ -4635,6 +4638,8 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
|
||||||
select_arm_features (info->mach, & private.features);
|
select_arm_features (info->mach, & private.features);
|
||||||
|
|
||||||
private.has_mapping_symbols = -1;
|
private.has_mapping_symbols = -1;
|
||||||
|
private.last_mapping_sym = -1;
|
||||||
|
private.last_mapping_addr = 0;
|
||||||
|
|
||||||
info->private_data = & private;
|
info->private_data = & private;
|
||||||
}
|
}
|
||||||
|
@ -4658,8 +4663,8 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
|
||||||
/* Start scanning at the start of the function, or wherever
|
/* Start scanning at the start of the function, or wherever
|
||||||
we finished last time. */
|
we finished last time. */
|
||||||
start = info->symtab_pos + 1;
|
start = info->symtab_pos + 1;
|
||||||
if (start < last_mapping_sym)
|
if (start < private_data->last_mapping_sym)
|
||||||
start = last_mapping_sym;
|
start = private_data->last_mapping_sym;
|
||||||
found = FALSE;
|
found = FALSE;
|
||||||
|
|
||||||
/* First, look for mapping symbols. */
|
/* First, look for mapping symbols. */
|
||||||
|
@ -4754,10 +4759,10 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
last_mapping_sym = last_sym;
|
private_data->last_mapping_sym = last_sym;
|
||||||
last_type = type;
|
private_data->last_type = type;
|
||||||
is_thumb = (last_type == MAP_THUMB);
|
is_thumb = (private_data->last_type == MAP_THUMB);
|
||||||
is_data = (last_type == MAP_DATA);
|
is_data = (private_data->last_type == MAP_DATA);
|
||||||
|
|
||||||
/* Look a little bit ahead to see if we should print out
|
/* Look a little bit ahead to see if we should print out
|
||||||
two or four bytes of data. If there's a symbol,
|
two or four bytes of data. If there's a symbol,
|
||||||
|
|
Loading…
Reference in New Issue