home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.os.vms      DEC's VAX* line of computers & VMS.      264,096 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 263,284 of 264,096   
   Waldek Hebisch to Dan Cross   
   Re: Binutils   
   08 Sep 25 11:30:50   
   
   From: antispam@fricas.org   
      
   Dan Cross  wrote:   
   > In article <109g1s1$3jb20$1@paganini.bofh.team>,   
   > Waldek Hebisch  wrote:   
   >>Lawrence Dâ??Oliveiro  wrote:   
   >>> On Fri, 5 Sep 2025 21:32:01 -0000 (UTC), Waldek Hebisch wrote:   
   >>>   
   >>>> All indicates that GNU assembler can not handle simple symbol   
   >>>> equality as intended.   
   >>>   
   >>> I tried creating a source file test.s containing just your two problem   
   >>> lines:   
   >>>   
   >>>     .globl _ZN10__cxxabiv117__array_type_infoD1Ev   
   >>>     _ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv1   
   7__array_type_infoD2E   
   >>>   
   >>> and when I try to assemble it,   
   >>>   
   >>>     gcc -c test.s   
   >>>   
   >>> there is no error, and test.o is created OK. Trying objdump on it   
   >>>   
   >>>     objdump -t test.o   
   >>>   
   >>> shows it has the correct symbol reference in it, albeit undefined:   
   >>>   
   >>>     test.o:     file format elf64-x86-64   
   >>>   
   >>>     SYMBOL TABLE:   
   >>>     0000000000000000         *UND*  0000000000000000 _ZN10__   
   xxabiv117__array_type_infoD2E   
   >>>   
   >>> So no, the issue is not with those two particular lines on their own.   
   >>> Something else is involved.   
   >>   
   >>Yes.  AFAICS main issue is creating alias name for an exported   
   >>function.  Internal aliases work fine.  Probably data aliases too.   
   >   
   > I caution against putting it in those terms.  What you are doing   
   > in GNU `as` when you use the `a = e` syntax is creating a symbol   
   > called "a" from that is set to the evalue of some expression.   
   > In this contrived example, that expression is just "e", which I   
   > used as a stand-in for any arbitrary expression, but if taken   
   > literally, would just be valuated to the value of some other   
   > symbol, called "e".  If "e" was not defined already, it is   
   > assumed to be an external.   
   >   
   > When you assemble troll's file, an object file is generated; the   
   > results from `objdump` above show that there is a single symbol   
   > in that object file's symbol table, one you referred to when   
   > creating '_ZN10__cxxabiv117__array_type_infoD2E'.  But note that   
   > '_ZN10__cxxabiv117__array_type_infoD2E' itself (the symbol that   
   > you created when you assigned to it) is not in the symbol table.   
   >   
   > However, the symbol that you created is not in the symbol table,   
   > which is the fundamental problem.   
      
   Well, one issue is if needed construct is supported at all.   
      
   Other platforms have code like:   
      
           .text   
           .globl  exp_fun   
           .type   exp_fun, @function   
   exp_fun:   
           ret   
   .LFE0:   
           .size   exp_fun, .-exp_fun   
           .globl alias_fun   
           .set alias_fun,exp_fun   
      
   Assembling this on x86 Linux gives object file exporting two symbols:   
   exp_fun and alias_fun.  IIUC this behaviour is wanted by C++   
   compiler.   
      
   Alpha VMS needs more complicated function definition.  And more   
   important: '.set alias_fun,exp_fun' causes assembler message   
   about wrong syntax.   
      
   In DEC assembler '=' apparently gives effect that you describe:   
   new name is not exported.  In DEC assembler '==' apparently creates   
   an alias, but as a data symbol.  I am not aware of DEC construct   
   to get effect of '.set' as in x86 Linux example above (but up   
   to now I did not look into macro manual).  So '=' probably is   
   wrong syntatx, I do not know why gcc uses it.   
      
   --   
                                 Waldek Hebisch   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca