mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
7d9e3d9854
* 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.
222 lines
4.9 KiB
Makefile
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
|