native_client/nacl-gcc.git
5 months agoUse "e" constraint in place of "i" to match x86_64_general_operand master
Roland McGrath [Thu, 20 Feb 2014 17:32:15 +0000 (09:32 -0800)]
Use "e" constraint in place of "i" to match x86_64_general_operand

The fix for bug 3549 (commit d913bb7) was incomplete.  When the
x86_64_general_operand predicate is used, the corresponding operand
constraint must be "e" rather than "i".  The predicate controls only
whether the instruction pattern is selected in initial RTL generation.
The constraint controls how operands can be replaced by later phases
of the compiler, such as the "reload" steps done by register allocation.
The "i" constraint accepts a SYMBOL_REF under -fPIC while "e" does not.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=3793
TEST= toolchain trybots
R=sehr@chromium.org, khim@chromium.org

Review URL: https://codereview.chromium.org/166573006

5 months agoUse 'ud2' assembly mnemonic instead of assembling the opcode as data
Roland McGrath [Fri, 14 Feb 2014 17:22:33 +0000 (09:22 -0800)]
Use 'ud2' assembly mnemonic instead of assembling the opcode as data

The new assembler only applies the bundling logic to things it knows are
machine instructions, not to data literals (even if they are in sections
that also contain machine instructions).  For __builtin_trap, the compiler
was emitting ".value 0x0b0f" instead of "ud2", so with bad luck it could
wind up that this two-byte instruction straddles a bundle boundary.
Using the mnemonic instead avoids that problem.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=3792
TEST= toolchain trybots
R=sehr@chromium.org

Review URL: https://codereview.chromium.org/165513002

8 months agoFix interlibrary dependencies in target shared library builds
Roland McGrath [Sat, 16 Nov 2013 02:06:07 +0000 (18:06 -0800)]
Fix interlibrary dependencies in target shared library builds

The core change here is just the libtool.m4 change.  The purpose of
that is to teach libtool that *-*-nacl* is like *-*-linux* as far as
the semantics of dependencies between shared libraries.  The lack of
this meant that libstdc++.so did not have proper dependencies on
libc.so and libm.so.  Fixes to the linker mean that links using
--as-needed that happened to draw in libm.so as a dependency of the
final nexe no longer do, leading to undefined symbol errors for
libstdc++.so's references to libm.so symbols.

All the */configure changes are just due to regenerating with
Autoconf.  The status quo ante included a hodge-podge of hand edits
to the generated configure files as well as some changes to .m4
files that had then affected some configure files but not all
because the person doing the change regenerated some affected files
and not others.  The config/lib-link.m4 change is necessary to
preserve a change that was made with hand edits to configure files
but should have been made in that source file instead.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=3636
TEST= local build and hand examination
R=sehr@chromium.org, mseaborn@chromium.org

Review URL: https://codereview.chromium.org/65643012

9 months agoChange GCC spec to support upgraded binutils
Victor Khimenko [Tue, 15 Oct 2013 15:56:13 +0000 (19:56 +0400)]
Change GCC spec to support upgraded binutils

New version of binutils have three regimes: --32, --64 and default
(which is not identical to --64 !!!).

Force --64 if x86_64 mode is used.

Also -m options for ld are changed.

R=mcgrathr@chromium.org

Review URL: https://codereview.chromium.org/23567025

11 months agoUse long long builtins of zero counting for x86-64.
Victor Khimenko [Fri, 9 Aug 2013 08:43:58 +0000 (12:43 +0400)]
Use long long builtins of zero counting for x86-64.

2011-06-18  H.J. Lu  <hongjiu.lu@intel.com>

* longlong.h (count_leading_zeros): Use long long builtin for
x86-64.
(count_trailing_zeros): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175183 138bc75d-0d04-0410-961f-82ee72b054a4

R=halyavin@google.com
BUG=

Review URL: https://codereview.chromium.org/22638012

11 months agoUse x86_64_*_operand in LEA splitters
Roland McGrath [Wed, 31 Jul 2013 16:34:58 +0000 (09:34 -0700)]
Use x86_64_*_operand in LEA splitters

Similar to the previous fix, these patterns need to use a constraint
that will reject a SYMBOL_REF expression in -m64 -fPIC.  That is not
how these patterns were handled in upstream -mx32 support.  But the
situation is substantially different there and possibly this is not
the relevant change there because Pmode is SImode for -mx32 while
it's still DImode for x86_64-nacl-gcc -m64.  (That said, I don't
actually understand what RTL transformations happen differently in
this case upstream under -mx32 to prevent it from exhibiting this
bug--which it does not--without this constraint change.)

BUG= https://code.google.com/p/nativeclient/issues/detail?id=3598
TEST= toolchain trybots
R=khim@chromium.org

Review URL: https://codereview.chromium.org/21318002

11 months agoUse x86_64_general_operand in a bunch more SI mode insn patterns
Roland McGrath [Fri, 26 Jul 2013 23:13:07 +0000 (16:13 -0700)]
Use x86_64_general_operand in a bunch more SI mode insn patterns

The x86_64_general_operand predicate applies some important constraints,
such as that a symbol_ref cannot be an immediate operand under -fPIC.
With the ILP32 model, these constraints matter for SI mode instructions
(rather than just DI mode) too, since address values are SI mode.

Previously the x86_64_general_operand predicate was used inconsistently,
e.g. on add patterns but not on sub and mul patterns.  This fix changes
all the relevant patterns to use x86_64_general_operand in place of
vanilla general_operand.  This is consistent with how the -mx32 support
handles this issue in the upstream trunk code.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=3549
TEST= toolchain trybots
R=khim@chromium.org

Review URL: https://codereview.chromium.org/20820002

13 months agoFix mcount counter generation
Robert Grosse [Wed, 12 Jun 2013 21:14:54 +0000 (14:14 -0700)]
Fix mcount counter generation

When compiling with with -pg, the x86 newlib toolchain tries to use
inline locations for the mcount counts. Additionally it leaves stray @
in the generated assembly.

We should use the code path that avoids all of this by defining
NO_PROFILE_COUNTERS.

BUG=https://code.google.com/p/nativeclient/issues/detail?id=3492
R=mcgrathr@chromium.org

Review URL: https://codereview.chromium.org/15662012

14 months agoBackport GCC 4.5+ --enable-linker-build-id option.
Victor Khimenko [Thu, 2 May 2013 15:14:44 +0000 (19:14 +0400)]
Backport GCC 4.5+ --enable-linker-build-id option.

BUG = NONE
TEST = objdump -s -j .note.gnu.build-id libc.so
R=bradnelson@google.com

Review URL: https://codereview.chromium.org/14859004

21 months agoFix potential out of bounds access. master-backup
Victor Khimenko [Tue, 16 Oct 2012 13:48:45 +0000 (17:48 +0400)]
Fix potential out of bounds access.

Merge from http://gcc.gnu.org/viewcvs?view=revision&revision=185787.

Review URL: https://codereview.chromium.org/11177002

2 years agoPatch NaCl gcc to avoid use of fsincos.
Victor Khimenko [Tue, 19 Jun 2012 15:36:57 +0000 (19:36 +0400)]
Patch NaCl gcc to avoid use of fsincos.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=2720
TEST=bots

R=pasko@google.com

Review URL: https://chromiumcodereview.appspot.com/10557041

2 years agoDon't refer to pthread_cancel in libgcc
Roland McGrath [Wed, 13 Jun 2012 21:30:15 +0000 (14:30 -0700)]
Don't refer to pthread_cancel in libgcc

This is a backport of upstream commit svn://gcc.gnu.org/svn/gcc/trunk@188400

BUG= http://code.google.com/p/nativeclient/issues/detail?id=2561
TEST= toolchain trybots

R=khim@google.com

Review URL: https://chromiumcodereview.appspot.com/10537138

2 years agoFix "-lxxx" command line parsing.
Victor Khimenko [Mon, 11 Jun 2012 18:33:24 +0000 (22:33 +0400)]
Fix "-lxxx" command line parsing.

Initialized variable leads to unpredictable behavior.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=2560
TEST=manual build

R=mcgrathr@google.com

Review URL: https://chromiumcodereview.appspot.com/10532086

2 years agoFix one more bug in code generation...
Victor Khimenko [Wed, 16 May 2012 14:06:13 +0000 (18:06 +0400)]
Fix one more bug in code generation...

Example code:

int foo()
  {
  unsigned int x = 0xf2a3e218;

  return ((int*)x)[0];
  }

R=eaeltsin@google.com

Review URL: https://chromiumcodereview.appspot.com/10389146

2 years agoReplace rip lea with eip
Victor Khimenko [Fri, 11 May 2012 13:44:39 +0000 (17:44 +0400)]
Replace rip lea with eip

Fix for the POINTERS_EXTEND_UNSIGNED > 0 problem of keeping high part of rip.

Note that ix86_lea_decompose_address does not produce pc_rtx in base or index even if -fPIC is used: pc_rtx is added later in print_operand_address_parts. That's why we are handling !base and !index case here.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1304
TEST=see reproducer in bug above

R=eaeltsin@google.com

Review URL: https://chromiumcodereview.appspot.com/10386087

2 years agoPredefine __LITTLE_ENDIAN__
Roland McGrath [Fri, 24 Feb 2012 19:42:40 +0000 (11:42 -0800)]
Predefine __LITTLE_ENDIAN__

It's a nice consistency with some other targets to predefine
__LITTLE_ENDIAN__ for little-endian NaCl targets.  We'd like
to be able to use this in upstream-friendly newlib headers.

BUG= none
TEST= manually examined -dM output

R=pdox@google.com

Review URL: https://chromiumcodereview.appspot.com/9447064

2 years agoMake -Os a fatal error
Roland McGrath [Wed, 11 Jan 2012 20:56:22 +0000 (12:56 -0800)]
Make -Os a fatal error

As per http://code.google.com/p/nativeclient/issues/detail?id=2284
using -Os produces bad code.  So disallow it until that gets fixed.

BUG= http://code.google.com/p/nativeclient/issues/detail?id=2535
TEST= tested manually

R=khim@google.com,bradchen@google.com

Review URL: http://codereview.chromium.org/9186013

2 years agoAdd a compatibility function attribute (and flag) for nacl-gcc to
Jan Voung [Tue, 15 Nov 2011 23:26:43 +0000 (15:26 -0800)]
Add a compatibility function attribute (and flag) for nacl-gcc to
be ABI compatible with llvm/PNaCl.

Due to the fact that llvm bitcode loses information about the original source,
(unions, alignment) it is hard to match the ABI (see notes for known issues:
https://docs.google.com/a/google.com/document/d/1P3WrT_LHwN20gbs75LnHuMrbd804fSdSHKGK7Q3B20k/edit?hl=en_US#bookmark=id.sb20hms96tga).

Thus, for now, we make an attribute (and flag) to pass and return
structures and unions on the stack. Vectors and scalars can still use registers. This is calling convention is easy
to match. With this nacl-gcc is calling convention compatible with
pnacl. If at some point in the future we get richer type information
in bitcode we could do without this.

*****
Example uses of the attribute:

typedef struct {int x; float y; } s1;

typedef  void (__attribute__((pnaclcall)) *pnacl_fp)(int, s1, int);
typedef  s1 (__attribute__((pnaclcall)) *pnacl_ret_fp)(int, int) ;

extern void foo(int x, s1 y, int z);

__attribute__((pnaclcall)) void bar(int x, s1 y, int z)
{
  foo(x, y, z);
  if (x > 0)
    bar(x - 1, y, z);
}

void bar_fp_casted(void) {
  s1 s = { 80, 81.0f };
  void (__attribute__((pnaclcall)) *temp_fp)(int, s1, int) ;
  temp_fp = (pnacl_fp)&foo;
  (*temp_fp)(79, s, 82);
}

void bar_fp_casted2(void) {
  s1 s = { 80, 81.0f };
  void (*temp_fp)(int, s1, int) = &foo;
  (*(pnacl_fp)temp_fp)(79, s, 82);
}

*****

BUG= http://code.google.com/p/nativeclient/issues/detail?id=1819
BUG= http://code.google.com/p/nativeclient/issues/detail?id=2413
TEST= http://codereview.chromium.org/8502006/
and toolchain trybots

Review URL: http://codereview.chromium.org/8479017

2 years agoFix libgfortran shared library for NaCl.
Victor Khimenko [Wed, 2 Nov 2011 14:06:43 +0000 (18:06 +0400)]
Fix libgfortran shared library for NaCl.

This is simple application of patch to libtool.m4 for libg{fortran,objc}.

Patch courtesy of Alexander Vodomerov.

R=halyavin@google.com

Review URL: http://codereview.chromium.org/8423042

2 years agoFix libgfortran for NaCl.
Victor Khimenko [Wed, 2 Nov 2011 13:03:49 +0000 (17:03 +0400)]
Fix libgfortran for NaCl.

This change should probably be pushed upstream: POSIX says that if
getcwd fails it should return NULL.  But in NaCl case it ALWAYS fail.

Patch courtesy of Alexander Vodomerov.

R=halyavin@google.com

Review URL: http://codereview.chromium.org/8437050

2 years agolibiberty: Fix psignal parameter type
Roland McGrath [Thu, 20 Oct 2011 16:09:36 +0000 (09:09 -0700)]
libiberty: Fix psignal parameter type

This is a backport of a change that was approved for the upstream trunk.
Fix the parameter type of psignal so it matches the canonical declaration.
This fixes a build problem when trying to use a nacl-newlib rebased on the
upstream newlib trunk.

BUG= none
TEST= toolchain trybot

R=pasko@google.com,eaeltsin@google.com

Review URL: http://codereview.chromium.org/8356012

2 years agoForce function alignment for TARGET_NACL
Evgeny Eltsin [Thu, 20 Oct 2011 12:36:47 +0000 (16:36 +0400)]
Force function alignment for TARGET_NACL

Ugly, ugly hack... I tried so hard to get rid of NaCl-specific deps in the front-end, and now I'm introducing one myself.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=2168

R=pasko@google.com,mcgrathr@chromium.org
TEST=

Review URL: http://codereview.chromium.org/8352043

2 years agoInline 'if' in GC instrumentation
Egor Pasko [Tue, 18 Oct 2011 08:22:19 +0000 (12:22 +0400)]
Inline 'if' in GC instrumentation

This is the same version as proposed by Evgeny, only changing the actual
suspension function name back to where it was before to be able to perform less
changes in libgc.

Instead of
__nacl_suspend_thread_if_needed ();

instrumentation now looks like
if (__nacl_thread_suspension_needed)
  __nacl_suspend_thread_if_needed ();

GC runtime should define
volatile int __nacl_thread_suspension_needed;
void __nacl_suspend_thread_if_needed (void);

BUG=http://code.google.com/p/nativeclient/issues/detail?id=2181

TEST=none

Review URL: http://codereview.chromium.org/8336016

2 years agoDon't link in transitive dependences
Victor Khimenko [Mon, 26 Sep 2011 23:36:58 +0000 (03:36 +0400)]
Don't link in transitive dependences

Borrowed from gcc46-no-add-needed.patch: don't link in transitive dependences.

R=halyavin@google.com

Review URL: http://codereview.chromium.org/8048011

2 years agoUse a NaCl-specific dynamic linker name
Roland McGrath [Wed, 31 Aug 2011 16:46:30 +0000 (09:46 -0700)]
Use a NaCl-specific dynamic linker name

This affects the PT_INTERP strings embedded in binaries.
This has no immediate effect on how we are currently doing things in NaCl.
But it establishes unique NaCl-specific names that we can use to enable
NaCl-on-Linux hacks for developers.

BUG= none
TEST= toolchain trybot

R=pasko@google.com,eaeltsin@google.com

Review URL: http://codereview.chromium.org/7740063

2 years agoDon't generate absolute references under nacl-x64.
Victor Khimenko [Fri, 26 Aug 2011 17:03:02 +0000 (21:03 +0400)]
Don't generate absolute references under nacl-x64.

All NaCl modules are PIC to some degree: they can use constant offsets
when statically linked, but these offsets must be relative to %r15.
movabs* with memory operand can never be used.

R=eaeltsin@google.com

Review URL: http://codereview.chromium.org/7694018

3 years agoDisable wrong Pmode != ptr_mode optimization
Evgeny Eltsin [Thu, 23 Jun 2011 09:57:10 +0000 (13:57 +0400)]
Disable wrong Pmode != ptr_mode optimization

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1601

R=khim@chromium.org,pasko@google.com
TEST=

Review URL: http://codereview.chromium.org/7241010

3 years agoFix NaCl system header files location
Evgeny Eltsin [Wed, 15 Jun 2011 17:58:34 +0000 (21:58 +0400)]
Fix NaCl system header files location

NATIVE_SYSTEM_HEADER_DIR is target makefile variable that describes where system headers are located, relative to file system root. Default is /usr/include.

When building a cross-compiler configured using --with-sysroot, CROSS_SYSTEM_HEADER_DIR is constructed from sysroot value followed by NATIVE_SYSTEM_HEADER_DIR.

We don’t have /usr/include on NaCl, so set this to /include.

This only affects configurations that use --with-sysroot, so the actual effect will become visible only when I add --with-sysroot to gcc configuration.

R=pasko@google.com
BUG=http://code.google.com/p/nativeclient/issues/detail?id=854
TEST=

Review URL: http://codereview.chromium.org/7170022

3 years agoMake va_list a struct on X86-32 to match PNaCl.
David Meyer [Tue, 14 Jun 2011 23:53:34 +0000 (16:53 -0700)]
Make va_list a struct on X86-32 to match PNaCl.

Original CL:
http://codereview.chromium.org/7129035/

BUG= http://code.google.com/p/nativeclient/issues/detail?id=1819
TEST=

Review URL: http://codereview.chromium.org/7169003

3 years agoRestore simple LIB_SPEC using just -lc
Roland McGrath [Thu, 9 Jun 2011 16:45:11 +0000 (09:45 -0700)]
Restore simple LIB_SPEC using just -lc

The compiler configuration is not the place to encode internal details of
the libc implementation.  When the libc implementation wants the default
link to include multiple constituent libraries, it can do that by providing
a linker script for libc.so or libc.a and let the compiler just use -lc
as it has always done.

This follows a change to the nacl newlib build to provide a libc.a linker
script.  Future changes to the libc implementation internals will not
require any gcc change.

This also removes the truly evil magical treatment of -lnosys as a special
command line option.  It's just a library like any other.

BUG=cleanup
TEST=local builds still link the same using newlib's new libc.a linker script

R=khim@google.com,pasko@google.com,eaeltsin@google.com

Review URL: http://codereview.chromium.org/6995084

3 years agoGet rid of bundle size controls in gcc
Evgeny Eltsin [Wed, 8 Jun 2011 16:59:12 +0000 (20:59 +0400)]
Get rid of bundle size controls in gcc

We do not need to be as flexible with the size of the bundles any more.

R=pasko@google.com
BUG=
TEST=

Review URL: http://codereview.chromium.org/6995077

3 years agoDon't wrap system headers with extern "C"
Evgeny Eltsin [Wed, 8 Jun 2011 15:39:47 +0000 (19:39 +0400)]
Don't wrap system headers with extern "C"

Implicit wrapping of system header files with  extern "C" is controlled by NO_IMPLICIT_EXTERN_C macro.

This macro is defined in gcc/config/linux.h (gcc/config/gnu-user.h in newer versions of gcc), which included on x86 linux systems (see gcc/config.gcc).

This change defines this macro for nacl.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1896
TEST=see the bug

R=pasko@google.com,krasin@google.com

Review URL: http://codereview.chromium.org/7134018

3 years agoRemove TODO about __native_client__ define.
Andrey Khalyavin [Thu, 19 May 2011 08:47:12 +0000 (12:47 +0400)]
Remove TODO about __native_client__ define.

We don't have neither build/build_config.h nor __gnu_linux__ any more.

R=pasko@google.com
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/7047001

3 years agoUpdate codereview.settings for gerrit hosting (gcc)
Roland McGrath [Wed, 4 May 2011 20:21:59 +0000 (13:21 -0700)]
Update codereview.settings for gerrit hosting (gcc)

Fiddle the magic codereview.settings file for the new git hosting locations.

BUG=infrastructure
TEST=git cl upload working for this change!

R=khim@google.com,mseaborn@chromium.org,pasko@google.com,eaeltsin@google.com

Review URL: http://codereview.chromium.org/6931012

3 years agoGet rid of prefixes in GD TLS for x86_64-nacl
Evgeny Eltsin [Tue, 19 Apr 2011 17:56:24 +0000 (21:56 +0400)]
Get rid of prefixes in GD TLS for x86_64-nacl

Standard GD TLS sequence contains commands prefixed with 0x6666, inserted by compiler with .byte directive. Our asm does not know how to move it around, and thus 0x6666 may cross bundle boundary and confuse the validator.

As we do not rewrite GD TLS access pattern at the moment, we can afford changing the standard sequence. Simply removing prefixes make still working code that does not suffer from the issues described above.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1685
TEST=disassemble object file from any source accessing __thread variable - it should not have 0x6666 any more

Review URL: http://codereview.chromium.org/6878043

3 years agoFix build regression in commit 18fae96
Roland McGrath [Thu, 7 Apr 2011 18:59:52 +0000 (11:59 -0700)]
Fix build regression in commit 18fae96

Commit 18fae96 broke the build with a GCC_NO_EXECUTABLES configure
complaint because it introduced a linking test, which is not allowed.

This redoes that change so it does not overload the native Linux version
and take in its linking test.  The test in question is to determine
whether default linking is behaving as under --enable-new-dtags.
The answer is no with our binutils.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1580
TEST='make build-with-newlib' now works

R=halyavin@google.com,khim@google.com

Review URL: http://codereview.chromium.org/6813007

3 years agoAdd -mtls-use-call option to avoid %gs:0 TLS accesses.
Roland McGrath [Tue, 5 Apr 2011 21:10:28 +0000 (14:10 -0700)]
Add -mtls-use-call option to avoid %gs:0 TLS accesses.

Adds an option to the 32-bit code generator to match the 64-bit
variant's behavior of generating calls to __nacl_read_tp rather
than fetches from %gs:0 to begin TLS access sequences.

We'll want this for the builds of newlib and libstdc++ that go into
the integrated runtime.  They have their own uses of TLS, which must
be kept separate from the user-side libc's TLS setup.  We'll reserve
%gs for the user side.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1595

Review URL: http://codereview.chromium.org/6691046

3 years agoCompile stdc++ library with both static and dynamic linking.
Andrey Khalyavin [Tue, 29 Mar 2011 07:28:09 +0000 (11:28 +0400)]
Compile stdc++ library with both static and dynamic linking.
BUG=http://code.google.com/p/nativeclient/issues/detail?id=1580
TEST=compile glibc and check that libstdc++.so is present.

Review URL: http://codereview.chromium.org/6761001

3 years agoTeach sandboxed GCC not to rely on inode numbers.
Egor Pasko [Mon, 21 Mar 2011 09:30:08 +0000 (12:30 +0300)]
Teach sandboxed GCC not to rely on inode numbers.

Inside the NaCl sandbox all inode numbers for files and directories are
identical (because the least common denominator, Windows, does not have them).

If GCC treats include directories (passed with -I) with identical inodes as
identical directories.  GCC then is free to skip looking into some directories
for header files as an optimization.  NaCl inodes are all identical, which makes
GCC to only look into a single directory.  Before we learn to emulate inode
numbers on Windows, the sandboxed GCC would just not use this optimization.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1362
TEST=none

Review URL: http://codereview.chromium.org/6685112

3 years ago[gcc] Make command line for static linking similar to what native gcc does
Evgeny Eltsin [Fri, 18 Mar 2011 17:43:53 +0000 (20:43 +0300)]
[gcc] Make command line for static linking similar to what native gcc does

The problem is that libgcc_eh depends on libc and libc depends on libgcc_eh.

For x86_64, everything works as is as all libc dependencies are inlined in libgcc_eh. For x86, there is memcpy call that is not inlined, and our current link specs do not work.

Anyway, counting on all libc stuff being inlined is bad. Native gcc does not do that, and uses --start-group/--end-group to resolve these dependencies.

This change makes our link specs similar to what native gcc has.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1298
TEST=no more additional -lc for static linking by x86 glibc toolchain

Review URL: http://codereview.chromium.org/6711037

3 years ago[noupstream] disable M4 in GMP
Egor Pasko [Mon, 28 Feb 2011 13:16:10 +0000 (16:16 +0300)]
[noupstream] disable M4 in GMP

... as we have been doing in tools/Makefile for ages.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/6594044

3 years ago[noupstream] allow git-cl to push from readonly sources
Egor Pasko [Mon, 28 Feb 2011 12:34:27 +0000 (15:34 +0300)]
[noupstream] allow git-cl to push from readonly sources

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/6597041

3 years ago[noupstream] Add codereview.settings for GCC repo
Egor Pasko [Mon, 28 Feb 2011 09:41:27 +0000 (12:41 +0300)]
[noupstream] Add codereview.settings for GCC repo

BUG=none
TEST=git clone http://git.chromium.org/git/nacl-gcc.git && cd nacl-gcc && ... && git-cl upload # in your branch

Review URL: http://codereview.chromium.org/6596033

3 years ago[noupstream] Add GMP and MPFR to our GCC repository.
Egor Pasko [Fri, 25 Feb 2011 16:48:25 +0000 (19:48 +0300)]
[noupstream] Add GMP and MPFR to our GCC repository.

This would allow us to remove the respective tarballs from SVN.

As before, we would use this build time optimization: if the correct versions of
packages are installed in the system, we would use those. This optimization is
most important on Windows/Cygwin where build time is significantly bigger than
on Linux/Mac.

To let the GCC build take the sources of GMP and MPFR one would need to create
symlinks:
ln -s gmp-4.3.1 gmp
ln -s mpfr-2.4.1 mpfr

Versions:
GMP: 4.3.1
MPFR: 2.4.1

The files were obtained by unpacking the tarballs in third_party/gcc at r4214.

Rietveld was unable to accept the upload of whole set of files, HTTP/500, you
know, so committing without review.

3 years ago[gcc] Replace rsp/rbp lea base with esp/ebp
Evgeny Eltsin [Wed, 19 Jan 2011 16:36:26 +0000 (19:36 +0300)]
[gcc] Replace rsp/rbp lea base with esp/ebp

This is yet another fix for POINTERS_EXTEND_UNSIGNED > 0 problem of keeping high part of rsp/rbp.

In addition, minor fix for previous change - do not assert if writing rsp/rbp into memory (probably spill)?

Test (-O1) must return 0 but returns high part of rsp without the fix:

struct StringRef {
 const char *Data;
 unsigned Length;
};

// Prevent inlining with 'weak' attribute
int print_size(struct StringRef Data) __attribute__((weak));

int print_size(struct StringRef Data) {
 return Data.Length;
}

int main() {
 char str[6]; // NEEDED!

 struct StringRef s;
 s.Data = str + 3; // NEEDED!
 s.Length = 0;

 return print_size(s);
}

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1304
TEST=see above

Review URL: http://codereview.chromium.org/6271009

3 years ago[gcc] Replace rsp/rbp mov source with esp/ebp
Evgeny Eltsin [Tue, 18 Jan 2011 18:40:19 +0000 (21:40 +0300)]
[gcc] Replace rsp/rbp mov source with esp/ebp

The problem is that with POINTERS_EXTEND_UNSIGNED > 0 gcc considers high part of rsp and rbp to be zero, which is not true. This seems to be backend design flaw.

Fixing this by changing POINTERS_EXTEND_UNSIGNED to -1 and defining ptr_extend solves the problem but is likely to hit the performance of pointer arithmetics that does not involve rsp and rbp.

This fix fights the particular and most common case when rsp or rbp are sources of the mov instruction, by forcing this instructions to operate on low parts of the registers only. This is not the complete solution, and more changes will follow.

Test (-O1) must return 0 but returns high part of rsp without the fix:

struct StringRef {
  const char *Data;
  unsigned Length;
};

// Prevent inlining with 'weak' attribute
int print_size(struct StringRef Data) __attribute__((weak));

int print_size(struct StringRef Data) {
  return Data.Length;
}

int main() {
  char str[6]; // NEEDED!

  struct StringRef s;
  s.Data = str; // NEEDED!
  s.Length = 0;

  return print_size(s);
}

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1304
TEST=see above

Review URL: http://codereview.chromium.org/6304009

3 years ago[gcc] Yet another gen_lowpart code confused by prt_mode != Pmode
Evgeny Eltsin [Fri, 24 Dec 2010 15:25:41 +0000 (18:25 +0300)]
[gcc] Yet another gen_lowpart code confused by prt_mode != Pmode

Test from David Meyer, 64-bit mode with -O1:

typedef unsigned int size_t;

extern "C" {
  size_t strlen (const char *);
};

class StringRef {
private:
  const char *Data;
  size_t Length;

public:
 StringRef(const char *Str)
    : Data(Str), Length(::strlen(Str)) {}
};

StringRef GetDLLSuffix() {
  return &(".so"[1]);
}

Reports internal error while trying to replace Pmode register with ptr_mode CONST.

The change fixes the origin of such a CONST in gen_lowpart_for_combine. This is kinda hacky and clearly not upstreamable...

BUG=http://code.google.com/p/nativeclient/issues/detail?id=1279
TEST=see above

Review URL: http://codereview.chromium.org/5968010

3 years ago[gcc] Add clobber FLAGS_REG to NaCl indirect jumps
Evgeny Eltsin [Wed, 20 Oct 2010 15:24:22 +0000 (19:24 +0400)]
[gcc] Add clobber FLAGS_REG to NaCl indirect jumps

Compiler must know that NaCl indirect jump clobbers FLAGS register.

For call and return this is probably not important, as FLAGS is always clobbered by call.

For computed goto and switch, this IS important, so added explicit clobber.

TEST=very hard to reproduce, we only suspect this bug was the reason for LLVM miscompilation.

BUG=

Review URL: http://codereview.chromium.org/3892003

3 years ago[gcc] x86_64 TLS support refactoring
Evgeny Eltsin [Fri, 24 Sep 2010 13:58:59 +0000 (17:58 +0400)]
[gcc] x86_64 TLS support refactoring

Enable all TLS access models.

Replace misleading non-standard __tls_get_addr with newly introduced __nacl_read_tp. Standard __tls_get_addr is now used for dynamic TLS access models, as intended.

BUG=
TEST=

Review URL: http://codereview.chromium.org/3453012

3 years ago[gcc] Fix more addsi patterns for nacl64 PIC
Evgeny Eltsin [Fri, 10 Sep 2010 16:10:42 +0000 (20:10 +0400)]
[gcc] Fix more addsi patterns for nacl64 PIC

The change is similar to the previous one - GLibC compilation revealed more cases to handle.
Prevent define_expands and define_insns from treating ILP32 PIC symbol_ref as an immediate.

BUG=
TEST=

Review URL: http://codereview.chromium.org/3342027

3 years ago[gcc] Fix addsi patterns for nacl64 PIC
Evgeny Eltsin [Fri, 10 Sep 2010 09:41:49 +0000 (13:41 +0400)]
[gcc] Fix addsi patterns for nacl64 PIC

This is similar to a bunch of previous fixes: prevent define_expands and define_insns from treating ILP32 PIC symbol_ref as an immediate.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=872

TEST=

Review URL: http://codereview.chromium.org/3291022

3 years ago[gcc] Fix SIGSEGV in computed goto compilation.
Evgeny Eltsin [Tue, 7 Sep 2010 14:37:46 +0000 (18:37 +0400)]
[gcc] Fix SIGSEGV in computed goto compilation.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=601
TEST=

Review URL: http://codereview.chromium.org/3345011

3 years ago[noupstream] Instrument for thread suspension.
Evgeny Eltsin [Mon, 6 Sep 2010 20:32:18 +0000 (00:32 +0400)]
[noupstream] Instrument for thread suspension.

When given command line flag -finstrument-for-thread-suspension, generate instrumentation calls for function entry and back edges.

Instrumentation call now looks like:
  __nacl_suspend_thread_if_needed ();

BUG=http://code.google.com/p/nativeclient/issues/detail?id=826
TEST=

Review URL: http://codereview.chromium.org/3320011

3 years ago[gcc] Fix lea splitters for ILP32 data model
Evgeny Eltsin [Wed, 25 Aug 2010 11:12:57 +0000 (15:12 +0400)]
[gcc] Fix lea splitters for ILP32 data model

This is similar to http://codereview.chromium.org/3187016 and several previous changes.

Fixed lea splitters to disallow PIC symbol references where immediate operand is needed. Now all specs cpu2000 compile with -fPIC.

Hope the process of making these fixes should converge soon - instructions affected are instructions used for 32-bit pointer arithmetics, namely variants of add, sub and lea.

Review URL: http://codereview.chromium.org/3165059

3 years ago[gcc] Correct configure check so that it matches i686-pc-nacl
Mark Seaborn [Tue, 24 Aug 2010 20:03:46 +0000 (21:03 +0100)]
[gcc] Correct configure check so that it matches i686-pc-nacl

My earlier change was accidentally too strict, and did not match the
target configuration when it had been expanded from the argument in
"--target=nacl" to "i686-pc-nacl".

BUG=http://code.google.com/p/nativeclient/issues/detail?id=660
TEST=build full-gcc against nacl-glibc

Review URL: http://codereview.chromium.org/3190016

3 years ago[gcc] Add nacl to libstdc++'s list of glibc-based architectures
Mark Seaborn [Tue, 24 Aug 2010 15:39:34 +0000 (16:39 +0100)]
[gcc] Add nacl to libstdc++'s list of glibc-based architectures

Note that this does not affect newlib-based libstdc++ builds, for
which crossconfig.m4 is not consulted (see configure.ac).

Update "configure" by running autoconf 2.59.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=660
TEST=build full-gcc against nacl-glibc

Review URL: http://codereview.chromium.org/3181032

3 years ago[gcc] Remove old "nc" cases from libstdc++'s configure script
Mark Seaborn [Tue, 24 Aug 2010 14:39:50 +0000 (15:39 +0100)]
[gcc] Remove old "nc" cases from libstdc++'s configure script

These cases are not used, and were apparently added by changing the
generated file rather than editing the source, configure.ac.
Re-running autoconf 2.59 undoes them.

BUG=http://code.google.com/p/nativeclient/issues/detail?id=660

Review URL: http://codereview.chromium.org/3186025

3 years ago[gcc] Fix optimized expand of ptr diff for 64-bit PIC
Evgeny Eltsin [Mon, 23 Aug 2010 12:38:16 +0000 (16:38 +0400)]
[gcc] Fix optimized expand of ptr diff for 64-bit PIC

SImode subtraction instructions use "m" contstraint for one operand and "i" constraint for another. This does not work in 64-bit PIC in nacl, as "i" allows symbol references which get rip-relative addressing.

This replaces "i" constraint with "e" contraint, where the latter does not allow symbol references except those that simply fit in 32-bits immediate.

Review URL: http://codereview.chromium.org/3187016

3 years agoDefines __gnu_linux__ and __linux__ are removed from the nacl-compiler.
Andrey Khalyavin [Thu, 19 Aug 2010 10:27:17 +0000 (14:27 +0400)]
Defines __gnu_linux__ and __linux__ are removed from the nacl-compiler.

Review URL: http://codereview.chromium.org/3149014

3 years agoBackport CL148346 from upstream: --no-canonical-prefixes
Victor Khimenko [Fri, 13 Aug 2010 17:01:46 +0000 (21:01 +0400)]
Backport CL148346 from upstream: --no-canonical-prefixes

Review URL: http://codereview.chromium.org/3156009

3 years ago[gcc] Prevent movsi from having 2 memory operands in x86_64 PIC.
Evgeny Eltsin [Wed, 4 Aug 2010 17:08:24 +0000 (21:08 +0400)]
[gcc] Prevent movsi from having 2 memory operands in x86_64 PIC.

The cause is that rip-based symbol references are treated as constants with "i" constraint, "e" seems to do the right job.

Review URL: http://codereview.chromium.org/3013058

3 years ago[gcc] Fix nacl64_as warnings: destination and source are swapped in cmpsX...
Victor Khimenko [Fri, 30 Jul 2010 22:10:01 +0000 (02:10 +0400)]
[gcc] Fix nacl64_as warnings: destination and source are swapped in cmpsX...

Review URL: http://codereview.chromium.org/3050027

3 years ago[gcc] Fix movsw sandboxing
Victor Khimenko [Fri, 30 Jul 2010 21:56:53 +0000 (01:56 +0400)]
[gcc] Fix movsw sandboxing

Review URL: http://codereview.chromium.org/2832102

3 years ago[binutils] Use "scasb %nacl:(%rdi),%al,%r15" pseudocommand, not series of commands
Victor Khimenko [Fri, 30 Jul 2010 17:13:57 +0000 (21:13 +0400)]
[binutils] Use "scasb %nacl:(%rdi),%al,%r15" pseudocommand, not series of commands

Review URL: http://codereview.chromium.org/2870084

3 years ago[gcc] align structures as in x86-64
Victor Khimenko [Fri, 30 Jul 2010 14:40:20 +0000 (18:40 +0400)]
[gcc] align structures as in x86-64

Review URL: http://codereview.chromium.org/3041030

3 years ago[gcc] Remove few changes from machine-independent part.
Evgeny Eltsin [Thu, 29 Jul 2010 08:53:41 +0000 (12:53 +0400)]
[gcc] Remove few changes from machine-independent part.

This change restores explow.c and reload.c back to their original state.

This change can affect the performance, as it may limit the number of cases when lea instruction is generated.
However, the change is the "right thing" to do. Lea problems, if any, should be solved in i386-specific code.

Review URL: http://codereview.chromium.org/2825071

3 years ago[gcc] string operations: read sandboxing
Victor Khimenko [Tue, 27 Jul 2010 20:11:51 +0000 (22:11 +0200)]
[gcc] string operations: read sandboxing

Review URL: http://codereview.chromium.org/3037021

3 years ago[gcc] Fix access to extern symbols in 64-bit pic.
Evgeny Eltsin [Wed, 21 Jul 2010 18:30:14 +0000 (22:30 +0400)]
[gcc] Fix access to extern symbols in 64-bit pic.

Test that should compile:
  extern int var[2];
  int* foo() {
    return &var[2];
  }

The fix is to have the legitimized pic address in Pmode.

Review URL: http://codereview.chromium.org/3059003

3 years ago[gcc] Fix access to local symbols in 64-bit pic.
Evgeny Eltsin [Tue, 20 Jul 2010 17:24:42 +0000 (21:24 +0400)]
[gcc] Fix access to local symbols in 64-bit pic.

This fix changes movsi template for lea to print the first operand as %a1 instead of %1. Gcc trunk has this fix in, so this change looks like a fix for gcc bug, unrelated to nacl;

This fix also changes movsi template attr of TYPE_LEA to match operand as SImode instead of DImode. Gcc trunk still has DImode, but this seems to be a bug...

Review URL: http://codereview.chromium.org/2858059

3 years ago[gcc] Revise definition for long double type.
Evgeny Eltsin [Wed, 14 Jul 2010 15:16:56 +0000 (19:16 +0400)]
[gcc] Revise definition for long double type.

Review URL: http://codereview.chromium.org/2928008

3 years ago[gcc] Make GCC complain if setjmp/longjmp builtins are encountered.
Egor Pasko [Tue, 13 Jul 2010 15:11:03 +0000 (17:11 +0200)]
[gcc] Make GCC complain if setjmp/longjmp builtins are encountered.

Redefine the builtins in c-torture/.../builtins.exp to make a lot of c-torture
tests pass. This is a dirty way to fix the tests, we will need to enable the
builtins to work with glibc once the latter ready. The purpose of this
manipulation is to reduce the amount of failing tests in the GCC testsuite and
thus make it easier to focus on more interesting failures.

Review URL: http://codereview.chromium.org/2824045

3 years ago[gcc] Fix formatting issues.
Evgeny Eltsin [Tue, 13 Jul 2010 13:11:46 +0000 (17:11 +0400)]
[gcc] Fix formatting issues.

Review URL: http://codereview.chromium.org/2891017

3 years ago[gcc] Misc cleanup.
Evgeny Eltsin [Mon, 5 Jul 2010 16:33:11 +0000 (20:33 +0400)]
[gcc] Misc cleanup.

- Use TARGET_NACL instead of flag_control_integrity;
- Kill getenv calls used for debugging nacl-specific code;
- Remove few debug printings;

Review URL: http://codereview.chromium.org/2880018

3 years ago[gcc] Allow GCC insert .cfi_startproc and .cfi_endproc.
Egor Pasko [Thu, 1 Jul 2010 14:15:12 +0000 (16:15 +0200)]
[gcc] Allow GCC insert .cfi_startproc and .cfi_endproc.

NaCl GAS supports these assembler directives. Though on Mac buildbots this
capability is not recognized due to the lack of readelf installed. Supporting
these directives is essential to have correct backtraces listed with valgrind.

BUG: http://code.google.com/p/nativeclient/issues/detail?id=663

Review URL: http://codereview.chromium.org/2805058

3 years ago[gcc] Make nacl calls CALLs.
Evgeny Eltsin [Wed, 30 Jun 2010 11:20:52 +0000 (15:20 +0400)]
[gcc] Make nacl calls CALLs.

Change nacl calls from UNSPEC (fnaddr) to CALL (MEM (UNSPEC (fnaddr))).

In places where gcc processes CALLs, we copy-pasted the code for nacl calls implemented via UNSPEC_NACLCALL. Now we remove these changes.

Review URL: http://codereview.chromium.org/2852035

3 years ago[gcc] Cleanup nacl_special_commands.
Evgeny Eltsin [Fri, 25 Jun 2010 11:55:28 +0000 (15:55 +0400)]
[gcc] Cleanup nacl_special_commands.

This seems like an artifact of an old refactoring.

Review URL: http://codereview.chromium.org/2824029

3 years ago[gcc] Kill NACL_LEA_MATCH_ADDRESS_OPERAND and insn_is_nacl_lea.
Evgeny Eltsin [Fri, 25 Jun 2010 11:52:30 +0000 (15:52 +0400)]
[gcc] Kill NACL_LEA_MATCH_ADDRESS_OPERAND and insn_is_nacl_lea.

This is a cleanup change - removing stuff made no-op by new contsraint for LEA memory operand.

Review URL: http://codereview.chromium.org/2866019

3 years ago[gcc] Use new constraint for LEA address operands.
Evgeny Eltsin [Thu, 24 Jun 2010 16:42:34 +0000 (20:42 +0400)]
[gcc] Use new constraint for LEA address operands.

The problem of processing LEA address operands is that it requires original, non-nacl address decomposition. Before this change, an original "p" constraint was used, and a global variable NACL_LEA_MATCH_ADDRESS_OPERAND signaled LEA decomposition mode to x86_decompose_address. That solution required appropriate setting of NACL_LEA_MATCH_ADDRESS_OPERAND before every call to constrain_operands.

Here I introduce new "T" constraint, and use custom decomposition function to process it. NACL_LEA_ADDRESS_OPERAND is still here, but it is not checked any more. Next change will cleanup it completely.

In fact, new address decomposition function is an original, non-nacl x86_decompose_address. For now, I just copy-paste it. Perhaps it is better to split x86_decompose_address into pieces and reuse them, but this better goes in a separate change.

Review URL: http://codereview.chromium.org/2873014

3 years ago[gcc] Eliminate control integrity pass in favor of nacl instructions generation from...
Evgeny Eltsin [Tue, 22 Jun 2010 11:30:31 +0000 (15:30 +0400)]
[gcc] Eliminate control integrity pass in favor of nacl instructions generation from the start.

This is a refactoring/cleanup CL. The advatage of this new control integrity implementation is that it touches less files and is fully contained in i386 backend. This seems to be easier to push in upstream.

Specs pass, and performance seems unaffected. I have a concern about generating unspecs at rtl expand phase, as it can possibly kill several optimizations. From the other side, it seems unlikely as optimizations that touch indirect calls and jumps are hopefully done before rtl. In any case, I have an idea how to improve this if we discover that some optimization suffers from the change.

Review URL: http://codereview.chromium.org/2850019

3 years ago[gcc] Introduce TARGET_NACL;
Evgeny Eltsin [Mon, 21 Jun 2010 15:20:52 +0000 (19:20 +0400)]
[gcc] Introduce TARGET_NACL;

Review URL: http://codereview.chromium.org/2846020

3 years ago[gcc] disable movsbw for x86-64.
Victor Khimenko [Wed, 16 Jun 2010 15:25:33 +0000 (19:25 +0400)]
[gcc] disable movsbw for x86-64.

3 years ago[gcc] Fix test-unwind.h harness
Egor Pasko [Tue, 18 May 2010 13:51:56 +0000 (15:51 +0200)]
[gcc] Fix test-unwind.h harness

x86_64 does not work without %rip and
%rdi/%rsi are not callee-saved per ABI.

3 years ago[gcc] Make copy-propagated pointers be addressed in Pmode.
Egor Pasko [Tue, 18 May 2010 13:49:36 +0000 (15:49 +0200)]
[gcc] Make copy-propagated pointers be addressed in Pmode.

BUG: http://code.google.com/p/nativeclient/issues/detail?id=453

3 years ago[gcc] Disable "bt" instruction even if optimization for size is used.
Egor Pasko [Tue, 18 May 2010 13:48:24 +0000 (15:48 +0200)]
[gcc] Disable "bt" instruction even if optimization for size is used.

3 years ago[gcc] write tableswitch relocation data to the .rodata section
Egor Pasko [Tue, 18 May 2010 13:46:03 +0000 (15:46 +0200)]
[gcc] write tableswitch relocation data to the .rodata section

by default gcc-4.4.x would put it to .text section, which does not pass the
NaCl validator.

3 years ago[gcc] Don't output "add %gs:0x0,%eax" as part of a TLS access
Egor Pasko [Tue, 18 May 2010 13:43:14 +0000 (15:43 +0200)]
[gcc] Don't output "add %gs:0x0,%eax" as part of a TLS access

This instruction is currently not accepted by the validator,
although the validator is being overly cautious here.

BUG: http://code.google.com/p/nativeclient/issues/detail?id=263

3 years ago[gcc] multilib mode: build both x86-32 and x86-64 libraries
Egor Pasko [Tue, 18 May 2010 13:35:37 +0000 (15:35 +0200)]
[gcc] multilib mode: build both x86-32 and x86-64 libraries

in the patch:
* combined linux.h and i386/linux64.h into i386/nacl.h
* removed LINUX target specifics when it was easy
* target multilib definitions: i386/t-nacl64
* config.gcc cleanup

side changes:
* define __linux__ and Co in GCC to let Chrome headers build smoothly
* disable llrint() on x86-64 in newlib to allow some examples compile on nacl64

3 years ago[gcc] Disable long double for IA32. Disable i387 for x86-64.
Egor Pasko [Tue, 18 May 2010 13:31:40 +0000 (15:31 +0200)]
[gcc] Disable long double for IA32. Disable i387 for x86-64.

Rationale: PNaCl can not offer 'long double' since this mode is only supported
by x86 architecture. To make further transition easier we'l disable long double
in default NaCl compiler. Unfortunatelly we can not disable i387 mode for IA32
because SSE is not enough to implement double precision floating point
operations and SSE2 is not implemented in Pentium !!! and Athlon XP (still
widely used in some regions). i387 mode can only ever use 80bit floats
internally - so while we are removing 80bit 'long double' type we are keeping
80bit internal XFmode around.

Also we are disabling SSE math for IA32 - this is not a good default mode for
general code: because SSE only supports single-precision float operations,
double-precision doubles can only be operated with i387 code and switch between
i387 and SSE subsystems is slow on a lot of CPUs. The SSE-base code still can be
used for carefully written codecs and benchmarks, but it's not a default
anymore, it must be enabled explicitly.

3 years ago[gcc] initial gcc bulk
Egor Pasko [Tue, 18 May 2010 13:30:14 +0000 (15:30 +0200)]
[gcc] initial gcc bulk

3 years ago[gcc] Added objc frontend and runtime
Evgeny Eltsin [Mon, 22 Nov 2010 17:09:46 +0000 (20:09 +0300)]
[gcc] Added objc frontend and runtime

4 years agoInitial commit of toolchain sources
Egor Pasko [Tue, 18 May 2010 12:26:51 +0000 (14:26 +0200)]
Initial commit of toolchain sources

  binutils-2.20
  gcc-4.4.3
  gdb-6.8
  newlib-1.18.0