diff options
author | Nick Clifton <nickc@redhat.com> | 2004-10-18 08:02:25 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2004-10-18 08:02:25 +0000 |
commit | 87e62348537a588c497fd570ef9b13ea56e3b442 (patch) | |
tree | b5d9f5d3cdece265a4ee622d636201e061794d44 /gas/config/tc-xstormy16.c | |
parent | 7f67d4c98a7efc189145ba077f968ef626c9c748 (diff) | |
download | gdb-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.c | 22 |
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; |