binutils-gdb/gdb/testsuite/gdb.cp
Alan Hayward 38a72da0f1 Aarch64: Fix segfault when casting dummy calls
The following will segfault on aarch64 if foo is in another object,
was compiled as c++ and has no debug symbols:
(gdb) p (int)foo()

This is because aarch64_push_dummy_call determines the return type
of the function and then does not check for null pointer.

A null pointer for the return type means the call has no debug
information.  For the code to get here, then the call must have
been cast, otherwise we'd error out sooner.  In the case of a
no-debug-info call cast, the return type is the type the user
had cast the call to, but we do not have that information
available here.

However, aarch64_push_dummy_call only requires the return type in
order to calculate lang_struct_return. This information is available
in the return_method enum. The fix is to simply use this instead.

Adds testcase to check calls across objects, with all combinations
of c, c++, debug and no debug.

gdb/ChangeLog:

	PR gdb/22736:
	* aarch64-tdep.c (aarch64_push_dummy_call): Remove
	lang_struct_return code.

gdb/testsuite/ChangeLog:

	PR gdb/22736:
	* gdb.cp/infcall-nodebug-lib.c: New test.
	* gdb.cp/infcall-nodebug-main.c: New test.
	* gdb.cp/infcall-nodebug.exp: New file.
2018-11-16 13:45:38 +00:00
..
abstract-origin.cc
abstract-origin.exp
align.exp
ambiguous.cc
ambiguous.exp
annota2.cc
annota2.exp
annota3.cc
annota3.exp
anon-ns.cc
anon-ns.exp
anon-ns2.cc
anon-struct.cc
anon-struct.exp
anon-union.cc
anon-union.exp
arg-reference.cc
arg-reference.exp
baseenum.cc
baseenum.exp
bool.cc
bool.exp
breakpoint.cc
breakpoint.exp
bs15503.cc
bs15503.exp
call-c-1.c
call-c.cc
call-c.exp
casts.cc
casts.exp
casts03.cc
chained-calls.cc
chained-calls.exp
class2.cc
class2.exp
classes.cc
classes.exp
cmpd-minsyms.cc
cmpd-minsyms.exp
converts.cc
converts.exp
cp-relocate.cc
cp-relocate.exp Clean up "Reading symbols" output 2018-10-04 13:40:10 -06:00
cpcompletion.exp
cpexprs.cc
cpexprs.exp
cplabel.cc
cplabel.exp
cplusfuncs.cc
cplusfuncs.exp
cpsizeof.cc
cpsizeof.exp
ctti.exp
cttiadd.cc
cttiadd1.cc
cttiadd2.cc
cttiadd3.cc
debug-expr.exp
demangle.exp
derivation.cc
derivation.exp
derivation2.cc
destrprint.cc
destrprint.exp
dispcxx.cc
dispcxx.exp
ena-dis-br-range.cc
ena-dis-br-range.exp
enum-class.cc
enum-class.exp
exception.cc
exception.exp
exceptprint.cc
exceptprint.exp
expand-psymtabs-cxx.cc
expand-psymtabs-cxx.exp
expand-sals.cc
expand-sals.exp
extern-c.cc
extern-c.exp
filename.cc
filename.exp
formatted-ref.cc
formatted-ref.exp
fpointer.cc
fpointer.exp
gdb1355.cc
gdb1355.exp
gdb2384-base.cc
gdb2384-base.h
gdb2384.cc
gdb2384.exp
gdb2495.cc
gdb2495.exp
hang.H
hang.exp
hang1.cc
hang2.cc
hang3.cc
impl-this.cc
impl-this.exp
includefile
infcall-dlopen-lib.cc
infcall-dlopen.cc
infcall-dlopen.exp
infcall-nodebug-lib.c Aarch64: Fix segfault when casting dummy calls 2018-11-16 13:45:38 +00:00
infcall-nodebug-main.c Aarch64: Fix segfault when casting dummy calls 2018-11-16 13:45:38 +00:00
infcall-nodebug.exp Aarch64: Fix segfault when casting dummy calls 2018-11-16 13:45:38 +00:00
inherit.exp
iostream.cc
iostream.exp
koenig.cc
koenig.exp
local-static.c
local-static.cc
local-static.exp
local.cc
local.exp
m-data.cc
m-data.exp
m-static.cc
m-static.exp
m-static.h
m-static1.cc
maint.exp Simplify complaints even more 2018-10-04 13:40:10 -06:00
mb-ctor.cc
mb-ctor.exp
mb-inline.exp
mb-inline.h
mb-inline1.cc
mb-inline2.cc
mb-templates.cc
mb-templates.exp
member-name.cc
member-name.exp
member-ptr.cc
member-ptr.exp
meth-typedefs.cc
meth-typedefs.exp
method.cc
method.exp
method2.cc
method2.exp
minsym-fallback-main.cc
minsym-fallback.cc
minsym-fallback.exp
minsym-fallback.h
misc.cc
misc.exp
namelessclass.S
namelessclass.cc
namelessclass.exp
namespace-enum-main.cc
namespace-enum.cc
namespace-enum.exp
namespace-nested-import.cc
namespace-nested-import.exp
namespace.cc
namespace.exp
namespace1.cc
nested-types.cc
nested-types.exp
nextoverthrow.cc
nextoverthrow.exp
no-dmgl-verbose.cc
no-dmgl-verbose.exp
non-trivial-retval.cc
non-trivial-retval.exp
noparam.cc
noparam.exp
nsalias.cc
nsalias.exp
nsdecl.cc
nsdecl.exp
nsimport.cc
nsimport.exp
nsnested.cc
nsnested.exp
nsnoimports.cc
nsnoimports.exp
nsrecurs.cc
nsrecurs.exp
nsstress.cc
nsstress.exp
nsusing.cc
nsusing.exp
operator.cc
operator.exp
oranking.cc
oranking.exp
overload-const.cc
overload-const.exp
overload.cc
overload.exp
ovldbreak.cc
ovldbreak.exp testsuite: ovldbreak.exp: fix regexp 2018-10-19 11:13:40 +01:00
ovsrch.exp
ovsrch.h
ovsrch1.cc
ovsrch2.cc
ovsrch3.cc
ovsrch4.cc
paren-type.cc
paren-type.exp
parse-lang.cc
parse-lang.exp
pass-by-ref.cc
pass-by-ref.exp
pr-574.cc
pr-574.exp
pr-1023.cc
pr-1023.exp
pr-1210.cc
pr-1210.exp
pr9067.cc
pr9067.exp
pr9167.cc
pr9167.exp
pr9594.cc
pr9631.cc
pr9631.exp
pr10687.cc
pr10687.exp
pr10728-x.cc
pr10728-x.h
pr10728-y.cc
pr10728.exp
pr12028.cc
pr12028.exp
pr17132.cc
pr17132.exp
pr17494.cc
pr17494.exp
printmethod.cc
printmethod.exp
psmang.exp
psmang1.cc
psmang2.cc
psymtab-parameter.cc
psymtab-parameter.exp
ptype-cv-cp.cc
ptype-cv-cp.exp
ptype-flags.cc
ptype-flags.exp
punctuator.exp
re-set-overloaded.cc
re-set-overloaded.exp
readnow-language.cc
readnow-language.exp
ref-params.cc
ref-params.exp
ref-types.cc
ref-types.exp
rtti.exp
rtti.h
rtti1.cc
rtti2.cc
rvalue-ref-casts.cc
rvalue-ref-casts.exp
rvalue-ref-overload.cc
rvalue-ref-overload.exp
rvalue-ref-params.cc
rvalue-ref-params.exp
rvalue-ref-sizeof.cc
rvalue-ref-sizeof.exp
rvalue-ref-types.cc
rvalue-ref-types.exp
save-bp-qualified.cc
save-bp-qualified.exp
scope-err.cc
scope-err.exp
shadow.cc
shadow.exp
smartp.cc
smartp.exp
static-method.cc
static-method.exp
static-print-quit.cc
static-print-quit.exp
static-typedef-print.cc
static-typedef-print.exp
subtypes-2.cc
subtypes.cc
subtypes.exp
subtypes.h
temargs.cc
temargs.exp
templates.cc
templates.exp
try_catch.cc
try_catch.exp
typedef-base.cc
typedef-base.exp
typedef-operator.cc
typedef-operator.exp
typeid.cc
typeid.exp
userdef.cc
userdef.exp
using-crash.cc
using-crash.exp
var-tag-2.cc
var-tag-3.cc
var-tag-4.cc
var-tag.cc
var-tag.exp
virtbase.cc
virtbase.exp
virtbase2.cc Finding data member in virtual base class 2018-10-08 21:23:50 +00:00
virtbase2.exp Finding data member in virtual base class 2018-10-08 21:23:50 +00:00
virtfunc.cc
virtfunc.exp
virtfunc2.cc
virtfunc2.exp
vla-cxx.cc
vla-cxx.exp
watch-cp.cc
watch-cp.exp
wide_char_types.c
wide_char_types.exp