mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00: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.
|
# Double dependencies.
|
||||||
$(objpfx)tst-tls-manydynamic2mod-dep.so: $(objpfx)tst-tls-manydynamic3mod-dep.so \
|
$(objpfx)tst-tls-manydynamic2mod-dep.so: $(objpfx)tst-tls-manydynamic3mod-dep.so \
|
||||||
$(objpfx)tst-tls-manydynamic4mod-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-manydynamic5mod-dep.so: $(objpfx)tst-tls-manydynamic6mod-dep.so \
|
||||||
$(objpfx)tst-tls-manydynamic7mod-dep.so
|
$(objpfx)tst-tls-manydynamic7mod-dep.so
|
||||||
$(objpfx)tst-tls-manydynamic6mod-dep.so: $(objpfx)tst-tls-manydynamic8mod-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-manydynamic11mod-dep.so
|
||||||
$(objpfx)tst-tls-manydynamic10mod-dep.so: $(objpfx)tst-tls-manydynamic12mod-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
|
$(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-manydynamic14mod-dep.so: $(objpfx)tst-tls-manydynamic15mod-dep.so
|
||||||
$(objpfx)tst-tls-manydynamic15mod-dep.so: $(objpfx)tst-tls-manydynamic16mod-dep.so \
|
$(objpfx)tst-tls-manydynamic15mod-dep.so: $(objpfx)tst-tls-manydynamic16mod-dep.so \
|
||||||
$(objpfx)tst-tls-manydynamic17mod-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-tls-manydynamic1mod-dep-bad.so: $(objpfx)tst-tls-manydynamic2mod-dep-bad.so \
|
||||||
$(objpfx)tst-tls20mod-bad.so
|
$(objpfx)tst-tls20mod-bad.so
|
||||||
LDFLAGS-tst-tls-manydynamic1mod-dep-bad.so = -Wl,--no-as-needed
|
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-manydynamic3mod-dep-bad.so: $(objpfx)tst-tls-manydynamic4mod-dep-bad.so \
|
||||||
$(objpfx)tst-tls-manydynamic5mod-dep-bad.so
|
$(objpfx)tst-tls-manydynamic5mod-dep-bad.so
|
||||||
LDFLAGS-tst-tls-manydynamic3mod-dep-bad.so = -Wl,--no-as-needed
|
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
|
LDFLAGS-tst-tls-manydynamic7mod-dep-bad.so = -Wl,--no-as-needed
|
||||||
$(objpfx)tst-tls-manydynamic9mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
|
$(objpfx)tst-tls-manydynamic9mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
|
||||||
LDFLAGS-tst-tls-manydynamic9mod-dep-bad.so = -Wl,--no-as-needed
|
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
|
$(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
|
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 \
|
$(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;
|
return dir->name->string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Linked list of known hwcaps subdirecty names. */
|
/* Linked list of known hwcaps subdirectory names. */
|
||||||
static struct glibc_hwcaps_subdirectory *hwcaps;
|
static struct glibc_hwcaps_subdirectory *hwcaps;
|
||||||
|
|
||||||
struct glibc_hwcaps_subdirectory *
|
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
|
/* The old-format part of the cache is bogus as well
|
||||||
if the endianness does not match. (But it is
|
if the endianness does not match. (But it is
|
||||||
unclear how the new header can be located if the
|
unclear how the new header can be located if the
|
||||||
endianess does not match.) */
|
endianness does not match.) */
|
||||||
cache = (void *) -1;
|
cache = (void *) -1;
|
||||||
cache_new = (void *) -1;
|
cache_new = (void *) -1;
|
||||||
__munmap (file, cachesize);
|
__munmap (file, cachesize);
|
||||||
|
@ -109,7 +109,7 @@ _dl_signal_exception (int errcode, struct dl_exception *exception,
|
|||||||
rtld_hidden_def (_dl_signal_exception)
|
rtld_hidden_def (_dl_signal_exception)
|
||||||
|
|
||||||
void
|
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)
|
const char *errstring)
|
||||||
{
|
{
|
||||||
struct rtld_catch *lcatch = get_catch ();
|
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);
|
__longjmp (lcatch->env[0].__jmpbuf, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fatal_error (errcode, objname, occation, errstring);
|
fatal_error (errcode, objname, occasion, errstring);
|
||||||
}
|
}
|
||||||
rtld_hidden_def (_dl_signal_error)
|
rtld_hidden_def (_dl_signal_error)
|
||||||
|
|
||||||
@ -162,12 +162,12 @@ _dl_signal_cexception (int errcode, struct dl_exception *exception,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
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)
|
const char *errstring)
|
||||||
{
|
{
|
||||||
if (__builtin_expect (GLRO(dl_debug_mask)
|
if (__builtin_expect (GLRO(dl_debug_mask)
|
||||||
& ~(DL_DEBUG_STATISTICS), 0))
|
& ~(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");
|
errstring, receiver ? "continued" : "fatal");
|
||||||
|
|
||||||
if (receiver)
|
if (receiver)
|
||||||
@ -178,7 +178,7 @@ _dl_signal_cerror (int errcode, const char *objname, const char *occation,
|
|||||||
(*receiver) (errcode, objname, errstring);
|
(*receiver) (errcode, objname, errstring);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_dl_signal_error (errcode, objname, occation, errstring);
|
_dl_signal_error (errcode, objname, occasion, errstring);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Handling of dynamic sring tokens.
|
/* Handling of dynamic string tokens.
|
||||||
Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
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];
|
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
|
SIZE). Assumes PC >= FIRST1->map_start. Returns a pointer to the
|
||||||
element that contains PC, or NULL if there is no such element. */
|
element that contains PC, or NULL if there is no such element. */
|
||||||
static inline struct dl_find_object_internal *
|
static inline struct dl_find_object_internal *
|
||||||
|
@ -230,7 +230,7 @@ _dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym,
|
|||||||
if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
|
if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
|
||||||
fdesc), 1))
|
fdesc), 1))
|
||||||
{
|
{
|
||||||
/* Noone has updated the entry and the new function
|
/* No one has updated the entry and the new function
|
||||||
descriptor has been installed. */
|
descriptor has been installed. */
|
||||||
#if 0
|
#if 0
|
||||||
const char *strtab
|
const char *strtab
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
long respectively. I.e., even with a file which has 10 program
|
long respectively. I.e., even with a file which has 10 program
|
||||||
header entries we only have to read 372B/624B respectively. Add to
|
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
|
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
|
heuristic should really fail for some file the code in
|
||||||
`_dl_map_object_from_fd' knows how to recover. */
|
`_dl_map_object_from_fd' knows how to recover. */
|
||||||
struct filebuf
|
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
|
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
|
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
|
have colons, but we treat those as literal colons here, not as path
|
||||||
list delimeters. */
|
list delimiters. */
|
||||||
char *
|
char *
|
||||||
_dl_dst_substitute (struct link_map *l, const char *input, char *result)
|
_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
|
/* We cannot use relocations and initializers for this because the
|
||||||
changes made by __rtld_malloc_init_stubs break REL-style
|
changes made by __rtld_malloc_init_stubs break REL-style
|
||||||
(non-RELA) relocations that depend on the previous pointer
|
(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
|
malloc symbols so this function can be called before the final
|
||||||
rtld relocation (which enables RELRO, after which the pointer
|
rtld relocation (which enables RELRO, after which the pointer
|
||||||
variables cannot be written to). */
|
variables cannot be written to). */
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
/* The LD_PROFILE feature has to be implemented different to the
|
/* The LD_PROFILE feature has to be implemented different to the
|
||||||
normal profiling using the gmon/ functions. The problem is that an
|
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
|
profiling and all write the results in the same file. To provide
|
||||||
this mechanism one could implement a complicated mechanism to merge
|
this mechanism one could implement a complicated mechanism to merge
|
||||||
the content of two profiling runs or one could extend the file
|
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. */
|
file is found (or created) in OUTPUT_DIR. */
|
||||||
void
|
void
|
||||||
_dl_start_profile (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
|
/* 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;
|
running = 0;
|
||||||
lowpc = ROUNDDOWN (mapstart + GL(dl_profile_map)->l_addr,
|
lowpc = ROUNDDOWN (mapstart + GL(dl_profile_map)->l_addr,
|
||||||
HISTFRACTION * sizeof (HISTCOUNTER));
|
HISTFRACTION * sizeof (HISTCOUNTER));
|
||||||
|
@ -206,7 +206,7 @@ struct link_map *_dl_sysinfo_map;
|
|||||||
#include <dl-vdso-setup.c>
|
#include <dl-vdso-setup.c>
|
||||||
|
|
||||||
/* During the program run we must not modify the global data of
|
/* 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.
|
protect `_dl_open' and `_dl_close' in dl-close.c.
|
||||||
|
|
||||||
This must be a recursive lock since the initializer function of
|
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
|
and an alignment requirement. The GNU ld computes the alignment
|
||||||
requirements for the data at the positions *in the file*, though.
|
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
|
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
|
that the first byte of the TLS block fulfills
|
||||||
|
|
||||||
p_vaddr mod p_align == &TLS_BLOCK mod p_align
|
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. */
|
/* Pointer to dynamic section with definitions. */
|
||||||
ElfW(Dyn) *def;
|
ElfW(Dyn) *def;
|
||||||
/* We need to find out which is the highest version index used
|
/* We need to find out which is the highest version index used
|
||||||
in a dependecy. */
|
in a dependency. */
|
||||||
unsigned int ndx_high = 0;
|
unsigned int ndx_high = 0;
|
||||||
struct dl_exception exception;
|
struct dl_exception exception;
|
||||||
/* Initialize to make the compiler happy. */
|
/* 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
|
/* On some machines, notably SPARC, DT_REL* includes DT_JMPREL in its
|
||||||
range. Note that according to the ELF spec, this is completely legal!
|
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
|
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*
|
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. */
|
are completely separate and there is a gap between them. */
|
||||||
|
@ -210,7 +210,7 @@ typedef struct
|
|||||||
#define EM_68HC12 53 /* Motorola M68HC12 */
|
#define EM_68HC12 53 /* Motorola M68HC12 */
|
||||||
#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator */
|
#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator */
|
||||||
#define EM_PCP 55 /* Siemens PCP */
|
#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_NDR1 57 /* Denso NDR1 microprocessor */
|
||||||
#define EM_STARCORE 58 /* Motorola Start*Core processor */
|
#define EM_STARCORE 58 /* Motorola Start*Core processor */
|
||||||
#define EM_ME16 59 /* Toyota ME16 processor */
|
#define EM_ME16 59 /* Toyota ME16 processor */
|
||||||
@ -559,7 +559,7 @@ typedef struct
|
|||||||
|
|
||||||
/* Possible bitmasks for si_flags. */
|
/* Possible bitmasks for si_flags. */
|
||||||
#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */
|
#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_COPY 0x0004 /* Symbol is a copy-reloc */
|
||||||
#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy
|
#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy
|
||||||
loaded */
|
loaded */
|
||||||
|
@ -631,7 +631,7 @@ out:
|
|||||||
- search for libraries which will be added to the cache
|
- search for libraries which will be added to the cache
|
||||||
- create symbolic links to the soname for each library
|
- 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
|
To keep track of which libraries to add to the cache and which
|
||||||
links to create, we save a list of all libraries.
|
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,
|
or downgrade. The problems will arise because ldconfig will,
|
||||||
depending on directory ordering, creat symlinks against libfoo.so
|
depending on directory ordering, creat symlinks against libfoo.so
|
||||||
e.g. libfoo.so.1.2 -> libfoo.so, but when libfoo.so is removed
|
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
|
for the runtime) it will break the libfoo.so.1.2 symlink and the
|
||||||
application will fail to start. */
|
application will fail to start. */
|
||||||
const char *real_base_name = basename (real_file_name);
|
const char *real_base_name = basename (real_file_name);
|
||||||
|
@ -93,7 +93,7 @@ main (void)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The variable now must have its originial value. */
|
/* The variable now must have its original value. */
|
||||||
if (*vp != 0)
|
if (*vp != 0)
|
||||||
{
|
{
|
||||||
puts ("variable \"some_var\" not reset");
|
puts ("variable \"some_var\" not reset");
|
||||||
|
@ -78,7 +78,7 @@ main (void)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The variable now must have its originial value. */
|
/* The variable now must have its original value. */
|
||||||
if (*vp != 42)
|
if (*vp != 42)
|
||||||
{
|
{
|
||||||
puts ("variable \"some_var\" reset");
|
puts ("variable \"some_var\" reset");
|
||||||
|
@ -78,7 +78,7 @@ main (void)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The variable now must have its originial value. */
|
/* The variable now must have its original value. */
|
||||||
if (*vp != 0)
|
if (*vp != 0)
|
||||||
{
|
{
|
||||||
puts ("variable \"some_var\" not reset");
|
puts ("variable \"some_var\" not reset");
|
||||||
|
@ -57,7 +57,7 @@ main (void)
|
|||||||
puts ("function \"call_me\" the second time returned wrong result");
|
puts ("function \"call_me\" the second time returned wrong result");
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
puts ("second call suceeded as well");
|
puts ("second call succeeded as well");
|
||||||
|
|
||||||
/* Close the second object, we are done. */
|
/* Close the second object, we are done. */
|
||||||
if (dlclose (h2) != 0)
|
if (dlclose (h2) != 0)
|
||||||
|
@ -454,7 +454,7 @@ _dl_start_final (void *arg, struct dl_start_final_info *info)
|
|||||||
ElfW(Addr) start_addr;
|
ElfW(Addr) start_addr;
|
||||||
|
|
||||||
/* Do not use an initializer for these members because it would
|
/* 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;
|
GLRO (dl_find_object) = &_dl_find_object;
|
||||||
|
|
||||||
/* If it hasn't happen yet record the startup time. */
|
/* 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. */
|
invoke it directly in that case. */
|
||||||
static void
|
static void
|
||||||
rtld_chain_load (struct link_map *main_map, char *argv0)
|
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. */
|
/* _dl_rtld_libname.next = NULL; Already zero. */
|
||||||
GL(dl_rtld_map).l_libname = &_dl_rtld_libname;
|
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
|
our DT_SONAME. This can't happen if we were actually linked as
|
||||||
a static executable (detect this case when we have no DYNAMIC).
|
a static executable (detect this case when we have no DYNAMIC).
|
||||||
If so, assume the filename component of the interpreter path to
|
If so, assume the filename component of the interpreter path to
|
||||||
|
@ -119,7 +119,7 @@ static enum
|
|||||||
/* Nozero for testing. */
|
/* Nozero for testing. */
|
||||||
static int do_test;
|
static int do_test;
|
||||||
|
|
||||||
/* Strcuture describing calls. */
|
/* Structure describing calls. */
|
||||||
struct here_fromstruct
|
struct here_fromstruct
|
||||||
{
|
{
|
||||||
struct here_cg_arc_record volatile *here;
|
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
|
/* 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
|
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
|
line (without specifying a directory) we should load the file in the
|
||||||
current directory even if a normal dlopen() call would read the other
|
current directory even if a normal dlopen() call would read the other
|
||||||
file. We do this by adding a directory portion to the name. */
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We don't need the file desriptor anymore. */
|
/* We don't need the file descriptor anymore. */
|
||||||
if (close (fd) < 0)
|
if (close (fd) < 0)
|
||||||
{
|
{
|
||||||
error (0, errno, _("error while closing the profiling data file"));
|
error (0, errno, _("error while closing the profiling data file"));
|
||||||
|
@ -9,7 +9,7 @@ do_test (void)
|
|||||||
void *h;
|
void *h;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
/* Carry out *one* failing call to dlopen before starting mtrace to
|
/* 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. */
|
executable link map e.g. expansion and caching of $ORIGIN. */
|
||||||
h = dlopen ("$ORIGIN/tst-leaks1.o", RTLD_LAZY);
|
h = dlopen ("$ORIGIN/tst-leaks1.o", RTLD_LAZY);
|
||||||
if (h != NULL)
|
if (h != NULL)
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<https://www.gnu.org/licenses/>. */
|
<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
|
then loads a plugin with RTLD_NODELETE. This plugin depends on this
|
||||||
DSO. This dependency chain means that at application shutdown the
|
DSO. This dependency chain means that at application shutdown the
|
||||||
plugin will be destructed first. Thus by the time this DSO is
|
plugin will be destructed first. Thus by the time this DSO is
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* This DSO simulates a plugin with a dependency on the
|
/* 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>
|
#include <stdio.h>
|
||||||
|
|
||||||
extern void primary_reference (void);
|
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
|
/* 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
|
static bool
|
||||||
in_str_list (const char *libname, const char *const strlist[])
|
in_str_list (const char *libname, const char *const strlist[])
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* This file must be compiled as PIE to avoid copy relocation when
|
/* 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
|
relocation doesn't work with protected symbols and linker in
|
||||||
binutils 2.26 enforces this rule. */
|
binutils 2.26 enforces this rule. */
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* This file must be compiled as PIE to avoid copy relocation when
|
/* 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
|
relocation doesn't work with protected symbols and linker in
|
||||||
binutils 2.26 enforces this rule. */
|
binutils 2.26 enforces this rule. */
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ do_test (void)
|
|||||||
init_functions ();
|
init_functions ();
|
||||||
|
|
||||||
struct value values[COUNT];
|
struct value values[COUNT];
|
||||||
/* Initialze the TLS variables. */
|
/* Initialize the TLS variables. */
|
||||||
for (int i = 0; i < COUNT; ++i)
|
for (int i = 0; i < COUNT; ++i)
|
||||||
{
|
{
|
||||||
for (int j = 0; j < PER_VALUE_COUNT; ++j)
|
for (int j = 0; j < PER_VALUE_COUNT; ++j)
|
||||||
|
@ -153,11 +153,11 @@ do_test_no_depedency (void)
|
|||||||
mod0 -> mod1
|
mod0 -> mod1
|
||||||
2. Double dependency:
|
2. Double dependency:
|
||||||
mod2 -> [mod3,mod4]
|
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
|
mod5 -> [mod6,mod7] -> mod8
|
||||||
4. Long chain with one double dependency in the middle:
|
4. Long chain with one double dependency in the middle:
|
||||||
mod9 -> [mod10, mod11] -> mod12 -> mod13
|
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]
|
mod14 -> mod15 -> [mod16, mod17]
|
||||||
mod15 -> [mod18, mod19]
|
mod15 -> [mod18, mod19]
|
||||||
|
|
||||||
@ -217,7 +217,7 @@ do_test_dependency (void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* The gap configuration is defined as a bitmap: the bit set represents a
|
/* 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
|
unloaded. Not all permtation will show gaps, but it is simpler than
|
||||||
define each one independently. */
|
define each one independently. */
|
||||||
for (uint32_t g = 0; g < 64; g++)
|
for (uint32_t g = 0; g < 64; g++)
|
||||||
@ -277,11 +277,11 @@ do_test_dependency (void)
|
|||||||
mod0 -> invalid
|
mod0 -> invalid
|
||||||
2. Double dependency:
|
2. Double dependency:
|
||||||
mod1 -> [mod2,invalid]
|
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
|
mod3 -> [mod4,mod5] -> invalid
|
||||||
4. Long chain with one double dependency in the middle:
|
4. Long chain with one double dependency in the middle:
|
||||||
mod6 -> [mod7, mod8] -> mod12 -> invalid
|
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]
|
mod10 -> mod11 -> [mod12, mod13]
|
||||||
mod12 -> [mod14, invalid]
|
mod12 -> [mod14, invalid]
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ do_test_invalid_dependency (bool bind_now)
|
|||||||
static const int tlsmanydeps[] = { 0, 1, 3, 6, 10 };
|
static const int tlsmanydeps[] = { 0, 1, 3, 6, 10 };
|
||||||
|
|
||||||
/* The gap configuration is defined as a bitmap: the bit set represents a
|
/* 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
|
unloaded. Not all permtation will show gaps, but it is simpler than
|
||||||
define each one independently. */
|
define each one independently. */
|
||||||
for (uint32_t g = 0; g < 64; g++)
|
for (uint32_t g = 0; g < 64; g++)
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* This file must be compiled as PIE to avoid copy relocation when
|
/* 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
|
relocation doesn't work with protected symbols and linker in
|
||||||
binutils 2.26 enforces this rule. */
|
binutils 2.26 enforces this rule. */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user