mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
* config/tc-m68k.c (relaxable_symbol): Only treat external symbols
as relaxable if embedded system, make weak syms non-relaxable. Move definition.. (tc_m68k_fix_adjustable): ..so it can be used here. (md_apply_fix_2): Sign extend without conditional.
This commit is contained in:
@ -1,5 +1,11 @@
|
|||||||
2001-05-22 Alan Modra <amodra@one.net.au>
|
2001-05-22 Alan Modra <amodra@one.net.au>
|
||||||
|
|
||||||
|
* config/tc-m68k.c (relaxable_symbol): Only treat external symbols
|
||||||
|
as relaxable if embedded system, make weak syms non-relaxable.
|
||||||
|
Move definition..
|
||||||
|
(tc_m68k_fix_adjustable): ..so it can be used here.
|
||||||
|
(md_apply_fix_2): Sign extend without conditional.
|
||||||
|
|
||||||
* config/tc-v850.c: Update copyright.
|
* config/tc-v850.c: Update copyright.
|
||||||
|
|
||||||
2001-05-16 Jeff Johnston <jjohnstn@redhat.com>
|
2001-05-16 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
@ -714,6 +714,19 @@ tc_coff_fix2rtype (fixP)
|
|||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
|
|
||||||
|
/* Return zero if the reference to SYMBOL from within the same segment may
|
||||||
|
be relaxed. */
|
||||||
|
|
||||||
|
/* On an ELF system, we can't relax an externally visible symbol,
|
||||||
|
because it may be overridden by a shared library. However, if
|
||||||
|
TARGET_OS is "elf", then we presume that we are assembling for an
|
||||||
|
embedded system, in which case we don't have to worry about shared
|
||||||
|
libraries, and we can relax any external sym. */
|
||||||
|
|
||||||
|
#define relaxable_symbol(symbol) \
|
||||||
|
(!((S_IS_EXTERNAL (symbol) && strcmp (TARGET_OS, "elf") != 0) \
|
||||||
|
|| S_IS_WEAK (symbol)))
|
||||||
|
|
||||||
/* Compute the relocation code for a fixup of SIZE bytes, using pc
|
/* Compute the relocation code for a fixup of SIZE bytes, using pc
|
||||||
relative relocation if PCREL is non-zero. PIC says whether a special
|
relative relocation if PCREL is non-zero. PIC says whether a special
|
||||||
pic relocation was requested. */
|
pic relocation was requested. */
|
||||||
@ -832,8 +845,7 @@ tc_m68k_fix_adjustable (fixP)
|
|||||||
fixS *fixP;
|
fixS *fixP;
|
||||||
{
|
{
|
||||||
/* Prevent all adjustments to global symbols. */
|
/* Prevent all adjustments to global symbols. */
|
||||||
if (S_IS_EXTERNAL (fixP->fx_addsy)
|
if (! relaxable_symbol (fixP->fx_addsy))
|
||||||
|| S_IS_WEAK (fixP->fx_addsy))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* adjust_reloc_syms doesn't know about the GOT */
|
/* adjust_reloc_syms doesn't know about the GOT */
|
||||||
@ -866,6 +878,8 @@ tc_m68k_fix_adjustable (fixP)
|
|||||||
|
|
||||||
#define get_reloc_code(SIZE,PCREL,OTHER) NO_RELOC
|
#define get_reloc_code(SIZE,PCREL,OTHER) NO_RELOC
|
||||||
|
|
||||||
|
#define relaxable_symbol(symbol) 1
|
||||||
|
|
||||||
#endif /* OBJ_ELF */
|
#endif /* OBJ_ELF */
|
||||||
|
|
||||||
#ifdef BFD_ASSEMBLER
|
#ifdef BFD_ASSEMBLER
|
||||||
@ -983,27 +997,6 @@ tc_gen_reloc (section, fixp)
|
|||||||
|
|
||||||
#endif /* BFD_ASSEMBLER */
|
#endif /* BFD_ASSEMBLER */
|
||||||
|
|
||||||
/* Return zero if the reference to SYMBOL from within the same segment may
|
|
||||||
be relaxed. */
|
|
||||||
#ifdef OBJ_ELF
|
|
||||||
|
|
||||||
/* On an ELF system, we can't relax an externally visible symbol,
|
|
||||||
because it may be overridden by a shared library. However, if
|
|
||||||
TARGET_OS is "elf", then we presume that we are assembling for an
|
|
||||||
embedded system, in which case we don't have to worry about shared
|
|
||||||
libraries, and we can relax anything. */
|
|
||||||
|
|
||||||
#define relaxable_symbol(symbol) \
|
|
||||||
(strcmp (TARGET_OS, "elf") == 0 \
|
|
||||||
|| (! S_IS_EXTERNAL (symbol) \
|
|
||||||
&& ! S_IS_WEAK (symbol)))
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define relaxable_symbol(symbol) 1
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Handle of the OPCODE hash table. NULL means any use before
|
/* Handle of the OPCODE hash table. NULL means any use before
|
||||||
m68k_ip_begin() will crash. */
|
m68k_ip_begin() will crash. */
|
||||||
static struct hash_control *op_hash;
|
static struct hash_control *op_hash;
|
||||||
@ -4226,10 +4219,7 @@ md_apply_fix_2 (fixP, val)
|
|||||||
buf += fixP->fx_where;
|
buf += fixP->fx_where;
|
||||||
/* end ibm compiler workaround */
|
/* end ibm compiler workaround */
|
||||||
|
|
||||||
if (val & 0x80000000)
|
val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000;
|
||||||
val |= ~(addressT)0x7fffffff;
|
|
||||||
else
|
|
||||||
val &= 0x7fffffff;
|
|
||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
if (fixP->fx_addsy)
|
if (fixP->fx_addsy)
|
||||||
|
Reference in New Issue
Block a user