diff options
Diffstat (limited to 'gdb/exec.c')
-rw-r--r-- | gdb/exec.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gdb/exec.c b/gdb/exec.c index 600a905c8ba..d24c4b49bff 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -641,6 +641,44 @@ exec_files_info (t) } } +/* msnyder 5/21/99: + exec_set_section_offsets sets the offsets of all the sections + in the exec objfile. */ + +void +exec_set_section_offsets (text_off, data_off, bss_off) + bfd_signed_vma text_off; + bfd_signed_vma data_off; + bfd_signed_vma bss_off; +{ + struct section_table *sect; + + for (sect = exec_ops.to_sections; + sect < exec_ops.to_sections_end; + sect++) + { + flagword flags; + + flags = bfd_get_section_flags (exec_bfd, sect->the_bfd_section); + + if (flags & SEC_CODE) + { + sect->addr += text_off; + sect->endaddr += text_off; + } + else if (flags & (SEC_DATA | SEC_LOAD)) + { + sect->addr += data_off; + sect->endaddr += data_off; + } + else if (flags & SEC_ALLOC) + { + sect->addr += bss_off; + sect->endaddr += bss_off; + } + } +} + static void set_section_command (args, from_tty) char *args; |