public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Remove hack for GDB which sets the section size to 0
@ 2020-03-05  1:07 Kevin Buettner
  2020-03-13 12:51 ` Nick Clifton
  0 siblings, 1 reply; 2+ messages in thread
From: Kevin Buettner @ 2020-03-05  1:07 UTC (permalink / raw)
  To: binutils; +Cc: Kevin Buettner

[ This patch is part of a four part series posted to gdb-patches.  For
  the complete series, see:

  https://sourceware.org/ml/gdb-patches/2020-03/msg00106.html

  This patch, below, requires approval from binutils maintainers; the
  rest (sent to gdb-patches) do not.  ]

This commit removes a hack for GDB which was introduced in 2007.
See:

    https://sourceware.org/ml/binutils/2007-08/msg00044.html

That hack mostly allowed GDB's handling of core files to continue to
work without any changes to GDB.

The problem with setting the section size to zero is that GDB won't
know how big that section is/was.  Often, this doesn't matter because
the data in question are found in the exec file.  But it can happen
that the section describes memory that had been allocated, but never
written to.  In this instance, the contents of that memory region are
not written to the core file.  Also, since the region in question was
dynamically allocated, it won't appear in the exec file.  We don't
want these regions to appear as inaccessible to GDB (since they *were*
accessible when the process was live), so it's important that GDB know
the size of the region.

I've made changes to GDB which correctly handles this case.  When
attempting to access memory, GDB will first consider core file data
for which both SEC_ALLOC and SEC_HAS_CONTENTS is set.  Next, if that
fails, GDB will attempt to find the data in the exec file.  Finally,
if that also fails, GDB will attempt to access memory in the sections
which are flagged as SEC_ALLOC, but not SEC_HAS_CONTENTS.

bfd/ChangeLog:

	* elf.c (_bfd_elf_make_section_from_phdr): Remove hack for GDB.

Change-Id: I7cce707aa3c217addbc27589730a77620199843f
---
 bfd/elf.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/bfd/elf.c b/bfd/elf.c
index c4d6718aaa..89c61acc40 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -3007,14 +3007,6 @@ _bfd_elf_make_section_from_phdr (bfd *abfd,
       newsect->alignment_power = bfd_log2 (align);
       if (hdr->p_type == PT_LOAD)
 	{
-	  /* Hack for gdb.  Segments that have not been modified do
-	     not have their contents written to a core file, on the
-	     assumption that a debugger can find the contents in the
-	     executable.  We flag this case by setting the fake
-	     section size to zero.  Note that "real" bss sections will
-	     always have their contents dumped to the core file.  */
-	  if (bfd_get_format (abfd) == bfd_core)
-	    newsect->size = 0;
 	  newsect->flags |= SEC_ALLOC;
 	  if (hdr->p_flags & PF_X)
 	    newsect->flags |= SEC_CODE;
-- 
2.24.1

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Remove hack for GDB which sets the section size to 0
  2020-03-05  1:07 [PATCH] Remove hack for GDB which sets the section size to 0 Kevin Buettner
@ 2020-03-13 12:51 ` Nick Clifton
  0 siblings, 0 replies; 2+ messages in thread
From: Nick Clifton @ 2020-03-13 12:51 UTC (permalink / raw)
  To: Kevin Buettner, binutils

Hi Kevin,

> bfd/ChangeLog:
> 
> 	* elf.c (_bfd_elf_make_section_from_phdr): Remove hack for GDB.

Approved - please apply.

Cheers
  Nick


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-03-13 12:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-05  1:07 [PATCH] Remove hack for GDB which sets the section size to 0 Kevin Buettner
2020-03-13 12:51 ` Nick Clifton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).