|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 24/27] xsplice: Stacking build-id dependency checking.
>>> On 25.04.16 at 17:35, <konrad.wilk@xxxxxxxxxx> wrote:
> @@ -25,7 +28,7 @@ clean::
> .PHONY: config.h
> config.h: OLD_CODE_SZ=$(call CODE_SZ,$(BASEDIR)/xen-syms,xen_extra_version)
> config.h: NEW_CODE_SZ=$(call CODE_SZ,$<,xen_hello_world)
> -config.h: xen_hello_world_func.o
> +config.h: xen_hello_world_func.o xen_bye_world_func.o
Why is that?
> @@ -33,9 +36,43 @@ config.h: xen_hello_world_func.o
> xen_hello_world.o: xen_hello_world_func.o
>
> .PHONY: $(XSPLICE)
> -$(XSPLICE): config.h xen_hello_world_func.o xen_hello_world.o
> - $(LD) $(LDFLAGS) -r -o $(XSPLICE) xen_hello_world_func.o \
> - xen_hello_world.o
> +$(XSPLICE): config.h xen_hello_world_func.o xen_hello_world.o note.o
> + $(LD) $(LDFLAGS) $(build_id_linker) -r -o $(XSPLICE) \
> + xen_hello_world_func.o xen_hello_world.o note.o
Probably easier to read and maintain if you used $(filter %.o,$^)
here?
> +xen_bye_world.o: xen_bye_world_func.o
Again - why?
> +.PHONY: $(XSPLICE_BYE)
> +$(XSPLICE_BYE): $(XSPLICE) config.h xen_bye_world_func.o xen_bye_world.o
> hello_world_note.o
The object files depend on config.h, but the binary does only
indirectly via the object files I would guess. (This, just like the
question right above, would then apply to the $(XSPLICE) related
rules too, in an earlier patch.)
> + $(LD) $(LDFLAGS) $(build_id_linker) -r -o $(XSPLICE_BYE) \
> + xen_bye_world_func.o xen_bye_world.o hello_world_note.o
Same as above - better use $^ (and if config.h goes away as a
direct dependency, it looks like you don't even need $(filter ...)).
> +int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
> + const void **p, unsigned int *len)
> +{
> + /* Check if we really have a build-id. */
> + if ( NT_GNU_BUILD_ID != n->type )
> + return -ENODATA;
> +
> + if ( n_sz <= sizeof(*n) )
> + return -EINVAL;
> +
> + if ( n->namesz + n->descsz > UINT_MAX )
Afaict this is always false. I think you really want
if ( n->namesz + n->descsz < n->namesz )
> + return -EINVAL;
> +
> + if ( n->namesz != 4 /* GNU\0 */)
< 4 would suffice here (and be more flexible if odd padding gets
inserted by whatever generates the note)
> + return -EINVAL;
> +
> + if ( n->namesz + n->descsz + sizeof(*n) > n_sz )
if ( n->namesz + n->descsz > n_sz - sizeof(*n) )
> @@ -98,18 +130,9 @@ static int __init xen_build_init(void)
> if ( &n[1] > __note_gnu_build_id_end )
> return -ENODATA;;
>
> - /* Check if we really have a build-id. */
> - if ( NT_GNU_BUILD_ID != n->type )
> - return -ENODATA;
> + sz = (size_t)__note_gnu_build_id_end - (size_t)n;
So let's hope sizeof(void *) == sizeof(size_t) (or else this would yield
compiler warnings).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |