Commit Graph

98 Commits

Author SHA1 Message Date
Rafael Espindola ef49815638 Add an extra-library-path option to the plugin. This is used to support
having a library both as bitcode and native code. We want to use the
bitcode first, but if codegen produces new undefined references we have to use
the native code to satisfy those references.

Gold has no notion of bitcode and native search directories, so instead it has
an API where the plugin can instruct it to look for the libraries it is passing
to it. This patch uses that API.

llvm-svn: 106674
2010-06-23 20:20:59 +00:00
Rafael Espindola 9d94ebf1b6 add_input_file and add_input_library now take const arguments, remove the
const_cast.

llvm-svn: 106410
2010-06-21 02:23:12 +00:00
Rafael Espindola 8297640062 Add a pass-through option to the plugin. The use case for this option is to
ask the linker to take another look into some library or object. The case when
one might want to do this is when codegen introduces a new undefined reference.
The canonical example is libgcc.

llvm-svn: 106303
2010-06-18 19:18:58 +00:00
Rafael Espindola 77b6d01906 Don't produce output only if *all* files are unused.
llvm-svn: 105962
2010-06-14 21:20:52 +00:00
Nick Lewycky 4ecf2cc5ea Plug a leak in the non-error case by removing one level of indirection.
llvm-svn: 105556
2010-06-07 21:42:19 +00:00
Rafael Espindola c4dca3aeb6 Misc cleanups to the gold plugin.
llvm-svn: 105534
2010-06-07 16:45:22 +00:00
Rafael Espindola 8fb957e5cb Add a emit-llvm option to the plugin and make the path argument to also-emit-llvm optional.
llvm-svn: 105414
2010-06-03 21:11:20 +00:00
Nick Lewycky ca4180c92a Perfer !string.empty() over string != "".
llvm-svn: 105397
2010-06-03 17:13:23 +00:00
Nick Lewycky 0ac5e2205c Whitespace cleanup.
llvm-svn: 105395
2010-06-03 17:10:17 +00:00
Rafael Espindola 00121827b2 Don't preserve all symbols in a .so and instead trust gold to know what is
needed. The result is that now we are able to drop unnecessary symbol from
shared libraries.

llvm-svn: 105389
2010-06-03 14:45:44 +00:00
Rafael Espindola 0af6889b89 Avoid renaming loadable modules at install time. Now the gold plugin is named
LLVMgold.so both in both the build and install directories.

llvm-svn: 103897
2010-05-16 03:13:23 +00:00
Rafael Espindola ba3398bb1a Add an also-emit-llvm option to the gold plugin.
llvm-svn: 103714
2010-05-13 13:39:31 +00:00
Nick Lewycky bb2ec7de9c Revert r64616 which worked around http://gcc.gnu.org/PR42757 , we just didn't
know it at the time.

llvm-svn: 101439
2010-04-16 04:32:20 +00:00
Dan Gohman 0977358509 Create an exports file, so that the plugin only exports the onload symbol.
llvm-svn: 101431
2010-04-16 00:43:25 +00:00
Dan Gohman ebb4ae0912 Make things static that don't need to be referenced from outside the file.
llvm-svn: 101430
2010-04-16 00:42:57 +00:00
Chris Lattner 823aed16f9 make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.
llvm-svn: 94378
2010-01-24 20:43:08 +00:00
Chris Lattner 7ba0661f27 Stop building RTTI information for *most* llvm libraries. Notable
missing ones are libsupport, libsystem and libvmcore.  libvmcore is
currently blocked on bugpoint, which uses EH.  Once it stops using
EH, we can switch it off.

This #if 0's out 3 unit tests, because gtest requires RTTI information.
Suggestions welcome on how to fix this.

llvm-svn: 94164
2010-01-22 06:49:46 +00:00
Viktor Kutuzov fd7ddd9c69 Fix to pass options from Gold plugin to LTO codegen
llvm-svn: 85419
2009-10-28 18:55:55 +00:00
Duncan Sands f34a264c60 Include config.h in order to have HAVE_STDINT_H be defined.
In the latest binutils the plugin-api.h needs this - without
it the LLVM gold plugin fails to compile.

llvm-svn: 84861
2009-10-22 16:03:32 +00:00
Nick Lewycky f8dd676a50 Fix Makefile to build correctly on Darwin. Patch by Sandeep Patel!
llvm-svn: 83813
2009-10-11 23:10:09 +00:00
Dan Gohman 61a8796ddb Make LLVM command-line tools overwrite their output files without -f.
This is conventional command-line tool behavior. -f now just means
"enable binary output on terminals".

Add a -f option to llvm-extract and llvm-link, for consistency.

Remove F_Force from raw_fd_ostream and enable overwriting and
truncating by default. Introduce an F_Excl flag to permit users to
enable a failure when the file already exists. This flag is
currently unused.

Update Makefiles and documentation accordingly.

llvm-svn: 79990
2009-08-25 15:34:52 +00:00
Chris Lattner 9e6f1f160a Change raw_fd_ostream to take flags as an optional bitmask
instead of as two bools.  Use this to add a F_Append flag
which has the obvious behavior.

Other unrelated changes conflated into this patch:

1. REmove EH stuff from llvm-dis and llvm-as, the try blocks
   are dead.
2. Simplify the filename inference code in llvm-as/llvm-dis,
   because raw_fd_ostream does the right thing with '-'.
3. Switch machine verifier to use raw_ostream instead of ostream
   (Which is the thing that needed append in the first place).

llvm-svn: 79807
2009-08-23 02:51:22 +00:00
Dan Gohman 607818a2c1 Add a Force option to raw_fd_ostream to specify whether opening
an existing file is considered an error. Convert several tools
to use raw_fd_ostream instead of std::ostream, and to use this
new option instead of doing a manual check.

llvm-svn: 75801
2009-07-15 17:29:42 +00:00
Jeffrey Yasskin 1a93330ffa Add a portable strerror*() wrapper, llvm::sys::StrError(). This includes the
Windows variant, strerror_s, but I couldn't test that.

I'll update configure and config.h.in in a subsequent patch.

llvm-svn: 74621
2009-07-01 18:11:20 +00:00
Chris Lattner 3912036c25 remove dead makefile flags.
llvm-svn: 74065
2009-06-24 05:29:56 +00:00
Rafael Espindola 27f6cb18d1 Remove the gcc= option. llvm-gcc uses only as=
Look for as in the path. Doing it here instead
of llvm-gcc because llvm-gcc has nothing as
convenient as sys::Program::FindProgramByName.

llvm-svn: 73383
2009-06-15 10:14:18 +00:00
Nick Lewycky 5503c31ff9 Add option for specifying the path to assembler, "as". This overrides the path
to gcc.

llvm-svn: 73008
2009-06-07 00:50:45 +00:00
Duncan Sands 81e053a739 Make sure the CXXFLAGS setting is picked up by
the common Makefile.  Not sure why this suddenly
started causing problems.

llvm-svn: 71925
2009-05-16 04:00:00 +00:00
Nick Lewycky a303097de0 Allow a user of libLTO to specify the full pathname of the gcc executable to
run when assembling.

Wire this up to the gold plugin. You can now pass --plugin-opt gcc=/foo/bar/gcc
and it will run that gcc instead of looking for it on the path.

llvm-svn: 70490
2009-04-30 15:24:09 +00:00
Rafael Espindola 56548523f5 Add LTO_SYMBOL_DEFINITION_WEAKUNDEF, use that on the gold plugin.
llvm-svn: 69972
2009-04-24 16:55:21 +00:00
Nick Lewycky 5eb3773b99 Force 'llvm-config' to go first, optionally followed by lto and gold mixed in
with the rest of the parallel directories.

Build lto when possible on all platforms. Make gold to explicitly depend on
libLTO.

llvm-svn: 65518
2009-02-26 07:56:49 +00:00
Nick Lewycky 338d07e94e Add an option to the gold plugin to make it emit a file with the public api
list that can in turn be passed to -internalize pass through
-internalize-public-api-file.

Pass gold -plugin-opt=generate-api-file to produce "apifile.txt" in the current
directory.

llvm-svn: 65295
2009-02-22 22:15:44 +00:00
Rafael Espindola 6add6181c8 really fix style
llvm-svn: 64923
2009-02-18 17:49:06 +00:00
Rafael Espindola e08484daf2 fix style
llvm-svn: 64905
2009-02-18 08:30:15 +00:00
Rafael Espindola fabd0534fd tools like nm and ar only need register_claim_file and add_symbols. Don't abort
if other hooks are missing.

llvm-svn: 64812
2009-02-17 21:08:21 +00:00
Nick Lewycky 9178155206 Shoot! Remove this debugging line again!
llvm-svn: 64617
2009-02-15 22:50:17 +00:00
Nick Lewycky b020e0d14c Don't discard definitions of common symbols. Not sure if this is the right fix.
Before this change, the program:
  int var;
  int main(void) { return 0; }
when run under 'nm -g' would show 'U var' with the gold plugin and
'B var' with gcc.

llvm-svn: 64616
2009-02-15 22:49:17 +00:00
Nick Lewycky 4ddcc43724 Free the buffer in the case where we don't create a module out of it, as
pointed out by Torok Edwin.

Remove trailing whitespaces.

llvm-svn: 64002
2009-02-07 03:15:01 +00:00
Nick Lewycky 74b5ef7cae Free the buffer.
llvm-svn: 63907
2009-02-06 01:58:34 +00:00
Duncan Sands 2a3173287f Revert the previous commit. It seems it didn't
really solve the problem.  Also it changed the
name from libLLVMgold to LLVMgold (correcting
the name resulted in the original problem
suddenly reappearing).

llvm-svn: 63861
2009-02-05 10:21:34 +00:00
Duncan Sands 4dd55167ab Stop llvm-config thinking that there are circular
dependencies between libraries due to __dso_handle
when doing "make install".  I don't know what the
LINK_COMPONENTS stuff is about, so I left it alone.

llvm-svn: 63860
2009-02-05 09:54:02 +00:00
Nick Lewycky 9f694e4b3b It's not obvious, but lto_module_create_from_memory doesn't need to use the
buffer after it creates the Module. Thus, we don't need to store this pointer
in claimed_file.

llvm-svn: 63834
2009-02-05 05:36:01 +00:00
Nick Lewycky 8691c47e9e Remove accidentally included debug message!
Reword a comment for clarity. Remove some extra whitespace.

llvm-svn: 63823
2009-02-05 04:14:23 +00:00
Torok Edwin a488ee0e35 Alphabetize includes. Update comment.
llvm-svn: 63771
2009-02-04 21:00:02 +00:00
Torok Edwin c409c77817 mention that PIC is needed for libLTO and libLLVMgold
llvm-svn: 63755
2009-02-04 19:12:25 +00:00
Torok Edwin a2794dba04 remove printf - it was there only for debugging!
llvm-svn: 63742
2009-02-04 17:40:28 +00:00
Torok Edwin 4b35a81845 add support for .a files containing LLVM IR to the gold plugin
llvm-svn: 63741
2009-02-04 17:39:30 +00:00
Nick Lewycky fb643e4d9f Add LLVM plugin for gold.
llvm-svn: 63623
2009-02-03 07:13:24 +00:00