This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA] should gdb require '.text' and '.data' sections?


Michael Snyder wrote:

>josef ezra wrote:
>
>>Hello
>>
>>I'm trying to debug a symbol file that has no '.text' section. Unlike 5.0
>>version, the new SECT_OFF_TEXT(objfile) macro calls (no-return) internal
>>error and prevent the read.
>>
>>Should gdb work that way (requiring '.text' and '.data' sections)?
>>
>>If not, can we consider the first sections flagged 'SEC_CODE'/'SEC_DATA' as
>>substitutes? Or maybe better have a default 0/1 values (like 5.0)? Both
>>should work in my case.
>>
>
>I agree, gdb should not require .text and .data.  For one thing, 
>a simple embedded assembler program might have no initialized data.  
>For another, those segments might be called something else.
>

This patch will set objfile->sect_index_code/data index to the first 
section that contains CODE/DATA flag when no section was named 
'.text'/'.data'.

- jezra

bfd/ChangeLog:
* section.c (bfd_get_first_code_section): new function.
* section.c (bfd_get_first_data_section): new function.
* bfd-in2.h: Regenerated via 'make headers'.

gdb/ChangeLog:
* symfile.c ( default_symfile_offsets): default index for '.text' and 
'.data' sections.

Index: bfd/section.c
===================================================================
RCS file: /cvs/src/src/bfd/section.c,v
retrieving revision 1.44
diff -u -3 -r1.44 section.c
--- bfd/section.c	30 Jan 2002 18:12:16 -0000	1.44
+++ bfd/section.c	19 Apr 2002 21:19:44 -0000
@@ -772,6 +772,56 @@
 
 /*
 FUNCTION
+	bfd_get_first_code_section
+
+SYNOPSIS
+	asection *bfd_get_first_code_section(bfd *abfd);
+
+DESCRIPTION
+	Run through @var{abfd} and return the first
+	<<asection>>s whose flagged SEC_CODE, <<NULL>> 
+	@xref{Sections} if none (just in case .. )
+*/
+
+asection *
+bfd_get_first_code_section (abfd)
+     bfd *abfd;
+{
+  asection *sect;
+
+  for (sect = abfd->sections; sect != NULL; sect = sect->next)
+    if (sect->flags & SEC_CODE)
+      return sect;
+  return NULL;
+}
+
+/*
+FUNCTION
+	bfd_get_first_data_section
+
+SYNOPSIS
+	asection *bfd_get_first_data_section(bfd *abfd);
+
+DESCRIPTION
+	Run through @var{abfd} and return the first
+	<<asection>>s whose flagged SEC_DATA, <<NULL>> 
+	@xref{Sections} if none (just in case .. )
+*/
+
+asection *
+bfd_get_first_data_section (abfd)
+     bfd *abfd;
+{
+  asection *sect;
+
+  for (sect = abfd->sections; sect != NULL; sect = sect->next)
+    if (sect->flags & SEC_DATA)
+      return sect;
+  return NULL;
+}
+
+/*
+FUNCTION
 	bfd_get_unique_section_name
 
 SYNOPSIS
Index: bfd/bfd-in2.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in2.h,v
retrieving revision 1.149
diff -u -3 -r1.149 bfd-in2.h
--- bfd/bfd-in2.h	4 Apr 2002 19:53:34 -0000	1.149
+++ bfd/bfd-in2.h	19 Apr 2002 21:19:45 -0000
@@ -1401,6 +1401,12 @@
 
 asection *
 bfd_get_section_by_name PARAMS ((bfd *abfd, const char *name));
+
+asection *
+bfd_get_first_code_section PARAMS ((bfd *abfd));
+
+asection *
+bfd_get_first_data_section PARAMS ((bfd *abfd));
 
 char *
 bfd_get_unique_section_name PARAMS ((bfd *abfd,
Index: gdb/symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.58
diff -u -3 -r1.58 symfile.c
--- gdb/symfile.c	29 Mar 2002 01:09:27 -0000	1.58
+++ gdb/symfile.c	22 Apr 2002 13:05:51 -0000
@@ -522,10 +522,14 @@
      .rodata sections. */
 
   sect = bfd_get_section_by_name (objfile->obfd, ".text");
+  if (!sect)
+    sect = bfd_get_first_code_section (objfile->obfd); 
   if (sect) 
     objfile->sect_index_text = sect->index;
 
   sect = bfd_get_section_by_name (objfile->obfd, ".data");
+  if (!sect)
+    sect = bfd_get_first_data_section (objfile->obfd) ; 
   if (sect) 
     objfile->sect_index_data = sect->index;
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]