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...@linaro.org] 
Sent: Wednesday, November 8, 2017 1:16 AM
To: Pinski, Andrew <andrew.pin...@cavium.com>
Cc: Maxim Kuvyrkov <maxim.kuvyr...@linaro.org>; Linaro Toolchain 
<linaro-toolchain@lists.linaro.org>; Szabolcs Nagy <szabolcs.n...@arm.com>; 
Ellcey, Steve <steve.ell...@cavium.com>
Subject: Re: ILP32 toolchain status update

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

Reply via email to