mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-09 04:11:27 +08:00
82b1acd9de
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 (commit9250e6610f
) 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> (cherry picked from commitee874f44fd
)
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
|