mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 12:23:31 +08:00
gdb.base/{prologue,symbol-alias}.exp C++ify
Make these testcases work when compiled as C++ programs. These testcases use the alias attribute, which requires passing in the target function's mangled name in C++. To avoid having to figure out how the functions are mangled, explicitly specify a linkage name. This is preferred over 'extern "C"' because that doesn't work with static functions. gdb/testsuite/ChangeLog: * gdb.base/prologue.c [__cplusplus] (marker): Explicitly specify linkage name. * gdb.base/prologue.exp: Use print /d. * gdb.base/symbol-alias.exp: Handle C++ output. * gdb.base/symbol-alias2.c: Handle C++ output. [__cplusplus] (func): Explicitly specify linkage name.
This commit is contained in:
@ -1,3 +1,12 @@
|
||||
2020-09-17 Pedro Alves <pedro@palves.net>
|
||||
|
||||
* gdb.base/prologue.c [__cplusplus] (marker): Explicitly specify
|
||||
linkage name.
|
||||
* gdb.base/prologue.exp: Use print /d.
|
||||
* gdb.base/symbol-alias.exp: Handle C++ output.
|
||||
* gdb.base/symbol-alias2.c: Handle C++ output.
|
||||
[__cplusplus] (func): Explicitly specify linkage name.
|
||||
|
||||
2020-09-17 Pedro Alves <pedro@palves.net>
|
||||
|
||||
* gdb.python/py-nested-maps.c (struct key_t): Rename to...
|
||||
|
@ -20,6 +20,12 @@ int leaf (void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
/* So that the alias attribute below work without having to figure out
|
||||
this function's mangled name. */
|
||||
int marker (int val) asm ("marker");
|
||||
#endif
|
||||
|
||||
int marker (int val)
|
||||
{
|
||||
leaf ();
|
||||
|
@ -59,4 +59,4 @@ set pc1 [find_breakpoint_pc "marker"]
|
||||
|
||||
set pc2 [find_breakpoint_pc "other"]
|
||||
|
||||
gdb_test "print $pc1 == $pc2" "\\\$$decimal = 1" "same pc from minimal symbol"
|
||||
gdb_test "print /d $pc1 == $pc2" "\\\$$decimal = 1" "same pc from minimal symbol"
|
||||
|
@ -27,7 +27,7 @@ if ![runto_main] then {
|
||||
|
||||
# Functions.
|
||||
foreach f {"func" "func_alias"} {
|
||||
gdb_test "p $f" " = {struct S \\*\\(void\\)} $hex <func>"
|
||||
gdb_test "p $f" " = {(struct )?S \\*\\(void\\)} $hex <func(\\(\\))?>"
|
||||
gdb_test "p *${f}()" "= {field1 = 1, field2 = 2}"
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,12 @@ struct S
|
||||
|
||||
struct S g_var_s = { 1, 2 };
|
||||
|
||||
#ifdef __cplusplus
|
||||
/* So that the alias attribute below work without having to figure out
|
||||
this function's mangled name. */
|
||||
static struct S *func (void) asm ("func");
|
||||
#endif
|
||||
|
||||
static struct S *
|
||||
func (void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user