compile: Fix GNU-IFUNC funcs called from injected code
authorJan Kratochvil <jan.kratochvil@redhat.com>
Thu, 26 Feb 2015 16:40:57 +0000 (17:40 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Thu, 26 Feb 2015 16:40:57 +0000 (17:40 +0100)
commit081a1c2cede38dfb837e3d89539416fd836be4fe
tree21501b9edc44ff08b4d2e7647d94dc3df1230f57
parent2f41223f62de5d893bd6a4bd832293c2c3e80d91
compile: Fix GNU-IFUNC funcs called from injected code

One could not call IFUNCs (=indirect functions) from the compiled injected
code.  Either it errored with:
gdb command line:1:1: error: function return type cannot be function

or it just called the IFUNC dispatcher in normal way, returning real function
implementation address instead of the function return value (and thus no
function was called).

gdb/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

* compile/compile-c-symbols.c (convert_one_symbol, convert_symbol_bmsym)
(gcc_symbol_address): Call gnu_ifunc_resolve_addr.

gdb/testsuite/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

* gdb.compile/compile-ifunc.c: New file.
* gdb.compile/compile-ifunc.exp: New file.
gdb/ChangeLog
gdb/compile/compile-c-symbols.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.compile/compile-ifunc.c [new file with mode: 0644]
gdb/testsuite/gdb.compile/compile-ifunc.exp [new file with mode: 0644]