]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
2006-02-26 Roland McGrath <roland@redhat.com>
authorRoland McGrath <roland@redhat.com>
Mon, 27 Feb 2006 04:53:00 +0000 (04:53 +0000)
committerRoland McGrath <roland@redhat.com>
Mon, 27 Feb 2006 04:53:00 +0000 (04:53 +0000)
* offline.c (dwfl_report_offline): Account for dwfl_report_elf having
aligned up from DWFL->offline_next_address when checking for overlap.

libdwfl/ChangeLog
libdwfl/offline.c

index 8615f0cda845bb7fd7b51d143f6f52c4bf934c7a..82c04586f57503fe02382a1a06d9b9d782501a8c 100644 (file)
@@ -1,3 +1,8 @@
+2006-02-26  Roland McGrath  <roland@redhat.com>
+
+       * offline.c (dwfl_report_offline): Account for dwfl_report_elf having
+       aligned up from DWFL->offline_next_address when checking for overlap.
+
 2005-12-22  Roland McGrath  <roland@redhat.com>
 
        * argp-std.c (parse_opt): Call dwfl_end in failure cases.
index 05496399b5f461afa34fe24c2dba676c1b92ccd3..3cf110f19e4f06eac9aa9a88ee63c6070652b954 100644 (file)
@@ -1,5 +1,5 @@
 /* Recover relocatibility for addresses computed from debug information.
-   Copyright (C) 2005 Red Hat, Inc.
+   Copyright (C) 2005, 2006 Red Hat, Inc.
 
    This program is Open Source software; you can redistribute it and/or
    modify it under the terms of the Open Software License version 1.0 as
@@ -60,8 +60,11 @@ dwfl_report_offline (Dwfl *dwfl, const char *name,
       /* If this is an ET_EXEC file with fixed addresses, the address range
         it consumed may or may not intersect with the arbitrary range we
         will use for relocatable modules.  Make sure we always use a free
-        range for the offline allocations.  */
-      if (dwfl->offline_next_address >= mod->low_addr
+        range for the offline allocations.  If this module did use
+        offline_next_address, it may have rounded it up for the module's
+        alignment requirements.  */
+      if ((dwfl->offline_next_address >= mod->low_addr
+          || mod->low_addr - dwfl->offline_next_address < OFFLINE_REDZONE)
          && dwfl->offline_next_address < mod->high_addr + OFFLINE_REDZONE)
        dwfl->offline_next_address = mod->high_addr + OFFLINE_REDZONE;