aboutsummaryrefslogtreecommitdiff
path: root/gdb/procfs.h
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2020-05-18 17:56:00 +0200
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2020-05-18 17:56:00 +0200
commit7f2043399809c0ba5c4819172214371ed820e8c6 (patch)
tree947f2176a831e47a1c14bbe2dc83f33f3df9c53f /gdb/procfs.h
parented02cdb5b78d17429f7e873acc49d94a5a0223d8 (diff)
downloadgdb-7f2043399809c0ba5c4819172214371ed820e8c6.zip
gdb-7f2043399809c0ba5c4819172214371ed820e8c6.tar.gz
gdb-7f2043399809c0ba5c4819172214371ed820e8c6.tar.bz2
Remove unused ps_lgetLDT etc. on Solaris/x86 [PR25981]
As reported in PR build/25981, a future Solaris 11.4 update will soon remove the short i386 register names like SS etc. from <sys/regset.h>. They could leak into user code (e.g. via <signal.h> -> <sys/signal.h> -> <sys/ucontext.h>) and pollute the user namespace. Affected code would have a hard time avoiding the issue: LLVM is one of those. While the short names are required to be present by the i386 psABI, that document only demands that they exist in <ucontext.h>, which is what the upcoming update assures. With this change, in a 64-bit-default configuration, procfs.c fails to compile on Solaris/x86: /vol/src/gnu/gdb/hg/master/git/gdb/procfs.c: In function 'ssd* procfs_find_LDT_entry(ptid_t)': /vol/src/gnu/gdb/hg/master/git/gdb/procfs.c:1643:18: error: 'GS' was not declared in this scope 1643 | key = (*gregs)[GS] & 0xffff; | ^~ make[2]: *** [Makefile:1607: procfs.o] Error 1 Initially I meant to provide a definition using the planned replacement macro, but closer inspection revealed a better way. procfs_find_LDT_entry and its helper proc_get_LDT_entry are only used to implement ps_lgetLDT, one of the callback functions required by libthread_db.so.1 (cf. <proc_service.h>). While that function is still documented as being required even in Solaris 11.4, I found that calls to it had been removed long ago in Solaris 9, so just removing the three functions above is the easiest fix. The following patch does just that. It compiled successfully on amd64-pc-solaris2.11, however, as reported in PR gdb/25939, master is completely broken on Solaris since the multi-target patch. The patch applies cleanly to the gdb-9 branch and there I could test it successfully. PR build/25981 * procfs.c [(__i386__ || __x86_64__) && sun] (proc_get_LDT_entry, procfs_find_LDT_entry): Remove. * procfs.h [(__i386__ || __x86_64__) && sun] (struct ssd, procfs_find_LDT_entry): Remove. * sol-thread.c [(__i386__ || __x86_64__) && sun] (ps_lgetLDT): Remove.
Diffstat (limited to 'gdb/procfs.h')
-rw-r--r--gdb/procfs.h6
1 files changed, 0 insertions, 6 deletions
diff --git a/gdb/procfs.h b/gdb/procfs.h
index 5bba467..46835fd 100644
--- a/gdb/procfs.h
+++ b/gdb/procfs.h
@@ -25,10 +25,4 @@
extern ptid_t procfs_first_available (void);
-#if (defined (__i386__) || defined (__x86_64__)) && defined (sun)
-struct ssd;
-
-extern struct ssd *procfs_find_LDT_entry (ptid_t);
-#endif
-
#endif /* PROCFS_H */