Message ID | 757d44a0e67bfa09d97eea918bc0d20383b5e80e.1563000446.git.cedric.xing@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | x86/sgx: Amend vDSO API to allow enclave/host parameter passing on untrusted stack | expand |
On Fri, 2019-07-12 at 23:51 -0700, Cedric Xing wrote: > The original x86/sgx/Makefile didn't work when "x86/sgx" was specified as the > test target, nor did it work with "run_tests" as the make target. Yet another > problem was that it breaks 32-bit only build. This patch fixes those problems, > along with adjustments to compiler/linker options and simplifications to the > build rules. > > Signed-off-by: Cedric Xing <cedric.xing@intel.com> You must split this in quite a few separate patches: 1. One for each fix. 2. At least one patch for each change in compiler and linker options with a commit message clearly expalaining why the change was made. 3. One for each simplification. We don't support 32-bit build: config INTEL_SGX bool "Intel SGX core functionality" depends on X86_64 && CPU_SUP_INTEL /Jarkko
On Sat, 2019-07-13 at 18:10 +0300, Jarkko Sakkinen wrote: > On Fri, 2019-07-12 at 23:51 -0700, Cedric Xing wrote: > > The original x86/sgx/Makefile didn't work when "x86/sgx" was specified as the > > test target, nor did it work with "run_tests" as the make target. Yet another > > problem was that it breaks 32-bit only build. This patch fixes those problems, > > along with adjustments to compiler/linker options and simplifications to the > > build rules. > > > > Signed-off-by: Cedric Xing <cedric.xing@intel.com> > > You must split this in quite a few separate patches: > > 1. One for each fix. > 2. At least one patch for each change in compiler and linker options with a > commit message clearly expalaining why the change was made. > 3. One for each simplification. > > We don't support 32-bit build: > > config INTEL_SGX > bool "Intel SGX core functionality" > depends on X86_64 && CPU_SUP_INTEL This is not to say that changes suck. This just in "unreviewable" state as far as the kernel processes go... /Jarkko
On 7/13/2019 8:15 AM, Jarkko Sakkinen wrote: > On Sat, 2019-07-13 at 18:10 +0300, Jarkko Sakkinen wrote: >> On Fri, 2019-07-12 at 23:51 -0700, Cedric Xing wrote: >>> The original x86/sgx/Makefile didn't work when "x86/sgx" was specified as the >>> test target, nor did it work with "run_tests" as the make target. Yet another >>> problem was that it breaks 32-bit only build. This patch fixes those problems, >>> along with adjustments to compiler/linker options and simplifications to the >>> build rules. >>> >>> Signed-off-by: Cedric Xing <cedric.xing@intel.com> >> >> You must split this in quite a few separate patches: >> >> 1. One for each fix. >> 2. At least one patch for each change in compiler and linker options with a >> commit message clearly expalaining why the change was made. >> 3. One for each simplification. >> >> We don't support 32-bit build: >> >> config INTEL_SGX >> bool "Intel SGX core functionality" >> depends on X86_64 && CPU_SUP_INTEL > > This is not to say that changes suck. This just in "unreviewable" state as far > as the kernel processes go... Please note that your patchset hasn't been upstreamed yet. Your Makefile is problematic to begin with. Technically it's your job to make it work before sending out any patches. You didn't explain what's done for each line of Makefile in your commit message either. Not saying documentation is unimportant, but the purposes for those changes are obvious and easy to understand for anyone having reasonable knowledge on how Makefile works. I'm totally fine not fixing the Makefile. You can just leave them out. > /Jarkko >
On Sat, Jul 13, 2019 at 10:29:12AM -0700, Xing, Cedric wrote: > Please note that your patchset hasn't been upstreamed yet. Your Makefile is > problematic to begin with. Technically it's your job to make it work before > sending out any patches. You didn't explain what's done for each line of > Makefile in your commit message either. Yes, it is different case to do the initial version of the whole thing that suggest fixes to it. The latter needs to have more granularity. Bug fixes in any type of software development should be isolated to separate change sets. It is just a sane QA practice. > Not saying documentation is unimportant, but the purposes for those changes > are obvious and easy to understand for anyone having reasonable knowledge on > how Makefile works. > > I'm totally fine not fixing the Makefile. You can just leave them out. /Jarkko
diff --git a/tools/testing/selftests/x86/sgx/Makefile b/tools/testing/selftests/x86/sgx/Makefile index 1fd6f2708e81..3af15d7c8644 100644 --- a/tools/testing/selftests/x86/sgx/Makefile +++ b/tools/testing/selftests/x86/sgx/Makefile @@ -2,47 +2,34 @@ top_srcdir = ../../../../.. include ../../lib.mk -HOST_CFLAGS := -Wall -Werror -g $(INCLUDES) -fPIC -ENCL_CFLAGS := -Wall -Werror -static -nostdlib -nostartfiles -fPIC \ +ifeq ($(shell $(CC) -dumpmachine | cut --delimiter=- -f1),x86_64) +all: all_64 +endif + +HOST_CFLAGS := -Wall -Werror -g $(INCLUDES) +ENCL_CFLAGS := -Wall -Werror -static -nostdlib -nostartfiles -fPIE \ -fno-stack-protector -mrdrnd $(INCLUDES) TEST_CUSTOM_PROGS := $(OUTPUT)/test_sgx all_64: $(TEST_CUSTOM_PROGS) -$(TEST_CUSTOM_PROGS): $(OUTPUT)/main.o $(OUTPUT)/sgx_call.o \ - $(OUTPUT)/encl_piggy.o +$(TEST_CUSTOM_PROGS): main.c sgx_call.S $(OUTPUT)/encl_piggy.o $(CC) $(HOST_CFLAGS) -o $@ $^ -$(OUTPUT)/main.o: main.c - $(CC) $(HOST_CFLAGS) -c $< -o $@ - -$(OUTPUT)/sgx_call.o: sgx_call.S - $(CC) $(HOST_CFLAGS) -c $< -o $@ - -$(OUTPUT)/encl_piggy.o: $(OUTPUT)/encl.bin $(OUTPUT)/encl.ss - $(CC) $(HOST_CFLAGS) -c encl_piggy.S -o $@ +$(OUTPUT)/encl_piggy.o: encl_piggy.S $(OUTPUT)/encl.bin $(OUTPUT)/encl.ss + $(CC) $(HOST_CFLAGS) -I$(OUTPUT) -c $< -o $@ -$(OUTPUT)/encl.bin: $(OUTPUT)/encl.elf $(OUTPUT)/sgxsign +$(OUTPUT)/encl.bin: $(OUTPUT)/encl.elf objcopy --remove-section=.got.plt -O binary $< $@ -$(OUTPUT)/encl.elf: $(OUTPUT)/encl.o $(OUTPUT)/encl_bootstrap.o - $(CC) $(ENCL_CFLAGS) -T encl.lds -o $@ $^ +$(OUTPUT)/encl.elf: encl.lds encl.c encl_bootstrap.S + $(CC) $(ENCL_CFLAGS) -T $^ -o $@ -$(OUTPUT)/encl.o: encl.c - $(CC) $(ENCL_CFLAGS) -c $< -o $@ - -$(OUTPUT)/encl_bootstrap.o: encl_bootstrap.S - $(CC) $(ENCL_CFLAGS) -c $< -o $@ - -$(OUTPUT)/encl.ss: $(OUTPUT)/encl.bin $(OUTPUT)/sgxsign - $(OUTPUT)/sgxsign signing_key.pem $(OUTPUT)/encl.bin $(OUTPUT)/encl.ss +$(OUTPUT)/encl.ss: $(OUTPUT)/sgxsign signing_key.pem $(OUTPUT)/encl.bin + $^ $@ $(OUTPUT)/sgxsign: sgxsign.c $(CC) -o $@ $< -lcrypto -EXTRA_CLEAN := $(OUTPUT)/sgx-selftest $(OUTPUT)/sgx-selftest.o \ - $(OUTPUT)/sgx_call.o $(OUTPUT)/encl.bin $(OUTPUT)/encl.ss \ - $(OUTPUT)/encl.elf $(OUTPUT)/encl.o $(OUTPUT)/encl_bootstrap.o \ - $(OUTPUT)/sgxsign - -.PHONY: clean +EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(addprefix $(OUTPUT)/, \ + encl.elf encl.bin encl.ss encl_piggy.o sgxsign)
The original x86/sgx/Makefile didn't work when "x86/sgx" was specified as the test target, nor did it work with "run_tests" as the make target. Yet another problem was that it breaks 32-bit only build. This patch fixes those problems, along with adjustments to compiler/linker options and simplifications to the build rules. Signed-off-by: Cedric Xing <cedric.xing@intel.com> --- tools/testing/selftests/x86/sgx/Makefile | 45 +++++++++--------------- 1 file changed, 16 insertions(+), 29 deletions(-)