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


 983         $(AIOOBJS)              \
 984         $(RTOBJS)               \
 985         $(SECFLAGSOBJS)         \
 986         $(TPOOLOBJS)            \
 987         $(THREADSOBJS)          \
 988         $(THREADSMACHOBJS)      \
 989         $(THREADSASMOBJS)       \
 990         $(UNICODEOBJS)          \
 991         $(UNWINDMACHOBJS)       \
 992         $(UNWINDASMOBJS)        \
 993         $(COMSYSOBJS)           \
 994         $(SYSOBJS)              \
 995         $(COMSYSOBJS64)         \
 996         $(SYSOBJS64)            \
 997         $(VALUES)
 998 
 999 TRACEOBJS=                      \
1000         plockstat.o
1001 
1002 # NOTE: libc.so.1 must be linked with the minimal crti.o and crtn.o
1003 # modules whose source is provided in the $(SRC)/lib/common directory.
1004 # This must be done because otherwise the Sun C compiler would insert
1005 # its own versions of these modules and those versions contain code
1006 # to call out to C++ initialization functions.  Such C++ initialization
1007 # functions can call back into libc before thread initialization is
1008 # complete and this leads to segmentation violations and other problems.
1009 # Since libc contains no C++ code, linking with the minimal crti.o and
1010 # crtn.o modules is safe and avoids the problems described above.
1011 OBJECTS= $(CRTI) $(MOSTOBJS) $(CRTN)
1012 CRTSRCS= ../../common/sparcv9
1013 
1014 # include common library definitions
1015 include $(SRC)/lib/Makefile.lib
1016 include $(SRC)/lib/Makefile.lib.64
1017 
1018 # we need to override the default SONAME here because we might
1019 # be building a variant object (still libc.so.1, but different filename)
1020 SONAME = libc.so.1
1021 
1022 CFLAGS64 += $(CCVERBOSE)
1023 
1024 # This is necessary to avoid problems with calling _ex_unwind().
1025 # We probably don't want any inlining anyway.
1026 CFLAGS64 += -xinline=
1027 
1028 CERRWARN += -_gcc=-Wno-parentheses
1029 CERRWARN += -_gcc=-Wno-switch
1030 CERRWARN += -_gcc=-Wno-uninitialized
1031 CERRWARN += -_gcc=-Wno-unused-value
1032 CERRWARN += -_gcc=-Wno-unused-label




 983         $(AIOOBJS)              \
 984         $(RTOBJS)               \
 985         $(SECFLAGSOBJS)         \
 986         $(TPOOLOBJS)            \
 987         $(THREADSOBJS)          \
 988         $(THREADSMACHOBJS)      \
 989         $(THREADSASMOBJS)       \
 990         $(UNICODEOBJS)          \
 991         $(UNWINDMACHOBJS)       \
 992         $(UNWINDASMOBJS)        \
 993         $(COMSYSOBJS)           \
 994         $(SYSOBJS)              \
 995         $(COMSYSOBJS64)         \
 996         $(SYSOBJS64)            \
 997         $(VALUES)
 998 
 999 TRACEOBJS=                      \
1000         plockstat.o
1001 
1002 # NOTE: libc.so.1 must be linked with the minimal crti.o and crtn.o
1003 # modules whose source is provided in the $(SRC)/lib/crt directory.
1004 # This must be done because otherwise the Sun C compiler would insert
1005 # its own versions of these modules and those versions contain code
1006 # to call out to C++ initialization functions.  Such C++ initialization
1007 # functions can call back into libc before thread initialization is
1008 # complete and this leads to segmentation violations and other problems.
1009 # Since libc contains no C++ code, linking with the minimal crti.o and
1010 # crtn.o modules is safe and avoids the problems described above.
1011 OBJECTS= $(CRTI) $(MOSTOBJS) $(CRTN)
1012 CRTSRCS= ../../crt/sparcv9
1013 
1014 # include common library definitions
1015 include $(SRC)/lib/Makefile.lib
1016 include $(SRC)/lib/Makefile.lib.64
1017 
1018 # we need to override the default SONAME here because we might
1019 # be building a variant object (still libc.so.1, but different filename)
1020 SONAME = libc.so.1
1021 
1022 CFLAGS64 += $(CCVERBOSE)
1023 
1024 # This is necessary to avoid problems with calling _ex_unwind().
1025 # We probably don't want any inlining anyway.
1026 CFLAGS64 += -xinline=
1027 
1028 CERRWARN += -_gcc=-Wno-parentheses
1029 CERRWARN += -_gcc=-Wno-switch
1030 CERRWARN += -_gcc=-Wno-uninitialized
1031 CERRWARN += -_gcc=-Wno-unused-value
1032 CERRWARN += -_gcc=-Wno-unused-label