This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Global symbol prefixes


On Thursday 28 March 2013 21:30:04 Jan Tlatlik wrote:
> On 03/28/2013 07:34 PM, Jan Tlatlik wrote:
> > On 03/28/2013 07:29 PM, Mike Frysinger wrote:
> >> On Thursday 28 March 2013 12:36:48 Jan Tlatlik wrote:
> >>> Hey there,
> >>> 
> >>> I need a few directions:
> >>> 
> >>> I'm porting GAS to my architecture and I'm stuck with global symbol
> >>> prefixes.
> >>> Since my register operands are not prefixed (e.g. r23 instead of 
> >>> %r23), I need to prefix global symbols to avoid name collisions.
> >>> How do I tell GAS to recognize this prefix?
> >>> 
> >>> If I try to assemble
> >>> 
> >>>     .global %main
> >>> 
> >>> %main:
> >>>     [...]
> >>> 
> >>> I am getting errors like
> >>> 
> >>>> example.s:1: Error: expected symbol name
> >>>> example.s:2: Error: junk at end of line, first unrecognized character
> >>> 
> >>> is `%'
> >>> 
> >>> The symbol names in the object file though must not have the prefix. It
> >>> is only needed at assembly time to solve the name collision problem.
> >>> 
> >>> I looked through a few existing ports, but none of them seem to do it
> >>> this way. Could anyone give me some advice how to do that?
> >> 
> >> [...]
> >> 
> >> alternatively, change the assembly syntax to disambiguate the register
> >> names (and use $r23 instead of r23).
> >> -mike
> > 
> > I suppose this would be way with the least effort to solve the problem.
> > 
> > Thanks.
> 
> Well, I supposed wrong. It is much easier to do it the way I wanted to
> do it initially.
> 
> FYI:
> 
> /* symbols may begin with an % to prevent name collisions with register
> operands*/
> #define LEX_PCT LEX_BEGIN_NAME
> /* % prefixes will be trimmed */
> #define tc_canonicalize_symbol_name(s) ( *(s) == '%' ? (s)+1 : (s))

% is already used in some syntaxes.  like:
	.type   main, %function
	main:
this is common because the only other symbol in these setups is @, but that's 
taken up as a comment char for some targets.

you should pick a different symbol from %
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]