dwarf2read: Allow SEC_ALLOC sections to be located at address 0

Message ID 20150710180132.46351ee6@pinnacle.lan
State New, archived
Headers

Commit Message

Kevin Buettner July 11, 2015, 1:01 a.m. UTC
  GDB already allows statically initialized variables, located in
SEC_LOAD sections, to be placed at address 0.  This change allows
uninitialized variables (which are in SEC_ALLOC sections) to be placed
address 0 as well.

gdb/ChangeLog:
    
	* dwarf2read.c (dwarf2_locate_sections): Allow has_section_at_zero
	to be set for SEC_ALLOC sections too.
---
 gdb/dwarf2read.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Pedro Alves July 14, 2015, 11:56 a.m. UTC | #1
On 07/11/2015 02:01 AM, Kevin Buettner wrote:
> GDB already allows statically initialized variables, located in
> SEC_LOAD sections, to be placed at address 0.  This change allows
> uninitialized variables (which are in SEC_ALLOC sections) to be placed
> address 0 as well.
> 
> gdb/ChangeLog:
>     
> 	* dwarf2read.c (dwarf2_locate_sections): Allow has_section_at_zero
> 	to be set for SEC_ALLOC sections too.

LGTM.

Thanks,
Pedro Alves
  
Kevin Buettner July 18, 2015, 5:13 p.m. UTC | #2
On Tue, 14 Jul 2015 12:56:30 +0100
Pedro Alves <palves@redhat.com> wrote:

> On 07/11/2015 02:01 AM, Kevin Buettner wrote:
> > GDB already allows statically initialized variables, located in
> > SEC_LOAD sections, to be placed at address 0.  This change allows
> > uninitialized variables (which are in SEC_ALLOC sections) to be placed
> > address 0 as well.
> > 
> > gdb/ChangeLog:
> >     
> > 	* dwarf2read.c (dwarf2_locate_sections): Allow has_section_at_zero
> > 	to be set for SEC_ALLOC sections too.
> 
> LGTM.

I've pushed this.

Thanks for looking it over.

Kevin
  

Patch

diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 496b74f..f498a3a 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -2241,7 +2241,7 @@  dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
     }
 
-  if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
+  if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
       && bfd_section_vma (abfd, sectp) == 0)
     dwarf2_per_objfile->has_section_at_zero = 1;
 }