mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 09:43:32 +08:00
Fix misspellings in elf/ -- BZ 25337
Applying this commit results in bit-identical libc.so.6. The elf/ld-linux-x86-64.so.2 does change, but only in .note.gnu.build-id Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
parent
a1950a0758
commit
630da022cb
@ -2723,7 +2723,7 @@ $(objpfx)tst-tls-manydynamic0mod-dep.so: $(objpfx)tst-tls-manydynamic1mod-dep.so
|
||||
# Double dependencies.
|
||||
$(objpfx)tst-tls-manydynamic2mod-dep.so: $(objpfx)tst-tls-manydynamic3mod-dep.so \
|
||||
$(objpfx)tst-tls-manydynamic4mod-dep.so
|
||||
# Double dependencies with each dependency depent of another module.
|
||||
# Double dependencies with each dependency dependent of another module.
|
||||
$(objpfx)tst-tls-manydynamic5mod-dep.so: $(objpfx)tst-tls-manydynamic6mod-dep.so \
|
||||
$(objpfx)tst-tls-manydynamic7mod-dep.so
|
||||
$(objpfx)tst-tls-manydynamic6mod-dep.so: $(objpfx)tst-tls-manydynamic8mod-dep.so
|
||||
@ -2733,7 +2733,7 @@ $(objpfx)tst-tls-manydynamic9mod-dep.so: $(objpfx)tst-tls-manydynamic10mod-dep.s
|
||||
$(objpfx)tst-tls-manydynamic11mod-dep.so
|
||||
$(objpfx)tst-tls-manydynamic10mod-dep.so: $(objpfx)tst-tls-manydynamic12mod-dep.so
|
||||
$(objpfx)tst-tls-manydynamic12mod-dep.so: $(objpfx)tst-tls-manydynamic13mod-dep.so
|
||||
# Long chain with two double depedencies in the middle
|
||||
# Long chain with two double dependencies in the middle
|
||||
$(objpfx)tst-tls-manydynamic14mod-dep.so: $(objpfx)tst-tls-manydynamic15mod-dep.so
|
||||
$(objpfx)tst-tls-manydynamic15mod-dep.so: $(objpfx)tst-tls-manydynamic16mod-dep.so \
|
||||
$(objpfx)tst-tls-manydynamic17mod-dep.so
|
||||
@ -2747,7 +2747,7 @@ LDFLAGS-tst-tls-manydynamic0mod-dep-bad.so = -Wl,--no-as-needed
|
||||
$(objpfx)tst-tls-manydynamic1mod-dep-bad.so: $(objpfx)tst-tls-manydynamic2mod-dep-bad.so \
|
||||
$(objpfx)tst-tls20mod-bad.so
|
||||
LDFLAGS-tst-tls-manydynamic1mod-dep-bad.so = -Wl,--no-as-needed
|
||||
# Double dependencies with each dependency depent of another module.
|
||||
# Double dependencies with each dependency dependent of another module.
|
||||
$(objpfx)tst-tls-manydynamic3mod-dep-bad.so: $(objpfx)tst-tls-manydynamic4mod-dep-bad.so \
|
||||
$(objpfx)tst-tls-manydynamic5mod-dep-bad.so
|
||||
LDFLAGS-tst-tls-manydynamic3mod-dep-bad.so = -Wl,--no-as-needed
|
||||
@ -2763,7 +2763,7 @@ $(objpfx)tst-tls-manydynamic7mod-dep-bad.so: $(objpfx)tst-tls-manydynamic9mod-de
|
||||
LDFLAGS-tst-tls-manydynamic7mod-dep-bad.so = -Wl,--no-as-needed
|
||||
$(objpfx)tst-tls-manydynamic9mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
|
||||
LDFLAGS-tst-tls-manydynamic9mod-dep-bad.so = -Wl,--no-as-needed
|
||||
# Long chain with two double depedencies in the middle
|
||||
# Long chain with two double dependencies in the middle
|
||||
$(objpfx)tst-tls-manydynamic10mod-dep-bad.so: $(objpfx)tst-tls-manydynamic11mod-dep-bad.so
|
||||
LDFLAGS-tst-tls-manydynamic10mod-dep-bad.so = -Wl,--no-as-needed
|
||||
$(objpfx)tst-tls-manydynamic11mod-dep-bad.so: $(objpfx)tst-tls-manydynamic12mod-dep-bad.so \
|
||||
|
@ -66,7 +66,7 @@ glibc_hwcaps_subdirectory_name (const struct glibc_hwcaps_subdirectory *dir)
|
||||
return dir->name->string;
|
||||
}
|
||||
|
||||
/* Linked list of known hwcaps subdirecty names. */
|
||||
/* Linked list of known hwcaps subdirectory names. */
|
||||
static struct glibc_hwcaps_subdirectory *hwcaps;
|
||||
|
||||
struct glibc_hwcaps_subdirectory *
|
||||
|
@ -457,7 +457,7 @@ _dl_load_cache_lookup (const char *name)
|
||||
/* The old-format part of the cache is bogus as well
|
||||
if the endianness does not match. (But it is
|
||||
unclear how the new header can be located if the
|
||||
endianess does not match.) */
|
||||
endianness does not match.) */
|
||||
cache = (void *) -1;
|
||||
cache_new = (void *) -1;
|
||||
__munmap (file, cachesize);
|
||||
|
@ -109,7 +109,7 @@ _dl_signal_exception (int errcode, struct dl_exception *exception,
|
||||
rtld_hidden_def (_dl_signal_exception)
|
||||
|
||||
void
|
||||
_dl_signal_error (int errcode, const char *objname, const char *occation,
|
||||
_dl_signal_error (int errcode, const char *objname, const char *occasion,
|
||||
const char *errstring)
|
||||
{
|
||||
struct rtld_catch *lcatch = get_catch ();
|
||||
@ -126,7 +126,7 @@ _dl_signal_error (int errcode, const char *objname, const char *occation,
|
||||
__longjmp (lcatch->env[0].__jmpbuf, 1);
|
||||
}
|
||||
else
|
||||
fatal_error (errcode, objname, occation, errstring);
|
||||
fatal_error (errcode, objname, occasion, errstring);
|
||||
}
|
||||
rtld_hidden_def (_dl_signal_error)
|
||||
|
||||
@ -162,12 +162,12 @@ _dl_signal_cexception (int errcode, struct dl_exception *exception,
|
||||
}
|
||||
|
||||
void
|
||||
_dl_signal_cerror (int errcode, const char *objname, const char *occation,
|
||||
_dl_signal_cerror (int errcode, const char *objname, const char *occasion,
|
||||
const char *errstring)
|
||||
{
|
||||
if (__builtin_expect (GLRO(dl_debug_mask)
|
||||
& ~(DL_DEBUG_STATISTICS), 0))
|
||||
_dl_debug_printf ("%s: error: %s: %s (%s)\n", objname, occation,
|
||||
_dl_debug_printf ("%s: error: %s: %s (%s)\n", objname, occasion,
|
||||
errstring, receiver ? "continued" : "fatal");
|
||||
|
||||
if (receiver)
|
||||
@ -178,7 +178,7 @@ _dl_signal_cerror (int errcode, const char *objname, const char *occation,
|
||||
(*receiver) (errcode, objname, errstring);
|
||||
}
|
||||
else
|
||||
_dl_signal_error (errcode, objname, occation, errstring);
|
||||
_dl_signal_error (errcode, objname, occasion, errstring);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Handling of dynamic sring tokens.
|
||||
/* Handling of dynamic string tokens.
|
||||
Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
|
@ -312,7 +312,7 @@ _dlfo_mappings_active_segment (uint64_t start_version)
|
||||
return _dlfo_loaded_mappings[start_version & 1];
|
||||
}
|
||||
|
||||
/* Searches PC amoung the address-sorted array [FIRST1, FIRST1 +
|
||||
/* Searches PC among the address-sorted array [FIRST1, FIRST1 +
|
||||
SIZE). Assumes PC >= FIRST1->map_start. Returns a pointer to the
|
||||
element that contains PC, or NULL if there is no such element. */
|
||||
static inline struct dl_find_object_internal *
|
||||
|
@ -44,7 +44,7 @@
|
||||
long respectively. I.e., even with a file which has 10 program
|
||||
header entries we only have to read 372B/624B respectively. Add to
|
||||
this a bit of margin for program notes and reading 512B and 832B
|
||||
for 32-bit and 64-bit files respecitvely is enough. If this
|
||||
for 32-bit and 64-bit files respectively is enough. If this
|
||||
heuristic should really fail for some file the code in
|
||||
`_dl_map_object_from_fd' knows how to recover. */
|
||||
struct filebuf
|
||||
@ -270,7 +270,7 @@ _dl_dst_count (const char *input)
|
||||
least equal to the value returned by DL_DST_REQUIRED. Note that it
|
||||
is possible for a DT_NEEDED, DT_AUXILIARY, and DT_FILTER entries to
|
||||
have colons, but we treat those as literal colons here, not as path
|
||||
list delimeters. */
|
||||
list delimiters. */
|
||||
char *
|
||||
_dl_dst_substitute (struct link_map *l, const char *input, char *result)
|
||||
{
|
||||
|
@ -77,7 +77,7 @@ __rtld_malloc_init_real (struct link_map *main_map)
|
||||
/* We cannot use relocations and initializers for this because the
|
||||
changes made by __rtld_malloc_init_stubs break REL-style
|
||||
(non-RELA) relocations that depend on the previous pointer
|
||||
contents. Also avoid direct relocation depedencies for the
|
||||
contents. Also avoid direct relocation dependencies for the
|
||||
malloc symbols so this function can be called before the final
|
||||
rtld relocation (which enables RELRO, after which the pointer
|
||||
variables cannot be written to). */
|
||||
|
@ -38,7 +38,7 @@
|
||||
|
||||
/* The LD_PROFILE feature has to be implemented different to the
|
||||
normal profiling using the gmon/ functions. The problem is that an
|
||||
arbitrary amount of processes simulataneously can be run using
|
||||
arbitrary amount of processes simultaneously can be run using
|
||||
profiling and all write the results in the same file. To provide
|
||||
this mechanism one could implement a complicated mechanism to merge
|
||||
the content of two profiling runs or one could extend the file
|
||||
@ -177,7 +177,7 @@ static unsigned int log_hashfraction;
|
||||
|
||||
|
||||
|
||||
/* Set up profiling data to profile object desribed by MAP. The output
|
||||
/* Set up profiling data to profile object described by MAP. The output
|
||||
file is found (or created) in OUTPUT_DIR. */
|
||||
void
|
||||
_dl_start_profile (void)
|
||||
@ -218,7 +218,7 @@ _dl_start_profile (void)
|
||||
}
|
||||
|
||||
/* Now we can compute the size of the profiling data. This is done
|
||||
with the same formulars as in `monstartup' (see gmon.c). */
|
||||
with the same formulas as in `monstartup' (see gmon.c). */
|
||||
running = 0;
|
||||
lowpc = ROUNDDOWN (mapstart + GL(dl_profile_map)->l_addr,
|
||||
HISTFRACTION * sizeof (HISTCOUNTER));
|
||||
|
@ -206,7 +206,7 @@ struct link_map *_dl_sysinfo_map;
|
||||
#include <dl-vdso-setup.c>
|
||||
|
||||
/* During the program run we must not modify the global data of
|
||||
loaded shared object simultanously in two threads. Therefore we
|
||||
loaded shared object simultaneously in two threads. Therefore we
|
||||
protect `_dl_open' and `_dl_close' in dl-close.c.
|
||||
|
||||
This must be a recursive lock since the initializer function of
|
||||
|
@ -233,7 +233,7 @@ _dl_determine_tlsoffset (void)
|
||||
and an alignment requirement. The GNU ld computes the alignment
|
||||
requirements for the data at the positions *in the file*, though.
|
||||
I.e, it is not simply possible to allocate a block with the size
|
||||
of the TLS program header entry. The data is layed out assuming
|
||||
of the TLS program header entry. The data is laid out assuming
|
||||
that the first byte of the TLS block fulfills
|
||||
|
||||
p_vaddr mod p_align == &TLS_BLOCK mod p_align
|
||||
|
@ -160,7 +160,7 @@ _dl_check_map_versions (struct link_map *map, int verbose, int trace_mode)
|
||||
/* Pointer to dynamic section with definitions. */
|
||||
ElfW(Dyn) *def;
|
||||
/* We need to find out which is the highest version index used
|
||||
in a dependecy. */
|
||||
in a dependency. */
|
||||
unsigned int ndx_high = 0;
|
||||
struct dl_exception exception;
|
||||
/* Initialize to make the compiler happy. */
|
||||
|
@ -73,7 +73,7 @@ elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],
|
||||
/* On some machines, notably SPARC, DT_REL* includes DT_JMPREL in its
|
||||
range. Note that according to the ELF spec, this is completely legal!
|
||||
|
||||
We are guarenteed that we have one of three situations. Either DT_JMPREL
|
||||
We are guaranteed that we have one of three situations. Either DT_JMPREL
|
||||
comes immediately after DT_REL*, or there is overlap and DT_JMPREL
|
||||
consumes precisely the very end of the DT_REL*, or DT_JMPREL and DT_REL*
|
||||
are completely separate and there is a gap between them. */
|
||||
|
@ -210,7 +210,7 @@ typedef struct
|
||||
#define EM_68HC12 53 /* Motorola M68HC12 */
|
||||
#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator */
|
||||
#define EM_PCP 55 /* Siemens PCP */
|
||||
#define EM_NCPU 56 /* Sony nCPU embeeded RISC */
|
||||
#define EM_NCPU 56 /* Sony nCPU embedded RISC */
|
||||
#define EM_NDR1 57 /* Denso NDR1 microprocessor */
|
||||
#define EM_STARCORE 58 /* Motorola Start*Core processor */
|
||||
#define EM_ME16 59 /* Toyota ME16 processor */
|
||||
@ -559,7 +559,7 @@ typedef struct
|
||||
|
||||
/* Possible bitmasks for si_flags. */
|
||||
#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */
|
||||
#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */
|
||||
#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-through symbol for translator */
|
||||
#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */
|
||||
#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy
|
||||
loaded */
|
||||
|
@ -631,7 +631,7 @@ out:
|
||||
- search for libraries which will be added to the cache
|
||||
- create symbolic links to the soname for each library
|
||||
|
||||
This has to be done separatly for each directory.
|
||||
This has to be done separately for each directory.
|
||||
|
||||
To keep track of which libraries to add to the cache and which
|
||||
links to create, we save a list of all libraries.
|
||||
@ -875,7 +875,7 @@ search_dir (const struct dir_entry *entry)
|
||||
or downgrade. The problems will arise because ldconfig will,
|
||||
depending on directory ordering, creat symlinks against libfoo.so
|
||||
e.g. libfoo.so.1.2 -> libfoo.so, but when libfoo.so is removed
|
||||
(typically by the removal of a development pacakge not required
|
||||
(typically by the removal of a development package not required
|
||||
for the runtime) it will break the libfoo.so.1.2 symlink and the
|
||||
application will fail to start. */
|
||||
const char *real_base_name = basename (real_file_name);
|
||||
|
@ -93,7 +93,7 @@ main (void)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* The variable now must have its originial value. */
|
||||
/* The variable now must have its original value. */
|
||||
if (*vp != 0)
|
||||
{
|
||||
puts ("variable \"some_var\" not reset");
|
||||
|
@ -78,7 +78,7 @@ main (void)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* The variable now must have its originial value. */
|
||||
/* The variable now must have its original value. */
|
||||
if (*vp != 42)
|
||||
{
|
||||
puts ("variable \"some_var\" reset");
|
||||
|
@ -78,7 +78,7 @@ main (void)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* The variable now must have its originial value. */
|
||||
/* The variable now must have its original value. */
|
||||
if (*vp != 0)
|
||||
{
|
||||
puts ("variable \"some_var\" not reset");
|
||||
|
@ -57,7 +57,7 @@ main (void)
|
||||
puts ("function \"call_me\" the second time returned wrong result");
|
||||
exit (1);
|
||||
}
|
||||
puts ("second call suceeded as well");
|
||||
puts ("second call succeeded as well");
|
||||
|
||||
/* Close the second object, we are done. */
|
||||
if (dlclose (h2) != 0)
|
||||
|
@ -454,7 +454,7 @@ _dl_start_final (void *arg, struct dl_start_final_info *info)
|
||||
ElfW(Addr) start_addr;
|
||||
|
||||
/* Do not use an initializer for these members because it would
|
||||
intefere with __rtld_static_init. */
|
||||
interfere with __rtld_static_init. */
|
||||
GLRO (dl_find_object) = &_dl_find_object;
|
||||
|
||||
/* If it hasn't happen yet record the startup time. */
|
||||
@ -1067,7 +1067,7 @@ load_audit_modules (struct link_map *main_map, struct audit_list *audit_list)
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if the executable is not actualy dynamically linked, and
|
||||
/* Check if the executable is not actually dynamically linked, and
|
||||
invoke it directly in that case. */
|
||||
static void
|
||||
rtld_chain_load (struct link_map *main_map, char *argv0)
|
||||
@ -1167,7 +1167,7 @@ rtld_setup_main_map (struct link_map *main_map)
|
||||
/* _dl_rtld_libname.next = NULL; Already zero. */
|
||||
GL(dl_rtld_map).l_libname = &_dl_rtld_libname;
|
||||
|
||||
/* Ordinarilly, we would get additional names for the loader from
|
||||
/* Ordinarily, we would get additional names for the loader from
|
||||
our DT_SONAME. This can't happen if we were actually linked as
|
||||
a static executable (detect this case when we have no DYNAMIC).
|
||||
If so, assume the filename component of the interpreter path to
|
||||
|
@ -119,7 +119,7 @@ static enum
|
||||
/* Nozero for testing. */
|
||||
static int do_test;
|
||||
|
||||
/* Strcuture describing calls. */
|
||||
/* Structure describing calls. */
|
||||
struct here_fromstruct
|
||||
{
|
||||
struct here_cg_arc_record volatile *here;
|
||||
@ -413,7 +413,7 @@ load_shobj (const char *name)
|
||||
|
||||
/* Since we use dlopen() we must be prepared to work around the sometimes
|
||||
strange lookup rules for the shared objects. If we have a file foo.so
|
||||
in the current directory and the user specfies foo.so on the command
|
||||
in the current directory and the user specifies foo.so on the command
|
||||
line (without specifying a directory) we should load the file in the
|
||||
current directory even if a normal dlopen() call would read the other
|
||||
file. We do this by adding a directory portion to the name. */
|
||||
@ -809,7 +809,7 @@ load_profdata (const char *name, struct shobj *shobj)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* We don't need the file desriptor anymore. */
|
||||
/* We don't need the file descriptor anymore. */
|
||||
if (close (fd) < 0)
|
||||
{
|
||||
error (0, errno, _("error while closing the profiling data file"));
|
||||
|
@ -9,7 +9,7 @@ do_test (void)
|
||||
void *h;
|
||||
int ret = 0;
|
||||
/* Carry out *one* failing call to dlopen before starting mtrace to
|
||||
force any one-time inintialization that may happen to the
|
||||
force any one-time initialization that may happen to the
|
||||
executable link map e.g. expansion and caching of $ORIGIN. */
|
||||
h = dlopen ("$ORIGIN/tst-leaks1.o", RTLD_LAZY);
|
||||
if (h != NULL)
|
||||
|
@ -16,7 +16,7 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This is the primary DSO that is loaded by the appliation. This DSO
|
||||
/* This is the primary DSO that is loaded by the application. This DSO
|
||||
then loads a plugin with RTLD_NODELETE. This plugin depends on this
|
||||
DSO. This dependency chain means that at application shutdown the
|
||||
plugin will be destructed first. Thus by the time this DSO is
|
||||
|
@ -17,7 +17,7 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This DSO simulates a plugin with a dependency on the
|
||||
primary DSO loaded by the appliation. */
|
||||
primary DSO loaded by the application. */
|
||||
#include <stdio.h>
|
||||
|
||||
extern void primary_reference (void);
|
||||
|
@ -71,7 +71,7 @@ pldd_process (void *arg)
|
||||
}
|
||||
|
||||
/* The test runs in a container because pldd does not support tracing
|
||||
a binary started by the loader iself (as with testrun.sh). */
|
||||
a binary started by the loader itself (as with testrun.sh). */
|
||||
|
||||
static bool
|
||||
in_str_list (const char *libname, const char *const strlist[])
|
||||
|
@ -25,7 +25,7 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file must be compiled as PIE to avoid copy relocation when
|
||||
accessing protected symbols defined in shared libaries since copy
|
||||
accessing protected symbols defined in shared libraries since copy
|
||||
relocation doesn't work with protected symbols and linker in
|
||||
binutils 2.26 enforces this rule. */
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file must be compiled as PIE to avoid copy relocation when
|
||||
accessing protected symbols defined in shared libaries since copy
|
||||
accessing protected symbols defined in shared libraries since copy
|
||||
relocation doesn't work with protected symbols and linker in
|
||||
binutils 2.26 enforces this rule. */
|
||||
|
||||
|
@ -117,7 +117,7 @@ do_test (void)
|
||||
init_functions ();
|
||||
|
||||
struct value values[COUNT];
|
||||
/* Initialze the TLS variables. */
|
||||
/* Initialize the TLS variables. */
|
||||
for (int i = 0; i < COUNT; ++i)
|
||||
{
|
||||
for (int j = 0; j < PER_VALUE_COUNT; ++j)
|
||||
|
@ -153,11 +153,11 @@ do_test_no_depedency (void)
|
||||
mod0 -> mod1
|
||||
2. Double dependency:
|
||||
mod2 -> [mod3,mod4]
|
||||
3. Double dependency with each dependency depent of another module:
|
||||
3. Double dependency with each dependency dependent of another module:
|
||||
mod5 -> [mod6,mod7] -> mod8
|
||||
4. Long chain with one double dependency in the middle:
|
||||
mod9 -> [mod10, mod11] -> mod12 -> mod13
|
||||
5. Long chain with two double depedencies in the middle:
|
||||
5. Long chain with two double dependencies in the middle:
|
||||
mod14 -> mod15 -> [mod16, mod17]
|
||||
mod15 -> [mod18, mod19]
|
||||
|
||||
@ -217,7 +217,7 @@ do_test_dependency (void)
|
||||
};
|
||||
|
||||
/* The gap configuration is defined as a bitmap: the bit set represents a
|
||||
loaded module prior the tests execution, while a bit unsed is a module
|
||||
loaded module prior the tests execution, while a bit unset is a module
|
||||
unloaded. Not all permtation will show gaps, but it is simpler than
|
||||
define each one independently. */
|
||||
for (uint32_t g = 0; g < 64; g++)
|
||||
@ -277,11 +277,11 @@ do_test_dependency (void)
|
||||
mod0 -> invalid
|
||||
2. Double dependency:
|
||||
mod1 -> [mod2,invalid]
|
||||
3. Double dependency with each dependency depent of another module:
|
||||
3. Double dependency with each dependency dependent of another module:
|
||||
mod3 -> [mod4,mod5] -> invalid
|
||||
4. Long chain with one double dependency in the middle:
|
||||
mod6 -> [mod7, mod8] -> mod12 -> invalid
|
||||
5. Long chain with two double depedencies in the middle:
|
||||
5. Long chain with two double dependencies in the middle:
|
||||
mod10 -> mod11 -> [mod12, mod13]
|
||||
mod12 -> [mod14, invalid]
|
||||
|
||||
@ -295,7 +295,7 @@ do_test_invalid_dependency (bool bind_now)
|
||||
static const int tlsmanydeps[] = { 0, 1, 3, 6, 10 };
|
||||
|
||||
/* The gap configuration is defined as a bitmap: the bit set represents a
|
||||
loaded module prior the tests execution, while a bit unsed is a module
|
||||
loaded module prior the tests execution, while a bit unset is a module
|
||||
unloaded. Not all permtation will show gaps, but it is simpler than
|
||||
define each one independently. */
|
||||
for (uint32_t g = 0; g < 64; g++)
|
||||
|
@ -16,7 +16,7 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file must be compiled as PIE to avoid copy relocation when
|
||||
accessing protected symbols defined in shared libaries since copy
|
||||
accessing protected symbols defined in shared libraries since copy
|
||||
relocation doesn't work with protected symbols and linker in
|
||||
binutils 2.26 enforces this rule. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user