1996-10-26 17:37:57 +02:00
|
|
|
|
/* Collect static initialization info into data structures that can be
|
|
|
|
|
traversed by C++ initialization and finalization routines.
|
2000-02-26 06:54:31 +01:00
|
|
|
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
2003-02-02 02:31:40 +01:00
|
|
|
|
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
1992-02-06 23:06:40 +01:00
|
|
|
|
Contributed by Chris Smith (csmith@convex.com).
|
1995-02-23 02:28:17 +01:00
|
|
|
|
Heavily modified by Michael Meissner (meissner@cygnus.com),
|
1992-02-06 23:06:40 +01:00
|
|
|
|
Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
|
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
This file is part of GCC.
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
GCC 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 2, or (at your option) any later
|
|
|
|
|
version.
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
GCC 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.
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
|
|
|
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
|
|
|
02111-1307, USA. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Build tables of static constructors and destructors and run ld. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-20 13:16:51 +02:00
|
|
|
|
#include "config.h"
|
Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
on system.h.
* alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
xcoffout.c: Include system.h. Organize include ordering so
that stdarg/varargs comes before other system headers. Remove
spurious casts of functions assured of a prototype in system.h.
From-SVN: r18726
1998-03-20 15:58:42 +01:00
|
|
|
|
#include "system.h"
|
2002-12-16 19:23:00 +01:00
|
|
|
|
#include "coretypes.h"
|
|
|
|
|
#include "tm.h"
|
1992-02-06 23:06:40 +01:00
|
|
|
|
#include <signal.h>
|
2001-03-16 01:58:40 +01:00
|
|
|
|
#if ! defined( SIGCHLD ) && defined( SIGCLD )
|
|
|
|
|
# define SIGCHLD SIGCLD
|
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
2001-08-01 19:57:27 +02:00
|
|
|
|
#ifdef vfork /* Autoconf may define this to fork for us. */
|
1998-11-02 08:20:48 +01:00
|
|
|
|
# define VFORK_STRING "fork"
|
|
|
|
|
#else
|
|
|
|
|
# define VFORK_STRING "vfork"
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef HAVE_VFORK_H
|
|
|
|
|
#include <vfork.h>
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef VMS
|
|
|
|
|
#define vfork() (decc$$alloc_vfork_blocks() >= 0 ? \
|
|
|
|
|
lib$get_current_invo_context(decc$$get_vfork_jmpbuf()) : -1)
|
|
|
|
|
#endif /* VMS */
|
|
|
|
|
|
configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* i386/t-beos, i386/x-beos, i386/xm-beos.h: New files.
* i386/beos-elf.h, i386/beos-pe.h: New files.
* Makefile.in (CROSS_SYSTEM_HEADER_DIR): New.
* cross-make (SYSTEM_HEADER_DIR): Define using
CROSS_SYSTEM_HEADER_DIR.
* gcc.c (LIBRARY_PATH_ENV): Provide default.
(process_command): Use it.
(main): Likewise. Kill trailing = from env vars.
(build_search_list): Put it back.
* collect2.c (main): Use LIBRARY_PATH_ENV.
* configure.in (GCC_NEED_DECLARATIONS): Add environ.
* toplev.c: Use NEED_DECLARATION_ENVIRON.
* tm.texi (Frame Layout): Document SMALL_STACK.
* c-common.c (c_common_nodes_and_builtins): Check it.
* system.h: Undef alloca after including glibc's <stdlib.h>,
if USE_C_ALLOCA is defined.
* gcc.c (set_input): New fn.
(main): After all input files are compiled, reset the input file
info to the first.
* aclocal.m4 (rindex, index): If already defined, don't attempt
to redefine.
* ginclude/varargs.h: (__va_list__): Define ifndef.
* ginclude/stdarg.h: Likewise.
* ginclude/stddef.h (__WCHAR_TYPE__) [BEOS]: Use int
instead of unsigned char.
* hash.h (true, false, boolean): Undef before enum.
From-SVN: r31366
2000-01-13 01:37:06 +01:00
|
|
|
|
#ifndef LIBRARY_PATH_ENV
|
|
|
|
|
#define LIBRARY_PATH_ENV "LIBRARY_PATH"
|
|
|
|
|
#endif
|
|
|
|
|
|
1995-05-20 13:16:51 +02:00
|
|
|
|
#define COLLECT
|
|
|
|
|
|
1998-12-10 11:48:27 +01:00
|
|
|
|
#include "collect2.h"
|
1995-05-20 13:16:51 +02:00
|
|
|
|
#include "demangle.h"
|
|
|
|
|
#include "obstack.h"
|
1999-01-27 02:43:17 +01:00
|
|
|
|
#include "intl.h"
|
Makefile.in (TREE_H, [...]): Depend on version.h.
* Makefile.in (TREE_H, collect2.o, gcc.h, mips-tfile.o, cccp.o,
cpphash.o, cppinit.o, protoize.o, unprotoize.o): Depend on version.h.
* cccp.c: Include version.h and/or don't declare `version_string'.
* collect2.c: Likewise.
* alpha.c: Likewise.
* arm/aof.h: Likewise.
* arm/coff.h: Likewise.
* arm/elf.h: Likewise.
* arm/pe.h: Likewise.
* arm/tcoff.h: Likewise.
* arm/telf.h: Likewise.
* arm/tpe.h: Likewise.
* arm/vxarm.h: Likewise.
* convex/convex.c: Likewise.
* i386/dgux.c: Likewise.
* i386/sun386.h: Likewise.
* m88k/m88k.c: Likewise.
* mcore/mcore-pe.h: Likewise.
* mips/mips.h: Likewise.
* romp/romp.h: Likewise.
* sh/sh.c: Likewise.
* cpphash.c: Likewise.
* cppinit.c: Likewise.
* dwarf2out.c: Likewise.
* dwarfout.c: Likewise.
* gcc.c: Likewise.
* gcc.h: Likewise.
* mips-tfile.c: Likewise.
* protoize.c: Likewise.
* toplev.c: Likewise.
* tree.h: Likewise.
* version.c (version_string): Constify a char*.
* version.h: New file.
ch:
* grant.c: Don't declare `version_string'.
f:
* g77spec.c: Don't declare `version_string'.
java:
* Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
version.o.
(jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
* gjavah.c: Include version.h.
* jcf-dump.c: Likewise.
* jv-scan.c: Likewise.
From-SVN: r31984
2000-02-15 17:36:35 +01:00
|
|
|
|
#include "version.h"
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
|
|
|
|
/* On certain systems, we have code that works by scanning the object file
|
|
|
|
|
directly. But this code uses system-specific header files and library
|
1993-01-02 09:32:09 +01:00
|
|
|
|
functions, so turn it off in a cross-compiler. Likewise, the names of
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
the utilities are not correct for a cross-compiler; we have to hope that
|
1993-01-02 09:32:09 +01:00
|
|
|
|
cross-versions are in the proper directories. */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
|
|
|
|
#ifdef CROSS_COMPILE
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#undef SUNOS4_SHARED_LIBRARIES
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#undef OBJECT_FORMAT_COFF
|
1993-01-02 09:32:09 +01:00
|
|
|
|
#undef MD_EXEC_PREFIX
|
|
|
|
|
#undef REAL_LD_FILE_NAME
|
|
|
|
|
#undef REAL_NM_FILE_NAME
|
|
|
|
|
#undef REAL_STRIP_FILE_NAME
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* If we cannot use a special method, use the ordinary one:
|
1992-03-19 23:07:22 +01:00
|
|
|
|
run nm to find what symbols are present.
|
|
|
|
|
In a cross-compiler, this means you need a cross nm,
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
but that is not quite as unpleasant as special headers. */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
2003-06-29 20:34:38 +02:00
|
|
|
|
#if !defined (OBJECT_FORMAT_COFF)
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#define OBJECT_FORMAT_NONE
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef OBJECT_FORMAT_COFF
|
|
|
|
|
|
|
|
|
|
#include <a.out.h>
|
|
|
|
|
#include <ar.h>
|
|
|
|
|
|
|
|
|
|
#ifdef UMAX
|
|
|
|
|
#include <sgs.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
1992-11-23 23:46:14 +01:00
|
|
|
|
/* Many versions of ldfcn.h define these. */
|
|
|
|
|
#ifdef FREAD
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#undef FREAD
|
|
|
|
|
#undef FWRITE
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include <ldfcn.h>
|
|
|
|
|
|
1993-01-27 12:46:40 +01:00
|
|
|
|
/* Some systems have an ISCOFF macro, but others do not. In some cases
|
|
|
|
|
the macro may be wrong. MY_ISCOFF is defined in tm.h files for machines
|
2003-06-29 14:07:06 +02:00
|
|
|
|
that either do not have an ISCOFF macro in /usr/include or for those
|
1993-01-27 12:46:40 +01:00
|
|
|
|
where it is wrong. */
|
|
|
|
|
|
1992-06-30 06:05:47 +02:00
|
|
|
|
#ifndef MY_ISCOFF
|
|
|
|
|
#define MY_ISCOFF(X) ISCOFF (X)
|
|
|
|
|
#endif
|
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#endif /* OBJECT_FORMAT_COFF */
|
|
|
|
|
|
|
|
|
|
#ifdef OBJECT_FORMAT_NONE
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
/* Default flags to pass to nm. */
|
|
|
|
|
#ifndef NM_FLAGS
|
1998-08-13 19:29:30 +02:00
|
|
|
|
#define NM_FLAGS "-n"
|
1992-02-06 23:06:40 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#endif /* OBJECT_FORMAT_NONE */
|
1993-07-26 22:58:04 +02:00
|
|
|
|
|
|
|
|
|
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
|
|
|
|
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
2002-07-25 20:57:31 +02:00
|
|
|
|
give the same symbol without quotes for an alternative entry point. */
|
1993-07-26 22:58:04 +02:00
|
|
|
|
#ifndef NAME__MAIN
|
|
|
|
|
#define NAME__MAIN "__main"
|
|
|
|
|
#endif
|
|
|
|
|
|
1998-10-12 22:08:10 +02:00
|
|
|
|
/* This must match tree.h. */
|
|
|
|
|
#define DEFAULT_INIT_PRIORITY 65535
|
|
|
|
|
|
2001-12-13 15:24:03 +01:00
|
|
|
|
#ifndef COLLECT_SHARED_INIT_FUNC
|
|
|
|
|
#define COLLECT_SHARED_INIT_FUNC(STREAM, FUNC) \
|
|
|
|
|
fprintf ((STREAM), "void _GLOBAL__DI() {\n\t%s();\n}\n", (FUNC))
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef COLLECT_SHARED_FINI_FUNC
|
|
|
|
|
#define COLLECT_SHARED_FINI_FUNC(STREAM, FUNC) \
|
|
|
|
|
fprintf ((STREAM), "void _GLOBAL__DD() {\n\t%s();\n}\n", (FUNC))
|
|
|
|
|
#endif
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#if defined (LDD_SUFFIX) || SUNOS4_SHARED_LIBRARIES
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#define SCAN_LIBRARIES
|
|
|
|
|
#endif
|
1995-05-04 23:25:31 +02:00
|
|
|
|
|
|
|
|
|
#ifdef USE_COLLECT2
|
|
|
|
|
int do_collecting = 1;
|
|
|
|
|
#else
|
|
|
|
|
int do_collecting = 0;
|
|
|
|
|
#endif
|
2001-07-10 17:39:29 +02:00
|
|
|
|
|
|
|
|
|
/* Nonzero if we should suppress the automatic demangling of identifiers
|
|
|
|
|
in linker error messages. Set from COLLECT_NO_DEMANGLE. */
|
|
|
|
|
int no_demangle;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Linked lists of constructor and destructor names. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
2003-06-29 14:07:06 +02:00
|
|
|
|
struct id
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
struct id *next;
|
|
|
|
|
int sequence;
|
|
|
|
|
char name[1];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct head
|
|
|
|
|
{
|
|
|
|
|
struct id *first;
|
|
|
|
|
struct id *last;
|
|
|
|
|
int number;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Enumeration giving which pass this is for scanning the program file. */
|
|
|
|
|
|
|
|
|
|
enum pass {
|
|
|
|
|
PASS_FIRST, /* without constructors */
|
1995-05-09 12:21:13 +02:00
|
|
|
|
PASS_OBJ, /* individual objects */
|
1994-11-19 05:09:58 +01:00
|
|
|
|
PASS_LIB, /* looking for shared libraries */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
PASS_SECOND /* with constructors linked in */
|
|
|
|
|
};
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
int vflag; /* true if -v */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
static int rflag; /* true if -r */
|
1992-04-27 18:50:26 +02:00
|
|
|
|
static int strip_flag; /* true if -s */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
static int export_flag; /* true if -bE */
|
1998-10-27 14:23:17 +01:00
|
|
|
|
static int aix64_flag; /* true if -b64 */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
int debug; /* true if -debug */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
static int shared_obj; /* true if -shared */
|
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char *c_file; /* <xxx>.c for constructor/destructor list. */
|
|
|
|
|
static const char *o_file; /* <xxx>.o for constructor/destructor list. */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char *export_file; /* <xxx>.x for AIX export list. */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *ldout; /* File for ld errors. */
|
|
|
|
|
static const char *output_file; /* Output file for ld. */
|
|
|
|
|
static const char *nm_file_name; /* pathname of nm */
|
1998-02-23 09:58:16 +01:00
|
|
|
|
#ifdef LDD_SUFFIX
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char *ldd_file_name; /* pathname of ldd (or equivalent) */
|
1998-02-23 09:58:16 +01:00
|
|
|
|
#endif
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char *strip_file_name; /* pathname of strip */
|
|
|
|
|
const char *c_file_name; /* pathname of gcc */
|
1995-05-09 12:21:13 +02:00
|
|
|
|
static char *initname, *fininame; /* names of init and fini funcs */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
static struct head constructors; /* list of constructors found */
|
|
|
|
|
static struct head destructors; /* list of destructors found */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1995-05-09 12:21:13 +02:00
|
|
|
|
static struct head exports; /* list of exported symbols */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
1997-09-10 20:00:28 +02:00
|
|
|
|
static struct head frame_tables; /* list of frame unwind info tables */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
struct obstack temporary_obstack;
|
|
|
|
|
char * temporary_firstobj;
|
|
|
|
|
|
2003-02-02 02:31:40 +01:00
|
|
|
|
/* Holds the return value of pexecute and fork. */
|
|
|
|
|
int pid;
|
1999-03-25 00:35:34 +01:00
|
|
|
|
|
1993-10-02 19:07:37 +01:00
|
|
|
|
/* Structure to hold all the directories in which to search for files to
|
|
|
|
|
execute. */
|
|
|
|
|
|
|
|
|
|
struct prefix_list
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *prefix; /* String to prepend to the path. */
|
1996-07-04 00:07:53 +02:00
|
|
|
|
struct prefix_list *next; /* Next in linked list. */
|
1993-10-02 19:07:37 +01:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct path_prefix
|
|
|
|
|
{
|
|
|
|
|
struct prefix_list *plist; /* List of prefixes to try */
|
|
|
|
|
int max_len; /* Max length of a prefix in PLIST */
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *name; /* Name of this list (used in config stuff) */
|
1993-10-02 19:07:37 +01:00
|
|
|
|
};
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
2001-08-01 19:57:27 +02:00
|
|
|
|
/* Lists to keep libraries to be scanned for global constructors/destructors. */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
static struct head libs; /* list of libraries */
|
|
|
|
|
static struct path_prefix cmdline_lib_dirs; /* directories specified with -L */
|
|
|
|
|
static struct path_prefix libpath_lib_dirs; /* directories in LIBPATH */
|
|
|
|
|
static struct path_prefix *libpaths[3] = {&cmdline_lib_dirs,
|
|
|
|
|
&libpath_lib_dirs, NULL};
|
ChangeLog.2, [...]: Fix spelling errors.
* ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog.5, ChangeLog,
cfg.c, cfganal.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgrtl.c,
collect2.c, combine.c, config.in, configure, configure.in,
conflict.c, dwarf2out.c, dwarfout.c, except.c, final.c, flow.c,
genattrtab.c, ggc-page.c, jump.c, lcm.c, predict.c, reg-stack.c,
reload1.c, rtlanal.c, sched-rgn.c, toplev.c, unwind-dw2-fde.h: Fix
spelling errors.
From-SVN: r46928
2001-11-11 12:25:28 +01:00
|
|
|
|
static const char *const libexts[3] = {"a", "so", NULL}; /* possible library extensions */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void handler (int);
|
|
|
|
|
static int is_ctor_dtor (const char *);
|
|
|
|
|
static char *find_a_file (struct path_prefix *, const char *);
|
|
|
|
|
static void add_prefix (struct path_prefix *, const char *);
|
|
|
|
|
static void prefix_from_env (const char *, struct path_prefix *);
|
|
|
|
|
static void prefix_from_string (const char *, struct path_prefix *);
|
|
|
|
|
static void do_wait (const char *);
|
|
|
|
|
static void fork_execute (const char *, char **);
|
|
|
|
|
static void maybe_unlink (const char *);
|
|
|
|
|
static void add_to_list (struct head *, const char *);
|
|
|
|
|
static int extract_init_priority (const char *);
|
|
|
|
|
static void sort_ids (struct head *);
|
|
|
|
|
static void write_list (FILE *, const char *, struct id *);
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void dump_list (FILE *, const char *, struct id *);
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#endif
|
|
|
|
|
#if 0
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void dump_prefix_list (FILE *, const char *, struct prefix_list *);
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
#endif
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void write_list_with_asm (FILE *, const char *, struct id *);
|
|
|
|
|
static void write_c_file (FILE *, const char *);
|
|
|
|
|
static void write_c_file_stat (FILE *, const char *);
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
#ifndef LD_INIT_SWITCH
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void write_c_file_glob (FILE *, const char *);
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#endif
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void scan_prog_file (const char *, enum pass);
|
1997-12-20 12:31:54 +01:00
|
|
|
|
#ifdef SCAN_LIBRARIES
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void scan_libraries (const char *);
|
1997-12-20 12:31:54 +01:00
|
|
|
|
#endif
|
2001-04-27 21:59:53 +02:00
|
|
|
|
#if LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static int is_in_args (const char *, const char **, const char **);
|
2001-04-27 21:59:53 +02:00
|
|
|
|
#endif
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
2001-11-04 03:47:36 +01:00
|
|
|
|
#if 0
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static int is_in_list (const char *, struct id *);
|
2001-11-04 03:47:36 +01:00
|
|
|
|
#endif
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void write_aix_file (FILE *, struct id *);
|
|
|
|
|
static char *resolve_lib_name (const char *);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static char *extract_string (const char **);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
2001-11-27 16:36:24 +01:00
|
|
|
|
#ifndef HAVE_DUP2
|
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
dup2 (int oldfd, int newfd)
|
1992-07-28 04:18:03 +02:00
|
|
|
|
{
|
|
|
|
|
int fdtmp[256];
|
|
|
|
|
int fdx = 0;
|
|
|
|
|
int fd;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1992-07-28 04:18:03 +02:00
|
|
|
|
if (oldfd == newfd)
|
1994-03-10 21:23:01 +01:00
|
|
|
|
return oldfd;
|
1992-07-28 04:18:03 +02:00
|
|
|
|
close (newfd);
|
1994-03-10 21:23:01 +01:00
|
|
|
|
while ((fd = dup (oldfd)) != newfd && fd >= 0) /* good enough for low fd's */
|
1992-07-28 04:18:03 +02:00
|
|
|
|
fdtmp[fdx++] = fd;
|
|
|
|
|
while (fdx > 0)
|
|
|
|
|
close (fdtmp[--fdx]);
|
1993-10-02 19:07:37 +01:00
|
|
|
|
|
1994-03-10 21:23:01 +01:00
|
|
|
|
return fd;
|
1992-07-28 04:18:03 +02:00
|
|
|
|
}
|
2001-11-27 16:36:24 +01:00
|
|
|
|
#endif /* ! HAVE_DUP2 */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
/* Delete tempfiles and exit function. */
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
collect_exit (int status)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1992-03-19 23:07:22 +01:00
|
|
|
|
if (c_file != 0 && c_file[0])
|
1992-02-06 23:06:40 +01:00
|
|
|
|
maybe_unlink (c_file);
|
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
if (o_file != 0 && o_file[0])
|
1992-02-06 23:06:40 +01:00
|
|
|
|
maybe_unlink (o_file);
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1995-05-09 12:21:13 +02:00
|
|
|
|
if (export_file != 0 && export_file[0])
|
|
|
|
|
maybe_unlink (export_file);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
if (ldout != 0 && ldout[0])
|
|
|
|
|
{
|
|
|
|
|
dump_file (ldout);
|
|
|
|
|
maybe_unlink (ldout);
|
|
|
|
|
}
|
|
|
|
|
|
1993-03-18 22:17:20 +01:00
|
|
|
|
if (status != 0 && output_file != 0 && output_file[0])
|
|
|
|
|
maybe_unlink (output_file);
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
exit (status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1999-01-27 02:43:17 +01:00
|
|
|
|
/* Notify user of a non-error. */
|
|
|
|
|
void
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
notice (const char *msgid, ...)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
{
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_list ap;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_start (ap, msgid);
|
1999-01-27 02:43:17 +01:00
|
|
|
|
vfprintf (stderr, _(msgid), ap);
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_end (ap);
|
1999-01-27 02:43:17 +01:00
|
|
|
|
}
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Die when sys call fails. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
void
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
fatal_perror (const char * msgid, ...)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
int e = errno;
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_list ap;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_start (ap, msgid);
|
1993-07-04 20:02:51 +02:00
|
|
|
|
fprintf (stderr, "collect2: ");
|
1999-01-27 02:43:17 +01:00
|
|
|
|
vfprintf (stderr, _(msgid), ap);
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
fprintf (stderr, ": %s\n", xstrerror (e));
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_end (ap);
|
1998-10-14 11:02:55 +02:00
|
|
|
|
|
1997-04-13 20:19:48 +02:00
|
|
|
|
collect_exit (FATAL_EXIT_CODE);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Just die. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
void
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
fatal (const char * msgid, ...)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_list ap;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_start (ap, msgid);
|
1993-07-04 20:02:51 +02:00
|
|
|
|
fprintf (stderr, "collect2: ");
|
1999-01-27 02:43:17 +01:00
|
|
|
|
vfprintf (stderr, _(msgid), ap);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stderr, "\n");
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_end (ap);
|
1998-10-14 11:02:55 +02:00
|
|
|
|
|
1997-04-13 20:19:48 +02:00
|
|
|
|
collect_exit (FATAL_EXIT_CODE);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Write error message. */
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
void
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
error (const char * msgid, ...)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_list ap;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_start (ap, msgid);
|
1993-07-04 20:02:51 +02:00
|
|
|
|
fprintf (stderr, "collect2: ");
|
1999-01-27 02:43:17 +01:00
|
|
|
|
vfprintf (stderr, _(msgid), ap);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stderr, "\n");
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_end(ap);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* In case obstack is linked in, and abort is defined to fancy_abort,
|
|
|
|
|
provide a default entry. */
|
|
|
|
|
|
|
|
|
|
void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
fancy_abort (void)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
fatal ("internal error");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
handler (int signo)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1993-08-05 06:06:59 +02:00
|
|
|
|
if (c_file != 0 && c_file[0])
|
1992-02-06 23:06:40 +01:00
|
|
|
|
maybe_unlink (c_file);
|
|
|
|
|
|
1993-08-05 06:06:59 +02:00
|
|
|
|
if (o_file != 0 && o_file[0])
|
1992-02-06 23:06:40 +01:00
|
|
|
|
maybe_unlink (o_file);
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
if (ldout != 0 && ldout[0])
|
|
|
|
|
maybe_unlink (ldout);
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1996-04-24 23:46:55 +02:00
|
|
|
|
if (export_file != 0 && export_file[0])
|
|
|
|
|
maybe_unlink (export_file);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
signal (signo, SIG_DFL);
|
|
|
|
|
kill (getpid (), signo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
file_exists (const char *name)
|
1995-05-04 23:25:31 +02:00
|
|
|
|
{
|
|
|
|
|
return access (name, R_OK) == 0;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
1997-06-11 00:23:32 +02:00
|
|
|
|
/* Parse a reasonable subset of shell quoting syntax. */
|
|
|
|
|
|
|
|
|
|
static char *
|
2003-06-29 14:07:06 +02:00
|
|
|
|
extract_string (const char **pp)
|
1997-06-11 00:23:32 +02:00
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *p = *pp;
|
1997-06-11 00:23:32 +02:00
|
|
|
|
int backquote = 0;
|
|
|
|
|
int inside = 0;
|
|
|
|
|
|
|
|
|
|
for (;;)
|
|
|
|
|
{
|
|
|
|
|
char c = *p;
|
|
|
|
|
if (c == '\0')
|
|
|
|
|
break;
|
|
|
|
|
++p;
|
|
|
|
|
if (backquote)
|
|
|
|
|
obstack_1grow (&temporary_obstack, c);
|
|
|
|
|
else if (! inside && c == ' ')
|
|
|
|
|
break;
|
|
|
|
|
else if (! inside && c == '\\')
|
|
|
|
|
backquote = 1;
|
|
|
|
|
else if (c == '\'')
|
|
|
|
|
inside = !inside;
|
|
|
|
|
else
|
|
|
|
|
obstack_1grow (&temporary_obstack, c);
|
|
|
|
|
}
|
|
|
|
|
|
1997-06-17 05:45:20 +02:00
|
|
|
|
obstack_1grow (&temporary_obstack, '\0');
|
1997-06-11 00:23:32 +02:00
|
|
|
|
*pp = p;
|
|
|
|
|
return obstack_finish (&temporary_obstack);
|
|
|
|
|
}
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
dump_file (const char *name)
|
1995-05-04 23:25:31 +02:00
|
|
|
|
{
|
|
|
|
|
FILE *stream = fopen (name, "r");
|
|
|
|
|
|
|
|
|
|
if (stream == 0)
|
|
|
|
|
return;
|
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
int c;
|
|
|
|
|
while (c = getc (stream),
|
c-format.c (maybe_read_dollar_number): Use safe-ctype macros and/or fold extra calls into fewer ones.
* c-format.c (maybe_read_dollar_number): Use safe-ctype macros
and/or fold extra calls into fewer ones.
* collect2.c (dump_file): Likewise.
* cppexp.c (parse_number): Likewise.
* cpplex.c (_cpp_lex_direct): Likewise.
* final.c (output_asm_insn, asm_fprintf): Likewise.
* fix-header.c (inf_scan_ident, main): Likewise.
* fixinc/fixfixes.c (char_macro_use_fix, char_macro_def_fix):
Likewise.
* fold-const.c (real_hex_to_f): Likewise.
* gen-protos.c (parse_fn_proto): Likewise.
* genattrtab.c (check_attr_test, check_attr_value): Likewise.
* genrecog.c (change_state, write_action): Likewise.
* gensupport.c (shift_output_template): Likewise.
* local-alloc.c (requires_inout): Likewise.
* mips-tfile.c (IS_ASM_IDENT): Likewise.
* protoize.c (is_id_char, main): Likewise.
* real.c (asctoeg): Likewise.
* recog.c (asm_operand_ok): Likewise.
* reload.c (find_reloads): Likewise.
* scan.c (scan_identget_token): Likewise.
* sched-vis.c (print_value): Likewise.
* stringpool.c (ggc_alloc_string): Likewise.
* toplev.c (read_integral_parameter, decode_g_option): Likewise.
* tradcif.y (parse_number, yylex, parse_escape): Likewise.
* tradcpp.c (rescan): Likewise.
* tree.c (clean_symbol_name): Likewise.
* varasm.c (decode_reg_name): Likewise.
* alpha.h (ASM_OUTPUT_ASCII): Likewise.
* darwin.c (name_needs_quotes, func_name_maybe_scoped): Likewise.
* dsp16xx.h (ASM_OUTPUT_ASCII): Likewise.
* m88k.c (output_ascii): Likewise.
* m88k.h (OVERRIDE_OPTIONS): Likewise.
* mcore.h (REG_CLASS_FROM_LETTER): Likewise.
* ns32k/encore.h (ASM_OUTPUT_ASCII): Likewise.
* sh.h (REG_CLASS_FROM_LETTER): Likewise.
cp:
* xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
extra calls into fewer ones.
f:
* bad.c (ffebad_finish): Use safe-ctype macros and/or fold extra
calls into fewer ones.
* implic.c (ffeimplic_lookup_): Likewise.
* intdoc.c (dumpimp): Likewise.
* intrin.c (ffeintrin_init_0): Likewise.
* lex.c (ffelex_backslash_, ffelex_cfebackslash_, ffelex_hash_):
Likewise.
* lex.h (ffelex_is_firstnamechar): Likewise.
* target.c (ffetarget_integerhex): Likewise.
java:
* gjavah.c (jni_print_char, decode_signature_piece): Use
safe-ctype macros and/or fold extra calls into fewer ones.
* lex.c (java_read_unicode, java_lex): Likewise.
* lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
* mangle_name.c (append_unicode_mangled_name,
unicode_mangling_length): Likewise.
From-SVN: r46397
2001-10-21 23:32:15 +02:00
|
|
|
|
c != EOF && (ISIDNUM (c) || c == '$' || c == '.'))
|
1995-05-04 23:25:31 +02:00
|
|
|
|
obstack_1grow (&temporary_obstack, c);
|
|
|
|
|
if (obstack_object_size (&temporary_obstack) > 0)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *word, *p;
|
|
|
|
|
char *result;
|
1995-05-04 23:25:31 +02:00
|
|
|
|
obstack_1grow (&temporary_obstack, '\0');
|
|
|
|
|
word = obstack_finish (&temporary_obstack);
|
|
|
|
|
|
|
|
|
|
if (*word == '.')
|
|
|
|
|
++word, putc ('.', stderr);
|
|
|
|
|
p = word;
|
2002-09-11 21:58:02 +02:00
|
|
|
|
if (!strncmp (p, USER_LABEL_PREFIX, strlen (USER_LABEL_PREFIX)))
|
|
|
|
|
p += strlen (USER_LABEL_PREFIX);
|
1995-05-04 23:25:31 +02:00
|
|
|
|
|
|
|
|
|
if (no_demangle)
|
|
|
|
|
result = 0;
|
|
|
|
|
else
|
2002-02-05 17:33:31 +01:00
|
|
|
|
result = cplus_demangle (p, DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE);
|
1995-05-04 23:25:31 +02:00
|
|
|
|
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
int diff;
|
|
|
|
|
fputs (result, stderr);
|
|
|
|
|
|
|
|
|
|
diff = strlen (word) - strlen (result);
|
2001-07-10 17:39:29 +02:00
|
|
|
|
while (diff > 0 && c == ' ')
|
1995-05-04 23:25:31 +02:00
|
|
|
|
--diff, putc (' ', stderr);
|
|
|
|
|
while (diff < 0 && c == ' ')
|
|
|
|
|
++diff, c = getc (stream);
|
|
|
|
|
|
|
|
|
|
free (result);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
fputs (word, stderr);
|
|
|
|
|
|
|
|
|
|
fflush (stderr);
|
|
|
|
|
obstack_free (&temporary_obstack, temporary_firstobj);
|
|
|
|
|
}
|
|
|
|
|
if (c == EOF)
|
|
|
|
|
break;
|
|
|
|
|
putc (c, stderr);
|
|
|
|
|
}
|
1996-10-26 17:37:57 +02:00
|
|
|
|
fclose (stream);
|
1995-05-04 23:25:31 +02:00
|
|
|
|
}
|
|
|
|
|
|
2000-02-14 20:46:02 +01:00
|
|
|
|
/* Decide whether the given symbol is: a constructor (1), a destructor
|
|
|
|
|
(2), a routine in a shared object that calls all the constructors
|
|
|
|
|
(3) or destructors (4), a DWARF exception-handling table (5), or
|
|
|
|
|
nothing special (0). */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
is_ctor_dtor (const char *s)
|
1992-03-19 23:07:22 +01:00
|
|
|
|
{
|
builtins.c (expand_builtin_setjmp_receiver): Const-ify.
* builtins.c (expand_builtin_setjmp_receiver): Const-ify.
* c-common.c (fname_var_t, c_tree_code_type, c_tree_code_length):
Likewise.
* c-dump.c (dump_option_value_info): Likewise.
* c-format.c (format_length_info, format_char_info,
format_flag_spec, format_flag_pair, format_kind_info): Likewise.
* collect2.c (names): Likewise.
* cppdefault.h (default_include): Likewise.
* cppexp.c (suffix, vsuf_1, vsuf_2, vsuf_3): Likewise.
* flow.c (life_analysis): Likewise.
* gcc.c (dir_separator_str, modify_target, option_map,
target_option_translations, spec_list_1, extra_specs_1,
init_spec): Likewise.
* gcov.c (gcov_version_string): Likewise.
* genattr.c (write_units): Likewise.
* genattrtab.c (make_length_attrs, write_function_unit_info): Likewise.
* gengenrtl.c (rtx_definition, defs): Likewise.
* genrecog.c (pred_table): Likewise.
* global.c (global_alloc): Likewise.
* lcm.c (optimize_mode_switching): Likewise.
* local-alloc.c (find_free_reg): Likewise.
* params.h (param_info): Likewise.
* predict.c (predictor_info): Likewise.
* protoize.c (unexpansion_struct): Likewise.
* real.c (bmask): Likewise.
* recog.h (insn_operand_data, insn_data): Likewise.
* regclass.c (initial_fixed_regs, initial_call_used_regs): Likewise.
* stmt.c (expand_nl_goto_receiver): Likewise.
* toplev.c (da, debug_args, lang_opt, documented_lang_options,
target_switches, target_options): Likewise.
* tradcif.y (token, tokentab2, yylex): Likewise.
* tree.h (attribute_spec): Likewise.
* alpha.c (override_options, alpha_lookup_xfloating_lib_func):
Likewise.
* arc.c (arc_output_function_epilogue): Likewise.
* arm.c (processors, all_cores, all_architectures,
arm_override_options, isr_attribute_arg, isr_attribute_args,
arm_isr_value): Likewise.
* avr.c (mcu_type_s, reg_class_tab, order_regs_for_local_alloc):
Likewise.
* c4x.c (c4x_int_reglist): Likewise.
* d30v.c (override_options): Likewise.
* h8300.c (shift_insn): Likewise.
* i386.c (size_cost, i386_cost, i486_cost, pentium_cost,
pentiumpro_cost, k6_cost, athlon_cost, pentium4_cost, ix86_cost,
ix86_expand_sse_comi, ix86_expand_sse_compare, override_options,
builtin_description, bdesc_comi, bdesc_2arg, bdesc_1arg,
ix86_init_mmx_sse_builtins, ix86_expand_builtin): Likewise.
* i386.h (processor_costs, ix86_cost): Likewise.
* m68hc11.c (m68hc11_cost, m6811_cost, m6812_cost): Likewise.
* m68hc11.h (processor_costs, m68hc11_cost): Likewise.
* m68k.c (codes_68881, codes_FPA): Likewise.
* m88k.c (mode_from_align, max_from_align, all_from_align,
best_from_align, m_options): Likewise.
* m88k.h (ORDER_REGS_FOR_LOCAL_ALLOC): Likewise.
* mcore.c (mode_from_align): Likewise.
* mips/elf64.h (UNIQUE_SECTION): Likewise.
* mips/iris6gld.h (UNIQUE_SECTION): Likewise.
* mips.c (mips_sw_reg_names, mips_regno_to_class): Likewise.
* mips.h (mips_regno_to_class): Likewise.
* ns32k.c (scales): Likewise.
* pa.c (import_string, magic_milli): Likewise.
* rs6000.c (alt_reg_names, rs6000_override_options): Likewise.
* sparc.c (leaf_reg_remap, sparc_override_options,
reg_leaf_alloc_order, reg_nonleaf_alloc_order, reg_alloc_orders):
Likewise.
* sparc.h (sparc_cpu_select, leaf_reg_remap): Likewise.
cp:
* class.c (build_vtable_entry_ref): Const-ify.
* decl.c (predefined_identifier,
initialize_predefined_identifiers): Likewise.
* init.c (build_new_1): Likewise.
* lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
Likewise.
f:
* bad.c (_ffebad_message_, ffebad_messages_): Const-ify.
* bld.c (ffebld_arity_op_): Likewise.
* bld.h (ffebld_arity_op_): Likewise.
* com.c (ffecom_init_0): Likewise.
* intdoc.c (_ffeintrin_name_, _ffeintrin_gen_, _ffeintrin_spec_,
_ffeintrin_imp_, names, gens, imps, specs, cc_pair,
cc_descriptions, cc_summaries): Likewise.
* intrin.c (_ffeintrin_name_, _ffeintrin_gen_, _ffeintrin_spec_,
_ffeintrin_imp_, ffeintrin_names_, ffeintrin_gens_,
ffeintrin_imps_, ffeintrin_specs_): Likewise.
java:
* jcf-io.c (format_uint): Const-ify.
* lang.c (java_tree_code_type, java_tree_code_length): Likewise.
* lex.c (java_get_line_col): Likewise.
* parse.y (build_incdec): Likewise.
From-SVN: r46062
2001-10-07 18:51:11 +02:00
|
|
|
|
struct names { const char *const name; const int len; const int ret;
|
|
|
|
|
const int two_underscores; };
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
collect2.c (is_ctor_dtor): Const-ify.
* collect2.c (is_ctor_dtor): Const-ify.
* m88k-protos.c (output_file_start): Likewise.
* m88k.c (m88k_lang_independent_options, output_options,
output_file_start): Likewise.
* fix-header.c (files_to_ignore, std_include_entry, include_entry,
std_include_table, main): Likewise.
* protoize.c (longopts): Likewise.
* regclass.c (int_reg_class_contents): Likewise.
* toplev.c (dump_file, f_options, W_options): Make static.
(lang_independent_options, f_options, W_options): Const-ify.
* tree-dump.c (dump_file_info): Likewise.
* unroll.c (_factor): Make static.
java:
* chartables.h: Const-ify.
* gjavah.c (options): Likewise.
* jcf-dump.c (options): Likewise.
* jv-scan.c (options): Likewise.
* lex.c (java_start_char_p, java_part_char_p): Likewise.
* parse.y (binop_lookup): Likewise.
From-SVN: r48322
2001-12-27 04:35:21 +01:00
|
|
|
|
const struct names *p;
|
2001-10-11 05:16:15 +02:00
|
|
|
|
int ch;
|
|
|
|
|
const char *orig_s = s;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
collect2.c (is_ctor_dtor): Const-ify.
* collect2.c (is_ctor_dtor): Const-ify.
* m88k-protos.c (output_file_start): Likewise.
* m88k.c (m88k_lang_independent_options, output_options,
output_file_start): Likewise.
* fix-header.c (files_to_ignore, std_include_entry, include_entry,
std_include_table, main): Likewise.
* protoize.c (longopts): Likewise.
* regclass.c (int_reg_class_contents): Likewise.
* toplev.c (dump_file, f_options, W_options): Make static.
(lang_independent_options, f_options, W_options): Const-ify.
* tree-dump.c (dump_file_info): Likewise.
* unroll.c (_factor): Make static.
java:
* chartables.h: Const-ify.
* gjavah.c (options): Likewise.
* jcf-dump.c (options): Likewise.
* jv-scan.c (options): Likewise.
* lex.c (java_start_char_p, java_part_char_p): Likewise.
* parse.y (binop_lookup): Likewise.
From-SVN: r48322
2001-12-27 04:35:21 +01:00
|
|
|
|
static const struct names special[] = {
|
2002-07-22 21:31:37 +02:00
|
|
|
|
#ifndef NO_DOLLAR_IN_LABEL
|
|
|
|
|
{ "GLOBAL__I$", sizeof ("GLOBAL__I$")-1, 1, 0 },
|
|
|
|
|
{ "GLOBAL__D$", sizeof ("GLOBAL__D$")-1, 2, 0 },
|
|
|
|
|
#else
|
|
|
|
|
#ifndef NO_DOT_IN_LABEL
|
|
|
|
|
{ "GLOBAL__I.", sizeof ("GLOBAL__I.")-1, 1, 0 },
|
|
|
|
|
{ "GLOBAL__D.", sizeof ("GLOBAL__D.")-1, 2, 0 },
|
|
|
|
|
#endif /* NO_DOT_IN_LABEL */
|
|
|
|
|
#endif /* NO_DOLLAR_IN_LABEL */
|
1993-07-21 05:41:16 +02:00
|
|
|
|
{ "GLOBAL__I_", sizeof ("GLOBAL__I_")-1, 1, 0 },
|
|
|
|
|
{ "GLOBAL__D_", sizeof ("GLOBAL__D_")-1, 2, 0 },
|
1997-09-10 20:00:28 +02:00
|
|
|
|
{ "GLOBAL__F_", sizeof ("GLOBAL__F_")-1, 5, 0 },
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{ "GLOBAL__FI_", sizeof ("GLOBAL__FI_")-1, 3, 0 },
|
|
|
|
|
{ "GLOBAL__FD_", sizeof ("GLOBAL__FD_")-1, 4, 0 },
|
1992-03-19 23:07:22 +01:00
|
|
|
|
{ NULL, 0, 0, 0 }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
while ((ch = *s) == '_')
|
|
|
|
|
++s;
|
|
|
|
|
|
|
|
|
|
if (s == orig_s)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
for (p = &special[0]; p->len > 0; p++)
|
|
|
|
|
{
|
|
|
|
|
if (ch == p->name[0]
|
|
|
|
|
&& (!p->two_underscores || ((s - orig_s) >= 2))
|
|
|
|
|
&& strncmp(s, p->name, p->len) == 0)
|
|
|
|
|
{
|
|
|
|
|
return p->ret;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
|
|
|
|
/* We maintain two prefix lists: one from COMPILER_PATH environment variable
|
|
|
|
|
and one from the PATH variable. */
|
|
|
|
|
|
|
|
|
|
static struct path_prefix cpath, path;
|
|
|
|
|
|
|
|
|
|
#ifdef CROSS_COMPILE
|
|
|
|
|
/* This is the name of the target machine. We use it to form the name
|
|
|
|
|
of the files to execute. */
|
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char *const target_machine = TARGET_MACHINE;
|
1993-01-02 09:32:09 +01:00
|
|
|
|
#endif
|
1993-01-22 13:56:23 +01:00
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
/* Search for NAME using prefix list PPREFIX. We only look for executable
|
2003-06-29 14:07:06 +02:00
|
|
|
|
files.
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
Return 0 if not found, otherwise return its name, allocated with malloc. */
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
|
|
|
|
static char *
|
2003-06-29 14:07:06 +02:00
|
|
|
|
find_a_file (struct path_prefix *pprefix, const char *name)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
|
|
|
|
char *temp;
|
|
|
|
|
struct prefix_list *pl;
|
|
|
|
|
int len = pprefix->max_len + strlen (name) + 1;
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "Looking for '%s'\n", name);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
2001-04-19 22:28:05 +02:00
|
|
|
|
#ifdef HOST_EXECUTABLE_SUFFIX
|
|
|
|
|
len += strlen (HOST_EXECUTABLE_SUFFIX);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
temp = xmalloc (len);
|
|
|
|
|
|
|
|
|
|
/* Determine the filename to execute (special case for absolute paths). */
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
if (*name == '/'
|
1999-04-10 06:27:16 +02:00
|
|
|
|
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
|
|
|
|
|
|| (*name && name[1] == ':')
|
1998-03-24 11:49:50 +01:00
|
|
|
|
#endif
|
|
|
|
|
)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
1993-01-26 07:58:09 +01:00
|
|
|
|
if (access (name, X_OK) == 0)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
|
|
|
|
strcpy (temp, name);
|
1998-03-24 11:49:50 +01:00
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, " - found: absolute path\n");
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
return temp;
|
|
|
|
|
}
|
1998-03-24 11:49:50 +01:00
|
|
|
|
|
2001-04-19 22:28:05 +02:00
|
|
|
|
#ifdef HOST_EXECUTABLE_SUFFIX
|
1999-04-10 06:27:16 +02:00
|
|
|
|
/* Some systems have a suffix for executable files.
|
|
|
|
|
So try appending that. */
|
|
|
|
|
strcpy (temp, name);
|
2001-04-19 22:28:05 +02:00
|
|
|
|
strcat (temp, HOST_EXECUTABLE_SUFFIX);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1999-04-10 06:27:16 +02:00
|
|
|
|
if (access (temp, X_OK) == 0)
|
|
|
|
|
return temp;
|
|
|
|
|
#endif
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, " - failed to locate using absolute path\n");
|
1993-01-02 09:32:09 +01:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
for (pl = pprefix->plist; pl; pl = pl->next)
|
|
|
|
|
{
|
1999-08-04 09:45:10 +02:00
|
|
|
|
struct stat st;
|
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
strcpy (temp, pl->prefix);
|
|
|
|
|
strcat (temp, name);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1999-08-04 09:45:10 +02:00
|
|
|
|
if (stat (temp, &st) >= 0
|
|
|
|
|
&& ! S_ISDIR (st.st_mode)
|
|
|
|
|
&& access (temp, X_OK) == 0)
|
1998-04-06 22:51:28 +02:00
|
|
|
|
return temp;
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
2001-04-19 22:28:05 +02:00
|
|
|
|
#ifdef HOST_EXECUTABLE_SUFFIX
|
1993-01-02 09:32:09 +01:00
|
|
|
|
/* Some systems have a suffix for executable files.
|
|
|
|
|
So try appending that. */
|
2001-04-19 22:28:05 +02:00
|
|
|
|
strcat (temp, HOST_EXECUTABLE_SUFFIX);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1999-08-04 09:45:10 +02:00
|
|
|
|
if (stat (temp, &st) >= 0
|
|
|
|
|
&& ! S_ISDIR (st.st_mode)
|
|
|
|
|
&& access (temp, X_OK) == 0)
|
1998-04-06 22:51:28 +02:00
|
|
|
|
return temp;
|
|
|
|
|
#endif
|
1993-01-02 09:32:09 +01:00
|
|
|
|
}
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
if (debug && pprefix->plist == NULL)
|
|
|
|
|
fprintf (stderr, " - failed: no entries in prefix list\n");
|
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
free (temp);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Add an entry for PREFIX to prefix list PPREFIX. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
add_prefix (struct path_prefix *pprefix, const char *prefix)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
|
|
|
|
struct prefix_list *pl, **prev;
|
|
|
|
|
int len;
|
|
|
|
|
|
|
|
|
|
if (pprefix->plist)
|
|
|
|
|
{
|
|
|
|
|
for (pl = pprefix->plist; pl->next; pl = pl->next)
|
|
|
|
|
;
|
|
|
|
|
prev = &pl->next;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
prev = &pprefix->plist;
|
|
|
|
|
|
2003-06-29 15:53:12 +02:00
|
|
|
|
/* Keep track of the longest prefix. */
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
|
|
|
|
len = strlen (prefix);
|
|
|
|
|
if (len > pprefix->max_len)
|
|
|
|
|
pprefix->max_len = len;
|
|
|
|
|
|
|
|
|
|
pl = (struct prefix_list *) xmalloc (sizeof (struct prefix_list));
|
1999-01-13 11:46:45 +01:00
|
|
|
|
pl->prefix = xstrdup (prefix);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
|
|
|
|
if (*prev)
|
|
|
|
|
pl->next = *prev;
|
|
|
|
|
else
|
|
|
|
|
pl->next = (struct prefix_list *) 0;
|
|
|
|
|
*prev = pl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Take the value of the environment variable ENV, break it into a path, and
|
|
|
|
|
add of the entries to PPREFIX. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
prefix_from_env (const char *env, struct path_prefix *pprefix)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *p;
|
2002-07-21 23:59:03 +02:00
|
|
|
|
GET_ENVIRONMENT (p, env);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
|
|
|
|
if (p)
|
1995-05-09 12:21:13 +02:00
|
|
|
|
prefix_from_string (p, pprefix);
|
|
|
|
|
}
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
prefix_from_string (const char *p, struct path_prefix *pprefix)
|
1995-05-09 12:21:13 +02:00
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *startp, *endp;
|
1995-05-09 12:21:13 +02:00
|
|
|
|
char *nstore = (char *) xmalloc (strlen (p) + 3);
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "Convert string '%s' into prefixes, separator = '%c'\n", p, PATH_SEPARATOR);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
startp = endp = p;
|
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
if (*endp == PATH_SEPARATOR || *endp == 0)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
1995-05-09 12:21:13 +02:00
|
|
|
|
strncpy (nstore, startp, endp-startp);
|
|
|
|
|
if (endp == startp)
|
1993-01-02 09:32:09 +01:00
|
|
|
|
{
|
1995-05-09 12:21:13 +02:00
|
|
|
|
strcpy (nstore, "./");
|
|
|
|
|
}
|
1999-10-26 08:03:19 +02:00
|
|
|
|
else if (! IS_DIR_SEPARATOR (endp[-1]))
|
1995-05-09 12:21:13 +02:00
|
|
|
|
{
|
1999-10-26 08:03:19 +02:00
|
|
|
|
nstore[endp-startp] = DIR_SEPARATOR;
|
1995-05-09 12:21:13 +02:00
|
|
|
|
nstore[endp-startp+1] = 0;
|
1993-01-02 09:32:09 +01:00
|
|
|
|
}
|
|
|
|
|
else
|
1995-05-09 12:21:13 +02:00
|
|
|
|
nstore[endp-startp] = 0;
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, " - add prefix: %s\n", nstore);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
add_prefix (pprefix, nstore);
|
|
|
|
|
if (*endp == 0)
|
|
|
|
|
break;
|
|
|
|
|
endp = startp = endp + 1;
|
1993-01-02 09:32:09 +01:00
|
|
|
|
}
|
1995-05-09 12:21:13 +02:00
|
|
|
|
else
|
|
|
|
|
endp++;
|
1993-01-02 09:32:09 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Main program. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
main (int argc, char **argv)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
c-parse.in (yyerror): Const-ification and/or static-ization.
* c-parse.in (yyerror): Const-ification and/or static-ization.
* c-typeck.c (push_member_name): Likewise.
* collect2.c (main): Likewise.
* dbxout.c (dbxout_parms): Likewise.
* diagnostic.c (format_with_decl): Likewise.
* dwarf2out.c (output_ranges): Likewise.
* dwarfout.c (fundamental_type_code): Likewise.
* except.c (dw2_output_call_site_table): Likewise.
* gcc.c (do_spec_1): Likewise.
* genopinit.c (optabs): Likewise.
* objc/objc-act.c (synth_id_with_class_suffix, start_class,
gen_declaration_1, handle_impent): Likewise.
* protoize.c (default_include, in_system_include_dir, abspath):
Likewise.
* sched-vis.c (visualize_stall_cycles): Likewise.
* sdbout.c (plain_type_1, sdbout_end_function,
sdbout_end_epilogue): Likewise.
* varasm.c (decode_reg_name): Likewise.
* 1750a.c (mod_regno_adjust): Likewise.
* alpha.c (alpha_write_one_linkage,
unicosmk_output_default_externs): Likewise.
* arm.c (arm_condition_codes): Likewise.
* arm.h (arm_condition_codes): Likewise.
* avr.c (output_movsisf, encode_section_info): Likewise.
* darwin.h (GEN_BINDER_NAME_FOR_STUB, GEN_SYMBOL_NAME_FOR_SYMBOL):
Likewise.
* i386.c (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
* i386.h (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
* m88k.c (output_function_profiler): Likewise.
* mips.c (mips_output_conditional_branch): Likewise.
* ns32k.c (ns32k_out_reg_names): Likewise.
* ns32k.h (ns32k_out_reg_names): Likewise.
* pj.c (pj_output_rval): Likewise.
* rs6000.c (GEN_LOCAL_LABEL_FOR_SYMBOL): Likewise.
* sparc.c (sparc_flat_function_prologue,
sparc_flat_function_epilogue): Likewise.
cp:
* decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
Const-ification.
* pt.c (tsubst_decl): Likewise.
f:
* bad.c (ffebad_finish): Const-ification and/or static-ization.
* intrin.c (ffeintrin_cmp_name_): Likewise.
* stc.c (ffestc_R904): Likewise.
java:
* expr.c (expand_invoke): Const-ification.
* parse.y (patch_method_invocation): Likewise.
From-SVN: r45581
2001-09-13 16:37:29 +02:00
|
|
|
|
static const char *const ld_suffix = "ld";
|
|
|
|
|
static const char *const real_ld_suffix = "real-ld";
|
|
|
|
|
static const char *const collect_ld_suffix = "collect-ld";
|
|
|
|
|
static const char *const nm_suffix = "nm";
|
|
|
|
|
static const char *const gnm_suffix = "gnm";
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#ifdef LDD_SUFFIX
|
c-parse.in (yyerror): Const-ification and/or static-ization.
* c-parse.in (yyerror): Const-ification and/or static-ization.
* c-typeck.c (push_member_name): Likewise.
* collect2.c (main): Likewise.
* dbxout.c (dbxout_parms): Likewise.
* diagnostic.c (format_with_decl): Likewise.
* dwarf2out.c (output_ranges): Likewise.
* dwarfout.c (fundamental_type_code): Likewise.
* except.c (dw2_output_call_site_table): Likewise.
* gcc.c (do_spec_1): Likewise.
* genopinit.c (optabs): Likewise.
* objc/objc-act.c (synth_id_with_class_suffix, start_class,
gen_declaration_1, handle_impent): Likewise.
* protoize.c (default_include, in_system_include_dir, abspath):
Likewise.
* sched-vis.c (visualize_stall_cycles): Likewise.
* sdbout.c (plain_type_1, sdbout_end_function,
sdbout_end_epilogue): Likewise.
* varasm.c (decode_reg_name): Likewise.
* 1750a.c (mod_regno_adjust): Likewise.
* alpha.c (alpha_write_one_linkage,
unicosmk_output_default_externs): Likewise.
* arm.c (arm_condition_codes): Likewise.
* arm.h (arm_condition_codes): Likewise.
* avr.c (output_movsisf, encode_section_info): Likewise.
* darwin.h (GEN_BINDER_NAME_FOR_STUB, GEN_SYMBOL_NAME_FOR_SYMBOL):
Likewise.
* i386.c (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
* i386.h (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
* m88k.c (output_function_profiler): Likewise.
* mips.c (mips_output_conditional_branch): Likewise.
* ns32k.c (ns32k_out_reg_names): Likewise.
* ns32k.h (ns32k_out_reg_names): Likewise.
* pj.c (pj_output_rval): Likewise.
* rs6000.c (GEN_LOCAL_LABEL_FOR_SYMBOL): Likewise.
* sparc.c (sparc_flat_function_prologue,
sparc_flat_function_epilogue): Likewise.
cp:
* decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
Const-ification.
* pt.c (tsubst_decl): Likewise.
f:
* bad.c (ffebad_finish): Const-ification and/or static-ization.
* intrin.c (ffeintrin_cmp_name_): Likewise.
* stc.c (ffestc_R904): Likewise.
java:
* expr.c (expand_invoke): Const-ification.
* parse.y (patch_method_invocation): Likewise.
From-SVN: r45581
2001-09-13 16:37:29 +02:00
|
|
|
|
static const char *const ldd_suffix = LDD_SUFFIX;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
#endif
|
c-parse.in (yyerror): Const-ification and/or static-ization.
* c-parse.in (yyerror): Const-ification and/or static-ization.
* c-typeck.c (push_member_name): Likewise.
* collect2.c (main): Likewise.
* dbxout.c (dbxout_parms): Likewise.
* diagnostic.c (format_with_decl): Likewise.
* dwarf2out.c (output_ranges): Likewise.
* dwarfout.c (fundamental_type_code): Likewise.
* except.c (dw2_output_call_site_table): Likewise.
* gcc.c (do_spec_1): Likewise.
* genopinit.c (optabs): Likewise.
* objc/objc-act.c (synth_id_with_class_suffix, start_class,
gen_declaration_1, handle_impent): Likewise.
* protoize.c (default_include, in_system_include_dir, abspath):
Likewise.
* sched-vis.c (visualize_stall_cycles): Likewise.
* sdbout.c (plain_type_1, sdbout_end_function,
sdbout_end_epilogue): Likewise.
* varasm.c (decode_reg_name): Likewise.
* 1750a.c (mod_regno_adjust): Likewise.
* alpha.c (alpha_write_one_linkage,
unicosmk_output_default_externs): Likewise.
* arm.c (arm_condition_codes): Likewise.
* arm.h (arm_condition_codes): Likewise.
* avr.c (output_movsisf, encode_section_info): Likewise.
* darwin.h (GEN_BINDER_NAME_FOR_STUB, GEN_SYMBOL_NAME_FOR_SYMBOL):
Likewise.
* i386.c (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
* i386.h (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
* m88k.c (output_function_profiler): Likewise.
* mips.c (mips_output_conditional_branch): Likewise.
* ns32k.c (ns32k_out_reg_names): Likewise.
* ns32k.h (ns32k_out_reg_names): Likewise.
* pj.c (pj_output_rval): Likewise.
* rs6000.c (GEN_LOCAL_LABEL_FOR_SYMBOL): Likewise.
* sparc.c (sparc_flat_function_prologue,
sparc_flat_function_epilogue): Likewise.
cp:
* decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
Const-ification.
* pt.c (tsubst_decl): Likewise.
f:
* bad.c (ffebad_finish): Const-ification and/or static-ization.
* intrin.c (ffeintrin_cmp_name_): Likewise.
* stc.c (ffestc_R904): Likewise.
java:
* expr.c (expand_invoke): Const-ification.
* parse.y (patch_method_invocation): Likewise.
From-SVN: r45581
2001-09-13 16:37:29 +02:00
|
|
|
|
static const char *const strip_suffix = "strip";
|
|
|
|
|
static const char *const gstrip_suffix = "gstrip";
|
2001-09-15 16:04:47 +02:00
|
|
|
|
|
|
|
|
|
#ifdef CROSS_COMPILE
|
|
|
|
|
/* If we look for a program in the compiler directories, we just use
|
|
|
|
|
the short name, since these directories are already system-specific.
|
|
|
|
|
But it we look for a program in the system directories, we need to
|
|
|
|
|
qualify the program name with the target machine. */
|
|
|
|
|
|
|
|
|
|
const char *const full_ld_suffix =
|
|
|
|
|
concat(target_machine, "-", ld_suffix, NULL);
|
|
|
|
|
const char *const full_nm_suffix =
|
|
|
|
|
concat (target_machine, "-", nm_suffix, NULL);
|
|
|
|
|
const char *const full_gnm_suffix =
|
|
|
|
|
concat (target_machine, "-", gnm_suffix, NULL);
|
|
|
|
|
#ifdef LDD_SUFFIX
|
|
|
|
|
const char *const full_ldd_suffix =
|
|
|
|
|
concat (target_machine, "-", ldd_suffix, NULL);
|
|
|
|
|
#endif
|
|
|
|
|
const char *const full_strip_suffix =
|
|
|
|
|
concat (target_machine, "-", strip_suffix, NULL);
|
|
|
|
|
const char *const full_gstrip_suffix =
|
|
|
|
|
concat (target_machine, "-", gstrip_suffix, NULL);
|
|
|
|
|
#else
|
|
|
|
|
const char *const full_ld_suffix = ld_suffix;
|
|
|
|
|
const char *const full_nm_suffix = nm_suffix;
|
|
|
|
|
const char *const full_gnm_suffix = gnm_suffix;
|
|
|
|
|
#ifdef LDD_SUFFIX
|
|
|
|
|
const char *const full_ldd_suffix = ldd_suffix;
|
|
|
|
|
#endif
|
|
|
|
|
const char *const full_strip_suffix = strip_suffix;
|
|
|
|
|
const char *const full_gstrip_suffix = gstrip_suffix;
|
|
|
|
|
#endif /* CROSS_COMPILE */
|
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *arg;
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
FILE *outf;
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
FILE *exportf;
|
|
|
|
|
#endif
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *ld_file_name;
|
|
|
|
|
const char *p;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
char **c_argv;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **c_ptr;
|
1999-01-27 02:43:17 +01:00
|
|
|
|
char **ld1_argv;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **ld1;
|
1999-01-27 02:43:17 +01:00
|
|
|
|
char **ld2_argv;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **ld2;
|
1999-01-27 02:43:17 +01:00
|
|
|
|
char **object_lst;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **object;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
int first_file;
|
1998-07-12 14:11:28 +02:00
|
|
|
|
int num_c_args = argc+9;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
2001-07-10 17:39:29 +02:00
|
|
|
|
no_demangle = !! getenv ("COLLECT_NO_DEMANGLE");
|
|
|
|
|
|
|
|
|
|
/* Suppress demangling by the real linker, which may be broken. */
|
|
|
|
|
putenv (xstrdup ("COLLECT_NO_DEMANGLE="));
|
|
|
|
|
|
1999-05-18 00:56:24 +02:00
|
|
|
|
#if defined (COLLECT2_HOST_INITIALIZATION)
|
ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
ChangeLog.5, ChangeLog, ChangeLog.lib, FSFChangeLog.10, ONEWS,
c-common.c, caller-save.c, cfg.c, cfgcleanup.c, cfgrtl.c,
collect2.c, df.h, diagnostic.h, final.c, gcse.c, gthr.h,
haifa-sched.c, jump.c, local-alloc.c, profile.c, protoize.c,
regmove.c, reload1.c, rtlanal.c, sched-vis.c, ssa.c, stmt.c,
system.h, toplev.c: Fix spelling errors.
From-SVN: r46580
2001-10-28 13:42:06 +01:00
|
|
|
|
/* Perform system dependent initialization, if necessary. */
|
1999-05-18 00:56:24 +02:00
|
|
|
|
COLLECT2_HOST_INITIALIZATION;
|
1999-03-25 00:35:34 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
2001-03-16 01:58:40 +01:00
|
|
|
|
#ifdef SIGCHLD
|
|
|
|
|
/* We *MUST* set SIGCHLD to SIG_DFL so that the wait4() call will
|
|
|
|
|
receive the signal. A different setting is inheritable */
|
|
|
|
|
signal (SIGCHLD, SIG_DFL);
|
|
|
|
|
#endif
|
|
|
|
|
|
2001-10-19 17:17:39 +02:00
|
|
|
|
gcc_init_libintl ();
|
1999-01-27 02:43:17 +01:00
|
|
|
|
|
|
|
|
|
/* Do not invoke xcalloc before this point, since locale needs to be
|
|
|
|
|
set first, in case a diagnostic is issued. */
|
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
ld1 = (const char **)(ld1_argv = (char **) xcalloc(sizeof (char *), argc+3));
|
2000-01-07 19:33:12 +01:00
|
|
|
|
ld2 = (const char **)(ld2_argv = (char **) xcalloc(sizeof (char *), argc+10));
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
object = (const char **)(object_lst = (char **) xcalloc(sizeof (char *), argc));
|
1999-01-27 02:43:17 +01:00
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
debug = 1;
|
|
|
|
|
#endif
|
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
/* Parse command line early for instances of -debug. This allows
|
|
|
|
|
the debug flag to be set before functions like find_a_file()
|
|
|
|
|
are called. */
|
|
|
|
|
{
|
|
|
|
|
int i;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1998-03-24 11:49:50 +01:00
|
|
|
|
for (i = 1; argv[i] != NULL; i ++)
|
|
|
|
|
if (! strcmp (argv[i], "-debug"))
|
|
|
|
|
debug = 1;
|
|
|
|
|
vflag = debug;
|
|
|
|
|
}
|
|
|
|
|
|
1996-03-05 00:39:47 +01:00
|
|
|
|
#ifndef DEFAULT_A_OUT_NAME
|
1993-03-18 22:17:20 +01:00
|
|
|
|
output_file = "a.out";
|
1996-03-05 00:39:47 +01:00
|
|
|
|
#else
|
|
|
|
|
output_file = DEFAULT_A_OUT_NAME;
|
|
|
|
|
#endif
|
1993-03-18 22:17:20 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
obstack_begin (&temporary_obstack, 0);
|
|
|
|
|
temporary_firstobj = (char *) obstack_alloc (&temporary_obstack, 0);
|
1993-09-11 22:46:39 +02:00
|
|
|
|
|
2000-12-22 12:42:51 +01:00
|
|
|
|
current_demangling_style = auto_demangling;
|
Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
on system.h.
* alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
xcoffout.c: Include system.h. Organize include ordering so
that stdarg/varargs comes before other system headers. Remove
spurious casts of functions assured of a prototype in system.h.
From-SVN: r18726
1998-03-20 15:58:42 +01:00
|
|
|
|
p = getenv ("COLLECT_GCC_OPTIONS");
|
1997-06-11 00:23:32 +02:00
|
|
|
|
while (p && *p)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *q = extract_string (&p);
|
1997-06-11 00:23:32 +02:00
|
|
|
|
if (*q == '-' && (q[1] == 'm' || q[1] == 'f'))
|
|
|
|
|
num_c_args++;
|
|
|
|
|
}
|
|
|
|
|
obstack_free (&temporary_obstack, temporary_firstobj);
|
1999-10-15 02:05:52 +02:00
|
|
|
|
|
|
|
|
|
/* -fno-exceptions -w */
|
|
|
|
|
num_c_args += 2;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
c_ptr = (const char **)
|
|
|
|
|
(c_argv = (char **) xcalloc (sizeof (char *), num_c_args));
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
if (argc < 2)
|
|
|
|
|
fatal ("no arguments");
|
|
|
|
|
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#ifdef SIGQUIT
|
1992-10-13 19:24:57 +01:00
|
|
|
|
if (signal (SIGQUIT, SIG_IGN) != SIG_IGN)
|
|
|
|
|
signal (SIGQUIT, handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#endif
|
1992-10-13 19:24:57 +01:00
|
|
|
|
if (signal (SIGINT, SIG_IGN) != SIG_IGN)
|
|
|
|
|
signal (SIGINT, handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#ifdef SIGALRM
|
1992-10-13 19:24:57 +01:00
|
|
|
|
if (signal (SIGALRM, SIG_IGN) != SIG_IGN)
|
|
|
|
|
signal (SIGALRM, handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#endif
|
|
|
|
|
#ifdef SIGHUP
|
1992-10-13 19:24:57 +01:00
|
|
|
|
if (signal (SIGHUP, SIG_IGN) != SIG_IGN)
|
|
|
|
|
signal (SIGHUP, handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#endif
|
1992-10-13 19:24:57 +01:00
|
|
|
|
if (signal (SIGSEGV, SIG_IGN) != SIG_IGN)
|
|
|
|
|
signal (SIGSEGV, handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#ifdef SIGBUS
|
1992-10-13 19:24:57 +01:00
|
|
|
|
if (signal (SIGBUS, SIG_IGN) != SIG_IGN)
|
|
|
|
|
signal (SIGBUS, handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
/* Extract COMPILER_PATH and PATH into our prefix list. */
|
|
|
|
|
prefix_from_env ("COMPILER_PATH", &cpath);
|
|
|
|
|
prefix_from_env ("PATH", &path);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
/* Try to discover a valid linker/nm/strip to use. */
|
|
|
|
|
|
1994-10-19 23:09:20 +01:00
|
|
|
|
/* Maybe we know the right file to use (if not cross). */
|
1998-10-06 17:43:24 +02:00
|
|
|
|
ld_file_name = 0;
|
1998-09-28 17:52:01 +02:00
|
|
|
|
#ifdef DEFAULT_LINKER
|
|
|
|
|
if (access (DEFAULT_LINKER, X_OK) == 0)
|
|
|
|
|
ld_file_name = DEFAULT_LINKER;
|
|
|
|
|
if (ld_file_name == 0)
|
|
|
|
|
#endif
|
1994-10-19 23:09:20 +01:00
|
|
|
|
#ifdef REAL_LD_FILE_NAME
|
|
|
|
|
ld_file_name = find_a_file (&path, REAL_LD_FILE_NAME);
|
|
|
|
|
if (ld_file_name == 0)
|
|
|
|
|
#endif
|
1995-05-04 23:25:31 +02:00
|
|
|
|
/* Search the (target-specific) compiler dirs for ld'. */
|
|
|
|
|
ld_file_name = find_a_file (&cpath, real_ld_suffix);
|
|
|
|
|
/* Likewise for `collect-ld'. */
|
1993-01-02 09:32:09 +01:00
|
|
|
|
if (ld_file_name == 0)
|
1995-05-04 23:25:31 +02:00
|
|
|
|
ld_file_name = find_a_file (&cpath, collect_ld_suffix);
|
1993-12-23 14:17:07 +01:00
|
|
|
|
/* Search the compiler directories for `ld'. We have protection against
|
|
|
|
|
recursive calls in find_a_file. */
|
1993-07-07 20:20:25 +02:00
|
|
|
|
if (ld_file_name == 0)
|
1993-12-23 14:17:07 +01:00
|
|
|
|
ld_file_name = find_a_file (&cpath, ld_suffix);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
/* Search the ordinary system bin directories
|
1993-05-25 05:10:36 +02:00
|
|
|
|
for `ld' (if native linking) or `TARGET-ld' (if cross). */
|
1993-01-02 09:32:09 +01:00
|
|
|
|
if (ld_file_name == 0)
|
|
|
|
|
ld_file_name = find_a_file (&path, full_ld_suffix);
|
|
|
|
|
|
1994-10-19 23:09:20 +01:00
|
|
|
|
#ifdef REAL_NM_FILE_NAME
|
|
|
|
|
nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME);
|
|
|
|
|
if (nm_file_name == 0)
|
|
|
|
|
#endif
|
1993-01-02 09:32:09 +01:00
|
|
|
|
nm_file_name = find_a_file (&cpath, gnm_suffix);
|
|
|
|
|
if (nm_file_name == 0)
|
|
|
|
|
nm_file_name = find_a_file (&path, full_gnm_suffix);
|
|
|
|
|
if (nm_file_name == 0)
|
|
|
|
|
nm_file_name = find_a_file (&cpath, nm_suffix);
|
|
|
|
|
if (nm_file_name == 0)
|
|
|
|
|
nm_file_name = find_a_file (&path, full_nm_suffix);
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#ifdef LDD_SUFFIX
|
|
|
|
|
ldd_file_name = find_a_file (&cpath, ldd_suffix);
|
|
|
|
|
if (ldd_file_name == 0)
|
|
|
|
|
ldd_file_name = find_a_file (&path, full_ldd_suffix);
|
|
|
|
|
#endif
|
|
|
|
|
|
1994-10-19 23:09:20 +01:00
|
|
|
|
#ifdef REAL_STRIP_FILE_NAME
|
|
|
|
|
strip_file_name = find_a_file (&path, REAL_STRIP_FILE_NAME);
|
|
|
|
|
if (strip_file_name == 0)
|
|
|
|
|
#endif
|
1993-01-02 09:32:09 +01:00
|
|
|
|
strip_file_name = find_a_file (&cpath, gstrip_suffix);
|
|
|
|
|
if (strip_file_name == 0)
|
|
|
|
|
strip_file_name = find_a_file (&path, full_gstrip_suffix);
|
|
|
|
|
if (strip_file_name == 0)
|
|
|
|
|
strip_file_name = find_a_file (&cpath, strip_suffix);
|
|
|
|
|
if (strip_file_name == 0)
|
|
|
|
|
strip_file_name = find_a_file (&path, full_strip_suffix);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1992-04-27 18:50:26 +02:00
|
|
|
|
/* Determine the full path name of the C compiler to use. */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
c_file_name = getenv ("COLLECT_GCC");
|
1992-10-15 07:11:01 +01:00
|
|
|
|
if (c_file_name == 0)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1993-01-02 09:32:09 +01:00
|
|
|
|
#ifdef CROSS_COMPILE
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
c_file_name = concat (target_machine, "-gcc", NULL);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
#else
|
1993-01-02 09:32:09 +01:00
|
|
|
|
c_file_name = "gcc";
|
1992-04-27 18:50:26 +02:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
1993-01-02 09:32:09 +01:00
|
|
|
|
p = find_a_file (&cpath, c_file_name);
|
|
|
|
|
|
|
|
|
|
/* Here it should be safe to use the system search path since we should have
|
|
|
|
|
already qualified the name of the compiler when it is needed. */
|
|
|
|
|
if (p == 0)
|
|
|
|
|
p = find_a_file (&path, c_file_name);
|
|
|
|
|
|
|
|
|
|
if (p)
|
|
|
|
|
c_file_name = p;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1993-02-11 11:55:22 +01:00
|
|
|
|
*ld1++ = *ld2++ = ld_file_name;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Make temp file names. */
|
1998-06-30 03:41:45 +02:00
|
|
|
|
c_file = make_temp_file (".c");
|
|
|
|
|
o_file = make_temp_file (".o");
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1998-06-30 03:41:45 +02:00
|
|
|
|
export_file = make_temp_file (".x");
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
1998-06-30 03:41:45 +02:00
|
|
|
|
ldout = make_temp_file (".ld");
|
1992-03-19 23:07:22 +01:00
|
|
|
|
*c_ptr++ = c_file_name;
|
1998-07-12 14:11:28 +02:00
|
|
|
|
*c_ptr++ = "-x";
|
|
|
|
|
*c_ptr++ = "c";
|
1992-02-06 23:06:40 +01:00
|
|
|
|
*c_ptr++ = "-c";
|
|
|
|
|
*c_ptr++ = "-o";
|
|
|
|
|
*c_ptr++ = o_file;
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* Generate a list of directories from LIBPATH. */
|
|
|
|
|
prefix_from_env ("LIBPATH", &libpath_lib_dirs);
|
|
|
|
|
/* Add to this list also two standard directories where
|
|
|
|
|
AIX loader always searches for libraries. */
|
|
|
|
|
add_prefix (&libpath_lib_dirs, "/lib");
|
|
|
|
|
add_prefix (&libpath_lib_dirs, "/usr/lib");
|
|
|
|
|
#endif
|
|
|
|
|
|
2003-06-29 14:07:06 +02:00
|
|
|
|
/* Get any options that the upper GCC wants to pass to the sub-GCC.
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
|
|
|
|
AIX support needs to know if -shared has been specified before
|
|
|
|
|
parsing commandline arguments. */
|
|
|
|
|
|
Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
on system.h.
* alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
xcoffout.c: Include system.h. Organize include ordering so
that stdarg/varargs comes before other system headers. Remove
spurious casts of functions assured of a prototype in system.h.
From-SVN: r18726
1998-03-20 15:58:42 +01:00
|
|
|
|
p = getenv ("COLLECT_GCC_OPTIONS");
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
while (p && *p)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *q = extract_string (&p);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (*q == '-' && (q[1] == 'm' || q[1] == 'f'))
|
2002-08-05 00:45:31 +02:00
|
|
|
|
*c_ptr++ = xstrdup (q);
|
1998-10-13 12:26:28 +02:00
|
|
|
|
if (strcmp (q, "-EL") == 0 || strcmp (q, "-EB") == 0)
|
2002-08-05 00:45:31 +02:00
|
|
|
|
*c_ptr++ = xstrdup (q);
|
2002-01-03 20:34:16 +01:00
|
|
|
|
if (strcmp (q, "-shared") == 0)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
shared_obj = 1;
|
2000-11-13 22:22:10 +01:00
|
|
|
|
if (*q == '-' && q[1] == 'B')
|
|
|
|
|
{
|
2002-08-05 00:45:31 +02:00
|
|
|
|
*c_ptr++ = xstrdup (q);
|
2000-11-13 22:22:10 +01:00
|
|
|
|
if (q[2] == 0)
|
|
|
|
|
{
|
|
|
|
|
q = extract_string (&p);
|
2002-08-05 00:45:31 +02:00
|
|
|
|
*c_ptr++ = xstrdup (q);
|
2000-11-13 22:22:10 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
}
|
|
|
|
|
obstack_free (&temporary_obstack, temporary_firstobj);
|
|
|
|
|
*c_ptr++ = "-fno-exceptions";
|
1999-10-15 02:05:52 +02:00
|
|
|
|
*c_ptr++ = "-w";
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
/* !!! When GCC calls collect2,
|
|
|
|
|
it does not know whether it is calling collect2 or ld.
|
|
|
|
|
So collect2 cannot meaningfully understand any options
|
|
|
|
|
except those ld understands.
|
|
|
|
|
If you propose to make GCC pass some other option,
|
|
|
|
|
just imagine what will happen if ld is really ld!!! */
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Parse arguments. Remember output file spec, pass the rest to ld. */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
/* After the first file, put in the c++ rt0. */
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
first_file = 1;
|
1996-07-04 00:07:53 +02:00
|
|
|
|
while ((arg = *++argv) != (char *) 0)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
*ld1++ = *ld2++ = arg;
|
|
|
|
|
|
|
|
|
|
if (arg[0] == '-')
|
1994-09-28 01:11:31 +01:00
|
|
|
|
{
|
1992-02-06 23:06:40 +01:00
|
|
|
|
switch (arg[1])
|
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* We want to disable automatic exports on AIX when user
|
|
|
|
|
explicitly puts an export list in command line */
|
|
|
|
|
case 'b':
|
|
|
|
|
if (arg[2] == 'E' || strncmp (&arg[2], "export", 6) == 0)
|
|
|
|
|
export_flag = 1;
|
1998-11-07 20:28:41 +01:00
|
|
|
|
else if (arg[2] == '6' && arg[3] == '4')
|
1998-10-27 14:23:17 +01:00
|
|
|
|
aix64_flag = 1;
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
case 'd':
|
|
|
|
|
if (!strcmp (arg, "-debug"))
|
|
|
|
|
{
|
1998-03-24 11:49:50 +01:00
|
|
|
|
/* Already parsed. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
ld1--;
|
|
|
|
|
ld2--;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
case 'l':
|
|
|
|
|
if (first_file)
|
|
|
|
|
{
|
|
|
|
|
/* place o_file BEFORE this argument! */
|
|
|
|
|
first_file = 0;
|
|
|
|
|
ld2--;
|
|
|
|
|
*ld2++ = o_file;
|
|
|
|
|
*ld2++ = arg;
|
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
{
|
|
|
|
|
/* Resolving full library name. */
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *s = resolve_lib_name (arg+2);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
|
|
|
|
/* Saving a full library name. */
|
|
|
|
|
add_to_list (&libs, s);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* Saving directories where to search for libraries. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
case 'L':
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
add_prefix (&cmdline_lib_dirs, arg+2);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
break;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
#else
|
2001-04-27 21:59:53 +02:00
|
|
|
|
#if LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
|
|
|
|
|
case 'L':
|
|
|
|
|
if (is_in_args (arg, (const char **) ld1_argv, ld1-1))
|
|
|
|
|
--ld1;
|
|
|
|
|
break;
|
|
|
|
|
#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
case 'o':
|
1995-06-15 04:21:06 +02:00
|
|
|
|
if (arg[2] == '\0')
|
|
|
|
|
output_file = *ld1++ = *ld2++ = *++argv;
|
[multiple changes]
Fri Oct 29 15:25:07 1999 Arnaud Charlet <charlet@ACT-Europe.FR>
* gcov.c (DIR_SEPARATOR): Provide default.
(output_data): Add test for MS-DOS format absolute filename.
(fancy_abort): Correct program name.
(open_files): Open all files in binary mode.
* libgcc2.c (__bb_exit_func): Likewise.
* profile.c (init_branch_prob): Specify binary when opening files.
* flags.h (flag_unwind_tables): New decl.
* toplev.c (flag_unwind_table): New definition.
(f_options): Add -funwind-tables.
(decode_g_option): Clarify warning when unknown -g option is given.
(rest_of_compilation): If inside an inlined external function,
pretend we are just being declared.
* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
(dwarf2out_frame_finish): Likewise.
Fri Oct 29 06:32:44 1999 Geoffrey Keating <geoffk@cygnus.com>
* flow.c (propagate_block): When the last reference to a label
before an ADDR_VEC is deleted because the reference is a dead
store, delete the ADDR_VEC.
Fri Oct 29 07:44:26 1999 Vasco Pedro <vp@di.fct.unl.pt>
* fold-const.c (merge_ranges): In not in0, but in1, handle
upper bounds equal like subset case.
Thu Oct 28 19:22:24 1999 Douglas Rupp <rupp@gnat.com>
* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
passed in a register but moved to the stack.
Thu Oct 28 19:12:57 1999 Sam Tardieu <tardieu@act-europe.fr>
* gcc.c (pass_exit_codes, greatest_status): New variables.
(struct option_map): Add entry for "--pass-exit-codes".
(execute): Update greatest_status if error.
(display_help): Add documentation for -pass-exit-codes.
(process_command): Handle -pass-exit-codes.
(main): Look at pass_exit_codes and greatest_status on call to exit.
Thu Oct 28 18:06:50 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* reload.c (find_reloads): Refine test for no input reload
case to not includes reloads emitted after insn.
* function.c (find_temp_slots_from_address): Handle sum involving
a register that points to a temp slot.
(update_temp_slot_address): Make recursive call if both old and
new are PLUS with a common operand.
* calls.c (expand_call): Mark temp slot for result as having
address taken.
* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.
* gcc.c (process_command): Add standard_exec_prefix with "GCC"
component as well as "BINUTILS".
* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
* integrate.c (copy_rtx_and_substitute): Likewise.
(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
All callers changed.
* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.
* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
gdb extensions, write size of type; also be more consistent
in using references when this is a subtype.
* pa.md (extv, extzv, insv): Use define_expand to reject constant
that is out of range.
* loop.c (unknown_constant_address_altered): New variable.
(prescan_loop): Initialize it.
(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
(invariant_p, case MEM): Remove handling for volatile and readony;
check new variable if readonly.
(check_dbra_loop): Chdeck unknown_constant_address_altered.
* cse.c (canon_hash, case MEM): Do not record if BLKmode.
(addr_affects_sp_p): Removed from note_mem_written and only
define #ifdef AUTO_INC_DEC.
* alpha.c (input_operand, case ADDRESSOF): Treat as REG.
* regclass.c (record_reg_classes): Properly handle register move
directions.
* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
Don't think valid if both operands are invalid.
(struct constant_descriptor): New field RTL.
(mark_const_hash_entry): Mark it.
(record_constant{,_rtx}): Initialize it.
(output_constant_def): Allocate RTL in permanent obstack and
save in table.
({record,compare}_constant_1): Modes must match for
CONSTRUCTOR of ARRAY_TYPE.
* c-common.h (initializer_constant_valid_p): Delete decl from here.
* output.h (initializer_constant_valid_p): Move decl to here.
* c-common.c (initializer_constant_valid_p): Delete function from here.
* varasm.c (initializer_constant_valid_p): Move function to here.
* tree.h (STRIP_SIGN_NOPS): New macro.
* fold-const.c (optimize_minmax_comparison): New function.
(invert_truthvalue, case WITH_RECORD_EXPR): New case.
(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
widening conversions.
(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
to look at size of mode, not precision of type; also add missing cases.
(optimize_bit_field_compare, decode_field_reference): Don't try to
optimize COMPONENT_REF of a PLACEHOLDER_EXPR.
* dwarf2out.c (ctype.h): Include.
(dwarf2out_set_demangle_name_func): New function.
(size_of_line_info): Deleted.
(output_line_info): Compute size of line info table from difference
of labels.
(base_type_die, add_name_attribute): Call demangle function, if any.
(field_byte_offset): Use bits per word for variable length fields.
(gen_array_type_die): Add array name.
(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
(dwarf2out_add_library_unit_info): New function.
* explow.c (set_stack_check_libfunc): New function.
(stack_check_libfunc): New static variable.
(probe_stack_range): Allow front-end to set up a libfunc to call.
* combine.c (simplify_comparison): When making comparison in wider
mode, check for having commuted an AND and a SUBREG.
(contains_muldiv): New function.
(try_combine): Call it when dividing a PARALLEL.
(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
a PLUS.
(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
use one of the CLOBBERs instead.
(if_then_else_cond): If comparing against zero, just return thing
being compared.
* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
Don't generate shifts and subtract if have conditional arithmetic.
* rtl.h (delete_barrier): New declaration.
* jump.c (jump_optimize): Set up to handle conditional call.
In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
(delete_barrier): New function.
* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.
* recog.c (nonmemory_operand): Accept ADDRESSOF.
* tree.c (build_type_attribute_variant): Push to obstack of
ttype around type_hash_canon call.
* expr.c (placeholder_list): Move decl to file scope.
(expand_expr): Don't force access to volatile just because its
address is taken.
If ignoring reference operations, just expand the operands.
(expand_expr, case COMPONENT_REF): Propagate
EXPAND_CONST_ADDRESS to recursive call when expanding inner.
Refine test for using bitfield operations vs pointer punning.
(expand_expr, case CONVERT_EXPR): If converting to
BLKmode UNION_TYPE from BLKmode, just return inner object.
Use proper mode in store_field call.
Properly set sizes of object to store and total size in store_field
call for convert to union.
(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
memory (like for ADDR_EXPR). Also, don't put constant in register if
we'll want it in memory.
(readonly_fields_p): New function.
(expand_expr, case INDIRECT_REF): Call it if LHS.
(expand_assignment): Handle a RESULT_DECL where
DECL_RTL is a PARALLEL.
(do_jump, case WITH_RECORD_EXPR): New case.
(get_inner_reference): Always go inside a CONVERT_EXPR
and NOP_EXPR if both modes are the same.
(store_field): Use bitfield operations if size of bitsize is not same
as size of RHS's type.
Check for bitpos not a multiple of alignment in BLKmode case.
Do block move in largest possible alignment.
(store_constructor): Set BITSIZE to -1 for variable size and properly
in case of array of BLKmode.
(expand_expr_unaligned): New function.
(do_compare_and_jump): Call it.
* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
does not include 'o'.
* function.c (instantiate_virtual_regs_1, case SET): Handle case where
both SET_DEST and SET_SRC reference a virtual register.
(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.
* integrate.c (expand_inline_function): Handle case of setting
virtual stack vars register (from built in setjmp); when parameter
lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
(subst_constant): Add new parm, MEMONLY.
(expand_inline_function, integrate_parm_decls): Pass new parm.
(integrate_decl_tree): Likewise.
(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
(copy_rtx_and_substitute, case SET): Add explicit calls to
copy_rtx_and_substitute for both sides.
* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
constraints.
(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
within INDEX_TYPE, instead of before.
(fixup_gotos): Use f->target_rtl, not the next insn,
since latter may be from a later fixup.
(expand_value_return): Correctly convert VAL when promoting function
return; support RETURN_REG being a PARALLEL.
(expand_return): When checking for result in regs and having
cleanup, consider PARALLEL in DECL_RTL as being in regs.
From-SVN: r30299
1999-11-01 02:11:22 +01:00
|
|
|
|
else if (1
|
|
|
|
|
#ifdef SWITCHES_NEED_SPACES
|
* collect2.c (main, write_c_file_stat), gcc.c (translate_options,
process_command, main), gcov.c (open_files, output_data), tlink.c
(frob_extension, scan_linker_output), toplev.c
(file_name_nondirectory): Use strchr () and strrchr () instead of
index () and rindex ().
cp:
* dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
(build_overload_value), repo.c (open_repo_file), xref.c
(open_xref_file): Use strchr () and strrchr () instead of index ()
and rindex ().
f:
* com.c (open_include_file, ffecom_open_include_): Use strchr ()
and strrchr () instead of index () and rindex ().
From-SVN: r37206
2000-11-02 20:03:59 +01:00
|
|
|
|
&& ! strchr (SWITCHES_NEED_SPACES, arg[1])
|
[multiple changes]
Fri Oct 29 15:25:07 1999 Arnaud Charlet <charlet@ACT-Europe.FR>
* gcov.c (DIR_SEPARATOR): Provide default.
(output_data): Add test for MS-DOS format absolute filename.
(fancy_abort): Correct program name.
(open_files): Open all files in binary mode.
* libgcc2.c (__bb_exit_func): Likewise.
* profile.c (init_branch_prob): Specify binary when opening files.
* flags.h (flag_unwind_tables): New decl.
* toplev.c (flag_unwind_table): New definition.
(f_options): Add -funwind-tables.
(decode_g_option): Clarify warning when unknown -g option is given.
(rest_of_compilation): If inside an inlined external function,
pretend we are just being declared.
* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
(dwarf2out_frame_finish): Likewise.
Fri Oct 29 06:32:44 1999 Geoffrey Keating <geoffk@cygnus.com>
* flow.c (propagate_block): When the last reference to a label
before an ADDR_VEC is deleted because the reference is a dead
store, delete the ADDR_VEC.
Fri Oct 29 07:44:26 1999 Vasco Pedro <vp@di.fct.unl.pt>
* fold-const.c (merge_ranges): In not in0, but in1, handle
upper bounds equal like subset case.
Thu Oct 28 19:22:24 1999 Douglas Rupp <rupp@gnat.com>
* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
passed in a register but moved to the stack.
Thu Oct 28 19:12:57 1999 Sam Tardieu <tardieu@act-europe.fr>
* gcc.c (pass_exit_codes, greatest_status): New variables.
(struct option_map): Add entry for "--pass-exit-codes".
(execute): Update greatest_status if error.
(display_help): Add documentation for -pass-exit-codes.
(process_command): Handle -pass-exit-codes.
(main): Look at pass_exit_codes and greatest_status on call to exit.
Thu Oct 28 18:06:50 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* reload.c (find_reloads): Refine test for no input reload
case to not includes reloads emitted after insn.
* function.c (find_temp_slots_from_address): Handle sum involving
a register that points to a temp slot.
(update_temp_slot_address): Make recursive call if both old and
new are PLUS with a common operand.
* calls.c (expand_call): Mark temp slot for result as having
address taken.
* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.
* gcc.c (process_command): Add standard_exec_prefix with "GCC"
component as well as "BINUTILS".
* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
* integrate.c (copy_rtx_and_substitute): Likewise.
(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
All callers changed.
* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.
* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
gdb extensions, write size of type; also be more consistent
in using references when this is a subtype.
* pa.md (extv, extzv, insv): Use define_expand to reject constant
that is out of range.
* loop.c (unknown_constant_address_altered): New variable.
(prescan_loop): Initialize it.
(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
(invariant_p, case MEM): Remove handling for volatile and readony;
check new variable if readonly.
(check_dbra_loop): Chdeck unknown_constant_address_altered.
* cse.c (canon_hash, case MEM): Do not record if BLKmode.
(addr_affects_sp_p): Removed from note_mem_written and only
define #ifdef AUTO_INC_DEC.
* alpha.c (input_operand, case ADDRESSOF): Treat as REG.
* regclass.c (record_reg_classes): Properly handle register move
directions.
* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
Don't think valid if both operands are invalid.
(struct constant_descriptor): New field RTL.
(mark_const_hash_entry): Mark it.
(record_constant{,_rtx}): Initialize it.
(output_constant_def): Allocate RTL in permanent obstack and
save in table.
({record,compare}_constant_1): Modes must match for
CONSTRUCTOR of ARRAY_TYPE.
* c-common.h (initializer_constant_valid_p): Delete decl from here.
* output.h (initializer_constant_valid_p): Move decl to here.
* c-common.c (initializer_constant_valid_p): Delete function from here.
* varasm.c (initializer_constant_valid_p): Move function to here.
* tree.h (STRIP_SIGN_NOPS): New macro.
* fold-const.c (optimize_minmax_comparison): New function.
(invert_truthvalue, case WITH_RECORD_EXPR): New case.
(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
widening conversions.
(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
to look at size of mode, not precision of type; also add missing cases.
(optimize_bit_field_compare, decode_field_reference): Don't try to
optimize COMPONENT_REF of a PLACEHOLDER_EXPR.
* dwarf2out.c (ctype.h): Include.
(dwarf2out_set_demangle_name_func): New function.
(size_of_line_info): Deleted.
(output_line_info): Compute size of line info table from difference
of labels.
(base_type_die, add_name_attribute): Call demangle function, if any.
(field_byte_offset): Use bits per word for variable length fields.
(gen_array_type_die): Add array name.
(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
(dwarf2out_add_library_unit_info): New function.
* explow.c (set_stack_check_libfunc): New function.
(stack_check_libfunc): New static variable.
(probe_stack_range): Allow front-end to set up a libfunc to call.
* combine.c (simplify_comparison): When making comparison in wider
mode, check for having commuted an AND and a SUBREG.
(contains_muldiv): New function.
(try_combine): Call it when dividing a PARALLEL.
(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
a PLUS.
(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
use one of the CLOBBERs instead.
(if_then_else_cond): If comparing against zero, just return thing
being compared.
* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
Don't generate shifts and subtract if have conditional arithmetic.
* rtl.h (delete_barrier): New declaration.
* jump.c (jump_optimize): Set up to handle conditional call.
In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
(delete_barrier): New function.
* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.
* recog.c (nonmemory_operand): Accept ADDRESSOF.
* tree.c (build_type_attribute_variant): Push to obstack of
ttype around type_hash_canon call.
* expr.c (placeholder_list): Move decl to file scope.
(expand_expr): Don't force access to volatile just because its
address is taken.
If ignoring reference operations, just expand the operands.
(expand_expr, case COMPONENT_REF): Propagate
EXPAND_CONST_ADDRESS to recursive call when expanding inner.
Refine test for using bitfield operations vs pointer punning.
(expand_expr, case CONVERT_EXPR): If converting to
BLKmode UNION_TYPE from BLKmode, just return inner object.
Use proper mode in store_field call.
Properly set sizes of object to store and total size in store_field
call for convert to union.
(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
memory (like for ADDR_EXPR). Also, don't put constant in register if
we'll want it in memory.
(readonly_fields_p): New function.
(expand_expr, case INDIRECT_REF): Call it if LHS.
(expand_assignment): Handle a RESULT_DECL where
DECL_RTL is a PARALLEL.
(do_jump, case WITH_RECORD_EXPR): New case.
(get_inner_reference): Always go inside a CONVERT_EXPR
and NOP_EXPR if both modes are the same.
(store_field): Use bitfield operations if size of bitsize is not same
as size of RHS's type.
Check for bitpos not a multiple of alignment in BLKmode case.
Do block move in largest possible alignment.
(store_constructor): Set BITSIZE to -1 for variable size and properly
in case of array of BLKmode.
(expand_expr_unaligned): New function.
(do_compare_and_jump): Call it.
* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
does not include 'o'.
* function.c (instantiate_virtual_regs_1, case SET): Handle case where
both SET_DEST and SET_SRC reference a virtual register.
(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.
* integrate.c (expand_inline_function): Handle case of setting
virtual stack vars register (from built in setjmp); when parameter
lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
(subst_constant): Add new parm, MEMONLY.
(expand_inline_function, integrate_parm_decls): Pass new parm.
(integrate_decl_tree): Likewise.
(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
(copy_rtx_and_substitute, case SET): Add explicit calls to
copy_rtx_and_substitute for both sides.
* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
constraints.
(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
within INDEX_TYPE, instead of before.
(fixup_gotos): Use f->target_rtl, not the next insn,
since latter may be from a later fixup.
(expand_value_return): Correctly convert VAL when promoting function
return; support RETURN_REG being a PARALLEL.
(expand_return): When checking for result in regs and having
cleanup, consider PARALLEL in DECL_RTL as being in regs.
From-SVN: r30299
1999-11-01 02:11:22 +01:00
|
|
|
|
#endif
|
|
|
|
|
)
|
|
|
|
|
|
1995-06-15 04:21:06 +02:00
|
|
|
|
output_file = &arg[2];
|
1992-02-06 23:06:40 +01:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 'r':
|
|
|
|
|
if (arg[2] == '\0')
|
|
|
|
|
rflag = 1;
|
|
|
|
|
break;
|
|
|
|
|
|
1992-04-27 18:50:26 +02:00
|
|
|
|
case 's':
|
1995-05-04 23:25:31 +02:00
|
|
|
|
if (arg[2] == '\0' && do_collecting)
|
1992-04-27 18:50:26 +02:00
|
|
|
|
{
|
|
|
|
|
/* We must strip after the nm run, otherwise C++ linking
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
will not work. Thus we strip in the second ld run, or
|
1992-04-27 18:50:26 +02:00
|
|
|
|
else with strip if there is no second ld run. */
|
|
|
|
|
strip_flag = 1;
|
|
|
|
|
ld1--;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
case 'v':
|
|
|
|
|
if (arg[2] == '\0')
|
|
|
|
|
vflag = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
1994-09-28 01:11:31 +01:00
|
|
|
|
}
|
* collect2.c (main, write_c_file_stat), gcc.c (translate_options,
process_command, main), gcov.c (open_files, output_data), tlink.c
(frob_extension, scan_linker_output), toplev.c
(file_name_nondirectory): Use strchr () and strrchr () instead of
index () and rindex ().
cp:
* dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
(build_overload_value), repo.c (open_repo_file), xref.c
(open_xref_file): Use strchr () and strrchr () instead of index ()
and rindex ().
f:
* com.c (open_include_file, ffecom_open_include_): Use strchr ()
and strrchr () instead of index () and rindex ().
From-SVN: r37206
2000-11-02 20:03:59 +01:00
|
|
|
|
else if ((p = strrchr (arg, '.')) != (char *) 0
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
&& (strcmp (p, ".o") == 0 || strcmp (p, ".a") == 0
|
2001-01-25 21:12:30 +01:00
|
|
|
|
|| strcmp (p, ".so") == 0 || strcmp (p, ".lo") == 0
|
|
|
|
|
|| strcmp (p, ".obj") == 0))
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1995-02-13 21:21:44 +01:00
|
|
|
|
if (first_file)
|
|
|
|
|
{
|
|
|
|
|
first_file = 0;
|
1995-06-15 04:21:06 +02:00
|
|
|
|
if (p[1] == 'o')
|
|
|
|
|
*ld2++ = o_file;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* place o_file BEFORE this argument! */
|
|
|
|
|
ld2--;
|
|
|
|
|
*ld2++ = o_file;
|
|
|
|
|
*ld2++ = arg;
|
|
|
|
|
}
|
1995-02-13 21:21:44 +01:00
|
|
|
|
}
|
2000-07-12 06:17:40 +02:00
|
|
|
|
if (p[1] == 'o' || p[1] == 'l')
|
1995-02-13 21:21:44 +01:00
|
|
|
|
*object++ = arg;
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* libraries can be specified directly, i.e. without -l flag. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
else
|
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* Saving a full library name. */
|
|
|
|
|
add_to_list (&libs, arg);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* This is added only for debugging purposes. */
|
|
|
|
|
if (debug)
|
1997-06-11 00:23:32 +02:00
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
fprintf (stderr, "List of libraries:\n");
|
|
|
|
|
dump_list (stderr, "\t", libs.first);
|
1997-06-11 00:23:32 +02:00
|
|
|
|
}
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
/* The AIX linker will discard static constructors in object files if
|
|
|
|
|
nothing else in the file is referenced, so look at them first. */
|
|
|
|
|
{
|
2000-01-07 19:33:12 +01:00
|
|
|
|
const char **export_object_lst = (const char **)object_lst;
|
1999-05-22 20:14:31 +02:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
while (export_object_lst < object)
|
|
|
|
|
scan_prog_file (*export_object_lst++, PASS_OBJ);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
struct id *list = libs.first;
|
1999-05-22 20:14:31 +02:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
for (; list; list = list->next)
|
|
|
|
|
scan_prog_file (list->name, PASS_FIRST);
|
|
|
|
|
}
|
1999-05-22 20:14:31 +02:00
|
|
|
|
|
|
|
|
|
if (exports.first)
|
|
|
|
|
{
|
2001-04-23 02:36:28 +02:00
|
|
|
|
char *buf = concat ("-bE:", export_file, NULL);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1999-05-22 20:14:31 +02:00
|
|
|
|
*ld1++ = buf;
|
|
|
|
|
*ld2++ = buf;
|
|
|
|
|
|
|
|
|
|
exportf = fopen (export_file, "w");
|
|
|
|
|
if (exportf == (FILE *) 0)
|
|
|
|
|
fatal_perror ("fopen %s", export_file);
|
|
|
|
|
write_aix_file (exportf, exports.first);
|
|
|
|
|
if (fclose (exportf))
|
|
|
|
|
fatal_perror ("fclose %s", export_file);
|
|
|
|
|
}
|
1995-05-09 12:21:13 +02:00
|
|
|
|
#endif
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
*c_ptr++ = c_file;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
*c_ptr = *ld1 = *object = (char *) 0;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (vflag)
|
|
|
|
|
{
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("collect2 version %s", version_string);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
#ifdef TARGET_VERSION
|
|
|
|
|
TARGET_VERSION;
|
|
|
|
|
#endif
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *ptr;
|
1993-05-21 21:55:25 +02:00
|
|
|
|
fprintf (stderr, "ld_file_name = %s\n",
|
|
|
|
|
(ld_file_name ? ld_file_name : "not found"));
|
|
|
|
|
fprintf (stderr, "c_file_name = %s\n",
|
|
|
|
|
(c_file_name ? c_file_name : "not found"));
|
|
|
|
|
fprintf (stderr, "nm_file_name = %s\n",
|
|
|
|
|
(nm_file_name ? nm_file_name : "not found"));
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#ifdef LDD_SUFFIX
|
|
|
|
|
fprintf (stderr, "ldd_file_name = %s\n",
|
|
|
|
|
(ldd_file_name ? ldd_file_name : "not found"));
|
|
|
|
|
#endif
|
1993-05-21 21:55:25 +02:00
|
|
|
|
fprintf (stderr, "strip_file_name = %s\n",
|
|
|
|
|
(strip_file_name ? strip_file_name : "not found"));
|
|
|
|
|
fprintf (stderr, "c_file = %s\n",
|
|
|
|
|
(c_file ? c_file : "not found"));
|
|
|
|
|
fprintf (stderr, "o_file = %s\n",
|
|
|
|
|
(o_file ? o_file : "not found"));
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
|
|
|
|
ptr = getenv ("COLLECT_GCC_OPTIONS");
|
|
|
|
|
if (ptr)
|
|
|
|
|
fprintf (stderr, "COLLECT_GCC_OPTIONS = %s\n", ptr);
|
|
|
|
|
|
|
|
|
|
ptr = getenv ("COLLECT_GCC");
|
|
|
|
|
if (ptr)
|
|
|
|
|
fprintf (stderr, "COLLECT_GCC = %s\n", ptr);
|
|
|
|
|
|
|
|
|
|
ptr = getenv ("COMPILER_PATH");
|
|
|
|
|
if (ptr)
|
|
|
|
|
fprintf (stderr, "COMPILER_PATH = %s\n", ptr);
|
|
|
|
|
|
configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* i386/t-beos, i386/x-beos, i386/xm-beos.h: New files.
* i386/beos-elf.h, i386/beos-pe.h: New files.
* Makefile.in (CROSS_SYSTEM_HEADER_DIR): New.
* cross-make (SYSTEM_HEADER_DIR): Define using
CROSS_SYSTEM_HEADER_DIR.
* gcc.c (LIBRARY_PATH_ENV): Provide default.
(process_command): Use it.
(main): Likewise. Kill trailing = from env vars.
(build_search_list): Put it back.
* collect2.c (main): Use LIBRARY_PATH_ENV.
* configure.in (GCC_NEED_DECLARATIONS): Add environ.
* toplev.c: Use NEED_DECLARATION_ENVIRON.
* tm.texi (Frame Layout): Document SMALL_STACK.
* c-common.c (c_common_nodes_and_builtins): Check it.
* system.h: Undef alloca after including glibc's <stdlib.h>,
if USE_C_ALLOCA is defined.
* gcc.c (set_input): New fn.
(main): After all input files are compiled, reset the input file
info to the first.
* aclocal.m4 (rindex, index): If already defined, don't attempt
to redefine.
* ginclude/varargs.h: (__va_list__): Define ifndef.
* ginclude/stdarg.h: Likewise.
* ginclude/stddef.h (__WCHAR_TYPE__) [BEOS]: Use int
instead of unsigned char.
* hash.h (true, false, boolean): Undef before enum.
From-SVN: r31366
2000-01-13 01:37:06 +01:00
|
|
|
|
ptr = getenv (LIBRARY_PATH_ENV);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
if (ptr)
|
configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* i386/t-beos, i386/x-beos, i386/xm-beos.h: New files.
* i386/beos-elf.h, i386/beos-pe.h: New files.
* Makefile.in (CROSS_SYSTEM_HEADER_DIR): New.
* cross-make (SYSTEM_HEADER_DIR): Define using
CROSS_SYSTEM_HEADER_DIR.
* gcc.c (LIBRARY_PATH_ENV): Provide default.
(process_command): Use it.
(main): Likewise. Kill trailing = from env vars.
(build_search_list): Put it back.
* collect2.c (main): Use LIBRARY_PATH_ENV.
* configure.in (GCC_NEED_DECLARATIONS): Add environ.
* toplev.c: Use NEED_DECLARATION_ENVIRON.
* tm.texi (Frame Layout): Document SMALL_STACK.
* c-common.c (c_common_nodes_and_builtins): Check it.
* system.h: Undef alloca after including glibc's <stdlib.h>,
if USE_C_ALLOCA is defined.
* gcc.c (set_input): New fn.
(main): After all input files are compiled, reset the input file
info to the first.
* aclocal.m4 (rindex, index): If already defined, don't attempt
to redefine.
* ginclude/varargs.h: (__va_list__): Define ifndef.
* ginclude/stdarg.h: Likewise.
* ginclude/stddef.h (__WCHAR_TYPE__) [BEOS]: Use int
instead of unsigned char.
* hash.h (true, false, boolean): Undef before enum.
From-SVN: r31366
2000-01-13 01:37:06 +01:00
|
|
|
|
fprintf (stderr, "%-20s= %s\n", LIBRARY_PATH_ENV, ptr);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
|
|
|
|
fprintf (stderr, "\n");
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
1997-08-11 22:23:53 +02:00
|
|
|
|
/* Load the program, searching all libraries and attempting to provide
|
|
|
|
|
undefined symbols from repository information. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* On AIX we do this later. */
|
1998-02-20 13:31:00 +01:00
|
|
|
|
#ifndef COLLECT_EXPORT_LIST
|
1999-10-12 23:13:13 +02:00
|
|
|
|
do_tlink (ld1_argv, object_lst);
|
1998-02-20 13:28:16 +01:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* If -r or they will be run via some other method, do not build the
|
1996-07-03 20:43:21 +02:00
|
|
|
|
constructor or destructor list, just return now. */
|
1998-05-12 22:07:09 +02:00
|
|
|
|
if (rflag
|
|
|
|
|
#ifndef COLLECT_EXPORT_LIST
|
|
|
|
|
|| ! do_collecting
|
|
|
|
|
#endif
|
|
|
|
|
)
|
1997-08-11 22:23:53 +02:00
|
|
|
|
{
|
1998-02-20 13:30:20 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1999-10-12 23:13:13 +02:00
|
|
|
|
/* Do the link we avoided above if we are exiting. */
|
|
|
|
|
do_tlink (ld1_argv, object_lst);
|
|
|
|
|
|
1997-08-11 22:23:53 +02:00
|
|
|
|
/* But make sure we delete the export file we may have created. */
|
|
|
|
|
if (export_file != 0 && export_file[0])
|
|
|
|
|
maybe_unlink (export_file);
|
1998-02-20 13:30:20 +01:00
|
|
|
|
#endif
|
1998-06-28 22:07:32 +02:00
|
|
|
|
maybe_unlink (c_file);
|
|
|
|
|
maybe_unlink (o_file);
|
1997-08-11 22:23:53 +02:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
/* Examine the namelist with nm and search it for static constructors
|
|
|
|
|
and destructors to call.
|
1996-07-03 20:43:21 +02:00
|
|
|
|
Write the constructor and destructor tables to a .s file and reload. */
|
1995-05-04 23:25:31 +02:00
|
|
|
|
|
1999-05-22 20:14:31 +02:00
|
|
|
|
/* On AIX we already scanned for global constructors/destructors. */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifndef COLLECT_EXPORT_LIST
|
1993-03-18 22:17:20 +01:00
|
|
|
|
scan_prog_file (output_file, PASS_FIRST);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#ifdef SCAN_LIBRARIES
|
|
|
|
|
scan_libraries (output_file);
|
|
|
|
|
#endif
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
{
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("%d constructor(s) found\n", constructors.number);
|
|
|
|
|
notice ("%d destructor(s) found\n", destructors.number);
|
1999-06-21 22:20:26 +02:00
|
|
|
|
notice ("%d frame table(s) found\n", frame_tables.number);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (constructors.number == 0 && destructors.number == 0
|
1997-09-10 20:00:28 +02:00
|
|
|
|
&& frame_tables.number == 0
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#if defined (SCAN_LIBRARIES) || defined (COLLECT_EXPORT_LIST)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
/* If we will be running these functions ourselves, we want to emit
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
stubs into the shared library so that we do not have to relink
|
1994-11-19 05:09:58 +01:00
|
|
|
|
dependent programs when we add static objects. */
|
|
|
|
|
&& ! shared_obj
|
|
|
|
|
#endif
|
|
|
|
|
)
|
1992-04-27 18:50:26 +02:00
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
2003-06-29 15:53:12 +02:00
|
|
|
|
/* Do tlink without additional code generation. */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
do_tlink (ld1_argv, object_lst);
|
|
|
|
|
#endif
|
1992-04-27 18:50:26 +02:00
|
|
|
|
/* Strip now if it was requested on the command line. */
|
|
|
|
|
if (strip_flag)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
char **real_strip_argv = (char **) xcalloc (sizeof (char *), 3);
|
|
|
|
|
const char ** strip_argv = (const char **) real_strip_argv;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1993-02-11 20:41:46 +01:00
|
|
|
|
strip_argv[0] = strip_file_name;
|
1993-03-18 22:17:20 +01:00
|
|
|
|
strip_argv[1] = output_file;
|
1992-04-27 18:50:26 +02:00
|
|
|
|
strip_argv[2] = (char *) 0;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
fork_execute ("strip", real_strip_argv);
|
1992-04-27 18:50:26 +02:00
|
|
|
|
}
|
1995-06-23 00:03:38 +02:00
|
|
|
|
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
maybe_unlink (export_file);
|
|
|
|
|
#endif
|
1998-06-28 22:07:32 +02:00
|
|
|
|
maybe_unlink (c_file);
|
|
|
|
|
maybe_unlink (o_file);
|
1992-04-27 18:50:26 +02:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
2001-08-01 19:57:27 +02:00
|
|
|
|
/* Sort ctor and dtor lists by priority. */
|
1998-08-13 19:29:30 +02:00
|
|
|
|
sort_ids (&constructors);
|
|
|
|
|
sort_ids (&destructors);
|
|
|
|
|
|
1994-09-22 19:14:46 +02:00
|
|
|
|
maybe_unlink(output_file);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
outf = fopen (c_file, "w");
|
1996-07-04 00:07:53 +02:00
|
|
|
|
if (outf == (FILE *) 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("fopen %s", c_file);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
write_c_file (outf, c_file);
|
|
|
|
|
|
|
|
|
|
if (fclose (outf))
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("fclose %s", c_file);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-06-15 04:21:06 +02:00
|
|
|
|
/* Tell the linker that we have initializer and finalizer functions. */
|
|
|
|
|
#ifdef LD_INIT_SWITCH
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
2001-04-23 02:36:28 +02:00
|
|
|
|
*ld2++ = concat (LD_INIT_SWITCH, ":", initname, ":", fininame, NULL);
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#else
|
1995-06-15 04:21:06 +02:00
|
|
|
|
*ld2++ = LD_INIT_SWITCH;
|
|
|
|
|
*ld2++ = initname;
|
|
|
|
|
*ld2++ = LD_FINI_SWITCH;
|
|
|
|
|
*ld2++ = fininame;
|
|
|
|
|
#endif
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#endif
|
1995-06-15 04:21:06 +02:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
if (shared_obj)
|
|
|
|
|
{
|
1999-05-22 20:14:31 +02:00
|
|
|
|
/* If we did not add export flag to link arguments before, add it to
|
|
|
|
|
second link phase now. No new exports should have been added. */
|
|
|
|
|
if (! exports.first)
|
2001-04-23 02:36:28 +02:00
|
|
|
|
*ld2++ = concat ("-bE:", export_file, NULL);
|
1999-05-22 20:14:31 +02:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
add_to_list (&exports, initname);
|
|
|
|
|
add_to_list (&exports, fininame);
|
1995-06-15 04:21:06 +02:00
|
|
|
|
add_to_list (&exports, "_GLOBAL__DI");
|
|
|
|
|
add_to_list (&exports, "_GLOBAL__DD");
|
1995-05-09 12:21:13 +02:00
|
|
|
|
exportf = fopen (export_file, "w");
|
1996-07-04 00:07:53 +02:00
|
|
|
|
if (exportf == (FILE *) 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("fopen %s", export_file);
|
1999-05-22 20:14:31 +02:00
|
|
|
|
write_aix_file (exportf, exports.first);
|
1995-05-09 12:21:13 +02:00
|
|
|
|
if (fclose (exportf))
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("fclose %s", export_file);
|
1995-05-09 12:21:13 +02:00
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
1999-05-22 20:14:31 +02:00
|
|
|
|
/* End of arguments to second link phase. */
|
|
|
|
|
*ld2 = (char*) 0;
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
{
|
1993-03-18 22:17:20 +01:00
|
|
|
|
fprintf (stderr, "\n========== output_file = %s, c_file = %s\n",
|
|
|
|
|
output_file, c_file);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
write_c_file (stderr, "stderr");
|
|
|
|
|
fprintf (stderr, "========== end of c_file\n\n");
|
1995-05-09 12:21:13 +02:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
fprintf (stderr, "\n========== export_file = %s\n", export_file);
|
1999-05-22 20:14:31 +02:00
|
|
|
|
write_aix_file (stderr, exports.first);
|
1995-05-09 12:21:13 +02:00
|
|
|
|
fprintf (stderr, "========== end of export_file\n\n");
|
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Assemble the constructor and destructor tables.
|
1996-07-04 00:07:53 +02:00
|
|
|
|
Link the tables in with the rest of the program. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1993-02-11 20:41:46 +01:00
|
|
|
|
fork_execute ("gcc", c_argv);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* On AIX we must call tlink because of possible templates resolution */
|
|
|
|
|
do_tlink (ld2_argv, object_lst);
|
|
|
|
|
#else
|
|
|
|
|
/* Otherwise, simply call ld because tlink is already done */
|
1993-02-11 20:41:46 +01:00
|
|
|
|
fork_execute ("ld", ld2_argv);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
/* Let scan_prog_file do any final mods (OSF/rose needs this for
|
|
|
|
|
constructors/destructors in shared libraries. */
|
1993-03-18 22:17:20 +01:00
|
|
|
|
scan_prog_file (output_file, PASS_SECOND);
|
2003-06-29 14:07:06 +02:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
maybe_unlink (c_file);
|
|
|
|
|
maybe_unlink (o_file);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1995-05-09 12:21:13 +02:00
|
|
|
|
maybe_unlink (export_file);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2002-09-22 04:03:17 +02:00
|
|
|
|
/* Wait for a process to finish, and exit if a nonzero status is found. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
collect_wait (const char *prog)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
int status;
|
|
|
|
|
|
2003-02-02 02:31:40 +01:00
|
|
|
|
pwait (pid, &status, 0);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
if (status)
|
|
|
|
|
{
|
1994-10-04 21:53:02 +01:00
|
|
|
|
if (WIFSIGNALED (status))
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1994-10-04 21:53:02 +01:00
|
|
|
|
int sig = WTERMSIG (status);
|
c-common.c (check_format_info): Don't call a variadic function with a non-literal format string.
* c-common.c (check_format_info): Don't call a variadic function
with a non-literal format string.
* c-decl.c (grokdeclarator, start_struct, finish_struct): Likewise.
* c-typeck.c (build_component_ref, build_unary_op, lvalue_or_else,
pedantic_lvalue_warning, error_init, pedwarn_init, warning_init):
Likewise.
* cccp.c (check_macro_name, do_xifdef, vwarning_with_line):
Likewise.
* collect2.c (collect_wait): Likewise.
* dbxout.c (dbxout_type): Likewise.
* gcc.c (do_spec_1): Likewise.
* genemit.c (gen_insn, gen_expand): Likewise.
* genrecog.c (write_switch, write_subroutine): Likewise.
* mips-tfile.c (catch_signal, botch): Likewise.
* print-rtl.c (print_rtx): Likewise.
* toplev.c (default_print_error_function, report_error_function,
_fatal_insn): Likewise.
From-SVN: r30666
1999-11-25 17:58:32 +01:00
|
|
|
|
error ("%s terminated with signal %d [%s]%s",
|
|
|
|
|
prog, sig, strsignal(sig),
|
2003-03-30 21:01:58 +02:00
|
|
|
|
WCOREDUMP(status) ? ", core dumped" : "");
|
1997-04-13 20:19:48 +02:00
|
|
|
|
collect_exit (FATAL_EXIT_CODE);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
1994-10-04 21:53:02 +01:00
|
|
|
|
if (WIFEXITED (status))
|
1995-05-04 23:25:31 +02:00
|
|
|
|
return WEXITSTATUS (status);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
do_wait (const char *prog)
|
1995-05-04 23:25:31 +02:00
|
|
|
|
{
|
|
|
|
|
int ret = collect_wait (prog);
|
|
|
|
|
if (ret != 0)
|
|
|
|
|
{
|
|
|
|
|
error ("%s returned %d exit status", prog, ret);
|
|
|
|
|
collect_exit (ret);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1999-03-25 00:35:34 +01:00
|
|
|
|
/* Execute a program, and wait for the reply. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
collect_execute (const char *prog, char **argv, const char *redir)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1999-03-25 00:35:34 +01:00
|
|
|
|
char *errmsg_fmt;
|
|
|
|
|
char *errmsg_arg;
|
|
|
|
|
int redir_handle = -1;
|
|
|
|
|
int stdout_save = -1;
|
|
|
|
|
int stderr_save = -1;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (vflag || debug)
|
|
|
|
|
{
|
|
|
|
|
char **p_argv;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *str;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1993-02-11 20:41:46 +01:00
|
|
|
|
if (argv[0])
|
|
|
|
|
fprintf (stderr, "%s", argv[0]);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
else
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("[cannot find %s]", prog);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
for (p_argv = &argv[1]; (str = *p_argv) != (char *) 0; p_argv++)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stderr, " %s", str);
|
|
|
|
|
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fflush (stdout);
|
|
|
|
|
fflush (stderr);
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* If we cannot find a program we need, complain error. Do this here
|
|
|
|
|
since we might not end up needing something that we could not find. */
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
1993-02-11 20:41:46 +01:00
|
|
|
|
if (argv[0] == 0)
|
|
|
|
|
fatal ("cannot find `%s'", prog);
|
1993-01-02 09:32:09 +01:00
|
|
|
|
|
1999-03-25 00:35:34 +01:00
|
|
|
|
if (redir)
|
|
|
|
|
{
|
|
|
|
|
/* Open response file. */
|
|
|
|
|
redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT);
|
|
|
|
|
|
|
|
|
|
/* Duplicate the stdout and stderr file handles
|
|
|
|
|
so they can be restored later. */
|
|
|
|
|
stdout_save = dup (STDOUT_FILENO);
|
|
|
|
|
if (stdout_save == -1)
|
|
|
|
|
fatal_perror ("redirecting stdout: %s", redir);
|
|
|
|
|
stderr_save = dup (STDERR_FILENO);
|
|
|
|
|
if (stderr_save == -1)
|
|
|
|
|
fatal_perror ("redirecting stdout: %s", redir);
|
|
|
|
|
|
|
|
|
|
/* Redirect stdout & stderr to our response file. */
|
|
|
|
|
dup2 (redir_handle, STDOUT_FILENO);
|
|
|
|
|
dup2 (redir_handle, STDERR_FILENO);
|
|
|
|
|
}
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
2003-02-02 02:31:40 +01:00
|
|
|
|
pid = pexecute (argv[0], argv, argv[0], NULL, &errmsg_fmt, &errmsg_arg,
|
|
|
|
|
(PEXECUTE_FIRST | PEXECUTE_LAST | PEXECUTE_SEARCH));
|
1999-03-25 00:35:34 +01:00
|
|
|
|
|
|
|
|
|
if (redir)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1999-03-25 00:35:34 +01:00
|
|
|
|
/* Restore stdout and stderr to their previous settings. */
|
|
|
|
|
dup2 (stdout_save, STDOUT_FILENO);
|
|
|
|
|
dup2 (stderr_save, STDERR_FILENO);
|
1995-05-04 23:25:31 +02:00
|
|
|
|
|
ChangeLog.2, [...]: Fix spelling errors.
* ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog.5, ChangeLog,
cfg.c, cfganal.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgrtl.c,
collect2.c, combine.c, config.in, configure, configure.in,
conflict.c, dwarf2out.c, dwarfout.c, except.c, final.c, flow.c,
genattrtab.c, ggc-page.c, jump.c, lcm.c, predict.c, reg-stack.c,
reload1.c, rtlanal.c, sched-rgn.c, toplev.c, unwind-dw2-fde.h: Fix
spelling errors.
From-SVN: r46928
2001-11-11 12:25:28 +01:00
|
|
|
|
/* Close response file. */
|
1999-03-25 00:35:34 +01:00
|
|
|
|
close (redir_handle);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
1999-03-25 00:35:34 +01:00
|
|
|
|
|
2003-02-02 02:31:40 +01:00
|
|
|
|
if (pid == -1)
|
1999-03-25 00:35:34 +01:00
|
|
|
|
fatal_perror (errmsg_fmt, errmsg_arg);
|
1995-05-04 23:25:31 +02:00
|
|
|
|
}
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
fork_execute (const char *prog, char **argv)
|
1995-05-04 23:25:31 +02:00
|
|
|
|
{
|
|
|
|
|
collect_execute (prog, argv, NULL);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
do_wait (prog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Unlink a file unless we are debugging. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
maybe_unlink (const char *file)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
if (!debug)
|
|
|
|
|
unlink (file);
|
|
|
|
|
else
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("[Leaving %s]\n", file);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1998-08-13 19:29:30 +02:00
|
|
|
|
static long sequence_number = 0;
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
/* Add a name to a linked list. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
add_to_list (struct head *head_ptr, const char *name)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1994-10-20 23:06:20 +01:00
|
|
|
|
struct id *newid
|
|
|
|
|
= (struct id *) xcalloc (sizeof (struct id) + strlen (name), 1);
|
|
|
|
|
struct id *p;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
strcpy (newid->name, name);
|
|
|
|
|
|
|
|
|
|
if (head_ptr->first)
|
|
|
|
|
head_ptr->last->next = newid;
|
|
|
|
|
else
|
|
|
|
|
head_ptr->first = newid;
|
|
|
|
|
|
1994-10-20 23:06:20 +01:00
|
|
|
|
/* Check for duplicate symbols. */
|
|
|
|
|
for (p = head_ptr->first;
|
|
|
|
|
strcmp (name, p->name) != 0;
|
|
|
|
|
p = p->next)
|
|
|
|
|
;
|
|
|
|
|
if (p != newid)
|
|
|
|
|
{
|
|
|
|
|
head_ptr->last->next = 0;
|
|
|
|
|
free (newid);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
newid->sequence = ++sequence_number;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
head_ptr->last = newid;
|
|
|
|
|
head_ptr->number++;
|
|
|
|
|
}
|
|
|
|
|
|
1998-08-13 19:29:30 +02:00
|
|
|
|
/* Grab the init priority number from an init function name that
|
|
|
|
|
looks like "_GLOBAL_.I.12345.foo". */
|
|
|
|
|
|
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
extract_init_priority (const char *name)
|
1998-08-13 19:29:30 +02:00
|
|
|
|
{
|
1998-10-12 22:08:10 +02:00
|
|
|
|
int pos = 0, pri;
|
1998-08-13 19:29:30 +02:00
|
|
|
|
|
|
|
|
|
while (name[pos] == '_')
|
|
|
|
|
++pos;
|
|
|
|
|
pos += 10; /* strlen ("GLOBAL__X_") */
|
|
|
|
|
|
2001-08-01 19:57:27 +02:00
|
|
|
|
/* Extract init_p number from ctor/dtor name. */
|
1998-10-12 22:08:10 +02:00
|
|
|
|
pri = atoi (name + pos);
|
|
|
|
|
return pri ? pri : DEFAULT_INIT_PRIORITY;
|
1998-08-13 19:29:30 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Insertion sort the ids from ctor/dtor list HEAD_PTR in descending order.
|
|
|
|
|
ctors will be run from right to left, dtors from left to right. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
sort_ids (struct head *head_ptr)
|
1998-08-13 19:29:30 +02:00
|
|
|
|
{
|
|
|
|
|
/* id holds the current element to insert. id_next holds the next
|
|
|
|
|
element to insert. id_ptr iterates through the already sorted elements
|
|
|
|
|
looking for the place to insert id. */
|
|
|
|
|
struct id *id, *id_next, **id_ptr;
|
|
|
|
|
|
|
|
|
|
id = head_ptr->first;
|
|
|
|
|
|
|
|
|
|
/* We don't have any sorted elements yet. */
|
|
|
|
|
head_ptr->first = NULL;
|
|
|
|
|
|
|
|
|
|
for (; id; id = id_next)
|
|
|
|
|
{
|
|
|
|
|
id_next = id->next;
|
|
|
|
|
id->sequence = extract_init_priority (id->name);
|
|
|
|
|
|
|
|
|
|
for (id_ptr = &(head_ptr->first); ; id_ptr = &((*id_ptr)->next))
|
|
|
|
|
if (*id_ptr == NULL
|
|
|
|
|
/* If the sequence numbers are the same, we put the id from the
|
|
|
|
|
file later on the command line later in the list. */
|
|
|
|
|
|| id->sequence > (*id_ptr)->sequence
|
|
|
|
|
/* Hack: do lexical compare, too.
|
|
|
|
|
|| (id->sequence == (*id_ptr)->sequence
|
|
|
|
|
&& strcmp (id->name, (*id_ptr)->name) > 0) */
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
id->next = *id_ptr;
|
|
|
|
|
*id_ptr = id;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Now set the sequence numbers properly so write_c_file works. */
|
|
|
|
|
for (id = head_ptr->first; id; id = id->next)
|
|
|
|
|
id->sequence = ++sequence_number;
|
|
|
|
|
}
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
/* Write: `prefix', the names on list LIST, `suffix'. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
write_list (FILE *stream, const char *prefix, struct id *list)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
while (list)
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "%sx%d,\n", prefix, list->sequence);
|
|
|
|
|
list = list->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2001-04-27 21:59:53 +02:00
|
|
|
|
#if LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
|
|
|
|
|
/* Given a STRING, return nonzero if it occurs in the list in range
|
|
|
|
|
[ARGS_BEGIN,ARGS_END). */
|
|
|
|
|
|
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
is_in_args (const char *string, const char **args_begin,
|
|
|
|
|
const char **args_end)
|
2001-04-27 21:59:53 +02:00
|
|
|
|
{
|
|
|
|
|
const char **args_pointer;
|
|
|
|
|
for (args_pointer = args_begin; args_pointer != args_end; ++args_pointer)
|
|
|
|
|
if (strcmp (string, *args_pointer) == 0)
|
|
|
|
|
return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
|
|
|
|
|
|
1998-03-29 13:49:10 +02:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* This function is really used only on AIX, but may be useful. */
|
2001-11-04 03:47:36 +01:00
|
|
|
|
#if 0
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
is_in_list (const char *prefix, struct id *list)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
{
|
|
|
|
|
while (list)
|
|
|
|
|
{
|
|
|
|
|
if (!strcmp (prefix, list->name)) return 1;
|
|
|
|
|
list = list->next;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
1998-03-29 13:49:10 +02:00
|
|
|
|
#endif
|
2001-11-04 03:47:36 +01:00
|
|
|
|
#endif /* COLLECT_EXPORT_LIST */
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
|
|
|
|
/* Added for debugging purpose. */
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
dump_list (FILE *stream, const char *prefix, struct id *list)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
{
|
|
|
|
|
while (list)
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "%s%s,\n", prefix, list->name);
|
|
|
|
|
list = list->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#endif
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#if 0
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
dump_prefix_list (FILE *stream, const char *prefix, struct prefix_list *list)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
{
|
|
|
|
|
while (list)
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "%s%s,\n", prefix, list->prefix);
|
|
|
|
|
list = list->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
(dbxout.o): Depend on toplev.h.
($(SCHED_PREFIX)sched.o): Likewise.
($(out_object_file)): Likewise for system.h and toplev.h.
(cppmain.o): Depend on gansidecl.h.
(cpplib.o): Likewise.
(cpperror.o): Likewise.
(cppexp.o): Likewise.
(cpphash.o): Likewise.
(cppalloc.o): Likewise.
(fix-header.o): Depend on cpplib.h and cpphash.h.
(scan-decls.o): Depend on gansidecl.h.
* basic-block.h (free_regset_vector): Add prototype.
* cccp.c (check_precompiled): Mark parameter `fname' with
ATTRIBUTE_UNUSED.
(do_assert): Likewise for `op' and `keyword'.
(do_unassert): Likewise.
(do_line): Likewise for `keyword'.
(do_error): Likewise for `op' and `keyword'.
(do_warning): Likewise.
(do_ident): Likewise for `keyword'.
(do_pragma): Likewise for `limit', `op' and `keyword'.
(do_sccs): Likewise.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(do_else): Likewise.
(do_endif): Likewise.
* collect2.c (getenv): Remove redundant prototype.
(collect_exit, collect_execute, dump_file): Likewise.
(dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
(dump_prefix_list): Hide prototype and definition.
* sparc.c: Include toplev.h.
(intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
(symbolic_memory_operand): Likewise.
(sp64_medium_pic_operand): Likewise.
(data_segment_operand): Likewise.
(text_segment_operand): Likewise.
(splittable_symbolic_memory_operand): Likewise.
(splittable_immediate_memory_operand): Likewise.
(eq_or_neq): Likewise.
(normal_comp_operator): Likewise.
(noov_compare_op): Likewise.
(v9_regcmp_op): Likewise.
(v8plus_regcmp_op): Likewise.
(extend_op): Likewise.
(cc_arithop): Likewise.
(cc_arithopn): Likewise.
(small_int): Likewise.
(uns_small_int): Likewise.
(clobbered_register): Likewise.
(legitimize_pic_address): Likewise.
(delay_operand): Likewise.
(sparc_builtin_saveregs): Remove unused variable `stdarg'.
* sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
* sparc.md (cmpdi_v8plus): Add abort for default case in switch.
* cppalloc.c: Include gansidecl.h.
* cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
(cpp_file_line_for_message): Mark parameter `pfile' with
ATTRIBUTE_UNUSED.
(v_cpp_message): New function.
(cpp_message): Use it. Also convert to variable arguments.
(cpp_fatal): Likewise.
(cpp_pfatal_with_name): Constify parameter `name'.
* cppexp.c: Move gansidecl.h before cpplib.h.
* cpphash.c: Likewise.
* cpphash.h (hashf, delete_macro): Add prototypes.
* cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
cpplib.h. Don't include errno.h.
(update_path): Add arguments to prototype.
(cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
cpp_print_containing_files): Remove redundant prototypes.
(cpp_hash_cleanup, add_import, append_include_chain,
make_assertion, path_include, initialize_builtins,
initialize_char_syntax, finclude, validate_else, comp_def_part,
lookup_import, redundant_include_p, is_system_include,
read_name_map, read_filename_string, open_include_file,
check_macro_name, compare_defs, compare_token_lists,
eval_if_expression, change_newlines): Add prototype arguments.
(hashf): Remove redundant prototype.
(read_token_list, free_token_list, safe_read, xcalloc, savestring,
conditional_skip, skip_if_group): Add prototype arguments.
(fdopen): Remove redundant prototype.
(do_define, do_line, do_include, do_undef, do_error, do_pragma,
do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
(struct directive): Add prototype arguments to function pointer
member `func'.
(handle_directive): Add missing arguments to call to `do_line'.
(do_include): Mark parameters `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_line): Likewise for `keyword' and new parameters `unused1' and
`unused2'.
(do_error): Likewise for `keyword'.
(do_warning): Likewise. Also add missing argument `pfile' in call
to cpp_pedwarn.
(do_once): Mark parameter `keyword', `unused1' and `unused2' with
ATTRIBUTE_UNUSED.
(do_ident): Likewise for `keyword', `buf' and `limit'.
(do_pragma): Likewise. Also add missing arguments in call to do_once.
(do_sccs): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_if): Likewise for `keyword'.
(do_elif): Likewise.
(eval_if_expression): Likewise for `buf' and `length'.
(do_xifdef): Likewise for `unused1' and `unused2'.
(do_else): Likewise for `keyword', `buf' and `limit'.
(do_endif): Likewise.
(parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
(cpp_handle_options): Remove superfluous NULL argument in call to
cpp_fatal.
(cpp_handle_options): Likewise.
(do_assert): Mark parameter `keyword', `buf' and `limit' with
ATTRIBUTE_UNUSED.
(do_unassert): Likewise.
(cpp_print_file_and_line): Add missing argument `pfile' in call to
cpp_file_line_for_message.
(v_cpp_error): New function.
(cpp_error): Use it. Also accept variable arguments.
(v_cpp_warning): New function.
(cpp_warning): Use it. Also accept variable arguments.
(cpp_pedwarn): Accept variable arguments.
(v_cpp_error_with_line): New function
(cpp_error_with_line): Use it. Accept variable arguments.
(v_cpp_warning_with_line): New function.
(cpp_warning_with_line): Use it. Accept variable arguments. Hide
definition.
(cpp_pedwarn_with_line): Accept variable arguments.
(cpp_pedwarn_with_file_and_line): Likewise.
(cpp_error_from_errno): Constify parameter `name'. Add missing
argument `pfile' in call to cpp_file_line_for_message.
(cpp_perror_with_name): Constify parameter `name'.
* cpplib.h: Define PARAMS() in terms of PROTO().
(fatal): Remove redundant prototype.
(cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
cpp_fatal, cpp_message, cpp_pfatal_with_name,
cpp_file_line_for_message, cpp_print_containing_files): Add
arguments to prototypes.
(scan_decls, cpp_finish): Add prototypes.
* cppmain.c: Include gansidecl.h.
(main): Remove unused variable `i'.
* dbxout.c: Include toplev.h.
* demangle.h (do_tlink, collect_execute, collect_exit,
collect_wait, dump_file, file_exists): Add prototype.
* dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
prototype and definition.
(gen_unspecified_parameters_die): Don't assign results of call to
function new_die() to unused variable `parm_die'.
(dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
(dwarf2out_define): Likewise for `lineno' and `buffer'.
* dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
prototype and definition.
(output_die): Add prototype arguments to function pointer arg.
(output_unspecified_parameters_die): Mark parameter `arg' with
ATTRIBUTE_UNUSED.
* except.c (output_exception_table_entry): Remove unused variable
`eh_entry'.
* except.h (expand_fixup_region_start, expand_fixup_region_end):
Add prototypes.
* expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
* expr.h (do_jump_by_parts_equality_rtx): Add prototype.
* fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
before cpplib.h, include cpphash.h, remove redundant prototype of
cpp_fatal, don't define `const', add a prototype for `fatal'.
(cpp_file_line_for_message): Add missing arguments `pfile'.
(v_cpp_message): New function.
(cpp_message): Use it.
(v_fatal): New function.
(fatal, cpp_fatal): Use it.
(cpp_pfatal_with_name): Constify parameter `name'.
* flow.c (free_regset_vector): Remove redundant prototype.
* function.c (round_down): Wrap prototype and definition with
macro ARGS_GROW_DOWNWARD.
(record_insns): Wrap prototype and definition with
defined (HAVE_prologue) || defined (HAVE_epilogue).
* gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
* gen-protos.c: Include gansidecl.h.
(hashf): Don't make it static, constify parameter `name'.
* genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
specifier %s in calls to function `fatal'.
* haifa-sched.c: Include toplev.h.
(find_rgns): Remove unused variable `j'.
* integrate.c (note_modified_parmregs): Mark parameter `x' with
ATTRIBUTE_UNUSED.
(mark_stores): Likewise.
* jump.c (mark_modified_reg): Likewise.
* output.h (insn_current_reference_address): Add prototype.
(eh_frame_section): Likewise.
* print-rtl.c: Include bitmap.h.
* reload1.c (reload): Wrap variables `note' and `next' in macro
PRESERVE_DEATH_INFO_REGNO_P.
(forget_old_reloads_1): Mark parameter `ignored' with
ATTRIBUTE_UNUSED.
(choose_reload_regs): Remove unused variable `in'.
(reload_cse_invalidate_mem): Mark parameter `ignore' with
ATTRIBUTE_UNUSED.
(reload_cse_check_clobber): Likewise.
* rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
(mark_elimination): Fix typo in prototype.
* scan-decls.c: Include gansidecl.h.
* tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.
From-SVN: r19867
1998-05-19 10:42:48 +02:00
|
|
|
|
#endif
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
write_list_with_asm (FILE *stream, const char *prefix, struct id *list)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
while (list)
|
|
|
|
|
{
|
1993-01-26 23:14:37 +01:00
|
|
|
|
fprintf (stream, "%sx%d __asm__ (\"%s\");\n",
|
1992-02-06 23:06:40 +01:00
|
|
|
|
prefix, list->sequence, list->name);
|
|
|
|
|
list = list->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
/* Write out the constructor and destructor tables statically (for a shared
|
|
|
|
|
object), along with the functions to execute them. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
write_c_file_stat (FILE *stream, const char *name ATTRIBUTE_UNUSED)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char *p, *q;
|
|
|
|
|
char *prefix, *r;
|
1997-09-10 20:00:28 +02:00
|
|
|
|
int frames = (frame_tables.number > 0);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
/* Figure out name of output_file, stripping off .so version. */
|
* collect2.c (main, write_c_file_stat), gcc.c (translate_options,
process_command, main), gcov.c (open_files, output_data), tlink.c
(frob_extension, scan_linker_output), toplev.c
(file_name_nondirectory): Use strchr () and strrchr () instead of
index () and rindex ().
cp:
* dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
(build_overload_value), repo.c (open_repo_file), xref.c
(open_xref_file): Use strchr () and strrchr () instead of index ()
and rindex ().
f:
* com.c (open_include_file, ffecom_open_include_): Use strchr ()
and strrchr () instead of index () and rindex ().
From-SVN: r37206
2000-11-02 20:03:59 +01:00
|
|
|
|
p = strrchr (output_file, '/');
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (p == 0)
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
p = output_file;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
else
|
|
|
|
|
p++;
|
|
|
|
|
q = p;
|
|
|
|
|
while (q)
|
|
|
|
|
{
|
* collect2.c (main, write_c_file_stat), gcc.c (translate_options,
process_command, main), gcov.c (open_files, output_data), tlink.c
(frob_extension, scan_linker_output), toplev.c
(file_name_nondirectory): Use strchr () and strrchr () instead of
index () and rindex ().
cp:
* dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
(build_overload_value), repo.c (open_repo_file), xref.c
(open_xref_file): Use strchr () and strrchr () instead of index ()
and rindex ().
f:
* com.c (open_include_file, ffecom_open_include_): Use strchr ()
and strrchr () instead of index () and rindex ().
From-SVN: r37206
2000-11-02 20:03:59 +01:00
|
|
|
|
q = strchr (q,'.');
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (q == 0)
|
|
|
|
|
{
|
|
|
|
|
q = p + strlen (p);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (strncmp (q, ".so", 3) == 0)
|
|
|
|
|
{
|
|
|
|
|
q += 3;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
q++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/* q points to null at end of the string (or . of the .so version) */
|
|
|
|
|
prefix = xmalloc (q - p + 1);
|
|
|
|
|
strncpy (prefix, p, q - p);
|
|
|
|
|
prefix[q - p] = 0;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
for (r = prefix; *r; r++)
|
|
|
|
|
if (!ISALNUM ((unsigned char)*r))
|
|
|
|
|
*r = '_';
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (debug)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("\nwrite_c_file - output name is %s, prefix is %s\n",
|
|
|
|
|
output_file, prefix);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
2001-04-23 02:36:28 +02:00
|
|
|
|
initname = concat ("_GLOBAL__FI_", prefix, NULL);
|
|
|
|
|
fininame = concat ("_GLOBAL__FD_", prefix, NULL);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
free (prefix);
|
|
|
|
|
|
2003-06-29 15:53:12 +02:00
|
|
|
|
/* Write the tables as C code. */
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
fprintf (stream, "static int count;\n");
|
|
|
|
|
fprintf (stream, "typedef void entry_pt();\n");
|
|
|
|
|
write_list_with_asm (stream, "extern entry_pt ", constructors.first);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
|
|
|
|
|
if (frames)
|
|
|
|
|
{
|
|
|
|
|
write_list_with_asm (stream, "extern void *", frame_tables.first);
|
|
|
|
|
|
|
|
|
|
fprintf (stream, "\tstatic void *frame_table[] = {\n");
|
|
|
|
|
write_list (stream, "\t\t&", frame_tables.first);
|
|
|
|
|
fprintf (stream, "\t0\n};\n");
|
|
|
|
|
|
1997-12-07 01:31:01 +01:00
|
|
|
|
/* This must match what's in frame.h. */
|
|
|
|
|
fprintf (stream, "struct object {\n");
|
|
|
|
|
fprintf (stream, " void *pc_begin;\n");
|
|
|
|
|
fprintf (stream, " void *pc_end;\n");
|
|
|
|
|
fprintf (stream, " void *fde_begin;\n");
|
|
|
|
|
fprintf (stream, " void *fde_array;\n");
|
1997-12-08 02:42:52 +01:00
|
|
|
|
fprintf (stream, " __SIZE_TYPE__ count;\n");
|
1997-12-07 01:31:01 +01:00
|
|
|
|
fprintf (stream, " struct object *next;\n");
|
|
|
|
|
fprintf (stream, "};\n");
|
|
|
|
|
|
1997-12-15 08:05:04 +01:00
|
|
|
|
fprintf (stream, "extern void __register_frame_info_table (void *, struct object *);\n");
|
1997-12-16 00:28:44 +01:00
|
|
|
|
fprintf (stream, "extern void *__deregister_frame_info (void *);\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
|
|
|
|
|
fprintf (stream, "static void reg_frame () {\n");
|
1997-12-07 01:31:01 +01:00
|
|
|
|
fprintf (stream, "\tstatic struct object ob;\n");
|
1997-12-15 08:05:04 +01:00
|
|
|
|
fprintf (stream, "\t__register_frame_info_table (frame_table, &ob);\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\t}\n");
|
|
|
|
|
|
|
|
|
|
fprintf (stream, "static void dereg_frame () {\n");
|
1997-12-15 08:05:04 +01:00
|
|
|
|
fprintf (stream, "\t__deregister_frame_info (frame_table);\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\t}\n");
|
|
|
|
|
}
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
fprintf (stream, "void %s() {\n", initname);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
if (constructors.number > 0 || frames)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "\tstatic entry_pt *ctors[] = {\n");
|
|
|
|
|
write_list (stream, "\t\t", constructors.first);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
if (frames)
|
|
|
|
|
fprintf (stream, "\treg_frame,\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
fprintf (stream, "\t};\n");
|
|
|
|
|
fprintf (stream, "\tentry_pt **p;\n");
|
|
|
|
|
fprintf (stream, "\tif (count++ != 0) return;\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\tp = ctors + %d;\n", constructors.number + frames);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
fprintf (stream, "\twhile (p > ctors) (*--p)();\n");
|
|
|
|
|
}
|
1995-06-15 04:21:06 +02:00
|
|
|
|
else
|
|
|
|
|
fprintf (stream, "\t++count;\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
fprintf (stream, "}\n");
|
|
|
|
|
write_list_with_asm (stream, "extern entry_pt ", destructors.first);
|
|
|
|
|
fprintf (stream, "void %s() {\n", fininame);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
if (destructors.number > 0 || frames)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "\tstatic entry_pt *dtors[] = {\n");
|
|
|
|
|
write_list (stream, "\t\t", destructors.first);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
if (frames)
|
|
|
|
|
fprintf (stream, "\tdereg_frame,\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
fprintf (stream, "\t};\n");
|
|
|
|
|
fprintf (stream, "\tentry_pt **p;\n");
|
|
|
|
|
fprintf (stream, "\tif (--count != 0) return;\n");
|
|
|
|
|
fprintf (stream, "\tp = dtors;\n");
|
|
|
|
|
fprintf (stream, "\twhile (p < dtors + %d) (*p++)();\n",
|
1997-09-10 20:00:28 +02:00
|
|
|
|
destructors.number + frames);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
|
|
|
|
fprintf (stream, "}\n");
|
|
|
|
|
|
1995-06-15 04:21:06 +02:00
|
|
|
|
if (shared_obj)
|
|
|
|
|
{
|
2001-12-13 15:24:03 +01:00
|
|
|
|
COLLECT_SHARED_INIT_FUNC(stream, initname);
|
|
|
|
|
COLLECT_SHARED_FINI_FUNC(stream, fininame);
|
1995-06-15 04:21:06 +02:00
|
|
|
|
}
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Write the constructor/destructor tables. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1998-03-18 08:18:06 +01:00
|
|
|
|
#ifndef LD_INIT_SWITCH
|
1992-02-06 23:06:40 +01:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
write_c_file_glob (FILE *stream, const char *name ATTRIBUTE_UNUSED)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
2003-06-29 15:53:12 +02:00
|
|
|
|
/* Write the tables as C code. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1997-09-10 20:00:28 +02:00
|
|
|
|
int frames = (frame_tables.number > 0);
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stream, "typedef void entry_pt();\n\n");
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1992-05-06 23:25:13 +02:00
|
|
|
|
write_list_with_asm (stream, "extern entry_pt ", constructors.first);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
|
|
|
|
|
if (frames)
|
|
|
|
|
{
|
|
|
|
|
write_list_with_asm (stream, "extern void *", frame_tables.first);
|
|
|
|
|
|
|
|
|
|
fprintf (stream, "\tstatic void *frame_table[] = {\n");
|
|
|
|
|
write_list (stream, "\t\t&", frame_tables.first);
|
|
|
|
|
fprintf (stream, "\t0\n};\n");
|
|
|
|
|
|
1997-12-12 08:37:57 +01:00
|
|
|
|
/* This must match what's in frame.h. */
|
|
|
|
|
fprintf (stream, "struct object {\n");
|
|
|
|
|
fprintf (stream, " void *pc_begin;\n");
|
|
|
|
|
fprintf (stream, " void *pc_end;\n");
|
|
|
|
|
fprintf (stream, " void *fde_begin;\n");
|
|
|
|
|
fprintf (stream, " void *fde_array;\n");
|
|
|
|
|
fprintf (stream, " __SIZE_TYPE__ count;\n");
|
|
|
|
|
fprintf (stream, " struct object *next;\n");
|
|
|
|
|
fprintf (stream, "};\n");
|
|
|
|
|
|
1997-12-15 08:05:04 +01:00
|
|
|
|
fprintf (stream, "extern void __register_frame_info_table (void *, struct object *);\n");
|
1997-12-16 00:28:44 +01:00
|
|
|
|
fprintf (stream, "extern void *__deregister_frame_info (void *);\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
|
|
|
|
|
fprintf (stream, "static void reg_frame () {\n");
|
1997-12-12 08:37:57 +01:00
|
|
|
|
fprintf (stream, "\tstatic struct object ob;\n");
|
1997-12-15 08:05:04 +01:00
|
|
|
|
fprintf (stream, "\t__register_frame_info_table (frame_table, &ob);\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\t}\n");
|
|
|
|
|
|
|
|
|
|
fprintf (stream, "static void dereg_frame () {\n");
|
1997-12-15 08:05:04 +01:00
|
|
|
|
fprintf (stream, "\t__deregister_frame_info (frame_table);\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\t}\n");
|
|
|
|
|
}
|
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stream, "\nentry_pt * __CTOR_LIST__[] = {\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\t(entry_pt *) %d,\n", constructors.number + frames);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
write_list (stream, "\t", constructors.first);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
if (frames)
|
|
|
|
|
fprintf (stream, "\treg_frame,\n");
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stream, "\t0\n};\n\n");
|
|
|
|
|
|
1992-05-06 23:25:13 +02:00
|
|
|
|
write_list_with_asm (stream, "extern entry_pt ", destructors.first);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
fprintf (stream, "\nentry_pt * __DTOR_LIST__[] = {\n");
|
1997-09-10 20:00:28 +02:00
|
|
|
|
fprintf (stream, "\t(entry_pt *) %d,\n", destructors.number + frames);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
write_list (stream, "\t", destructors.first);
|
1997-09-10 20:00:28 +02:00
|
|
|
|
if (frames)
|
|
|
|
|
fprintf (stream, "\tdereg_frame,\n");
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stream, "\t0\n};\n\n");
|
|
|
|
|
|
1993-07-26 22:58:04 +02:00
|
|
|
|
fprintf (stream, "extern entry_pt %s;\n", NAME__MAIN);
|
|
|
|
|
fprintf (stream, "entry_pt *__main_reference = %s;\n\n", NAME__MAIN);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
1998-03-18 08:18:06 +01:00
|
|
|
|
#endif /* ! LD_INIT_SWITCH */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
write_c_file (FILE *stream, const char *name)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
1996-12-12 00:58:22 +01:00
|
|
|
|
fprintf (stream, "#ifdef __cplusplus\nextern \"C\" {\n#endif\n");
|
1995-06-15 04:21:06 +02:00
|
|
|
|
#ifndef LD_INIT_SWITCH
|
|
|
|
|
if (! shared_obj)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
write_c_file_glob (stream, name);
|
1995-06-15 04:21:06 +02:00
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
write_c_file_stat (stream, name);
|
1996-12-12 00:58:22 +01:00
|
|
|
|
fprintf (stream, "#ifdef __cplusplus\n}\n#endif\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
1995-05-09 12:21:13 +02:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
1995-05-09 12:21:13 +02:00
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
write_aix_file (FILE *stream, struct id *list)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
{
|
|
|
|
|
for (; list; list = list->next)
|
1999-05-22 20:14:31 +02:00
|
|
|
|
{
|
|
|
|
|
fputs (list->name, stream);
|
|
|
|
|
putc ('\n', stream);
|
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
}
|
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#ifdef OBJECT_FORMAT_NONE
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
/* Generic version to scan the name list of the loaded program for
|
|
|
|
|
the symbols g++ uses for static constructors and destructors.
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
The constructor table begins at __CTOR_LIST__ and contains a count
|
|
|
|
|
of the number of pointers (or -1 if the constructors are built in a
|
|
|
|
|
separate section by the linker), followed by the pointers to the
|
|
|
|
|
constructor functions, terminated with a null pointer. The
|
|
|
|
|
destructor table has the same format, and begins at __DTOR_LIST__. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
scan_prog_file (const char *prog_name, enum pass which_pass)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
2003-06-29 14:07:06 +02:00
|
|
|
|
void (*int_handler) (int);
|
|
|
|
|
void (*quit_handler) (int);
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
char *real_nm_argv[4];
|
|
|
|
|
const char **nm_argv = (const char **) real_nm_argv;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
int argc = 0;
|
|
|
|
|
int pipe_fd[2];
|
|
|
|
|
char *p, buf[1024];
|
|
|
|
|
FILE *inf;
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (which_pass == PASS_SECOND)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
return;
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* If we do not have an `nm', complain. */
|
1993-01-02 09:32:09 +01:00
|
|
|
|
if (nm_file_name == 0)
|
|
|
|
|
fatal ("cannot find `nm'");
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
nm_argv[argc++] = nm_file_name;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
if (NM_FLAGS[0] != '\0')
|
1992-03-19 23:07:22 +01:00
|
|
|
|
nm_argv[argc++] = NM_FLAGS;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
nm_argv[argc++] = prog_name;
|
1996-07-04 00:07:53 +02:00
|
|
|
|
nm_argv[argc++] = (char *) 0;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (pipe (pipe_fd) < 0)
|
|
|
|
|
fatal_perror ("pipe");
|
|
|
|
|
|
|
|
|
|
inf = fdopen (pipe_fd[0], "r");
|
1996-07-04 00:07:53 +02:00
|
|
|
|
if (inf == (FILE *) 0)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fatal_perror ("fdopen");
|
|
|
|
|
|
|
|
|
|
/* Trace if needed. */
|
|
|
|
|
if (vflag)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **p_argv;
|
|
|
|
|
const char *str;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
for (p_argv = &nm_argv[0]; (str = *p_argv) != (char *) 0; p_argv++)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
fprintf (stderr, " %s", str);
|
|
|
|
|
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fflush (stdout);
|
|
|
|
|
fflush (stderr);
|
|
|
|
|
|
2003-06-29 15:53:12 +02:00
|
|
|
|
/* Spawn child nm on pipe. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
pid = vfork ();
|
|
|
|
|
if (pid == -1)
|
1998-11-02 08:20:48 +01:00
|
|
|
|
fatal_perror (VFORK_STRING);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (pid == 0) /* child context */
|
|
|
|
|
{
|
|
|
|
|
/* setup stdout */
|
|
|
|
|
if (dup2 (pipe_fd[1], 1) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("dup2 %d 1", pipe_fd[1]);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (close (pipe_fd[0]) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("close %d", pipe_fd[0]);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (close (pipe_fd[1]) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("close %d", pipe_fd[1]);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
execv (nm_file_name, real_nm_argv);
|
2002-06-30 00:51:11 +02:00
|
|
|
|
fatal_perror ("execv %s", nm_file_name);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Parent context from here on. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#ifdef SIGQUIT
|
2003-06-29 14:07:06 +02:00
|
|
|
|
quit_handler = (void (*) (int)) signal (SIGQUIT, SIG_IGN);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (close (pipe_fd[1]) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("close %d", pipe_fd[1]);
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\nnm output with constructors/destructors.\n");
|
|
|
|
|
|
|
|
|
|
/* Read each line of nm output. */
|
1996-07-04 00:07:53 +02:00
|
|
|
|
while (fgets (buf, sizeof buf, inf) != (char *) 0)
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
|
|
|
|
int ch, ch2;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
char *name, *end;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
/* If it contains a constructor or destructor name, add the name
|
1996-07-04 00:07:53 +02:00
|
|
|
|
to the appropriate list. */
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
for (p = buf; (ch = *p) != '\0' && ch != '\n' && ch != '_'; p++)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (ch == ' ' && p[1] == 'U' && p[2] == ' ')
|
|
|
|
|
break;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (ch != '_')
|
1992-02-06 23:06:40 +01:00
|
|
|
|
continue;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
name = p;
|
|
|
|
|
/* Find the end of the symbol name.
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
Do not include `|', because Encore nm can tack that on the end. */
|
1998-05-06 14:56:58 +02:00
|
|
|
|
for (end = p; (ch2 = *end) != '\0' && !ISSPACE (ch2) && ch2 != '|';
|
1992-03-19 23:07:22 +01:00
|
|
|
|
end++)
|
|
|
|
|
continue;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1994-10-19 23:09:20 +01:00
|
|
|
|
|
1992-02-06 23:06:40 +01:00
|
|
|
|
*end = '\0';
|
1992-03-19 23:07:22 +01:00
|
|
|
|
switch (is_ctor_dtor (name))
|
1992-02-06 23:06:40 +01:00
|
|
|
|
{
|
1992-03-19 23:07:22 +01:00
|
|
|
|
case 1:
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (which_pass != PASS_LIB)
|
|
|
|
|
add_to_list (&constructors, name);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
break;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
case 2:
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (which_pass != PASS_LIB)
|
|
|
|
|
add_to_list (&destructors, name);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
if (which_pass != PASS_LIB)
|
|
|
|
|
fatal ("init function found in object %s", prog_name);
|
1995-01-24 03:52:44 +01:00
|
|
|
|
#ifndef LD_INIT_SWITCH
|
1994-11-19 05:09:58 +01:00
|
|
|
|
add_to_list (&constructors, name);
|
1995-01-24 03:52:44 +01:00
|
|
|
|
#endif
|
1994-11-19 05:09:58 +01:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
if (which_pass != PASS_LIB)
|
1995-01-24 03:52:44 +01:00
|
|
|
|
fatal ("fini function found in object %s", prog_name);
|
|
|
|
|
#ifndef LD_FINI_SWITCH
|
1992-03-19 23:07:22 +01:00
|
|
|
|
add_to_list (&destructors, name);
|
1995-01-24 03:52:44 +01:00
|
|
|
|
#endif
|
1992-03-19 23:07:22 +01:00
|
|
|
|
break;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
1997-09-10 20:00:28 +02:00
|
|
|
|
case 5:
|
|
|
|
|
if (which_pass != PASS_LIB)
|
|
|
|
|
add_to_list (&frame_tables, name);
|
1999-06-21 22:20:26 +02:00
|
|
|
|
break;
|
1997-09-10 20:00:28 +02:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
default: /* not a constructor or destructor */
|
|
|
|
|
continue;
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\t%s\n", buf);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
|
|
|
|
|
if (fclose (inf) != 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("fclose");
|
1992-02-06 23:06:40 +01:00
|
|
|
|
|
|
|
|
|
do_wait (nm_file_name);
|
|
|
|
|
|
|
|
|
|
signal (SIGINT, int_handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#ifdef SIGQUIT
|
1992-02-06 23:06:40 +01:00
|
|
|
|
signal (SIGQUIT, quit_handler);
|
1993-04-13 23:07:04 +02:00
|
|
|
|
#endif
|
1992-02-06 23:06:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
1995-05-04 23:25:31 +02:00
|
|
|
|
#if SUNOS4_SHARED_LIBRARIES
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
/* Routines to scan the SunOS 4 _DYNAMIC structure to find shared libraries
|
|
|
|
|
that the output file depends upon and their initialization/finalization
|
|
|
|
|
routines, if any. */
|
|
|
|
|
|
|
|
|
|
#include <a.out.h>
|
|
|
|
|
#include <fcntl.h>
|
|
|
|
|
#include <link.h>
|
|
|
|
|
#include <sys/mman.h>
|
|
|
|
|
#include <sys/param.h>
|
1996-07-04 00:23:08 +02:00
|
|
|
|
#include <unistd.h>
|
1995-02-23 02:23:53 +01:00
|
|
|
|
#include <sys/dir.h>
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
/* pointers to the object file */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
unsigned object; /* address of memory mapped file */
|
|
|
|
|
unsigned objsize; /* size of memory mapped to file */
|
1994-11-19 05:09:58 +01:00
|
|
|
|
char * code; /* pointer to code segment */
|
|
|
|
|
char * data; /* pointer to data segment */
|
|
|
|
|
struct nlist *symtab; /* pointer to symbol table */
|
|
|
|
|
struct link_dynamic *ld;
|
|
|
|
|
struct link_dynamic_2 *ld_2;
|
|
|
|
|
struct head libraries;
|
|
|
|
|
|
|
|
|
|
/* Map the file indicated by NAME into memory and store its address. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
mapfile (const char *name)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
|
|
|
|
int fp;
|
|
|
|
|
struct stat s;
|
|
|
|
|
if ((fp = open (name, O_RDONLY)) == -1)
|
|
|
|
|
fatal ("unable to open file '%s'", name);
|
|
|
|
|
if (fstat (fp, &s) == -1)
|
|
|
|
|
fatal ("unable to stat file '%s'", name);
|
|
|
|
|
|
|
|
|
|
objsize = s.st_size;
|
|
|
|
|
object = (unsigned) mmap (0, objsize, PROT_READ|PROT_WRITE, MAP_PRIVATE,
|
|
|
|
|
fp, 0);
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
if (object == (unsigned)-1)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
fatal ("unable to mmap file '%s'", name);
|
|
|
|
|
|
|
|
|
|
close (fp);
|
|
|
|
|
}
|
|
|
|
|
|
1995-02-23 02:23:53 +01:00
|
|
|
|
/* Helpers for locatelib. */
|
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char *libname;
|
|
|
|
|
|
1995-02-23 02:23:53 +01:00
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
libselect (struct direct *d)
|
1995-02-23 02:23:53 +01:00
|
|
|
|
{
|
|
|
|
|
return (strncmp (libname, d->d_name, strlen (libname)) == 0);
|
|
|
|
|
}
|
|
|
|
|
|
1995-08-28 12:54:22 +02:00
|
|
|
|
/* If one file has an additional numeric extension past LIBNAME, then put
|
1995-07-02 03:27:00 +02:00
|
|
|
|
that one first in the sort. If both files have additional numeric
|
|
|
|
|
extensions, then put the one with the higher number first in the sort.
|
|
|
|
|
|
|
|
|
|
We must verify that the extension is numeric, because Sun saves the
|
|
|
|
|
original versions of patched libraries with a .FCS extension. Files with
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
invalid extensions must go last in the sort, so that they will not be used. */
|
1995-07-02 03:27:00 +02:00
|
|
|
|
|
1995-02-23 02:23:53 +01:00
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
libcompare (struct direct **d1, struct direct **d2)
|
1995-02-23 02:23:53 +01:00
|
|
|
|
{
|
|
|
|
|
int i1, i2 = strlen (libname);
|
|
|
|
|
char *e1 = (*d1)->d_name + i2;
|
|
|
|
|
char *e2 = (*d2)->d_name + i2;
|
|
|
|
|
|
1995-07-02 03:27:00 +02:00
|
|
|
|
while (*e1 && *e2 && *e1 == '.' && *e2 == '.'
|
1998-05-06 14:56:58 +02:00
|
|
|
|
&& e1[1] && ISDIGIT (e1[1]) && e2[1] && ISDIGIT (e2[1]))
|
1995-02-23 02:23:53 +01:00
|
|
|
|
{
|
|
|
|
|
++e1;
|
|
|
|
|
++e2;
|
|
|
|
|
i1 = strtol (e1, &e1, 10);
|
|
|
|
|
i2 = strtol (e2, &e2, 10);
|
|
|
|
|
if (i1 != i2)
|
|
|
|
|
return i1 - i2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (*e1)
|
1995-07-02 03:27:00 +02:00
|
|
|
|
{
|
|
|
|
|
/* It has a valid numeric extension, prefer this one. */
|
1998-05-06 14:56:58 +02:00
|
|
|
|
if (*e1 == '.' && e1[1] && ISDIGIT (e1[1]))
|
1995-07-02 03:27:00 +02:00
|
|
|
|
return 1;
|
2001-10-09 08:03:16 +02:00
|
|
|
|
/* It has an invalid numeric extension, must prefer the other one. */
|
1995-07-02 03:27:00 +02:00
|
|
|
|
else
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
1995-02-23 02:23:53 +01:00
|
|
|
|
else if (*e2)
|
1995-07-02 03:27:00 +02:00
|
|
|
|
{
|
|
|
|
|
/* It has a valid numeric extension, prefer this one. */
|
1998-05-06 14:56:58 +02:00
|
|
|
|
if (*e2 == '.' && e2[1] && ISDIGIT (e2[1]))
|
1995-07-02 03:27:00 +02:00
|
|
|
|
return -1;
|
2001-10-09 08:03:16 +02:00
|
|
|
|
/* It has an invalid numeric extension, must prefer the other one. */
|
1995-07-02 03:27:00 +02:00
|
|
|
|
else
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
1995-02-23 02:23:53 +01:00
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
1994-11-19 05:09:58 +01:00
|
|
|
|
/* Given the name NAME of a dynamic dependency, find its pathname and add
|
|
|
|
|
it to the list of libraries. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
locatelib (const char *name)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
static const char **l;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
static int cnt;
|
|
|
|
|
char buf[MAXPATHLEN];
|
|
|
|
|
char *p, *q;
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **pp;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
if (l == 0)
|
|
|
|
|
{
|
|
|
|
|
char *ld_rules;
|
|
|
|
|
char *ldr = 0;
|
|
|
|
|
/* counting elements in array, need 1 extra for null */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
cnt = 1;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
ld_rules = (char *) (ld_2->ld_rules + code);
|
|
|
|
|
if (ld_rules)
|
|
|
|
|
{
|
|
|
|
|
cnt++;
|
|
|
|
|
for (; *ld_rules != 0; ld_rules++)
|
|
|
|
|
if (*ld_rules == ':')
|
|
|
|
|
cnt++;
|
|
|
|
|
ld_rules = (char *) (ld_2->ld_rules + code);
|
c-aux-info.c (concat): Don't define.
* c-aux-info.c (concat): Don't define.
* cccp.c (my_strerror): Likewise. All callers changed to use
xstrerror instead.
(do_include): Call xstrdup, not xmalloc/strcpy.
(grow_outbuf): Don't check if xrealloc returns NULL, it can't.
(xmalloc, xrealloc, xcalloc, xstrdup): Don't define.
* collect2.c (my_strsignal): Likewise. All callers changed to use
strsignal instead.
(locatelib): Call xstrdup, not xmalloc/strcpy.
* 1750a.h (ASM_OUTPUT_INTERNAL_LABEL): Call xmalloc, not malloc.
* dsp16xx.c (override_options): Call xstrdup, not xmalloc/strcpy.
* i370.h (ASM_DECLARE_FUNCTION_NAME): Call xmalloc, not malloc.
* mips.c (build_mips16_call_stub): Call xstrdup, not xmalloc/strcpy.
* cppinit.c (cpp_options_init): Call xcalloc, not xmalloc/bzero.
* dwarfout.c (dwarfout_init): Call concat, not xmalloc/strcpy/...
* except.c (new_eh_region_entry): Call xmalloc/xrealloc, not
malloc/realloc.
(find_all_handler_type_matches): Likewise. Don't check return
value.
(get_new_handler, init_insn_eh_region, process_nestinfo): Call
xmalloc, not malloc.
(init_eh_nesting_info): Likewise. Call xcalloc, not xmalloc/bzero.
* gcc.c (xstrerror, xmalloc, xrealloc): Don't define.
(init_spec): Call xcalloc, not xmalloc/bzero.
(set_spec): Call xstrdup, not save_string.
(record_temp_file): Call xstrdup, not xmalloc/strcpy.
(find_a_file): Call xstrdup, not xmalloc/strcpy.
(process_command): Call xstrdup, not save_string.
(main): Call xcalloc, not xmalloc/bzero.
* gcov.c (xmalloc): Don't define.
(create_program_flow_graph): Call xcalloc, not xmalloc/bzero.
(scan_for_source_files): Call xstrdup, not xmalloc/strcpy.
(output_data): Call xcalloc, not xmalloc/bzero.
* haifa-sched.c (schedule_insns): Call xcalloc, not xmalloc/bzero.
* mips-tdump.c (xmalloc): Don't define.
(print_symbol): Call xmalloc, not malloc.
(read_tfile): Call xcalloc, not calloc.
* mips-tfile.c (xfree, my_strsignal, xmalloc, xcalloc, xrealloc):
Don't define. All callers of xfree/my_strsignal changed to use
free/strsignal instead.
(allocate_cluster): Call xcalloc, not calloc.
* objc/objc-act.c (lang_init): Call concat, not xmalloc/strcpy/...
Fix memory leak, free allocated memory.
* prefix.c (translate_name): Call xstrdup, not save_string.
(update_path): Likewise.
* profile.c (branch_prob): Call xstrdup, not xmalloc/strcpy.
* protoize.c (xstrerror, xmalloc, xrealloc, xfree, savestring2):
Don't define. Callers of xfree/savestring2 changed to use
free/concat instead.
* reload1.c (reload): Call xcalloc, not xmalloc/bzero.
(init_elim_table): Likewise.
* resource.c (init_resource_info): Likewise.
* stupid.c (stupid_life_analysis): Likewise.
* toplev.c (xmalloc, xcalloc, xrealloc, xstrdup): Don't define.
(open_dump_file): Call concat, not xmalloc/strcpy/...
(clean_dump_file): Likewise.
(compile_file): Call xstrdup, not xmalloc/strcpy.
From-SVN: r29148
1999-09-07 04:36:41 +02:00
|
|
|
|
ldr = xstrdup (ld_rules);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
|
|
|
|
p = getenv ("LD_LIBRARY_PATH");
|
|
|
|
|
q = 0;
|
|
|
|
|
if (p)
|
|
|
|
|
{
|
|
|
|
|
cnt++;
|
|
|
|
|
for (q = p ; *q != 0; q++)
|
|
|
|
|
if (*q == ':')
|
|
|
|
|
cnt++;
|
c-aux-info.c (concat): Don't define.
* c-aux-info.c (concat): Don't define.
* cccp.c (my_strerror): Likewise. All callers changed to use
xstrerror instead.
(do_include): Call xstrdup, not xmalloc/strcpy.
(grow_outbuf): Don't check if xrealloc returns NULL, it can't.
(xmalloc, xrealloc, xcalloc, xstrdup): Don't define.
* collect2.c (my_strsignal): Likewise. All callers changed to use
strsignal instead.
(locatelib): Call xstrdup, not xmalloc/strcpy.
* 1750a.h (ASM_OUTPUT_INTERNAL_LABEL): Call xmalloc, not malloc.
* dsp16xx.c (override_options): Call xstrdup, not xmalloc/strcpy.
* i370.h (ASM_DECLARE_FUNCTION_NAME): Call xmalloc, not malloc.
* mips.c (build_mips16_call_stub): Call xstrdup, not xmalloc/strcpy.
* cppinit.c (cpp_options_init): Call xcalloc, not xmalloc/bzero.
* dwarfout.c (dwarfout_init): Call concat, not xmalloc/strcpy/...
* except.c (new_eh_region_entry): Call xmalloc/xrealloc, not
malloc/realloc.
(find_all_handler_type_matches): Likewise. Don't check return
value.
(get_new_handler, init_insn_eh_region, process_nestinfo): Call
xmalloc, not malloc.
(init_eh_nesting_info): Likewise. Call xcalloc, not xmalloc/bzero.
* gcc.c (xstrerror, xmalloc, xrealloc): Don't define.
(init_spec): Call xcalloc, not xmalloc/bzero.
(set_spec): Call xstrdup, not save_string.
(record_temp_file): Call xstrdup, not xmalloc/strcpy.
(find_a_file): Call xstrdup, not xmalloc/strcpy.
(process_command): Call xstrdup, not save_string.
(main): Call xcalloc, not xmalloc/bzero.
* gcov.c (xmalloc): Don't define.
(create_program_flow_graph): Call xcalloc, not xmalloc/bzero.
(scan_for_source_files): Call xstrdup, not xmalloc/strcpy.
(output_data): Call xcalloc, not xmalloc/bzero.
* haifa-sched.c (schedule_insns): Call xcalloc, not xmalloc/bzero.
* mips-tdump.c (xmalloc): Don't define.
(print_symbol): Call xmalloc, not malloc.
(read_tfile): Call xcalloc, not calloc.
* mips-tfile.c (xfree, my_strsignal, xmalloc, xcalloc, xrealloc):
Don't define. All callers of xfree/my_strsignal changed to use
free/strsignal instead.
(allocate_cluster): Call xcalloc, not calloc.
* objc/objc-act.c (lang_init): Call concat, not xmalloc/strcpy/...
Fix memory leak, free allocated memory.
* prefix.c (translate_name): Call xstrdup, not save_string.
(update_path): Likewise.
* profile.c (branch_prob): Call xstrdup, not xmalloc/strcpy.
* protoize.c (xstrerror, xmalloc, xrealloc, xfree, savestring2):
Don't define. Callers of xfree/savestring2 changed to use
free/concat instead.
* reload1.c (reload): Call xcalloc, not xmalloc/bzero.
(init_elim_table): Likewise.
* resource.c (init_resource_info): Likewise.
* stupid.c (stupid_life_analysis): Likewise.
* toplev.c (xmalloc, xcalloc, xrealloc, xstrdup): Don't define.
(open_dump_file): Call concat, not xmalloc/strcpy/...
(clean_dump_file): Likewise.
(compile_file): Call xstrdup, not xmalloc/strcpy.
From-SVN: r29148
1999-09-07 04:36:41 +02:00
|
|
|
|
q = xstrdup (p);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
l = (const char **) xmalloc ((cnt + 3) * sizeof (char *));
|
1994-11-19 05:09:58 +01:00
|
|
|
|
pp = l;
|
|
|
|
|
if (ldr)
|
|
|
|
|
{
|
|
|
|
|
*pp++ = ldr;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
for (; *ldr != 0; ldr++)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (*ldr == ':')
|
|
|
|
|
{
|
|
|
|
|
*ldr++ = 0;
|
|
|
|
|
*pp++ = ldr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (q)
|
|
|
|
|
{
|
|
|
|
|
*pp++ = q;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
for (; *q != 0; q++)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (*q == ':')
|
|
|
|
|
{
|
|
|
|
|
*q++ = 0;
|
1995-06-23 00:19:01 +02:00
|
|
|
|
*pp++ = q;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/* built in directories are /lib, /usr/lib, and /usr/local/lib */
|
|
|
|
|
*pp++ = "/lib";
|
|
|
|
|
*pp++ = "/usr/lib";
|
|
|
|
|
*pp++ = "/usr/local/lib";
|
|
|
|
|
*pp = 0;
|
|
|
|
|
}
|
1995-02-23 02:23:53 +01:00
|
|
|
|
libname = name;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
for (pp = l; *pp != 0 ; pp++)
|
|
|
|
|
{
|
1995-02-23 02:23:53 +01:00
|
|
|
|
struct direct **namelist;
|
|
|
|
|
int entries;
|
|
|
|
|
if ((entries = scandir (*pp, &namelist, libselect, libcompare)) > 0)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
1995-02-23 02:23:53 +01:00
|
|
|
|
sprintf (buf, "%s/%s", *pp, namelist[entries - 1]->d_name);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
add_to_list (&libraries, buf);
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "%s\n", buf);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (*pp == 0)
|
|
|
|
|
{
|
|
|
|
|
if (debug)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("not found\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
else
|
|
|
|
|
fatal ("dynamic dependency %s not found", name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Scan the _DYNAMIC structure of the output file to find shared libraries
|
|
|
|
|
that it depends upon and any constructors or destructors they contain. */
|
|
|
|
|
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void
|
|
|
|
|
scan_libraries (const char *prog_name)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
|
|
|
|
struct exec *header;
|
|
|
|
|
char *base;
|
|
|
|
|
struct link_object *lo;
|
|
|
|
|
char buff[MAXPATHLEN];
|
|
|
|
|
struct id *list;
|
|
|
|
|
|
|
|
|
|
mapfile (prog_name);
|
|
|
|
|
header = (struct exec *)object;
|
|
|
|
|
if (N_BADMAG (*header))
|
|
|
|
|
fatal ("bad magic number in file '%s'", prog_name);
|
|
|
|
|
if (header->a_dynamic == 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
code = (char *) (N_TXTOFF (*header) + (long) header);
|
|
|
|
|
data = (char *) (N_DATOFF (*header) + (long) header);
|
|
|
|
|
symtab = (struct nlist *) (N_SYMOFF (*header) + (long) header);
|
|
|
|
|
|
|
|
|
|
if (header->a_magic == ZMAGIC && header->a_entry == 0x20)
|
|
|
|
|
{
|
|
|
|
|
/* shared object */
|
|
|
|
|
ld = (struct link_dynamic *) (symtab->n_value + code);
|
|
|
|
|
base = code;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* executable */
|
|
|
|
|
ld = (struct link_dynamic *) data;
|
|
|
|
|
base = code-PAGSIZ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (debug)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("dynamic dependencies.\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
ld_2 = (struct link_dynamic_2 *) ((long) ld->ld_un.ld_2 + (long)base);
|
|
|
|
|
for (lo = (struct link_object *) ld_2->ld_need; lo;
|
|
|
|
|
lo = (struct link_object *) lo->lo_next)
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
lo = (struct link_object *) ((long) lo + code);
|
|
|
|
|
name = (char *) (code + lo->lo_name);
|
|
|
|
|
if (lo->lo_library)
|
|
|
|
|
{
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\t-l%s.%d => ", name, lo->lo_major);
|
|
|
|
|
sprintf (buff, "lib%s.so.%d.%d", name, lo->lo_major, lo->lo_minor);
|
|
|
|
|
locatelib (buff);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\t%s\n", name);
|
|
|
|
|
add_to_list (&libraries, name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
|
|
|
|
|
/* now iterate through the library list adding their symbols to
|
|
|
|
|
the list. */
|
|
|
|
|
for (list = libraries.first; list; list = list->next)
|
|
|
|
|
scan_prog_file (list->name, PASS_LIB);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#else /* SUNOS4_SHARED_LIBRARIES */
|
|
|
|
|
#ifdef LDD_SUFFIX
|
|
|
|
|
|
|
|
|
|
/* Use the List Dynamic Dependencies program to find shared libraries that
|
|
|
|
|
the output file depends upon and their initialization/finalization
|
|
|
|
|
routines, if any. */
|
|
|
|
|
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static void
|
|
|
|
|
scan_libraries (const char *prog_name)
|
1994-11-19 05:09:58 +01:00
|
|
|
|
{
|
|
|
|
|
static struct head libraries; /* list of shared libraries found */
|
|
|
|
|
struct id *list;
|
2003-06-29 14:07:06 +02:00
|
|
|
|
void (*int_handler) (int);
|
|
|
|
|
void (*quit_handler) (int);
|
1999-09-06 13:50:09 +02:00
|
|
|
|
char *real_ldd_argv[4];
|
|
|
|
|
const char **ldd_argv = (const char **) real_ldd_argv;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
int argc = 0;
|
|
|
|
|
int pipe_fd[2];
|
|
|
|
|
char buf[1024];
|
|
|
|
|
FILE *inf;
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* If we do not have an `ldd', complain. */
|
1994-11-19 05:09:58 +01:00
|
|
|
|
if (ldd_file_name == 0)
|
|
|
|
|
{
|
|
|
|
|
error ("cannot find `ldd'");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ldd_argv[argc++] = ldd_file_name;
|
|
|
|
|
ldd_argv[argc++] = prog_name;
|
|
|
|
|
ldd_argv[argc++] = (char *) 0;
|
|
|
|
|
|
|
|
|
|
if (pipe (pipe_fd) < 0)
|
|
|
|
|
fatal_perror ("pipe");
|
|
|
|
|
|
|
|
|
|
inf = fdopen (pipe_fd[0], "r");
|
|
|
|
|
if (inf == (FILE *) 0)
|
|
|
|
|
fatal_perror ("fdopen");
|
|
|
|
|
|
|
|
|
|
/* Trace if needed. */
|
|
|
|
|
if (vflag)
|
|
|
|
|
{
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
const char **p_argv;
|
|
|
|
|
const char *str;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
for (p_argv = &ldd_argv[0]; (str = *p_argv) != (char *) 0; p_argv++)
|
|
|
|
|
fprintf (stderr, " %s", str);
|
|
|
|
|
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fflush (stdout);
|
|
|
|
|
fflush (stderr);
|
|
|
|
|
|
2003-06-29 15:53:12 +02:00
|
|
|
|
/* Spawn child ldd on pipe. */
|
1994-11-19 05:09:58 +01:00
|
|
|
|
pid = vfork ();
|
|
|
|
|
if (pid == -1)
|
1998-11-02 08:20:48 +01:00
|
|
|
|
fatal_perror (VFORK_STRING);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
if (pid == 0) /* child context */
|
|
|
|
|
{
|
|
|
|
|
/* setup stdout */
|
|
|
|
|
if (dup2 (pipe_fd[1], 1) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("dup2 %d 1", pipe_fd[1]);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
if (close (pipe_fd[0]) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("close %d", pipe_fd[0]);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
if (close (pipe_fd[1]) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("close %d", pipe_fd[1]);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
execv (ldd_file_name, real_ldd_argv);
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("execv %s", ldd_file_name);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Parent context from here on. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
int_handler = (void (*) (int))) signal (SIGINT, SIG_IGN;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#ifdef SIGQUIT
|
2003-06-29 14:07:06 +02:00
|
|
|
|
quit_handler = (void (*) (int))) signal (SIGQUIT, SIG_IGN;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (close (pipe_fd[1]) < 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("close %d", pipe_fd[1]);
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
if (debug)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
notice ("\nldd output with constructors/destructors.\n");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
/* Read each line of ldd output. */
|
|
|
|
|
while (fgets (buf, sizeof buf, inf) != (char *) 0)
|
|
|
|
|
{
|
2000-12-07 03:31:47 +01:00
|
|
|
|
int ch2;
|
1994-11-19 05:09:58 +01:00
|
|
|
|
char *name, *end, *p = buf;
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Extract names of libraries and add to list. */
|
1994-11-19 05:09:58 +01:00
|
|
|
|
PARSE_LDD_OUTPUT (p);
|
|
|
|
|
if (p == 0)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
name = p;
|
|
|
|
|
if (strncmp (name, "not found", sizeof ("not found") - 1) == 0)
|
|
|
|
|
fatal ("dynamic dependency %s not found", buf);
|
|
|
|
|
|
1996-07-04 00:07:53 +02:00
|
|
|
|
/* Find the end of the symbol name. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
for (end = p;
|
1998-05-06 14:56:58 +02:00
|
|
|
|
(ch2 = *end) != '\0' && ch2 != '\n' && !ISSPACE (ch2) && ch2 != '|';
|
1994-11-19 05:09:58 +01:00
|
|
|
|
end++)
|
|
|
|
|
continue;
|
|
|
|
|
*end = '\0';
|
|
|
|
|
|
|
|
|
|
if (access (name, R_OK) == 0)
|
|
|
|
|
add_to_list (&libraries, name);
|
|
|
|
|
else
|
|
|
|
|
fatal ("unable to open dynamic dependency '%s'", buf);
|
|
|
|
|
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\t%s\n", buf);
|
|
|
|
|
}
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
|
|
|
|
|
|
if (fclose (inf) != 0)
|
1999-01-27 02:43:17 +01:00
|
|
|
|
fatal_perror ("fclose");
|
1994-11-19 05:09:58 +01:00
|
|
|
|
|
|
|
|
|
do_wait (ldd_file_name);
|
|
|
|
|
|
|
|
|
|
signal (SIGINT, int_handler);
|
|
|
|
|
#ifdef SIGQUIT
|
|
|
|
|
signal (SIGQUIT, quit_handler);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* now iterate through the library list adding their symbols to
|
|
|
|
|
the list. */
|
|
|
|
|
for (list = libraries.first; list; list = list->next)
|
|
|
|
|
scan_prog_file (list->name, PASS_LIB);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif /* LDD_SUFFIX */
|
|
|
|
|
#endif /* SUNOS4_SHARED_LIBRARIES */
|
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#endif /* OBJECT_FORMAT_NONE */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* COFF specific stuff.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifdef OBJECT_FORMAT_COFF
|
|
|
|
|
|
|
|
|
|
#if defined(EXTENDED_COFF)
|
2001-01-25 21:12:30 +01:00
|
|
|
|
|
1992-05-06 23:25:13 +02:00
|
|
|
|
# define GCC_SYMBOLS(X) (SYMHEADER(X).isymMax + SYMHEADER(X).iextMax)
|
|
|
|
|
# define GCC_SYMENT SYMR
|
1999-06-21 22:20:26 +02:00
|
|
|
|
# define GCC_OK_SYMBOL(X) ((X).st == stProc || (X).st == stGlobal)
|
1992-05-06 23:25:13 +02:00
|
|
|
|
# define GCC_SYMINC(X) (1)
|
|
|
|
|
# define GCC_SYMZERO(X) (SYMHEADER(X).isymMax)
|
|
|
|
|
# define GCC_CHECK_HDR(X) (PSYMTAB(X) != 0)
|
2001-01-25 21:12:30 +01:00
|
|
|
|
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#else
|
2001-01-25 21:12:30 +01:00
|
|
|
|
|
1992-05-06 23:25:13 +02:00
|
|
|
|
# define GCC_SYMBOLS(X) (HEADER(ldptr).f_nsyms)
|
|
|
|
|
# define GCC_SYMENT SYMENT
|
1992-03-19 23:07:22 +01:00
|
|
|
|
# define GCC_OK_SYMBOL(X) \
|
|
|
|
|
(((X).n_sclass == C_EXT) && \
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
((X).n_scnum > N_UNDEF) && \
|
1999-05-22 20:14:31 +02:00
|
|
|
|
(aix64_flag \
|
|
|
|
|
|| (((X).n_type & N_TMASK) == (DT_NON << N_BTSHFT) \
|
|
|
|
|
|| ((X).n_type & N_TMASK) == (DT_FCN << N_BTSHFT))))
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
# define GCC_UNDEF_SYMBOL(X) \
|
|
|
|
|
(((X).n_sclass == C_EXT) && ((X).n_scnum == N_UNDEF))
|
1992-05-06 23:25:13 +02:00
|
|
|
|
# define GCC_SYMINC(X) ((X).n_numaux+1)
|
|
|
|
|
# define GCC_SYMZERO(X) 0
|
2001-01-25 21:12:30 +01:00
|
|
|
|
|
|
|
|
|
/* 0757 = U803XTOCMAGIC (AIX 4.3) and 0767 = U64_TOCMAGIC (AIX V5) */
|
|
|
|
|
#ifdef _AIX51
|
|
|
|
|
# define GCC_CHECK_HDR(X) \
|
|
|
|
|
((HEADER (X).f_magic == U802TOCMAGIC && ! aix64_flag) \
|
|
|
|
|
|| (HEADER (X).f_magic == 0767 && aix64_flag))
|
|
|
|
|
#else
|
1998-10-27 14:23:17 +01:00
|
|
|
|
# define GCC_CHECK_HDR(X) \
|
|
|
|
|
((HEADER (X).f_magic == U802TOCMAGIC && ! aix64_flag) \
|
|
|
|
|
|| (HEADER (X).f_magic == 0757 && aix64_flag))
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
2001-01-25 21:12:30 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
2002-12-16 19:23:00 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* Array of standard AIX libraries which should not
|
|
|
|
|
be scanned for ctors/dtors. */
|
|
|
|
|
static const char *const aix_std_libs[] = {
|
|
|
|
|
"/unix",
|
|
|
|
|
"/lib/libc.a",
|
|
|
|
|
"/lib/libm.a",
|
|
|
|
|
"/lib/libc_r.a",
|
|
|
|
|
"/lib/libm_r.a",
|
|
|
|
|
"/usr/lib/libc.a",
|
|
|
|
|
"/usr/lib/libm.a",
|
|
|
|
|
"/usr/lib/libc_r.a",
|
|
|
|
|
"/usr/lib/libm_r.a",
|
|
|
|
|
"/usr/lib/threads/libc.a",
|
|
|
|
|
"/usr/ccs/lib/libc.a",
|
|
|
|
|
"/usr/ccs/lib/libm.a",
|
|
|
|
|
"/usr/ccs/lib/libc_r.a",
|
|
|
|
|
"/usr/ccs/lib/libm_r.a",
|
|
|
|
|
NULL
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* This function checks the filename and returns 1
|
|
|
|
|
if this name matches the location of a standard AIX library. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
static int ignore_library (const char *);
|
2002-12-16 19:23:00 +01:00
|
|
|
|
static int
|
2003-06-29 14:07:06 +02:00
|
|
|
|
ignore_library (const char *name)
|
2002-12-16 19:23:00 +01:00
|
|
|
|
{
|
|
|
|
|
const char *const *p = &aix_std_libs[0];
|
|
|
|
|
while (*p++ != NULL)
|
|
|
|
|
if (! strcmp (name, *p)) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
#endif /* COLLECT_EXPORT_LIST */
|
|
|
|
|
|
2003-01-20 21:41:55 +01:00
|
|
|
|
#if defined (HAVE_DECL_LDGETNAME) && !HAVE_DECL_LDGETNAME
|
2003-06-29 14:07:06 +02:00
|
|
|
|
extern char *ldgetname (LDFILE *, GCC_SYMENT *);
|
2003-01-20 21:41:55 +01:00
|
|
|
|
#endif
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
|
|
|
|
/* COFF version to scan the name list of the loaded program for
|
|
|
|
|
the symbols g++ uses for static constructors and destructors.
|
|
|
|
|
|
|
|
|
|
The constructor table begins at __CTOR_LIST__ and contains a count
|
|
|
|
|
of the number of pointers (or -1 if the constructors are built in a
|
|
|
|
|
separate section by the linker), followed by the pointers to the
|
|
|
|
|
constructor functions, terminated with a null pointer. The
|
|
|
|
|
destructor table has the same format, and begins at __DTOR_LIST__. */
|
|
|
|
|
|
|
|
|
|
static void
|
2003-06-29 14:07:06 +02:00
|
|
|
|
scan_prog_file (const char *prog_name, enum pass which_pass)
|
1992-03-19 23:07:22 +01:00
|
|
|
|
{
|
1992-06-10 21:25:16 +02:00
|
|
|
|
LDFILE *ldptr = NULL;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
int sym_index, sym_count;
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
int is_shared = 0;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
if (which_pass != PASS_FIRST && which_pass != PASS_OBJ)
|
1992-03-19 23:07:22 +01:00
|
|
|
|
return;
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* We do not need scanning for some standard C libraries. */
|
|
|
|
|
if (which_pass == PASS_FIRST && ignore_library (prog_name))
|
|
|
|
|
return;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* On AIX we have a loop, because there is not much difference
|
|
|
|
|
between an object and an archive. This trick allows us to
|
|
|
|
|
eliminate scan_libraries() function. */
|
|
|
|
|
do
|
1992-03-19 23:07:22 +01:00
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
Makefile.in (tlink.o): Don't depend on toplev.h.
* Makefile.in (tlink.o): Don't depend on toplev.h.
* collect2.c (c_file, o_file, export_file, import_file, ldout,
output_file, nm_file_name, ldd_file_name, strip_file_name,
c_file_name, prefix_list, libexts, is_ctor_dtor, find_a_file,
add_prefix, prefix_from_env, prefix_from_string, do_wait,
fork_execute, maybe_unlink, add_to_list,
extract_init_priority, write_list, dump_list,
dump_prefix_list, write_list_with_asm, write_c_file,
write_c_file_stat, write_c_file_glob, scan_prog_file,
scan_libraries, is_in_list, resolve_lib_name, use_import_list,
ignore_library, extract_string, notice, dump_file, target_machine,
collect_wait, collect_execute, libname, locatelib, aix_std_libs,
read_file, print_load_command): Constify a char*.
(fdopen, error, fatal, fatal_perror): Don't prototype.
(my_strerror): Remove. All callers use xstrerror instead.
(xcalloc, xmalloc, xrealloc, xstrdup, putenv): Remove definitions.
(main): Add prototype. Constify lots of char* ptrs. Change calls
to xcalloc/strcpy/strcat/... to one call to concat.
(main, scan_prog_file, scan_libraries): Use an intermediate
`const char **' to build an argv array.
(mapfile, libselect, libcompare, locatelib): Add prototypes.
* collect2.h (collect_execute, collect_wait, dump_file,
file_exists): Constify a char*.
(ldout, c_file_name, temporary_obstack, permanent_obstack,
temporary_firstobj, vflag, debug): Add extern declarations.
(fancy_abort, error, notice, fatal, fatal_perror): Add prototypes.
* tlink.c: Don't include toplev.h.
(vflag, debug, ldout, c_file_name, temporary_obstack,
permanent_obstack, temporary_firstobj): Don't declare.
(tlink_execute, frob_extension, symbol_hash_lookup,
file_hash_lookup, demangled_hash_lookup, tlink_init, freadsym,
recompile_files, read_repo_files, demangle_new_symbols,
scan_linker_output): Constify a char*.
(symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc,
do_tlink): Mark parameters with ATTRIBUTE_UNUSED.
From-SVN: r29087
1999-09-03 21:13:34 +02:00
|
|
|
|
/* Some platforms (e.g. OSF4) declare ldopen as taking a
|
|
|
|
|
non-const char * filename parameter, even though it will not
|
|
|
|
|
modify that string. So we must cast away const-ness here,
|
|
|
|
|
which will cause -Wcast-qual to burp. */
|
|
|
|
|
if ((ldptr = ldopen ((char *)prog_name, ldptr)) != NULL)
|
1992-05-06 23:25:13 +02:00
|
|
|
|
{
|
1998-10-27 14:23:17 +01:00
|
|
|
|
if (! MY_ISCOFF (HEADER (ldptr).f_magic))
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
fatal ("%s: not a COFF file", prog_name);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (GCC_CHECK_HDR (ldptr))
|
1992-05-06 23:25:13 +02:00
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
sym_count = GCC_SYMBOLS (ldptr);
|
|
|
|
|
sym_index = GCC_SYMZERO (ldptr);
|
1998-10-27 14:23:17 +01:00
|
|
|
|
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* Is current archive member a shared object? */
|
|
|
|
|
is_shared = HEADER (ldptr).f_flags & F_SHROBJ;
|
|
|
|
|
#endif
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
while (sym_index < sym_count)
|
|
|
|
|
{
|
|
|
|
|
GCC_SYMENT symbol;
|
|
|
|
|
|
|
|
|
|
if (ldtbread (ldptr, sym_index, &symbol) <= 0)
|
|
|
|
|
break;
|
|
|
|
|
sym_index += GCC_SYMINC (symbol);
|
|
|
|
|
|
|
|
|
|
if (GCC_OK_SYMBOL (symbol))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if ((name = ldgetname (ldptr, &symbol)) == NULL)
|
|
|
|
|
continue; /* should never happen */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
1995-05-09 12:21:13 +02:00
|
|
|
|
#ifdef XCOFF_DEBUGGING_INFO
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
/* All AIX function names have a duplicate entry
|
|
|
|
|
beginning with a dot. */
|
|
|
|
|
if (*name == '.')
|
|
|
|
|
++name;
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
switch (is_ctor_dtor (name))
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
2000-01-07 19:33:12 +01:00
|
|
|
|
if (! is_shared)
|
|
|
|
|
add_to_list (&constructors, name);
|
1998-02-22 10:48:22 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (which_pass == PASS_OBJ)
|
|
|
|
|
add_to_list (&exports, name);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 2:
|
2000-01-07 19:33:12 +01:00
|
|
|
|
if (! is_shared)
|
|
|
|
|
add_to_list (&destructors, name);
|
1998-02-22 10:48:22 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (which_pass == PASS_OBJ)
|
|
|
|
|
add_to_list (&exports, name);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
case 3:
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#ifndef LD_INIT_SWITCH
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (is_shared)
|
|
|
|
|
add_to_list (&constructors, name);
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#endif
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4:
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#ifndef LD_INIT_SWITCH
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (is_shared)
|
|
|
|
|
add_to_list (&destructors, name);
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#endif
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
1999-06-21 22:20:26 +02:00
|
|
|
|
case 5:
|
|
|
|
|
if (! is_shared)
|
|
|
|
|
add_to_list (&frame_tables, name);
|
2000-02-14 20:46:02 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
if (which_pass == PASS_OBJ)
|
|
|
|
|
add_to_list (&exports, name);
|
|
|
|
|
#endif
|
1999-06-21 22:20:26 +02:00
|
|
|
|
break;
|
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
default: /* not a constructor or destructor */
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* If we are building a shared object on AIX we need
|
2000-08-14 22:46:16 +02:00
|
|
|
|
to explicitly export all global symbols. */
|
2003-06-29 14:07:06 +02:00
|
|
|
|
if (shared_obj)
|
1998-03-25 14:17:37 +01:00
|
|
|
|
{
|
|
|
|
|
if (which_pass == PASS_OBJ && (! export_flag))
|
|
|
|
|
add_to_list (&exports, name);
|
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
|
|
|
|
continue;
|
|
|
|
|
}
|
1992-03-19 23:07:22 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (debug)
|
2000-01-07 19:33:12 +01:00
|
|
|
|
#if !defined(EXTENDED_COFF)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
fprintf (stderr, "\tsec=%d class=%d type=%s%o %s\n",
|
|
|
|
|
symbol.n_scnum, symbol.n_sclass,
|
|
|
|
|
(symbol.n_type ? "0" : ""), symbol.n_type,
|
|
|
|
|
name);
|
1992-03-19 23:07:22 +01:00
|
|
|
|
#else
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
fprintf (stderr,
|
1998-06-22 07:23:33 +02:00
|
|
|
|
"\tiss = %5d, value = %5ld, index = %5d, name = %s\n",
|
|
|
|
|
symbol.iss, (long) symbol.value, symbol.index, name);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
1992-05-06 23:25:13 +02:00
|
|
|
|
}
|
1998-10-27 14:23:17 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* If archive contains both 32-bit and 64-bit objects,
|
|
|
|
|
we want to skip objects in other mode so mismatch normal. */
|
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "%s : magic=%o aix64=%d mismatch\n",
|
|
|
|
|
prog_name, HEADER (ldptr).f_magic, aix64_flag);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
1992-03-19 23:07:22 +01:00
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fatal ("%s: cannot open as COFF file", prog_name);
|
|
|
|
|
}
|
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* On AIX loop continues while there are more members in archive. */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
while (ldclose (ldptr) == FAILURE);
|
|
|
|
|
#else
|
|
|
|
|
/* Otherwise we simply close ldptr. */
|
1992-03-19 23:07:22 +01:00
|
|
|
|
(void) ldclose(ldptr);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#endif
|
1992-03-19 23:07:22 +01:00
|
|
|
|
}
|
2002-03-12 20:07:06 +01:00
|
|
|
|
#endif /* OBJECT_FORMAT_COFF */
|
1995-07-29 22:19:33 +02:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
#ifdef COLLECT_EXPORT_LIST
|
|
|
|
|
/* Given a library name without "lib" prefix, this function
|
|
|
|
|
returns a full library name including a path. */
|
|
|
|
|
static char *
|
2003-06-29 14:07:06 +02:00
|
|
|
|
resolve_lib_name (const char *name)
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
{
|
|
|
|
|
char *lib_buf;
|
|
|
|
|
int i, j, l = 0;
|
1996-01-07 23:14:58 +01:00
|
|
|
|
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
for (i = 0; libpaths[i]; i++)
|
|
|
|
|
if (libpaths[i]->max_len > l)
|
|
|
|
|
l = libpaths[i]->max_len;
|
|
|
|
|
|
|
|
|
|
lib_buf = xmalloc (l + strlen(name) + 10);
|
|
|
|
|
|
|
|
|
|
for (i = 0; libpaths[i]; i++)
|
|
|
|
|
{
|
|
|
|
|
struct prefix_list *list = libpaths[i]->plist;
|
|
|
|
|
for (; list; list = list->next)
|
|
|
|
|
{
|
2000-06-25 00:19:46 +02:00
|
|
|
|
/* The following lines are needed because path_prefix list
|
|
|
|
|
may contain directories both with trailing '/' and
|
|
|
|
|
without it. */
|
|
|
|
|
const char *p = "";
|
|
|
|
|
if (list->prefix[strlen(list->prefix)-1] != '/')
|
|
|
|
|
p = "/";
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
for (j = 0; libexts[j]; j++)
|
1995-07-29 22:19:33 +02:00
|
|
|
|
{
|
2003-06-29 14:07:06 +02:00
|
|
|
|
sprintf (lib_buf, "%s%slib%s.%s",
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
list->prefix, p, name, libexts[j]);
|
|
|
|
|
if (debug) fprintf (stderr, "searching for: %s\n", lib_buf);
|
|
|
|
|
if (file_exists (lib_buf))
|
1995-07-29 22:19:33 +02:00
|
|
|
|
{
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (debug) fprintf (stderr, "found: %s\n", lib_buf);
|
|
|
|
|
return (lib_buf);
|
1995-07-29 22:19:33 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
if (debug)
|
|
|
|
|
fprintf (stderr, "not found\n");
|
|
|
|
|
else
|
c-decl.c (duplicate_decls, [...]): Remove leading capital from diagnostics.
* c-decl.c (duplicate_decls, push_parm_decl): Remove leading
capital from diagnostics.
* c-lex.c (cb_file_change): Similarly.
* c-parse.in : Similarly.
* cfgrtl.c (verify_flow_info): Similarly.
* collect2.c: Similarly.
* cppfiles.c (find_include_file): Similarly.
* cppinit.c (cpp_handle_option): Similarly.
* cpplex.c (cpp_spell_token): Similarly.
* cppmain.c (do_preprocessing): Similarly.
* gcc.c (translate_options, process_command, do_spec1,
main, pfatal_execute): Similarly.
* genattr.c (main): Similarly.
* genattrtab.c (check_attr_test, operate_exp, simplify_test_exp,
write_test_expr, main): Similarly.
* gencodes.c (main): Similarly.
* genconfig.c (main): Similarly.
* genconstants.c (main): Similarly.
* genemit.c (main): Similarly.
* genextract.c (main): Similarly.
* genflags.c (main): Similarly.
* genopinit.c (main): Similarly.
* genoutput.c (process_template, main): Similarly.
* genpeep.c (main): Similarly.
* genrecog.c (main): Similarly.
* gensupport.c (is_predicable, identify_predicable_attribute,
alter_predicate_for_insn, init_md_reader_args, main): Similarly.
* ggc-page.c (alloc_anon): Similarly.
* mips-tfile.c (add_string, add_procedure, add_file, read_line,
parse_begin, parse_bend, parse_def, parse_end, parse_file,
parse_stabs_common, parse_stabs, write_varray, write_object,
read_seek, copy_object, main, error): Similarly.
* profile.c (compute_branch_probabilities): Similarly.
* reg-stack.c (check_asm_stack_operands): Similarly.
* reload.c (find_reloads): Similarly.
* reload1.c (spill_failure, failed_reload): Similarly.
* rtl-error.c (_fatal_insn_not_found): Similarly.
* toplev.c (read_integral_parameter, crash_signal,
decode_f_option, set_target_switch, parse_options_and_default_flags)
: Similarly.
* tradcif.y (parse_number, yylex): Similarly.
* tradcpp.c (main, fancy_abort): Similarly.
* tree.c (tree_check_failed): Similarly.
* varray.c (varray_check_failed): Similarly.
* xcoffout.c (xcoff_output_standard_types): Similarly.
cp:
* call.c (build_java_interface_fn_ref): Similarly.
* except.c (is_admissible_throw_operand): Similarly.
* init.c (build_java_class_ref): Similarly.
* xref.c (open_xref_file): Similarly.
objc:
* objc-act.c (get_object_ref, lookup_and_install_protocols,
build_objc_string_object, objc_declare_alias, build_ivar_chain,
finish_message_expr, build_protocol_expr, is_public,
start_class): Similarly.
testsuite:
* objc.dg/alias.m: Update.
* objc.dg/class-1.m: Update.
* objc.dg/const-str-1.m: Update.
* objc.dg/fwd-proto-1.m: Update.
* objc.dg/id-1.m: Update.
* objc.dg/super-class-1.m: Update.
From-SVN: r47518
2001-12-02 01:04:36 +01:00
|
|
|
|
fatal ("library lib%s not found", name);
|
[multiple changes]
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
Fri Feb 19 22:36:52 1998 Robert Lipe <robertl@dgii.com>
* collect2.c (full_real_ld_suffix): #ifdef CROSS_COMPILE.
From-SVN: r18128
1998-02-19 20:41:03 +01:00
|
|
|
|
return (NULL);
|
|
|
|
|
}
|
2002-03-12 20:07:06 +01:00
|
|
|
|
#endif /* COLLECT_EXPORT_LIST */
|