This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v3] Allow using special files with File I/O functions
- From: Julio Guerra <julio at farjump dot io>
- To: gdb-patches at sourceware dot org <gdb-patches at sourceware dot org>
- Cc: Pedro Alves <palves at redhat dot com>
- Date: Thu, 28 Jun 2018 19:30:15 +0000
- Subject: Re: [PATCH v3] Allow using special files with File I/O functions
- References: <20180628192635.44056-1-julio@farjump.io> <0102016447dcf9e9-3989bcd9-1272-4a05-93c5-77823c7a0921-000000@eu-west-1.amazonses.com> <b725e8cb-4a89-b204-1492-d8af5c76b89f@farjump.io>
You can find below the logs of the test I performed using our GDB server with a program embedded in a Raspberry Pi:
(gdb) set $st = (struct stat*) malloc(sizeof (struct stat))
(gdb) call stat("/dev/stdout", $st)
$1 = 0x0
(gdb) p *$st
$2 = {
st_dev = 0x2,
st_ino = 0x4,
st_mode = 0x2190,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x5,
st_rdev = 0x8801,
st_size = 0x0,
st_atime = 0x5b3507e0,
st_spare1 = 0x0,
st_mtime = 0x5b34fb47,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b3507e0,
st_spare4 = {0x0, 0x0}
}
(gdb) p /o $st->st_mode
$8 = 020620
(gdb) call stat("myfifo", $st)
$3 = 0x0
(gdb) p *$st
$4 = {
st_dev = 0x2,
st_ino = 0x4f7c,
st_mode = 0x11a4,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x3e8,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b3504ed,
st_spare1 = 0x0,
st_mtime = 0x5b3504ed,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b3504ed,
st_spare4 = {0x0, 0x0}
}
(gdb) p /o $st->st_mode
$6 = 010644
(gdb) call stat("/run/dbus/system_bus_socket", $st)
$9 = 0x0
(gdb) p *$st
$10 = {
st_dev = 0x2,
st_ino = 0x36c7,
st_mode = 0xc1b6,
st_nlink = 0x1,
st_uid = 0x0,
st_gid = 0x0,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b33e995,
st_spare1 = 0x0,
st_mtime = 0x5b33e995,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b33e995,
st_spare4 = {0x0, 0x0}
}
(gdb) p /o $st->st_mode
$11 = 0140666
(gdb) call stat("/tmp", $st)
$12 = 0x0
(gdb) p *$st
$13 = {
st_dev = 0x2,
st_ino = 0x7a5,
st_mode = 0x41ff,
st_nlink = 0x1,
st_uid = 0x0,
st_gid = 0x0,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b350829,
st_spare1 = 0x0,
st_mtime = 0x5b350829,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5a5a9802,
st_spare4 = {0x0, 0x0}
}
(gdb) p /o $st->st_mode
$14 = 040777
(gdb) call stat("Makefile", $st)
$15 = 0x0
(gdb) p *$st
$16 = {
st_dev = 0x0,
st_ino = 0xc6b9,
st_mode = 0x81a4,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x3e8,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5ae35b23,
st_spare1 = 0x0,
st_mtime = 0x5b311f46,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b3500d5,
st_spare4 = {0x0, 0x0}
}
(gdb) p /o $st->st_mode
$17 = 0100644
(gdb) call stat("i dont exist", $st)
$18 = 0xffffffff
(gdb) call fstat(0, $st)
$1 = 0x0
(gdb) p *$st
$3 = {
st_dev = 0x1,
st_ino = 0x0,
st_mode = 0x2100,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x3e8,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b35144e,
st_spare1 = 0x0,
st_mtime = 0x5b35144e,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b35144e,
st_spare4 = {0x0, 0x0}
}
(gdb) call fstat(1, $st)
$4 = 0x0
(gdb) p *$st
$5 = {
st_dev = 0x1,
st_ino = 0x0,
st_mode = 0x2080,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x3e8,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b351460,
st_spare1 = 0x0,
st_mtime = 0x5b351460,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b351460,
st_spare4 = {0x0, 0x0}
}
(gdb) call fstat(2, $st)
$6 = 0x0
(gdb) p *$st
$7 = {
st_dev = 0x1,
st_ino = 0x0,
st_mode = 0x2080,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x3e8,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b35146b,
st_spare1 = 0x0,
st_mtime = 0x5b35146b,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b35146b,
st_spare4 = {0x0, 0x0}
}
(gdb) call fstat(3, $st)
$8 = 0xffffffff
(gdb) set $fd = open("myfifo", 0)
(gdb) call fstat($fd, $st)
$10 = 0x0
(gdb) p *$st
$12 = {
st_dev = 0x2,
st_ino = 0x4f7c,
st_mode = 0x11a4,
st_nlink = 0x1,
st_uid = 0x3e8,
st_gid = 0x3e8,
st_rdev = 0x0,
st_size = 0x0,
st_atime = 0x5b351511,
st_spare1 = 0x0,
st_mtime = 0x5b351511,
st_spare2 = 0x0,
st_ctime = 0x0,
st_spare3 = 0x0,
st_blksize = 0x0,
st_blocks = 0x5b3504ed,
st_spare4 = {0x0, 0x0}
}
(gdb) p /o $st->st_mode
$13 = 010644
--
Julio Guerra
Co-founder & CTO of Farjump
Mobile: +33 618 644 164
LinkedIn: https://linkedin.com/in/guerrajulio
Slack: farjump.slack.com