Bug 14915

Summary: --copy-dt-needed-entries not working when creating DSO
Product: binutils Reporter: Richard Biener <rguenth>
Component: ldAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED FIXED    
Severity: normal CC: hjl.tools, matz
Priority: P2    
Version: 2.23   
Target Milestone: ---   
URL: http://sourceware.org/ml/binutils/2012-12/msg00058.html
Host: Target:
Build: Last reconfirmed:

Description Richard Biener 2012-12-04 13:24:27 UTC
> gcc -o libt1.so -shared -lm
> gcc -o libt2.so -shared -Wl,--copy-dt-needed-entries -L. -lt1

libt1.so is as expected:

> readelf -d libt1.so

Dynamic section at offset 0xe48 contains 22 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x480
...

but libt2.so does not have a NEEDED entry for libm.so.6:

> readelf -d libt2.so 

Dynamic section at offset 0xe48 contains 22 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libt1.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x480
...

(trying to come up with a testcase where --[no-]copy-dt-needed-entries matters)

Same behavior with ld 2.18 (and --[no-]add-needed) btw.  Same behavior
if libt2.so is not a shared object.
Comment 1 Michael Matz 2012-12-04 14:06:26 UTC
Behaviour also doesn't change if we include objects that refer to stuff from libm or libt1 into libt2.  I tried to debug ld a bit to see where this is supposed to be handled but got lost after two hours.  It seems that some
handling of dt_needed entries in elf32.xm:gld*_after_open is only done
for executables, but even creating an executable doesn't help.

In any case, I couldn't find any code that really tries to add DT_NEEDED
entries from referred libraries to the output file.  The code in elflink.c:elf_link_add_object_symbols at least only adds to the htab->needed
list on those entries (and 'libm.so.6' is included there), but doesn't actually call elf_add_dt_needed_tag on those entries (and nobody else does
either).

It certainly doesn't work as documented or expected (with my expectations).
Comment 2 H.J. Lu 2012-12-04 14:07:56 UTC
Please show the output of

gcc -o libt2.so -shared -Wl,--copy-dt-needed-entries -L. -lt1 -v

We need to see all command-line options passed to
linker.
Comment 3 Michael Matz 2012-12-04 14:12:29 UTC
(In reply to comment #2)
> 
> gcc -o libt2.so -shared -Wl,--copy-dt-needed-entries -L. -lt1 -v

/usr/lib64/gcc/x86_64-suse-linux/4.5/collect2 --build-id --eh-frame-hdr -m elf_x86_64 -shared -o libt2.so /usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/4.5/crtbeginS.o -L. -L/usr/lib64/gcc/x86_64-suse-linux/4.5 -L/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.5/../../.. --copy-dt-needed-entries -lt1 -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib64/gcc/x86_64-suse-linux/4.5/crtendS.o /usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/crtn.o

So, the --copy-dt-needed-entries argument is at the right place, right before
-lt1.  During my debugging I of course used this cmdline (well, substed
collect2 with the right ld).  Changing various options like removing libs
or the --as-needed doesn't make a difference for the behaviour we expect.
Comment 4 H.J. Lu 2012-12-04 14:30:28 UTC
This option is renamed from --add-needed:

http://sourceware.org/ml/binutils/2004-07/msg00093.html
Comment 5 Michael Matz 2012-12-04 14:39:58 UTC
(In reply to comment #4)
> This option is renamed from --add-needed:
> 
> http://sourceware.org/ml/binutils/2004-07/msg00093.html

Yes, but why are you mentioning that?
Comment 6 Richard Biener 2012-12-04 14:41:12 UTC
(In reply to comment #5)
> (In reply to comment #4)
> > This option is renamed from --add-needed:
> > 
> > http://sourceware.org/ml/binutils/2004-07/msg00093.html
> 
> Yes, but why are you mentioning that?

Btw, I explicitely stated that even before the rename, with ld 2.18,
it did not work as expected (using --[no-]add-needed).
Comment 7 Michael Matz 2012-12-04 14:44:50 UTC
(In reply to comment #5)
> (In reply to comment #4)
> > This option is renamed from --add-needed:
> > 
> > http://sourceware.org/ml/binutils/2004-07/msg00093.html
> 
> Yes, but why are you mentioning that?

In particular, from that thread is referred the GCC problem that you wanted
to fix with adding --no-add-needed: http://gcc.gnu.org/ml/gcc/2004-04/msg01130.html

The problem specifically was that libunwind was added to DT_NEEDED because
it was itself DT_NEEDED by libgcc_s, and it was said that this was how the linker is supposed to work.  Now, meanwhile the default got switched, i.e.
--no-copy-dt-needed-entries is the default, but we're supposed to be able
to switch back with --copy-dt-needed-entries.  And this bug report is about
the fact, that this doesn't work.
Comment 8 Michael Matz 2012-12-04 14:56:09 UTC
Let's create a different testcase showing also similar symptoms of not correctly adding DT_NEEDED entries as documented, this time to search scopes:

% cat bla.c
extern double sin (double);
double f (double i) { return sin (i); }
% gcc -c -fPIC bla.c
% ./ld/ld-new -shared -o libt1.so bla.o -lm -zdefs
% readelf -d libt1.so | grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]

Everything fine so far.  Now we want to generate libt2 also referring
to a libm function, want to link it only with libt1 and expect that
there's some way to include libm into the search scopes with some option to ld.  The documented option is --copy-dt-needed-entries, so:

% cat bla2.c
extern double f (double);
extern double sin (double);
double g (double i) { return f(i) + sin (i); }
% gcc -c -fPIC bla2.c

So, bla2 refers to functions of libt1 and to libm, but still:

% ./ld/ld-new -shared -o libt2.so bla.o --copy-dt-needed-entries -L. -lt1 -z defs
bla2.o: In function `g':
bla2.c:(.text+0x22): undefined reference to `sin'
Comment 9 H.J. Lu 2012-12-04 18:21:46 UTC
--copy-dt-needed-entries doesn't work when -shared is used.
Comment 10 H.J. Lu 2012-12-04 18:28:14 UTC
[hjl@gnu-6 pr14915]$ cat bla.c
extern void bar (void);
void f (void)
{ 
  bar ();
}
[hjl@gnu-6 pr14915]$ cat bla2.c
extern void f (void);
extern void bar (void);
int
main (void)
{
  f ();
  bar ();
  return 0;
}
[hjl@gnu-6 pr14915]$ cat bar.c
void
bar (void)
{
}
[hjl@gnu-6 pr14915]$ make
gcc -B./ -fPIC   -c -o bla2.o bla2.c
gcc -B./ -fPIC   -c -o bla.o bla.c
gcc -B./ -fPIC   -c -o bar.o bar.c
gcc -B./ -shared -o libbar.so bar.o -Wl,-z,defs
gcc -B./ -shared -o libt1.so bla.o libbar.so -Wl,-z,defs
gcc -B./ -o x bla2.o -Wl,--add-needed -L. -lt1 -Wl,-rpath-link=. -Wl,-z,defs
gcc -B./ -shared -o libt2.so bla2.o -Wl,--add-needed -Wl,-rpath-link=. -L. -lt1 -Wl,-z,defs
bla2.o: In function `main':
bla2.c:(.text+0xa): undefined reference to `bar'
collect2: error: ld returned 1 exit status
make: *** [libt2.so] Error 1
[hjl@gnu-6 pr14915]$
Comment 11 H.J. Lu 2012-12-04 18:54:53 UTC
This:

diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index 6c84b82..875ac2c 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -1181,8 +1181,6 @@ gld${EMULATION_NAME}_after_open (void)
      special action by the person doing the link.  Note that the
      needed list can actually grow while we are stepping through this
      loop.  */
-  if (!link_info.executable)
-    return;
   needed = bfd_elf_get_needed_list (link_info.output_bfd, &link_info);
   for (l = needed; l != NULL; l = l->next)
     {

works for me.
Comment 12 H.J. Lu 2012-12-04 19:13:15 UTC
A patch is posted at

http://sourceware.org/ml/binutils/2012-12/msg00058.html
Comment 13 Sourceware Commits 2012-12-06 00:25:27 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	hjl@sourceware.org	2012-12-06 00:25:19

Modified files:
	ld             : ChangeLog 
	ld/emultempl   : elf32.em 
	ld/testsuite   : ChangeLog 
	ld/testsuite/ld-elf: shared.exp 

Log message:
	Extend --copy-dt-needed-entries to creating DSO
	
	ld/
	
	PR ld/14915
	* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Also
	check DT_NEEDED entries when creating shared object with
	--copy-dt-needed-entries.
	
	ld/testsuite/
	
	PR ld/14915
	* ld-elf/shared.exp (build_tests): Test --add-needed,
	--copy-dt-needed-entries, --no-add-needed and
	--no-copy-dt-needed-entries with -shared.
	Add tests for --no-add-needed and --no-copy-dt-needed-entries
	with -shared.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&r1=1.2519&r2=1.2520
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/elf32.em.diff?cvsroot=src&r1=1.233&r2=1.234
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ChangeLog.diff?cvsroot=src&r1=1.1631&r2=1.1632
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-elf/shared.exp.diff?cvsroot=src&r1=1.24&r2=1.25
Comment 14 H.J. Lu 2012-12-06 15:09:50 UTC
Fixed for 2.24.
Comment 15 Sourceware Commits 2013-01-21 13:49:19 UTC
CVSROOT:	/cvs/src
Module name:	src
Branch: 	binutils-2_23-branch
Changes by:	amodra@sourceware.org	2013-01-21 13:48:53

Modified files:
	bfd            : ChangeLog bfdio.c cache.c elf-bfd.h 
	                 elf-strtab.c elf.c elf32-i386.c elf32-ppc.c 
	                 elf64-ppc.c elflink.c linker.c opncls.c 
	binutils       : ChangeLog readelf.c 
	gas            : ChangeLog dwarf2dbg.c sb.c write.c 
	gas/config     : tc-ppc.c tc-ppc.h 
	gas/testsuite  : ChangeLog 
	gas/testsuite/gas/cfi: cfi-ppc-1.d cfi-ppc-1.s cfi.exp 
	gas/testsuite/gas/ppc: 476.d 476.s a2.d a2.s altivec.d altivec.s 
	                       altivec_and_spe.d astest.d astest2.d 
	                       astest2_64.d astest64.d booke.d booke.s 
	                       cell.d cell.s common.d common.s e500.d 
	                       e500.s e500mc.d e500mc.s e500mc64_nop.d 
	                       e500mc64_nop.s e5500_nop.d e5500_nop.s 
	                       e6500.d e6500.s e6500_nop.d e6500_nop.s 
	                       machine.d power4.d power4.s power4_32.d 
	                       power4_32.s power6.d power6.s power7.d 
	                       power7.s ppc.exp ppc750ps.d ppc750ps.s 
	                       regnames.d simpshft.d test1elf32.d 
	                       test1elf64.d titan.d titan.s vle-reloc.s 
	                       vle-simple-1.s vle-simple-2.s 
	                       vle-simple-3.s vle-simple-4.s 
	                       vle-simple-5.s vle-simple-6.s vle.s vsx.d 
	                       vsx.s 
	include/opcode : ChangeLog ppc.h 
	ld             : ChangeLog ldexp.c ldexp.h ldlang.c ldmain.c 
	                 lexsup.c plugin.c plugin.h 
	ld/emultempl   : elf32.em 
	ld/testsuite   : ChangeLog 
	ld/testsuite/ld-gc: pr13683.d 
	ld/testsuite/ld-plugin: plugin-2.d plugin-4.d 
	ld/testsuite/ld-powerpc: apuinfo-nul.rd apuinfo.rd plt1.d 
	                         powerpc.exp relax.d relaxr.d sdadyn.d 
	                         tls.d tls.g tls.t tls32.d tls32.g 
	                         tls32.t tlsexe.d tlsexe.g tlsexe.r 
	                         tlsexe.t tlsexe32.d tlsexe32.g 
	                         tlsexe32.r tlsexe32.t tlsexetoc.d 
	                         tlsexetoc.g tlsexetoc.r tlsexetoc.t 
	                         tlsmark.d tlsmark32.d tlsopt1.d 
	                         tlsopt1_32.d tlsopt2.d tlsopt2_32.d 
	                         tlsopt3.d tlsopt3_32.d tlsopt4.d 
	                         tlsopt4_32.d tlsso.d tlsso.g tlsso.r 
	                         tlsso.t tlsso32.d tlsso32.g tlsso32.r 
	                         tlsso32.t tlstoc.d tlstoc.g tlstoc.t 
	                         tlstocso.d tlstocso.g tlstocso.t 
	                         tocopt.out 
	opcodes        : ChangeLog ppc-dis.c ppc-opc.c 
Added files:
	gas/testsuite/gas/ppc: altivec2.d altivec2.s 

Log message:
	PR 12549
	PR 14493
	PR 14567
	PR 14662
	PR 14758
	PR 14813
	PR 14904
	PR 14915
	PR 14926
	PR 14950
	PR 14962
	Apply mainline patches

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.5758.2.37&r2=1.5758.2.38
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/bfdio.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.33&r2=1.33.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/cache.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.41&r2=1.41.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf-bfd.h.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.343.2.2&r2=1.343.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf-strtab.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.16&r2=1.16.20.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.568&r2=1.568.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-i386.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.279.4.3&r2=1.279.4.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.318.4.1&r2=1.318.4.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf64-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.390.4.3&r2=1.390.4.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elflink.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.450.4.2&r2=1.450.4.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/linker.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.95&r2=1.95.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/opncls.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.69&r2=1.69.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1925.2.8&r2=1.1925.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/readelf.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.578.2.3&r2=1.578.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4769.2.23&r2=1.4769.2.24
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/dwarf2dbg.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.116&r2=1.116.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/sb.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.20&r2=1.20.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/write.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.151&r2=1.151.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.184&r2=1.184.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-ppc.h.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.45&r2=1.45.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2057.2.19&r2=1.2057.2.20
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/cfi/cfi-ppc-1.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.16.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/cfi/cfi-ppc-1.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/cfi/cfi.exp.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.27&r2=1.27.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/altivec2.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=NONE&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/altivec2.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=NONE&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/476.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4&r2=1.4.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/476.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/a2.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/a2.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/altivec.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.24.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/altivec.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.40.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/altivec_and_spe.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.12.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/astest.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4&r2=1.4.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/astest2.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/astest2_64.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4&r2=1.4.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/astest64.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4&r2=1.4.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/booke.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.14&r2=1.14.12.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/booke.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.7&r2=1.7.12.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/cell.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.18.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/cell.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.18.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/common.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2.12.1&r2=1.2.12.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/common.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1.18.1&r2=1.1.18.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e500.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.8&r2=1.8.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e500.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e500mc.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e500mc.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.12.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e500mc64_nop.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e500mc64_nop.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e5500_nop.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e5500_nop.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e6500.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1.2.1&r2=1.1.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e6500.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e6500_nop.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/e6500_nop.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/machine.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power4.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.7.8.1&r2=1.7.8.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power4.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2.30.1&r2=1.2.30.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power4_32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.14.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power4_32.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.14.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power6.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power6.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power7.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4.8.1&r2=1.4.8.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/power7.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4.8.1&r2=1.4.8.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/ppc.exp.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.29&r2=1.29.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/ppc750ps.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.18.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/ppc750ps.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.18.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/regnames.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.18.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/simpshft.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1.1.1&r2=1.1.1.1.46.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/test1elf32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.5&r2=1.5.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/test1elf64.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/titan.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/titan.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-reloc.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-simple-1.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-simple-2.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-simple-3.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-simple-4.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-simple-5.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle-simple-6.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vle.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vsx.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/ppc/vsx.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/opcode/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.466.4.4&r2=1.466.4.5
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/opcode/ppc.h.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.44&r2=1.44.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2470.2.14&r2=1.2470.2.15
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldexp.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.101.2.1&r2=1.101.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldexp.h.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.31.2.1&r2=1.31.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlang.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.397.2.3&r2=1.397.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldmain.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.165&r2=1.165.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/lexsup.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.133.2.1&r2=1.133.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.45&r2=1.45.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.h.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/elf32.em.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.229.2.1&r2=1.229.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1579.2.15&r2=1.1579.2.16
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-gc/pr13683.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-plugin/plugin-2.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-plugin/plugin-4.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/apuinfo-nul.rd.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/apuinfo.rd.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.5&r2=1.5.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/plt1.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.20.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/powerpc.exp.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.40&r2=1.40.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/relax.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/relaxr.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/sdadyn.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.24.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tls.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.30.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tls.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tls.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tls32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.30.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tls32.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tls32.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe.r.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.31&r2=1.31.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe32.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.6&r2=1.6.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe32.r.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.20&r2=1.20.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexe32.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.24.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexetoc.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.11&r2=1.11.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexetoc.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexetoc.r.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.32&r2=1.32.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsexetoc.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsmark.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsmark32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt1.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt1_32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt2.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt2_32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt3.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt3_32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt4.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsopt4_32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.9&r2=1.9.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso.r.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.33&r2=1.33.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso32.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.16&r2=1.16.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso32.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.10&r2=1.10.20.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso32.r.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.25&r2=1.25.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlsso32.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4&r2=1.4.24.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlstoc.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4&r2=1.4.30.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlstoc.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlstoc.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlstocso.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.9&r2=1.9.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlstocso.g.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.9&r2=1.9.18.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tlstocso.t.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2&r2=1.2.36.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-powerpc/tocopt.out.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1&r2=1.1.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/opcodes/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.1831.2.20&r2=1.1831.2.21
http://sourceware.org/cgi-bin/cvsweb.cgi/src/opcodes/ppc-dis.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.59&r2=1.59.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/opcodes/ppc-opc.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.147.2.2&r2=1.147.2.3