On Wed, Mar 15, 2017 at 11:10 PM, Tapani Pälli <tapani.pa...@intel.com> wrote: > According to dl_iterate_phdr man page first object visited is the > main program where dlpi_name is an empty string. This fixes segfault > on Android when using build-id as identifier.
If Android's libc returns dlpi_name as a NULL pointer for the main executable, I think that's a bug in their implementation.. A null pointer is not an empty string. The empty string is "". At the same time, there's not really an official specification for dl_iterate_phdr as far as I know, since it's a GNU extension. > Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> > --- > src/util/build_id.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/src/util/build_id.c b/src/util/build_id.c > index c53e71d..797ea22 100644 > --- a/src/util/build_id.c > +++ b/src/util/build_id.c > @@ -55,6 +55,12 @@ build_id_find_nhdr_callback(struct dl_phdr_info *info, > size_t size, void *data_) > { > struct callback_data *data = data_; > > + /* The first object visited by callback is the main program. > + * For the main program, the dlpi_name field will be an empty string. > + */ > + if (info->dlpi_name == NULL) > + return 0; If you change the second line of the comment to simply say "Android's libc returns a NULL pointer for the first executable" this patch gets my Reviewed-by: Matt Turner <matts...@gmail.com> Thanks Tapani! _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev