mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
Hi, I see the following fails on arm-none-eabi target, -var-list-children --simple-values struct_declarations ^M ^done,numchild="11",children=[...,child={name="struct_declarations.func_ptr_struct",exp="func_ptr_struct",numchild="0",value="0x0 <_ftext>",type="struct _struct_decl (*)(int, char *, long)",thread-id="1"},child={name="struct_declarations.func_ptr_ptr",exp="func_ptr_ptr",numchild="0",value="0x0 <_ftext>",type="struct _struct_decl *(*)(int, char *, long)",thread-id="1"},... (gdb) ^M FAIL: gdb.mi/mi-var-child.exp: listing of children, simple types: names, type and values, complex types: names and types -var-set-format weird.func_ptr_ptr natural^M ^done,format="natural",value="0x0 <_ftext>"^M (gdb) ^M FAIL: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr in natural In the test, "0x0" is expected, but "0x0 <_ftext>" is in the output. Function pointers point to address zero, and tests assume there is no symbol on address zero. However, on my arm-none-eabi target, there is a code symbol _ftext on address zero, and test fails. Note that "set print symbol off" doesn't take effect for function pointer. int (*f) (void); f = main; (gdb) p f $1 = (int (*)(void)) 0x8048400 <main> (gdb) set print symbol off (gdb) p f $2 = (int (*)(void)) 0x8048400 <main> In order to erase the difference, we can assign some function address explicitly to function pointer, so the test behaves in a unique way. In this patch, we assign nothing1 and nothing2 to function pointers func_ptr_struct and func_ptr_ptr respectively, and update test as the source file is changed. gdb/testsuite: 2014-10-14 Yao Qi <yao@codesourcery.com> * gdb.mi/mi-var-child.c (nothing1): New function. (nothing2): New function. (do_children_tests): Set function pointers by nothing1 and nothing2. * gdb.mi/mi-var-child.exp: Step over new added statements. Update test to match the new output. * gdb.mi/var-cmd.c (nothing1): New function. (nothing2): New function. (do_children_tests): Set function pointers by nothing1 and nothing2. * gdb.mi/mi-var-display.exp: Update test to match output. Step to the line specified by $line_dct_nothing. Increase the number of lines to step. |
||
---|---|---|
.. | ||
array.f | ||
basics.c | ||
ChangeLog-1999-2003 | ||
dw2-ref-missing-frame-func.c | ||
dw2-ref-missing-frame-main.c | ||
dw2-ref-missing-frame.exp | ||
dw2-ref-missing-frame.S | ||
gdb669.exp | ||
gdb680.exp | ||
gdb701.c | ||
gdb701.exp | ||
gdb792.cc | ||
gdb792.exp | ||
gdb2549.exp | ||
Makefile.in | ||
mi2-amd64-entry-value.c | ||
mi2-amd64-entry-value.exp | ||
mi2-amd64-entry-value.s | ||
mi2-prompt.exp | ||
mi2-var-child.exp | ||
mi-async.exp | ||
mi-basics.exp | ||
mi-break.exp | ||
mi-breakpoint-changed.exp | ||
mi-catch-load-so.c | ||
mi-catch-load.c | ||
mi-catch-load.exp | ||
mi-cli.exp | ||
mi-cmd-param-changed.exp | ||
mi-condbreak-call-thr-state-mt.c | ||
mi-condbreak-call-thr-state-st.c | ||
mi-condbreak-call-thr-state.c | ||
mi-condbreak-call-thr-state.exp | ||
mi-console.c | ||
mi-console.exp | ||
mi-disassemble.exp | ||
mi-dprintf.c | ||
mi-dprintf.exp | ||
mi-eval.exp | ||
mi-exit-code.c | ||
mi-exit-code.exp | ||
mi-file-transfer.exp | ||
mi-file.exp | ||
mi-fill-memory.exp | ||
mi-fullname-deleted.exp | ||
mi-hack-cli.exp | ||
mi-i-cmd.exp | ||
mi-info-os.exp | ||
mi-inheritance-syntax-error.cc | ||
mi-inheritance-syntax-error.exp | ||
mi-language.exp | ||
mi-logging.exp | ||
mi-memory-changed.exp | ||
mi-nonstop-exit.exp | ||
mi-nonstop.exp | ||
mi-ns-stale-regcache.exp | ||
mi-nsintrall.exp | ||
mi-nsmoribund.exp | ||
mi-nsthrexec.exp | ||
mi-pending.c | ||
mi-pending.exp | ||
mi-pendshr.c | ||
mi-pthreads.exp | ||
mi-read-memory.c | ||
mi-read-memory.exp | ||
mi-record-changed.exp | ||
mi-reg-undefined.c | ||
mi-reg-undefined.exp | ||
mi-reg-undefined.S | ||
mi-regs.exp | ||
mi-return.exp | ||
mi-reverse.exp | ||
mi-simplerun.exp | ||
mi-solib.exp | ||
mi-stack.c | ||
mi-stack.exp | ||
mi-start.c | ||
mi-start.exp | ||
mi-stepi.exp | ||
mi-stepn.c | ||
mi-stepn.exp | ||
mi-syn-frame.c | ||
mi-syn-frame.exp | ||
mi-undefined-cmd.exp | ||
mi-until.exp | ||
mi-var-block.exp | ||
mi-var-child-f.exp | ||
mi-var-child.c | ||
mi-var-child.exp | ||
mi-var-cmd.exp | ||
mi-var-cp.cc | ||
mi-var-cp.exp | ||
mi-var-create-rtti.c | ||
mi-var-create-rtti.exp | ||
mi-var-display.exp | ||
mi-var-invalidate.exp | ||
mi-var-rtti.cc | ||
mi-var-rtti.exp | ||
mi-vla-c99.exp | ||
mi-watch-nonstop.exp | ||
mi-watch.exp | ||
non-stop-exit.c | ||
non-stop.c | ||
ns-stale-regcache.c | ||
nsintrall.c | ||
nsmoribund.c | ||
nsthrexec.c | ||
pending.c | ||
pendshr1.c | ||
pendshr2.c | ||
pr11022.c | ||
pr11022.exp | ||
pthreads.c | ||
solib-lib.c | ||
solib-main.c | ||
testcmds | ||
until.c | ||
var-cmd.c | ||
vla.c | ||
watch-nonstop.c |