mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 23:39:35 +08:00
* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust PLT or
GOT relocs either.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
Tue Feb 28 15:34:14 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust PLT or
|
||||||
|
GOT relocs either.
|
||||||
|
|
||||||
Mon Feb 27 13:03:41 1995 Kung Hsu <kung@mexican.cygnus.com>
|
Mon Feb 27 13:03:41 1995 Kung Hsu <kung@mexican.cygnus.com>
|
||||||
|
|
||||||
* configure.in: add a29k-*-vxworks configuration.
|
* configure.in: add a29k-*-vxworks configuration.
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "as.h"
|
#include "as.h"
|
||||||
|
#include "subsegs.h"
|
||||||
|
|
||||||
#include "obstack.h"
|
#include "obstack.h"
|
||||||
#include "opcode/i386.h"
|
#include "opcode/i386.h"
|
||||||
@ -686,15 +687,20 @@ reloc (size, pcrel, other)
|
|||||||
* to make sure that the dynamic relocations are done correctly, so in
|
* to make sure that the dynamic relocations are done correctly, so in
|
||||||
* some cases we force the original symbol to be used.
|
* some cases we force the original symbol to be used.
|
||||||
*/
|
*/
|
||||||
|
int
|
||||||
tc_i386_fix_adjustable(fixP)
|
tc_i386_fix_adjustable(fixP)
|
||||||
fixS * fixP;
|
fixS * fixP;
|
||||||
{
|
{
|
||||||
|
#ifndef OBJ_AOUT
|
||||||
/* Prevent all adjustments to global symbols. */
|
/* Prevent all adjustments to global symbols. */
|
||||||
if (!S_IS_LOCAL (fixP->fx_addsy))
|
if (S_IS_EXTERN (fixP->fx_addsy))
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
#ifdef BFD_ASSEMBLER
|
#ifdef BFD_ASSEMBLER
|
||||||
/* adjust_reloc_syms doesn't know about the GOT */
|
/* adjust_reloc_syms doesn't know about the GOT */
|
||||||
if (fixP->fx_r_type == BFD_RELOC_386_GOTOFF)
|
if (fixP->fx_r_type == BFD_RELOC_386_GOTOFF
|
||||||
|
|| fixP->fx_r_type == BFD_RELOC_386_PLT32
|
||||||
|
|| fixP->fx_r_type == BFD_RELOC_386_GOT32)
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
@ -1788,9 +1794,12 @@ md_assemble (line)
|
|||||||
insn_size += size;
|
insn_size += size;
|
||||||
#ifdef BFD_ASSEMBLER
|
#ifdef BFD_ASSEMBLER
|
||||||
if (r_type == BFD_RELOC_32
|
if (r_type == BFD_RELOC_32
|
||||||
&& i.imms[n]->X_op == O_symbol
|
|
||||||
&& GOT_symbol
|
&& GOT_symbol
|
||||||
&& GOT_symbol == i.imms[n]->X_add_symbol)
|
&& GOT_symbol == i.imms[n]->X_add_symbol
|
||||||
|
&& (i.imms[n]->X_op == O_symbol
|
||||||
|
|| (i.imms[n]->X_op == O_add
|
||||||
|
&& (i.imms[n]->X_op_symbol->sy_value.X_op
|
||||||
|
== O_subtract))))
|
||||||
{
|
{
|
||||||
r_type = BFD_RELOC_386_GOTPC;
|
r_type = BFD_RELOC_386_GOTPC;
|
||||||
i.imms[n]->X_add_number += 3;
|
i.imms[n]->X_add_number += 3;
|
||||||
@ -2158,7 +2167,7 @@ i386_operand (operand_string)
|
|||||||
* into a temporary buffer...
|
* into a temporary buffer...
|
||||||
*/
|
*/
|
||||||
register char *cp;
|
register char *cp;
|
||||||
if (cp = strchr(input_line_pointer,'@')) {
|
if ((cp = strchr (input_line_pointer,'@')) != NULL) {
|
||||||
char tmpbuf[BUFSIZ];
|
char tmpbuf[BUFSIZ];
|
||||||
|
|
||||||
if(!GOT_symbol)
|
if(!GOT_symbol)
|
||||||
|
Reference in New Issue
Block a user