My solution is:
After cat /proc/$PID/smap, add up all segments with WR VM_Flag then add the code segment of the process itself.
VM_Flags:
RD: VM_READ
WR: VM_WRITE
EX: VM_EXEC
SH: VM_SHARED
MR: VM_MAYREAD
MW: VM_MAYWRITE
ME: VM_MAYEXEC
MS: VM_MAYSHARE
GD: VM_GROWSDOWN
PF: VM_PFNMAP
DW: VM_DENYWRITE
LO: VM_LOCKED
IO: VM_IO
SR: VM_SEQ_READ
RR: VM_RAND_READ
DC: VM_DONTCOPY
DE: VM_DONTEXPAND
AC: VM_ACCOUNT
NR: VM_NORESERVE
HT: VM_HUGETLB
NL: VM_NONLINEAR
AR: VM_ARCH_1
DD: VM_DONTDUMP
MM: VM_MIXEDMAP
HG: VM_HUGEPAGE
NH: VM_NOHUGEPAGE
MG: VM_MERGEABLE