[parisc-linux] [PATCH] hppa-linux-gas binutils patch
Helge Deller
deller at gmx.de
Tue Nov 28 12:20:26 MST 2006
Hi Dave,
Hi Carlos,
Somehow I lost Carlos answer to my mail, so I'll wind his questions and my answers in here:
Carlos> Out of curiosity do you have a copyright assignment for binutils?
Carlos> If not, then that is OK, I can submit your patch upstream
Carlos> and check it in aswell.
I'm right now in the process to get this assignment done.
Since I think this will take some time, I'd prefer if you could submit
it upstream (if everyone agrees).
On Monday 27 November 2006 02:34, John David Anglin wrote:
> > The GAS manual says:
> > ---
> > .equ symbol, expression
> > This directive sets the value of symbol to expression. It is
> > synonymous with `.set'; see section .set symbol, expression.
> > The syntax for equ on the HPPA is `symbol .equ expression'.
> > ---
> >
> > This should be updated.
Sure.
I'll send an updated patch soon.
> > Have you considered the implications of your patch to porting HPUX assembly?
> > Does the HPUX assembler have an .equ directive? Dave can probably
> > answer that so I'll CC him.
> >
> > ---
> > label .reg expr
> > Synonym for .equ; define label with the absolute expression expr
> > as its value.
> > ---
> >
> This needs testing on hpux. I believe there may be problems.
> The current implementation reflects the syntax for .equ using HP as.
>
> The HP assembler only allows an integer expression which evalutes
> to an absolute value. The HP assembler prohibits the use of
> relocatable labels and imported symbols as a component of a
> .equ expression. This reflected the capabilites of HP ld at
> one time. This may not reflect current capabilites. There may
> be differences between the 32 and 64-bit linkers. I'm cautious
> here as I know .set which has no HP assembler equivalent works
> most of the time, but the capabilities of HP ld aren't well
> documented and there are subtle issues in assigning aliases.
> There are some uses of .set in the gas testsuite which run under
> hpux and they seem to work at basic level. However, the weak
> alias stuff isn't useful under hpux because of the way HP ld
> handles "weak" symbols.
>
> On the otherhand, more latitude on the expression is allowed when
> GNU ld is being used. .equ is effectively a synonym for .set.
> Because of this, I haven't been too concerned about the syntax
> for .equ. There are various other directives that also follow the
> HP syntax. In summary, these probably should be changed to follow
> the standard behavior under linux, etc; but I think the current
> behavior should be retained under hpux.
>
> Sorry, I haven't had a chance to look at the details of your change.
> I've been busy and a few GCC targets are broken...
The patch only affects the .equ directive. It does not change .set in any way.
It will only allow the case of:
.equ VAR,VALUE
which was printing an error message before.
So, it doesn't change any currently existing behavior.
Instead it's only adding a "new way" to use the .equ directive in a typical "gas" way.
As a background story:
Originally I wanted to add support for
VAR .equ VALUE
as it's e.g. documented here: http://docs.hp.com/en/92432-90012/ch02.html
(JAN .equ 1).
But this is in contrast to what gas (in as.info) states, since it does not end with a colon:
" For HPPA targets, labels need not be immediately followed by a
"colon, but the definition of a label must begin in column zero. This
"also implies that only one label may be defined on each line.
" label: .directive followed by something
...
Sadly I until now failed to get this working as well :-(
Helge
More information about the parisc-linux
mailing list