Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-9] src



Module Name:    src
Committed By:   martin
Date:           Fri Aug  4 12:55:48 UTC 2023

Modified Files:
        src/distrib/sets/lists/debug [netbsd-9]: mi shl.mi
        src/distrib/sets/lists/tests [netbsd-9]: mi shl.mi
        src/libexec/ld.elf_so [netbsd-9]: README.TLS map_object.c rtld.c rtld.h
            tls.c
        src/libexec/ld.elf_so/arch/aarch64 [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/alpha [netbsd-9]: alpha_reloc.c
        src/libexec/ld.elf_so/arch/arm [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/hppa [netbsd-9]: hppa_reloc.c
        src/libexec/ld.elf_so/arch/i386 [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/m68k [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/mips [netbsd-9]: mips_reloc.c
        src/libexec/ld.elf_so/arch/or1k [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/powerpc [netbsd-9]: ppc_reloc.c
        src/libexec/ld.elf_so/arch/riscv [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/sh3 [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/sparc [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/sparc64 [netbsd-9]: mdreloc.c
        src/libexec/ld.elf_so/arch/x86_64 [netbsd-9]: mdreloc.c
        src/tests/libexec/ld.elf_so [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_dso1 [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_dso2 [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_dso3 [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_ifunc_dso [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_symver_dso0 [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_symver_dso1 [netbsd-9]: Makefile
        src/tests/libexec/ld.elf_so/helper_symver_dso2 [netbsd-9]: Makefile
Added Files:
        src/tests/libexec/ld.elf_so [netbsd-9]: helper.mk t_tls_extern.c
        src/tests/libexec/ld.elf_so/helper_abuse_dynamic [netbsd-9]: Makefile
            h_abuse_dynamic.c
        src/tests/libexec/ld.elf_so/helper_abuse_static [netbsd-9]: Makefile
            h_abuse_static.c
        src/tests/libexec/ld.elf_so/helper_def_dynamic [netbsd-9]: Makefile
            h_def_dynamic.c
        src/tests/libexec/ld.elf_so/helper_def_static [netbsd-9]: Makefile
            h_def_static.c
        src/tests/libexec/ld.elf_so/helper_onlyctor_dynamic [netbsd-9]:
            Makefile h_onlyctor_dynamic.c
        src/tests/libexec/ld.elf_so/helper_onlydef [netbsd-9]: Makefile
            h_onlydef.c
        src/tests/libexec/ld.elf_so/helper_onlydef_static [netbsd-9]: Makefile
            h_onlydef_static.c
        src/tests/libexec/ld.elf_so/helper_onlyuse_dynamic [netbsd-9]: Makefile
            h_onlyuse_dynamic.c
        src/tests/libexec/ld.elf_so/helper_onlyuse_static [netbsd-9]: Makefile
            h_onlyuse_static.c
        src/tests/libexec/ld.elf_so/helper_use_dynamic [netbsd-9]: Makefile
            h_use_dynamic.c
        src/tests/libexec/ld.elf_so/helper_use_static [netbsd-9]: Makefile
            h_use_static.c

Log Message:
Pull up following revision(s), all via patch,
(requested by riastradh in ticket #1699):

        distrib/sets/lists/tests/shl.mi: revision 1.14
        distrib/sets/lists/tests/shl.mi: revision 1.15
        distrib/sets/lists/tests/shl.mi: revision 1.16
        tests/libexec/ld.elf_so/helper_def_static/h_def_static.c: revision 1.1
        tests/libexec/ld.elf_so/helper_def_dynamic/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_def_dynamic/Makefile: revision 1.2
        tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile: revision 1.2
        libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.75
        distrib/sets/lists/tests/mi: revision 1.1265
        libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.36
        libexec/ld.elf_so/rtld.c: revision 1.214
        tests/libexec/ld.elf_so/helper_onlydef_static/Makefile: revision 1.1
        distrib/sets/lists/debug/mi: revision 1.400
        tests/libexec/ld.elf_so/helper_onlydef_static/Makefile: revision 1.2
        distrib/sets/lists/debug/mi: revision 1.401
        distrib/sets/lists/debug/mi: revision 1.402
        tests/libexec/ld.elf_so/helper_dso2/Makefile: revision 1.2
        distrib/sets/lists/debug/mi: revision 1.403
        tests/libexec/ld.elf_so/helper_symver_dso0/Makefile: revision 1.2
        libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.48
        distrib/sets/lists/debug/mi: revision 1.406
        tests/libexec/ld.elf_so/helper_use_dynamic/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_use_dynamic/Makefile: revision 1.2
        tests/libexec/ld.elf_so/helper_ifunc_dso/Makefile: revision 1.2
        libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.70
        libexec/ld.elf_so/arch/aarch64/mdreloc.c: revision 1.18
        tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile: revision 1.2
        tests/libexec/ld.elf_so/Makefile: revision 1.13
        libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.46
        libexec/ld.elf_so/rtld.h: revision 1.146
        tests/libexec/ld.elf_so/Makefile: revision 1.14
        distrib/sets/lists/debug/shl.mi: revision 1.306
        tests/libexec/ld.elf_so/Makefile: revision 1.15
        tests/libexec/ld.elf_so/helper_abuse_static/Makefile: revision 1.1
        distrib/sets/lists/debug/shl.mi: revision 1.307
        tests/libexec/ld.elf_so/Makefile: revision 1.16
        tests/libexec/ld.elf_so/helper_abuse_static/Makefile: revision 1.2
        distrib/sets/lists/debug/shl.mi: revision 1.308
        tests/libexec/ld.elf_so/Makefile: revision 1.17
        distrib/sets/lists/debug/shl.mi: revision 1.309
        tests/libexec/ld.elf_so/Makefile: revision 1.18
        tests/libexec/ld.elf_so/Makefile: revision 1.19
        libexec/ld.elf_so/tls.c: revision 1.16
        libexec/ld.elf_so/tls.c: revision 1.17
        libexec/ld.elf_so/tls.c: revision 1.18
        libexec/ld.elf_so/tls.c: revision 1.19
        tests/libexec/ld.elf_so/helper_onlydef_static/h_onlydef_static.c: revision 1.1
        tests/libexec/ld.elf_so/helper_use_static/h_use_static.c: revision 1.1
        tests/libexec/ld.elf_so/helper_use_static/h_use_static.c: revision 1.2
        tests/libexec/ld.elf_so/helper_def_static/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_def_static/Makefile: revision 1.2
        libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.50
        distrib/sets/lists/debug/shl.mi: revision 1.310
        libexec/ld.elf_so/README.TLS: revision 1.6
        distrib/sets/lists/debug/shl.mi: revision 1.311
        distrib/sets/lists/debug/shl.mi: revision 1.314
        tests/libexec/ld.elf_so/helper_dso3/Makefile: revision 1.2
        tests/libexec/ld.elf_so/helper_symver_dso1/Makefile: revision 1.4
        libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.63
        tests/libexec/ld.elf_so/helper_def_dynamic/h_def_dynamic.c: revision 1.1
        tests/libexec/ld.elf_so/helper_onlydef/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_onlydef/Makefile: revision 1.2
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.10
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.11
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.12
        libexec/ld.elf_so/map_object.c: revision 1.66
        tests/libexec/ld.elf_so/helper.mk: revision 1.1
        libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.57
        libexec/ld.elf_so/map_object.c: revision 1.67
        tests/libexec/ld.elf_so/helper_onlydef/h_onlydef.c: revision 1.1
        tests/libexec/ld.elf_so/helper_symver_dso2/Makefile: revision 1.4
        tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.2
        tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.3
        tests/libexec/ld.elf_so/helper_use_dynamic/h_use_dynamic.c: revision 1.1
        tests/libexec/ld.elf_so/helper_abuse_static/h_abuse_static.c: revision 1.1
        libexec/ld.elf_so/arch/riscv/mdreloc.c: revision 1.9
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.1
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.2
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.3
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.4
        tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile: revision 1.1
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.5
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.6
        libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.34
        tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile: revision 1.2
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.7
        libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.42
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.8
        libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.43
        libexec/ld.elf_so/arch/or1k/mdreloc.c: revision 1.4
        tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.9
        tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile: revision 1.1
        tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile: revision 1.2
        tests/libexec/ld.elf_so/helper_abuse_dynamic/h_abuse_dynamic.c: revision 1.1
        tests/libexec/ld.elf_so/helper_onlyctor_dynamic/h_onlyctor_dynamic.c: revision 1.1
        tests/libexec/ld.elf_so/helper_onlyuse_static/h_onlyuse_static.c: revision 1.1
        tests/libexec/ld.elf_so/helper_onlyuse_dynamic/h_onlyuse_dynamic.c: revision 1.1
        tests/libexec/ld.elf_so/helper_dso1/Makefile: revision 1.2
        distrib/sets/lists/tests/shl.mi: revision 1.12
        distrib/sets/lists/tests/shl.mi: revision 1.13
        libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.44

ld.elf_so: New test for extern initial-exec TLS, PR toolchain/50277.

ld.elf_so: Fix extern TLS test to match PR toolchain/50277.
Now it's actually testing the problem.
ld.elf_so: Nix inadvertently committed private test program.
ld.elf_so: Fix set lists for MKDEBUG=yes builds with t_tls_extern.

ld.elf_so: Sprinkle tls debug messages.

ld.elf_so: Make tls alloc debug messages more detailed and greppable.

ld.elf_so: Test variations on PR toolchain/50277.

ld.elf_so: Test extern dynamic TLS too.

ld.elf_so: Factor out logic in TLS tests to make writing more easier.
No functional change intended.

ld.elf_so: Test TLS abuse of static def, dynamic use and vice versa.

ld.elf_so: Shorter test names.
No functional non-cosmetic change intended.

ld.elf_so: Separately test eager and lazy resolution of def tls ptr.
eager: before loading use library
lazy: after loading use library

Add recent ld.elf_so test helpers debug info
ld.elf_so: Add new files to debug/shl.mi.

ld.elf_so: tls_extern dynamic_defabuse_eager must xfail differently.
If a symbol has already been resolved as dynamic TLS, any library
that tries to use it as static TLS cannot be dlopened.

ld.elf_so: Test another edge case of mismatched TLS models.
One library defines a symbol and _doesn't_ use it, so it has no
indication of whether the symbol is for static TLS or dynamic TLS,
and then two other libraries use it in different ways.

ld.elf_so: Test dynamic-then-static abuse via ctor.

ld.elf_so: Fix missing tab in debug/shl.mi in last change.

Fix interactions of initial-exec TLS model and dlopen

(1) If an initial-exec relocation was used for a non-local symbol
(i.e. the definition of the symbol is in a different DSO), the
computation of the static TLS offset used the wrong DSO.

This would effectively mean the wrong address was computed
(PR toolchain/50277, PR pkg/57445).
Fix this by forcing the computation of the correct DSO (the one defining
the symbol).
This code uses __UNCONST to avoid the vast interface changes for this
special case.

(2) If symbols from a DSO loaded via dlopen are used with both
global-dynamic/local-dynamic and initial-exec relocations AND
a initial-exec relocation was resolved first in a thread, a split brain
situation could exist where the dynamic relocations would use one memory
block (separate allocation) and the initial-exec relocations the static
per-thread TLS space.

(3) If the initial-exec relocation in (2) is seen after any thread has
already used a GD/LD allocation, bail out. Since IE relocations are used
only in the GOT, this will prevent the dlopen. This is a bit more
aggressive than necessary, but a full blown reference counting doesn't
seem to be justified.
Avoid using uninitialized variable "symnum" when building with DEBUG
enabled by borrowing the rdbg_symname() macro from arch/x86_64.
ld.elf_so: Sprinkle more debug messages on dlopen and error.

PR pkg/57445

Fix MKDEBUGLIB build by adding these installed files to the debug
set list.

One could argue that these files are not of any use, so why install
them?  I don't have a good argument either way, and this is (for
now) a simple work-around for PR bin/57455   Please feel free to
commit a different fix to avoid installing these files at all.

Fix markup of libh_ MKDEBUGLIB=yes only files

TLS variant I archs need to fudge the offset by the size of the TCB.
tests/libexec/ld.elf_so: Fix helper library makefiles.
1. Consolidate logic into a single helper.mk to reduce duplication.
2. Set NO* variables, not MK* variables which are reserved for user.
3. Avoid eager X!= in favour of lazy ${X:sh}.
4. Mark _g.a set list entries obsolete.  Never should've been built!
PR misc/57462


To generate a diff of this commit:
cvs rdiff -u -r1.285 -r1.285.2.1 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.225.2.3 -r1.225.2.4 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.818.2.1 -r1.818.2.2 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.11 -r1.11.8.1 src/distrib/sets/lists/tests/shl.mi
cvs rdiff -u -r1.5 -r1.5.2.1 src/libexec/ld.elf_so/README.TLS
cvs rdiff -u -r1.60.2.1 -r1.60.2.2 src/libexec/ld.elf_so/map_object.c
cvs rdiff -u -r1.197.2.6 -r1.197.2.7 src/libexec/ld.elf_so/rtld.c
cvs rdiff -u -r1.136.2.1 -r1.136.2.2 src/libexec/ld.elf_so/rtld.h
cvs rdiff -u -r1.12.2.1 -r1.12.2.2 src/libexec/ld.elf_so/tls.c
cvs rdiff -u -r1.13 -r1.13.2.1 src/libexec/ld.elf_so/arch/aarch64/mdreloc.c
cvs rdiff -u -r1.43 -r1.43.6.1 src/libexec/ld.elf_so/arch/alpha/alpha_reloc.c
cvs rdiff -u -r1.44 -r1.44.4.1 src/libexec/ld.elf_so/arch/arm/mdreloc.c
cvs rdiff -u -r1.45.6.1 -r1.45.6.2 \
    src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c
cvs rdiff -u -r1.41 -r1.41.4.1 src/libexec/ld.elf_so/arch/i386/mdreloc.c
cvs rdiff -u -r1.33 -r1.33.6.1 src/libexec/ld.elf_so/arch/m68k/mdreloc.c
cvs rdiff -u -r1.72 -r1.72.6.1 src/libexec/ld.elf_so/arch/mips/mips_reloc.c
cvs rdiff -u -r1.3 -r1.3.6.1 src/libexec/ld.elf_so/arch/or1k/mdreloc.c
cvs rdiff -u -r1.58.2.2 -r1.58.2.3 \
    src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c
cvs rdiff -u -r1.5 -r1.5.2.1 src/libexec/ld.elf_so/arch/riscv/mdreloc.c
cvs rdiff -u -r1.35 -r1.35.6.1 src/libexec/ld.elf_so/arch/sh3/mdreloc.c
cvs rdiff -u -r1.55 -r1.55.4.1 src/libexec/ld.elf_so/arch/sparc/mdreloc.c
cvs rdiff -u -r1.69 -r1.69.4.1 src/libexec/ld.elf_so/arch/sparc64/mdreloc.c
cvs rdiff -u -r1.47 -r1.47.4.1 src/libexec/ld.elf_so/arch/x86_64/mdreloc.c
cvs rdiff -u -r1.10 -r1.10.2.1 src/tests/libexec/ld.elf_so/Makefile
cvs rdiff -u -r0 -r1.1.4.2 src/tests/libexec/ld.elf_so/helper.mk
cvs rdiff -u -r0 -r1.12.4.2 src/tests/libexec/ld.elf_so/t_tls_extern.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_abuse_dynamic/h_abuse_dynamic.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_abuse_static/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_abuse_static/h_abuse_static.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_def_dynamic/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_def_dynamic/h_def_dynamic.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_def_static/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_def_static/h_def_static.c
cvs rdiff -u -r1.1 -r1.1.46.1 \
    src/tests/libexec/ld.elf_so/helper_dso1/Makefile
cvs rdiff -u -r1.1 -r1.1.46.1 \
    src/tests/libexec/ld.elf_so/helper_dso2/Makefile
cvs rdiff -u -r1.1 -r1.1.10.1 \
    src/tests/libexec/ld.elf_so/helper_dso3/Makefile
cvs rdiff -u -r1.1 -r1.1.18.1 \
    src/tests/libexec/ld.elf_so/helper_ifunc_dso/Makefile
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlyctor_dynamic/h_onlyctor_dynamic.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlydef/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlydef/h_onlydef.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlydef_static/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlydef_static/h_onlydef_static.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlyuse_dynamic/h_onlyuse_dynamic.c
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_onlyuse_static/h_onlyuse_static.c
cvs rdiff -u -r1.1 -r1.1.44.1 \
    src/tests/libexec/ld.elf_so/helper_symver_dso0/Makefile
cvs rdiff -u -r1.3 -r1.3.28.1 \
    src/tests/libexec/ld.elf_so/helper_symver_dso1/Makefile
cvs rdiff -u -r1.3 -r1.3.28.1 \
    src/tests/libexec/ld.elf_so/helper_symver_dso2/Makefile
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_use_dynamic/Makefile
cvs rdiff -u -r0 -r1.1.4.2 \
    src/tests/libexec/ld.elf_so/helper_use_dynamic/h_use_dynamic.c
cvs rdiff -u -r0 -r1.3.4.2 \
    src/tests/libexec/ld.elf_so/helper_use_static/Makefile
cvs rdiff -u -r0 -r1.2.4.2 \
    src/tests/libexec/ld.elf_so/helper_use_static/h_use_static.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index