This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix /proc pathname sizes on Solaris


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=13db92d3f48cbd6784f50bbd0ce10220e0d48ee4

commit 13db92d3f48cbd6784f50bbd0ce10220e0d48ee4
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Wed Sep 19 11:21:32 2018 +0200

    Fix /proc pathname sizes on Solaris
    
    I'm slowly working my way through the gdb patches from the
    solaris-userland repo
    
    	https://github.com/oracle/solaris-userland/tree/master/components/gdb/patches
    
    This one (001-fix-proc-name-size.patch) should be obvious given the
    patches' comment:
    
    # In Solaris, PID_MAX is 999999 (6 digit pid).
    # In Solaris, lwpid_t is an unsigned int, so theoretically the lwp id
    # could be 10 digits.
    
    Tested on i386-pc-solaris2.11.
    
    2018-09-19  Stefan Teleman <stefan.teleman@oracle.com>
    	    April Chin <april.chin@oracle.com>
    	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    
    	* procfs.c (MAX_PROC_NAME_SIZE): Allow for 6-digit PID_MAX and
    	uint_t lwpid_t.
    	(create_procinfo): Print pids in /proc without leading zeros.

Diff:
---
 gdb/ChangeLog | 8 ++++++++
 gdb/procfs.c  | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 40d9f0d..0fe15ef 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2018-09-19  Stefan Teleman <stefan.teleman@oracle.com>
+	    April Chin <april.chin@oracle.com>
+	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* procfs.c (MAX_PROC_NAME_SIZE): Allow for 6-digit PID_MAX and
+	uint_t lwpid_t.
+	(create_procinfo): Print pids in /proc without leading zeros.
+
 2018-09-18  Sandra Loosemore  <sandra@codesourcery.com>
 
 	* nios2-tdep.c (nios2_gcc_target_options): New.
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 66a3197..e66c469 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -231,7 +231,7 @@ enum { READ_WATCHFLAG  = WA_READ,
 #define AS_PROC_NAME_FMT     "/proc/%d/as"
 #define MAP_PROC_NAME_FMT    "/proc/%d/map"
 #define STATUS_PROC_NAME_FMT "/proc/%d/status"
-#define MAX_PROC_NAME_SIZE sizeof("/proc/99999/lwp/8096/lstatus")
+#define MAX_PROC_NAME_SIZE sizeof("/proc/999999/lwp/0123456789/lwpstatus")
 
 typedef struct procinfo {
   struct procinfo *next;
@@ -480,7 +480,7 @@ create_procinfo (int pid, int tid)
     }
   else
     {
-      sprintf (pi->pathname, "/proc/%05d/lwp/%d", pid, tid);
+      sprintf (pi->pathname, "/proc/%d/lwp/%d", pid, tid);
       pi->next = parent->thread_list;
       parent->thread_list = pi;
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]