mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-26 06:50:07 +00:00
ee874f44fd
Recent versions of binutils (with commit
b25f942e18d6ecd7ec3e2d2e9930eb4f996c258a) stopped preserving "sticky"
options across a base `.machine` directive, nullifying the use of
passing "-many" through GCC to the assembler. As a result, some
instructions which were recognized even under older, more stringent
`.machine` directives become unrecognized instructions in that
context.
In `sysdeps/powerpc/tst-set_ppr.c`, the use of the `mfppr32` extended
mnemonic became unrecognized, as the default compilation with GCC for
32bit powerpc adds a `.machine ppc` in the resulting assembly, so the
command line option `-Wa,-many` is essentially ignored, and the ISA 2.06
instructions and mnemonics, like `mfppr32`, are unrecognized.
The compilation of `sysdeps/powerpc/tst-set_ppr.c` fails with:
Error: unrecognized opcode: `mfppr32'
Add appropriate `.machine` directives in the assembly to bracket the
`mfppr32` instruction.
Part of a 2019 fix (commit 9250e6610f
) to
the above test's Makefile to add `-many` to the compilation when GCC
itself stopped passing `-many` to the assember no longer has any effect,
so remove that.
Reported-by: Joseph Myers <joseph@codesourcery.com>
71 lines
1.9 KiB
Makefile
71 lines
1.9 KiB
Makefile
ifeq ($(subdir),string)
|
|
CFLAGS-memcmp.c += -Wno-uninitialized
|
|
endif
|
|
|
|
ifeq ($(subdir),elf)
|
|
# extra shared linker files to link into dl-allobjs.so and libc
|
|
sysdep-dl-routines += dl-machine hwcapinfo
|
|
sysdep_routines += dl-machine hwcapinfo
|
|
# extra shared linker files to link only into dl-allobjs.so
|
|
sysdep-rtld-routines += dl-machine hwcapinfo
|
|
|
|
modules-names += mod-tlsopt-powerpc
|
|
mod-tlsopt-powerpc.so-no-z-defs = yes
|
|
tests += tst-tlsopt-powerpc
|
|
$(objpfx)tst-tlsopt-powerpc: $(objpfx)mod-tlsopt-powerpc.so
|
|
|
|
tests-static += tst-cache-ppc-static
|
|
tests-internal += tst-cache-ppc-static
|
|
|
|
ifeq (yes,$(build-shared))
|
|
modules-names += mod-cache-ppc
|
|
tests += tst-cache-ppc tst-cache-ppc-static-dlopen
|
|
tests-static += tst-cache-ppc-static-dlopen
|
|
test-internal-extras += mod-cache-ppc
|
|
|
|
mod-cache-ppc.so-no-z-defs = yes
|
|
tst-cache-ppc-static-dlopen-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf
|
|
$(objpfx)tst-cache-ppc-static-dlopen.out: $(objpfx)mod-cache-ppc.so
|
|
|
|
$(objpfx)tst-cache-ppc: $(objpfx)mod-cache-ppc.so
|
|
endif
|
|
|
|
ifneq (no,$(multi-arch))
|
|
tests-static += tst-tlsifunc-static
|
|
tests-internal += tst-tlsifunc-static
|
|
ifeq (yes,$(build-shared))
|
|
tests-internal += tst-tlsifunc
|
|
endif # build-shared
|
|
endif # multi-arch
|
|
endif # subdir = elf
|
|
|
|
ifeq ($(subdir),setjmp)
|
|
ifeq (yes,$(build-shared))
|
|
sysdep_routines += novmx-longjmp novmx-sigjmp
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(subdir),csu)
|
|
# get offset to rtld_global._dl_hwcap and rtld_global._dl_hwcap2
|
|
gen-as-const-headers += rtld-global-offsets.sym
|
|
# get offset to __locale_struct.__ctype_tolower
|
|
gen-as-const-headers += locale-defines.sym
|
|
endif
|
|
|
|
ifeq ($(subdir),nptl)
|
|
tests-internal += test-get_hwcap test-get_hwcap-static
|
|
tests-static += test-get_hwcap-static
|
|
endif
|
|
|
|
ifeq ($(subdir),misc)
|
|
sysdep_headers += sys/platform/ppc.h
|
|
tests += test-gettimebase
|
|
tests += tst-set_ppr
|
|
endif
|
|
|
|
ifeq ($(subdir),wcsmbs)
|
|
CFLAGS-wcscpy.c += -DUNROLL_NTIMES=8
|
|
CFLAGS-wcschr.c += -DUNROLL_NTIMES=8
|
|
CFLAGS-wcsrchr.c += -DUNROLL_NTIMES=8
|
|
endif
|