diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/linux-tdep.c | 25 |
2 files changed, 19 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2302c21..da4bb26 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2021-03-24 Luis Machado <luis.machado@linaro.org> + * linux-tdep.c (linux_find_memory_regions_full): Use std::string + instead of char arrays. + +2021-03-24 Luis Machado <luis.machado@linaro.org> + * Makefile.in (ALL_64_TARGET_OBS): Add arch/aarch64-mte-linux.o. (HFILES_NO_SRCDIR): Add arch/aarch64-mte-linux.h and nat/aarch64-mte-linux-ptrace.h. diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index ab3402a..17ed9ca 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -1279,8 +1279,6 @@ linux_find_memory_regions_full (struct gdbarch *gdbarch, linux_find_memory_region_ftype *func, void *obfd) { - char mapsfilename[100]; - char coredumpfilter_name[100]; pid_t pid; /* Default dump behavior of coredump_filter (0x33), according to Documentation/filesystems/proc.txt from the Linux kernel @@ -1298,10 +1296,12 @@ linux_find_memory_regions_full (struct gdbarch *gdbarch, if (use_coredump_filter) { - xsnprintf (coredumpfilter_name, sizeof (coredumpfilter_name), - "/proc/%d/coredump_filter", pid); + std::string core_dump_filter_name + = string_printf ("/proc/%d/coredump_filter", pid); + gdb::unique_xmalloc_ptr<char> coredumpfilterdata - = target_fileio_read_stralloc (NULL, coredumpfilter_name); + = target_fileio_read_stralloc (NULL, core_dump_filter_name.c_str ()); + if (coredumpfilterdata != NULL) { unsigned int flags; @@ -1311,14 +1311,16 @@ linux_find_memory_regions_full (struct gdbarch *gdbarch, } } - xsnprintf (mapsfilename, sizeof mapsfilename, "/proc/%d/smaps", pid); + std::string maps_filename = string_printf ("/proc/%d/smaps", pid); + gdb::unique_xmalloc_ptr<char> data - = target_fileio_read_stralloc (NULL, mapsfilename); + = target_fileio_read_stralloc (NULL, maps_filename.c_str ()); + if (data == NULL) { /* Older Linux kernels did not support /proc/PID/smaps. */ - xsnprintf (mapsfilename, sizeof mapsfilename, "/proc/%d/maps", pid); - data = target_fileio_read_stralloc (NULL, mapsfilename); + maps_filename = string_printf ("/proc/%d/maps", pid); + data = target_fileio_read_stralloc (NULL, maps_filename.c_str ()); } if (data != NULL) @@ -1378,7 +1380,8 @@ linux_find_memory_regions_full (struct gdbarch *gdbarch, if (sscanf (line, "%64s", keyword) != 1) { - warning (_("Error parsing {s,}maps file '%s'"), mapsfilename); + warning (_("Error parsing {s,}maps file '%s'"), + maps_filename.c_str ()); break; } @@ -1399,7 +1402,7 @@ linux_find_memory_regions_full (struct gdbarch *gdbarch, if (sscanf (line, "%*s%lu", &number) != 1) { warning (_("Error parsing {s,}maps file '%s' number"), - mapsfilename); + maps_filename.c_str ()); break; } if (number > 0) |