diff options
Diffstat (limited to 'arch/x86/vdso/Makefile')
-rw-r--r-- | arch/x86/vdso/Makefile | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile index fd14be1d1472..c580d1210ffe 100644 --- a/arch/x86/vdso/Makefile +++ b/arch/x86/vdso/Makefile | |||
@@ -2,6 +2,8 @@ | |||
2 | # Building vDSO images for x86. | 2 | # Building vDSO images for x86. |
3 | # | 3 | # |
4 | 4 | ||
5 | KBUILD_CFLAGS += $(DISABLE_LTO) | ||
6 | |||
5 | VDSO64-$(CONFIG_X86_64) := y | 7 | VDSO64-$(CONFIG_X86_64) := y |
6 | VDSOX32-$(CONFIG_X86_X32_ABI) := y | 8 | VDSOX32-$(CONFIG_X86_X32_ABI) := y |
7 | VDSO32-$(CONFIG_X86_32) := y | 9 | VDSO32-$(CONFIG_X86_32) := y |
@@ -21,7 +23,8 @@ vobjs-$(VDSOX32-y) += $(vobjx32s-compat) | |||
21 | vobj64s := $(filter-out $(vobjx32s-compat),$(vobjs-y)) | 23 | vobj64s := $(filter-out $(vobjx32s-compat),$(vobjs-y)) |
22 | 24 | ||
23 | # files to link into kernel | 25 | # files to link into kernel |
24 | obj-$(VDSO64-y) += vma.o vdso.o | 26 | obj-y += vma.o |
27 | obj-$(VDSO64-y) += vdso.o | ||
25 | obj-$(VDSOX32-y) += vdsox32.o | 28 | obj-$(VDSOX32-y) += vdsox32.o |
26 | obj-$(VDSO32-y) += vdso32.o vdso32-setup.o | 29 | obj-$(VDSO32-y) += vdso32.o vdso32-setup.o |
27 | 30 | ||
@@ -35,7 +38,8 @@ export CPPFLAGS_vdso.lds += -P -C | |||
35 | 38 | ||
36 | VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \ | 39 | VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \ |
37 | -Wl,--no-undefined \ | 40 | -Wl,--no-undefined \ |
38 | -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 | 41 | -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 \ |
42 | $(DISABLE_LTO) | ||
39 | 43 | ||
40 | $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso.so | 44 | $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso.so |
41 | 45 | ||
@@ -127,7 +131,7 @@ vdso32.so-$(VDSO32-y) += sysenter | |||
127 | vdso32-images = $(vdso32.so-y:%=vdso32-%.so) | 131 | vdso32-images = $(vdso32.so-y:%=vdso32-%.so) |
128 | 132 | ||
129 | CPPFLAGS_vdso32.lds = $(CPPFLAGS_vdso.lds) | 133 | CPPFLAGS_vdso32.lds = $(CPPFLAGS_vdso.lds) |
130 | VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-soname=linux-gate.so.1 | 134 | VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-m,elf_i386 -Wl,-soname=linux-gate.so.1 |
131 | 135 | ||
132 | # This makes sure the $(obj) subdirectory exists even though vdso32/ | 136 | # This makes sure the $(obj) subdirectory exists even though vdso32/ |
133 | # is not a kbuild sub-make subdirectory. | 137 | # is not a kbuild sub-make subdirectory. |
@@ -135,7 +139,7 @@ override obj-dirs = $(dir $(obj)) $(obj)/vdso32/ | |||
135 | 139 | ||
136 | targets += vdso32/vdso32.lds | 140 | targets += vdso32/vdso32.lds |
137 | targets += $(vdso32-images) $(vdso32-images:=.dbg) | 141 | targets += $(vdso32-images) $(vdso32-images:=.dbg) |
138 | targets += vdso32/note.o $(vdso32.so-y:%=vdso32/%.o) | 142 | targets += vdso32/note.o vdso32/vclock_gettime.o $(vdso32.so-y:%=vdso32/%.o) |
139 | 143 | ||
140 | extra-y += $(vdso32-images) | 144 | extra-y += $(vdso32-images) |
141 | 145 | ||
@@ -145,8 +149,19 @@ KBUILD_AFLAGS_32 := $(filter-out -m64,$(KBUILD_AFLAGS)) | |||
145 | $(vdso32-images:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_32) | 149 | $(vdso32-images:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_32) |
146 | $(vdso32-images:%=$(obj)/%.dbg): asflags-$(CONFIG_X86_64) += -m32 | 150 | $(vdso32-images:%=$(obj)/%.dbg): asflags-$(CONFIG_X86_64) += -m32 |
147 | 151 | ||
152 | KBUILD_CFLAGS_32 := $(filter-out -m64,$(KBUILD_CFLAGS)) | ||
153 | KBUILD_CFLAGS_32 := $(filter-out -mcmodel=kernel,$(KBUILD_CFLAGS_32)) | ||
154 | KBUILD_CFLAGS_32 := $(filter-out -fno-pic,$(KBUILD_CFLAGS_32)) | ||
155 | KBUILD_CFLAGS_32 := $(filter-out -mfentry,$(KBUILD_CFLAGS_32)) | ||
156 | KBUILD_CFLAGS_32 += -m32 -msoft-float -mregparm=0 -fpic | ||
157 | KBUILD_CFLAGS_32 += $(call cc-option, -fno-stack-protector) | ||
158 | KBUILD_CFLAGS_32 += $(call cc-option, -foptimize-sibling-calls) | ||
159 | KBUILD_CFLAGS_32 += -fno-omit-frame-pointer | ||
160 | $(vdso32-images:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_32) | ||
161 | |||
148 | $(vdso32-images:%=$(obj)/%.dbg): $(obj)/vdso32-%.so.dbg: FORCE \ | 162 | $(vdso32-images:%=$(obj)/%.dbg): $(obj)/vdso32-%.so.dbg: FORCE \ |
149 | $(obj)/vdso32/vdso32.lds \ | 163 | $(obj)/vdso32/vdso32.lds \ |
164 | $(obj)/vdso32/vclock_gettime.o \ | ||
150 | $(obj)/vdso32/note.o \ | 165 | $(obj)/vdso32/note.o \ |
151 | $(obj)/vdso32/%.o | 166 | $(obj)/vdso32/%.o |
152 | $(call if_changed,vdso) | 167 | $(call if_changed,vdso) |
@@ -181,7 +196,8 @@ quiet_cmd_vdso = VDSO $@ | |||
181 | -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \ | 196 | -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \ |
182 | sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' | 197 | sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' |
183 | 198 | ||
184 | VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) | 199 | VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \ |
200 | $(LTO_CFLAGS) | ||
185 | GCOV_PROFILE := n | 201 | GCOV_PROFILE := n |
186 | 202 | ||
187 | # | 203 | # |