The vdso Makefile passes linker-style -m options not to the linker but to gcc. This happens to work with earlier gcc, but fails with gcc 4.6. Pass gcc-style -m options, instead. Note: all currently supported versions of gcc supports -m32, so there is no reason to conditionalize it any more.
Unified · Split
| @@ -25,7 +25,7 @@ targets += vdso.so vdso.so.dbg vdso.lds $(vobjs-y) · 24 unmodified lines | ||
| 25 | 25 | |
| 26 | 26 | export CPPFLAGS_vdso.lds += -P -C |
| 27 | 27 | |
| 28 | −VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -Wl,-soname=linux-vdso.so.1 \ | |
| 28 | +VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \ | |
| 29 | 29 | -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 |
| 30 | 30 | |
| 31 | 31 | $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso.so |
| @@ -69,7 +69,7 @@ vdso32.so-$(VDSO32-y) += sysenter · 37 unmodified lines | ||
| 69 | 69 | vdso32-images = $(vdso32.so-y:%=vdso32-%.so) |
| 70 | 70 | |
| 71 | 71 | CPPFLAGS_vdso32.lds = $(CPPFLAGS_vdso.lds) |
| 72 | −VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1 | |
| 72 | +VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-soname=linux-gate.so.1 | |
| 73 | 73 | |
| 74 | 74 | # This makes sure the $(obj) subdirectory exists even though vdso32/ |
| 75 | 75 | # is not a kbuild sub-make subdirectory. |