mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-14 17:11:06 +00:00
f0b2132b35
This change should be fully backwards-compatible because the old code aborted the load if a soname mismatch was encountered (instead of searching further for a matching symbol). This means that no different symbols are found. The soname check was explicitly disabled for the skip_map != NULL case. However, this only happens with dl(v)sym and RTLD_NEXT, and those lookups do not come with a verneed entry that could be used for the check. The error check was already explicitly disabled for the skip_map != NULL case, that is, when dl(v)sym was called with RTLD_NEXT. But _dl_vsym always sets filename in the struct r_found_version argument to NULL, so the check was not active anyway. This means that symbol lookup results for the skip_map != NULL case do not change, either.
36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
/* Check that a moved versioned symbol can be found using dlsym, dlvsym.
|
|
Copyright (C) 2019 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library; if not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
#include <stddef.h>
|
|
#include <support/check.h>
|
|
#include <support/xdlfcn.h>
|
|
|
|
static int
|
|
do_test (void)
|
|
{
|
|
/* tst-sonamemove-runmod1.so does not define moved_function, but it
|
|
depends on tst-sonamemove-runmod2.so, which does. */
|
|
void *handle = xdlopen ("tst-sonamemove-runmod1.so", RTLD_NOW);
|
|
TEST_VERIFY (xdlsym (handle, "moved_function") != NULL);
|
|
TEST_VERIFY (xdlvsym (handle, "moved_function", "SONAME_MOVE") != NULL);
|
|
|
|
return 0;
|
|
}
|
|
|
|
#include <support/test-driver.c>
|