mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Support building bits/syscall.h for any number of subarch variants.
This commit is contained in:
parent
16c6f99208
commit
154bfc1622
28
ChangeLog
28
ChangeLog
@ -1,3 +1,31 @@
|
||||
2011-12-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/Makefile (syscall-list-variants)
|
||||
(syscall-list-default-options, syscall-list-default-condition)
|
||||
(syscall-list-includes): Define.
|
||||
($(objpfx)syscall-%.h $(objpfx)syscall-%.d): Support arbitrary
|
||||
list of ABIs and options and #if conditions for each ABI. Do not
|
||||
handle common syscalls between ABIs specially.
|
||||
* sysdeps/unix/sysv/linux/powerpc/Makefile (64bit-predefine):
|
||||
Remove.
|
||||
(syscall-list-variants, syscall-list-32bit-options)
|
||||
(syscall-list-32bit-condition, syscall-list-64bit-options)
|
||||
(syscall-list-64bit-condition): Define.
|
||||
* sysdeps/unix/sysv/linux/s390/Makefile (64bit-predefine): Remove.
|
||||
(syscall-list-variants, syscall-list-32bit-options)
|
||||
(syscall-list-32bit-condition, syscall-list-64bit-options)
|
||||
(syscall-list-64bit-condition): Define.
|
||||
* sysdeps/unix/sysv/linux/sparc/Makefile (64bit-predefine):
|
||||
Remove.
|
||||
(syscall-list-variants, syscall-list-32bit-options)
|
||||
(syscall-list-32bit-condition, syscall-list-64bit-options)
|
||||
(syscall-list-64bit-condition): Define.
|
||||
* sysdeps/unix/sysv/linux/x86_64/Makefile (64bit-predefine):
|
||||
Remove.
|
||||
(syscall-list-variants, syscall-list-32bit-options)
|
||||
(syscall-list-32bit-condition, syscall-list-64bit-options)
|
||||
(syscall-list-64bit-condition): Define.
|
||||
|
||||
2011-12-22 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
* locale/iso-639.def: Add brx entry.
|
||||
|
@ -39,8 +39,27 @@ install-others += $(inst_includedir)/bits/syscall.h
|
||||
tests += tst-clone
|
||||
|
||||
# Generate the list of SYS_* macros for the system calls (__NR_* macros).
|
||||
# For bi-arch platforms, the CPU/Makefile defines {32,64}bit-predefine and
|
||||
# we generate a file that uses <bits/wordsize.h>.
|
||||
|
||||
# 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
|
||||
# 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)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h
|
||||
$(make-target-directory)
|
||||
{ \
|
||||
@ -50,37 +69,30 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscal
|
||||
echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
|
||||
echo '#endif'; \
|
||||
echo ''; \
|
||||
$(CC) -E -MD -MP -MF $(@:.h=.d)-t1 -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||
-x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
|
||||
$(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \
|
||||
$(foreach h,$(syscall-list-includes), echo '#include <$(h)>';) \
|
||||
echo ''; \
|
||||
$(foreach v,$(syscall-list-variants),\
|
||||
$(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||
-x c $(sysincludes) $< $(syscall-list-$(v)-options) \
|
||||
-D_LIBC -dM | \
|
||||
sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
|
||||
LC_ALL=C sort > $(@:.d=.h).new32; \
|
||||
$(CC) -E -MD -MP -MF $(@:.h=.d)-t2 -MT '$(@:.d=.h) $(@:.h=.d)' \
|
||||
-x c $(sysincludes) $< $(addprefix -U,$(32bit-predefine)) \
|
||||
$(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \
|
||||
sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
|
||||
LC_ALL=C sort > $(@:.d=.h).new64; \
|
||||
if cmp -s $(@:.d=.h).new32 $(@:.d=.h).new64; then \
|
||||
cat $(@:.d=.h).new32; \
|
||||
else \
|
||||
echo '#include <bits/wordsize.h>'; \
|
||||
echo ''; \
|
||||
LC_ALL=C comm -12 $(@:.d=.h).new32 $(@:.d=.h).new64; \
|
||||
echo '#if __WORDSIZE == 64'; \
|
||||
LC_ALL=C comm -13 $(@:.d=.h).new32 $(@:.d=.h).new64; \
|
||||
echo '#else'; \
|
||||
LC_ALL=C comm -23 $(@:.d=.h).new32 $(@:.d=.h).new64; \
|
||||
echo '#endif'; \
|
||||
fi; \
|
||||
rm -f $(@:.d=.h).new32 $(@:.d=.h).new64; \
|
||||
LC_ALL=C sort > $(@:.d=.h).new$(v); \
|
||||
$(if $(syscall-list-$(v)-condition),\
|
||||
echo '#if $(syscall-list-$(v)-condition)';) \
|
||||
cat $(@:.d=.h).new$(v); \
|
||||
$(if $(syscall-list-$(v)-condition),echo '#endif';) \
|
||||
rm -f $(@:.d=.h).new$(v); \
|
||||
) \
|
||||
} > $(@:.d=.h).new
|
||||
mv -f $(@:.d=.h).new $(@:.d=.h)
|
||||
ifneq (,$(objpfx))
|
||||
sed $(sed-remove-objpfx) $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3
|
||||
sed $(sed-remove-objpfx) \
|
||||
$(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3
|
||||
else
|
||||
cat $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3
|
||||
cat $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) \
|
||||
> $(@:.h=.d)-t3
|
||||
endif
|
||||
rm -f $(@:.h=.d)-t1 $(@:.h=.d)-t2
|
||||
rm -f $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v))
|
||||
mv -f $(@:.h=.d)-t3 $(@:.h=.d)
|
||||
|
||||
$(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h $(+force)
|
||||
|
@ -1,4 +1,9 @@
|
||||
64bit-predefine = __powerpc64__
|
||||
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
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
endif
|
||||
|
@ -1,4 +1,9 @@
|
||||
64bit-predefine = __s390x__
|
||||
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
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
endif
|
||||
|
@ -1,4 +1,8 @@
|
||||
64bit-predefine = __sparc_v9__ __arch64__
|
||||
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
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
|
@ -1,5 +1,8 @@
|
||||
32bit-predefine = __i386__
|
||||
64bit-predefine = __x86_64__
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user