Remove ioctl-based procfs support on Solaris

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Thu Nov 30 13:42:00 GMT 2017


Hi Pedro,

> On 09/27/2017 09:43 AM, Rainer Orth wrote:
>
>> The following patch on top of the previous one should address all this,
>> and John's comment as well.
>
> Thanks.  I have no further comments.

I've now finished testing the patch.  Except for adapting to one change
in gdb/configure.ac and regenerating gdb/configure and
gdb/gdbserver/configure, it still applies cleanly to current mainline.

For testing, I've run parallel make -k check on

* 64-bit Solaris 11.4, SPARC and x86
* 32 and 64-bit Solaris 11.3, SPARC and x86
* 64-bit Solaris 10/x86

I couldn't test on 32-bit Solaris 11.4, though:

(top-gdb) b main
Breakpoint 3 at 0x26b3a4: file /vol/src/gnu/gdb/gdb/local/gdb/gdb.c, line 25.
(top-gdb) run
Starting program: /vol/obj/gnu/gdb/gdb/12-sparcv7.no-largefile/gdb/gdb 
procfs: init_inferior, get_traced_signals line 4347, /proc/25606: Value too large for defined data type.
procfs: fetch_registers, get_gregs line 3236, /proc/25606: Value too large for defined data type.

I'll have to investigate closer what's going on here, but that problem
already exists before my patch.  I suspect that procfs cleanups
(removing support for the old non-structured procfs) are the culprit
here.

Solaris 10 testing is hampered by the fact that in a default build,
every single test FAILs.  It turned out that this happens because the
(gdb) prompt is followed by ESC [ K (gdb):

(gdb) (gdb) set height 0

while with --disable-tui I get the expected

(gdb) set height 0

This happens both with the system libcurses and with libncurses.
Haven't yet found out why.

On top of all this, testsuite results vary a bit even for subsequent
make -jN -k check runs in the same tree, and AFAICS there are no
systematic regressions in results without and with my patch.

I guess this is as good as we can get right now, so I suppose the patch
is ok for mainline now?

Thanks.
        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2016-10-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gdb:
	* configure.ac Don't check for sys/fault.h, sys/syscall.h,
	sys/proc.h.
	(NEW_PROC_API): Remove.
	(prsysent_t, pr_sigset_t, pr_sigaction64_t, pr_siginfo64_t):
	Likewise.
	* common/common.m4 (GDB_AC_COMMON): Don't check for sys/syscall.h.
	* configure: Regenerate.
	* config.in: Regenerate.
	* gdbserver/configure: Regenerate.
	* gdbserver/config.in: Regenerate.

	* i386-sol2-nat.c (_initialize_amd64_sol2_nat): Remove
	NEW_PROC_API test.
	* sparc-sol2-nat.c (_initialize_sparc_sol2_nat): Likewise.

	* linux-btrace.c: Remove HAVE_SYS_SYSCALL_H test.

	* proc-api.c: Remove !NEW_PROC_API support.
	Remove HAVE_SYS_PROC_H and HAVE_SYS_USER_H tests.
	Remove tests for macros always defined on Solaris.
	* proc-events.c: Remove !NEW_PROC_API support.
	Remove Remove HAVE_SYS_SYSCALL_H, HAVE_SYS_PROC_H and
	HAVE_SYS_USER_H tests.
	(init_syscall_table): Remove non-Solaris syscalls.
	Remove tests for syscalls present on all Solaris versions.
	Add missing Solaris 10+ syscalls.
	(signal_table): Remove non-Solaris signals.
	Remove tests for signals present on all Solaris versions.
	(fault_table): Remove non-Solaris faults.
	Remove tests for faults present on all Solaris versions.
	* proc-flags.c: Remove !NEW_PROC_API support.
	(pr_flag_table): Remove non-Solaris and pre-Solaris 7 comments.
	Remove non-Solaris flags.
	* proc-why.c: Remove !NEW_PROC_API support.
	(pr_why_table): Remove meaningless comments.
	Remove tests for reasons present on all Solaris versions.
	Remove OSF/1 cases.
	(proc_prettyfprint_why): Likewise.

	* procfs.c: Remove !NEW_PROC_API and DYNAMIC_SYSCALLS support.
	Remove HAVE_SYS_FAULT_H and HAVE_SYS_SYSCALL_H tests.
	Remove WA_READ test, IRIX watchpoint support.
	(gdb_sigset_t, gdb_sigaction_t, gdb_siginfo_t): Replace by base
	types.  Change users.
	(gdb_praddset, gdb_prdelset, gdb_premptysysset, gdb_praddsysset)
	(gdb_prdelset, gdb_pr_issyssetmember): Replace by base macros.
	Change callers.
	Remove CTL_PROC_NAME_FMT tests.
	(gdb_prstatus_t, gdb_lwpstatus_t): Replace by base types.  Change
	users.
	(sysset_t_size): Remove.  Use sizeof (sysset_t) in callers.
	Remove PROCFS_DONT_PIOCSSIG_CURSIG support.
	(proc_modify_flag): Replace GDBRESET by PCUNSET.
	Remove PR_ASYNC, PR_KLC tests.
	(proc_unset_inherit_on_fork): Remove PR_ASYNC test.
	(proc_parent_pid): Remove PCWATCH etc. tests.
	(proc_set_watchpoint): Remove !PCWATCH && !PIOCSWATCH support.
	Remove PCAGENT test.
	(proc_get_nthreads) [PIOCNTHR && PIOCTLIST]: Remove.
	Remove SYS_lwpcreate || SYS_lwp_create test.
	(proc_get_current_thread): Likewise.
	[PIOCNTHR && PIOCTLIST]: Remove.
	[PIOCLSTATUS]: Remove.
	(procfs_debug_inferior): Remove non-Solaris cases, conditionals.
	[PRFS_STOPEXEC]: Remove.
	(syscall_is_lwp_exit): Remove non-Solaris cases, conditionals.
	(syscall_is_exit): Likewise.
	(syscall_is_exec): Likewise.
	(syscall_is_lwp_create): Likewise.
	Remove SYS_syssgi support.
	(procfs_wait): Remove PR_ASYNC, !PIOCSSPCACT tests.
	[SYS_syssgi]: Remove.
	Remove non-Solaris cases, conditionals.
	(unconditionally_kill_inferior) [PROCFS_NEED_PIOCSSIG_FOR_KILL]:
	Remove.
	(procfs_init_inferior) [SYS_syssgi]: Remove.
	(procfs_set_exec_trap) [PRFS_STOPEXEC]: Remove.
	(procfs_inferior_created) [SYS_syssgi]: Remove.
	(procfs_set_watchpoint): Remove !AIX5 test.
	(procfs_stopped_by_watchpoint): Remove FLTWATCH test, FLTKWATCH
	case.
	(mappingflags) [MA_PHYS]: Remove.
	(info_mappings_callback): Remove PCAGENT test.
	Remove PIOCOPENLWP || PCAGENT test.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sol2-new-procfs.patch
Type: text/x-patch
Size: 163586 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20171130/7e1786a0/attachment.bin>


More information about the Gdb-patches mailing list