What env are you using? Are the glibc versions on the same between ILP32 and LP64? Because when that was true I did not have any issues with libthread_db.
Anyways I did not see some of those failures listed below when using the correct setup.
-----Original Message----- From: Yao Qi [mailto:yao.qi@linaro.org] Sent: Wednesday, November 8, 2017 1:16 AM To: Pinski, Andrew Andrew.Pinski@cavium.com Cc: Maxim Kuvyrkov maxim.kuvyrkov@linaro.org; Linaro Toolchain linaro-toolchain@lists.linaro.org; Szabolcs Nagy szabolcs.nagy@arm.com; Ellcey, Steve Steve.Ellcey@cavium.com Subject: Re: ILP32 toolchain status update
On 7 November 2017 at 13:35, Pinski, Andrew Andrew.Pinski@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.
- [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)
- [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
- [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})
- 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)
- [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>
- [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