diff options
Diffstat (limited to 'gas/config/tc-score.c')
-rw-r--r-- | gas/config/tc-score.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/gas/config/tc-score.c b/gas/config/tc-score.c index c4e5ed9..fb066e3 100644 --- a/gas/config/tc-score.c +++ b/gas/config/tc-score.c @@ -4096,7 +4096,7 @@ s3_build_la_pic (int reg_rd, expressionS exp) /* Fix part For an external symbol: lw rD, <sym>($gp) (BFD_RELOC_SCORE_GOT15 or BFD_RELOC_SCORE_CALL15) */ - sprintf (tmp, "lw_pic r%d, %s", reg_rd, add_symbol->bsym->name); + sprintf (tmp, "lw_pic r%d, %s", reg_rd, S_GET_NAME (add_symbol)); if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL) return; @@ -4110,7 +4110,7 @@ s3_build_la_pic (int reg_rd, expressionS exp) addi rD, <sym> (BFD_RELOC_GOT_LO16) */ s3_inst.reloc.type = BFD_RELOC_SCORE_GOT15; memcpy (&var_insts[0], &s3_inst, sizeof (struct s3_score_it)); - sprintf (tmp, "addi_s_pic r%d, %s", reg_rd, add_symbol->bsym->name); + sprintf (tmp, "addi_s_pic r%d, %s", reg_rd, S_GET_NAME (add_symbol)); if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL) return; @@ -4120,7 +4120,7 @@ s3_build_la_pic (int reg_rd, expressionS exp) else if (add_number >= -0x8000 && add_number <= 0x7fff) { /* Insn 1: lw rD, <sym>($gp) (BFD_RELOC_SCORE_GOT15) */ - sprintf (tmp, "lw_pic r%d, %s", reg_rd, add_symbol->bsym->name); + sprintf (tmp, "lw_pic r%d, %s", reg_rd, S_GET_NAME (add_symbol)); if (s3_append_insn (tmp, TRUE) == (int) s3_FAIL) return; @@ -4137,7 +4137,8 @@ s3_build_la_pic (int reg_rd, expressionS exp) /* Var part For a local symbol: addi rD, <sym>+<constant> (BFD_RELOC_GOT_LO16) */ - sprintf (tmp, "addi_s_pic r%d, %s + %d", reg_rd, add_symbol->bsym->name, (int)add_number); + sprintf (tmp, "addi_s_pic r%d, %s + %d", reg_rd, + S_GET_NAME (add_symbol), (int) add_number); if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL) return; @@ -4150,7 +4151,7 @@ s3_build_la_pic (int reg_rd, expressionS exp) int lo = add_number & 0x0000FFFF; /* Insn 1: lw rD, <sym>($gp) (BFD_RELOC_SCORE_GOT15) */ - sprintf (tmp, "lw_pic r%d, %s", reg_rd, add_symbol->bsym->name); + sprintf (tmp, "lw_pic r%d, %s", reg_rd, S_GET_NAME (add_symbol)); if (s3_append_insn (tmp, TRUE) == (int) s3_FAIL) return; @@ -4192,7 +4193,7 @@ s3_build_la_pic (int reg_rd, expressionS exp) /* Var part For a local symbol: addi r1, <sym>+LO%<constant> (BFD_RELOC_GOT_LO16) */ - sprintf (tmp, "addi_u_pic r1, %s + %d", add_symbol->bsym->name, lo); + sprintf (tmp, "addi_u_pic r1, %s + %d", S_GET_NAME (add_symbol), lo); if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL) return; @@ -4860,7 +4861,7 @@ s3_build_lwst_pic (int reg_rd, expressionS exp, const char *insn_name) /* Fix part For an external symbol: lw rD, <sym>($gp) (BFD_RELOC_SCORE_GOT15) */ - sprintf (tmp, "lw_pic r1, %s", add_symbol->bsym->name); + sprintf (tmp, "lw_pic r1, %s", S_GET_NAME (add_symbol)); if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL) return; @@ -4872,7 +4873,7 @@ s3_build_lwst_pic (int reg_rd, expressionS exp, const char *insn_name) addi rD, <sym> (BFD_RELOC_GOT_LO16) */ s3_inst.reloc.type = BFD_RELOC_SCORE_GOT15; memcpy (&var_insts[0], &s3_inst, sizeof (struct s3_score_it)); - sprintf (tmp, "addi_s_pic r1, %s", add_symbol->bsym->name); + sprintf (tmp, "addi_s_pic r1, %s", S_GET_NAME (add_symbol)); if (s3_append_insn (tmp, FALSE) == (int) s3_FAIL) return; @@ -6847,10 +6848,7 @@ s3_relax_branch_inst16 (fragS * fragp) if (s == NULL) frag_addr = 0; else - { - if (s->bsym != NULL) - symbol_address = (addressT) symbol_get_frag (s)->fr_address; - } + symbol_address = (addressT) symbol_get_frag (s)->fr_address; inst_value = s3_md_chars_to_number (fragp->fr_literal, s3_INSN16_SIZE); offset = (inst_value & 0x1ff) << 1; @@ -6862,7 +6860,6 @@ s3_relax_branch_inst16 (fragS * fragp) if (relaxable_p && (!((value & 0xfffffe00) == 0 || (value & 0xfffffe00) == 0xfffffe00)) && fragp->fr_fix == 2 - && (s->bsym != NULL) && (S_IS_DEFINED (s) && !S_IS_COMMON (s) && !S_IS_EXTERNAL (s))) @@ -6894,10 +6891,7 @@ s3_relax_cmpbranch_inst32 (fragS * fragp) if (s == NULL) frag_addr = 0; else - { - if (s->bsym != NULL) - symbol_address = (addressT) symbol_get_frag (s)->fr_address; - } + symbol_address = (addressT) symbol_get_frag (s)->fr_address; inst_value = s3_md_chars_to_number (fragp->fr_literal, s3_INSN_SIZE); offset = (inst_value & 0x1) @@ -6921,8 +6915,7 @@ s3_relax_cmpbranch_inst32 (fragS * fragp) /* need to translate when extern or not defined or common symbol */ else if ((relaxable_p && (!((value & 0xfffffe00) == 0 || (value & 0xfffffe00) == 0xfffffe00)) - && fragp->fr_fix == 4 - && (s->bsym != NULL)) + && fragp->fr_fix == 4) || !S_IS_DEFINED (s) ||S_IS_COMMON (s) ||S_IS_EXTERNAL (s)) |