738e53487d
* reloc.c (BFD_RELOC_MIPS16_GOT16, BFD_RELOC_MIPS16_CALL16): Declare. * libbfd.h, bfd-in2.h: Regenerate. * elf32-mips.c (elf_mips16_howto_table_rel): Fill in reserved R_MIPS16_GOT16 and R_MIPS16_CALL16 entries. (mips16_reloc_map): Add mappings. * elf64-mips.c (mips16_elf64_howto_table_rel): Fill in reserved R_MIPS16_GOT16 and R_MIPS16_CALL16 entries. (mips16_elf64_howto_table_rela): Likewise. (mips16_reloc_map): Add mappings. * elfn32-mips.c (elf_mips16_howto_table_rel): Fill in reserved R_MIPS16_GOT16 and R_MIPS16_CALL16 entries. (elf_mips16_howto_table_rela): Likewise. (mips16_reloc_map): Add mappings. * elfxx-mips.c (mips_elf_create_shadow_symbol): New function. (section_allows_mips16_refs_p): Likewise. (mips16_stub_symndx): Likewise. (mips_elf_check_mips16_stubs): Treat the data argument as a bfd_link_info. Mark every dynamic symbol as needing MIPS16 stubs and create a "shadow" symbol for the original MIPS16 definition. (mips16_reloc_p, got16_reloc_p, call16_reloc_p, hi16_reloc_p) (lo16_reloc_p, mips16_call_reloc_p): New functions. (_bfd_mips16_elf_reloc_unshuffle): Use mips16_reloc_p to generalize relocation checks. (_bfd_mips16_elf_reloc_shuffle): Likewise. (_bfd_mips_elf_lo16_reloc): Handle R_MIPS16_GOT16. (mips_elf_got16_entry): Add comment. (mips_elf_calculate_relocation): Use hi16_reloc_p, lo16_reloc_p, mips16_call_reloc_p, call16_reloc_p and got16_reloc_p to generalize relocation checks. Use section_allows_mips16_refs_p instead of mips16_stub_section_p. Handle R_MIPS16_CALL16 and R_MIPS16_GOT16, allowing the former to refer directly to a MIPS16 function if its stub is not needed. (mips16_stub_section_p): Delete. (_bfd_mips_elf_symbol_processing): Convert odd-valued function symbols into even MIPS16 symbols. (mips_elf_add_lo16_rel_addend): Use mips16_reloc_p to generalize a relocation check. (_bfd_mips_elf_check_relocs): Calculate "bed" and "rel_end" earlier in the function. Use mips16_stub_symndx to identify the target function. Avoid out-of-bounds accesses when the stub has no relocations; report an error instead. Use section_allows_mips16_refs_p instead of mips16_stub_section_p. Use mips16_call_reloc_p and got16_reloc_p to generalize relocation checks. Handle R_MIPS16_CALL16 and R_MIPS16_GOT16. Don't create dynamic relocations for absolute references to __gnu_local_gp. (_bfd_mips_elf_always_size_sections): Pass a bfd_link_info as the argument to mips_elf_check_mips16_stubs. Generalize comment. (_bfd_mips_elf_relocate_section): Use hi16_reloc_p and got16_reloc_p to generalize relocation checks. (_bfd_mips_elf_finish_dynamic_symbol): If a dynamic MIPS16 function symbol has a non-MIPS16 stub, redirect the symbol to the stub. Fix an overly long line. Don't give dynamic symbols type STO_MIPS16. (_bfd_mips_elf_gc_sweep_hook): Handle R_MIPS16_CALL16 and R_MIPS16_GOT16. gas/ * config/tc-mips.c (mips16_reloc_p, got16_reloc_p, hi16_reloc_p) (lo16_reloc_p): New functions. (reloc_needs_lo_p): Use hi16_reloc_p and got16_reloc_p to generalize relocation checks. (matching_lo_reloc): New function. (fixup_has_matching_lo_p): Use it. (mips16_mark_labels): Don't clobber a symbol's visibility. (append_insn): Use hi16_reloc_p and lo16_reloc_p. (mips16_ip): Handle BFD_RELOC_MIPS16_GOT16 and BFD_RELOC_MIPS16_CALL16. (md_apply_fix): Likewise. (mips16_percent_op): Add %got and %call16. (mips_frob_file): Use got16_reloc_p to generalize relocation checks. Use matching_lo_reloc. (mips_force_relocation): Use hi16_reloc_p and lo16_reloc_p to generalize relocation checks. (mips_fix_adjustable): Use lo16_reloc_p to generalize relocation checks. gas/testsuite/ * gas/mips/elf-rel8-mips16.d, gas/mips/elf-rel8-mips16.s, * gas/mips/elf-rel9-mips16.d, gas/mips/elf-rel9-mips16.s, * gas/mips/elf-rel13-mips16.d, gas/mips/elf-rel13-mips16.s: New tests. * gas/mips/mips.exp: Run them. ld/testsuite/ * ld-mips-elf/mips16-local-stubs-1.d: Remove stub_for_h3, which was only referenced by the .pdr section, and was not actually needed by code. * ld-mips-elf/mips16-intermix.d: Remove unused static function stubs. * ld-mips-elf/mips16-pic-1a.s, ld-mips-elf/mips16-pic-1b.s, ld-mips-elf/mips16-pic-1-dummy.s, ld-mips-elf/mips16-pic-1.dd, ld-mips-elf/mips16-pic-1.gd, ld-mips-elf/mips16-pic-1.inc, ld-mips-elf/mips16-pic-1.ld, ld-mips-elf/mips16-pic-2a.s, ld-mips-elf/mips16-pic-2b.s, ld-mips-elf/mips16-pic-2.ad, ld-mips-elf/mips16-pic-2.dd, ld-mips-elf/mips16-pic-2.gd, ld-mips-elf/mips16-pic-2.nd, ld-mips-elf/mips16-pic-2.rd: New tests. * ld-mips-elf/mips-elf.exp: Run them.
208 lines
3.8 KiB
Text
208 lines
3.8 KiB
Text
|
|
.*
|
|
|
|
|
|
Disassembly of section \.text:
|
|
|
|
00040400 <unused1>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040404 <unused2>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040408 <unused3>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
0004040c <unused4>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040410 <unused5>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040414 <used1>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040418 <used2>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
0004041c <used3>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040420 <\.mips16\.used4>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040424 <\.mips16\.used5>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040428 <\.mips16\.used6>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
0004042c <\.mips16\.used7>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040430 <\.mips16\.used8>:
|
|
.*: [^\t]* jr ra
|
|
.*: [^\t]* nop
|
|
|
|
00040434 <foo>:
|
|
.*: [^\t]* li v0,1
|
|
.*: [^\t]* la v1,47ff0 <.*>
|
|
.*: [^\t]* sll v0,16
|
|
.*: [^\t]* addu v0,v1
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* addiu sp,-32
|
|
.*: [^\t]* sw v0,16\(sp\)
|
|
.*: [^\t]* sw ra,20\(sp\)
|
|
# 40400: unused1
|
|
.*: [^\t]* lw v0,-32744\(v0\)
|
|
.*: [^\t]* addiu v0,1025
|
|
.*: [^\t]* jalr v0
|
|
.*: [^\t]* move t9,v0
|
|
.*: [^\t]* lw v0,16\(sp\)
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* lw v0,-32740\(v0\)
|
|
.*: [^\t]* jalr v0
|
|
.*: [^\t]* move t9,v0
|
|
.*: [^\t]* lw v0,16\(sp\)
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* lw v0,-32708\(v0\)
|
|
.*: [^\t]* jalr v0
|
|
.*: [^\t]* move t9,v0
|
|
.*: [^\t]* lw v0,16\(sp\)
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* lw v0,20\(sp\)
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* addiu sp,32
|
|
#...
|
|
|
|
00040480 <bar>:
|
|
.*: [^\t]* li v0,1
|
|
.*: [^\t]* la v1,47ff0 <.*>
|
|
.*: [^\t]* sll v0,16
|
|
.*: [^\t]* addu v0,v1
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* addiu sp,-32
|
|
.*: [^\t]* sw v0,16\(sp\)
|
|
.*: [^\t]* sw ra,20\(sp\)
|
|
.*: [^\t]* lw v0,-32736\(v0\)
|
|
.*: [^\t]* jalr v0
|
|
.*: [^\t]* move t9,v0
|
|
.*: [^\t]* lw v0,16\(sp\)
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* lw v0,-32696\(v0\)
|
|
.*: [^\t]* jalr v0
|
|
.*: [^\t]* move t9,v0
|
|
.*: [^\t]* lw v0,16\(sp\)
|
|
.*: [^\t]* move gp,v0
|
|
.*: [^\t]* lw v0,20\(sp\)
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* addiu sp,32
|
|
#...
|
|
|
|
000404c0 <__fn_used1>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 40414: used1
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1045
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
000404e4 <__fn_used2>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 40418: used2
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1049
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
00040508 <__fn_used3>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 4041c: used3
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1053
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
0004052c <used4>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 40420: used4
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1057
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
00040550 <used5>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 40424: used5
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1061
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
00040574 <used6>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 40428: used6
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1065
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
00040598 <used7>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 4042c: used7
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1069
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|
|
|
|
000405bc <used8>:
|
|
.*: [^\t]* lui gp,.*
|
|
.*: [^\t]* addiu gp,gp,.*
|
|
.*: [^\t]* addu gp,gp,t9
|
|
# 40430: used8
|
|
.*: [^\t]* lw v0,-32744\(gp\)
|
|
.*: [^\t]* nop
|
|
.*: [^\t]* addiu v0,v0,1073
|
|
.*: [^\t]* mfc1 a0,\$f12
|
|
.*: [^\t]* jr v0
|
|
.*: [^\t]* nop
|