public inbox for gas2@sourceware.org
 help / color / mirror / Atom feed
From: hjl@lucon.org (H.J. Lu)
To: robertl@dgii.com (Robert Lipe)
Cc: gas2@cygnus.com
Subject: Re: pushl computed immediate address on 2.8.1
Date: Fri, 09 Jan 1998 20:42:00 -0000	[thread overview]
Message-ID: <m0xqskW-0004ecC@ocean.lucon.org> (raw)
In-Reply-To: <19980102144041.15293@dgii.com>

> 
> 
> I was thinking this was a bug in the SCO x86 assembler becuase it worked
> under GAS for Linux.   However, after some prodding form the egcs folks 
> that really know PIC, I'm wondering if this is actually a construct that 
> GAS should produce an error for becuase GCC shouldn't emit it.
> 
> The problem is that 
> 
> 	pushl $.LC0@GOTOFF(%ebx)
> 
> seems to assemble just like
> 
> 	pushl $LC0
> 
> so it ends up generating an push of an absolute address once the 
> linker gets done with it.
> 
> Does this sound right at all?    Should GAS error on this?
> 
> 
> Here's a short "hello, world" in PIC to exercise the issue.
> 
> 
> Thanx,
> 
> RJL
> 
> 	.file	"test.c"
> 	.section	.rodata
> .LC0:
> 	.string	"Hello, World\n"
> 
> 	.text
> 	.align 4
> 	.globl main
> 	.type	 main,@function
> main:
> 	pushl %ebp
> 	movl %esp,%ebp
> 	pushl %ebx
> 	call .L2
> .L2:
> 	popl %ebx
> 	addl $_GLOBAL_OFFSET_TABLE_+[.-.L2],%ebx
> 
> // This is the aproach that works, and is what GCC should emit.
> // registers
> 	leal .LC0@GOTOFF(%ebx),%eax
> 	pushl %eax
> 	call printf@PLT
> 
> // This what GCC does emit, but seems to be nonsensical.
> // assembler.
> 	pushl $.LC0@GOTOFF(%ebx)
> 	call printf@PLT
> 

Which gcc are you using? How did you get gcc to emit that?
I only can get my gcc to generate

leal .LC0@GOTOFF(%ebx),%eax
pushl %eax
call printf@PLT

I tried egcs 971215, egcs 1.0.1 and gcc 2.8.0 971225. They
are all the same.

H.J.

  parent reply	other threads:[~1998-01-09 20:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-01-02 12:41 Robert Lipe
1998-01-02 13:06 ` Ian Lance Taylor
1998-01-02 13:26   ` Robert Lipe
1998-01-09 20:42 ` H.J. Lu [this message]
1998-01-09 23:02   ` Robert Lipe
1998-01-10 14:25     ` H.J. Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m0xqskW-0004ecC@ocean.lucon.org \
    --to=hjl@lucon.org \
    --cc=gas2@cygnus.com \
    --cc=robertl@dgii.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).