I've an address in memory and I want to find out the permissions (r/w/x) of that memory address.
E.g.
char *s = "hello";
Here, the string literal "hello" is stored in read-only memory. When running the program through gdb, is there a possibility to check out the permissions for that memory address (whether only read is permitted or etc) ?
You can first find where s is pointing to:
(gdb) print s
$6 = 0x400dbc "foo"
and then find the section in which it's in:
(gdb) maintenance info sections
Exec file:
`/home/mfukar/tmp', file type elf64-x86-64.
...sections...
0x00400db8->0x00400dfb at 0x00000db8: .rodata ALLOC LOAD READONLY DATA HAS_CONTENTS
...more sections...
and look for the READONLY flag.
Alternatively, look into /proc/PID/maps where PID is the pid of the process you're debugging and you can get with info proc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With