This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils 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]

[patch] Fix bias for DSOs loaded from core file with build-id


Hi Roland,

jankratochvil/buildid-bias

another missing initialization of module bias.  If file is found in arbitrary
way but later the check the file matches is done via build-id the module bias
was not initialized.


Thanks,
Jan


commit 2972c2a989cfd1ccc69939d34bc44c612b742d47
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Wed Oct 17 21:49:10 2012 +0200

    libdwfl/
    2012-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
    
    	* dwfl_module_getdwarf.c (__libdwfl_getelf): Do not return yet on
    	matching build-id.  Check ELFERR before closing this MOD file.
    
    tests/
    2012-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
    
    	* run-addrname-test.sh: New test for DSO with build-id bias.
    	* testfile69.core.bz2: New file.
    	* testfile69.so.bz2: New file.
    
    Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>

diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 189d3b7..db3c9b7 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,8 @@
+2012-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* dwfl_module_getdwarf.c (__libdwfl_getelf): Do not return yet on
+	matching build-id.  Check ELFERR before closing this MOD file.
+
 2012-10-10  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* dwfl_segment_report_module.c (dwfl_segment_report_module):
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
index bbf9ff3..fe0755b 100644
--- a/libdwfl/dwfl_module_getdwarf.c
+++ b/libdwfl/dwfl_module_getdwarf.c
@@ -176,8 +176,8 @@ __libdwfl_getelf (Dwfl_Module *mod)
 							 mod->main.elf), 2))
 	{
 	case 2:
-	  /* Build ID matches as it should. */
-	  return;
+	  /* Build ID matches as it should.  But initialize MAIN_BIAS below.  */
+	  break;
 
 	case -1:			/* ELF error.  */
 	  mod->elferr = INTUSE(dwfl_errno) ();
@@ -192,13 +192,16 @@ __libdwfl_getelf (Dwfl_Module *mod)
 	  abort ();
 	}
 
-      /* We get here when it was the right ELF file.  Clear it out.  */
-      elf_end (mod->main.elf);
-      mod->main.elf = NULL;
-      if (mod->main.fd >= 0)
+      if (mod->elferr != DWFL_E_NOERROR)
 	{
-	  close (mod->main.fd);
-	  mod->main.fd = -1;
+	  /* We get here when it was the right ELF file.  Clear it out.  */
+	  elf_end (mod->main.elf);
+	  mod->main.elf = NULL;
+	  if (mod->main.fd >= 0)
+	    {
+	      close (mod->main.fd);
+	      mod->main.fd = -1;
+	    }
 	}
     }
 
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 2495fb5..9e8ad2c 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2012-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* run-addrname-test.sh: New test for DSO with build-id bias.
+	* testfile69.core.bz2: New file.
+	* testfile69.so.bz2: New file.
+
 2012-10-10  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* run-addrname-test.sh: New test for core vDSO bias.
diff --git a/tests/run-addrname-test.sh b/tests/run-addrname-test.sh
index 4feb193..cc8aa33 100755
--- a/tests/run-addrname-test.sh
+++ b/tests/run-addrname-test.sh
@@ -298,4 +298,12 @@ __vdso_time
 ??:0
 EOF
 
+testfiles testfile69.core testfile69.so
+testrun_compare ../src/addr2line --core=./testfile69.core -S 0x7f0bc6a33535 0x7f0bc6a33546 <<\EOF
+libstatic+0x9
+??:0
+libglobal+0x9
+??:0
+EOF
+
 exit 0
diff --git a/tests/testfile69.core.bz2 b/tests/testfile69.core.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..99553182aee0aa017d762e9a4fbbe2847eff7fa9
GIT binary patch
literal 4416
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
GKXTBtr0_5R

literal 0
HcmV?d00001

diff --git a/tests/testfile69.so.bz2 b/tests/testfile69.so.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..fdddab98cffcaee843a2738b0b7e84faa5f22895
GIT binary patch
literal 2099
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

literal 0
HcmV?d00001


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