Tue Mar 29 21:23:05 2016 UTC ()
crt0-common.c is miscompiled by gcc 5.3 on evbarm with -O2 so use -O1.  Do
this for all non-x86 arches.


(skrll)
diff -r1.26 -r1.27 src/lib/csu/common/Makefile.inc

cvs diff -r1.26 -r1.27 src/lib/csu/common/Makefile.inc (switch to unified diff)

--- src/lib/csu/common/Makefile.inc 2016/03/27 00:03:06 1.26
+++ src/lib/csu/common/Makefile.inc 2016/03/29 21:23:05 1.27
@@ -1,141 +1,142 @@ @@ -1,141 +1,142 @@
1# $NetBSD: Makefile.inc,v 1.26 2016/03/27 00:03:06 mrg Exp $ 1# $NetBSD: Makefile.inc,v 1.27 2016/03/29 21:23:05 skrll Exp $
2 2
3.include <bsd.own.mk> 3.include <bsd.own.mk>
4 4
5# XXX: FIXME: This is defined in bsd.lib.mk 5# XXX: FIXME: This is defined in bsd.lib.mk
6PICFLAGS ?= -fPIC 6PICFLAGS ?= -fPIC
7 7
8COMMON_DIR:= ${.CURDIR}/common 8COMMON_DIR:= ${.CURDIR}/common
9.PATH: ${COMMON_DIR} 9.PATH: ${COMMON_DIR}
10 10
11CPPFLAGS+= -I${NETBSDSRCDIR}/libexec/ld.elf_so -I${COMMON_DIR} -I. 11CPPFLAGS+= -I${NETBSDSRCDIR}/libexec/ld.elf_so -I${COMMON_DIR} -I.
12 12
13OBJS+= crt0.o gcrt0.o crti.o crtn.o 13OBJS+= crt0.o gcrt0.o crti.o crtn.o
14OBJS+= crtbegin.o crtend.o 14OBJS+= crtbegin.o crtend.o
15 15
16.if ${MKPIC} == "yes" 16.if ${MKPIC} == "yes"
17OBJS+= crtbeginS.o 17OBJS+= crtbeginS.o
18CFLAGS.crtbegin.c+= -fPIE 18CFLAGS.crtbegin.c+= -fPIE
19# XXXGCC5 - GCC 5 miscompiles crtbeginS.c on many platforms. on SPARC it 19# XXXGCC5 - GCC 5 miscompiles crtbeginS.c on many platforms. on SPARC it
20# XXXGCC5 emits "clr %g1; call %g1", which is effectively jumping to zero. 20# XXXGCC5 emits "clr %g1; call %g1", which is effectively jumping to zero.
21. if defined(HAVE_GCC) && ${HAVE_GCC} == 53 && \ 21. if defined(HAVE_GCC) && ${HAVE_GCC} == 53 && \
22 ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != "amd64" 22 ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != "amd64"
 23CFLAGS.crt0-common.c+= -O1
23CFLAGS.crtbeginS.c+= -O1 24CFLAGS.crtbeginS.c+= -O1
24. endif 25. endif
25.endif 26.endif
26 27
27.if ${MACHINE_ARCH} == "alpha" 28.if ${MACHINE_ARCH} == "alpha"
28OBJS+= crtfm.o 29OBJS+= crtfm.o
29.endif 30.endif
30 31
31.if ${CSU_MACHINE_ARCH} == "sparc64" 32.if ${CSU_MACHINE_ARCH} == "sparc64"
32# create helper objects for the compiler to mark compiler memory models 33# create helper objects for the compiler to mark compiler memory models
33.for m in medlow medmid medany 34.for m in medlow medmid medany
34sparc_mc${m}.o: compident.S sysident_assym.h 35sparc_mc${m}.o: compident.S sysident_assym.h
35 ${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \ 36 ${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \
36 -o $@ ${COMMON_DIR}/compident.S 37 -o $@ ${COMMON_DIR}/compident.S
37.endfor 38.endfor
38OBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o 39OBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o
39.endif 40.endif
40 41
41realall: ${OBJS} 42realall: ${OBJS}
42 43
43.if exists(${ARCHDIR}/crtbegin.S) 44.if exists(${ARCHDIR}/crtbegin.S)
44crtbegin.o: crtbegin.S 45crtbegin.o: crtbegin.S
45 ${_MKTARGET_COMPILE} 46 ${_MKTARGET_COMPILE}
46 ${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o 47 ${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
47.else 48.else
48crtbegin.o: crtbegin.c crtbegin.h 49crtbegin.o: crtbegin.c crtbegin.h
49 ${_MKTARGET_COMPILE} 50 ${_MKTARGET_COMPILE}
50 ${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o 51 ${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
51.endif 52.endif
52 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}  53 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
53 rm -f ${.TARGET}.o 54 rm -f ${.TARGET}.o
54.if ${MKSTRIPIDENT} != "no" 55.if ${MKSTRIPIDENT} != "no"
55 ${OBJCOPY} -R .ident ${.TARGET} 56 ${OBJCOPY} -R .ident ${.TARGET}
56.endif 57.endif
57 58
58.if exists(${ARCHDIR}/crtbegin.S) 59.if exists(${ARCHDIR}/crtbegin.S)
59crtbeginS.o: crtbegin.S 60crtbeginS.o: crtbegin.S
60 ${_MKTARGET_COMPILE} 61 ${_MKTARGET_COMPILE}
61 ${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o 62 ${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
62.else 63.else
63crtbeginS.o: crtbegin.c crtbegin.h 64crtbeginS.o: crtbegin.c crtbegin.h
64 ${_MKTARGET_COMPILE} 65 ${_MKTARGET_COMPILE}
65 ${COMPILE.c} ${CFLAGS.crtbeginS.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o 66 ${COMPILE.c} ${CFLAGS.crtbeginS.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
66.endif 67.endif
67 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}  68 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
68 rm -f ${.TARGET}.o 69 rm -f ${.TARGET}.o
69.if ${MKSTRIPIDENT} != "no" 70.if ${MKSTRIPIDENT} != "no"
70 ${OBJCOPY} -R .ident ${.TARGET} 71 ${OBJCOPY} -R .ident ${.TARGET}
71.endif 72.endif
72 73
73crtend.o: crtend.S 74crtend.o: crtend.S
74 ${_MKTARGET_COMPILE} 75 ${_MKTARGET_COMPILE}
75 ${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o 76 ${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o
76 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}  77 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
77 rm -f ${.TARGET}.o 78 rm -f ${.TARGET}.o
78.if ${MKSTRIPIDENT} != "no" 79.if ${MKSTRIPIDENT} != "no"
79 ${OBJCOPY} -R .ident ${.TARGET} 80 ${OBJCOPY} -R .ident ${.TARGET}
80.endif 81.endif
81 82
82.if ${MKPIC} != "no" 83.if ${MKPIC} != "no"
83MY_PICFLAGS= ${PICFLAGS} 84MY_PICFLAGS= ${PICFLAGS}
84.else 85.else
85MY_PICFLAGS= 86MY_PICFLAGS=
86.endif 87.endif
87 88
88crt0.o: crt0.S crt0-common.c 89crt0.o: crt0.S crt0-common.c
89 ${_MKTARGET_COMPILE} 90 ${_MKTARGET_COMPILE}
90 ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o 91 ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
91 ${COMPILE.c} ${MY_PICFLAGS} ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o 92 ${COMPILE.c} ${CFLAGS.crt0-common.c} ${MY_PICFLAGS} ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
92 ${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o 93 ${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
93 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}  94 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
94 rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o 95 rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
95.if ${MKSTRIPIDENT} != "no" 96.if ${MKSTRIPIDENT} != "no"
96 ${OBJCOPY} -R .ident ${.TARGET} 97 ${OBJCOPY} -R .ident ${.TARGET}
97.endif 98.endif
98 99
99gcrt0.o: crt0.S crt0-common.c 100gcrt0.o: crt0.S crt0-common.c
100 ${_MKTARGET_COMPILE} 101 ${_MKTARGET_COMPILE}
101 ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o 102 ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
102 ${COMPILE.c} ${MY_PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o 103 ${COMPILE.c} ${MY_PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
103 ${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o 104 ${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
104 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}  105 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
105 rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o 106 rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
106.if ${MKSTRIPIDENT} != "no" 107.if ${MKSTRIPIDENT} != "no"
107 ${OBJCOPY} -R .ident ${.TARGET} 108 ${OBJCOPY} -R .ident ${.TARGET}
108.endif 109.endif
109 110
110.if ${MACHINE_ARCH} == "alpha" 111.if ${MACHINE_ARCH} == "alpha"
111# can't do this in Makefile.inc otherwise it will before realall: 112# can't do this in Makefile.inc otherwise it will before realall:
112crtfm.o: crtfm.c 113crtfm.o: crtfm.c
113 ${_MKTARGET_COMPILE} 114 ${_MKTARGET_COMPILE}
114 ${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o 115 ${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o
115 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}  116 ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
116 rm -f ${.TARGET}.o 117 rm -f ${.TARGET}.o
117.endif 118.endif
118 119
119GENASSYM_CONF= ${COMMON_DIR}/sysident_assym.cf  120GENASSYM_CONF= ${COMMON_DIR}/sysident_assym.cf
120sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h 121sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h
121 ${_MKTARGET_CREATE} 122 ${_MKTARGET_CREATE}
122 cat ${COMMON_DIR}/sysident_assym.cf | \ 123 cat ${COMMON_DIR}/sysident_assym.cf | \
123 ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \ 124 ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \
124 ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \ 125 ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \
125 mv -f sysident_assym.h.tmp sysident_assym.h 126 mv -f sysident_assym.h.tmp sysident_assym.h
126 127
127CLEANFILES+= sysident_assym.h 128CLEANFILES+= sysident_assym.h
128 129
129crti.o: crti.S sysident_assym.h sysident.S 130crti.o: crti.S sysident_assym.h sysident.S
130crtn.o: crtn.S 131crtn.o: crtn.S
131 132
132FILES=${OBJS} 133FILES=${OBJS}
133FILESDIR=${LIBDIR} 134FILESDIR=${LIBDIR}
134CLEANFILES+=${OBJS} 135CLEANFILES+=${OBJS}
135 136
136.if ${MKPIC} == "yes" 137.if ${MKPIC} == "yes"
137SYMLINKS+= crtbegin.o ${LIBDIR}/crtbeginT.o 138SYMLINKS+= crtbegin.o ${LIBDIR}/crtbeginT.o
138SYMLINKS+= crtend.o ${LIBDIR}/crtendS.o 139SYMLINKS+= crtend.o ${LIBDIR}/crtendS.o
139.endif 140.endif
140 141
141.include <bsd.prog.mk> 142.include <bsd.prog.mk>