e5ef217c3e
libstdc++-v3: * acinclude.m4 (GLIBCXX_ENABLE_VTABLE_VERIFY) <solaris2*>: Use -Wl,-R in VTV_CXXLINKFLAGS. * configure: Regenerate. * testsuite/18_support/bad_exception/23591_thread-1.c: Use -fvtable-verify=none on Solaris 12+. libgcc: * Makefile.in (VTV_CFLAGS): New variable. (vtv_start$(objext), vtv_end$(objext), vtv_end$(objext)) (vtv_start_preinit$(objext), vtv_end_preinit$(objext)): Use it. * config.host (*-*-solaris2*): Add t-crtstuff-pic to tmake_file. Add vtv_start.o, vtv_end.o, vtv_start_preinit.o, vtv_end_preinit.o to extra_parts if $enable_vtable_verify = yes. libvtv: * configure.tgt (*-*-solaris2.[1-9]*): Declare supported. * configure.ac: Call AC_USE_SYSTEM_EXTENSIONS. <*-*-solaris2*>: Check for init priority support. Check for getexecname, __fortify_fail, _obstack_begin. (VTV_NO_OBSTACK): New conditional. * configure: Regenerate. * Makefile.am [VTV_NO_OBSTACK] (obstack.c): Use new condition. Create empty config.h * Makefile.in: Regenerate. * vtv_rts.cc [HAVE_GETEXECNAME] (program_invocation_name): New variable. (read_section_offset_and_length) [HAVE_GETEXECNAME]: Set it. (dl_iterate_phdr_callback) [HAVE_GETEXECNAME]: Set it. (__fortify_fail): Wrap in HAVE___FORTIFY_FAIL [!HAVE___FORTIFY_FAIL]: Provide non-Cygwin implementation. (read_section_offset_and_length): Assert sh_size >= VTV_PAGE_SIZE. (iterate_modules): Fix typo. Use VTV_PAGE_SIZE. (dl_iterate_phdr_callback): Fix typo. Use VTV_PAGE_SIZE. (__VLTChangePermission): Fix typos. include: * vtv-change-permission.h (VTV_PAGE_SIZE) [__sun__ && __svr4__ && __sparc__]: Define. gcc: * config/sol2.h (SUPPORTS_INIT_PRIORITY): Move up. (STARTFILE_VTV_SPEC, ENDFILE_VTV_SPEC): Define. (STARTFILE_SPEC): Use %(startfile_vtv). (ENDFILE_SPEC): Use %(endfile_vtv). (SUBTARGET_EXTRA_SPECS): Handle STARTFILE_VTV_SPEC, ENDFILE_VTV_SPEC. * gcc.c (LINK_COMMAND_SPEC): Move VTABLE_VERIFICATION_SPEC after %{L*}. From-SVN: r230865
124 lines
3.1 KiB
Makefile
124 lines
3.1 KiB
Makefile
## Makefile for the VTV library.
|
|
##
|
|
## Copyright (C) 2013-2015 Free Software Foundation, Inc.
|
|
##
|
|
## Process this file with automake to produce Makefile.in.
|
|
##
|
|
## This file is part of the Vtable Verification (VTV) Library. This
|
|
## library is free software; you can redistribute it and/or modify it
|
|
## under the terms of the GNU General Public License as published by
|
|
## the Free Software Foundation; either version 3, or (at your option)
|
|
## any later version.
|
|
|
|
## This library is distributed in the hope that it will be useful, but
|
|
## WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
## General Public License for more details.
|
|
|
|
## You should have received a copy of the GNU General Public License
|
|
## along with this library; see the file COPYING3. If not see
|
|
## <http://www.gnu.org/licenses/>.
|
|
|
|
if ENABLE_VTABLE_VERIFY
|
|
SUBDIRS = testsuite
|
|
else
|
|
SUBDIRS=
|
|
endif
|
|
|
|
ACLOCAL_AMFLAGS = -I .. -I ../config
|
|
|
|
# May be used by toolexeclibdir.
|
|
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
|
|
|
|
DEFS = @DEFS@
|
|
AM_CPPFLAGS = -I$(top_srcdir)/../include
|
|
AM_CFLAGS = $(XCFLAGS)
|
|
AM_CCASFLAGS = $(XCFLAGS)
|
|
AM_CXXFLAGS = $(XCFLAGS)
|
|
AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
|
|
AM_CXXFLAGS += -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end
|
|
|
|
if VTV_CYGMIN
|
|
toolexeclib_LTLIBRARIES = libvtv.la libvtv_stubs.la
|
|
else
|
|
toolexeclib_LTLIBRARIES = libvtv.la
|
|
endif
|
|
|
|
vtv_headers = \
|
|
vtv_map.h \
|
|
vtv_malloc.h \
|
|
vtv_fail.h \
|
|
vtv_set.h \
|
|
vtv_utils.h \
|
|
vtv_rts.h
|
|
|
|
vtv_sources = \
|
|
vtv_start.c \
|
|
vtv_malloc.cc \
|
|
vtv_rts.cc \
|
|
vtv_utils.cc \
|
|
vtv_end.c
|
|
|
|
vtv_stubs_sources = \
|
|
vtv_start.c \
|
|
vtv_stubs.cc \
|
|
vtv_end.c
|
|
|
|
libvtv_includedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
|
|
|
|
# Link in vtv_start and vtv_end.
|
|
BUILT_SOURCES = vtv_start.c vtv_end.c
|
|
vtv_start.c:
|
|
rm -f $@
|
|
$(LN_S) $(toplevel_srcdir)/libgcc/vtv_start.c $@
|
|
|
|
vtv_end.c:
|
|
rm -f $@
|
|
$(LN_S) $(toplevel_srcdir)/libgcc/vtv_end.c $@
|
|
|
|
if VTV_NO_OBSTACK
|
|
obstack.c:
|
|
rm -f $@
|
|
$(LN_S) $(toplevel_srcdir)/libiberty/obstack.c $@
|
|
> config.h
|
|
endif
|
|
|
|
if VTV_CYGMIN
|
|
vtv_stubs.cc:
|
|
rm -f $@
|
|
$(LN_S) $(toplevel_srcdir)/libstdc++-v3/libsupc++/vtv_stubs.cc $@
|
|
endif
|
|
|
|
if VTV_CYGMIN
|
|
libvtv_la_LIBADD = -lpsapi
|
|
libvtv_la_LDFLAGS = $(lt_host_flags)
|
|
libvtv_stubs_la_LDFLAGS = $(lt_host_flags)
|
|
endif
|
|
|
|
if ENABLE_VTABLE_VERIFY
|
|
libvtv_la_SOURCES = $(vtv_sources)
|
|
if VTV_NO_OBSTACK
|
|
libvtv_la_SOURCES += obstack.c
|
|
endif
|
|
if VTV_CYGMIN
|
|
libvtv_stubs_la_SOURCES = $(vtv_stubs_sources)
|
|
endif
|
|
libvtv_include_HEADERS = $(vtv_headers)
|
|
else
|
|
libvtv_la_SOURCES =
|
|
libvtv_include_HEADERS =
|
|
endif
|
|
|
|
# Least ordering for dependencies mean linking w/o libstdc++ for as
|
|
# long as the development of libvtv does not absolutely require it.
|
|
CXXVTV=$(CC_FOR_TARGET)
|
|
CXXLD=$(CC_FOR_TARGET)
|
|
|
|
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
|
--mode=compile $(CXXVTV) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
|
|
|
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
|
--mode=link $(CXXVTV) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
|
|
$(LDFLAGS) -o $@
|