https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116378

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-08-15
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Iain Sandoe <iains at gcc dot gnu.org> ---
reproduced on multiple Darwin versions, so confirming.


(guess) Looks to me as if there might be UB somewhere - perhaps a function that
should have a return statement is missing it? (see the asm below)

example:

m2/boot-bin/mc --olang=c++ --h-file-prefix=G
-I/src-local/gcc-master/gcc/m2/gm2-libs
-I/src-local/gcc-master/gcc/m2/gm2-compiler
-I/src-local/gcc-master/gcc/m2/gm2-libiberty
-I/src-local/gcc-master/gcc/m2/gm2-gcc --quiet  --gcc-config-system
-o=m2/gm2-libs-boot/GASCII.h /src-local/gcc-master/gcc/m2/gm2-libs/ASCII.def -v
Illegal instruction: 4

====

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION
(code=EXC_I386_INVOP, subcode=0x0)
    frame #0: 0x000000010008a279 mc`libc_open + 10
mc`libc_open:
->  0x10008a279 <+10>: ud2    

mc`dtoa_dtoa.cold:
    0x10008a27b <+0>:  leaq   0x526a(%rip), %rdx        ; "dtoa_dtoa"
    0x10008a282 <+7>:  movl   $0xa4, %esi
    0x10008a287 <+12>: leaq   0x526a(%rip), %rdi        ;
"/src-local/gcc-master/gcc/m2/mc-boot-ch/Gdtoa.cc"
Target 0: (mc) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION
(code=EXC_I386_INVOP, subcode=0x0)
  * frame #0: 0x000000010008a279 mc`libc_open + 10
    frame #1: 0x0000000100003764 mc`ConnectToUnix(unsigned int, bool, bool)
(.part.0) + 100
    frame #2: 0x0000000100003a8b mc`FIO_openToRead + 91
    frame #3: 0x0000000100004809 mc`FIO_exists + 9
    frame #4: 0x00000001000405a3 mc`mcSearch_findSourceFile + 403
    frame #5: 0x00000001000362d1 mc`openDef(void*, bool) + 65
    frame #6: 0x00000001000364cf mc`pass(unsigned int, void*,
mcComp_parserFunction_p, decl_isNodeF_p, mcComp_openFunction_p) (.isra.0) + 63
    frame #7: 0x000000010003653a mc`p1(void*) + 42
    frame #8: 0x000000010001093c mc`Indexing_ForeachIndiceInIndexDo + 60
    frame #9: 0x0000000100036463 mc`doPass(bool, bool, unsigned int,
symbolKey_performOperation_p, char const*, unsigned int) (.constprop.0) + 275
    frame #10: 0x0000000100036919 mc`mcComp_compile + 297
    frame #11: 0x000000010008a866 mc`main + 758
    frame #12: 0x00007fff6f105cc9 libdyld.dylib`start + 1
    frame #13: 0x00007fff6f105cc9 libdyld.dylib`start + 1

==== 

Looks like that's hit an unreachable (which has been made into a trap).

dis -n libc_open
mc`libc_open:
    0x10008a26f <+0>:  leaq   0x8(%rsp), %rax
    0x10008a274 <+5>:  movq   %rax, -0x10(%rsp)
->  0x10008a279 <+10>: ud2

Reply via email to