mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-22 03:30:22 +02:00
Minor updates when testing on a prototype, quadcore Loongson mips.
* check/float.tst: Comment out the int to negative infinity test in mips for the moment because not all Loongson agrees on the result. * lib/jit_disasm.c: Add a test instead of an assertion when loading symbols for disassembly due to a failure with a simple binutils build in Debian mipsel64.
This commit is contained in:
parent
9afca85921
commit
5d60ba7b05
3 changed files with 62 additions and 48 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2013-03-06 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
* check/float.tst: Comment out the int to negative infinity
|
||||
test in mips for the moment because not all Loongson agrees
|
||||
on the result.
|
||||
|
||||
* lib/jit_disasm.c: Add a test instead of an assertion
|
||||
when loading symbols for disassembly due to a failure with
|
||||
a simple binutils build in Debian mipsel64.
|
||||
|
||||
2013-03-06 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
* include/lightning/jit_private.h, lib/jit_arm-cpu.c,
|
||||
|
|
|
@ -325,7 +325,10 @@ W##f##r0##f0##l:
|
|||
|
||||
f2w(__LINE__, 0, 0)
|
||||
f2w(__LINE__, 1, 1)
|
||||
/* not all loongson agree on it */
|
||||
#if !__mips__
|
||||
f2w(__LINE__, wninf, $nInf)
|
||||
#endif
|
||||
f2w(__LINE__, wpinf, $pInf)
|
||||
f2w(__LINE__, wnan, $NaN)
|
||||
|
||||
|
|
|
@ -96,59 +96,60 @@ jit_init_debug(void)
|
|||
long sym_storage;
|
||||
long dyn_storage;
|
||||
|
||||
sym_storage = bfd_get_symtab_upper_bound(disasm_bfd);
|
||||
assert(sym_storage >= 0);
|
||||
if ((sym_storage = bfd_get_symtab_upper_bound(disasm_bfd)) >= 0) {
|
||||
|
||||
if (bfd_get_file_flags(disasm_bfd) & DYNAMIC) {
|
||||
dyn_storage = bfd_get_dynamic_symtab_upper_bound(disasm_bfd);
|
||||
assert(dyn_storage >= 0);
|
||||
}
|
||||
else
|
||||
dyn_storage = 0;
|
||||
if (bfd_get_file_flags(disasm_bfd) & DYNAMIC) {
|
||||
dyn_storage = bfd_get_dynamic_symtab_upper_bound(disasm_bfd);
|
||||
assert(dyn_storage >= 0);
|
||||
}
|
||||
else
|
||||
dyn_storage = 0;
|
||||
|
||||
disasm_symbols = malloc(sym_storage + dyn_storage);
|
||||
sym_count = bfd_canonicalize_symtab(disasm_bfd, disasm_symbols);
|
||||
assert(sym_count >= 0);
|
||||
if (dyn_storage) {
|
||||
dyn_count = bfd_canonicalize_dynamic_symtab(disasm_bfd,
|
||||
disasm_symbols +
|
||||
sym_count);
|
||||
assert(dyn_count >= 0);
|
||||
}
|
||||
else
|
||||
dyn_count = 0;
|
||||
disasm_num_symbols = sym_count + dyn_count;
|
||||
disasm_symbols = malloc(sym_storage + dyn_storage);
|
||||
sym_count = bfd_canonicalize_symtab(disasm_bfd, disasm_symbols);
|
||||
assert(sym_count >= 0);
|
||||
if (dyn_storage) {
|
||||
dyn_count = bfd_canonicalize_dynamic_symtab(disasm_bfd,
|
||||
disasm_symbols +
|
||||
sym_count);
|
||||
assert(dyn_count >= 0);
|
||||
}
|
||||
else
|
||||
dyn_count = 0;
|
||||
disasm_num_symbols = sym_count + dyn_count;
|
||||
|
||||
disasm_num_synthetic = bfd_get_synthetic_symtab(disasm_bfd,
|
||||
sym_count,
|
||||
disasm_symbols,
|
||||
dyn_count,
|
||||
disasm_symbols +
|
||||
sym_count,
|
||||
&disasm_synthetic);
|
||||
if (disasm_num_synthetic > 0) {
|
||||
disasm_symbols = realloc(disasm_symbols,
|
||||
sym_storage + dyn_storage +
|
||||
disasm_num_synthetic * sizeof(asymbol *));
|
||||
for (offset = 0; offset < disasm_num_synthetic; offset++)
|
||||
disasm_symbols[disasm_num_symbols++] =
|
||||
disasm_synthetic + offset;
|
||||
}
|
||||
disasm_num_synthetic = bfd_get_synthetic_symtab(disasm_bfd,
|
||||
sym_count,
|
||||
disasm_symbols,
|
||||
dyn_count,
|
||||
disasm_symbols +
|
||||
sym_count,
|
||||
&disasm_synthetic);
|
||||
if (disasm_num_synthetic > 0) {
|
||||
disasm_symbols = realloc(disasm_symbols,
|
||||
sym_storage + dyn_storage +
|
||||
disasm_num_synthetic *
|
||||
sizeof(asymbol *));
|
||||
for (offset = 0; offset < disasm_num_synthetic; offset++)
|
||||
disasm_symbols[disasm_num_symbols++] =
|
||||
disasm_synthetic + offset;
|
||||
}
|
||||
|
||||
/* remove symbols not useful for disassemble */
|
||||
in = out = disasm_symbols;
|
||||
for (offset = 0; offset < disasm_num_symbols; offset++) {
|
||||
symbol = *in++;
|
||||
if (symbol->name &&
|
||||
symbol->name[0] != '\0' &&
|
||||
!(symbol->flags & (BSF_DEBUGGING | BSF_SECTION_SYM)) &&
|
||||
!bfd_is_und_section(symbol->section) &&
|
||||
!bfd_is_com_section(symbol->section))
|
||||
*out++ = symbol;
|
||||
/* remove symbols not useful for disassemble */
|
||||
in = out = disasm_symbols;
|
||||
for (offset = 0; offset < disasm_num_symbols; offset++) {
|
||||
symbol = *in++;
|
||||
if (symbol->name &&
|
||||
symbol->name[0] != '\0' &&
|
||||
!(symbol->flags & (BSF_DEBUGGING | BSF_SECTION_SYM)) &&
|
||||
!bfd_is_und_section(symbol->section) &&
|
||||
!bfd_is_com_section(symbol->section))
|
||||
*out++ = symbol;
|
||||
}
|
||||
disasm_num_symbols = out - disasm_symbols;
|
||||
qsort(disasm_symbols, disasm_num_symbols,
|
||||
sizeof(asymbol *), disasm_compare_symbols);
|
||||
}
|
||||
disasm_num_symbols = out - disasm_symbols;
|
||||
qsort(disasm_symbols, disasm_num_symbols,
|
||||
sizeof(asymbol *), disasm_compare_symbols);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue