Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Lawrence D'Oliveiro Newsgroups: comp.os.vms Subject: Re: Bliss Date: Sat, 20 Jul 2024 08:28:06 -0000 (UTC) Organization: A noiseless patient Spider Lines: 53 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Date: Sat, 20 Jul 2024 10:28:06 +0200 (CEST) Injection-Info: dont-email.me; posting-host="49c512e02f3e0737b4cb6e11ff77c5b6"; logging-data="3642684"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19rWAGYnWBwyTBwQTUvY0qB" User-Agent: Pan/0.158 (Avdiivka; ) Cancel-Lock: sha1:4kMqiYQX+qU6vn/UPB8qZ1kjVRU= Bytes: 2998 On Sat, 13 Jul 2024 03:53:48 -0000 (UTC), I wrote: > That “MAIN =” elicited no complaints, but neither did it seem to do > anything useful. The routine referenced by the “MAIN =” directive is checked for validity in lib/frontend/declarations.c: text = modsym_main(np); if (text != 0) { scopectx_t blkscope = expr_blk_scope(blkexp); name_t *mainrtn = 0; if (blkscope != 0) { mainrtn = rtnsym_search(blkscope, text); if (mainrtn != 0) { if (rtnsym_expr(mainrtn) == 0) { expr_signal(ctx, STC__MNTYPERR, text); } } } if (mainrtn == 0) { expr_signal(ctx, STC__NOMAIN, text); } string_free(expr_strctx(ctx), text); } but in lib/llvmgen/llvm_gencode.c, where it would be used to set the start address in the generated code, that part is disabled: #if 0 // XXX later headerlen = 0; str = modsym_ident(modnp); if (str != 0) { int reslen, len = str->len; reslen = snprintf(module_header+headerlen, sizeof(module_header)-headerlen, "\t.ident %-*.*s", len, len, str->ptr); if (reslen > 0) headerlen += reslen; } str = modsym_main(modnp); if (str != 0) { int reslen, len = str->len; if (headerlen > 0) module_header[headerlen++] = '\n'; reslen = snprintf(module_header+headerlen, sizeof(module_header)-headerlen, "\t.set start,_%-*.*s", len, len, str->ptr); if (reslen > 0) headerlen += reslen; } if (headerlen > 0) { module_header[headerlen] = '\0'; LLVMSetModuleInlineAsm(gctx->module, module_header); } #endif // XXX later I wonder if that code actually works?