Bug 12809 - R_X86_64_TPOFF64 isn't handled properly
Summary: R_X86_64_TPOFF64 isn't handled properly
Status: RESOLVED FIXED
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: 2.22
: P2 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-26 04:26 UTC by H.J. Lu
Modified: 2011-05-26 13:23 UTC (History)
0 users

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2011-05-26 04:26:13 UTC
[hjl@gnu-6 tmp]$ cat foo.c
extern void abort (void);

__thread char thra[2];

void
__attribute__((noinline))
f1 (void)
{
  int i;
  for (i = 0; i < 2; i++)
    thra[i]= i;
}

int
main (void)
{
  f1 ();
  if (thra[0] != 0)
    abort ();
  return 0;
}
[hjl@gnu-6 tmp]$ gcc -mcmodel=large -g foo.c -O  
[hjl@gnu-6 tmp]$ ./a.out 
Segmentation fault
[hjl@gnu-6 tmp]$
Comment 1 Sourceware Commits 2011-05-26 13:22:08 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	hjl@sourceware.org	2011-05-26 13:22:05

Modified files:
	bfd            : ChangeLog elf64-x86-64.c 
	ld/testsuite   : ChangeLog 
	ld/testsuite/ld-x86-64: tlsbin.dd tlsbin.rd tlsbin.s tlsbin.sd 
	                        tlsbin.td tlsbindesc.dd tlsbindesc.rd 
	                        tlsbindesc.sd tlsbindesc.td 

Log message:
	Handle R_X86_64_TPOFF64 in executable.
	
	bfd/
	
	2011-05-26  H.J. Lu  <hongjiu.lu@intel.com>
	
	PR ld/12809
	* elf64-x86-64.c (elf_x86_64_relocate_section): Handle
	R_X86_64_TPOFF64 in executable.
	
	ld/testsuite/
	
	2011-05-26  H.J. Lu  <hongjiu.lu@intel.com>
	
	PR ld/12809
	* ld-x86-64/tlsbin.s: Add a test for LE with large model.
	
	* ld-x86-64/tlsbin.dd: Updated.
	* ld-x86-64/tlsbin.rd: Likewise.
	* ld-x86-64/tlsbin.sd: Likewise.
	* ld-x86-64/tlsbin.td: Likewise.
	* ld-x86-64/tlsbindesc.dd: Likewise.
	* ld-x86-64/tlsbindesc.rd: Likewise.
	* ld-x86-64/tlsbindesc.sd: Likewise.
	* ld-x86-64/tlsbindesc.td: Likewise.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&r1=1.5359&r2=1.5360
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf64-x86-64.c.diff?cvsroot=src&r1=1.225&r2=1.226
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ChangeLog.diff?cvsroot=src&r1=1.1414&r2=1.1415
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbin.dd.diff?cvsroot=src&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbin.rd.diff?cvsroot=src&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbin.s.diff?cvsroot=src&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbin.sd.diff?cvsroot=src&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbin.td.diff?cvsroot=src&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbindesc.dd.diff?cvsroot=src&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbindesc.rd.diff?cvsroot=src&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbindesc.sd.diff?cvsroot=src&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/src/ld/testsuite/ld-x86-64/tlsbindesc.td.diff?cvsroot=src&r1=1.2&r2=1.3
Comment 2 H.J. Lu 2011-05-26 13:23:31 UTC
Fixed.