[PATCH] change the condition preventing symbol replacement in snapshot_symbol()
Nick Clifton
nickc@redhat.com
Mon Jul 27 16:49:00 GMT 2009
More information about the Binutils mailing list
Mon Jul 27 16:49:00 GMT 2009
- Previous message (by thread): [PATCH] change the condition preventing symbol replacement in snapshot_symbol()
- Next message (by thread): [PATCH] change the condition preventing symbol replacement in snapshot_symbol()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Jan,
> The question is whether an equate counts as a local symbol.
> I'd really hope that Alan and or Nick could jump in here clarifying expected
> behavior.
I didn't reply because I do not know the answer.
The documentation already states that equating one symbol with another
is the same as using the .set directive. The .set directive says that
the new symbol inherits the value and type of the original symbol. Thus
one would expect that in:
.global foo
bar = foo
That bar behaves like a global symbol, not a local one.
We can change the documentation of course, and as H.J. has already
pointed out, if foo is defined then the current behaviour is to treat
bar as a local symbol.
To me though this seems wrong. As a programmer I would expect that
equated symbols are the same. Ie that they can be treated as aliases of
each other. I do not see the benefit of changing the nature of equated
symbol.
I extended H.J.'s demonstration slightly:
bar = foo
baz = globule
.globl foo
.globl globule
foo:
jmp bar
jmp foo
jmp baz
jmp globule
Which when assembled and dumped with objdump -dr gives:
00000000 <foo>:
0: eb fe jmp 0 <foo>
2: e9 fc ff ff ff jmp 3 <foo+0x3>
3: R_386_PC32 foo
7: e9 fc ff ff ff jmp 8 <foo+0x8>
8: R_386_PC32 globule
c: e9 fc ff ff ff jmp d <foo+0xd>
d: R_386_PC32 globule
The first jmp just seems plain wrong to me. I would expect it to have a
relocation against the foo symbol just like all of the others.
So, in my opinion: "no, equating a symbol does not make it local".
Cheers
Nick
- Previous message (by thread): [PATCH] change the condition preventing symbol replacement in snapshot_symbol()
- Next message (by thread): [PATCH] change the condition preventing symbol replacement in snapshot_symbol()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list