Bug 6599 - don't align the load-address
Summary: don't align the load-address
Status: RESOLVED FIXED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Andrew Cagney
URL:
Keywords:
Depends on:
Blocks: frysk-elfutils
  Show dependency treegraph
 
Reported: 2008-06-05 21:54 UTC by Andrew Cagney
Modified: 2008-06-07 12:26 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Cagney 2008-06-05 21:54:21 UTC
From dwfl_module_getdwarf:

@@ -96,11 +100,18 @@ open_elf (Dwfl_Module *mod, struct dwfl_file *file)
          goto elf_error;
        if (ph->p_type == PT_LOAD)
          {
-           file->bias = ((mod->low_addr & -ph->p_align)
-                         - (ph->p_vaddr & -ph->p_align));
+           // Align the vaddr.
+           fprintf(stderr, "mod->low_addr 0x%lx\n", mod->low_addr);
+           fprintf(stderr, "ph->p_align 0x%lx\n", ph->p_align);
+           Dwarf_Addr vaddr = ph->p_vaddr & -ph->p_align;
+           fprintf(stderr, "vaddr 0x%lx\n", vaddr);
+           file->bias = (mod->low_addr - (ph->p_vaddr & -ph->p_align));
+           fprintf(stderr, "setting file bias to something complex 0x%lx\n",
+                   file->bias);
            break;
          }
       }
+  }
 
   mod->e_type = ehdr->e_type;
 
for instance, an solib mapped at:

  low 0x2aaab0508000 high 0x2aaab07dc000

with alignment 0x200000, will result in a bias of 0x2aaab0400000, when it should
just be the low address
Comment 1 Andrew Cagney 2008-06-05 21:58:24 UTC
upstream: https://bugzilla.redhat.com/show_bug.cgi?id=450218
Comment 2 Andrew Cagney 2008-06-07 12:26:25 UTC
This has been submitted upstream.

2008-06-07  Andrew Cagney  <cagney@redhat.com>

        * dwfl_module_getdwarf.c (open_elf): Don't align the module's load
        address.  Bug frysk/6599, redhat/450218.