From 34c0bd933de019af43d6c8fe0bb7bdf87442eaa9 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Tue, 8 Jan 2002 02:09:31 +0000 Subject: [PATCH] 2002-01-07 Michael Snyder * cp-valprint.c (cp_print_value): FIXME comment, alloca size. * p-valprint.c (pascal_object_print_value): Ditto. * somread.c (som_symtab_read): Ditto. * symfile.c (simple_free_overlay_region_table): Ditto. * valops.c (value_assign): Ditto. --- gdb/ChangeLog | 6 ++++++ gdb/cp-valprint.c | 1 + gdb/p-valprint.c | 1 + gdb/somread.c | 2 ++ gdb/symfile.c | 1 + gdb/valops.c | 1 + 6 files changed, 12 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1ab3eb4e86d..b1f4539b9bc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2002-01-07 Michael Snyder + * cp-valprint.c (cp_print_value): FIXME comment, alloca size. + * p-valprint.c (pascal_object_print_value): Ditto. + * somread.c (som_symtab_read): Ditto. + * symfile.c (simple_free_overlay_region_table): Ditto. + * valops.c (value_assign): Ditto. + * tracepoint.c (tracepoint_save_command): From Klee Dienes -- use tilde_expand and strerror for opening save-tracepoints file. diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 567e0abed35..669203121c8 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -570,6 +570,7 @@ cp_print_value (struct type *type, struct type *real_type, char *valaddr, && ((boffset + offset) < 0 || (boffset + offset) >= TYPE_LENGTH (type))) { + /* FIXME (alloca): unsafe if baseclass is really really large. */ base_valaddr = (char *) alloca (TYPE_LENGTH (baseclass)); if (target_read_memory (address + offset + boffset, base_valaddr, TYPE_LENGTH (baseclass)) != 0) diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index 08a862eb2ca..0b89c727e88 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -970,6 +970,7 @@ pascal_object_print_value (struct type *type, char *valaddr, CORE_ADDR address, if (boffset != -1 && (boffset < 0 || boffset >= TYPE_LENGTH (type))) { + /* FIXME (alloc): not safe is baseclass is really really big. */ base_valaddr = (char *) alloca (TYPE_LENGTH (baseclass)); if (target_read_memory (address + boffset, base_valaddr, TYPE_LENGTH (baseclass)) != 0) diff --git a/gdb/somread.c b/gdb/somread.c index aba3323d3df..bab25d4d802 100644 --- a/gdb/somread.c +++ b/gdb/somread.c @@ -99,12 +99,14 @@ som_symtab_read (bfd *abfd, struct objfile *objfile, number_of_symbols = bfd_get_symcount (abfd); + /* FIXME (alloca): could be quite large. */ buf = alloca (symsize * number_of_symbols); bfd_seek (abfd, obj_som_sym_filepos (abfd), SEEK_SET); val = bfd_bread (buf, symsize * number_of_symbols, abfd); if (val != symsize * number_of_symbols) error ("Couldn't read symbol dictionary!"); + /* FIXME (alloca): could be quite large. */ stringtab = alloca (obj_som_stringtab_size (abfd)); bfd_seek (abfd, obj_som_str_filepos (abfd), SEEK_SET); val = bfd_bread (stringtab, obj_som_stringtab_size (abfd), abfd); diff --git a/gdb/symfile.c b/gdb/symfile.c index d999cf9349f..c0b9d3e786a 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -3009,6 +3009,7 @@ simple_free_overlay_region_table (void) static void read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr, int len) { + /* FIXME (alloca): Not safe if array is very large. */ char *buf = alloca (len * TARGET_LONG_BYTES); int i; diff --git a/gdb/valops.c b/gdb/valops.c index cb302226bb1..f211753c4a7 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -697,6 +697,7 @@ value_assign (struct value *toval, struct value *fromval) int amount_copied; /* Make the buffer large enough in all cases. */ + /* FIXME (alloca): Not safe for very large data types. */ char *buffer = (char *) alloca (amount_to_copy + sizeof (LONGEST) + MAX_REGISTER_RAW_SIZE); -- 2.30.2