Print this page
crt: Need a position-independent CRT for PIE
- Implement the greatest possible part of the crt1 in C
- Implement SPARC versions of the ASM sections of crt1
- Build crt1 position-independently, minor ASM updates to be position
  independent
- Implement crt1 with the hook expected by modern GCC to support
  profiling, make gcrt1 a symlink for source compatibility (older GCC
  initializes profiling at firsnt use of _mcount if necessary, so
  doesn't need the gcrt)
- Split the CRT out of developer/library/lint into a separate c-runtime package


1044         $(AIOOBJS)              \
1045         $(RTOBJS)               \
1046         $(SECFLAGSOBJS)         \
1047         $(TPOOLOBJS)            \
1048         $(THREADSOBJS)          \
1049         $(THREADSMACHOBJS)      \
1050         $(THREADSASMOBJS)       \
1051         $(UNICODEOBJS)          \
1052         $(UNWINDMACHOBJS)       \
1053         $(UNWINDASMOBJS)        \
1054         $(COMSYSOBJS)           \
1055         $(SYSOBJS)              \
1056         $(COMSYSOBJS64)         \
1057         $(SYSOBJS64)            \
1058         $(VALUES)
1059 
1060 TRACEOBJS=                      \
1061         plockstat.o
1062 
1063 # NOTE: libc.so.1 must be linked with the minimal crti.o and crtn.o
1064 # modules whose source is provided in the $(SRC)/lib/common directory.
1065 # This must be done because otherwise the Sun C compiler would insert
1066 # its own versions of these modules and those versions contain code
1067 # to call out to C++ initialization functions.  Such C++ initialization
1068 # functions can call back into libc before thread initialization is
1069 # complete and this leads to segmentation violations and other problems.
1070 # Since libc contains no C++ code, linking with the minimal crti.o and
1071 # crtn.o modules is safe and avoids the problems described above.
1072 OBJECTS= $(CRTI) $(MOSTOBJS) $(CRTN)
1073 CRTSRCS= ../../common/sparc
1074 
1075 # include common library definitions
1076 include $(SRC)/lib/Makefile.lib
1077 
1078 # we need to override the default SONAME here because we might
1079 # be building a variant object (still libc.so.1, but different filename)
1080 SONAME = libc.so.1
1081 
1082 CFLAGS += $(CCVERBOSE)
1083 
1084 # This is necessary to avoid problems with calling _ex_unwind().
1085 # We probably don't want any inlining anyway.
1086 CFLAGS += -xinline=
1087 
1088 CERRWARN += -_gcc=-Wno-parentheses
1089 CERRWARN += -_gcc=-Wno-switch
1090 CERRWARN += -_gcc=-Wno-uninitialized
1091 CERRWARN += -_gcc=-Wno-unused-value
1092 CERRWARN += -_gcc=-Wno-unused-label
1093 CERRWARN += -_gcc=-Wno-unused-variable




1044         $(AIOOBJS)              \
1045         $(RTOBJS)               \
1046         $(SECFLAGSOBJS)         \
1047         $(TPOOLOBJS)            \
1048         $(THREADSOBJS)          \
1049         $(THREADSMACHOBJS)      \
1050         $(THREADSASMOBJS)       \
1051         $(UNICODEOBJS)          \
1052         $(UNWINDMACHOBJS)       \
1053         $(UNWINDASMOBJS)        \
1054         $(COMSYSOBJS)           \
1055         $(SYSOBJS)              \
1056         $(COMSYSOBJS64)         \
1057         $(SYSOBJS64)            \
1058         $(VALUES)
1059 
1060 TRACEOBJS=                      \
1061         plockstat.o
1062 
1063 # NOTE: libc.so.1 must be linked with the minimal crti.o and crtn.o
1064 # modules whose source is provided in the $(SRC)/lib/crt directory.
1065 # This must be done because otherwise the Sun C compiler would insert
1066 # its own versions of these modules and those versions contain code
1067 # to call out to C++ initialization functions.  Such C++ initialization
1068 # functions can call back into libc before thread initialization is
1069 # complete and this leads to segmentation violations and other problems.
1070 # Since libc contains no C++ code, linking with the minimal crti.o and
1071 # crtn.o modules is safe and avoids the problems described above.
1072 OBJECTS= $(CRTI) $(MOSTOBJS) $(CRTN)
1073 CRTSRCS= ../../crt/sparcv7
1074 
1075 # include common library definitions
1076 include $(SRC)/lib/Makefile.lib
1077 
1078 # we need to override the default SONAME here because we might
1079 # be building a variant object (still libc.so.1, but different filename)
1080 SONAME = libc.so.1
1081 
1082 CFLAGS += $(CCVERBOSE)
1083 
1084 # This is necessary to avoid problems with calling _ex_unwind().
1085 # We probably don't want any inlining anyway.
1086 CFLAGS += -xinline=
1087 
1088 CERRWARN += -_gcc=-Wno-parentheses
1089 CERRWARN += -_gcc=-Wno-switch
1090 CERRWARN += -_gcc=-Wno-uninitialized
1091 CERRWARN += -_gcc=-Wno-unused-value
1092 CERRWARN += -_gcc=-Wno-unused-label
1093 CERRWARN += -_gcc=-Wno-unused-variable