7a0c0a1475
gold/ PR gold/17643 * options.h (-z bndplt): New option. * x86_64.cc (Output_data_plt_x86_64::regular_count): New method. (Output_data_plt_x86_64::address_for_global): Move implementation into virtual method. (Output_data_plt_x86_64::address_for_local): Likewise. (Output_data_plt_x86_64::got): New method. (Output_data_plt_x86_64::got_plt): New method. (Output_data_plt_x86_64::got_irelative): New method. (Output_data_plt_x86_64::do_address_for_global): New virtual method. (Output_data_plt_x86_64::do_address_for_local): New virtual method. (class Output_data_plt_x86_64_bnd): New class. (Target_x86_64::do_make_data_plt): Move out of line and specialize for each size (both overloads). (Output_data_plt_x86_64::set_final_data_size): Cosmetic changes. * testsuite/Makefile.am (bnd_plt_1): New test case. (bnd_ifunc_1): New test case. (bnd_ifunc_2): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/bnd_ifunc_1.s: New source file. * testsuite/bnd_ifunc_1.sh: New shell script. * testsuite/bnd_ifunc_2.s: New source file. * testsuite/bnd_ifunc_2.sh: New shell script. * testsuite/bnd_plt_1.s: New source file. * testsuite/bnd_plt_1.sh: New shell script.
29 lines
470 B
ArmAsm
29 lines
470 B
ArmAsm
.text
|
|
.globl fct1
|
|
.type fct1, @gnu_indirect_function
|
|
.set fct1,resolve1
|
|
.hidden int_fct1
|
|
.globl int_fct1
|
|
.set int_fct1,fct1
|
|
.type resolve1, @function
|
|
resolve1:
|
|
call func1@PLT
|
|
.globl g1
|
|
.type g1, @function
|
|
g1:
|
|
jmp int_fct1@PLT
|
|
|
|
.globl fct2
|
|
.type fct2, @gnu_indirect_function
|
|
.set fct2,resolve2
|
|
.hidden int_fct2
|
|
.globl int_fct2
|
|
.set int_fct2,fct2
|
|
.type resolve2, @function
|
|
resolve2:
|
|
call func2@PLT
|
|
.globl g2
|
|
.type g2, @function
|
|
g2:
|
|
jmp int_fct2@PLT
|