binutils-gdb/gold/Makefile.am
Ian Lance Taylor 7d9e3d9854 * mapfile.cc: New file.
* mapfile.h: New file.
	* options.h (class General_options): Add -M/--print-map and -Map.
	* options.cc (General_options::finalize): Make -M equivalent to
	-Map -.
	* main.cc: Include <cstdio> and "mapfile.h".
	(main): Open mapfile if requested.
	* gold.cc (class Middle_runner): Add mapfile_ field.  Update
	constructor.  Change caller.
	(queue_initial_tasks): Add mapfile parameter.  Change caller.
	(queue_middle_tasks): Likewise.
	* gold.h (queue_initial_tasks, queue_middle_tasks): Update
	declarations.
	* archive.cc: Include "mapfile.h".
	(Archive::add_symbols): Add mapfile parameter.  Change all
	callers.  Pass mapfile, symbol, and reason to include_member.
	(Archive::include_all_members): Add mapfile parameter.  Change all
	callers.
	(Archive::include_member): Add mapfile, sym, and why parameters.
	Change all callers.  Report inclusion to map file.
	* archive.h: Include "fileread.h".
	(class Archive): Update declarations.
	(Archive::file): New const method.
	(class Add_archive_symbols): Add mapfile_ field.  Update
	constructor.  Change all callers.
	* readsyms.h (class Read_symbols): Likewise.
	(class Finish_group): Likewise.
	(class Read_script): Likewise.
	* common.cc: Include "mapfile.h".
	(Symbol_table::allocate_commons): Add mapfile parameter.  Change
	all callers.
	(Symbol_table::do_allocate_commons): Likewise.
	(Symbol_table::do_allocate_commons_list): Likewise.  Report common
	symbol allocation to mapfile.
	* common.h (class Allocate_commons_task): Add mapfile_ field.
	Update constructor.  Change all callers.
	* symtab.h (class Symbol_table): Update declarations.
	* layout.cc: Include "mapfile.h".
	(Layout_task_runner::run): Print information to mapfile.
	(Layout::create_gold_note): Change Output_data_fixed_space to
	Output_data_zero_fill.
	(Layout::create_build_id): Likewise.
	(Layout::print_to_mapfile): New function.
	* layout.h (class Layout_task_runner): Add mapfile_ field.  Update
	constructor.  Change caller.
	(class Layout): Declare print_to_mapfile.
	* output.cc (Output_section::Input_section::print_to_mapfile): New
	function.
	(Output_section::add_input_section): If producing a map, always
	add to input_sections_ list.
	(Output_section::do_print_to_mapfile): New function.
	(Output_segment::print_sections_to_mapfile): New function.
	(Output_segment::print_section_list_to_mapfile): New function.
	* output.h: Include "mapfile.h".
	(Output_data::print_to_mapfile): New function.
	(Output_data::do_print_to_mapfile): New virtual function.
	(Output_segment_headers::do_print_to_mapfile): New function.
	(Output_file_header::do_print_to_mapfile): New function.
	(Output_data_const::do_print_to_mapfile): New function.
	(class Output_data_const_buffer): Add map_name_ field.  Update
	constructor.  Change all callers.  Add do_print_to_mapfile
	function.
	(class Output_data_fixed_space): Likewise.
	(class Output_data_space): Likewise.
	(class Output_data_zero_fill): New class.
	(Output_data_strtab::do_print_to_mapfile): New function.
	(Output_data_reloc_base::do_print_to_mapfile): New function.
	(Output_relocatable_relocs::do_print_to_mapfile): New function.
	(Output_data_group::do_print_to_mapfile): New function.
	(Output_data_got::do_print_to_mapfile): New function.
	(Output_data_dynamic::do_print_to_mapfile): New function.
	(Output_symtab_xindex::do_print_to_mapfile): New function.
	(class Output_section): Declare do_print_to_mapflie.  Declare
	print_to_mapfile in Input_section.
	(class Output_segment): Declare new functions.
	* object.h (Sized_relobj::symbol_count): New function.
	* script-sections.cc
	(Output_section_element_dot_assignment::set_section_addresses):
	Change Output_data_fixed_space to Output_data_zero_fill.
	(Output_data_expression::do_print_to_mapfile): New function.
	* script.cc (read_input_script): Add mapfile parameter.  Change
	all callers.
	* script.h (read_input_script): Update declaration.
	* ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
	(Eh_frame::do_print_to_mapfile): New function.
	* merge.h (Output_merge_data::do_print_to_mapfile): New function.
	(Output_merge_string::do_print_to_mapfile): New function.
	* i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
	function.
	* sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
	function.
	* x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
	function.
	* Makefile.am (CCFILES): Add mapfile.cc.
	(HFILES): Add mapfile.h.
	* Makefile.in: Rebuild.
2008-05-21 21:37:44 +00:00

222 lines
4.9 KiB
Makefile

# Process this file with automake to generate Makefile.in
AUTOMAKE_OPTIONS =
SUBDIRS = po testsuite
tooldir = $(exec_prefix)/$(target_alias)
ACLOCAL_AMFLAGS = -I ../bfd -I ../config
AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS)
AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS)
INCLUDES = \
-I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../elfcpp \
-DLOCALEDIR="\"$(datadir)/locale\"" \
-DBINDIR="\"$(bindir)\"" -DTOOLBINDIR="\"$(tooldir)/bin\"" \
@INCINTL@
LIBIBERTY = ../libiberty/libiberty.a
if THREADS
THREADSLIB = -lpthread
endif
AM_YFLAGS = -d
noinst_PROGRAMS = ld-new
noinst_LIBRARIES = libgold.a
CCFILES = \
archive.cc \
binary.cc \
common.cc \
compressed_output.cc \
copy-relocs.cc \
defstd.cc \
dirsearch.cc \
dynobj.cc \
dwarf_reader.cc \
ehframe.cc \
errors.cc \
expression.cc \
fileread.cc \
gold.cc \
gold-threads.cc \
layout.cc \
mapfile.cc \
merge.cc \
object.cc \
options.cc \
output.cc \
parameters.cc \
readsyms.cc \
reloc.cc \
resolve.cc \
script-sections.cc \
script.cc \
stringpool.cc \
symtab.cc \
target-select.cc \
version.cc \
workqueue.cc \
workqueue-threads.cc
HFILES = \
archive.h \
binary.h \
common.h \
compressed_output.h \
copy-relocs.h \
defstd.h \
dirsearch.h \
dynobj.h \
dwarf_reader.h \
ehframe.h \
errors.h \
fileread.h \
gold.h \
gold-threads.h \
layout.h \
mapfile.h \
merge.h \
object.h \
options.h \
output.h \
parameters.h \
readsyms.h \
reloc.h \
reloc-types.h \
script-c.h \
script-sections.h \
script.h \
stringpool.h \
symtab.h \
target.h \
target-reloc.h \
target-select.h \
tls.h \
token.h \
workqueue.h \
workqueue-internal.h
YFILES = \
yyscript.y
EXTRA_DIST = yyscript.c yyscript.h
TARGETSOURCES = \
i386.cc x86_64.cc sparc.cc
ALL_TARGETOBJS = \
i386.$(OBJEXT) x86_64.$(OBJEXT) sparc.$(OBJEXT)
libgold_a_SOURCES = $(CCFILES) $(HFILES) $(YFILES)
sources_var = main.cc
deps_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
ldadd_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL) $(THREADSLIB)
ld_new_SOURCES = $(sources_var)
ld_new_DEPENDENCIES = $(deps_var) $(LIBOBJS)
ld_new_LDADD = $(ldadd_var) $(LIBOBJS)
EXTRA_ld_new_SOURCES = $(TARGETSOURCES)
# Use an explicit dependency for the bison generated header file.
expression.$(OBJEXT): yyscript.h
script-sections.$(OBJEXT): yyscript.h
script.$(OBJEXT): yyscript.h
# We have to build libgold.a before we run the tests.
check: libgold.a
.PHONY: install-exec-local
install-exec-local: ld-new$(EXEEXT)
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin
n=`echo ld | sed '$(transform)'`; \
$(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \
if test "$(bindir)" != "$(tooldir)/bin"; then \
rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \
|| $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
fi
# We want install to imply install-info as per GNU standards, despite
# the cygnus option.
install-data-local: install-info
POTFILES= $(CCFILES) $(HFILES) $(TARGETSOURCES)
po/POTFILES.in: @MAINT@ Makefile
for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
&& mv tmp $(srcdir)/po/POTFILES.in
# Bootstrap test support. We use ld-new to build ld1, then use ld1 to
# build ld2. ld1 and ld2 should be identical. ld-new need not be
# identical to ld1, since it was linked with the host linker.
if GCC
if NATIVE_LINKER
gcctestdir1/ld: ld-new
test -d gcctestdir1 || mkdir -p gcctestdir1
rm -f gcctestdir1/ld
(cd gcctestdir1 && $(LN_S) ../ld-new ld)
ld1_SOURCES = $(sources_var)
ld1_DEPENDENCIES = $(deps_var) gcctestdir1/ld
ld1_LDADD = $(ldadd_var)
ld1_LDFLAGS = -Bgcctestdir1/
gcctestdir2/ld: ld1
test -d gcctestdir2 || mkdir -p gcctestdir2
rm -f gcctestdir2/ld
(cd gcctestdir2 && $(LN_S) ../ld1 ld)
ld2_SOURCES = $(sources_var)
ld2_DEPENDENCIES = $(deps_var) gcctestdir2/ld
ld2_LDADD = $(ldadd_var)
ld2_LDFLAGS = -Bgcctestdir2/
bootstrap-test: ld2
rm -f $@
echo "#!/bin/sh" > $@
echo "cmp ld1 ld2" > $@
chmod +x $@
libgold-1-r.o: gcctestdir1/ld libgold.a
gcctestdir1/ld -o $@ -r --whole-archive libgold.a
ld1_r_SOURCES = $(sources_var)
ld1_r_DEPENDENCIES = libgold-1-r.o $(deps_var) gcctestdir1/ld
ld1_r_LDADD = libgold-1-r.o $(ldadd_var)
ld1_r_LDFLAGS = -Bgcctestdir1/
gcctestdir2-r/ld: ld1-r
test -d gcctestdir2-r || mkdir -p gcctestdir2-r
rm -f gcctestdir2-r/ld
(cd gcctestdir2-r && $(LN_S) ../ld1-r ld)
libgold-2-r.o: gcctestdir2-r/ld libgold.a
gcctestdir2-r/ld -o $@ -r --whole-archive libgold.a
ld2_r_SOURCES = $(sources_var)
ld2_r_DEPENDENCIES = libgold-2-r.o $(deps_var) gcctestdir2-r/ld
ld2_r_LDADD = libgold-2-r.o $(ldadd_var)
ld2_r_LDFLAGS = -Bgcctestdir2-r/
bootstrap-test-r: ld2-r
rm -f $@
echo "#!/bin/sh" > $@
echo "cmp ld1-r ld2-r" > $@
chmod +x $@
check_PROGRAMS = ld1 ld2 ld1-r ld2-r
TESTS = bootstrap-test bootstrap-test-r
endif
endif