On 7 November 2017 at 13:35, Pinski, Andrew <andrew.pin...@cavium.com> wrote: > Note gdb patches are located at: > https://sourceware.org/ml/binutils/2017-03/msg00075.html > https://sourceware.org/ml/gdb-patches/2017-03/msg00051.html > >
All these TODOs are given based on the observations of gdb tests result with these two patches above applied. >>2. [GLIBC] LP64 glibc libthread_db does not support ILP32. > No change to glibc was needed to fix this, only the above changes to gdb were > needed. > There are still some failed tests in gdb.threads/, FAIL: gdb.threads/thread-specific-bp.exp: all-stop: get main thread id FAIL: gdb.threads/thread-specific-bp.exp: non-stop: get main thread id FAIL: gdb.threads/thread-specific.exp: get threads list (no threads) >>3. [GDB] Handle ILP32 siginfo layout > > The change to aarch64_linux_siginfo_fixup fixes that. > FAIL: gdb.base/siginfo-obj.exp: p ssi_addr FAIL: gdb.base/siginfo-obj.exp: p ssi_addr FAIL: gdb.base/siginfo-obj.exp: p $_siginfo._sifields._sigfault.si_addr from core file FAIL: gdb.base/siginfo-thread.exp: p ssi_addr FAIL: gdb.base/siginfo-thread.exp: p $_siginfo._sifields._sigfault.si_addr from core file >>4. [GDB] Inferior call passing pointer argument. > > The change to aarch64_gdbarch_init fixes that. > FAIL: gdb.base/callfuncs.exp: p t_string_values("string 1","string 2") FAIL: gdb.base/callfuncs.exp: p t_string_values("string 1",string_val2) FAIL: gdb.base/callfuncs.exp: p t_string_values(string_val1,"string 2") FAIL: gdb.base/callfuncs.exp: p t_char_array_values("carray 1","carray 2") FAIL: gdb.base/callfuncs.exp: p t_char_array_values("carray 1",char_array_val2) FAIL: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val1,"carray 2") FAIL: gdb.base/callfuncs.exp: p sum_args(1,{2}) FAIL: gdb.base/callfuncs.exp: p sum_args(2,{2,3}) FAIL: gdb.base/callfuncs.exp: p sum_args(3,{2,3,4}) FAIL: gdb.base/callfuncs.exp: p sum_args(4,{2,3,4,5}) FAIL: gdb.base/callfuncs.exp: noproto: p t_string_values("string 1","string 2") FAIL: gdb.base/callfuncs.exp: noproto: p t_string_values("string 1",string_val2) FAIL: gdb.base/callfuncs.exp: noproto: p t_string_values(string_val1,"string 2") FAIL: gdb.base/callfuncs.exp: noproto: p t_char_array_values("carray 1","carray 2") FAIL: gdb.base/callfuncs.exp: noproto: p t_char_array_values("carray 1",char_array_val2) FAIL: gdb.base/callfuncs.exp: noproto: p t_char_array_values(char_array_val1,"carray 2") FAIL: gdb.base/callfuncs.exp: noproto: p sum_args(1,{2}) FAIL: gdb.base/callfuncs.exp: noproto: p sum_args(2,{2,3}) FAIL: gdb.base/callfuncs.exp: noproto: p sum_args(3,{2,3,4}) FAIL: gdb.base/callfuncs.exp: noproto: p sum_args(4,{2,3,4,5}) >>5. Handle shared libraries > > The change to aarch64_linux_init_abi fixes that. > There are still many failed tests about shared library. FAIL: gdb.base/catch-load.exp: plain load with stop-on-solib-events: set var libname = "catch-load-so.so" FAIL: gdb.base/catch-load.exp: plain load with stop-on-solib-events: continue FAIL: gdb.base/catch-load.exp: rx load with stop-on-solib-events: set var libname = "catch-load-so.so" FAIL: gdb.base/catch-load.exp: rx load with stop-on-solib-events: continue FAIL: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: set var libname = "catch-load-so.so" FAIL: gdb.base/catch-load.exp: non-matching load with stop-on-solib-events: continue FAIL: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: set var libname = "catch-load-so.so" FAIL: gdb.base/catch-load.exp: plain unload with stop-on-solib-events: continue FAIL: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: set var libname = "catch-load-so.so" FAIL: gdb.base/catch-load.exp: rx unload with stop-on-solib-events: continue FAIL: gdb.base/catch-load.exp: non-matching unload with stop-on-solib-events: set var libname = "catch-load-so.so" FAIL: gdb.base/catch-load.exp: non-matching unload with stop-on-solib-events: continue FAIL: gdb.base/skip-solib.exp: step after ignoring solib file. FAIL: gdb.base/skip-solib.exp: step (the program exited) FAIL: gdb.base/skip-solib.exp: bt FAIL: gdb.base/so-impl-ld.exp: step into solib call FAIL: gdb.base/so-impl-ld.exp: step in solib call FAIL: gdb.base/so-impl-ld.exp: step out of solib call FAIL: gdb.base/solib-display.exp: NO: display (int) a_global FAIL: gdb.base/solib-display.exp: NO: display (int) b_global FAIL: gdb.base/solib-display.exp: NO: display (int) c_global FAIL: gdb.base/solib-display.exp: NO: after rerun FAIL: gdb.base/solib-display.exp: NO: after rerun (2) FAIL: gdb.base/solib-display.exp: NO: display main_global FAIL: gdb.base/solib-display.exp: NO: display a_local FAIL: gdb.base/solib-display.exp: NO: display a_static FAIL: gdb.base/solib-display.exp: NO: continue FAIL: gdb.base/solib-display.exp: IN: display (int) a_global FAIL: gdb.base/solib-display.exp: IN: display (int) b_global FAIL: gdb.base/solib-display.exp: IN: display (int) c_global FAIL: gdb.base/solib-display.exp: IN: after rerun FAIL: gdb.base/solib-display.exp: IN: after rerun (2) FAIL: gdb.base/solib-display.exp: IN: display main_global FAIL: gdb.base/solib-display.exp: IN: display a_local FAIL: gdb.base/solib-display.exp: IN: display a_static FAIL: gdb.base/solib-display.exp: IN: continue FAIL: gdb.base/solib-display.exp: SEP: display (int) a_global FAIL: gdb.base/solib-display.exp: SEP: display (int) b_global FAIL: gdb.base/solib-display.exp: SEP: display (int) c_global FAIL: gdb.base/solib-display.exp: SEP: after rerun FAIL: gdb.base/solib-display.exp: SEP: after rerun (2) FAIL: gdb.base/solib-display.exp: SEP: display main_global FAIL: gdb.base/solib-display.exp: SEP: display a_local FAIL: gdb.base/solib-display.exp: SEP: display a_static FAIL: gdb.base/solib-display.exp: SEP: continue FAIL: gdb.base/solib-symbol.exp: foo in libmd FAIL: gdb.base/solib-symbol.exp: foo2 in mdlib FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 nodebug, lib1 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 nodebug, lib2 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 debug, lib1 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 debug, lib2 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 nodebug, lib1 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 nodebug, lib2 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 debug, lib1 first (the program exited) FAIL: gdb.base/solib-weak.exp: setting breakpoint at bar FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 debug, lib2 first (the program exited) >>6. [GDB] GDB resolves ifunc functions, > The change to aarch64_gdbarch_init fixes that IIRC. > FAIL: gdb.base/gnu-ifunc.exp: p gnu_ifunc (3) FAIL: gdb.base/gnu-ifunc.exp: resolver received HWCAP FAIL: gdb.base/gnu-ifunc.exp: continue to break-at-nextcall FAIL: gdb.base/gnu-ifunc.exp: nextcall gnu_ifunc skipped FAIL: gdb.base/gnu-ifunc.exp: p gnu_ifunc executing FAIL: gdb.base/gnu-ifunc.exp: info sym gnu_ifunc executing FAIL: gdb.base/gnu-ifunc.exp: info sym <gnu_ifunc-address> > >>7. [GDB] Gdbserver support for ILP32. > The change to aarch64_linux_read_description fixes that. > That is not enough, GDBserver (LP64) needs to fix up siginfo for ILP32 program, like what GDB does. GDBserver uses libthread_db too. There is also tracepoint and fast tracepoint support in GDBserver. I don't expect them supported in ILP32. -- Yao Qi _______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-toolchain