[OpenSmalltalk/opensmalltalk-vm] 509468: Salvage the stack builds

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[OpenSmalltalk/opensmalltalk-vm] 509468: Salvage the stack builds

Eliot Miranda-3
 
  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 5094685a21c0c283228b5246855084e4e91c3e8f
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/5094685a21c0c283228b5246855084e4e91c3e8f
  Author: Nicolas Cellier <[hidden email]>
  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.


Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] 509468: Salvage the stack builds

Eliot Miranda-2
 
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 <[hidden email]> wrote:
 
  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 5094685a21c0c283228b5246855084e4e91c3e8f
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/5094685a21c0c283228b5246855084e4e91c3e8f
  Author: Nicolas Cellier <[hidden email]>
  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.




--
_,,,^..^,,,_
best, Eliot