redstar wrote:

> Does this make sense or am I missing something here?

I think that splitting the SD/ED/LD into 3 "section"s implies that a 
MCSectionGOFF has a fundamentally different semantic than the other 
MCSectionXXX. This is something I would like to avoid. On the other hand, the 
SD/ED pair is almost the same as an ELF section, so just putting those 2 into a 
MCSectionGOFF instance and handling the LD/PR symbol differently makes sense. 
In HLASM, a section definition looks like
```
HLASMHEL CSECT                        * The SD symbol
HLASMHEL AMODE 64
HLASMHEL RMODE ANY
C_CODE64 CATTR EXECUTABLE,RENT        * The ED symbol; the LD symbol is 
automatically generated.
         ENTRY MAIN
MAIN     AMODE 64
MAIN     XATTR LINKAGE(XPLINK),SCOPE(LIBRARY),REFERENCE(CODE)
MAIN     DS    0FD                    * A "normal" label, with attributes. 
Results in another LD symbol
```

When I switch sections, and later want to continue the code section, then I 
need to repeat both statements in a short form:

```
HLASMHEL CSECT ,
C_CODE64 CATTR ,
```

I thought about this when moving the definitions from the SymbolMapper to the 
MCObjectFileInfo class, but I got no good idea how to handle the LD or PR 
symbol. A possible way could be to attach the LD or PR symbol as the begin 
symbol of a section. I need to try this.

One possible downside is that it makes handling of relocations much more 
complicated. For the base of a relocation, I need the PR symbol (when I have 
the SD/ED/PR case) or the LD and ED (in the SD/ED/LD case). Currently, this 
information is available in the MCSectionGOFF, without the need to chase a list 
to the correct element.

https://github.com/llvm/llvm-project/pull/133799
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to