[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [livepatch-build-tools part2 2/6] common: Add is_referenced_section() helper function



> On 29. Apr 2019, at 17:14, Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> wrote:
> 
> On 4/16/19 1:07 PM, Pawel Wieczorkiewicz wrote:
>> This function checks if given section has an included corresponding
>> RELA section and/or any of the symbols table symbols references the
>> section. Section associated symbols are ignored here as there is
>> always such a symbol for every section.
>> Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx>
>> Reviewed-by: Andra-Irina Paraschiv <andraprs@xxxxxxxxxx>
>> Reviewed-by: Bjoern Doebel <doebel@xxxxxxxxx>
>> Reviewed-by: Norbert Manthey <nmanthey@xxxxxxxxx>
>> ---
>>  common.c | 22 +++++++++++++++++++++-
>>  common.h |  1 +
>>  2 files changed, 22 insertions(+), 1 deletion(-)
>> diff --git a/common.c b/common.c
>> index 1fb07cb..c968299 100644
>> --- a/common.c
>> +++ b/common.c
>> @@ -15,7 +15,7 @@
>>    int is_rela_section(struct section *sec)
>>  {
>> -    return (sec->sh.sh_type == SHT_RELA);
>> +    return sec && (sec->sh.sh_type == SHT_RELA);
>>  }
>>    int is_local_sym(struct symbol *sym)
>> @@ -270,6 +270,26 @@ int is_standard_section(struct section *sec)
>>      }
>>  }
>>  +int is_referenced_section(const struct section *sec, const struct 
>> kpatch_elf *kelf)
> 
> Let's keep to 80 chars where practical (and throughout the rest of the 
> patches).

ACK. Will fix. Although, sometimes it makes the code pretty unreadable.

> 
>> +{
>> +    struct symbol *sym;
>> +
>> +    if (is_rela_section(sec->rela) && sec->rela->include)
>> +            return true;
>> +
>> +    list_for_each_entry(sym, &kelf->symbols, list) {
>> +            if (!sym->include || !sym->sec)
>> +                    continue;
>> +            /* Ignore section associated sections */
>> +            if (sym->type == STT_SECTION)
>> +                    continue;
>> +            if (sym->sec->index == sec->index)
>> +                    return true;
> 
> You can simplify this check to `sym->sec == sec` like the rest of the code 
> does.

Might be my paranoia again (or I am simply missing some obvious 
assumptions/invariants),
but I explicitly wanted to check whether given section/symbol is referenced 
using other means
than addresses.

> 
> -- 
> Ross Lagerwall


Best Regards,
Pawel Wieczorkiewicz



Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich
Ust-ID: DE 289 237 879
Eingetragen am Amtsgericht Charlottenburg HRB 149173 B



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.