Bug 12613 - Undetected buffer overflow occurs in ld when supplied with malformed file as a linker script
Summary: Undetected buffer overflow occurs in ld when supplied with malformed file as ...
Status: RESOLVED FIXED
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: 2.21
: P2 normal
Target Milestone: ---
Assignee: Alan Modra
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-28 20:38 UTC by Niranjan Hasabnis
Modified: 2014-05-28 19:43 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
The input file that crashes ld (140.63 KB, application/octet-stream)
2011-03-28 20:38 UTC, Niranjan Hasabnis
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Niranjan Hasabnis 2011-03-28 20:38:52 UTC
Created attachment 5336 [details]
The input file that crashes ld

Overview
========
ld, when supplied with malformed file as a linker script, generates a buffer overflow. Overflow goes undetected, but it corrupts the stack memory and hence can lead to a crash in future. Buffer overflow can be confirmed if D_FORTIFY_SOURCE=2 gcc option is used.

The crash occurs in function lex_warn_invalid in file ldlex.l at line 
sprintf (buf, "\\%03o", (unsigned int) *what);

when *what in hex is greater than 0x7F, the corresponding unsigned integer value is very large, and hence the octal representation does not fit within 3 bytes of buf, causing the overflow of buf.

E.g. when *what = 0x80; the corresponding unsigned int value is 4294967168, with corresponding octal value being 37777777600.

Build versions
==============
Binutils version 2.21, 2.20-1 and (may be) prior to 2.20-1. (I have verified the bug on 2.21, 2.20-1). 
I can see in cvsweb for ld that, the latest version (revision 1.51) of ldlex.l still has this error.

Steps to Reproduce
===================
To verify the crash
-------------------
1. Compile ld source code with gcc's -D_FORTIFY_SOURCE=2 option.
2. run following command
   ld -T input_file a.out (NOTE: input_file is attached to the report)
3. You should get following output:

./ld:/tmp/input_file:1: ignoring invalid character `\177' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\002' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\003' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
*** buffer overflow detected ***: ./ld terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0xbf9390]
/lib/tls/i686/cmov/libc.so.6(+0xe12ca)[0xbf82ca]
/lib/tls/i686/cmov/libc.so.6(+0xe0a08)[0xbf7a08]
/lib/tls/i686/cmov/libc.so.6(_IO_default_xsputn+0x9e)[0xb80afe]
/lib/tls/i686/cmov/libc.so.6(_IO_vfprintf+0xe24)[0xb54a34]
/lib/tls/i686/cmov/libc.so.6(__vsprintf_chk+0xad)[0xbf7abd]
/lib/tls/i686/cmov/libc.so.6(__sprintf_chk+0x2d)[0xbf79fd]
./ld[0x804d601]
./ld[0x804e3b2]
./ld[0x804a5bb]
./ld[0x80500e6]
./ld[0x805e302]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb2dbd6]
./ld[0x8049c41]
======= Memory map: ========
001ce000-001e9000 r-xp 00000000 08:21 3629825    /lib/ld-2.11.1.so
001e9000-001ea000 r--p 0001a000 08:21 3629825    /lib/ld-2.11.1.so
001ea000-001eb000 rw-p 0001b000 08:21 3629825    /lib/ld-2.11.1.so
004c0000-004c1000 r-xp 00000000 00:00 0          [vdso]
00556000-00558000 r-xp 00000000 08:21 3654023    /lib/tls/i686/cmov/libdl-2.11.1.so
00558000-00559000 r--p 00001000 08:21 3654023    /lib/tls/i686/cmov/libdl-2.11.1.so
00559000-0055a000 rw-p 00002000 08:21 3654023    /lib/tls/i686/cmov/libdl-2.11.1.so
00b17000-00c6a000 r-xp 00000000 08:21 3654020    /lib/tls/i686/cmov/libc-2.11.1.so
00c6a000-00c6b000 ---p 00153000 08:21 3654020    /lib/tls/i686/cmov/libc-2.11.1.so
00c6b000-00c6d000 r--p 00153000 08:21 3654020    /lib/tls/i686/cmov/libc-2.11.1.so
00c6d000-00c6e000 rw-p 00155000 08:21 3654020    /lib/tls/i686/cmov/libc-2.11.1.so
00c6e000-00c71000 rw-p 00000000 00:00 0 
00d3f000-00d5c000 r-xp 00000000 08:21 3629139    /lib/libgcc_s.so.1
00d5c000-00d5d000 r--p 0001c000 08:21 3629139    /lib/libgcc_s.so.1
00d5d000-00d5e000 rw-p 0001d000 08:21 3629139    /lib/libgcc_s.so.1
08048000-0811f000 r-xp 00000000 08:21 5457170    /home/niranjan/test/binutils-2.21/installdir/bin/ld
0811f000-08120000 r--p 000d6000 08:21 5457170    /home/niranjan/test/binutils-2.21/installdir/bin/ld
08120000-08122000 rw-p 000d7000 08:21 5457170    /home/niranjan/test/binutils-2.21/installdir/bin/ld
08122000-08126000 rw-p 00000000 00:00 0 
087b9000-087da000 rw-p 00000000 00:00 0          [heap]
b77eb000-b77ed000 rw-p 00000000 00:00 0 
b77fb000-b77fe000 rw-p 00000000 00:00 0 
bfa5a000-bfa6f000 rw-p 00000000 00:00 0          [stack]
Aborted

Verifying the error in conversion
=================================
If the crash cannot be verified, the error in conversion can be verified as below.

For the command,
ld -T input_file a.out,

the expected output is

$ ld -T input_file a.out
./ld:/tmp/input_file:1: ignoring invalid character `\177' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\002' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\003' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\200' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\211' in expression 
./ld:/tmp/input_file:1: ignoring invalid character `\004' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\010' in expression
./ld:/tmp/input_file:1: syntax error

but actual output is,

$ ld -T input_file a.out
./ld:/tmp/input_file:1: ignoring invalid character `\177' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\002' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\003' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\001' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\000' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\37777777600' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\37777777611' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\004' in expression
./ld:/tmp/input_file:1: ignoring invalid character `\010' in expression
./ld:/tmp/input_file:1: syntax error

Here is the stack trace
=======================
#0  0x0012d422 in __kernel_vsyscall ()
#1  0x0015c651 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0x0015fa82 in *__GI_abort () at abort.c:92
#3  0x0019349d in __libc_message (do_abort=2, fmt=0x2660b5 "*** %s ***: %s terminated\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
#4  0x00214390 in *__GI___fortify_fail (msg=<value optimized out>) at fortify_fail.c:32
#5  0x002132ca in *__GI___chk_fail () at chk_fail.c:29
#6  0x00212a08 in _IO_str_chk_overflow (fp=0xbfffdee0, c=55) at vsprintf_chk.c:35
#7  0x0019bafe in _IO_default_xsputn (f=0xbfffdee0, data=0xbfffde05, n=11) at genops.c:485
#8  0x0016fa34 in _IO_vfprintf_internal (s=0xbfffdee0, format=0x80e366d "\\%03o", ap=0xbfffdfc0 "\200\377\377\377/ $") at vfprintf.c:1613
#9  0x00212abd in ___vsprintf_chk (s=0xbfffdfdb "\\377", flags=1, slen=5, format=0x80e366d "\\%03o", args=0xbfffdfc0 "\200\377\377\377/ $")
    at vsprintf_chk.c:86
#10 0x002129fd in ___sprintf_chk (s=0xbfffdfdb "\\377", flags=1, slen=5, format=0x80e366d "\\%03o") at sprintf_chk.c:33
#11 0x0804d601 in sprintf (where=0x80e369c " in expression", what=<value optimized out>) at /usr/include/bits/stdio2.h:34
#12 lex_warn_invalid (where=0x80e369c " in expression", what=<value optimized out>) at ldlex.l:689
#13 0x0804e3b2 in yylex () at ldlex.l:463
#14 0x0804a5bb in yyparse () at ldgram.c:2473
#15 0x080500e6 in parse_args (argc=4, argv=0xbffff0e4) at lexsup.c:1244
#16 0x0805e302 in main (argc=4, argv=0xbffff0e4) at ./ldmain.c:295 

Details of system on which bug was verified on:
===============================================
Linux kernel: 2.6.32-30-generic 
OS Distribution: Ubuntu-10.04 
Processor type: i686
gcc: version 4.4.3
Comment 1 Sourceware Commits 2011-03-29 02:52:39 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	amodra@sourceware.org	2011-03-29 02:52:36

Modified files:
	ld             : ChangeLog ldlex.l 

Log message:
	PR ld/12613
	* ldlex.l (lex_warn_invalid): Don't assume char is unsigned.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&r1=1.2302&r2=1.2303
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlex.l.diff?cvsroot=src&r1=1.51&r2=1.52
Comment 2 Alan Modra 2011-03-29 02:53:26 UTC
fixed.
Comment 3 Sourceware Commits 2011-05-29 04:52:59 UTC
CVSROOT:	/cvs/src
Module name:	src
Branch: 	binutils-2_21-branch
Changes by:	amodra@sourceware.org	2011-05-29 04:51:53

Modified files:
	bfd            : ChangeLog aoutx.h archive.c bfd-in2.h bfdio.c 
	                 coff-aux.c coffcode.h coffgen.c cofflink.c 
	                 config.in configure configure.in dwarf2.c 
	                 elf-bfd.h elf-m10300.c elf.c elf32-ppc.c 
	                 elf32-rx.c elf64-ppc.c elflink.c elfxx-ia64.c 
	                 libbfd.c linker.c peXXigen.c vms-alpha.c 
	bfd/hosts      : x86-64linux.h 
	binutils       : ChangeLog nm.c objcopy.c 
	binutils/doc   : binutils.texi 
	binutils/testsuite: ChangeLog 
	binutils/testsuite/binutils-all: nm.exp 
	binutils/testsuite/lib: utils-lib.exp 
	gas            : ChangeLog dwarf2dbg.c input-scrub.c messages.c 
	                 read.c 
	gas/config     : obj-elf.h tc-arc.c tc-d10v.h tc-d30v.h 
	                 tc-m32r.h 
	gas/testsuite  : ChangeLog 
	gas/testsuite/gas/i386: inval-equ-2.l 
	gas/testsuite/gas/symver: symver2.l 
	include        : ChangeLog ansidecl.h bfdlink.h 
	ld             : ChangeLog ldexp.c ldlang.c ldlex.l ldmain.c 
	                 plugin.c 
	ld/emultempl   : elf32.em pe.em pep.em 
	ld/scripttempl : pe.sc pep.sc 
	ld/testsuite   : ChangeLog 
	ld/testsuite/ld-cris: tls-e-tpoffcomm1.d 
	ld/testsuite/ld-plugin: plugin-7.d plugin-8.d 

Log message:
	PR 12365
	PR 12613
	PR 12632
	PR 12739
	PR 12753
	PR 12760
	PR 12763
	Apply fix from mainline along with assorted other small fixes.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.5180.2.34&r2=1.5180.2.35
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/aoutx.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.84.2.1&r2=1.84.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/archive.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.69.2.3&r2=1.69.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/bfd-in2.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.522.2.2&r2=1.522.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/bfdio.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.27&r2=1.27.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coff-aux.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.10.10.1&r2=1.10.10.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coffcode.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.171&r2=1.171.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/coffgen.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.78&r2=1.78.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/cofflink.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.74.2.1&r2=1.74.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/config.in.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.48&r2=1.48.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/configure.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.339.2.4&r2=1.339.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/configure.in.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.287.2.4&r2=1.287.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/dwarf2.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.138&r2=1.138.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf-bfd.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.313.2.2&r2=1.313.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf-m10300.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.106&r2=1.106.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.524.2.2&r2=1.524.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.290.2.3&r2=1.290.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-rx.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.5.2.1&r2=1.5.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf64-ppc.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.339.2.10&r2=1.339.2.11
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elflink.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.388.2.2&r2=1.388.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elfxx-ia64.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.228.2.1&r2=1.228.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/libbfd.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.53.2.1&r2=1.53.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/linker.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.77.2.2&r2=1.77.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/peXXigen.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.67&r2=1.67.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/vms-alpha.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.37.2.1&r2=1.37.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/hosts/x86-64linux.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.2&r2=1.2.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1708.2.9&r2=1.1708.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/nm.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.65&r2=1.65.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/objcopy.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.147.2.1&r2=1.147.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/doc/binutils.texi.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.173.2.1&r2=1.173.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.216.2.2&r2=1.216.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/testsuite/binutils-all/nm.exp.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.5&r2=1.5.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/testsuite/lib/utils-lib.exp.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.20.2.1&r2=1.20.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.4320.2.29&r2=1.4320.2.30
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/dwarf2dbg.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.107&r2=1.107.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/input-scrub.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.23&r2=1.23.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/messages.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.23&r2=1.23.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/read.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.167.2.2&r2=1.167.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/obj-elf.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.38&r2=1.38.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-arc.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.47&r2=1.47.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-d10v.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.20&r2=1.20.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-d30v.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.15&r2=1.15.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-m32r.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.23&r2=1.23.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1802.2.11&r2=1.1802.2.12
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/i386/inval-equ-2.l.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1&r2=1.1.12.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/symver/symver2.l.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1&r2=1.1.38.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.510.2.2&r2=1.510.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/ansidecl.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.28&r2=1.28.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/bfdlink.h.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.82.2.1&r2=1.82.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.2222.2.23&r2=1.2222.2.24
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldexp.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.87.2.2&r2=1.87.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlang.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.347.2.5&r2=1.347.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldlex.l.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.47.2.2&r2=1.47.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/ldmain.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.145.2.3&r2=1.145.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/plugin.c.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.7.2.5&r2=1.7.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/elf32.em.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.214.2.1&r2=1.214.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/pe.em.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.162.2.2&r2=1.162.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/emultempl/pep.em.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.38.2.1&r2=1.38.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/scripttempl/pe.sc.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.24&r2=1.24.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/scripttempl/pep.sc.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.13&r2=1.13.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1322.2.12&r2=1.1322.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-cris/tls-e-tpoffcomm1.d.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1&r2=1.1.6.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-plugin/plugin-7.d.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1.2.1&r2=1.1.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-plugin/plugin-8.d.diff?cvsroot=src&only_with_tag=binutils-2_21-branch&r1=1.1.2.1&r2=1.1.2.2
Comment 4 Jackie Rosen 2014-02-16 19:20:31 UTC Comment hidden (spam)