mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Convert WORDSIZE[32|64]/ld entries to abi-variants
This commit is contained in:
@ -43,25 +43,14 @@ tests += tst-clone
|
||||
# Generate the list of SYS_* macros for the system calls (__NR_* macros).
|
||||
|
||||
# If there is more than one syscall list for different architecture
|
||||
# variants, the CPU/Makefile defines syscall-list-variants to be a
|
||||
# list of names for those variants (e.g. 32bit 64bit), and, for each
|
||||
# variant, defines syscall-list-$(variant)-options to be compiler
|
||||
# options to cause <asm/unistd.h> to define the desired list of
|
||||
# syscalls and syscall-list-$(variant)-condition to be the condition
|
||||
# for those options to use in a C #if condition.
|
||||
# syscall-list-includes may be defined to a list of headers to include
|
||||
# variants, the CPU/Makefile defines abi-variants to be a list of names
|
||||
# for those variants (e.g. 32 64), and, for each variant, defines
|
||||
# abi-$(variant)-options to be compiler options to cause <asm/unistd.h>
|
||||
# to define the desired list of syscalls and abi-$(variant)-condition to
|
||||
# be the condition for those options to use in a C #if condition.
|
||||
# abi-includes may be defined to a list of headers to include
|
||||
# in the generated header, if the default does not suffice.
|
||||
|
||||
ifndef syscall-list-variants
|
||||
syscall-list-variants := default
|
||||
syscall-list-default-options :=
|
||||
syscall-list-default-condition :=
|
||||
endif
|
||||
|
||||
ifndef syscall-list-includes
|
||||
syscall-list-includes := bits/wordsize.h
|
||||
endif
|
||||
|
||||
$(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h
|
||||
$(make-target-directory)
|
||||
{ \
|
||||
@ -71,31 +60,41 @@ $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/
|
||||
echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
|
||||
echo '#endif'; \
|
||||
echo ''; \
|
||||
$(foreach h,$(syscall-list-includes), echo '#include <$(h)>';) \
|
||||
$(foreach h,$(abi-includes), echo '#include <$(h)>';) \
|
||||
echo ''; \
|
||||
$(foreach v,$(syscall-list-variants),\
|
||||
$(if $(abi-variants), \
|
||||
$(foreach v,$(abi-variants),\
|
||||
$(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||
-x c $(sysincludes) $< $(syscall-list-$(v)-options) \
|
||||
-x c $(sysincludes) $< $(abi-$(v)-options) \
|
||||
-D_LIBC -dM | \
|
||||
sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
|
||||
LC_ALL=C sort > $(@:.d=.h).new$(v); \
|
||||
$(if $(syscall-list-$(v)-condition),\
|
||||
echo '#if $(syscall-list-$(v)-condition)';) \
|
||||
$(if $(abi-$(v)-condition),\
|
||||
echo '#if $(abi-$(v)-condition)';) \
|
||||
cat $(@:.d=.h).new$(v); \
|
||||
$(if $(syscall-list-$(v)-condition),echo '#endif';) \
|
||||
$(if $(abi-$(v)-condition),echo '#endif';) \
|
||||
rm -f $(@:.d=.h).new$(v); \
|
||||
) \
|
||||
), \
|
||||
$(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||
-x c $(sysincludes) $< \
|
||||
-D_LIBC -dM | \
|
||||
sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
|
||||
LC_ALL=C sort;) \
|
||||
} > $(@:.d=.h).new
|
||||
mv -f $(@:.d=.h).new $(@:.d=.h)
|
||||
ifdef abi-variants
|
||||
ifneq (,$(objpfx))
|
||||
sed $(sed-remove-objpfx) \
|
||||
$(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3
|
||||
$(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3
|
||||
else
|
||||
cat $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) \
|
||||
cat $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) \
|
||||
> $(@:.h=.d)-t3
|
||||
endif
|
||||
rm -f $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v))
|
||||
rm -f $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v))
|
||||
mv -f $(@:.h=.d)-t3 $(@:.h=.d)
|
||||
else
|
||||
mv -f $(@:.h=.d)-t $(@:.h=.d)
|
||||
endif
|
||||
|
||||
ifndef no_deps
|
||||
# Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
|
||||
|
1
sysdeps/unix/sysv/linux/i386/Implies
Normal file
1
sysdeps/unix/sysv/linux/i386/Implies
Normal file
@ -0,0 +1 @@
|
||||
unix/sysv/linux/x86
|
@ -1,3 +1,6 @@
|
||||
# The default ABI is 32.
|
||||
default-abi := 32
|
||||
|
||||
ifeq ($(subdir),misc)
|
||||
sysdep_routines += ioperm iopl vm86 call_pselect6 call_fallocate
|
||||
sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h
|
||||
|
@ -1,8 +1,9 @@
|
||||
syscall-list-variants := 32bit 64bit
|
||||
syscall-list-32bit-options := -U__powerpc64__
|
||||
syscall-list-32bit-condition := __WORDSIZE == 32
|
||||
syscall-list-64bit-options := -D__powerpc64__
|
||||
syscall-list-64bit-condition := __WORDSIZE == 64
|
||||
abi-variants := 32 64
|
||||
abi-32-options := -U__powerpc64__
|
||||
abi-32-condition := __WORDSIZE == 32
|
||||
abi-64-options := -D__powerpc64__
|
||||
abi-64-condition := __WORDSIZE == 64
|
||||
abi-64-ld-soname := ld64.so.1
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
|
@ -1,8 +1,9 @@
|
||||
syscall-list-variants := 32bit 64bit
|
||||
syscall-list-32bit-options := -U__s390x__
|
||||
syscall-list-32bit-condition := __WORDSIZE == 32
|
||||
syscall-list-64bit-options := -D__s390x__
|
||||
syscall-list-64bit-condition := __WORDSIZE == 64
|
||||
abi-variants := 32 64
|
||||
abi-32-options := -U__s390x__
|
||||
abi-32-condition := __WORDSIZE == 32
|
||||
abi-64-options := -D__s390x__
|
||||
abi-64-condition := __WORDSIZE == 64
|
||||
abi-64-ld-soname := ld64.so.1
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
|
@ -1,8 +1,8 @@
|
||||
syscall-list-variants := 32bit 64bit
|
||||
syscall-list-32bit-options := -U__sparc_v9__ -U__arch64__
|
||||
syscall-list-32bit-condition := __WORDSIZE == 32
|
||||
syscall-list-64bit-options := -D__sparc_v9__ -D__arch64__
|
||||
syscall-list-64bit-condition := __WORDSIZE == 64
|
||||
abi-variants := 32 64
|
||||
abi-32-options := -U__sparc_v9__ -U__arch64__
|
||||
abi-32-condition := __WORDSIZE == 32
|
||||
abi-64-options := -D__sparc_v9__ -D__arch64__
|
||||
abi-64-condition := __WORDSIZE == 64
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
|
14
sysdeps/unix/sysv/linux/x86/Makefile
Normal file
14
sysdeps/unix/sysv/linux/x86/Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
# We don't need any header files.
|
||||
abi-includes :=
|
||||
|
||||
abi-variants := 32 64 x32
|
||||
|
||||
abi-32-options := -D__i386__ -U__x86_64__
|
||||
abi-32-condition := !defined __x86_64__
|
||||
abi-32-ld-soname := ld-linux.so.2
|
||||
abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__
|
||||
abi-64-condition := defined __x86_64__ && defined __LP64__
|
||||
abi-64-ld-soname := ld-linux-x86-64.so.2
|
||||
abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
|
||||
abi-x32-condition := defined __x86_64__ && defined __ILP32__
|
||||
abi-x32-ld-soname := ld-linux-x32.so.2
|
2
sysdeps/unix/sysv/linux/x86_64/64/Makefile
Normal file
2
sysdeps/unix/sysv/linux/x86_64/64/Makefile
Normal file
@ -0,0 +1,2 @@
|
||||
# The default ABI is 64.
|
||||
default-abi := 64
|
@ -1 +1,2 @@
|
||||
unix/sysv/linux/x86
|
||||
unix/sysv/linux/wordsize-64
|
||||
|
@ -1,9 +1,3 @@
|
||||
syscall-list-variants := 32bit 64bit
|
||||
syscall-list-32bit-options := -D__i386__ -U__x86_64__
|
||||
syscall-list-32bit-condition := __WORDSIZE == 32
|
||||
syscall-list-64bit-options := -U__i386__ -D__x86_64__
|
||||
syscall-list-64bit-condition := __WORDSIZE == 64
|
||||
|
||||
ifeq ($(subdir),misc)
|
||||
sysdep_routines += ioperm iopl
|
||||
sysdep_headers += sys/perm.h sys/reg.h sys/debugreg.h sys/io.h
|
||||
|
@ -1,3 +1,6 @@
|
||||
# The default ABI is x32.
|
||||
default-abi := x32
|
||||
|
||||
ifeq ($(subdir),misc)
|
||||
sysdep_routines += arch_prctl
|
||||
endif
|
||||
|
Reference in New Issue
Block a user