Hi Nicolas,
the fix really belongs in specific platform makefiles because the labelling is exactly intended for profiling the stack VMs. Bugs in the clang compiler when using -Os (small size) cause it to duplicate the labels and consequently for the assembler stage to fail.
On Sun, Dec 27, 2020 at 3:25 AM Nicolas Cellier noreply@github.com wrote:
Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: 5094685a21c0c283228b5246855084e4e91c3e8f
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/5094685a21c0c283228... Author: Nicolas Cellier nicolas.cellier.aka.nice@gmail.com Date: 2020-12-27 (Sun, 27 Dec 2020)
Changed paths: M platforms/Mac OS/vm/sqPlatformSpecific.h M platforms/iOS/vm/OSX/sqPlatformSpecific.h M platforms/iOS/vm/iPhone/sqPlatformSpecific.h M platforms/minheadless/unix/sqPlatformSpecific-Unix.h M platforms/minheadless/windows/sqPlatformSpecific-Win32.h M platforms/unix/vm/sqPlatformSpecific.h M platforms/win32/vm/sqPlatformSpecific.h
Log Message:
Salvage the stack builds
For some reasons (?) the VM_LABEL macro is now barking like this:
../../spurstack64src/vm/gcc3x-interp.c:9419:5: error: invalid symbol
redefinition
VM_LABEL(extPushPseudoVariable); ^
In file included from ../../spurstack64src/vm/gcc3x-interp.c:29: In file included from ../../platforms/iOS/vm/Common/sqGnu.h:46: In file included from ../../platforms/Cross/vm/sq.h:252: ../../platforms/iOS/vm/OSX/sqPlatformSpecific.h:174:52: note: expanded
from macro 'VM_LABEL'
# define VM_LABEL(foo) asm("\n.globl _L" #foo "\n_L" #foo ":") ^ <inline asm>:3:1: note: instantiated into assembly here _LextPushPseudoVariable: ^
Since this does not happen in cog builds, avoid brainstorming and just use the same workaround.