diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2021-02-19 17:39:18 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2021-02-24 16:58:05 +0000 |
commit | dd80d75040a291400c0fddb0f8b05c3f40da49ff (patch) | |
tree | 64425fc2d5a9a68a32b9da4ded3e3795c496b6fd /gdb/exec.c | |
parent | 336aa7b740c64070ae14d2364edddb7df7bce011 (diff) | |
download | gdb-dd80d75040a291400c0fddb0f8b05c3f40da49ff.zip gdb-dd80d75040a291400c0fddb0f8b05c3f40da49ff.tar.gz gdb-dd80d75040a291400c0fddb0f8b05c3f40da49ff.tar.bz2 |
gdb: use std::string instead of a fixed size buffer
The 'section' command uses a fixed size buffer into which a section
name is copied. This commit replaces this with a use of std::string
so we can now display very long section names.
The expected results of one test need to be updated.
gdb/ChangeLog:
* exec.c (set_section_command): Move variable declarations into
the function body, and use std::string instead of a fixed size
buffer.
gdb/testsuite/ChangeLog:
* gdb.base/sect-cmd.exp: Update expected results.
Diffstat (limited to 'gdb/exec.c')
-rw-r--r-- | gdb/exec.c | 18 |
1 files changed, 6 insertions, 12 deletions
@@ -989,27 +989,23 @@ static void set_section_command (const char *args, int from_tty) { const char *secname; - unsigned seclen; - unsigned long secaddr; - char secprint[100]; - long offset; if (args == 0) error (_("Must specify section name and its virtual address")); /* Parse out section name. */ for (secname = args; !isspace (*args); args++); - seclen = args - secname; + unsigned seclen = args - secname; /* Parse out new virtual address. */ - secaddr = parse_and_eval_address (args); + CORE_ADDR secaddr = parse_and_eval_address (args); for (target_section &p : current_program_space->target_sections ()) { if (!strncmp (secname, bfd_section_name (p.the_bfd_section), seclen) && bfd_section_name (p.the_bfd_section)[seclen] == '\0') { - offset = secaddr - p.addr; + long offset = secaddr - p.addr; p.addr += offset; p.endaddr += offset; if (from_tty) @@ -1017,11 +1013,9 @@ set_section_command (const char *args, int from_tty) return; } } - if (seclen >= sizeof (secprint)) - seclen = sizeof (secprint) - 1; - strncpy (secprint, secname, seclen); - secprint[seclen] = '\0'; - error (_("Section %s not found"), secprint); + + std::string secprint (secname, seclen); + error (_("Section %s not found"), secprint.c_str ()); } /* If we can find a section in FILENAME with BFD index INDEX, adjust |