From 0ab0291b84b45f2389a019af2c88bf5169d14f64 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 26 May 2012 10:46:59 -0700 Subject: Convert WORDSIZE[32|64]/ld entries to abi-variants --- sysdeps/unix/sysv/linux/Makefile | 53 ++++++++++++++--------------- sysdeps/unix/sysv/linux/i386/Implies | 1 + sysdeps/unix/sysv/linux/i386/Makefile | 3 ++ sysdeps/unix/sysv/linux/powerpc/Makefile | 11 +++--- sysdeps/unix/sysv/linux/s390/Makefile | 11 +++--- sysdeps/unix/sysv/linux/sparc/Makefile | 10 +++--- sysdeps/unix/sysv/linux/x86/Makefile | 14 ++++++++ sysdeps/unix/sysv/linux/x86_64/64/Makefile | 2 ++ sysdeps/unix/sysv/linux/x86_64/Implies | 1 + sysdeps/unix/sysv/linux/x86_64/Makefile | 6 ---- sysdeps/unix/sysv/linux/x86_64/x32/Makefile | 3 ++ 11 files changed, 67 insertions(+), 48 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/i386/Implies create mode 100644 sysdeps/unix/sysv/linux/x86/Makefile create mode 100644 sysdeps/unix/sysv/linux/x86_64/64/Makefile (limited to 'sysdeps/unix') diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 70fd137dbc..21b560790e 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -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 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 +# 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 directly; include 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). diff --git a/sysdeps/unix/sysv/linux/i386/Implies b/sysdeps/unix/sysv/linux/i386/Implies new file mode 100644 index 0000000000..ccc7eaa8a4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/Implies @@ -0,0 +1 @@ +unix/sysv/linux/x86 diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile index fc5a524ebf..f4585d788a 100644 --- a/sysdeps/unix/sysv/linux/i386/Makefile +++ b/sysdeps/unix/sysv/linux/i386/Makefile @@ -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 diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile index 55311a4fc1..f6dccd9a3f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Makefile +++ b/sysdeps/unix/sysv/linux/powerpc/Makefile @@ -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 diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile index fb20fb05ac..45b1922338 100644 --- a/sysdeps/unix/sysv/linux/s390/Makefile +++ b/sysdeps/unix/sysv/linux/s390/Makefile @@ -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 diff --git a/sysdeps/unix/sysv/linux/sparc/Makefile b/sysdeps/unix/sysv/linux/sparc/Makefile index d769c48526..96b783e5bb 100644 --- a/sysdeps/unix/sysv/linux/sparc/Makefile +++ b/sysdeps/unix/sysv/linux/sparc/Makefile @@ -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 diff --git a/sysdeps/unix/sysv/linux/x86/Makefile b/sysdeps/unix/sysv/linux/x86/Makefile new file mode 100644 index 0000000000..cf4a55cf0c --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86/Makefile @@ -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 diff --git a/sysdeps/unix/sysv/linux/x86_64/64/Makefile b/sysdeps/unix/sysv/linux/x86_64/64/Makefile new file mode 100644 index 0000000000..a7b6dc5a53 --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86_64/64/Makefile @@ -0,0 +1,2 @@ +# The default ABI is 64. +default-abi := 64 diff --git a/sysdeps/unix/sysv/linux/x86_64/Implies b/sysdeps/unix/sysv/linux/x86_64/Implies index 8d91c80097..c7a65c9386 100644 --- a/sysdeps/unix/sysv/linux/x86_64/Implies +++ b/sysdeps/unix/sysv/linux/x86_64/Implies @@ -1 +1,2 @@ +unix/sysv/linux/x86 unix/sysv/linux/wordsize-64 diff --git a/sysdeps/unix/sysv/linux/x86_64/Makefile b/sysdeps/unix/sysv/linux/x86_64/Makefile index 59a6b0a8ba..dd4ab59c5a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/Makefile +++ b/sysdeps/unix/sysv/linux/x86_64/Makefile @@ -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 diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/Makefile b/sysdeps/unix/sysv/linux/x86_64/x32/Makefile index aa78238a0d..ecbdefb2d3 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/Makefile +++ b/sysdeps/unix/sysv/linux/x86_64/x32/Makefile @@ -1,3 +1,6 @@ +# The default ABI is x32. +default-abi := x32 + ifeq ($(subdir),misc) sysdep_routines += arch_prctl endif -- cgit 1.4.1