X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fexec.c;h=0bde096c7c2ed51c0e160e71d0ab25f78ed2e8d9;hb=e7494ffb7117d0f6291ab03434a7d326a60c4154;hp=16b7e5f4e8d8347c40785382f720965e7fc118dd;hpb=521168af1c8b6aaeb00d6bfae89abf737103def5;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/exec.c b/gdb/exec.c index 16b7e5f4e8..0bde096c7c 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -55,7 +55,7 @@ void (*file_changed_hook) (char *); /* Prototypes for local functions */ -static void add_to_section_table (bfd *, sec_ptr, PTR); +static void add_to_section_table (bfd *, sec_ptr, void *); static void exec_close (int); @@ -65,7 +65,7 @@ static void set_section_command (char *, int); static void exec_files_info (struct target_ops *); -static void bfdsec_to_vmap (bfd *, sec_ptr, PTR); +static void bfdsec_to_vmap (bfd *, sec_ptr, void *); static int ignore (CORE_ADDR, char *); @@ -90,7 +90,6 @@ int write_files = 0; #ifndef NEED_TEXT_START_END #define NEED_TEXT_START_END (0) #endif -CORE_ADDR text_start = 0; CORE_ADDR text_end = 0; struct vmap *vmap; @@ -279,7 +278,7 @@ exec_file_attach (char *filename, int from_tty) /* FIXME: The comment above does not match the code. The code checks for sections with are either code *or* readonly. */ - text_start = ~(CORE_ADDR) 0; + CORE_ADDR text_start = ~(CORE_ADDR) 0; text_end = (CORE_ADDR) 0; for (p = exec_ops.to_sections; p < exec_ops.to_sections_end; p++) if (bfd_get_section_flags (p->bfd, p->the_bfd_section) @@ -366,7 +365,7 @@ file_command (char *arg, int from_tty) we cast it back to its proper type. */ static void -add_to_section_table (bfd *abfd, sec_ptr asect, PTR table_pp_char) +add_to_section_table (bfd *abfd, sec_ptr asect, void *table_pp_char) { struct section_table **table_pp = (struct section_table **) table_pp_char; flagword aflag; @@ -405,7 +404,7 @@ build_section_table (bfd *some_bfd, struct section_table **start, } static void -bfdsec_to_vmap (bfd *abfd, sec_ptr sect, PTR arg3) +bfdsec_to_vmap (bfd *abfd, sec_ptr sect, void *arg3) { struct vmap_and_bfd *vmap_bfd = (struct vmap_and_bfd *) arg3; struct vmap *vp; @@ -485,7 +484,7 @@ xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write, int res; struct section_table *p; CORE_ADDR nextsectaddr, memend; - int (*xfer_fn) (bfd *, sec_ptr, PTR, file_ptr, bfd_size_type); + int (*xfer_fn) (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); asection *section = NULL; if (len <= 0) @@ -545,6 +544,7 @@ void print_section_info (struct target_ops *t, bfd *abfd) { struct section_table *p; + /* FIXME: "016l" is not wide enough when TARGET_ADDR_BIT > 64. */ char *fmt = TARGET_ADDR_BIT <= 32 ? "08l" : "016l"; printf_filtered ("\t`%s', ", bfd_get_filename (abfd)); @@ -560,6 +560,12 @@ print_section_info (struct target_ops *t, bfd *abfd) { printf_filtered ("\t%s", local_hex_string_custom (p->addr, fmt)); printf_filtered (" - %s", local_hex_string_custom (p->endaddr, fmt)); + + /* FIXME: A format of "08l" is not wide enough for file offsets + larger than 4GB. OTOH, making it "016l" isn't desirable either + since most output will then be much wider than necessary. It + may make sense to test the size of the file and choose the + format string accordingly. */ if (info_verbose) printf_filtered (" @ %s", local_hex_string_custom (p->the_bfd_section->filepos, "08l"));