aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-xstormy16.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2004-10-18 08:02:25 +0000
committerNick Clifton <nickc@redhat.com>2004-10-18 08:02:25 +0000
commit87e62348537a588c497fd570ef9b13ea56e3b442 (patch)
treeb5d9f5d3cdece265a4ee622d636201e061794d44 /gas/config/tc-xstormy16.c
parent7f67d4c98a7efc189145ba077f968ef626c9c748 (diff)
downloadgdb-87e62348537a588c497fd570ef9b13ea56e3b442.zip
gdb-87e62348537a588c497fd570ef9b13ea56e3b442.tar.gz
gdb-87e62348537a588c497fd570ef9b13ea56e3b442.tar.bz2
Accept and ignore @fptr() directives for 4-byte fixups.
Diffstat (limited to 'gas/config/tc-xstormy16.c')
-rw-r--r--gas/config/tc-xstormy16.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/gas/config/tc-xstormy16.c b/gas/config/tc-xstormy16.c
index 83ae94d..f00a866 100644
--- a/gas/config/tc-xstormy16.c
+++ b/gas/config/tc-xstormy16.c
@@ -206,13 +206,29 @@ xstormy16_cons_fix_new (f, where, nbytes, exp)
if (exp->X_op == O_fptr_symbol)
{
- if (nbytes != 2)
+ switch (nbytes)
{
+ case 4:
+ /* This can happen when gcc is generating debug output.
+ For example it can create a stab with the address of
+ a function:
+
+ .stabs "foo:F(0,21)",36,0,0,@fptr(foo)
+
+ Since this does not involve switching code pages, we
+ just allow the reloc to be generated without any
+ @fptr behaviour. */
+ exp->X_op = O_symbol;
+ code = BFD_RELOC_32;
+ break;
+ case 2:
+ exp->X_op = O_symbol;
+ code = BFD_RELOC_XSTORMY16_FPTR16;
+ break;
+ default:
as_bad ("unsupported fptr fixup size %d", nbytes);
return;
}
- exp->X_op = O_symbol;
- code = BFD_RELOC_XSTORMY16_FPTR16;
}
else if (nbytes == 1)
code = BFD_RELOC_8;