On Tue, Mar 24, 2020 at 10:18:20PM -0700, Fangrui Song wrote: > .globl sets the symbol binding to STB_GLOBAL while .weak sets the > binding to STB_WEAK. They should not be used together. It is accidetal > rather then intentional that GNU as let .weak override .globl while > clang integrated assembler let the last win.
Nothing is "overridden". The as manual says (.weak): This directive sets the weak attribute on the comma separated list of symbol 'names'. If the symbols do not already exist, they will be created. so this behaviour is obviously as intended (or was later documented in any case), so LLVM has a bug to fix (whether you like this (much saner) behaviour or not). Segher