This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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: correct place for code.



On 15 Jan 2009, at 01:44, Ian Lance Taylor wrote:
I need to make a test expanded from ASM_OUTPUT_LABEL_REF that is
language dependent (on objc/objcxx).

It's pretty hard to think of any reason why something as low-level as
ASM_OUTPUT_LABEL_REF would want to look at anything in the frontend.
You are probably working at the wrong level.

I'm entirely prepared to believe that...


The problem is this (on darwin):
(currently) ASM_OUTPUT_LABELREF modifies the generated label in certain cases (where the symbols are internal to OBJC)
When these symbols are mangled in obj-c++ it makes it a much more difficult to detect them reliably.
"knowing" that the symbols have been mangled improves that.


Without the change to the label name we get wrong generated code which causes a ld fail (responsible for a fair number of the 'new rash' of obj-c++ testsuite fails on darwin9)

So options:

1/ Do something target-specific in the generation of the labels and their subsequent mangling...
maybe this is the Right Way ...
However, I don't know my way around well enough to know how hard that would be - and it does seem quite intrusive.


2/ assume that no sensible user will make an intention external symbol named ZLnnnn_OBJC_xxxxxx
perhaps that's not too unreasonable... OBJC_xxxxx are effectively reserved identifiers - so perhaps mangled file scope variants of those could be too.


3/ tell the backend that the names have been mangled
the idea here was to generalize the c_language enum to a "gcc_language" enum and export it from each gcc language.


4/ some other way ...  any input is most appreciated,
Iain


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