| .. | .. |
|---|
| 1 | +# SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | # |
|---|
| 2 | 3 | # Building vDSO images for sparc. |
|---|
| 3 | 4 | # |
|---|
| 4 | | - |
|---|
| 5 | | -KBUILD_CFLAGS += $(DISABLE_LTO) |
|---|
| 6 | 5 | |
|---|
| 7 | 6 | VDSO64-$(CONFIG_SPARC64) := y |
|---|
| 8 | 7 | VDSOCOMPAT-$(CONFIG_COMPAT) := y |
|---|
| .. | .. |
|---|
| 33 | 32 | |
|---|
| 34 | 33 | CPPFLAGS_vdso.lds += -P -C |
|---|
| 35 | 34 | |
|---|
| 36 | | -VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \ |
|---|
| 37 | | - -Wl,--no-undefined \ |
|---|
| 38 | | - -Wl,-z,max-page-size=8192 -Wl,-z,common-page-size=8192 \ |
|---|
| 39 | | - $(DISABLE_LTO) |
|---|
| 35 | +VDSO_LDFLAGS_vdso.lds = -m elf64_sparc -soname linux-vdso.so.1 --no-undefined \ |
|---|
| 36 | + -z max-page-size=8192 |
|---|
| 40 | 37 | |
|---|
| 41 | 38 | $(obj)/vdso64.so.dbg: $(obj)/vdso.lds $(vobjs) FORCE |
|---|
| 42 | 39 | $(call if_changed,vdso) |
|---|
| 43 | 40 | |
|---|
| 44 | 41 | HOST_EXTRACFLAGS += -I$(srctree)/tools/include |
|---|
| 45 | | -hostprogs-y += vdso2c |
|---|
| 42 | +hostprogs += vdso2c |
|---|
| 46 | 43 | |
|---|
| 47 | 44 | quiet_cmd_vdso2c = VDSO2C $@ |
|---|
| 48 | 45 | cmd_vdso2c = $(obj)/vdso2c $< $(<:%.dbg=%) $@ |
|---|
| .. | .. |
|---|
| 54 | 51 | # Don't omit frame pointers for ease of userspace debugging, but do |
|---|
| 55 | 52 | # optimize sibling calls. |
|---|
| 56 | 53 | # |
|---|
| 57 | | -CFL := $(PROFILING) -mcmodel=medlow -fPIC -O2 -fasynchronous-unwind-tables \ |
|---|
| 58 | | - -m64 -ffixed-g2 -ffixed-g3 -fcall-used-g4 -fcall-used-g5 -ffixed-g6 \ |
|---|
| 59 | | - -ffixed-g7 $(filter -g%,$(KBUILD_CFLAGS)) \ |
|---|
| 60 | | - $(call cc-option, -fno-stack-protector) -fno-omit-frame-pointer \ |
|---|
| 61 | | - -foptimize-sibling-calls -DBUILD_VDSO |
|---|
| 54 | +CFL := $(PROFILING) -mcmodel=medlow -fPIC -O2 -fasynchronous-unwind-tables -m64 \ |
|---|
| 55 | + $(filter -g%,$(KBUILD_CFLAGS)) -fno-stack-protector \ |
|---|
| 56 | + -fno-omit-frame-pointer -foptimize-sibling-calls \ |
|---|
| 57 | + -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO |
|---|
| 62 | 58 | |
|---|
| 63 | | -$(vobjs): KBUILD_CFLAGS += $(CFL) |
|---|
| 59 | +SPARC_REG_CFLAGS = -ffixed-g4 -ffixed-g5 -fcall-used-g5 -fcall-used-g7 |
|---|
| 60 | + |
|---|
| 61 | +$(vobjs): KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS) $(SPARC_REG_CFLAGS),$(KBUILD_CFLAGS)) $(CFL) |
|---|
| 64 | 62 | |
|---|
| 65 | 63 | # |
|---|
| 66 | 64 | # vDSO code runs in userspace and -pg doesn't help with profiling anyway. |
|---|
| 67 | 65 | # |
|---|
| 68 | | -CFLAGS_REMOVE_vdso-note.o = -pg |
|---|
| 69 | 66 | CFLAGS_REMOVE_vclock_gettime.o = -pg |
|---|
| 67 | +CFLAGS_REMOVE_vdso32/vclock_gettime.o = -pg |
|---|
| 70 | 68 | |
|---|
| 71 | 69 | $(obj)/%.so: OBJCOPYFLAGS := -S |
|---|
| 72 | | -$(obj)/%.so: $(obj)/%.so.dbg |
|---|
| 70 | +$(obj)/%.so: $(obj)/%.so.dbg FORCE |
|---|
| 73 | 71 | $(call if_changed,objcopy) |
|---|
| 74 | 72 | |
|---|
| 75 | | -CPPFLAGS_vdso32.lds = $(CPPFLAGS_vdso.lds) |
|---|
| 76 | | -VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-m,elf32_sparc,-soname=linux-gate.so.1 |
|---|
| 73 | +CPPFLAGS_vdso32/vdso32.lds = $(CPPFLAGS_vdso.lds) |
|---|
| 74 | +VDSO_LDFLAGS_vdso32.lds = -m elf32_sparc -soname linux-gate.so.1 |
|---|
| 77 | 75 | |
|---|
| 78 | 76 | #This makes sure the $(obj) subdirectory exists even though vdso32/ |
|---|
| 79 | 77 | #is not a kbuild sub-make subdirectory |
|---|
| .. | .. |
|---|
| 91 | 89 | KBUILD_CFLAGS_32 := $(filter-out -mcmodel=medlow,$(KBUILD_CFLAGS_32)) |
|---|
| 92 | 90 | KBUILD_CFLAGS_32 := $(filter-out -fno-pic,$(KBUILD_CFLAGS_32)) |
|---|
| 93 | 91 | KBUILD_CFLAGS_32 := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS_32)) |
|---|
| 94 | | -KBUILD_CFLAGS_32 += -m32 -msoft-float -fpic -mno-app-regs -ffixed-g7 |
|---|
| 95 | | -KBUILD_CFLAGS_32 += $(call cc-option, -fno-stack-protector) |
|---|
| 92 | +KBUILD_CFLAGS_32 := $(filter-out $(SPARC_REG_CFLAGS),$(KBUILD_CFLAGS_32)) |
|---|
| 93 | +KBUILD_CFLAGS_32 += -m32 -msoft-float -fpic |
|---|
| 94 | +KBUILD_CFLAGS_32 += -fno-stack-protector |
|---|
| 96 | 95 | KBUILD_CFLAGS_32 += $(call cc-option, -foptimize-sibling-calls) |
|---|
| 97 | 96 | KBUILD_CFLAGS_32 += -fno-omit-frame-pointer |
|---|
| 98 | 97 | KBUILD_CFLAGS_32 += -DDISABLE_BRANCH_PROFILING |
|---|
| .. | .. |
|---|
| 109 | 108 | # The DSO images are built using a special linker script. |
|---|
| 110 | 109 | # |
|---|
| 111 | 110 | quiet_cmd_vdso = VDSO $@ |
|---|
| 112 | | - cmd_vdso = $(CC) -nostdlib -o $@ \ |
|---|
| 111 | + cmd_vdso = $(LD) -nostdlib -o $@ \ |
|---|
| 113 | 112 | $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ |
|---|
| 114 | | - -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) |
|---|
| 113 | + -T $(filter %.lds,$^) $(filter %.o,$^) && \ |
|---|
| 114 | + sh $(srctree)/$(src)/checkundef.sh '$(OBJDUMP)' '$@' |
|---|
| 115 | 115 | |
|---|
| 116 | | -VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \ |
|---|
| 117 | | - $(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic |
|---|
| 116 | +VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 -Bsymbolic |
|---|
| 118 | 117 | GCOV_PROFILE := n |
|---|
| 119 | 118 | |
|---|
| 120 | 119 | # |
|---|