| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 3/4] libelf: Store maximum PHDR p_align
 On 27.03.2024 22:51, Jason Andryuk wrote:
> --- a/xen/common/libelf/libelf-loader.c
> +++ b/xen/common/libelf/libelf-loader.c
> @@ -468,6 +468,7 @@ void elf_parse_binary(struct elf_binary *elf)
>  {
>      ELF_HANDLE_DECL(elf_phdr) phdr;
>      uint64_t low = -1, high = 0, paddr, memsz;
> +    uint64_t max_align = 0, palign;
>      unsigned i, count;
>  
>      count = elf_phdr_count(elf);
> @@ -481,17 +482,23 @@ void elf_parse_binary(struct elf_binary *elf)
>              continue;
>          paddr = elf_uval(elf, phdr, p_paddr);
>          memsz = elf_uval(elf, phdr, p_memsz);
> -        elf_msg(elf, "ELF: phdr: paddr=%#" PRIx64 " memsz=%#" PRIx64 "\n",
> -                paddr, memsz);
> +        palign = elf_uval(elf, phdr, p_align);
> +        elf_msg(elf,
> +                "ELF: phdr: paddr=%#" PRIx64 " memsz=%#" PRIx64 " palign=%#" 
> PRIx64 "\n",
> +                paddr, memsz, palign);
>          if ( low > paddr )
>              low = paddr;
>          if ( high < paddr + memsz )
>              high = paddr + memsz;
> +        if ( max_align < palign )
> +            max_align = palign;
>      }
>      elf->pstart = low;
>      elf->pend = high;
> -    elf_msg(elf, "ELF: memory: %#" PRIx64 " -> %#" PRIx64 "\n",
> -            elf->pstart, elf->pend);
> +    elf->palign = max_align;
> +    elf_msg(elf,
> +            "ELF: memory: %#" PRIx64 " -> %#" PRIx64 " align:%#" PRIx64 "\n",
> +            elf->pstart, elf->pend, elf->palign);
>  }
Hmm, it's just this final logging change which I'm a little concerned by:
Having looked at Linux'es phdr, I noticed that the addresses there aren't
necessarily matching the corresponding alignment. Therefore I'm a little
concerned that the output here might raise questions when people see
seemingly inconsistent values in the log. Could you/we at least make it
read like e.g. "align (max): ..."?
Jan
 
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |