* config/tc-xtensa.c (xg_symbolic_immeds_fit): Relax for weak
	references but not weak definitions.
gas/testsuite/
	* gas/xtensa/all.exp: Run new weak-call test.
	* gas/xtensa/weak-call.d: New.
	* gas/xtensa/weak-call.s: New.
This commit is contained in:
Bob Wilson 2007-12-13 19:03:45 +00:00
parent 3690dd376b
commit 38f9cb7fe1
6 changed files with 39 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2007-12-13 Bob Wilson <bob.wilson@acm.org>
* config/tc-xtensa.c (xg_symbolic_immeds_fit): Relax for weak
references but not weak definitions.
2007-12-12 Bob Wilson <bob.wilson@acm.org>
* config/tc-xtensa.c (xg_symbolic_immeds_fit): Do not relax calls to

View File

@ -3241,9 +3241,15 @@ xg_symbolic_immeds_fit (const TInsn *insn,
|| S_GET_SEGMENT (expr->X_add_symbol) != pc_seg)
{
/* For a direct call with --no-longcalls, be optimistic and
assume it will be in range. */
assume it will be in range. If the symbol is weak and
undefined, it may remain undefined at link-time, in which
case it will have a zero value and almost certainly be out
of range for a direct call; thus, relax for undefined weak
symbols even if longcalls is not enabled. */
if (is_direct_call_opcode (insn->opcode)
&& ! pc_frag->tc_frag_data.use_longcalls)
&& ! pc_frag->tc_frag_data.use_longcalls
&& (! S_IS_WEAK (expr->X_add_symbol)
|| S_IS_DEFINED (expr->X_add_symbol)))
return TRUE;
return FALSE;

View File

@ -1,3 +1,9 @@
2007-12-13 Bob Wilson <bob.wilson@acm.org>
* gas/xtensa/all.exp: Run new weak-call test.
* gas/xtensa/weak-call.d: New.
* gas/xtensa/weak-call.s: New.
2007-12-11 Catherine Moore <clm@codesourcery.com>
gas/elf/symtab.s: New test.

View File

@ -80,6 +80,7 @@ if [istarget xtensa*-*-*] then {
run_dump_test "short_branch_offset"
run_dump_test "pcrel"
run_dump_test "weak-call"
}
if [info exists errorInfo] then {

View File

@ -0,0 +1,11 @@
#as:
#objdump: -r -j .text
#name: relaxing calls to weak symbols
.*: +file format .*xtensa.*
RELOCATION RECORDS FOR \[\.text\]:
OFFSET TYPE VALUE
00000000 R_XTENSA_SLOT0_OP weakdef
00000003 R_XTENSA_SLOT0_OP \.literal
00000003 R_XTENSA_ASM_EXPAND weakref

View File

@ -0,0 +1,8 @@
.text
.begin no-longcalls
.weak weakdef
call8 weakdef
weakdef:
.weak weakref
call8 weakref
.end no-longcalls