This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/49833] [x32] PIC doesn't work
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 25 Jul 2011 20:13:33 +0000
- Subject: [Bug target/49833] [x32] PIC doesn't work
- Auto-submitted: auto-generated
- References: <bug-49833-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49833
--- Comment #19 from H.J. Lu <hjl.tools at gmail dot com> 2011-07-25 20:13:13 UTC ---
(In reply to comment #18)
> (In reply to comment #14)
> > Another problem:
> >
> > [hjl@gnu-6 gcc]$ cat /tmp/bar.c
> > typedef unsigned int Elf32_Addr;
> > extern void _start (void);
> > int
> > dl_main ( Elf32_Addr *user_entry)
> > {
> > if (*user_entry == (Elf32_Addr) _start)
> > return 0;
> > else
> > return 1;
> > }
> > [hjl@gnu-6 gcc]$ ./xgcc -B./ -S -O2 -fPIC /tmp/bar.c -mx32 -std=gnu99 -dp
> > /tmp/bar.c: In function âdl_mainâ:
> > /tmp/bar.c:10:1: error: unrecognizable insn:
> > (insn 6 5 7 3 (set (reg:SI 67)
> > (symbol_ref:SI ("_start") [flags 0x41] <function_decl 0x7faad972ff00
> > _start>)) /tmp/bar.c:6 -1
> > (nil))
> > /tmp/bar.c:10:1: internal compiler error: in extract_insn, at recog.c:2115
> > Please submit a full bug report,
> > with preprocessed source if appropriate.
> > See <http://gcc.gnu.org/bugs.html> for instructions.
> > [hjl@gnu-6 gcc]$
>
> On x32 branch, I got
>
> .file "bar.c"
> .text
> .p2align 4,,15
> .globl dl_main
> .type dl_main, @function
> dl_main:
> .LFB0:
> .cfi_startproc
> movl _start@GOTPCREL(%rip), %eax # 22 *movsi_internal/1 [length
> = 6]
> cmpl %eax, (%rdi) # 8 *cmpsi_1/1 [length = 2]
> setne %al # 23 *setcc_qi [length = 3]
> movzbl %al, %eax # 24 *zero_extendqisi2_movzbl [length = 3]
> ret # 27 return_internal [length = 1]
> .cfi_endproc
> .LFE0:
> .size dl_main, .-dl_main
> .ident "GCC: (GNU) 4.7.0 20110723 (experimental)"
> .section .note.GNU-stack,"",@progbits
I have a patch for this.